IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128263
(43)【公開日】2023-09-14
(54)【発明の名称】情報処理装置及び情報処理方法
(51)【国際特許分類】
   G06N 3/02 20060101AFI20230907BHJP
   G06F 17/16 20060101ALI20230907BHJP
【FI】
G06N3/02
G06F17/16 P
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022032498
(22)【出願日】2022-03-03
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】甲地 弘幸
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB38
(57)【要約】
【課題】ニューラルネットワークを用いた処理の分割化に適した技術を提供する。
【解決手段】情報処理装置は、フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する処理部、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する処理部、
を備える、
情報処理装置。
【請求項2】
前記分割圧縮データは、フィルタごとの前記係数マトリクス内の非ゼロ係数をそのままのビットで記述する非ゼロ係数データ、前記フィルタごとの前記係数マトリクス内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する疎マトリクス、及び、前記非ゼロ係数データの位置を特定するアドレスを含む、
請求項1に記載の情報処理装置。
【請求項3】
前記分割範囲は、前記疎マトリクスにおけるフィルタごとのデータサイズが、前記分割圧縮データを復元して利用する装置の内部バッファサイズに応じたデータサイズ以下になるように定められる、
請求項2に記載の情報処理装置。
【請求項4】
前記他方向は、奥行き方向、高さ方向、及び、幅方向の少なくとも1つを含む、
請求項1に記載の情報処理装置。
【請求項5】
前記係数マトリクスは、前記ニューラルネットワークの畳み込み層の係数マトリクスを含み、
前記畳み込み層は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層の少なくとも1つを含む、
請求項1に記載の情報処理装置。
【請求項6】
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することによって生成された分割圧縮データを復元する処理部、
を備える、
情報処理装置。
【請求項7】
前記分割圧縮データは、フィルタごとの前記係数マトリクス内の非ゼロ係数をそのままのビットで記述する非ゼロ係数データ、前記フィルタごとの前記係数マトリクス内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する疎マトリクス、及び、前記非ゼロ係数データの位置を特定するアドレスを含み、
前記処理部は、前記疎マトリクスにおけるフィルタごとのデータを複数のデコーダに排他的に割り当て、
前記デコーダは、割り当てられた前記データ内に記述される非ゼロ係数をデコードし、
前記処理部は、前記複数のデコーダのうち、対応する前記データ内に記述されるすべての非ゼロ係数をデコードしたデコーダに、前記分割圧縮データ内のフィルタごとの前記データのうち、未割り当てのデータを割り当てる、
請求項6に記載の情報処理装置。
【請求項8】
前記分割範囲は、前記フィルタごとの前記疎マトリクスのデータサイズが、前記情報処理装置の内部バッファサイズに応じたデータサイズ以下になるように定められる、
請求項7に記載の情報処理装置。
【請求項9】
前記他方向は、奥行き方向、高さ方向、及び、幅方向の少なくとも1つを含む、
請求項6に記載の情報処理装置。
【請求項10】
前記係数マトリクスは、前記ニューラルネットワークの畳み込み層の係数マトリクスを含み、
前記畳み込み層は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層の少なくとも1つを含む、
請求項6に記載の情報処理装置。
【請求項11】
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
ニューラルネットワークの係数マトリクスの圧縮に関するさまざまな技術が提案されている(例えば特許文献1を参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-82289号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えばバッファサイズの小さい装置等では、ニューラルネットワークを用いた処理の分割化が考えられる。処理の分割化に適した技術を検討する余地がある。
【0005】
本開示の一側面は、ニューラルネットワークを用いた処理の分割化に適した技術を提供する。
【課題を解決するための手段】
【0006】
本開示の一側面に係る情報処理装置は、フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する処理部、を備える。
【0007】
本開示の一側面に係る情報処理装置は、フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することによって生成された分割圧縮データを復元する処理部、を備える。
【0008】
本開示の一側面に係る情報処理方法は、フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する。
【図面の簡単な説明】
【0009】
図1】実施形態に係る情報処理装置1及び情報処理装置2の概略構成の例を示す図である。
図2】係数マトリクスkmの例を示す図である。
図3】圧縮の例を示す図である。
図4】分割圧縮の例を示す図である。
図5】分割範囲の形状の例を示す図である。
図6】分割範囲の形状の例を示す図である。
図7】分割圧縮データdcの例を示す図である。
図8】疎マトリクスの例を示す図である。
図9】係数マトリクスkm及び分割圧縮データdcの具体例を示す図である。
図10】分割範囲の具体例を示す図である。
図11】分割圧縮データdcにおける分割範囲Δ1に対応する部分を示す図である。
図12】分割圧縮データdcにおける分割範囲Δ2に対応する部分を示す図である。
図13】分割圧縮データdcにおける分割範囲Δ3に対応する部分を示す図である。
図14】分割範囲の別の具体例を示す図である。
図15】分割圧縮データdcにおける分割範囲Δ11~分割範囲Δ14に対応する部分を示す図である。
図16】分割圧縮データdcにおける分割範囲Δ11~分割範囲Δ14に対応する部分を示す図である。
図17】分割圧縮データdcにおける分割範囲Δ11~分割範囲Δ14に対応する部分を示す図である。
図18】分割圧縮データdcにおける分割範囲Δ11~分割範囲Δ14に対応する部分を示す図である。
図19】分割範囲の別の具体例を示す図である。
図20】分割圧縮データdcにおける分割範囲Δ21に対応する部分を示す図である。
図21】処理部21による処理を模式的に示す図である。
図22】処理部21による処理を模式的に示す図である。
図23】情報処理装置1及び情報処理装置2によって実行される処理(情報処理方法)の例を示すフローチャートである。
図24】装置のハードウェア構成の例を示すブロック図である。
【発明を実施するための形態】
【0010】
以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の要素には同一の符号を付することにより重複する説明を省略する。
【0011】
以下に示す項目順序に従って本開示を説明する。
0.序
1.実施形態
2.変形例
3.ハードウェア構成の例
4.効果の例
【0012】
0.序
DNN(Deep Neural Network)等のニューラルネットワークは、近年のAI技術の発展を先導する技術となっている。ニューラルネットワークは,その応用範囲の広さ,性能の高さ,end-to-endでデータから学習までができてしまうことなどが主な強みである。一方で、計算量や必要なメモリ量の多さが課題となっている。ニューラルネットワークの計算量やメモリ量を削減するための研究が数多くなされている。例えば、ニューラルネットワークの冗長性を取り除くPruningという手法が知られている。
【0013】
Pruningは、ニューラルネットワーク(のモデル)内の冗長な接続関係を取り除く手法であり、多くの係数を0に落とし込むことによって実現される。ニューラルネットワークを構成する多くの層、例えば畳み込み層(Convolutional Layer)、全結合層(Fully Connected Layer)等は、積和演算によって処理が行われる。積和演算において、0との積和は演算をスキップした場合と結果が変わらない。Pruningよって重みに0が多く含まれるモデルは、演算をスキップすることで演算量を低減することが可能である。0が多いことを利用して、非ゼロ係数及びその位置を示す表現の組み合わせで重みを圧縮し、メモリ使用量を削減することが可能である。
【0014】
ニューラルネットワークは、データの再利用性の活用や,命令の並列度を抽出することで処理を加速させやすいことから、CPU(Central Processing Unit)ではなく、GPU(Graphics Processing Unit)やアクセラレータのような専用のハードウェアによって処理されることがある。通常、アクセラレータ等は、内部バッファ(バッファメモリ)を有し、内部バッファに読み込んだデータに対してニューラルネットワークを用いた処理を実行する。内部バッファとモデルの重みや入出力のサイズとの兼ね合いで、処理の分割が必要な場合がある。例えば、IoT(Internet of Things)向けのように、マイコンレベルにリソースが制限された環境では、内部バッファのサイズがかなり小さくなり、ほぼ確実に処理の分割が発生する。分割処理に関して、例えば次に説明するような課題が存在する。
【0015】
1つ目の課題は、Pruningされたニューラルネットワークの係数を分割処理できるように圧縮しなければならないことである。これは、圧縮前の係数の密度(全係数に占める非ゼロ係数の割合)が、処理する重みの位置によってばらつくため、前に利用した係数を再度読み込もうとしても、再度前から非ゼロ係数の数をカウントする等しない限り、非ゼロ係数が内部バッファ上のどこに配置されているかを見失ってしまうからである。
【0016】
2つ目の課題は、ニューラルネットワークの構成要素や係数の形状のさまざまなバリエーションを効率よく表現する必要があることである。ニューラルネットワークの構成要素は多岐にわたっており、一口に畳み込み層といっても、1次元(1D)畳み込み層や2次元(2D)畳み込み層、depthwise畳み込み層、pointwise畳み込み層等の様々なデータパスが考えられる。同じ種類の畳み込み層でも、係数の形状が層によって異なり得る。
【0017】
3つ目の課題は、圧縮されたデータを復元すること自体である。非ゼロ係数とゼロ係数を効率的に区別して非ゼロ係数を復元し、演算器に送ることが望ましい。
【0018】
上述の課題の少なくとも一部が、開示される技術によって対処され得る。例えば、1つ目の課題に関して、内部バッファサイズに応じた分割範囲で、データが分割され圧縮される。2つ目の課題に関して、分割範囲がある程度の自由度を有するように設計される。3つ目の課題に関して、複合に用いられるデコーダにおいて、1サイクルに1つ以上の非ゼロ係数が見つけ出され、処理される。
【0019】
1.実施形態
図1は、実施形態に係る情報処理装置1及び情報処理装置2の概略構成の例を示す図である。情報処理装置1は、係数マトリクスkmを圧縮し、分割圧縮データdcを生成する。情報処理装置2は、分割圧縮データdcを復元して用いる。圧縮の例は、エンコード等である。復元の例は、デコード等である。矛盾の無い範囲において、圧縮及び復元とエンコード及びデコードとは適宜読み替えられてよい。係数マトリクスkmについて、図2を参照して説明する。
【0020】
図2は、係数マトリクスkmの例を示す図である。係数マトリクスkmは、ニューラルネットワークの係数を記述する多次元のマトリクスである。ニューラルネットワークの例は、DNN等である。係数は、ニューラルネットワークの層の係数、例えば畳み込み層の係数を含んでよい。畳み込み層の例は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層等である。
【0021】
係数マトリクスkmは、フィルタ方向の次元を有する。フィルタ方向は、output channel方向等とも称される。output channelの数だけフィルタが存在する。output channelは例えば色の種類に相当する。異なるフィルタについての畳み込み処理は、処理結果が互いに影響しないので独立に考える(扱う)ことができる。
【0022】
係数マトリクスkmは、フィルタ方向以外の他方向の次元も有する。他方向の例は、奥行き方向、高さ方向及び幅方向である。これらの方向は、input channel方向、height方向及びwidth方向等とも称される。
【0023】
係数マトリクスkmは、ゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスであってよい。そのような調整には、例えば上述のPruningの技術が用いられる。ゼロ係数を多く含むことで、係数マトリクスkmを効率良く圧縮できる。図3を参照して説明する。
【0024】
図3は、圧縮の例を示す図である。マトリクスにおける16個の係数部分が模式的に示される。この例では、各係数は8ビットで記述されるものとする。16個の係数部分のデータ量は128(=16×8)ビットである。
【0025】
圧縮後のデータを、圧縮データと称する。圧縮データは、非ゼロ係数データと、疎マトリクス(sparse matrix)とを含む。非ゼロ係数データは、圧縮前のマトリクス内の非ゼロ係数をそのままのビットで記述する。疎マトリクスは、圧縮前のマトリクス内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する。疎マトリクスから順番に(この例ではラスタスキャン順に)値を読み出したときに、値が1の位置に対応する係数の値が、非ゼロ係数データに順に格納されている。
【0026】
この例では、非ゼロ係数データが5個の係数を含み、非ゼロ係数データのデータ量は40(=5×8=40)ビットである。疎マトリクス中の各値は1ビットで記述されるので、疎マトリクスのデータ量は16(=16×1)ビットである。圧縮により、データ量が56(=40+16)ビットまで低減される。
【0027】
図1に戻り、情報処理装置1についてさらに説明する。情報処理装置1は、処理部11と、記憶部12とを含む。処理部11は、1つ以上のプロセッサ(例えばCPU等)を含んで構成される。記憶部12は、処理部11による処理に必要な情報を記憶する。記憶部12に記憶される情報として、プログラム121が例示される。プログラム121は、コンピュータを情報処理装置1として機能させるための情報処理プログラム(ソフトウェア)である。
【0028】
処理部11は、係数マトリクスkmを分割圧縮することにより、分割圧縮データdcを生成する。圧縮は、上述の圧縮原理をベースとして行われる。
【0029】
図4は、分割圧縮の例を示す図である。分割範囲の一例がハッチングで図示される。分割範囲は、一度に圧縮される係数の範囲を規定する。すなわち、分割範囲内の係数がひとまとめにして圧縮(一度に圧縮)される。
【0030】
異なるフィルタに対応する分割範囲の処理は、処理結果が互いに影響しないので、独立に扱うことができる。分割範囲は、フィルタ方向には自由度を有さない一方で、他方向には自由度を有するように任意に定められる。フィルタ方向における分割範囲は、圧縮表現に固有のフィルタ数に応じて決められる。他方向における分割範囲は、例えばフィルタの形状の影響を吸収するように任意に設定される。
【0031】
分割範囲を規定するフィルタ方向のフィルタ数(データ数)を、フィルタ数Pと称し図示する。フィルタ数Pは、同時に圧縮可能なフィルタ数であり、例えば情報処理装置2のハードウェア構成に応じて決められる。図4に示される例では、フィルタ数Pは2である。
【0032】
分割範囲を規定する奥行き方向のデータ数を、データ数Vcと称し図示する。分割範囲を規定する高さ方向のデータ数を、データ数Vと称し図示する。分割範囲を規定する幅方向のデータ数を、データ数Vと称し図示する。これらのデータ数Vc、データ数V及びデータ数Vで規定される範囲のデータサイズの上限を、データサイズVと称する。データサイズVは、分割範囲におけるフィルタごとのデータサイズである。データ数Vc、データ数V及びデータ数Vを乗じたデータ数のデータサイズは、データサイズV以下に制限される。データサイズVは、分割圧縮データdcを復元して利用する情報処理装置2の内部バッファサイズに応じたデータサイズである。換言すれば、フィルタごとの分割範囲のデータサイズが、情報処理装置2の内部バッファサイズに応じたデータサイズ以下になるように、分割範囲が定められる。このような条件を満たす限りにおいて、データ数V、データ数V及びデータ数Vを任意に設定することができる。分割範囲の形状のうち、奥行き方向、高さ方向及び幅方向の3次元で規定される形状を、フレキシブルに変更することができる。図5及び図6も参照して説明する。
【0033】
図5及び図6は、分割範囲の形状の例を示す図である。図5に例示される分割範囲は、図4の分割範囲と比較して、高さ方向のデータ数Vが少なく幅方向のデータ数Vが多い形状を有する。図6に例示される分割範囲は、図4の分割範囲と比較して、高さ方向のデータ数Vが多く幅方向のデータ数Vが少ない形状を有する。
【0034】
上記のように分割範囲が自由度を有することで、さまざまな形状を有する係数マトリクスkmを効率的に圧縮することができる。処理部11は、係数マトリクスkmのすべての分割範囲にわたってデータを圧縮することで、分割圧縮データdcを生成する。生成される分割圧縮データdcについて、図7及び図8を参照して説明する。
【0035】
図7は、分割圧縮データdcの例を示す図である。分割圧縮データdcは、分割範囲ごとに、アドレスと、疎マトリクスと、非ゼロ係数データとを含む。アドレスは、非ゼロ係数データの位置(例えば先頭位置)を特定するためのデータである。疎マトリクスは、フィルタごとの係数マトリクスkm内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する。非ゼロ係数データは、フィルタごとの係数マトリクスkm内の非ゼロ係数をそのままのビットで記述する。なお、アドレス及び疎マトリクスは、メタデータとも呼べる。
【0036】
図8は、疎マトリクスの例を示す図である。疎マトリクスに割り当て可能なフィルタの最大の数(一度に圧縮可能なフィルタ数)は、フィルタ数Pと同じかフィルタ数Pよりもよりも多くてよい。疎マトリクスに割り当て可能なフィルタごとのデータサイズは、データサイズVと同じかデータサイズVよりも大きくてよい。
【0037】
圧縮対象のフィルタ数をN、奥行き方向のデータ量をC、高さ方向のデータ量をH、幅方向のデータ量をWとすると、最も圧縮率を高めた場合は、ceil(N/P)×ceil((C×H×W)/V)個の分割範囲、すなわちアドレス、疎マトリクス及び非ゼロ係数データのセットが発生する。ceilは、天井関数を意味し、端数は切り上げて整数にする。
【0038】
<実施例>
図9は、係数マトリクスkm及び分割圧縮データdcの具体例を示す図である。図9の上側には、係数マトリクスkmが示される。各フィルタを、フィルタf0~フィルタfN-1と称し図示する。例示される分割範囲は、フィルタf0~フィルタf3の4つのフィルタに対応する。
【0039】
図9の下側には、上記の分割範囲に対応するアドレス、疎マトリクス及び非ゼロ係数データが示される。アドレス及び疎マトリクスのデータサイズは、192ビットで固定される。アドレスのデータサイズは、32ビットである。疎マトリクスは、フィルタf0~フィルタf3に対応するデータを含む。各フィルタに対応するデータの最大データサイズは、40ビットである。すなわち、疎マトリクスにおけるフィルタごとのデータサイズが40ビット以下(データサイズV=40ビット)になるように、分割範囲が定められる。非ゼロ係数データは、フィルタf0~フィルタf3に対応するデータを含む。
【0040】
図10は、分割範囲の具体例を示す図である。例示される係数マトリクスkmは、2次元畳み込み処理に用いられる係数マトリクスであり、フィルタ方向、奥行き方向、高さ方向及び幅方向の4次元形状を有する。上述のように、分割範囲におけるフィルタ数Pは4である。疎マトリクスにおけるフィルタごとのデータサイズが40ビット以下になるように、分割範囲が定められる。以下では、分割範囲を、分割範囲Δ(フィルタ数P、奥行き方向のデータ数、高さ方向のデータ数、幅方向のデータ数)として表す場合もある。図10に示される例では、破線で示されるように、分割範囲Δ1(4、4、2、5)、分割範囲Δ2(4、4、2、5)及び分割範囲Δ3(4、4、1、5)の組合せによって、係数マトリクスkmが分割圧縮される。
【0041】
図11は、分割圧縮データdcにおける分割範囲Δ1に対応する部分を示す図である。理解を容易にするために、40ビットに対応する0~39をアドレスの上に記している。フィルタ方向(若い順)、奥行き方向、高さ方向及び幅方向の順に、係数がゼロ係数及び非ゼロ係数のいずれであるのかが確認される。非ゼロ係数の場合には、疎マトリクスの対応する位置に1が書き込まれる。ゼロ係数の場合には、疎マトリクスの対応する位置に0が書き込まれる。
【0042】
例えば上述の図10の最も左下に示される分割範囲Δ1で説明すると、非ゼロ係数、非ゼロ係数、ゼロ係数、ゼロ係数、ゼロ係数、ゼロ係数、非ゼロ係数、ゼロ係数、ゼロ係数、非ゼロ係数がこの順に確認される。図11に示されるように、疎マトリクスにおけるフィルタf0に対応する部分に、1、1、0、0、0、0、1、0、0、1が順に書き込まれる。非ゼロ係数データには、非ゼロ係数がそのまま書き込まれる。同様の処理を奥行き方向について行うことで、フィルタf0に対応する分割範囲Δ1が圧縮される。同様にして、フィルタf1~フィルタf3それぞれに対応する分割範囲Δ1も圧縮される。図11に示されるような分割圧縮データdcにおける分割範囲Δ1に対応する部分の圧縮が完了する。
【0043】
図11に示される例では、非ゼロ係数の数は30である。仮に各係数のデータサイズが8ビットであるとすると、圧縮前のデータ量は、1280(=4×4×2×5×8)ビットである。圧縮後のデータ量は、アドレス及び疎マトリクスの192ビットと、非ゼロ係数データの240(=30×8)ビットとの合計、すなわち432ビットである。データ量を約3分の1程度にまで圧縮することができる。
【0044】
図12は、分割圧縮データdcにおける分割範囲Δ2に対応する部分を示す図である。データの書き込みは上記と同様であるので説明は省略する。
【0045】
図13は、分割圧縮データdcにおける分割範囲Δ3に対応する部分を示す図である。データの書き込みは上記と同様であるので説明は省略する。なお、分割範囲Δ3は先の分割範囲Δ1や分割範囲Δ2よりも狭く設定されており、疎マトリクスにおけるフィルタごとのデータサイズは、20ビットである。割り当てられた40ビットのうち、前方の20ビットだけが使用される。残りの部分は使用されず、すべて0が書き込まれる。
【0046】
図14は、分割範囲の別の具体例を示す図である。例示される係数マトリクスkmは、1次元畳み込み処理に用いられる係数マトリクスであり、フィルタ方向、奥行き方向及び幅方向の3次元形状を有する。この例では、分割範囲におけるフィルタ数Pは4であり、奥行き方向のデータ数は8であり、高さ方向のデータ数は1であり、幅方向のデータ数は20である。
【0047】
高さ方向の圧縮は不要であり、その分が、この例では幅方向に割り当てられる。破線で示されるように、同じ形状の分割範囲Δ11~分割範囲Δ14(4、2、1、20)によって、係数マトリクスkmが分割圧縮される。
【0048】
図15図18は、分割圧縮データdcにおける分割範囲Δ11~分割範囲Δ14に対応する部分を示す図である。データの書き込みについては上記と同様であるので説明は省略する。
【0049】
図19は、分割範囲の別の具体例を示す図である。例示される係数マトリクスkmは、pointwise畳み込み処理に用いられる係数マトリクスであり、フィルタ方向及び奥行き方向の2次元形状を有する。この例では、分割範囲におけるフィルタ数Pは4であり、奥行き方向のデータ数は40であり、高さ方向のデータ数は1であり、幅方向のデータ数は1である。
【0050】
高さ方向及び幅方向の圧縮は不要であり、その分が、奥行き方向に割り当てられる。破線で示されるように、1つの分割範囲Δ21(4、40、1、1)によって、係数マトリクスkmが圧縮される。
【0051】
図20は、分割圧縮データdcにおける分割範囲Δ21に対応する部分を示す図である。データの書き込みについてはこれまでと同様であるので説明は省略する。
【0052】
例えば以上で説明したように、奥行き方向、高さ方向及び幅方向の分割範囲に自由度を持たせることで、さまざまな係数マトリクスkmの形状の相違を吸収し、それらを効率よく圧縮することができる。すなわち、奥行き方向のデータ数C、高さ方向のデータ数H及び幅方向のデータ数Wの割り当てを都度変更することで、高い圧縮率が実現可能である。
【0053】
図1に戻り、情報処理装置2についてさらに説明する。情報処理装置2は、処理部21と、記憶部22とを含む。処理部21は、分割圧縮データdcを復元し、ニューラルネットワークを用いた処理を実行する。処理部21は、GPU、アクセラレータ等の専用のハードウェアを含んで構成されてよい。記憶部22に記憶される情報として、プログラム221、及び、情報処理装置1によって生成された分割圧縮データdcが例示される。プログラム221は、コンピュータを情報処理装置2として機能させるための情報処理プログラム(ソフトウェア)である。分割圧縮データdcの復元について、図21及び図22を参照して説明する。
【0054】
図21及び図22は、処理部21による処理を模式的に示す図である。図21には、復元処理及び演算処理に関するいくつかの構成要素が例示される。図22には、デコーダ213による処理が模式的に示される。この例では、先の具体例で説明したようなフィルタf0~フィルタf3に対応する疎マトリクスが処理される。便宜上、以下では、疎マトリクスにおけるフィルタf0~フィルタf3に対応するデータを、データブロックとも称する。処理に関連する要素として、内部バッファ211、複数のマルチプレクサ212、複数のデコーダ213、データセレクタ214、アービタ215及び演算器群216が符号付きで例示される。複数のマルチプレクサ212として、マルチプレクサ212-0及びマルチプレクサ212-1が例示される。複数のデコーダ213として、デコーダ213-0及びデコーダ213-1が例示される。
【0055】
非ゼロ係数データは、先に説明したアドレスを参照することによって内部バッファに読み込まれる。この後で説明するデコードのタイミングでデータブロックを解釈することで、必要な非ゼロ係数が内部バッファの適切な位置から読み出される。処理部21は、データブロックを複数のデコーダ213に排他的に割り当てる。各デコーダ213は、割り当てられたデータブロック内に記述される非ゼロ係数(すなわち値が1に対応する係数)をデコードする。複数のデコーダ213により、各データブロックが並列に処理される。
【0056】
この例では、処理部21は、未処理のデータブロックの先頭(の位置)をヘッドによって指定する。指定されたデータブロックは、選択ロジックが与えられたマルチプレクサ212を介して、アイドル状態のデコーダ213に割り当てられる。各データブロックの演算結果が互いに影響を及ぼさないので、複数のデコーダ213による並列処理が可能である。
【0057】
各データブロックに含まれる1の数に起因して、データブロックの処理に要するサイクル数が異なり得る。各デコーダ213は、互いに同期することなく処理を進めることが可能である。処理部21は、複数のデコーダ213のうち、対応するデータブロック内に記述されるすべての非ゼロ係数をデコードしたデコーダ213に、未割り当てのデータブロックを割り当てる。例えば、デコーダ213-0においてデータブロックの処理が完了していなくとも、デコーダ213-1においてデータブロックの処理が完了していれば、未割り当てのデータブロックがデコーダ213-1に割り当てられる。デコーダ213-1は、デコーダ213-0によるデータブロックの処理の完了を待つことなく、新たに割り当てられたデータブロックの処理を進める。デコーダ213の空転(他のデコーダ213の処理が完了するのを待つ状態)の発生を抑制することができる。
【0058】
デコーダ213における処理等が、図22に例示される。破線で囲まれた処理は、各フィルタについて実行される。一点鎖線で囲まれた処理は、各奥行き、各高さ、及び、各幅について実行される。二点鎖線で囲まれた処理は、各高さ、及び、各幅について実行される。一点鎖線で囲まれた処理における値(後述の重みw0等)は、対応する二点鎖線で囲まれた処理が完了するまで保持される。
【0059】
データブロック中の1の位置がハッチングで図示される。複数の位置が検出され、対応する係数が格納される。係数として、重みw、より具体的には重みw0~重みw3が例示される。カウンタによるカウントに応じて、内部バッファ211内の重みw0~重みw3の位置を示すインデックスが計算される。処理サイクルを揃えるために、重みwのインデックスにreg(処理サイクルを揃えるために、重みwのインデックスにフリップ・フロップ等)を挟んでもよい。計算されたインデックスに基づいて、重みw0~重みw3を用いた積和演算のための入力x0~入力x3及び出力oの組合せが計算される。
【0060】
データセレクタ214(図21)は、バッファに格納された入力x、重みw及びバイアスbを選択する。選択されたこれらのデータは、アービタ215を介して、演算器群216に送られる。
【0061】
演算器群216は、複数の積和演算器MACを含む。この例では、複数の積和演算器MACは、デコーダ213-0に対応するグループ0及びデコーダ213-1に対応するグループ1に分けて用いられる。積和演算器MACの接続の自由度を下げ、接続の複雑さを緩和することができる。各積和演算器MACは、対応する重みw及び入力x、より具体的には重みw0~重みw3及び入力x0~入力x3の積和演算を実行する。バイアスbの演算も含まれてよい。演算によって得られた出力oは、アービタ215及びデータセレクタ214を介して内部バッファ211に送られる。
【0062】
同じデータブロックを複数回デコードしないように、データブロック中に検出された係数が関与するすべての入力x、バイアスb及び出力oに対して積和演算が行われる。この一連の処理が、データブロック内の未処理の1(デコード前の係数)がなくなるまで繰り返される。これにより、データブロック内の1の数に比例した処理サイクルだけでデコード処理が可能になる。
【0063】
図23は、情報処理装置1及び情報処理装置2によって実行される処理(情報処理方法)の例を示すフローチャートである。
【0064】
ステップS1において、係数マトリクスkmが分割圧縮される。この処理は、例えば情報処理装置1の処理部11によって実行される。処理部11は、係数マトリクスkmを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データdcを生成する。詳細はこれまで説明したとおりであるので、説明は繰り返さない。
【0065】
ステップS2において、係数マトリクスkmが復元され、ニューラルネットワークを用いた処理が実行される。この処理は、例えば情報処理装置2の処理部21によって実行される。詳細についてはこれまで説明したとおりであるので、説明は繰り返さない。
【0066】
2.変形例
開示される技術は、上記実施形態に限定されない。いくつかの変形例について述べる。
【0067】
先に説明した図9図20の例では、フィルタ方向における分割範囲、すなわち一度に圧縮されるフィルタ数Pが4である場合を例に挙げて説明した。ただし、フィルタ数Pは4以外であってよい。フィルタ数Pは1であってもよいし、2以上の任意の整数であってもよい。
【0068】
上記では、分割範囲におけるフィルタごとのデータサイズが40ビットである場合を例に挙げて説明した。ただし、当該データサイズは40ビット以外の任意のデータサイズであってよい。
【0069】
アドレスは、対応する非ゼロ係数データの先頭の位置を特定できるものであればよい。アドレスは、絶対アドレスであってもよいし、相対アドレスであってもよい。
【0070】
上記実施形態では、分割範囲が、奥行き方向のデータ数V、高さ方向のデータ数V及び幅方向のデータ数Vの積に対応するデータサイズの上限として、データサイズVを定める場合を例に挙げて説明した。ただし、データ数V、データ数V及びデータ数Vそれぞれに個別に上限が定められてよい。少なくとも一部のデータ数が固定されてもよい。
【0071】
上記実施形態では、係数マトリクスkmを圧縮する情報処理装置1と、係数マトリクスkmを復元する情報処理装置2とが異なる装置である場合を例に挙げて説明した。ただし、情報処理装置1及び情報処理装置2は同じ装置であってもよい。
【0072】
上記実施形態では、フィルタ方向以外の他方向として、奥行き方向、高さ方向及び幅方向を例に挙げて説明した。ただし、他方向は、フィルタ方向以外の少なくとも1つの方向であってよい。奥行き方向、高さ方向及び幅方向以外の方向が、他方向に含まれてもよい。
【0073】
3.ハードウェア構成の例
図24は、装置のハードウェア構成の例を示すブロック図である。例えば図示されるような汎用のコンピュータを用いて、情報処理装置1や情報処理装置2が実現される。なお、例えば情報処理装置2の処理部21に関しては、例えば先に説明したように、GPU、アクセラレータ等の専用のハードウェアを含んで構成されてよい。
【0074】
コンピュータにおいて、CPU501、ROM(Read Only Memory)502、RAM(Random Access Memory)503は、バス504により相互に接続されている。
【0075】
バス504には、さらに、入出力インターフェース505が接続されている。入出力インターフェース505には、入力部506、出力部507、記録部508、通信部509、及びドライブ510が接続されている。
【0076】
入力部506は、キーボード、マウス、マイクロホン、撮像素子等よりなる。出力部507は、ディスプレイ、スピーカ等よりなる。記録部508は、ハードディスクや不揮発性のメモリ等よりなる。通信部509は、ネットワークインターフェース等よりなる。ドライブ510は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体511を駆動する。
【0077】
以上のように構成されるコンピュータでは、CPU501が、例えば、記録部508に記録されているプログラム(例えば図1のプログラム121、プログラム221)を、入出力インターフェース505及びバス504を介して、RAM503にロードして実行することにより、上述した一連の処理が行われる。
【0078】
コンピュータ(CPU501)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブル記録媒体511に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0079】
コンピュータでは、プログラムは、リムーバブル記録媒体511をドライブ510に装着することにより、入出力インターフェース505を介して、記録部508にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部509で受信し、記録部508にインストールすることができる。その他、プログラムは、ROM502や記録部508に、あらかじめインストールしておくことができる。
【0080】
4.効果の例
本開示によれば、ニューラルネットワークを用いた処理の分割化に適した技術が提供される。開示される技術の1つは、情報処理装置1である。図1図8等を参照して説明したように、情報処理装置1は、フィルタ方向(output channel方向)の次元及び他方向(例えば奥行き方向、高さ方向、幅方向(input channel方向、height方向、width方向)の少なくとも1つ)の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスkmを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データdcを生成する処理部11、を備える。
【0081】
上記の情報処理装置1によれば、分割範囲がある程度の自由度を有するので、さまざまな形状の係数マトリクスkmを効率よく圧縮することができる。
【0082】
図7及び図8等を参照して説明したように、分割圧縮データdcは、フィルタごとの係数マトリクスkm内の非ゼロ係数をそのままのビットで記述する非ゼロ係数データ、フィルタごとの係数マトリクスkm内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する疎マトリクス、及び、非ゼロ係数データの位置を特定するアドレスを含んでよい。例えばこのようにして非ゼロ係数データ及び疎マトリクスを含む分割圧縮データdcを生成することで、係数マトリクスkmを圧縮(エンコード)することができる。分割圧縮データdcにアドレスを含めることで、非ゼロ係数の位置を見失わないようにすることができる。
【0083】
図1図4図8等を参照して説明したように、分割範囲は、疎マトリクスにおけるフィルタごとのデータサイズが、分割圧縮データdcを復元して利用する装置(情報処理装置2)の内部バッファサイズに応じたデータサイズ以下になるように定められてよい。これにより、情報処理装置2でのニューラルネットワークを用いた処理の分割化が行い易くなる。
【0084】
図2及び図10図20等を参照して説明したように、係数マトリクスkmは、ニューラルネットワークの畳み込み層の係数マトリクスを含み、畳み込み層は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層の少なくとも1つを含んでよい。例えばこのようなさまざまな畳み込み層の係数マトリクスkmを効率よく圧縮することができる。
【0085】
図1図8図21及び図22等を参照して説明した情報処理装置2も、開示される技術の1つである。情報処理装置2は、フィルタ方向(output channel方向)の次元及び他方向(例えば奥行き方向、高さ方向、幅方向(input channel方向、height方向、width方向)の少なくとも1つ)の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスkmを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することによって生成された分割圧縮データdcを復元する処理部21、を備える。これにより、情報処理装置2でのニューラルネットワークを用いた処理の分割化が行い易くなる。
【0086】
図21及び図22等を参照して説明したように、処理部21は、疎マトリクスにおけるフィルタごとのデータ(データブロック)を複数のデコーダ213に排他的に割り当て、デコーダ213は、割り当てられたデータ内に記述される非ゼロ係数をデコードし、処理部21は、複数のデコーダ213のうち、対応するデータ内に記述されるすべての非ゼロ係数をデコードしたデコーダ213に、分割圧縮データdc内のフィルタごとのデータのうち、未割り当てのデータを割り当ててよい。これにより、非ゼロ係数を効率的にデコードすることができる。
【0087】
図23等を参照して説明した情報処理方法も、開示される技術の1つである。情報処理方法は、フィルタ方向(output channel方向)の次元及び他方向(例えば奥行き方向、高さ方向、幅方向(input channel方向、height方向、width方向)の少なくとも1つ)の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスkmを、フィルタ方向には自由度を有さない一方で他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データdcを生成する(ステップS1)。このような情報処理方法によっても、これまで説明したように、さまざまな形状の係数マトリクスkmを効率よく圧縮することができる。
【0088】
なお、本開示に記載された効果は、あくまで例示であって、開示された内容に限定されない。他の効果があってもよい。
【0089】
以上、本開示の実施形態について説明したが、本開示の技術的範囲は、上述の実施形態そのままに限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、異なる実施形態及び変形例にわたる構成要素を適宜組み合わせてもよい。
【0090】
なお、本技術は以下のような構成も取ることができる。
(1)
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する処理部、
を備える、
情報処理装置。
(2)
前記分割圧縮データは、フィルタごとの前記係数マトリクス内の非ゼロ係数をそのままのビットで記述する非ゼロ係数データ、前記フィルタごとの前記係数マトリクス内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する疎マトリクス、及び、前記非ゼロ係数データの位置を特定するアドレスを含む、
(1)に記載の情報処理装置。
(3)
前記分割範囲は、前記疎マトリクスにおけるフィルタごとのデータサイズが、前記分割圧縮データを復元して利用する装置の内部バッファサイズに応じたデータサイズ以下になるように定められる、
(2)に記載の情報処理装置。
(4)
前記他方向は、奥行き方向、高さ方向、及び、幅方向の少なくとも1つを含む、
(1)~(3)のいずれかに記載の情報処理装置。
(5)
前記係数マトリクスは、前記ニューラルネットワークの畳み込み層の係数マトリクスを含み、
前記畳み込み層は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層の少なくとも1つを含む、
(1)~(4)のいずれかに記載の情報処理装置。
(6)
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することによって生成された分割圧縮データを復元する処理部、
を備える、
情報処理装置。
(7)
前記分割圧縮データは、フィルタごとの前記係数マトリクス内の非ゼロ係数をそのままのビットで記述する非ゼロ係数データ、前記フィルタごとの前記係数マトリクス内のゼロ係数及び非ゼロ係数それぞれを1ビットで記述する疎マトリクス、及び、前記非ゼロ係数データの位置を特定するアドレスを含み、
前記処理部は、前記疎マトリクスにおけるフィルタごとのデータを複数のデコーダに排他的に割り当て、
前記デコーダは、割り当てられた前記データ内に記述される非ゼロ係数をデコードし、
前記処理部は、前記複数のデコーダのうち、対応する前記データ内に記述されるすべての非ゼロ係数をデコードしたデコーダに、前記分割圧縮データ内のフィルタごとの前記データのうち、未割り当てのデータを割り当てる、
(6)に記載の情報処理装置。
(8)
前記分割範囲は、前記フィルタごとの前記疎マトリクスのデータサイズが、前記情報処理装置の内部バッファサイズに応じたデータサイズ以下になるように定められる、
(7)に記載の情報処理装置。
(9)
前記他方向は、奥行き方向、高さ方向、及び、幅方向の少なくとも1つを含む、
(6)~(8)のいずれかに記載の情報処理装置。
(10)
前記係数マトリクスは、前記ニューラルネットワークの畳み込み層の係数マトリクスを含み、
前記畳み込み層は、1次元畳み込み層、2次元畳み込み層、Depthwise畳み込み層、及び、pointwise畳み込み層の少なくとも1つを含む、
(6)~(9)のいずれかに記載の情報処理装置。
(11)
フィルタ方向の次元及び他方向の次元を有しゼロ係数を多く含むように調整されたニューラルネットワークの係数マトリクスを、前記フィルタ方向には自由度を有さない一方で前記他方向に自由度を有する分割範囲で分割圧縮することにより、分割圧縮データを生成する、
情報処理方法。
【符号の説明】
【0091】
1 情報処理装置
11 処理部
12 記憶部
121 プログラム
2 情報処理装置
21 処理部
211 内部バッファ
212 マルチプレクサ
213 デコーダ
214 データセレクタ
215 アービタ
216 演算器群
22 記憶部
221 プログラム
dc 分割圧縮データ
km 係数マトリクス
501 CPU
502 ROM
503 RAM
504 バス
505 入出力インターフェース
506 入力部
507 出力部
508 記録部
509 通信部
510 ドライブ
511 リムーバブル記録媒体
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24