JP2023064695A - ディープ・ニューラル・ネットワークにおけるニアメモリ疎行列計算 - Google Patents
ディープ・ニューラル・ネットワークにおけるニアメモリ疎行列計算 Download PDFInfo
- Publication number
- JP2023064695A JP2023064695A JP2022118148A JP2022118148A JP2023064695A JP 2023064695 A JP2023064695 A JP 2023064695A JP 2022118148 A JP2022118148 A JP 2022118148A JP 2022118148 A JP2022118148 A JP 2022118148A JP 2023064695 A JP2023064695 A JP 2023064695A
- Authority
- JP
- Japan
- Prior art keywords
- row
- weights
- random access
- access memory
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 184
- 238000013528 artificial neural network Methods 0.000 title claims description 14
- 230000015654 memory Effects 0.000 title description 71
- 230000005540 biological transmission Effects 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 45
- 238000007906 compression Methods 0.000 claims description 30
- 239000000872 buffer Substances 0.000 claims description 29
- 230000006835 compression Effects 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 24
- 238000009825 accumulation Methods 0.000 claims description 10
- 238000013135 deep learning Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 8
- 230000001960 triggered effect Effects 0.000 abstract description 7
- 238000012549 training Methods 0.000 description 46
- 238000004891 communication Methods 0.000 description 32
- 238000011176 pooling Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 17
- 238000010200 validation analysis Methods 0.000 description 15
- 239000013598 vector Substances 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 230000004913 activation Effects 0.000 description 9
- 238000001994 activation Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013145 classification model Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 102000004169 proteins and genes Human genes 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
【解決手段】DNNアクセラレータは、重み値に基づいて行列計算を実行するかどうかをコントロールする乗算コントローラを含む。乗算コントローラは、DNNアクセラレータ内のWRAMから重み行列を読み出し、重み行列内の行について行値を決定する。行値が1である一実施形態では、第1のスイッチは、行内の重みを読み出すためにWRAMに読み出し要求を送り、第2のスイッチは、DNNアクセラレータ内のIRAMからDNNアクセラレータ内のPEへのデータ伝送経路を形成する。PEは、IRAMに格納された重み及び入力データを受け取り、MAC演算を実行する。行値が0である一実施形態では、第1及び第2のスイッチはトリガされない。WRAMに読み出し要求が送られず、データ伝送経路は形成されない。PEは一切のMAC演算を実行しない。
【選択図】図2
【選択図】図2
Description
関連出願の相互参照
本出願は、2021年10月26日に出願されたインド特許出願第202141048956号の利益を主張し、その全体が参照により組み込まれる。
本出願は、2021年10月26日に出願されたインド特許出願第202141048956号の利益を主張し、その全体が参照により組み込まれる。
本開示は、一般にニューラルネットワークに関し、より詳細には、ディープ・ニューラル・ネットワーク(deep neural network、DNN)における疎行列計算に関する。
DNNは、現在、コンピュータビジョンから音声認識及び自然言語処理に及ぶさまざまな人工知能アプリケーションに広く使用されている。DNNは、通常、入力層、隠れ層、及び出力層を含む。隠れ層は、訓練済のデータセットを用いた行列計算によって、入力特徴マップ(IFM)を表す入力行列を、出力特徴マップ(OFM)を表す出力行列に変換する。DNNは、物体検出、画像分類などのさまざまなアプリケーションにおいて大いに成功している。しかしながら、DNNモデル(重み及び活性化の両方)は、かなりの疎性を見せることが示されており、行列計算動作中に計算リソース及び時間の著しい消費を引き起こす。
実施形態は、添付の図面と併せて以下の詳細な説明によって容易に理解されるであろう。この説明を容易にするために、類似の符号は類似の構造要素を示す。実施形態は、添付の図面の図において、限定を目的としてではなく、例示を目的として示されている。
概要
DNNは、自動潜在特徴抽出を使用してデータの効果的な抽象表現を生成する能力を特徴とする。DNNは、推論、物体検出、推奨システム、ビデオレンダリングなど、さまざまな分野において複雑な問題を解決するために使用されてきた。DNNを訓練することは、ネットワークにおいて、特定の問題を解決するのに有用な、「重み」を特定することを伴う。行列の乗算は、IFM及び重みを伴う基本的なDNN計算である。行列の乗算演算は、かなりの量の計算リソース及び時間を消費し得る。したがって、疎行列計算動作をアクセラレーションすることにより、DLモデルを訓練する性能ボトルネックを軽減することができる。
DNNは、自動潜在特徴抽出を使用してデータの効果的な抽象表現を生成する能力を特徴とする。DNNは、推論、物体検出、推奨システム、ビデオレンダリングなど、さまざまな分野において複雑な問題を解決するために使用されてきた。DNNを訓練することは、ネットワークにおいて、特定の問題を解決するのに有用な、「重み」を特定することを伴う。行列の乗算は、IFM及び重みを伴う基本的なDNN計算である。行列の乗算演算は、かなりの量の計算リソース及び時間を消費し得る。したがって、疎行列計算動作をアクセラレーションすることにより、DLモデルを訓練する性能ボトルネックを軽減することができる。
重み及び特徴の両方は、本質的に疎であり得る。DNNワークロードからの行列入力は大きくて疎であり、同時にアルゴリズムは、全体的な精度に影響を与えることなく追加の疎性を導入する。したがって、ハードウェア実施態様の一部として疎性に対処する手法が存在してきた。疎行列は、要素のいくつかが0の行列である。疎行列計算手法は、任意の利益を得るために入力行列が圧縮されることを必要とする。
一例示的な手法は、GPU(graphic processing unit、グラフィック処理ユニット)ベースのシステムで疎行列計算を実行し、これにより、大規模なマルチスレッド及びSIMD(single instruction,multiple data、単一命令、複数データ)スタイルの実行のおかげでスループットの向上を提供することができる。これらのマルチスレッドは、計算のオンチップメモリを共有することができる。しかしながら、多数の計算リソースが利用可能であっても、メモリが小さく、メモリアクセスが不連続であるために、マッピングが困難であることから、メモリ帯域幅が不十分であることによって性能が制限されている。
別の手法では、ハードウェアアクセラレータは、非0の被乗数要素と乗数要素とを特定するために圧縮されたインデックス情報を利用することができる。そうしたハードウェアアクセラレータは、並列に計算するために行列を複数のより小さなチャンクに分割するか、又は中間データを格納するために専用メモリ空間を使用するかのいずれかである。このように、追加のデータマッピングスキームが採用される必要がある。圧縮された疎情報は、乗算されるべき要素を決定するために使用される。しかしながら、計算リソースは賢明に使用されることができない。十分に高いレベルの並列化が達成されない。また、データ移動のためのコストは依然として高いままであり得る。
さらに別の手法では、圧縮スキームを通じて疎性情報を生成するためにコンパイラが使用され、疎データが付加される。この手法は、一般に、行列の1つが静的であり、複数の疎行列計算動作にわたって変化しない(たとえば、DNNにおける重み行列)場合に採用される。コンパイラによって、圧縮された疎情報を生成することは、静的行列に対して機能する。しかしながら、絶えず変化する入力行列に対しては同様には機能しない。動的行列データに対して、又はアプリケーション実行時間中に行列が変化しているとき、圧縮された情報を生成するためにコンパイラを採用することは困難である。
上記の手法は、圧縮されたフォーマットは行列に対して必要であるがベクトル入力に対しては必要でないため、メモリ空間の管理が複雑ではないケース、たとえば疎行列がベクトルと乗算されるケースに対して機能することができる。しかしながら、疎行列計算中の両行列の行列次元及び疎性に基づいて、疎情報は、非0のデータ要素よりも多くのメモリ空間を必要とし得る。行列の1つを複数の列ベクトル(ベクトルの数=行列の列)に分割することによって、疎行列計算を実行するために上記手法が使用されることができる。これによって、行列の1つに対する圧縮された疎フォーマット化の必要性が回避される。しかしながら、計算量は所望よりも大きくなり得る。乗算数の増加は、大きなボトルネックであるデータ移動の増加に直接寄与する。
本発明の実施形態は、ニアメモリ疎行列計算が可能なDNNアクセラレータに関する。例示的なDNNアクセラレータは、乗算コントローラと、バッファと、2つのスイッチと、処理要素(process element、PE)のアレイを含み、これらは重みを格納するランダムアクセスメモリ(random-access memory、RAM)(「重みランダムアクセスメモリ(weight random access memory、WRAM」)、入力を格納するRAM(「入力RAM(input RAM、IRAM)」)、及び出力を格納するRAM(「出力RAM(output RAM、ORAM)」)の近くに配置される。入力は、DNN層のIFM行列(又はIFM行列の一部)であり得る。出力は、DNN層のOFM行列(又はOFM行列の一部)であり得る。
乗算コントローラは、DNNアクセラレータによる疎行列計算をコントロールする。たとえば、乗算コントローラは、重み値に基づいたPEによるMAC演算のためにIRAM及びWRAMからデータを読み出すべきかどうか、及びいつ読み出すべきかを決定する。たとえば、乗算コントローラは、WRAMから重み行列にアクセスし、重み行列内の行のそれぞれについて行値を決定する。たとえば、乗算コントローラは、非0値の重みを有さない行の行値は0であり、少なくとも1つの非0値の重みを有する行の行値は1である、と決定する。乗算コントローラは、行値をバッファに格納する。WRAMからの読み出し動作をコントロールする第1のスイッチは、非0の行値によってトリガされることができる。第1のスイッチがトリガされた後、これは、その行内の重みを読み出すためにWRAMに読み出し要求を送る。一実施形態では、重みはIRAMに読み出される。IRAMからPEへのデータの伝送をコントロールする第2のスイッチも、非0の行値によってトリガされることができる。第2のスイッチがトリガされると、入力データ及び重みがPEに伝送されることができる。次いで、PEは、入力データ及び重みに対してMAC演算を実行する。言い換えると、行が1又は複数の非0値の重みを有するとき、乗算コントローラ255は、MAC演算を可能にする。対照的に、行内のすべての重みが0値である(すなわち、行値が0である)とき、2つのスイッチはトリガされず、PEにデータが送られず、PEは一切のMAC演算を実行しない。したがって、乗算コントローラ及び2つのスイッチは、DNNアクセラレータが必要に応じて行列計算を実行し、DNNアクセラレータが意味のない行列計算を実行することを防止する(すなわち、すべての重みが0値であるとき、実行された場合に行列計算の結果が0になるので)、ことを確実にすることができる。このように、乗算コントローラ及びスイッチは、行列計算におけるDNNアクセラレータの効率を向上させることができ、意味のない行列計算動作に対する計算リソースの浪費を回避する。また、乗算コントローラ及びスイッチがIRAM及びWRAMの近くに配置されるので、行列計算をコントロールするために必要とされるデータ移動が低減されるか、又は、さらに、最小化される。
いくつかの実施形態では、DNNアクセラレータはまた、DNNアクセラレーションの効率をさらに向上させるためにIFM行列を圧縮する圧縮モジュールも含む。IFM行列が圧縮される実施形態では、PEは、出力を再構成するために乗算演算の結果に対してデマルチプレクス動作を実行し得る。さらに、DNNアクセラレータは、1つのDNN計算タイルとして使用され得る。いくつかのそうしたDNNアクセラレータは、DNN層をアクセラレーションするために使用されることができるタイルアーキテクチャを形成するために並列に配置されることができる。タイルアーキテクチャ内のDNNアクセラレータは、DNN層の入力又はOFMを格納する1つのシステムメモリを共有し得る。タイルアーキテクチャなどによって、全体的なメモリストレージ要件が軽減されることができる。
説明を目的として、例示的な実施態様の十分な理解を提供するために具体的な数字、材料及び構成が明記されている。しかしながら、本開示が特定の詳細なしで実践され得ること、又は/及び本開示が説明された態様のいくつかのみで実践され得ることは、当業者には明らかであろう。他の例では、例示的な実施態様を不明瞭にしないために、周知の特徴は省略又は簡略化されている。
さらに、本明細書の一部を形成し、実践され得る実施形態が例示として示されている添付の図面を参照する。本開示の範囲から逸脱することなく、他の実施形態が利用され得、構造的又は論理的な変更が行われ得ることが理解されるべきである。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
さまざまな動作は、特許請求される主題を理解するのに最も有用な方法で、順番に複数の別個のアクション又は動作として説明され得る。しかしながら、説明の順序は、これらの動作が必ずしも順序に依存することを暗示すると解釈されるべきではない。具体的には、これらの動作は、提示順に実行されなくてもよい。説明される動作は、説明される実施形態とは異なる順序で実行されてもよい。さまざまな追加の動作が実行されてもよく、又は追加の実施形態において、説明された動作が省略されてもよい。
本開示の目的では、「A及び/又はB」というフレーズは、(A)、(B)又は(A及びB)を意味する。本開示の目的では、「A、B、及び/又はC」というフレーズは、(A)、(B)、(C)、(A及びB)、(A及びC)、又は(A、B、及びC)を意味する。「の間(between)」という用語は、測定範囲に関して使用されるとき、測定範囲の端を含む。
説明では、「一実施形態において(一実施形態では)」又は「実施形態において(実施形態では)」というフレーズを使用するが、これらのフレーズは、同じ実施形態又は異なる実施形態のうち1又は複数をそれぞれ指し得る。本開示の実施形態に関して使用されるとき、「備える、含む(comprising)」、「備える、含む(including)」、「有する(having)」等の用語は同義である。開示では、図のさまざまな特徴を説明するために「上(above)」、「下(below)」、「一番上(top)」、「一番下(bottom)」、及び「横(side)」などの視点ベースの説明を使用し得るが、これらの用語は単に議論を容易にするためであり、所望又は必要な向きを暗示するものではない。添付の図面は必ずしも縮尺どおり示されているとは限らない。別段の指定がない限り、共通の対象を説明するための序数形容詞「第1の」、「第2の」、及び「第3の」などの使用は、同様の対象の異なるインスタンスが参照されていることを単に示すだけであり、そのように説明された対象が時間的に、空間的に、ランキング的に、又はいずれかの他の方法で所与のシーケンスになければならないことを暗示することは意図されていない。
以下の詳細な説明では、例示的な実施態様のさまざまな態様は、自身の作業の内容を他の当業者に伝えるために当業者によって一般的に使用される用語を使用して説明される。
用語「実質的に(substantially)」、「近い(close)」、「およそ(approximately)」、「近く(near)」、及び「約(about)」は、本明細書に説明されるような、又は当技術分野で知られているような特定の値のコンテキストに基づく目標値の+/-20%以内であることを一般に指す。同様に、さまざまな要素の向きを示す用語、たとえば「同一平面上の(coplanar)」、「垂直の(perpendicular)」、「直交の(orthogonal)」、「平行の(parallel)」、若しくは要素間の任意の他の角度は、本明細書に説明されるような、又は当技術分野で知られているような特定の値のコンテキストに基づく目標値の+/-5~20%以内であることを一般に指す。
さらに、用語「備える、含む(comprise)」、「備える、含む(comprising)」、「備える、含む(include)」、「備える、含む(including)」、「有する(have)」、「有する(having)」、又はそれらの任意の他の変形語は、非排他的包含を網羅することが意図されている。たとえば、要素のリストを含む方法、プロセス、デバイス、又はシステムは、必ずしもそれらの要素のみに限定されるわけではなく、明示的に列挙されていないか、又はそうした方法、プロセス、デバイス、若しくはシステムに固有の、他の要素を含み得る。また、「又は(or)」という用語は、包括的な「又は(or)」を指し、排他的な「又は(or)」を指すものではない。
本開示のシステム、方法、及びデバイスはそれぞれ、いくつかの革新的な態様を有し、そのうちの1つが本明細書に開示されるすべての望ましい属性を単独で担うものではない。本明細書に説明された主題の1又は複数の実施態様の詳細は、以下の説明及び添付の図面に明記されている。
例示的なDNNアーキテクチャ
例示的なDNNアーキテクチャ
図1は、さまざまな実施形態に係る、一例示的なDNN100のアーキテクチャを示している。例示の目的のため、図1のDNN100は、視覚幾何学グループ(Visual Geometry Group、VGG)ベースの畳み込みニューラルネットワーク(convolutional neural network、CNN)である。他の実施形態では、DNN100は、他のタイプのDNNであり得る。DNN100は、画像を受け取り、画像内の物体の分類を出力するように訓練される。図1の実施形態では、DNN100は、物体115、125、及び135含む入力画像105を受け取る。DNN100は、複数の畳み込み層110(「畳み込み層110」と個々に称される)と、複数のプーリング層120(「プーリング層120」と個々に称される)と、複数の全結合層130(「全結合層130」と個々に称される)とを含む一連の層を含む。他の実施形態では、DNN100は、より少ない、より多い、又は異なる層を含み得る。
畳み込み層110は、入力画像105内の特徴の存在を集約する。畳み込み層110は、特徴抽出器として機能する。DNN100の第1層は、畳み込み層110である。一例では、畳み込み層110は、フィルタ150を使用してIFM140に畳み込みを実行し、畳み込みからOFM160を生成し、OFM160をシーケンス内の次の層に渡す。IFM140は、複数のIFM行列を含み得る。フィルタ150は、複数の重み行列を含み得る。OFM160は、複数のOFM行列を含み得る。DNN100の第1層でもある第1の畳み込み層110については、IFM140は入力画像105である。他の畳み込み層については、IFM140は、別の畳み込み層110の出力、又はプーリング層120の出力であり得る。畳み込みは、フィルタ150とIFM140との乗算を伴う線形演算である。フィルタは、重みの2次元アレイであり得る。フィルタの重みは、初期化され、勾配降下法を使用して逆誤差伝搬法によって更新されることができる。フィルタの重みの大きさは、IFM140から特徴を抽出する際のフィルタ150の重要性を示すことができる。フィルタは、IFM140よりも小さくあり得る。
IFM140のフィルタサイズのパッチとフィルタとの間に適用される乗算はドット積であり得る。ドット積は、IFM140のフィルタサイズのパッチと対応するフィルタとの間の要素ごとの乗算であり、次いで合計され、常に単一の値をもたらす。単一の値をもたらすことから、この演算はしばしば「スカラ積」と称される。IFM140よりも小さいフィルタを使用することは、IFM140上の異なる点で同じフィルタ(重みのセット)にIFM140を複数回乗算することを可能にするので、意図的である。具体的には、フィルタは、IFM140の各重なる部分又はフィルタサイズのパッチに、左から右、一番上から一番下に体系的に適用される。フィルタにIFM140を1回乗算した結果は、単一の値である。フィルタがIFM140に複数回適用されるので、乗算結果は、IFM140のフィルタリングを表す出力値の2次元アレイになる。そのため、この動作からの2次元出力アレイは「特徴マップ」と呼ばれる。
いくつかの実施形態では、OFM160は、活性化関数に通される。例示的な活性化関数は、正規化線形活性化関数(ReLU)である。ReLUは、入力として提供された値をそのまま、又は入力が0以下の場合は値0を返す計算である。畳み込み層110は、いくつかの画像を入力として受け取り、それらのそれぞれとフィルタのそれぞれとの畳み込みを計算し得る。このプロセスは、数回繰り返されることができる。たとえば、OFM160は、後続の畳み込み層110(すなわち、シーケンス内で、OFM160を生成する畳み込み層110に続く畳み込み層110)に渡される。後続の畳み込み層110は、OFM160に対して新しいフィルタとの畳み込みを実行し、新しい特徴マップを生成する。新しい特徴マップはまた、正規化及びリサイズもされ得る。新しい特徴マップは、さらなる後続の畳み込み層110によって再びフィルタリングされることができる、が同じように続く。
いくつかの実施形態では、畳み込み層110は、4つのハイパーパラメータ、すなわち、フィルタの数、サイズFフィルタ(たとえば、フィルタがF×F×D画素の寸法である)、フィルタに対応するウィンドウが画像上でドラッグされるSステップ(たとえば、1のステップは、ウィンドウを1回に1画素移動させることを意味する)、及び0パディングP(たとえば、畳み込み層110の入力画像にPピクセル厚の黒い輪郭を追加する)を有する。畳み込み層110は、2次元畳み込み、拡張畳み込み又はアトラス畳み込み、空間的分離可能畳み込み、深さごとの分離可能畳み込み、転置畳み込みなど、さまざまなタイプの畳み込みを実行し得る。DNN100は、16の畳み込み層110を含む。他の実施形態では、DNN100は、異なる数の畳み込み層を含み得る。
プーリング層120は、たとえば、特徴マップのパッチ内の特徴の存在を集約することによって、畳み込み層によって生成された特徴マップをダウンサンプリングする。プーリング層120は、2つの畳み込み層110の間、すなわち、先行する畳み込み層110(層のシーケンスにおいてプーリング層120に先行する畳み込み層110)と後続の畳み込み層110(層のシーケンスにおいてプーリング層120に後続する畳み込み層110)との間に配置される。いくつかの実施形態では、プーリング層120は、畳み込み層110の後、たとえば活性化関数(たとえば、ReLU)がOFM160に適用された後に追加される。
プーリング層120は、先行する畳み込み層110によって生成された特徴マップを受け取り、特徴マップにプーリング演算を適用する。プーリング演算は、それらの重要な特性を維持しながら特徴マップのサイズを減少させる。それに応じて、プーリング演算は、DNNの効率を向上させ、過学習を回避する。プーリング層120は、平均プーリング(特徴マップ上の各パッチについて平均値を計算する)、最大値プーリング(特徴マップの各パッチについて最大値を計算する)、又はその両方の組合せによってプーリング演算を実行し得る。プーリング演算のサイズは、特徴マップのサイズよりも小さい。さまざまな実施形態において、プーリング演算は、2ピクセルのストライドで適用される2×2ピクセルであり、その結果、プーリング演算は、特徴マップのサイズを2分の1に減少させ、たとえば、特徴マップ内のピクセル又は値の数は、サイズの4分の1に減少させられる。一例では、6×6の特徴マップに適用されたプーリング層120は、3×3の出力プール済特徴マップをもたらす。プーリング層120の出力は、さらなる特徴抽出のために後続の畳み込み層110に入力される。いくつかの実施形態では、プーリング層120は、同じ数のプール済特徴マップの新しいセットを生成するために、各特徴マップに対して別々に動作する。
全結合層130は、DNNの最後の層である。全結合層130は、畳み込みであってもなくてもよい。全結合層130は、入力ベクトルを受け取る。入力ベクトルは、畳み込み層110及びプーリング層120の出力を定義し、シーケンスにおける最後のプーリング層120によって生成された最後の特徴マップの値を含む。全結合層130は、線形結合及び活性化関数を入力ベクトルに適用し、出力ベクトルを生成する。出力ベクトルは、クラスと同数の要素を含み得、すなわち、要素iは、画像がクラスiに属する確率を表す。したがって、各要素は0と1との間であり、すべての合計は1に値する。これらの確率は、活性化関数としてロジスティック関数(二値分類)又はソフトマックス関数(多クラス分類)を使用して、最後の全結合層130によって計算される。
いくつかの実施形態では、全結合層130は、入力画像105を分類し、サイズNのベクトルを返し、Nは、画像分類問題におけるクラスの数である。図1の実施形態では、入力画像内に3つの物体115、125、及び135があるので、Nは3に等しい。ベクトルの各要素は、入力画像105がクラスに属する確率を示す。確率を計算するために、全結合層130は、各入力要素に重みを乗算し、合計を作成し、次いで活性化関数(たとえば、N=2の場合はロジスティック、N>2の場合はソフトマックス)を適用する。これは、入力ベクトルに重みを含む行列を乗算することに相当する。一例では、出力ベクトルは、物体115が木であることを示す第1の確率、物体125が車であることを示す第2の確率、物体135が人であることを示す第3の確率の、3つの確率を含む。入力画像105が異なる物体又は異なる数の物体を含む他の実施形態では、出力ベクトルは異なり得る。
例示的な疎DNNアクセラレータ
例示的な疎DNNアクセラレータ
図2は、さまざまな実施形態に係る、一例示的な疎DNNアクセラレータ220のアーキテクチャを示している。疎DNNアクセラレータ220は、疎行列計算によってDNN層の畳み込みをアクセラレーションする。疎DNNアクセラレータ220は、システムメモリ210と計算モジュール240とに連結された圧縮モジュール230を含む。他の実施形態では、疎DNNアクセラレータ220は、より少ない、より多い、又は異なるコンポーネントを含み得る。
システムメモリ210は、DNN層のIFM及びフィルタの重みを格納する。システムメモリ210は、疎DNNアクセラレータ220の外部にある。圧縮モジュール230は、IFM行列内の疎性を低減するためにIFM行列を圧縮することができる。いくつかの実施形態では、圧縮モジュール230は、IFMをさまざまな圧縮された疎フォーマット、たとえば、座標リスト(coordinate list、COO)、圧縮疎行(compressed sparse row、CSR)、圧縮行格納(compressed row storage、CRS)などに圧縮する。いくつかの実施形態では、圧縮モジュール230は、IFM内の疎性にもかかわらず、IFMを圧縮しない。IFMは、システムメモリ210からそのまま計算モジュール240に伝送されることができる。圧縮モジュール230はまた、重み行列を圧縮し得る。IFM行列及び重み行列に関するさらなる詳細は、図6A~図6Dに関連して以下に説明される。
計算モジュール240は、DNN層のOFMを生成するために、DNN層のIFM及びフィルタに対して行列計算を実行する。たとえば、計算モジュール240は、畳み込み層において畳み込みを実行する。計算モジュール240は、重みメモリ250と、乗算コントローラ255と、バッファ260と、スイッチ265と、入力メモリ270と、別のスイッチ275と、PE280と、出力メモリ285とを含む。重みメモリ250は、DNN層内のフィルタの重みを格納する。いくつかの実施形態では、重みメモリ250は、1つのフィルタ又はフィルタのサブセットの重みを格納する。入力メモリ270は、システムメモリ210又は圧縮モジュール230からの入力データを格納する。入力データは、DNN層のIFM、圧縮されたバージョンのIFM、又は非圧縮の若しくは圧縮されたIFMの一部、であり得る。出力メモリ285は、PE280の出力である、DNN層のOFMを格納する。重みメモリ250、入力メモリ270、又は出力メモリ285は、1又は複数のレジスタファイルを含むRAMであり得る。入力メモリ270は、入力メモリ270からPE280への効率的なデータ伝送を容易にするために、広い帯域幅を有するレジスタファイルであり得る。
乗算コントローラ255は、計算モジュール240が重みメモリ250に格納された重みに基づいて行列計算を実行するかどうかを決定する。いくつかの実施形態では、乗算コントローラ255は、WRAMから重み行列にアクセスする。重み行列は、フィルタ又はフィルタの一部であっあり得る。重み行列は、1又は複数の行を含む。各行は重みを含む。重みは、0又は非0の値を有し得る。乗算コントローラ255は、行内の重みの値に基づいて、重み行列内の各行について行値を決定する。たとえば、乗算コントローラ255は、行内のいずれかの重みが非0値を有するかどうかを決定する。行内の少なくとも1つの重みが非0値を有すると乗算コントローラ255が決定する一実施形態では、乗算コントローラ255は、行の行値が1であると決定する。行内の重みが非0値を全く有しない(すなわち、すべての重みが0値である)と乗算コントローラ255が決定する一実施形態では、乗算コントローラ255は、行の行値が0であると決定する。
乗算コントローラ255は、行値をバッファ260に格納する。バッファ260内の行値は、たとえば、スイッチ265及び275をオン及びオフにすることによって、スイッチ265及び275をコントロールする。スイッチ265は、重みメモリ250に関連付けられた読み出し動作をコントロールする。スイッチ275は、入力メモリ270からPE280へのデータの伝送をコントロールする。たとえば、行値が0である場合、スイッチ265はオフになり、重みメモリ250からデータを読み出さない。0値の行値は、対応する行内のすべての重みが0値を有することを示し、したがって、この行では重みに対してMAC演算が行われる必要がない。スイッチ275はまた、入力メモリ270からPE280へのデータ伝送をブロックするためにオフになり、その結果、PE280はデータを受信せず、一切のMAC演算を実行しない。対照的に、行値が1である場合、スイッチ265はオンになり、重みメモリ250から行の重みを読み出す。1値の行値は、対応する行内の少なくとも1つの重みが非0値を有することを示し、したがって、この行についてMAC演算が必要とされる。行の重みは、入力メモリ270に読み出されることができる。スイッチ275もオンし、入力データ及び重みが入力メモリ270からPE280へ伝送されることを可能にする。
PE280は、入力データ及び重みに対してMAC演算を実行する。いくつかの実施形態では、PEは、DNN内のニューロンであり得る。PE280は、2つの入力信号、すなわち、入力データ及び重み、並びに1つの出力信号、すなわち、MAC演算の結果、を有する。いくつかの実施形態では、PE280は、乗算器のアレイ及び積算器のアレイを含む。各乗算器は、入力信号の一部に対して乗算演算を実行する。積算器は、積算演算を実行する。積算器は互いに接続されている。一実施形態では、各積算器は異なる乗算器に対応し、乗算器の出力を入力として受け取る。また、積算器の出力は、積算器間の相互接続を経由して入力として他の積算器に送られる(場合によっては自身に戻される)。積算器の出力は、積算器の積算演算によって1又は複数の他の積算器の出力を組み込むことができる。
圧縮モジュール230がIFMを圧縮する実施形態などの他の実施形態では、PE280はまた、デマルチプレクサも含み得る。デマルチプレクサは、乗算演算の結果に対してデマルチプレクス動作を実行する。PE280の出力を生成するために、デマルチプレクス動作の結果に対して積算演算が実行される。デマルチプレクス動作は、PE280の出力を再構成し、その結果、疎DNNアクセラレータ220の外部で出力を再構成するために追加のステップは必要ない。PE280についてのさらなる詳細は、図3、及び図5A~図5Cに関連して以下に説明される。
図3は、さまざまな実施形態に係る、一例示的なPE300のアーキテクチャを示している。PE300は、図2のPE280の一実施形態である。PE300は、圧縮モジュール230がIFMを圧縮する疎DNNアクセラレータ220の実施形態において使用され得る。図3に示されるように、PE300は、乗算器310A~310C(「乗算器310」と総称される)と、デマルチプレクサ320と、積算器330A~330C(「積算器330」と総称される)とを含む。簡単及び例示の目的のために、PE300は、3つの乗算器310と3つの積算器330とを含む。他の実施形態では、PE300は、より多くの乗算器310又は積算器330を含み得る。
各乗算器310は、DNN層のIFMの一部と、DNN層のフィルタ重みの一部との乗算演算を実行する。乗算器310は、各乗算演算からドット積を返し得る。乗算器310の出力は、デマルチプレクサ320に伝送される。デマルチプレクサ320は、乗算器310の出力に対してデマルチプレクス動作を実行する。デマルチプレクサ320は、圧縮モジュール230によって行われたIFMの圧縮を相殺するために乗算器310の出力を再構成する。デマルチプレクサ320は、乗算器310の出力を対応する積算器330にマッピングする。たとえば、デマルチプレクサ320は、乗算器310Aの出力に対してデマルチプレクス動作を実行し、デマルチプレクス動作の結果を積算器330Aに伝送する。デマルチプレクサ320をPE300に統合することによって、再構成がニアメモリで行われることができ、疎DNNアクセラレータ220の外部に追加の再構成ステップは必要とされない。これによって、データ移動を最小限に抑え、計算効率を向上させることができる。
積算器330は、デマルチプレクス動作の結果に対して積算演算を実行する。積算器330は接続されている。たとえば、積算器330Aの出力は、積算器330Bに、それらの相互接続を通じて送られることができる。上述されるように、積算器330Bはまた、デマルチプレクサ320を通じて乗算器310Bの再構成された出力を受け取る。積算器330Bは、積算器330Aの出力、及び乗算器310Bの再構成された出力に対して積算演算を実行することができる。同様に、積算器330Cは、積算器330Bの出力、及び乗算器310Cの再構成された出力に対して積算演算を実行することができる。積算器330Cがシーケンス内の最後の積算器330であると仮定する。積算器330Cの出力が、PE300の出力である。
図4は、さまざまな実施形態に係る、並列DNNアクセラレータタイル420を含む一例示的なタイルアーキテクチャ400を示している。簡単及び例示の目的のために、図4は、4つのDNNアクセラレータ420(個別に「DNNアクセラレータタイル420」と称される)を示している。他の実施形態では、タイルアーキテクチャ400は、より少ない又はより多いDNNアクセラレータタイル420を含み得る。各DNNアクセラレータタイル420は、タイルアーキテクチャ400のDNN計算タイルを構成する。タイルアーキテクチャ400は、DNN層、たとえば畳み込み層の、アーキテクチャであり得る。
図4に示されるように、DNNアクセラレータタイル420は、システムメモリ410及び430に連結されている。システムメモリ410は、DNN層のIFM及びフィルタを格納する。システムメモリ430は、DNN層のOFMを格納する。いくつかの実施形態では、システムメモリ410及び430は、1つのメモリに組み合わされる。
DNNアクセラレータタイル420は、並列に配置され、並列に機能する。DNNアクセラレータタイル420の一実施形態は、図2及び図3に関連して上述される疎DNNアクセラレータ220である。各DNNアクセラレータタイル420は、システムメモリ410からIFMの一部及びフィルタの一部を受け取る。DNNアクセラレータタイル420は、受け取ったデータに対して行列計算を実行し、OFMの一部を出力する。DNNアクセラレータタイル420の出力は、システムメモリ430に格納される。そうしたDNNアクセラレータタイル420の並列配置によって、DNNアクセラレータタイル420は、互いに干渉することなくシステムメモリ410及び430を共有することができる。このように、DNN層のための全体的なメモリストレージの要件が低減されることができる。
疎行列計算をアクセラレーションする例示的なプロセス
疎行列計算をアクセラレーションする例示的なプロセス
図5A~図5Cは、さまざまな実施形態に係る、DNN層における疎行列計算をアクセラレーションする3つの例示的なプロセスを示している。図5Aは、2つの行を含む重み行列510を示している。図5Aはまた、行インデックス505内に行のインデックスも示している。1行目(一番上の行)のインデックスは0である。2行目(一番下の行)のインデックスは1である。行についての行値は、たとえば図2の乗算コントローラ255によって決定される。行0は非0値の重みを含むので、行0についての行値は1である。行1も非0値の重みを含むので、行1についての行値も1である。重み行列510は、その重みのいずれも0値ではないので、高密度表現である。行値が非0であるので、重みに対するMAC演算がトリガされることになる。MAC演算は、行0内の重み(W[000])から始まる。図5Aは、それぞれが行0内の重みを入力データ(図5Aには示されていない)と乗算する5つの乗算器310を示している。図5Aの実施形態では、入力データは圧縮された疎フォーマットであり、たとえば、IFMは圧縮モジュール230によって圧縮されている。入力データが圧縮されているので、次いで、乗算演算の結果は、乗算器310の出力を再構成するためにデマルチプレクサ320に送られる。さらに、デマルチプレクサ320の出力は、積算機能を実行するために、5つの積算器330に伝送される。
図5Aとは異なり、図5Bは疎性を有する重み行列520を示している。重み行列520の行0は、2つの非0値の重みと3つの0値の重みとを含んでいる。たとえ行0が疎性を有していても、2つの非0値の重みがあるため、行値は依然として1であり、そのため依然として行0に対して行列計算を実行する必要がある。図5Aと同様に、行0内の重みは、重みを入力データと乗算する5つの乗算器310に送られる。図5Bの実施形態における入力データも圧縮されたデータである。このように、乗算演算の結果は、再構成のためにデマルチプレクサ320に送られる。デマルチプレクサ320の出力は、積算機能を実行するために、5つの積算器330に伝送される。
図5Cは、より高い疎性を有する重み行列530を示している。重み行列520の行0は、5つの0値の重みを含んでおり、非0値の重みを一切含んでいない。それに応じて、行0に対して行列計算を実行する必要はなく、行0についての行値は0である。行0は乗算器310に送られない。対照的に、行1は非0値の重みを含んでおり、行値1を有している。そのため、行1内の重み(「W[001]」)は乗算器310に送られ、入力データと乗算される。図5Cの実施形態における入力データは、いかなる圧縮された疎フォーマットでもなく、入力データはIFMから抽出されるが、圧縮モジュール230によって圧縮されないことを意味する。このように、図5Cは、再構成が不要であるため、デマルチプレクサ320を含んでいない。乗算器310の出力は、積算器機能能を実行するために、5つの積算器330にそのまま伝送される。
例示的な重み行列及びIFM行列
例示的な重み行列及びIFM行列
図6Aは、さまざまな実施形態に係る、DNNアクセラレータに関連付けられたシステムメモリに格納された重み行列610及びIFM行列620を示している。システムメモリは、図2のシステムメモリ210であり得る。図6Aに示されるように、重み行列610は、2行2列に配置された4つの重みを含んでいる。重みはすべて非0値を有している。他の実施形態では、重みのいくつかは0値を有し得る。図6Aはまた、重みの列インデックス613及び行インデックス615も示している。IFM行列620は、3行3列を含む行列である。図6Aはまた、IFM行列620内の要素の行インデックス625及び列インデックス623も示している。IFM行列620は、0値を有する5つの要素を含んでいるため、疎性を有している。疎性を考慮すると、IFM行列620は、IFM行列620をより高密度に、すなわち、より少ない0値の要素を有するようにするために、たとえば圧縮された疎フォーマットに圧縮され得る。ただし、IFM行列620は、一切圧縮せずにそのままで格納されてもよい。重み行列610及びIFM行列620は、システムメモリから圧縮ロジック、たとえば図2の圧縮モジュール230に読み込まれ得る。圧縮モジュール230は、重み行列610及びIFM行列620のフォーマットを変更することができる。
図6Bは、さまざまな実施形態に係る、圧縮モジュール230によって図6Aの重み行列610から変換された重み行列630を示している。重み行列630は、重み行列610の中間的表現である。図6Bでは、重み637は、それらの行インデックス635及び列インデックス633と共に格納されている。重み行列は、重みメモリ250にさらに伝送され、重みメモリ250に格納されることができる。行インデックス635及び列インデックス633は、重みメモリ250内の重みの位置を特定することができ、重みメモリ250から重みを読み出すために使用されることができる。一実施形態では、行又は列インデックスは、重み自体よりも多くのビットを有する。たとえば、行又は列インデックスは12ビットを取り得るが、重みは1ビットを取り得る。
図6Cは、さまざまな実施形態に係る、図6AのIFM行列620の非圧縮状態を示している。IFM行列620の非圧縮状態は、「非圧縮のIFM640」と称される。非圧縮のIFM640は、図2の圧縮モジュール230によって図6AのIFM行列620から変換されることができる。図6Bに示されるように、行インデックス645は、要素647と共に、非圧縮のIFM640内に新しい列として格納される。非圧縮のIFM640は、入力メモリ270に格納されることができ、MAC演算のためにPE280にさらに伝送されることができる。図6Cに示されるように、IFM行列620のすべての要素が非圧縮のIFM640に存在しており、非圧縮のIFM640は圧縮されていない。デマルチプレクス動作は必要ではない。
図6Dは、さまざまな実施形態に係る、図6AのIFM行列620の圧縮状態を示している。IFM行列620の圧縮状態は、「圧縮されたIFM650」と称される。圧縮されたIFM行列650は、図2の圧縮モジュール230によって生成され得る。たとえば、圧縮モジュール230は、IFM行列620のストレージフォーマットを変換し、IFM行列620を圧縮する。圧縮プロセスは、0値を有する要素657の除去を含む。上述されるように、圧縮モジュール230は、データをさまざまな圧縮された疎フォーマットに圧縮し得る。図6Dの実施形態では、圧縮されたIFM650は、COOフォーマットを有している。図6Dに示されるように、圧縮されたIFM650内の要素657は、先ずは行インデックス655によってソートされ、次いで列インデックス653によってソートされる。そうした配置は、ランダムアクセス時間を改善することができ、増分行列構築に適している。0値を有する要素657並びにそれらの列インデックスは、図6Dにおいて網掛けされている。各行が少なくとも1つの非0値要素を含むので、行インデックス655はどれも網掛けされていない。
例示的なDL環境
例示的なDL環境
図7は、さまざまな実施形態に係る、DL環境700を示している。DL環境700は、DLサーバ710と、複数のクライアントデバイス720(個々にクライアントデバイス720と称される)とを含んでいる。DLサーバ710は、ネットワーク740を通じてクライアントデバイス720に接続されている。他の実施形態では、DL環境700は、より少ない、より多い、又は異なるコンポーネントを含み得る。
DLサーバ710は、ニューラルネットワークを使用してDLモデルを訓練する。ニューラルネットワークは、人間の脳のように構成されており、ノードとしても知られる人工ニューロンから成る。これらのノードは3つのタイプの層、すなわち、入力層、隠れ層、及び出力層において互いに隣接して積層されている。データは、入力の形態で各ノードに情報を提供する。ノードは、入力をランダムな重みと乗算し、それらを計算し、バイアスを加える。最後に、どのニューロンを発火させるかを決定するために、活性化関数としても知られる非線形関数が適用される。DLサーバ710は、CNN、リカレント・ニューラル・ネットワーク(recurrent neural network、RNN)、敵対的生成ネットワーク(generative adversarial network、GAN)、長期短期記憶ネットワーク(long short term memory network、LSTMN)など、さまざまなタイプのDNNを使用することができる。DLモデルを訓練するプロセスの間、ニューラルネットワークは、特徴を抽出し、物体をグループ化し、有用なデータパターンを発見するために、入力分布内の未知の要素を使用する。DLモデルは、たとえば予測の作成、画像の分類など、さまざまな問題を解決するために使用されることができる。DLサーバ710は、解決される必要がある特定のタイプの問題に固有のDLモデルを構築し得る。DLモデルは、入力を受け取り、特定の問題に対する解を出力するように訓練される。
図7において、DLサーバ710は、DNNシステム750と、データベース760と、ディストリビュータ770とを含んでいる。DNNシステム750は、DNNを訓練する。DNNは、たとえば、自律車両、医療機器、衛星などによって撮像された画像を処理するなど、さまざまな問題を解決するために使用されることができる。一実施形態では、DNNは、入力画像を受け取り、入力画像内の物体の分類を出力する。DNNの一例は、図1と関連して上述されるDNN100である。
データベース760は、DLサーバ710と受信、使用、生成、又はその他の方法で関連付けられたデータを格納する。たとえば、データベース760は、DNNシステム750がDNNを訓練するために使用する訓練データセットを格納する。一実施形態では、訓練データセットは、画像を分類するためにDNNを訓練するために使用されることができる画像ギャラリである。訓練データセットは、クライアントデバイス720から受け取ったデータを含み得る。別の例として、データベース760は、DLサーバ710によって構築されたニューラルネットワークのハイパーパラメータを格納する。
ディストリビュータ770は、DLサーバ710によって生成されたDLモデルをクライアントデバイス720に供給する。いくつかの実施形態では、ディストリビュータ770は、ネットワーク740を通じてクライアントデバイス720からDNNの要求を受け取る。要求は、クライアントデバイス720が解決する必要がある問題の記述を含み得る。要求はまた、クライアントデバイス上の利用可能な計算リソースを記述する情報など、クライアントデバイス720の情報も含み得る。クライアントデバイス720上の利用可能な計算リソースを記述する情報は、ネットワーク帯域幅を示す情報、利用可能なメモリサイズを示す情報、クライアントデバイス720の処理パワーを示す情報などであり得る。一実施形態では、ディストリビュータは、要求に従ってDNNを生成するようにDNNシステム750に命令し得る。DNNシステム750は、問題の記述に基づいてDNNを生成し得る。代替的又は追加的に、DNNシステム750は、クライアントデバイス上の利用可能な計算リソースを記述する情報に基づいてDNNを圧縮し得る。
いくつかの実施形態では、ディストリビュータ770は、クライアントデバイス720からフィードバックを受け取り得る。たとえば、ディストリビュータ770は、クライアントデバイス720から新しい訓練データを受け取り、DNNをさらに訓練するために新しい訓練データをDNNシステム750に送り得る。別の例として、フィードバックは、クライアントデバイス720上の利用可能な計算リソースの更新を含む。ディストリビュータ770は、更新に基づいて異なるDNNをクライアントデバイス720に送り得る。たとえば、クライアントデバイス720の計算リソースが削減されたことを示すフィードバックを受け取った後、ディストリビュータ770は、より小さいサイズのDNNをクライアントデバイス720に送る。
クライアントデバイス720は、ディストリビュータ770からDNNを受け取り、問題を解決するため、たとえば、画像内の物体を分類するために、DNNを適用する。さまざまな実施形態では、クライアントデバイス720は、DNNに画像を入力し、さまざまなアプリケーション、たとえば、視覚的再構成、拡張現実、ロボットの位置認識及びナビゲーション、医療診断、気象予測などのために、DNNの出力を使用する。クライアントデバイス720は、ユーザ入力を受け取り、並びにネットワーク740を経由してデータを伝送及び/又は受信する、ことができる1又は複数の計算デバイスであり得る。一実施形態では、クライアントデバイス720は、デスクトップ又はラップトップコンピュータなど、従来のコンピュータシステムである。代替的に、クライアントデバイス720は、携帯情報端末(personal digital assistant、PDA)、携帯電話、スマートフォン、自律車両、又は別の適切なデバイスなど、コンピュータ機能性を有するデバイスであり得る。クライアントデバイス720は、ネットワーク740を経由して通信するように構成されている。一実施形態では、クライアントデバイス720は、クライアントデバイス720のユーザがDLサーバ710(たとえば、DLサーバ710のディストリビュータ770)とインタラクションすることを可能にするアプリケーションを実行する。クライアントデバイス720は、アプリケーションを通じてディストリビュータ770に、DNNを要求、又はフィードバックを送り得る。たとえば、クライアントデバイス720は、ネットワーク740を経由したクライアントデバイス720とDLサーバ710との間のインタラクションを可能にするために、ブラウザアプリケーションを実行する。別の実施形態では、クライアントデバイス720は、IOS(登録商標)又はANDROID(登録商標)など、クライアントデバイス720のネイティブ・オペレーティング・システム上で実行されるアプリケーション・プログラミング・インタフェース(application programming interface、API)を通じてDLサーバ710とインタラクションする。
一実施形態では、クライアントデバイス720は、スタンドアロンのネットワーク対応デバイスとして動作する統合された計算デバイスである。たとえば、クライアントデバイス720は、ディスプレイ、スピーカ、マイク、カメラ、及び、入力デバイスを含む。別の実施形態では、クライアントデバイス720は、テレビ又は他の外部ディスプレイ及び/又はオーディオ出力システムなどの外部メディアデバイスに連結するための計算デバイスである。この実施形態では、クライアントデバイス720は、無線インタフェース又は有線インタフェース(たとえば、HDMI(登録商標)ケーブル)を経由して外部メディアデバイスに連結し得、それのディスプレイ、スピーカ、マイク、カメラ、及び入力デバイスなどの外部メディアデバイスのさまざまな機能を利用し得る。ここで、クライアントデバイス720は、特にクライアントデバイス720とインタラクションするための専用のソフトウェア、ファームウェア、又はハードウェアを有しない汎用外部メディアデバイスと互換性があるように構成され得る。
ネットワーク740は、DLサーバ710とクライアントデバイス720との間の通信をサポートする。ネットワーク740は、有線通信システム及び/又は無線通信システムの両方を使用して、ローカル・エリア・ネットワーク及び/又はワイド・エリア・ネットワークの任意の組合せを含み得る。一実施形態では、ネットワーク740は、標準的な通信技術及び/又はプロトコルを使用し得る。たとえば、ネットワーク740は、イーサネット(登録商標)、807.11、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(worldwide interoperability for microwave access、WiMAX(登録商標))、3G、4G、符号分割多重アクセス(code division multiple access、CDMA)、デジタル加入者回線(digital subscriber line、DSL)などの技術を使用する通信リンクを含み得る。ネットワーク740を経由して通信するために使用されるネットワーキングプロトコルの例は、マルチプロトコル・ラベル・スイッチング(multiprotocol label switching、MPLS)、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol、TCP/IP)、ハイパーテキスト転送プロトコル(hypertext transport protocol、HTTP)、簡易メール転送プロトコル(simple mail transfer protocol、SMTP)、及びファイル転送プロトコル(file transfer protocol、FTP)を含み得る。ネットワーク740を通じて交換されるデータは、ハイパーテキストマークアップ言語(hypertext markup language、HTML)又は拡張可能マークアップ言語(extensible markup language、XML)など、任意の適切なフォーマットを使用して表され得る。いくつかの実施形態では、ネットワーク740の通信リンクの全部又は一部は、任意の適切な技術を使用して暗号化され得る。
例示的なDNNシステム
例示的なDNNシステム
図8は、さまざまな実施形態に係る、DNNシステム750のブロック図である。DNNシステム750は、画像分類、生物細胞間の関係の学習(たとえば、DNA、タンパク質など)、デバイスのコントロール挙動(たとえば、ロボット、機械など)など、さまざまな問題を解決するために、DNNを訓練及び適用する。DNNシステム750は、インタフェースモジュール810と、訓練モジュール820と、バリデーションモジュール830と、アプリケーションモジュール840と、メモリ860とを含む。他の実施形態では、代替的な構成、異なる又は追加のコンポーネントがDNNシステム750に含まれ得る。さらに、DNNシステム750のコンポーネントに帰属する機能性は、DNNシステム750に含まれる異なるコンポーネント又は異なるシステムによって達成されてもよい。
インタフェースモジュール810は、DNNシステム750と他のシステムとの通信を容易にする。たとえば、インタフェースモジュール810は、DNNを訓練するために使用されることができるデータ又はタスクを実行するためのDNNへの入力を受け取るために、DNNシステム750と外部データベースとの間の通信を確立する。別の例として、インタフェースモジュール810は、DNNを他のシステム、たとえば、タスクを実行するためにDNNを適用するように構成された計算デバイスに供給するために、DNNシステム750をサポートする。
訓練モジュール820は、訓練データセットを使用してDNNを訓練する。訓練モジュール820は、訓練データセットを形成する。訓練データセットの一例は、訓練物体及び訓練ラベルを含む。訓練ラベルは、対応する訓練物体のグランドトゥルースを記述する。いくつかの実施形態では、最初にDNNを訓練するために訓練データセットの一部が使用され得、訓練データセットの残りは、訓練済みDNNをバリデーションするためのバリデーションサブセットとしてバリデーションモジュール830によって保留され得る。
訓練モジュール820はまた、DNNを訓練するためのハイパーパラメータも決定する。ハイパーパラメータは、DNN訓練プロセスを指定する変数である。いくつかの実施形態では、ハイパーパラメータは、隠れ層の数など、DNNのアーキテクチャを決定する変数を含む。ハイパーパラメータはまた、バッチサイズ、エポック数など、DNNがどのように訓練されるかを決定する変数を含む。バッチサイズは、DNNのパラメータを更新する前にこなすべき訓練サンプルの数を定義する。バッチサイズは、訓練データセット内のサンプル数と同じか又はそれよりも小さい。訓練データセットは、1又は複数のバッチに分割されることができる。エポック数は、訓練データセット全体がネットワーク全体を通じてフォアワード及びバックワードに何回パスされるかを定義する。エポックは、1又は複数のバッチを含み得る。エポック数は、10、100、500、1000、又はそれ以上であり得る。ハイパーパラメータは、DNN内部のパラメータ(たとえば、フィルタの重み)とは異なる。
訓練モジュール820は、たとえばハイパーパラメータのいくつかに基づいて、DNNのアーキテクチャを定義する。DNNのアーキテクチャは、入力層と、出力層と、複数の隠れ層とを含む。訓練モジュール820は、訓練データセットをDNNに入力し、生成された訓練物体のラベルと訓練ラベルとの間の誤差を最小にするようにDNN内のパラメータを修正する。パラメータは、DNNの畳み込み層内のフィルタの重みを含む。いくつかの実施形態では、訓練モジュール820は、誤差を最小化するためにコスト関数を使用する。訓練モジュール820が所定数のエポックを終了した後、訓練モジュール820は、DNN内のパラメータの更新を停止し得る。更新されたパラメータを有するDNNは、訓練済みDNNと称される。
バリデーションモジュール830は、訓練済みDNNの精度を検証する。いくつかの実施形態では、バリデーションモジュール830は、バリデーションデータセット内のサンプルをDNNに入力し、モデル精度を決定するためにDNNの出力を使用する。いくつかの実施形態では、バリデーションデータセットは、訓練データセット内のいくつか又はすべてのサンプルから形成され得る。追加的又は代替的に、バリデーションデータセットは、訓練セット内のサンプル以外に追加のサンプルを含む。いくつかの実施形態では、バリデーションモジュール830は、DNNの適合率(precision)、再現率(recall)、又は適合率と再現率との組合せを測定する精度スコアを決定し得る。バリデーションモジュール830は、精度スコアを決定するために以下のメトリックを使用し得、すなわち、適合率=TP/(TP+FP)及び再現率=TP/(TP+FN)であり、適合率は、予測した総数(TP+FP又は偽陽性)のうちの参照分類モデルが正しく予測した数(TP又は真陽性)であり得、再現率は、当該の特性をまさに有していた物体の総数(TP+FN又は偽陰性)のうちの参照分類モデルが正しく予測した数(TP)であり得る。F値(F値=2*PR/(P+R))は、適合率と再現率とを単一の尺度に統合する。
バリデーションモジュール830は、精度スコアを閾値スコアと比較し得る。一例では拡張モデルの精度スコアが閾値スコアよりも低いとバリデーションモジュール830が決定した一例では、バリデーションモジュール830は、DNNを再訓練するように訓練モジュール820に命令する。一実施形態では、訓練モジュール820は、DNNが十分に正確であり得るという精度測定指示、又は行われた訓練ラウンドの数など、停止条件の発生までDNNを反復的に再訓練し得る。
アプリケーションモジュール840は、タスクを実行するために、訓練済みDNNを適用する。たとえば、アプリケーションモジュール840は、DNNに画像を入力する。DNNは、画像内の物体の分類を出力する。一例として、DNNは、セキュリティカメラによって撮像された画像内の悪意のある又は危険な物体を検出するためにセキュリティ設定でプロビジョニングされ得る。別の例として、DNNは、自律車両のカメラによって撮像された画像内の物体(たとえば、道路標識、危険物、人間、ペットなど)を検出するようにプロビジョニングされ得る。DNNへの入力は、訓練データセットがDNNに提供された方法を反映する所定の入力構造に従ってフォーマットされ得る。DNNは、たとえば、画像の分類、検出された物体のリスト、検出された物体の境界、などであり得る出力構造を生成し得る。いくつかの実施形態では、アプリケーションモジュール840は、他のシステムがタスクを実行するためにDNNを適用するために、DNNを他のシステム、たとえば、DNNシステム750と通信する計算デバイスに供給する。
図8において、アプリケーションモジュール840は、乗算コントロールモジュール850を含んでいる。乗算コントロールモジュール850は、DNNにおける行列計算をコントロールする。乗算コントロールモジュール850の一実施形態は、図2の乗算コントローラ255である。いくつかの実施形態では、乗算コントロールモジュール850は、重みの値に基づいてDNNにおいて行列計算が実行されるかどうか、又はいつ実行されるかを決定する。たとえば、乗算コントロールモジュール850は、DNNの層の重み行列を格納するWRAMから重み行列を読み出す。乗算コントロールモジュール850は、重み行列の行を特定し、その行内の重みの値に基づいて、行値を決定する。たとえば、乗算コントロールモジュール850は、行が非0値の重みを有するかどうかを決定する。行が非0値の重みを有すると決定したことに応答して、乗算コントロールモジュール850は、行値が1であると決定する。そうでない場合、乗算コントロールモジュール850は、行値が0であると決定する。乗算コントロールモジュール850は、行値を一時的に格納するバッファ、たとえばバッファ260に行値を送り得る。行値は、DNN層内のPEがMAC演算のために重み及び入力データを受け取るかどうかをコントロールするために使用される。
いくつかの実施形態では、行値は2つのスイッチに送られる。第1のスイッチは、行値1を受け取った後、行値に対応する行内の重みを読み出すために、WRAMに読み出し要求を送る。ただし、行値が0である実施形態では、第1のスイッチはWRAMにいかなる読み出し要求も送らない。第2のスイッチは、行値1を受け取った後、DNN層内のIRAMからPEへの間にデータ伝送経路を形成する。データ伝送経路は、広い帯域幅を通じてIRAMをPEに接続するバスを含み得る。いくつかの実施形態では、第2のスイッチは、1の値の行値によってトリガされると、データ伝送バスを形成するために閉じる。IRAMは、DNN層のIFM行列を格納する。IFM行列のデータ(「入力データ」)は、データ伝送経路を通じてPEに送られることができる。IRAMはまた、入力データ及び重みの両方がデータ伝送経路を通じてPEに伝送されることができるように、WRAMから読み出された重みも格納し得る。
重み及び入力データの読み出し及び伝送をコントロールすることによって、乗算コントロールモジュール850は、行値が0である、すなわち、行内のすべての重みが0値であるシナリオにおいて、PEがMAC演算を実行することを防止する。このように、乗算コントロールモジュール850は、DNN層の効率を向上させる。さらに、乗算コントロールモジュール850及びスイッチがWRAM及びIRAMの近くにあるので、乗算コントロールモジュール850、WRAM、IRAM、及びPEの間のデータ移動が最小限に抑えられることができ、時間及び計算リソースの消費も最小限に抑えられることができることを意味する。
メモリ860は、DNNシステム750と受信、生成、使用、又はその他の方法で関連付けられたデータを格納する。たとえば、メモリ860は、訓練モジュール820及びバリデーションモジュール830によって使用されるデータセットを格納する。メモリ860はまた、DNNを訓練するためのハイパーパラメータ、DNNを圧縮するためのアルゴリズムなど、訓練モジュール820、バリデーションモジュール830、及びアプリケーションモジュール840によって生成されたデータも格納し得る。メモリ860は、訓練モジュール820によって生成されたDNNの内部パラメータをさらに格納し得る。図8の実施形態では、メモリ860はDNNシステム750のコンポーネントである。他の実施形態では、メモリ860は、DNNシステム750の外部にあり得、ネットワークを通じてDNNシステム750と通信し得る。
DNN層をアクセラレーションする例示的な方法
DNN層をアクセラレーションする例示的な方法
図9は、さまざまな実施形態に係る、DNNにおける疎行列計算をコントロールする方法を示すフローチャートである。方法900は、図8に関連して上述される乗算コントロールモジュール850によって実行され得る。方法900は、図9に示されるフローチャートを参照しつつ説明されるが、ディープラーニングにおいて疎行列計算をコントロールするための多くの他の方法が代替的に使用されてもよい。たとえば、図9のステップの実行順序は変更されてもよい。別の例として、ステップのいくつかが、変更、排除、又は組み合わされ得る。
乗算コントロールモジュール850は、RAMから重み行列にアクセスする(910)。いくつかの実施形態では、乗算コントロールモジュール850は、狭い帯域幅を通じてRAMから重み行列にアクセスする。重み行列は、複数の行を含む。乗算コントロールモジュール850は、重み行列の行を特定する(920)。行は、複数の重みを含む。
乗算コントロールモジュール850は、複数の重みのうちの重みが非0値を有するかどうかを決定する(930)。重みが非0値を有すると決定したことに応答して、乗算コントロールモジュール850は、その行についての行値が1であると決定する(940)。乗算コントロールモジュール850は、行値を格納するように構成されたバッファに行値をさらに送る(950)。行値は、RAMからの複数の重みの読み出しを可能にするために使用される。
行値は、追加のRAMとPEとの間のデータ伝送経路を形成するためにさらに使用されることができる。データ伝送経路は、広い帯域幅を有し得る。追加のRAMは、入力データを格納するように構成されている。PEは、入力データ及び複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている。RAMから読み出された複数の重みは、追加のRAMに伝送され得る。
いくつかの実施形態では、乗算コントロールモジュール850はまた、重み行列の追加の行も特定する。追加の行は追加の重みを含む。乗算コントロールモジュール850は、追加の重みのいずれかが非0値を有するかどうかを決定する。追加の重みのいずれも非0値を有しないと決定することに応答して、乗算コントロールモジュール850は、追加の行についての追加の行値が0であると決定する。乗算コントロールモジュール850は、追加の行値をバッファに送る。追加の行値は、RAMからの追加の重みの読み出しを防止するために使用される。
例示的な計算デバイス
例示的な計算デバイス
図10は、さまざまな実施形態に係る、DNNシステム750として使用するための一例示的な計算システムのブロック図である。計算システム1000に含まれるようにいくつかのコンポーネントが図10に示されているが、これらのコンポーネントのうちいずれの1又は複数も、アプリケーションに適するように省略又は複製され得る。いくつかの実施形態では、計算システム1000に含まれるコンポーネントのいくつか又は全部は、1又は複数のマザーボードに取り付けられ得る。いくつかの実施形態では、これらのコンポーネントのいくつか又は全部は、単一のシステムオンチップ(system on a chip、SoC)ダイ上に製造される。さらに、さまざまな実施形態において、計算システム1000は、図10に示されるコンポーネントのうち1又は複数を含まない場合があるが、計算システム1000は、1又は複数のコンポーネントに連結するためのインタフェース回路を含み得る。たとえば、計算システム1000は、ディスプレイデバイス1006を含まない場合があるが、ディスプレイデバイス1006が連結され得るディスプレイ・デバイス・インタフェース回路(たとえば、コネクタ及びドライバ回路)を含み得る。別のセットの例では、計算システム1000は、オーディオ入力デバイス1018又はオーディオ出力デバイス1008を含まない場合があるが、オーディオ入力デバイス1018又はオーディオ出力デバイス1008が連結され得るオーディオ入力又は出力デバイスインタフェース回路(たとえば、コネクタ及びサポート回路)を含み得る。
計算システム1000は、処理デバイス1002(たとえば、1又は複数の処理デバイス)を含み得る。本明細書で使用される場合、「処理デバイス」又は「プロセッサ」という用語は、電子データをレジスタ及び/又はメモリに格納され得る他の電子データに変換するために、レジスタ及び/又はメモリからの当該の電子データを処理する、任意のデバイス又はデバイスの一部を指し得る。処理デバイス1002は、1又は複数のデジタル・シグナル・プロセッサ(digital signal processor、DSP)、特定用途向けIC(application-specific IC、ASIC)、CPU、GPU、暗号プロセッサ(ハードウェア内で暗号アルゴリズムを実行する専用プロセッサ)、サーバプロセッサ、又は任意の他の適切な処理デバイスを含み得る。計算システム1000は、それ自体が揮発性メモリ(たとえば、DRAM)、不揮発性メモリ(たとえば、読み出し専用メモリ(read-only memory(ROM))、フラッシュメモリ、ソリッドステートメモリ、及び/又はハードドライブなどの1又は複数のメモリデバイスを含み得るメモリ1004を含み得る。いくつかの実施形態では、メモリ1004は、処理デバイス1002とダイを共有するメモリを含み得る。いくつかの実施形態では、メモリ1004は、ディープラーニングにおいて疎行列計算をアクセラレーションするための動作を実行するように実行可能な命令を格納する1又は複数の非一時的コンピュータ可読媒体を含む。1又は複数の非一時的コンピュータ可読媒体に格納された命令は、処理デバイス1002によって実行され得る。
いくつかの実施形態では、計算システム1000は、通信チップ1012(たとえば、1又は複数の通信チップ)を含み得る。たとえば、通信チップ1012は、計算システム1000へ、及びそこからのデータの転送のための無線通信を管理するために構成され得る。「無線」という用語及びその派生語は、非固体媒体を通じて変調された電磁放射線の使用によってデータを通信し得る回路、デバイス、システム、方法、技術、通信チャネルなどを説明するために使用され得る。この用語は、関連するデバイスがワイヤを一切含まないことを暗示するものではないが、いくつかの実施形態では含まない場合もある。
通信チップ1012は、Wi-Fi(登録商標)(IEEE 802.10ファミリ)、IEEE 802.16規格(たとえば、IEEE 802.16-2005追補)、一切の追補、更新、及び/又は改訂(たとえば、アドバンストLTEプロジェクト、ウルトラモバイルブロードバンド(ultramobile broadband(UMB)プロジェクト(「3GPP(登録商標)2」とも称される)など)と共にロングタームエボリューション(Long-Term-Evolution、LTE)プロジェクトを含む、電気電子技術者協会(Electrical and Electronic Engineers、IEEE)規格を含むがこれらには限定されない、いくつかの無線規格又はプロトコルのいずれかを実施し得る。IEEE 802.16互換性のある広帯域無線アクセス(Broadband Wireless Access、BWA)ネットワークは、WiMAXネットワークと一般に称され、WiMAX(登録商標)ネットワークは、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(worldwide interoperability for microwave access)を表す頭字語であり、IEEE 802.16規格の適合性及び相互運用性試験に合格した製品の認証マークである。通信チップ1012は、移動通信用グローバルシステム(Global System for Mobile Communication、GSM(登録商標))、汎用パケット無線サービス(General Packet Radio Service、GPRS)、ユニバーサル移動体通信システム(Universal Mobile Telecommunications、UMTS)、高速パケットアクセス(High Speed Packet Access、HSPA)、進化型HSPA(E-HSPA)、又はLTEネットワークに従って動作し得る。通信チップ1012は、GSM(登録商標)進化型拡張データ(Enhanced Data for GSM Evolution、EDGE)、GSM EDGE無線アクセスネットワーク(GSM EDGE Radio Access Network、GERAN)、ユニバーサル地上無線アクセスネットワーク(Universal Terrestrial Radio Access Network、UTRAN)、又は進化型UTRAN(Evolved UTRAN、E-UTRAN)に従って動作し得る。通信チップ1012は、CDMA、時分割多重アクセス(Time Division Multiple Access、TDMA)、デジタル拡張コードレス通信(Digital Enhanced Cordless Telecommunications、DECT)、進化データ最適化(Evolution-Data Optimized、EV-DO)、及びこれらの派生物、並びに3G、4G、5G及びそれ以降として指定された任意の他の無線プロトコルに従って動作し得る。通信チップ1012は、他の実施形態では、他の無線プロトコルに従って動作し得る。計算システム1000は、無線通信を容易にするため、及び/又は他の無線通信(AM又はFM無線伝送など)を受信するためにアンテナ1022を含み得る。
いくつかの実施形態では、通信チップ1012は、電気、光、又は任意の他の適切な通信プロトコル(たとえば、イーサネット(登録商標))など、有線通信を管理し得る。上述のように、通信チップ1012は、複数の通信チップを含み得る。たとえば、第1の通信チップ1012は、Wi-Fi(登録商標)又はBluetooth(登録商標)などのより短距離の無線通信専用であり得、第2の通信チップ1012は、全地球測位システム(global positioning system、GPS)、EDGE、GPRS、CDMA、WiMAX(登録商標)、LTE、EV-DOなどのより長距離の無線通信専用であり得る。いくつかの実施形態では、第1の通信チップ1012は無線通信専用であり得、第2の通信チップ1012は有線通信専用であり得る。
計算システム1000は、バッテリ/電源回路1014を含み得る。バッテリ/電源回路1014は、1又は複数のエネルギー貯蔵デバイス(たとえば、バッテリ又はコンデンサ)、及び/又は計算システム1000のコンポーネントを計算システム1000とは別のエネルギー源(たとえば、ACライン電源)に連結するための回路を含み得る。
計算システム1000は、ディスプレイデバイス1006(又は、上述のように、対応するインタフェース回路)を含み得る。ディスプレイデバイス1006は、たとえば、ヘッドアップディスプレイ、コンピュータモニタ、プロジェクタ、タッチスクリーンディスプレイ、液晶ディスプレイ(LCD)、発光ダイオードディスプレイ、フラットパネルディスプレイなど、任意の視覚的インジケータを含み得る。
計算システム1000は、オーディオ出力デバイス1008(又は、上述のように、対応するインタフェース回路)を含み得る。オーディオ出力デバイス1008は、たとえば、スピーカ、ヘッドセット、又はイヤホンなど、可聴インジケータを生成する任意のデバイスを含み得る。
計算システム1000は、オーディオ入力デバイス1018(又は、上述のように、対応するインタフェース回路)を含み得る。オーディオ入力デバイス1018は、マイク、マイクアレイ、又はデジタル機器(たとえば、電子楽器デジタルインタフェース(musical instrument digital interface、MIDI)出力を有する機器)など、音を表す信号を生成する任意のデバイスを含み得る。
計算システム1000は、GPSデバイス1016(又は、上述のように、対応するインタフェース回路)を含み得る。GPSデバイス1016は、衛星ベースのシステムと通信し得、当技術分野で知られているように、計算システム1000の位置を受信し得る。
計算システム1000は、他の出力デバイス1010(又は、上述のように、対応するインタフェース回路)を含み得る。他の出力デバイス1010の例は、オーディオコーデック、ビデオコーデック、プリンタ、他のデバイスに情報を提供するための有線若しくは無線トランスミッタ、又は追加のストレージデバイスを含み得る。
計算システム1000は、他の入力デバイス1020(又は、上述のように、対応するインタフェース回路)を含み得る。他の入力デバイス1020の例は、加速度計、ジャイロスコープ、コンパス、画像撮像デバイス、キーボード、マウスなどのカーソル・コントロール・デバイス、スタイラス、タッチパッド、バー・コード・リーダ、クイック・レスポンス(QR)・コード・リーダ、任意のセンサ、又は無線周波数識別(レジスタfileID)リーダを含み得る。
計算システム1000は、ハンドヘルド若しくはモバイル計算システム(たとえば、携帯電話、スマートフォン、モバイル・インターネット・デバイス、音楽プレーヤ、タブレットコンピュータ、ラップトップコンピュータ、ネットブックコンピュータ、ウルトラブックコンピュータ、PDA、ウルトラモバイル・パーソナル・コンピュータなど)、デスクトップ計算システム、サーバ若しくは他のネットワーク化された計算コンポーネント、プリンタ、スキャナ、モニタ、セットトップボックス、エンターテイメント・コントロール・ユニット、車両コントロールユニット、デジタルカメラ、デジタル・ビデオ・レコーダ、又はウェアラブル計算システムなど、任意の所望のフォームファクタを有し得る。いくつかの実施形態では、計算システム1000は、データを処理する任意の他の電子デバイスであり得る。
選択された実施例
選択された実施例
実施例1は、ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための装置であって、乗算コントローラであって、重み行列であって、複数の行を含む重み行列にアクセスし、複数の行のそれぞれの行毎に、それぞれの行内の重みの値に基づいて、行値を決定するように構成された乗算コントローラと、乗算コントローラによって決定された行値を格納するように構成されたバッファと、行値によってコントロールされる1又は複数のスイッチであって、重み行列と関連付けられた読み出し及び伝送動作をコントロールするように構成された、1又は複数のスイッチと、重み行列に基づいて乗算演算及び積算演算を実行するように構成された処理要素とを備える、装置を提供する。
実施例2は、乗算コントローラが、それぞれの行内の重みの値が非0値を含むかどうか決定すること、及びそれぞれの行内の重みの値が非0値を含むと決定することに応答して、行値が1に等しいと決定することによって、複数の行のそれぞれの行毎に、それぞれの行内の重みの値に基づいて、行値を決定するように構成されている、実施例1に記載の装置を提供する。
実施例3は、乗算コントローラがさらに、それぞれの行内の重みの値が非0値を含まないと決定することに応答して、行値が0に等しいと決定することによって、複数の行のそれぞれの行毎に、それぞれの行内の重みの値に基づいて、行値を決定するように構成されている、実施例2に記載の装置を提供する。
実施例4は、重み行列を格納するランダムアクセスメモリをさらに備える、実施例1に記載の装置を提供する。
実施例5は、乗算コントローラが、狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスするように構成されている、実施例4に記載の装置を提供する。
実施例6は、1又は複数のスイッチが、重み行列に関連付けられた読み出し及び伝送動作を、バッファから行値にアクセスすること、行値が1に等しいかどうかを決定すること、及び行値が1に等しいと決定したことに応答して、行値に対応する行内の重みを読み出すためにランダムアクセスメモリに読み出し要求を送ることによってコントロールするように構成されている、実施例4に記載の装置を提供する。
実施例7は、DNN層の入力データを格納するランダムアクセスメモリと、ランダムアクセスメモリを処理要素に接続するように構成されたバスであって、1又は複数のスイッチのうちのスイッチによってコントロールされる、バスとをさらに備える、実施例1に記載の装置を提供する。
実施例8は、スイッチが、バッファから行値にアクセスし、行値が1に等しいかどうかを決定し、行値が1に等しいと決定することに応答して、ランダムアクセスメモリから処理要素に入力データを伝送するために、ランダムアクセスメモリを処理要素に接続するようにバスをコントロールするように構成されている、実施例7に記載の装置を提供する。
実施例9は、入力データが、広い帯域幅を通じてランダムアクセスメモリから処理要素に伝送される、実施例8に記載の装置を提供する。
実施例10は、処理要素が、乗算演算を実行するように構成された乗算器と、積算演算を実行するように構成された積算器であって、積算器の積算演算は、乗算器の出力と別の積算器の出力とを積算することを含む、積算器とを有する、実施例1に記載の装置を提供する。
実施例11は、処理要素が、乗算器及び積算器に連結されたデマルチプレクサであって、乗算器の出力に対してデマルチプレクス動作を実行するように構成されており、デマルチプレクス動作は、0の値を有する要素を乗算器の出力に追加することを含む、デマルチプレクサをさらに有する、実施例10に記載の装置を提供する。
実施例12は、乗算器のうちのそれぞれの乗算器が、積算器のうちの異なる積算器にそれぞれ対応し、デマルチプレクサは、それぞれの乗算器の出力に対するデマルチプレクス動作の結果を対応する積算器に送るようにさらに構成されている、実施例11に記載の装置を提供する。
実施例13は、DNN層の入力特徴マップ行列を圧縮することによって入力データを生成する圧縮モジュールをさらに備え、乗算器は、入力データに対して乗算演算を実行するように構成されている、実施例11に記載の装置を提供する。
実施例14は、ディープラーニングにおける疎行列計算をコントロールするための方法であって、ランダムアクセスメモリから重み行列にアクセスする段階であって、重み行列は複数の行を含む、アクセスする段階と、重み行列の行を特定する段階であって、行は複数の重みを含む、特定する段階と、複数の重みのうちの重みが非0値を有するかどうか決定する段階と、重みが非0値を有すると決定したことに応答して、行についての行値が1であると決定する段階と、行値を格納するように構成されたバッファに行値を送る段階であって、行値は、ランダムアクセスメモリからの複数の重みの読み出しを可能にするために使用される、送る段階とを含む、方法を提供する。
実施例15は、重み行列の追加の行を特定する段階であって、追加の行は追加の重みを含む、特定する段階と、追加の重みのいずれかが非0値を有するかどうか決定する段階と、追加の重みのいずれも非0値を有さないと決定したことに応答して、追加の行についての追加の行値が0であると決定する段階と、追加の行値をバッファに送る段階であって、追加の行値は、ランダムアクセスメモリからの追加の重みの読み出しを防止するために使用される、送る段階とをさらに含む、実施例14に記載の方法を提供する。
実施例16は、ランダムアクセスメモリから重み行列にアクセスする段階が、狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスする段階を含む、実施例14に記載の方法を提供する。
実施例17は、行値が、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、ランダムアクセスメモリは、入力データを格納するように構成されており、処理要素は、入力データ及び複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、実施例14に記載の方法を提供する。
実施例18は、ランダムアクセスメモリから読み出された複数の重みが、追加のランダムアクセスメモリに伝送される、実施例17に記載の方法を提供する。
実施例19は、データ伝送経路が広い帯域幅を有する、実施例17に記載の方法を提供する。
実施例20は、ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための動作を実行するように実行可能な命令を格納する1又は複数の非一時的コンピュータ可読媒体であって、動作が、ランダムアクセスメモリから重み行列にアクセスする手順であって、重み行列は複数の行を含む、アクセスする手順と、重み行列の行を特定する手順であって、行は複数の重みを含む、特定する手順と、複数の重みのうちの重みが非0値を有するかどうか決定する手順と、重みが非0値を有すると決定したことに応答して、行についての行値が1であると決定する手順と、行値を格納するように構成されたバッファに行値を送る手順であって、行値は、ランダムアクセスメモリからの複数の重みの読み出しを可能にするために使用される、送る手順とを含む、1又は複数の非一時的コンピュータ可読媒体を提供する。
実施例21は、動作が、重み行列の追加の行を特定することであって、追加の行は追加の重みを含む、特定する手順と、追加の重みのいずれかが非0値を有するかどうか決定する手順と、追加の重みのいずれも非0値を有さないと決定したことに応答して、追加の行についての追加の行値が0であると決定する手順と、追加の行値をバッファに送る手順であって、追加の行値は、ランダムアクセスメモリからの追加の重みの読み出しを防止するために使用される、送る手順とをさらに含む、実施例20に記載の1又は複数の非一時的コンピュータ可読媒体を提供する。
実施例22は、ランダムアクセスメモリから重み行列にアクセスすることが、狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスすることを含む、実施例20に記載の1又は複数の非一時的コンピュータ可読媒体を提供する。
実施例23は、行値が、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、ランダムアクセスメモリは、入力データを格納するように構成されており、処理要素は、入力データ及び複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、実施例20に記載の1又は複数の非一時的コンピュータ可読媒体を提供する。
実施例24は、ランダムアクセスメモリから読み出された複数の重みが、追加のランダムアクセスメモリに伝送される、実施例23に記載の1又は複数の非一時的コンピュータ可読媒体を提供する。
実施例25は、データ伝送経路が広い帯域幅を有する、実施例23に記載の1又は複数の非一時的コンピュータ可読媒体を提供する。
本開示の例示された実施態様の上記の記述は、網羅的であること、又は本開示を開示された形態そのものに限定することを意図するものではない。本開示の具体的な実施態様及び実施例は、例示目的で本明細書に説明されているが、関連する技術における当業者が認識するであろうように、本開示の範囲内でさまざまな同等の修正が可能である。これらの修正は、上記の詳細な記述を考慮して本開示に対して行われ得る。
[他の可能な項目]
[項目1]
ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための装置であって、
重み行列にアクセスし、前記重み行列は複数の行を含み、及び
前記複数の行のそれぞれの行毎に、前記それぞれの行内の重みの値に基づいて、行値を決定する、
ように構成された乗算コントローラと、
前記乗算コントローラによって決定された前記行値を格納するように構成されたバッファと、
前記行値によってコントロールされる1又は複数のスイッチであって、前記重み行列と関連付けられた読み出し及び伝送動作をコントロールするように構成された、1又は複数のスイッチと、
前記重み行列に基づいて乗算演算及び積算演算を実行するように構成された処理要素と
を備える、装置。
[項目2]
前記乗算コントローラは、
前記それぞれの行内の前記重みの前記値が非0値を含むかどうか決定すること、及び
前記それぞれの行内の前記重みの前記値が非0値を含むと決定することに応答して、前記行値が1に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、項目1に記載の装置。
[項目3]
前記乗算コントローラはさらに、
前記それぞれの行内の前記重みの前記値が非0値を含まないと決定することに応答して、前記行値が0に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、項目2に記載の装置。
[項目4]
前記重み行列を格納するランダムアクセスメモリをさらに備える、項目1に記載の装置。
[項目5]
前記乗算コントローラは、狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスするように構成されている、項目4に記載の装置。
[項目6]
前記1又は複数のスイッチは、
前記バッファから行値にアクセスすること、
前記行値が1に等しいかどうかを決定すること、及び
前記行値が1に等しいと決定したことに応答して、前記行値に対応する前記行内の前記重みを読み出すために前記ランダムアクセスメモリに読み出し要求を送ること
によって、前記重み行列に関連付けられた前記読み出し及び伝送動作をコントロールするように構成されている、項目4に記載の装置。
[項目7]
前記DNN層の入力データを格納するランダムアクセスメモリと、
前記ランダムアクセスメモリを前記処理要素に接続するように構成されたバスであって、前記1又は複数のスイッチのうちのスイッチによってコントロールされる、バスと
をさらに備える、項目1に記載の装置。
[項目8]
前記スイッチは、
前記バッファから行値にアクセスし、
前記行値が1に等しいかどうかを決定し、
前記行値が1に等しいと決定することに応答して、前記ランダムアクセスメモリから前記処理要素に前記入力データを伝送するために、前記ランダムアクセスメモリを前記処理要素に接続するように前記バスをコントロールする
ように構成されている、項目7に記載の装置。
[項目9]
前記入力データは、広い帯域幅を通じて前記ランダムアクセスメモリから前記処理要素に伝送される、項目8に記載の装置。
[項目10]
前記処理要素は、
前記乗算演算を実行するように構成された乗算器と、
前記積算演算を実行するように構成された積算器であって、積算器の積算演算は、乗算器の出力と別の積算器の出力とを積算することを含む、積算器と
を有する、項目1に記載の装置。
[項目11]
前記処理要素は、
前記乗算器及び積算器に連結されたデマルチプレクサであって、前記乗算器の出力に対してデマルチプレクス動作を実行するように構成されており、デマルチプレクス動作は、0の値を有する要素を乗算器の出力に追加することを含む、デマルチプレクサ
をさらに有する、項目10に記載の装置。
[項目12]
前記乗算器のうちのそれぞれの乗算器は、前記積算器のうちの異なる積算器にそれぞれ対応し、前記デマルチプレクサは、前記それぞれの乗算器の出力に対するデマルチプレクス動作の結果を前記対応する積算器に送るようにさらに構成されている、項目11に記載の装置。
[項目13]
前記DNN層の入力特徴マップ行列を圧縮することによって入力データを生成する圧縮モジュールをさらに備え、
前記乗算器は、前記入力データに対して前記乗算演算を実行するように構成されている、項目11に記載の装置。
[項目14]
ディープラーニングにおける疎行列計算をコントロールするための方法であって、
ランダムアクセスメモリから重み行列にアクセスする段階であって、前記重み行列は複数の行を含む、アクセスする段階と、
前記重み行列の行を特定する段階であって、前記行は複数の重みを含む、特定する段階と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する段階と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する段階と、
前記行値を格納するように構成されたバッファに前記行値を送る段階であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る段階と
を含む、方法。
[項目15]
前記重み行列の追加の行を特定する段階であって、前記追加の行は追加の重みを含む、特定する段階と、
前記追加の重みのいずれかが非0値を有するかどうか決定する段階と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する段階と、
前記追加の行値を前記バッファに送る段階であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る段階と
をさらに含む、項目14に記載の方法。
[項目16]
前記ランダムアクセスメモリから前記重み行列にアクセスする段階は、
狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスする段階
を含む、項目14に記載の方法。
[項目17]
前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記ランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、項目14に記載の方法。
[項目18]
前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、項目17に記載の方法。
[項目19]
前記データ伝送経路は広い帯域幅を有する、項目17に記載の方法。
[項目20]
ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための動作を実行するように実行可能な命令を格納する1又は複数の非一時的コンピュータ可読媒体であって、前記動作は、
ランダムアクセスメモリから重み行列にアクセスする手順であって、前記重み行列は複数の行を含む、アクセスする手順と、
前記重み行列の行を特定する手順であって、前記行は複数の重みを含む、特定する手順と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する手順と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する手順と、
前記行値を格納するように構成されたバッファに前記行値を送る手順であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る手順と
を含む、1又は複数の非一時的コンピュータ可読媒体。
[項目21]
前記動作は、
前記重み行列の追加の行を特定する手順であって、前記追加の行は追加の重みを含む、特定する手順と、
前記追加の重みのいずれかが非0値を有するかどうか決定する手順と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する手順と、
前記追加の行値を前記バッファに送る手順であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る手順と
をさらに含む、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目22]
ランダムアクセスメモリから重み行列にアクセスする手順は、
狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスする手順
を含む、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目23]
前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記ランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目24]
前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、項目23に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目25]
前記データ伝送経路は広い帯域幅を有する、項目23に記載の1又は複数の非一時的コンピュータ可読媒体。
[他の可能な項目]
[項目1]
ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための装置であって、
重み行列にアクセスし、前記重み行列は複数の行を含み、及び
前記複数の行のそれぞれの行毎に、前記それぞれの行内の重みの値に基づいて、行値を決定する、
ように構成された乗算コントローラと、
前記乗算コントローラによって決定された前記行値を格納するように構成されたバッファと、
前記行値によってコントロールされる1又は複数のスイッチであって、前記重み行列と関連付けられた読み出し及び伝送動作をコントロールするように構成された、1又は複数のスイッチと、
前記重み行列に基づいて乗算演算及び積算演算を実行するように構成された処理要素と
を備える、装置。
[項目2]
前記乗算コントローラは、
前記それぞれの行内の前記重みの前記値が非0値を含むかどうか決定すること、及び
前記それぞれの行内の前記重みの前記値が非0値を含むと決定することに応答して、前記行値が1に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、項目1に記載の装置。
[項目3]
前記乗算コントローラはさらに、
前記それぞれの行内の前記重みの前記値が非0値を含まないと決定することに応答して、前記行値が0に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、項目2に記載の装置。
[項目4]
前記重み行列を格納するランダムアクセスメモリをさらに備える、項目1に記載の装置。
[項目5]
前記乗算コントローラは、狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスするように構成されている、項目4に記載の装置。
[項目6]
前記1又は複数のスイッチは、
前記バッファから行値にアクセスすること、
前記行値が1に等しいかどうかを決定すること、及び
前記行値が1に等しいと決定したことに応答して、前記行値に対応する前記行内の前記重みを読み出すために前記ランダムアクセスメモリに読み出し要求を送ること
によって、前記重み行列に関連付けられた前記読み出し及び伝送動作をコントロールするように構成されている、項目4に記載の装置。
[項目7]
前記DNN層の入力データを格納するランダムアクセスメモリと、
前記ランダムアクセスメモリを前記処理要素に接続するように構成されたバスであって、前記1又は複数のスイッチのうちのスイッチによってコントロールされる、バスと
をさらに備える、項目1に記載の装置。
[項目8]
前記スイッチは、
前記バッファから行値にアクセスし、
前記行値が1に等しいかどうかを決定し、
前記行値が1に等しいと決定することに応答して、前記ランダムアクセスメモリから前記処理要素に前記入力データを伝送するために、前記ランダムアクセスメモリを前記処理要素に接続するように前記バスをコントロールする
ように構成されている、項目7に記載の装置。
[項目9]
前記入力データは、広い帯域幅を通じて前記ランダムアクセスメモリから前記処理要素に伝送される、項目8に記載の装置。
[項目10]
前記処理要素は、
前記乗算演算を実行するように構成された乗算器と、
前記積算演算を実行するように構成された積算器であって、積算器の積算演算は、乗算器の出力と別の積算器の出力とを積算することを含む、積算器と
を有する、項目1に記載の装置。
[項目11]
前記処理要素は、
前記乗算器及び積算器に連結されたデマルチプレクサであって、前記乗算器の出力に対してデマルチプレクス動作を実行するように構成されており、デマルチプレクス動作は、0の値を有する要素を乗算器の出力に追加することを含む、デマルチプレクサ
をさらに有する、項目10に記載の装置。
[項目12]
前記乗算器のうちのそれぞれの乗算器は、前記積算器のうちの異なる積算器にそれぞれ対応し、前記デマルチプレクサは、前記それぞれの乗算器の出力に対するデマルチプレクス動作の結果を前記対応する積算器に送るようにさらに構成されている、項目11に記載の装置。
[項目13]
前記DNN層の入力特徴マップ行列を圧縮することによって入力データを生成する圧縮モジュールをさらに備え、
前記乗算器は、前記入力データに対して前記乗算演算を実行するように構成されている、項目11に記載の装置。
[項目14]
ディープラーニングにおける疎行列計算をコントロールするための方法であって、
ランダムアクセスメモリから重み行列にアクセスする段階であって、前記重み行列は複数の行を含む、アクセスする段階と、
前記重み行列の行を特定する段階であって、前記行は複数の重みを含む、特定する段階と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する段階と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する段階と、
前記行値を格納するように構成されたバッファに前記行値を送る段階であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る段階と
を含む、方法。
[項目15]
前記重み行列の追加の行を特定する段階であって、前記追加の行は追加の重みを含む、特定する段階と、
前記追加の重みのいずれかが非0値を有するかどうか決定する段階と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する段階と、
前記追加の行値を前記バッファに送る段階であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る段階と
をさらに含む、項目14に記載の方法。
[項目16]
前記ランダムアクセスメモリから前記重み行列にアクセスする段階は、
狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスする段階
を含む、項目14に記載の方法。
[項目17]
前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記ランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、項目14に記載の方法。
[項目18]
前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、項目17に記載の方法。
[項目19]
前記データ伝送経路は広い帯域幅を有する、項目17に記載の方法。
[項目20]
ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための動作を実行するように実行可能な命令を格納する1又は複数の非一時的コンピュータ可読媒体であって、前記動作は、
ランダムアクセスメモリから重み行列にアクセスする手順であって、前記重み行列は複数の行を含む、アクセスする手順と、
前記重み行列の行を特定する手順であって、前記行は複数の重みを含む、特定する手順と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する手順と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する手順と、
前記行値を格納するように構成されたバッファに前記行値を送る手順であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る手順と
を含む、1又は複数の非一時的コンピュータ可読媒体。
[項目21]
前記動作は、
前記重み行列の追加の行を特定する手順であって、前記追加の行は追加の重みを含む、特定する手順と、
前記追加の重みのいずれかが非0値を有するかどうか決定する手順と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する手順と、
前記追加の行値を前記バッファに送る手順であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る手順と
をさらに含む、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目22]
ランダムアクセスメモリから重み行列にアクセスする手順は、
狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスする手順
を含む、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目23]
前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記ランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、項目20に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目24]
前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、項目23に記載の1又は複数の非一時的コンピュータ可読媒体。
[項目25]
前記データ伝送経路は広い帯域幅を有する、項目23に記載の1又は複数の非一時的コンピュータ可読媒体。
Claims (26)
- ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための装置であって、前記装置は、
乗算コントローラであって、
重み行列であって、複数の行を含む重み行列にアクセスし、
前記複数の行のそれぞれの行毎に、前記それぞれの行内の重みの値に基づいて、行値を決定する
ように構成された乗算コントローラと、
前記乗算コントローラによって決定された前記行値を格納するように構成されたバッファと、
前記行値によってコントロールされる1又は複数のスイッチであって、前記重み行列と関連付けられた読み出し及び伝送動作をコントロールするように構成された、1又は複数のスイッチと、
前記重み行列に基づいて乗算演算及び積算演算を実行するように構成された処理要素と
を備える、装置。 - 前記乗算コントローラは、
前記それぞれの行内の前記重みの前記値が非0値を含むかどうか決定すること、及び
前記それぞれの行内の前記重みの前記値が非0値を含むと決定することに応答して、前記行値が1に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、請求項1に記載の装置。 - 前記乗算コントローラはさらに、
前記それぞれの行内の前記重みの前記値が非0値を含まないと決定することに応答して、前記行値が0に等しいと決定すること
によって、前記複数の行のそれぞれの行毎に、前記それぞれの行内の前記重みの前記値に基づいて、前記行値を決定するように構成されている、請求項2に記載の装置。 - 前記重み行列を格納するランダムアクセスメモリをさらに備える、請求項1に記載の装置。
- 前記乗算コントローラは、狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスするように構成されている、請求項4に記載の装置。
- 前記1又は複数のスイッチは、
前記バッファから行値にアクセスすること、
前記行値が1に等しいかどうかを決定すること、及び
前記行値が1に等しいと決定したことに応答して、前記行値に対応する前記行内の前記重みを読み出すために前記ランダムアクセスメモリに読み出し要求を送ること
によって、前記重み行列に関連付けられた前記読み出し及び伝送動作をコントロールするように構成されている、請求項4に記載の装置。 - 前記DNN層の入力データを格納するランダムアクセスメモリと、
前記ランダムアクセスメモリを前記処理要素に接続するように構成されたバスであって、前記1又は複数のスイッチのうちのスイッチによってコントロールされる、バスと
をさらに備える、請求項1に記載の装置。 - 前記スイッチは、
前記バッファから行値にアクセスし、
前記行値が1に等しいかどうかを決定し、
前記行値が1に等しいと決定することに応答して、前記ランダムアクセスメモリから前記処理要素に前記入力データを伝送するために、前記ランダムアクセスメモリを前記処理要素に接続するように前記バスをコントロールする
ように構成されている、請求項7に記載の装置。 - 前記入力データは、広い帯域幅を通じて前記ランダムアクセスメモリから前記処理要素に伝送される、請求項8に記載の装置。
- 前記処理要素は、
前記乗算演算を実行するように構成された乗算器と、
前記積算演算を実行するように構成された積算器であって、積算器の積算演算は、乗算器の出力と別の積算器の出力とを積算することを含む、積算器と
を有する、請求項1から9のいずれか一項に記載の装置。 - 前記処理要素は、
前記乗算器及び積算器に連結されたデマルチプレクサであって、前記乗算器の出力に対してデマルチプレクス動作を実行するように構成されており、デマルチプレクス動作は、0の値を有する要素を乗算器の出力に追加することを含む、デマルチプレクサ
をさらに有する、請求項10に記載の装置。 - 前記乗算器のうちのそれぞれの乗算器は、前記積算器のうちの異なる積算器にそれぞれ対応し、前記デマルチプレクサは、前記それぞれの乗算器の出力に対するデマルチプレクス動作の結果を前記対応する積算器に送るようにさらに構成されている、請求項11に記載の装置。
- 前記DNN層の入力特徴マップ行列を圧縮することによって入力データを生成する圧縮モジュールをさらに備え、
前記乗算器は、前記入力データに対して前記乗算演算を実行するように構成されている、請求項11に記載の装置。 - ディープラーニングにおける疎行列計算をコントロールするための方法であって、
ランダムアクセスメモリから重み行列にアクセスする段階であって、前記重み行列は複数の行を含む、アクセスする段階と、
前記重み行列の行を特定する段階であって、前記行は複数の重みを含む、特定する段階と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する段階と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する段階と、
前記行値を格納するように構成されたバッファに前記行値を送る段階であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る段階と
を含む、方法。 - 前記重み行列の追加の行を特定する段階であって、前記追加の行は追加の重みを含む、特定する段階と、
前記追加の重みのいずれかが非0値を有するかどうか決定する段階と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する段階と、
前記追加の行値を前記バッファに送る段階であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る段階と
をさらに含む、請求項14に記載の方法。 - 前記ランダムアクセスメモリから前記重み行列にアクセスする段階は、
狭い帯域幅を通じて前記ランダムアクセスメモリから前記重み行列にアクセスする段階
を含む、請求項14に記載の方法。 - 前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記追加のランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、請求項14から16のいずれか一項に記載の方法。
- 前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、請求項17に記載の方法。
- 前記データ伝送経路は広い帯域幅を有する、請求項17に記載の方法。
- ディープ・ニューラル・ネットワーク(DNN)層をアクセラレーションするための動作を実行するように実行可能な命令を備えるコンピュータプログラムであって、前記動作は、
ランダムアクセスメモリから重み行列にアクセスする手順であって、前記重み行列は複数の行を含む、アクセスする手順と、
前記重み行列の行を特定する手順であって、前記行は複数の重みを含む、特定する手順と、
前記複数の重みのうちの重みが非0値を有するかどうか決定する手順と、
前記重みが前記非0値を有すると決定したことに応答して、前記行についての行値が1であると決定する手順と、
前記行値を格納するように構成されたバッファに前記行値を送る手順であって、前記行値は、前記ランダムアクセスメモリからの前記複数の重みの読み出しを可能にするために使用される、送る手順と
を含む、コンピュータプログラム。 - 前記動作は、
前記重み行列の追加の行を特定する手順であって、前記追加の行は追加の重みを含む、特定する手順と、
前記追加の重みのいずれかが非0値を有するかどうか決定する手順と、
前記追加の重みのいずれも非0値を有さないと決定したことに応答して、前記追加の行についての追加の行値が0であると決定する手順と、
前記追加の行値を前記バッファに送る手順であって、前記追加の行値は、前記ランダムアクセスメモリからの前記追加の重みの読み出しを防止するために使用される、送る手順と
をさらに含む、請求項20に記載のコンピュータプログラム。 - ランダムアクセスメモリから重み行列にアクセスする手順は、
狭い帯域幅を通じてランダムアクセスメモリから重み行列にアクセスする手順
を含む、請求項20に記載のコンピュータプログラム。 - 前記行値は、追加のランダムアクセスメモリと処理要素との間にデータ伝送経路を形成するためにさらに使用され、前記追加のランダムアクセスメモリは、入力データを格納するように構成されており、前記処理要素は、前記入力データ及び前記複数の重みに基づいて乗算演算及び積算演算を実行するように構成されている、請求項20に記載のコンピュータプログラム。
- 前記ランダムアクセスメモリから読み出された前記複数の重みは、前記追加のランダムアクセスメモリに伝送される、請求項23に記載のコンピュータプログラム。
- 前記データ伝送経路は広い帯域幅を有する、請求項23に記載のコンピュータプログラム。
- 請求項20から25のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読格納媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202141048956 | 2021-10-26 | ||
IN202141048956 | 2021-10-26 | ||
US17/550,405 | 2021-12-14 | ||
US17/550,405 US20220101091A1 (en) | 2021-10-26 | 2021-12-14 | Near memory sparse matrix computation in deep neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023064695A true JP2023064695A (ja) | 2023-05-11 |
Family
ID=80821343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022118148A Pending JP2023064695A (ja) | 2021-10-26 | 2022-07-25 | ディープ・ニューラル・ネットワークにおけるニアメモリ疎行列計算 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220101091A1 (ja) |
JP (1) | JP2023064695A (ja) |
-
2021
- 2021-12-14 US US17/550,405 patent/US20220101091A1/en active Pending
-
2022
- 2022-07-25 JP JP2022118148A patent/JP2023064695A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220101091A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220261623A1 (en) | System and method for channel-separable operations in deep neural networks | |
US20220083843A1 (en) | System and method for balancing sparsity in weights for accelerating deep neural networks | |
US20220051103A1 (en) | System and method for compressing convolutional neural networks | |
CN116245142A (zh) | 用于深度神经网络的混合精度量化的系统和方法 | |
WO2023220878A1 (en) | Training neural network trough dense-connection based knowlege distillation | |
US20220188075A1 (en) | Floating point multiply-accumulate unit for deep learning | |
US20240127031A1 (en) | Graph neural network model for neural network scheduling decisions | |
EP4345655A1 (en) | Kernel decomposition and activation broadcasting in deep neural networks (dnns) | |
EP4328802A1 (en) | Deep neural network (dnn) accelerators with heterogeneous tiling | |
EP4354349A1 (en) | Halo transfer for convolution workload partition | |
US20230073661A1 (en) | Accelerating data load and computation in frontend convolutional layer | |
US20230008856A1 (en) | Neural network facilitating fixed-point emulation of floating-point computation | |
JP2023064695A (ja) | ディープ・ニューラル・ネットワークにおけるニアメモリ疎行列計算 | |
US20230018857A1 (en) | Sparsity processing on unpacked data | |
US20230059976A1 (en) | Deep neural network (dnn) accelerator facilitating quantized inference | |
WO2024040601A1 (en) | Head architecture for deep neural network (dnn) | |
US20230017662A1 (en) | Deep neural network (dnn) accelerators with weight layout rearrangement | |
US20230072082A1 (en) | Deep neural network (dnn) accelerator facilitating activation compression | |
WO2024040546A1 (en) | Point grid network with learnable semantic grid transformation | |
US20230229910A1 (en) | Transposing Memory Layout of Weights in Deep Neural Networks (DNNs) | |
EP4343565A1 (en) | Power efficient register files for deep neural network (dnn) accelerator | |
US20230020929A1 (en) | Write combine buffer (wcb) for deep neural network (dnn) accelerator | |
US20220092425A1 (en) | System and method for pruning filters in deep neural networks | |
US20230259467A1 (en) | Direct memory access (dma) engine processing data transfer tasks in parallel | |
WO2023220888A1 (en) | Modeling graph-structured data with point grid convolution |