JP6898359B2 - ディープニューラルネットワーク用のアクセラレータ - Google Patents

ディープニューラルネットワーク用のアクセラレータ Download PDF

Info

Publication number
JP6898359B2
JP6898359B2 JP2018565018A JP2018565018A JP6898359B2 JP 6898359 B2 JP6898359 B2 JP 6898359B2 JP 2018565018 A JP2018565018 A JP 2018565018A JP 2018565018 A JP2018565018 A JP 2018565018A JP 6898359 B2 JP6898359 B2 JP 6898359B2
Authority
JP
Japan
Prior art keywords
neuron
neurons
zero
output
activation
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.)
Active
Application number
JP2018565018A
Other languages
English (en)
Other versions
JP2019522850A (ja
Inventor
ジュド,パトリック
アルベリシオ,ジョルジ
モショヴォス,アンドレアス
シャリフィモハダム,サイヤ
ラスコルツ,アルベルト デルマス
ラスコルツ,アルベルト デルマス
Original Assignee
タータン エーアイ リミテッド
タータン エーアイ リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by タータン エーアイ リミテッド, タータン エーアイ リミテッド filed Critical タータン エーアイ リミテッド
Publication of JP2019522850A publication Critical patent/JP2019522850A/ja
Priority to JP2021097593A priority Critical patent/JP7266065B2/ja
Application granted granted Critical
Publication of JP6898359B2 publication Critical patent/JP6898359B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Memory System (AREA)

Description

本明細書は、概括的には、ニューラルネットワークに関する。より詳細には、本明細書は、乗算の入力がゼロであるほとんどの有効でないオペレーションを削除する、またはスキップすることによって、性能およびエネルギの改善を実現する、ディープニューラルネットワーク(DNN:Deep Neural Network)用のアクセラレータに関する。
ディープニューラルネットワーク(DNN)は、物体および音声の認識などの多くの認識タスクにおける最新式技術である。DNNは、図形処理ユニット(GPU:Graphic Processing Unit)を用いて通常活用される、それぞれが、高い計算需要および並列性を呈している層のフィードフォワードアレンジメントを備えている。しかしながら、DNNの高い計算需要と、より高いエネルギ効率の必要性は、特殊目的アーキテクチャの開発および提案に刺激を与えてきた。しかしながら、処理速度は、いくつかのDNN設計において、具体的にはより複雑な適用にとっては制限因子であり続けている。
したがって、当技術では、改善の必要性が、存在している。
本発明の態様によれば、乗算の入力がゼロである、またはいくつかの実施形態では、ゼロに近いように閾値未満である、ほとんどの有効でないオペレーションを削除する、またはスキップすることによって、性能およびエネルギの改善を実現する、ディープニューラルネットワーク用のアクセラレータが提供される。
本発明の実施形態によれば、ニューラルネットワークで演算を行うための1つまたは複数のタイルであって、各タイルが、各入力ニューロンが関連オフセットを有している入力ニューロン、オフセット、およびシナプスを受信して、出力ニューロンを生み出す、1つまたは複数のタイルと、ニューロンを記憶するための、ディスパッチャおよび符号化器を介して1つまたは複数のタイルと通信する活性化メモリであって、ディスパッチャが、活性化メモリからニューロンをそれらの関連オフセットと共に読み出し、ニューロンをそれらの関連オフセットと共に1つまたは複数のタイルに伝え、ディスパッチャが、メモリからシナプスを読み出して、シナプスを1つまたは複数のタイルに伝え、符号化器が、1つまたは複数のタイルから出力ニューロンを受信し、それらを符号化して、出力ニューロンを活性化メモリに伝え、オフセットが、ゼロでないニューロン上だけで演算を行うために、タイルによって処理される、活性化メモリとを備える、ニューラルネットワークの層を計算するためのシステムが提供される。
さらなる実施形態によれば、本発明は、ニューラルネットワークの層を計算するのに使用されるアクセラレータを備える集積回路を提供し、集積回路は、ニューラルネットワークで演算を行うための1つまたは複数のタイルであって、各タイルが、各入力ニューロンが関連オフセットを有している入力ニューロン、オフセット、およびシナプスを受信して、出力ニューロンを生み出す、1つまたは複数のタイルと、ニューロンを記憶するための、ディスパッチャおよび符号化器を介して1つまたは複数のタイルと通信する活性化メモリであって、ディスパッチャが、活性化メモリからニューロンをそれらの関連オフセットと共に読み出し、ニューロンをそれらの関連オフセットと共に1つまたは複数のタイルに伝え、ディスパッチャが、メモリからシナプスを読み出して、シナプスを1つまたは複数のタイルに伝え、符号化器が、1つまたは複数のタイルから出力ニューロンを受信し、それらを符号化して、出力ニューロンを活性化メモリに伝え、オフセットが、ゼロでないニューロン上だけで演算を行うために、タイルによって処理される、活性化メモリとを備える。
さらなる実施形態によれば、本発明は、ニューラルネットワークで演算を行うことにおいて有効でないオペレーションを減らすための方法を提供し、方法は、ニューロンストリームの中のゼロでないニューロンを識別して、ニューロンごとにオフセット値を作成することと、ニューロンごとのオフセット値をニューロンと共に、ニューロンを処理するタイルに伝えることと、タイルが、オフセット値を使用して、演算を行うゼロでないニューロンを識別することと、タイルが、ゼロでないニューロン上だけで演算を行って、出力ニューロン生み出すことと、出力ニューロンを活性化メモリに記憶することとを含む。
本出願による他の態様および特徴は、本発明の実施形態についての以下の記述を添付の図と関連させて検討されることで、当業者には明らかとなろう。
次に、本発明の実施形態およびそれらが実行に移され得る方法を、ほんの一例として示す添付図面について言及する。
ゼロである畳込層乗算入力ニューロン値の平均比率を示している棒グラフである。 出力ニューロンアレイを生成する入力ニューロンアレイにフィルタを適用する従来技術による段階を示す。 従来技術DaDianNao DNNアクセラレータのオペレーションを示す。 本発明の実施形態によるニューラル機能ユニットでのニューロンの処理を示す。 図5Aは、従来技術のDaDianNaoニューラル機能ユニット(NFU:Neural Functional Unit)の線図であり、図5Bは、本発明の実施形態によるユニットの線図である。 図6Aは、従来技術のDaDianNaoアクセラレータでの処理順序および作業割当を示す図形図であり、図6Bは、本発明の実施形態によるアクセラレータでの処理順序および作業割当を示す図形図である。 本発明の実施形態で使用されるゼロのないニューロンアレイフォーマット(ZFNAf:Zero−Free Neuron Array Format)を示す図形図である。 本発明の実施形態によるディスパッチャである。 畳込ニューラルネットワークの表である。 ベースラインを上回る本発明の実施形態のスピードアップを示す棒グラフである。 実行アクティビティの分析を示す棒グラフである。 ベースラインおよび本発明の実施形態によるアーキテクチャの面積分析を示す棒グラフである。 ベースラインでの、および本発明の実施形態による平均電力消費の分析を示す棒グラフである。 エネルギ遅延積およびエネルギ遅延二乗積に関するDaDianNaoを上回る本発明の実施形態の改善を示す棒グラフである。 精度とニューロンをプルーニングすることによるスピードアップとの間のトレードオフを示す図表である。 損失のない、有効でないニューロンの閾値を示す表である。 実施形態による、ブリックバッファおよびディスパッチャにおける有効でない活性化を検出してスキップすることを示す図形図である。 本発明のさらなる実施形態のオペレーションの例を示す。
類似の参照符号は、図面の中の類似するまたは対応する要素を表す。
ディープニューラルネットワーク(DNN)は、テキスト、画像、または音声などの複雑な情報から有意な特徴を抽出するその特別な能力のおかげで遍在化してきている。DNN、および特に畳込ニューラルネットワーク(CNN:Convolutional Neural Networks)は、代替的物体認識または画像分類アルゴリズムとの比較において非常に良好な認識品質を提供する。DNNsは、汎用図形プロセッサなどの商品計算プラットフォームで利用可能な計算能力から恩恵を受ける。
将来のDNNは、より大きく、より深くなり、より大きい入力を処理し、現在のDNNよりもより複雑な分類タスクを、リアルタイムなどの、より高速度で行うために使用される必要があると思われる。したがって、1オペレーション当たりのエネルギを減らしながらも、ハードウェア演算能力を高め、場合によっては、より小さなフォームファクタのデバイスに対してもそのようにする必要性が存在する。
DaDianNaoアクセラレータは、さらにこの後論じられるように、DNNの規則的なアクセスパターンおよび演算構造を生かしてDNN性能を改良しようとする。それは、何百もの乗算レーンのグループにおいて相前後して動作する幅の広いSIMD(単一命令多重データ処理:Single−Instruction Multiple−Data)ユニットを使用する。
実施形態によれば、DNN性能は、コンテンツがDNNによって作動されているという認識を通じて加速され得る。特に、ディープニューラルネットワークによって行われる演算の大部分は、それらが、入力の1つがゼロである乗算を含んでいるので本質的に有効でない。DNNでの優位演算によって行われるオペレーションの平均で44%は、このカテゴリに分類され得る。有効でないオペレーションの大きな割合は、異なる入力にわたって大幅に変化するようには見えることはなく、有効でない積は、DNNの固有特性の結果であり得ることを示唆している。結果が最終結果に有意に寄与しないこれらのオペレーションを実行することは、多くの時間、エネルギ、および計算リソースを浪費する。
DaDianNaoアクセラレータの構成では、ニューロンレーンが独立して動くことはができない。結果的に、この種類のアクセラレータは、それが、ゼロ値入力を「スキップする」ことができないので、DNNコンテンツを生かすことができない。
以下に詳述するように、本発明の実施形態は、数値ベース手法に従って、ほとんどの有効でないオペレーションを動的に削除するDNNアクセラレータを提供する。これは、精度を失わずにDaDianNaoアクセラレータを上回って性能およびエネルギを改善することができる。
発明の実施形態は、それらが有効でない演算をスキップすることを可能にして、レーンのグループがほとんど独立して進むことができる階層データ並列ユニットを利用する。共同設計されたデータ記憶フォーマットは、関連層の入出力を記憶し、演算削除決定を符号化する。これは、これらの決定をクリティカルパスから取り除き、一方で、データ並列ユニットでの制御発散を回避する。さらに、データ並列ユニットに対する仕事の割当ては、修正される。結合され、ユニットおよびデータ記憶フォーマットは、メモリ階層への広範な、整列アクセスを維持し、データレーンを、入力におけるゼロの分布とは無関係に、ほとんどの時間ビジーに保つデータ並列アーキテクチャをもたらす。
ゼロオペランド乗算をスキップする能力が配置されれば、有効でないオペレーション識別基準は、精度を失わずに、さらなる改善が可能になるように、緩めるまたは緩和することができる。精度のいくらかの損失が許容可能である場合、基準をさらに緩めることと引き換えに精度を犠牲にして、性能およびエネルギ効率のいっそうさらなる改善が、獲得され得る。
本発明の実施形態は、DNNの畳込層を対象とする。DNNでは、畳込層は、それらが演算の大部分を行うので、実行時間で優位を占める。畳込層は、3次元入力の上にいくつかの三次元フィルタを適用する。これは、入力要素、またはニューロンおよびフィルタ重み、またはシナプスの間のペアワイズ乗算を伴う内積計算である。次いで、これらの積は、加算を用いて、単一出力ニューロンにまとめられる。
実際には、ニューロン値の多くは、ゼロであることがわかり、したがって、対応する乗算および加算は、最終結果に寄与せず、回避することが可能である。したがって、本節では、公に利用可能である普及しているDNNの畳込層でゼロと等しい、入力ニューロンの比率の特性を示す。これらの測定では、DNNは、イメージネットデータセットから一千画像を分類するのに使用された。
図1は、全ての畳込層にわたって、そして全ての入力にわたってゼロの値を備えたニューロン入力である乗算オペランドの平均的総比率を報告する。この比率は、ninでの37%からcnnSでの50%までさまざまであり、全てのネットワークの平均値は、44%である。誤差棒は、入力イメージ全体にほとんど変動を示しておらず、1,000画像のサンプルセットが、大量であることを考えれば、ゼロニューロンの相対的に大部分は、ネットワークのオペレーションに起因しており、入力の特性でない。
ネットワークがそれほど多くのゼロニューロンを生成する理由の1つの説明は、DNNの性質および構造にある。概要としては、各DNN層が、入力は、線、曲線、またはより精巧な構成物などのある学習された「特徴」を含有するかどうか、およびそれらを含有する場所を決定しようと試みるように、DNNは、設計される。特徴がある場合、正値ニューロン出力として符号化され、特徴がない場合には、ゼロ値ニューロンとして符号化される。したがって、特徴が、存在するとき、ほとんどの場合、それらは、入力全体にわたって現れるわけではない。さらに、全ての特徴が、存在するわけではない。DNNは、出力を生成するのに畳込層を使用して、特徴の存在を検出し、特徴が特定の位置に存在する尤度を番号で符号化する。負値は、特徴が存在しないことを示唆する。畳込層の後に、正値は通過させるが、いかなる負入力もゼロに変換するRectifierまたはReLU層が続くことができる。
多くのゼロ値ニューロンがある一方、それらの位置は、入力データ値によって決まり、それゆえ、それは、対応する演算を削除する静的手法にとって難易度が高い。特に、全入力にわたって常にゼロであったニューロンは、なかった。高い確率でゼロであったニューロンを削除することが可能であったとしても、多くは存在しなかっただろう。例えば、ニューロンの0.6%のみが、99%の確率でゼロである。この後さらに記載されるアーキテクチャは、ランタイムにこのような演算を検出して削除する。
畳込層を計算するために必要な時間は、処理される要素数と共にほぼ直線的に増え、畳込層が、実行時間で優位を占めるので、これらの測定は、ゼロ値ニューロンに対応する演算を何とかスキップするアーキテクチャに関する潜在的性能改善の上限を示すことができる。
ニューロンの多くがゼロであることを示してきたが、本発明の実施形態は、1)レーン減結合することと、2)ゼロ値入力の削除を促進する適切なフォーマットに入力をオンザフライで記憶することとによって対応する演算をスキップすることができる。
畳込層の演算
CNNを計算するのに必要なオペレーションは、DNNにおけるのと同じ性質のものである。主な違いは、前者において、重みが、入力(すなわち画像)の中の異なる点の特徴を探すように、繰り返されることである。畳込層への入力は、次元I×I×iの実数の3Dアレイである。これらの数字は、第1の層の入力データおよびその前の層の、次の層に向けたニューロンの出力である。この作業の残りの部分で、それらは、指定された「入力ニューロン」に指定され得る。各層は、入力される層のx次元およびy次元に沿った複数位置でN個のフィルタを適用する。各フィルタは、シナプスを含有する、次元F×F×iの3Dアレイである。全てのフィルタは、同じ次元でできており、それらの深さは、入力ニューロンアレイと同じである。層は、次元O×O×Nの3D出力ニューロンアレイを生成する。出力の深さは、フィルタの数と同じである。
出力ニューロンを算出するために、1つのフィルタは、ウィンドウ、またはフィルタF×F×iと同じ次元を有する入力ニューロンアレイのサブアレイの上に適用される。n(x,y,z)およびo(x,y,z)をそれぞれ入力ニューロンおよび出力ニューロンとし、s(x,y,z)を、フィルタfのシナプスとする。活性化関数の前の、位置(k,l,f)の出力ニューロンは、以下の通りに算出される。
Figure 0006898359
ウィンドウおよびフィルタにつき1つの出力ニューロンがある。フィルタは、定ストライドSを使用しながら、X次元およびY次元に沿って動いて、異なるウィンドウ上に繰り返し適用され、全ての出力ニューロンを生成する。したがって、出力ニューロンアレイ次元は、O=(I−F)/S+1およびO=(I−F)/S+1である。図2は、3×3×2入力ニューロンアレイ、単一の2×2×2フィルタ、およびユニットストライドが、2×2×1の出力ニューロンアレイを生成する例を示す。
入力ニューロンがゼロであるとき、対応する乗算および加算は、出力値を変更せずに、時間およびエネルギを節約するために削除され得る。
図2Aに示すように、位置(0,0,0)またはo(0,0,0)での出力ニューロンは、基点n(0,0,0)で入力の2×2×2ウィンドウ上にフィルタを適用することによって生成される。各シナプスs(x,y,z)は、対応する入力ニューロンn(x,y,z)で乗算、例えば、n(0,0,0)×s(0,0,0)およびn(0,1,0)×s(0,1,0))、され、合計で2×2×2または8つの積となる。8つの積は、加算を用いて単一の出力ニューロンにまとめられる。次いで、基点n(1,0,0)のニューロン入力ウィンドウを使用してo(1,0,0)を生成するために、ウィンドウは、最初にX次元に沿って、Sだけずらされる。例えば、ここで、s(0,0,0)は、n(1,0,0)と乗算され、s(1,1,0)は、n(2,1,0)と乗算される。
第1の次元がなくなると、次いで、ウィンドウは、Y次元に沿ってSだけずれて、再びX次元に沿ってスキャンを始め、以下図が示すように同様である。全体で、結果は、2×2×1出力ニューロンである。1つのフィルタだけなので、深さは1である。
図2Bおよび図2Cは、2×2×2フィルタを備えた畳込層を示す。ここでの出力は、2×2×2アレイであり、各フィルタが、出力の2つの平面または層の1つを生成する。図2Bが示すように、第1のフィルタは、出力要素o(x,y,0)を生成する。図2Cは、第2のフィルタが、出力ニューロンo(x,y,1)を生成するのを示す。
簡略化されたベースラインアーキテクチャ(DaDianNao)
ベースラインアーキテクチャは、Chen他によって提案されたDaDianNao最新式アクセラレータに基づく。本節では、このアーキテクチャの簡略化されたユニットが畳込層を算出する方法と、それが、現状のままではゼロ値入力ニューロンをスキップすることができない理由とについて、例を用いて説明する。
DaDianNaoアクセラレータのオペレーションは、図3に示される。図3(a)では、3×3×2ニューロンアレイは、2×2×2出力ニューロンアレイを生成する2つの2×2×2フィルタによってユニットストライドで畳み込まれる。図3(b)では、例のユニットは、1)2つのニューロンレーン140と、2)それぞれが2つのシナプスサブレーン160を含有している2つのフィルタレーン150とを備える。各ニューロンレーン140およびシナプスサブレーンは、入力ニューロンバッファ(NBin:Input Neuron Buffer)120レーンおよびシナプスバッファ(SB:Synapse Buffer)110レーンから単一の要素をそれぞれ送給される。サイクル毎に、各ニューロンレーン140は、2つの対応するシナプスサブレーン160に、ニューロンをブロードキャストし、結果的に、シナプスサブレーンにつき1つ、4対のニューロンおよびシナプスとなる。シナプスサブレーン毎の乗数器171は、ニューロンおよびシナプス入力を乗算する。フィルタレーン毎の加算器ツリー173は、2つの積を、フィルタ毎に、出力ニューロンバッファ(NBout:Output Neuron Buffer)130レーンに累積する部分和にまとめる。
層演算の構造を生かして、ユニットは、全てのニューロンおよびフィルタレーンが並列的に進むように、それらを結合する。全てとまではいかないが、ほとんどの演算が、行われるべきであると仮定して、演算の構造だけを考える場合、これは、適切である。しかしながら、現状のままで、このユニットは、ゼロニューロンをスキップすることができない。この例では、両方のニューロンレーンのゼロは、残念なことに、ゼロでないニューロンと結合される。性能およびエネルギを改善する可能性を有しながら、問題なく回避されることができる、4つの乗算が存在する。
図3の例では、完全なフィルタの計算は、1つの追加サイクルを必要とするものであり、最初の3サイクルだけが、ここに示される。両方のフィルタの要素は、単に、明瞭にするために、異符号を備えた同じ値を有している。図3Aには、入力ニューロンおよびシナプスの部分セットがある。図3Bから図3Dは、処理の3サイクルを示す。上部は、どのニューロンおよびシナプスが処理されているのかを示し、下部は、ユニット処理である。
図3B、サイクル0では、NBinからの最初の2個のニューロン(1および0)は、2個のフィルタ((1、2)および(−1、−2))のそれぞれのシナプスと乗算され、フィルタ毎の各積対は、加算器によってまとめられ、NBoutに記憶される(1および−1)。SBポインタは、1つ前進し、ニューロンは、NBinから捨てられる。
図3Cおよび図3D、サイクル1およびサイクル2では、次の入力ニューロンおよびフィルタシナプス対に対する動作の同じ順序が、示される。NBout部分和は、読み出され、加算器ツリーへの追加入力として使用され、最終的な出力ニューロンの算出に向けて、進行する。
ベースラインアーキテクチャ
上記では、一度に2つの入力ニューロンおよび2つのフィルタのシナプスを処理した、DaDianNaoベースラインユニットの簡略版を記載したが、各DaDianNaoチップまたはノードは、16個のニューラル機能ユニット(NFU:Neural Functional Unit)または単なるユニットを含有する。図5Aは、このようなユニットの1つを示す。サイクル毎に、ユニットは、16個の入力活性化またはニューロン、16個のフィルタからの256個の重みまたはシナプスを処理し、16個の部分出力活性化またはニューロンを生成する。詳細には、ユニットは、16個のニューロンレーン、それぞれ16個のシナプスレーン160(合計で256個)を備えた16個のフィルタレーン150を有し、16個の出力ニューロンのために16個の部分和を生成する。ユニットのSB110は、256個のシナプスレーンに送給する、256個のレーン(16×16)を有し、NBin120は16個のニューロンレーンに送給する16個のレーンを有し、NBout130は、16個のレーンを有する。各ニューロンレーンは、16個のフィルタレーン150のそれぞれから1つ、16個のシナプスレーン160に連結される。ユニットは、256の乗算器と、16個の17入力加算器ツリー(16個の積プラスNBoutからの部分和)とを有する。ユニット毎のニューロンレーンおよびフィルタの数は、変更されることができる設計時間パラメータである。全てのレーンは、並列的に動作する。
DaDianNaoは、オフチップバンド幅を最小に抑えて、オンチップ演算利用率を最大にするという意図で設計される。ノードの全16個のユニットによって必要とされるサイクルシナプスバンド幅毎の合計は、1GHzクロックおよび16ビットシナプスと仮定すれば、1サイクル当たり4Kシナプス、または8TB/秒である。総SB110容量は、処理されている層に関する全シナプスを記憶するのに十分なように設計され(32MBまたは1ユニット当たり2MB)、したがって、オフチップからシナプスをフェッチすることを回避している。最大256個のフィルタは、1ユニット当たり16個ずつ並行して処理されることができる。当初の入力および最後の出力を除いた、全ての中間層ニューロン出力は、さらに、適切な大きさの中心eDRAM、またはニューロンメモリ(NM:Neuron Memory)に記憶される。NMは、全16個のユニットで共有され、元の設計では4MBである。外部から見える通信量は、当初の入力のためのもの、1層当たりシナプスを1回ロードするためのもの、そして最後の出力を書き込むためのものだけである。
外部メモリから、1)フィルタシナプスと、2)当初の入力とを読み出すことで処理が始まる。フィルタシナプスは、それに応じてSBに分散され、他方で、ニューロン入力は、NBinに送給される。層出力は、NBoutを通ってNMに記憶され、次いで、次の層を処理するためにNBinに送給される。シナプスの次のセットを外部メモリからロードすることは、必要に応じて、現行層の処理と重複され得る。複数ノードを使用して、単一のノードで利用可能なNMおよびSBに合わないより大きいDNNを処理することができる。容量が高いほど、外的メモリを溢れさせることおよび過剰なオフチップアクセスを強いることなく、単一のチップによって処理され得るニューロンおよびフィルタは、大きいので、NMおよびSBは、eDRAMを使用して実施される。
図6(a)は、DaDianNaoアーキテクチャが、256個のフィルタを同時に適用しながら、入力ニューロンアレイを処理する方法について示す。各ユニットは、16個のフィルタを処理し、ユニット0は、フィルタ0からフィルタ15を処理し、ユニット15は、フィルタ240からフィルタ255を処理する。簡潔にするため、図は、i次元上の要素の位置だけを示している(例えば、フィルタ7の位置(0,0,15)はs 15として示される)。サイクル毎に、16個の入力ニューロン(それぞれ16ビット長)のフェッチブロックが、全16個のユニットに送給される。フェッチブロックは、1ユニット当たり16個のフィルタレーン毎に、1シナプスレーン当たり1つのニューロンを含有する。例えば、サイクル0では、フェッチブロックは、ニューロンn(0,0,0)からニューロンn(0,0,15)までを含有することになる。ニューロンn(0,0,0)は、ユニット0では、シナプスs(0,0,0)からシナプスs15(0,0,0)と、ユニット15では、シナプスs240(0,0,0)からシナプスs255(0,0,0)と乗算されることになる。ニューロンn(0,0,1)は、ユニット0では、シナプスs(0,0,1)からシナプスs15(0,0,1)と乗算され、以下同様である。シナプスは、ユニットが、並行して適切なシナプスをフェッチすることができるように、図に示される順序でSBに記憶される。例えば、ユニット0におけるSBの最初のエントリ(列)は、以下の256個のシナプス、s(0,0,0)〜s(0,0,15),...,s15(0,0,0)〜s15(0,0,15)を含有する。
現行のウィンドウが処理された後、対応するニューロンが始まる場所が、所与の座標に直接算出されることが可能になるので、次のウィンドウは、開始されることができる。ウィンドウは、全てのフィルタによって処理される必要があるので、他の作業割当も、可能である。選択された割当ては、図でも見ることができるように、ニューロン水準のレーンにわたって入力をインタリーブする。ゼロをスキップする試みが行われないので、NMからの単一の16ニューロン幅フェッチは、全てのユニットにわたって全てのレーンに作業を提供することができ、100%の利用率を実現する。
要点をまとめると、DaDNは、値に関係なく、全ての活性化を処理する。DaDNは、大規模データ並列アーキテクチャである。サイクル毎に、それは、16個の活性化値、および最大で256個のフィルタからの重みを処理する。具体的には、フィルタ毎に、DaDNは、16個の活性化値を16個の重みと乗算し、結果を部分出力活性化に蓄積する。この工程は、必要な全ての活性化値が、所望の出力活性化毎に処理されるまで、繰り返される。
本発明の実施形態による簡略化されたアーキテクチャ
ニューロンストリームにおいてゼロの有意な部分を活用するために、全てのニューロンレーンが一緒に結合される従来技術構造は、変更される。本発明の実施形態は、ニューロンレーンを減結合して、それらが独立して進行することを可能にする。図4は、本発明の実施形態の等価の簡略化された設計と、それが、どのようにして2サイクルにわたって進行するのかを示す。DaDianNaoユニットは、ここでは、1)加算器ツリーおよびNBout230を含有するバックエンドと、2)ニューロンレーン280、シナプスサブレーン260、および乗算器を含有するフロントエンドとに分割される。バックエンドは、変化がないのに対して、フロントエンドは、ここでは、1ニューロンレーン280毎に1つ、2つのサブユニット205に分割される。各サブユニット205は、1つのニューロンレーン280と、2つのフィルタ250毎にシナプスサブレーン260とを含有する。サイクル毎に、各サブユニットは、1フィルタ毎に1つ、2つの積を乗算器271で生み出す。積は、以前と同様に、2つの加算器ツリー273に送給されて、部分出力ニューロン和を生成する。この構成の場合、ニューロンレーン280は、ここでは、互いから独立して進行することができ、したがって、ゼロをスキップする潜在能力を有している。
ゼロニューロンが入力に現れるとき、ゼロニューロンを、能動的にスキップするニューロンレーン280を有する代わりに、本発明の実施形態によれば、ゼロニューロンが前の層の出力で削除される動的ハードウェア手法を、用いることができる。その結果、ゼロでないニューロンだけが、NBin220には現れる。このために、さらに後述するように、入力ニューロンアレイが、ゼロのないニューロンアレイフォーマット(ZFNAf:Zero−Free Neuron Array format)に記憶される。ここでは、このフォーマットの簡略版を提示して、このフォーマットによって、個々のニューロンレーンが、他のニューロンレーンから独立して進行するゼロでないニューロンだけを見ることができるようになる方法を説明する。ゼロニューロンが削除されると、それぞれのゼロでないニューロンは、適切なSBエントリと適合される。ZFNAfは、この目的のためのオフセットを用いて、それぞれのゼロでない入力ニューロンを補強する。例えば、ニューロンの元のストリームが(1,0,0,3)であったであろう場合、それらは、((1,0)、(3,3))として符号化されることになる。オフセット285は、それが、適切なシナプス列にアクセスすることができるように、SBサブレーンのインデックスを調整することができる。本発明の実施形態によれば、ZFNAfは、オンザフライで生み出されることができる。
図4では、本発明の実施形態による簡略化ユニットは、図3の従来技術ユニットと同じ出力を、ちょうど2サイクルで生成する。両方のフィルタの要素は、単に、明瞭にするために、異符号を備えた同じ値を有している。
図4A、サイクル0では、サブユニット0は、次のNBニューロン値1およびオフセット0を読み出す。オフセットを使用することによって、それは、フィルタ0およびフィルタ1に対応する適切なSBシナプス1およびSBシナプス−1をインデックス化する。結果として生じる積1および−1は、専用の加算器ツリーを用いて、対応するフィルタ用の出力ニューロンに追加される。同様に、サブユニット1は、オフセット1と共にニューロン2をフェッチして、シナプス4およびシナプス−4と乗算して、フィルタ用の対応する加算器ツリーに送給することになる。
図4B、サイクル1では、オペレーションは、サブユニット0が、オフセット2でニューロン3をフェッチし、サブユニット1が、オフセット2でニューロン4をフェッチして以前と同様に繰り返す。ベースライン(48、−48)においてと同じ結果が、2サイクルだけで算出される。
本発明の実施形態によるアーキテクチャ
図5Bは、DaDianNaoユニットと同じ演算バンド幅を提供する実施形態によるユニットを示す。ニューロンレーン280および対応するシナプスレーン260を備えるフロントエンドは、16個の独立したオペレーティングサブユニット205に区分化され、それぞれが、単一のニューロンレーン280および16個のシナプスレーン260を含有する。各シナプスレーン260は、合計で16個の異なるフィルタを処理する。サイクル毎に、各サブユニット205は、NBinから単一の(ニューロン、オフセット)対をフェッチし、オフセット285を使用して、16個のシナプスをフェッチするためにSBinから対応するエントリをインデックス化し、フィルタ250毎に1つ、16個の積を生成する。バックエンドは、変わっていない。それは、16個の加算器ツリー273を使用して減らされる16×16個の積を、16個のサブユニット205から受け入れる。加算器ツリー273は、符号化器235によって符号化されて、活性化メモリに伝えられ得る64個のNBout230エントリを使用して、ユニットが累積する、16個の部分出力ニューロンを生成する。サブユニットNBinは、64個のエントリ深さであり、各エントリが、16ビットの固定小数点値にオフセットフィールドを加えたものを含有する。総SB容量は、元のDaDianNao設計のように、1ユニット当たり2MBのままであり、各サブユニットが128KBのSBを有する。各サブユニットSBエントリは、16個のシナプスに対応する16×16ビットを含有する。要約すると、各サブユニットは単一のニューロンレーンに対応して、フィルタ毎に1つ、16個のシナプスを処理する。合計で、全てのサブユニットは、16個のニューロンレーン、256個のシナプスレーンを有し、異なるフィルタそれぞれから16個の部分出力ニューロンを生成する。
本発明の実施形態によるユニットを使用して、符号化されたニューロンアレイおよび従来型のニューロンアレイの両方を処理することができる。層毎にソフトウェアによって設定された構成フラグは、ユニットが、ニューロンオフセットフィールドを使用するかどうかを制御する。
本発明の実施形態による設計は、ベースラインを上回って性能を改善するために、以下を行う。1)オンザフライで符号化されたニューロンアレイを生み出す、2)ユニットおよび全てのレーンをビジーに保つ、3)中心eDRAMへの規則正しい、広範なアクセスを維持する。この機能性を可能にする、本発明の実施形態の構造的特徴は、入力ニューロンアレイを符号化するのに使用されるフォーマットと、作業がユニット全体に分割される方法とにある。
このフォーマットは、図7に示されるゼロのないニューロンアレイフォーマット(ZFNAf)である。ZFNAfは、本発明の実施形態がゼロ値ニューロンを用いる演算を回避することを可能にする。ゼロでないニューロンだけが、それぞれ、元の位置を示すオフセットと共に記憶される。ZFNAfは、本発明の実施形態が、クリティカルパスから外れてどのニューロンを処理するのかという決定を動かして、それらを前の層の端部に置くことを可能にする。したがって、ZFNAfは、別の方法では制御フロー決定であったであろうものを効果的に実施する。
具体的には、ZFNAfは、ニューロンを、ブリックと呼ばれるグループの中の(値、オフセット)対として符号化する。各ブリックは、DaDianNao設計のフェッチブロックに対応し、それは、16個のニューロンの、整列した、入力特徴に沿って連続的な次元iグループであり、すなわち、それらは全てが、同じx座標およびy座標を有している。ブリックは、最初のニューロンが、オフセットフィールドを占めるように調整された、従来型の3Dアレイフォーマットの中に記憶されたであろう位置から始まって記憶され、ゼロをパディングされる。ブリックでのグループ化は、各層を処理するのに必要な粒度で活性化アレイをインデックス化する能力を維持する。
したがって、ZFNAfでは、有効な活性化だけが、それぞれ、元の位置を示すオフセットと共に記憶される。ZFNAfは、前の層の出力で生み出され、それは、通常、それぞれの活性化を生成するのに数十サイクル以上を要する。
ZFNAf符号化は、圧縮疎行(CSR:Compressed Sparse Row)フォーマットとのいくらかの類似性を有する。しかしながら、CSRは、極端な水準の疎らさを備えた行列を対象とするほとんどの疎行列フォーマットのように、2つの目的を有する、すなわち、ゼロでない要素だけを記憶することと、メモリ設置面積を減らすこととであり、ZFNAfは、第1の目的だけを共有する。CSRでは、それぞれの行が始まる場所を探すことは容易であるが、しかしながらユニットをビジーに保つために、本発明の実施形態は、いくらかのメモリ設置面積節約を犠牲にしながら、より微細な粒度で、直接インデックス化することを可能にする。
このグループ化は、本発明の実施形態に有用な2つの特性を有する:1)グループ化は、ブリックの第1のニューロンの座標だけを使用して、ブリック粒度のニューロンアレイにインデックス化する能力を維持する、そして、2)グループ化は、オフセットフィールドのサイズを短く保ち、したがって、オフセットを記憶するためのオーバヘッドを減らす。第1の特性は、作業をサブユニットに独立して割り当てることを可能にし、さらに、本発明の実施形態が、ウィンドウが始まる場所を容易に探すことを可能にする。ブリックは、本発明の実施形態が、全てのサブユニットをビジーに保つこと、および相互に独立して進行して、したがって、ゼロをスキップする、または必要に応じて新しいウィンドウを処理することを始めることを可能にする。図7は、ZFNAfの一例を示す。本発明の実施形態が16個のニューロンのブリックを使用することができるので、オフセットフィールドは、4ビット長である必要があり、NM、または研究された構成では1MB、では25%の容量オーバヘッドとなる。大半の面積が、SBによって利用される(32MB)ことから、全体として、結果的な面積オーバヘッドは、4.49%の小規模であることが分かる。
上記の通り、DaDianNaoは、それが、全16個のユニットにブロードキャストする、1サイクル当たり16個のニューロンの単一フェッチブロックをフェッチする。このブロックは、256個のフィルタにわたる全てのシナプスレーン用の作業を含有する。作業をニューロンレーンにわたって同じに分配することは、本発明の実施形態が、全てのユニットをビジーに保つのに十分ではない。図6Bが示すように、ZFNAfの中のフェッチブロックは、対応する元のニューロンアレイグループが、ゼロニューロンを含有していない場合にだけ、ベースライン作業割当てで、全てのニューロンレーン用の作業を含有する単一のブリックを含有する。
ニューロンレーンをできるだけビジーに保つために、本発明の実施形態は、さまざまなニューロンレーンに違った作業を割り当てる。具体的には、最初に記載されたように、DaDianNaoは、入力ニューロンのニューロンレーンへのニューロンインタリーブ割当てを使用したが、本発明の実施形態は、ブリックインタリーブ割当てを使用する。
例えば、DaDianNaoでは、ニューロンレーン0に、活性化a(x,y,i)が提供された場合、ニューロンレーン1に、a(x,y,i+1)が提供される。本発明の実施形態によれば、ニューロンレーンが、a(x,y,i)から始めて活性化ブリックを処理している場合、ニューロンレーン1には、a(x,y,i+16)から始まるブリックが提供される。
図6Bが示すように、本発明の実施形態は、ウィンドウを、ニューロンレーン毎に1つ、16個のスライスに均一に分割する。各スライスは、ウィンドウの完全な垂直チャンクに対応する(全てのブリックは、同じ開始z座標を有している)。サイクル毎に、スライスにつき1つのニューロンがフェッチされ、1レーン当たり1つ、16個のニューロンのグループとなり、したがって、全てのレーンをビジーに保つ。例えば、e(x,y,z)をZFNAfの中の入力アレイの場所(x,y,z)に記憶された(ニューロン、オフセット)対とする。サイクル0では、位置e(0,0,0)、e(0,0,16)、…(e(0,0,240)の符号化されたニューロンが、フェッチされて、全てのユニットにブロードキャストされ、ニューロンレーン0からニューロンレーン15によってそれぞれ処理される。全16個のブリックが第2のゼロでないニューロンを有する限り、サイクル1では、e(0,0,1)、e(0,0,17)、…(e(0,0,241))が、処理されることになる。例えば、ブリック0が、1つのゼロでないニューロンだけを有した場合、次のサイクルでは、フェッチされることになる第1のニューロンは、256の入力ニューロン深さiと仮定すれば、e(1,0,0)であることになる。
各ニューロンレーンは、各ブリックが含有するゼロでない要素の数に基づいて、独立して進行するので、ニューロンレーン毎に異なるフェッチポインタが存在する。愚直な実施態様は、1サイクル当たり16個の単一ニューロンアクセスを行い、NMに過度に負担をかける。以下に記載されるディスパッチャは、DaDianNaoと同数の、16ニューロン幅の整列されたNMアクセスを必要とする単純な拡張部分を提示する。
入力ニューロンがユニットの中のニューロンレーンに割り当てられる順序が変わったので、シナプスが、図6Bが示すようにSBに記憶される順序も変わる。例えば、サイクル0では、jが、e(0,0,0)のオフセットである場合、ユニット0のサブユニット0は、s(0,0,j)からs15(0,0,j)を必要とすることになり、ユニット0のサブユニット15は、s15(0,0,240+j)からs15(0,0,240+j)を必要とすることになり、ユニット15のサブユニット0は、s240(0,0,j)からs255(0,0,j)を必要とすることになる。これは、サブユニット毎のSB記憶順序を入れ換えることに相当することが分かる。シナプスは、あらかじめ知られているので、この再配列は、ソフトウェアで静的に行われることができる。したがって、サブユニット毎に適切なシナプスに並行してアクセスすることは、簡単である。
この作業割当ては、各ユニットが生み出す出力ニューロン値を変えることはなく、出力ニューロン値は、DaDianNaoと同じままである。割当ては、入力ニューロンが、出力ニューロンを生成するために処理される順序のみを変更する。
1サイクル当たり16個の独立した単一ニューロン幅NMアクセスを行うことを回避するために、CNVは、全てのニューロンレーンをビジーに保ちながら、NMへの16ニューロン幅アクセスを行うディスパッチャユニットを使用する。このために、NMを本来構成しているサブアレイは、16個の独立バンクにグループ化され、入力ニューロンスライスは、1バンク当たり1つ、静的に分散される。ディスパッチャは、NMバンクにわたって物理的に分散されるが、そのオペレーションを説明することは、それが集中型ユニットとみなされる場合、より容易である。
図8は、ディスパッチャが、各エントリが単一のブリックを保持することができる16エントリブリックバッファ(BB:Brick Buffer)を有することを示す。各BBエントリは、16ニューロン幅バスを介して1つのNMバンクに連結され、単一ニューロン幅連結を介して全てのユニットにわたるニューロンレーンの1つに送給する。例えば、BB[0]は、NMバンク0からニューロンブリックを受け入れ、ニューロンのいずれかを全てのユニットのニューロンレーン0にブロードキャストすることができる。最初に、ディスパッチャは、合計16個のニューロンブリック用の各バンクから1つのブリックを並列に読み出す。次のサイクルでは、ディスパッチャは、ゼロでないニューロン、各BBエントリから同時に単一のニューロンを、合計で16個のニューロン、BBエントリ毎に、したがって各サイクル、ニューロンレーン毎に1つをブロードキャストする。ブリックのゼロでないニューロンの全てがユニットに送信される前に、ディスパッチャは、対応するNMバンクから次のブリックをフェッチする。NMの応答のためのストールを回避するために、処理順序における次の、バンク毎のブリックをフェッチすることは、各ブリックの開始アドレスおよび処理順序があらかじめ知られているので、所望されるだけ早く開始されることができる。各BBが流す割合が、ブリック毎に遭遇したゼロでないニューロンの数に応じて変化することになるので、ディスパッチャは、NMバンクにつき1つのフェッチポインタを維持する。
ディスパッチャは、スライス/バンクにつき1つ、最大で16個のNM要求を同時的に出すことができる。ブリックが、偶然にもゼロ値ニューロンだけを有する最悪のケースでは、NMバンクは、サイクル毎に新しいブリックを供給しなければならないことになる。これは、実際には、めったに起こらず、NMバンクは、相対的に大きく、この最悪の場合のバンド幅を維持するために、サブバンク化される。
DaDianNaoでは、単一の16ニューロン幅相互接続が、フェッチブロックを全16個のユニットにブロードキャストするのに使用される。相互接続構造は、本発明の実施形態によって不変的であり続けるが、幅は、ニューロンオフセットを収容できるように増大する。
研究されたDNNへの当初の入力は、従来型の3Dアレイフォーマットを使用して処理される画像である。第1の層は、それらを、各カラープレーンが特徴である3特徴ディープニューロンアレイとして処理する。全ての他の畳込層は、本発明の実施形態が、直前の層の出力時にオンザフライで生み出すZFNAfを使用する。
DaDianNaoのような本発明の実施形態によれば、出力ニューロンは、それらが別の層への入力として送給されることができる前に、NBoutからNMに書き込まれる。eDRAM NMには、幅広いアクセスが好ましいので、これらの書き込みは、16ニューロン幅のままである。しかしながら、NMに書き込む前に、各16ニューロングループは、ZFNAfのブリックに符号化される。これは、符号化器サブユニットによって行われる。本発明の実施形態によれば、1つの符号化器サブユニットが、ユニット毎に存在することができる。
本発明の実施形態は、DaDianNaoとは異なる順序で入力ニューロンアレイを処理することができるが、本発明の実施形態によるユニットは、DaDianNaoと同じ出力ニューロンを同様に生成することができる。各出力ニューロンは、1つのフィルタを使用して全部のウィンドウを処理することによって生成される。本発明の実施形態によれば、フィルタのユニットへの割当ては、同じままである。したがって、本発明の実施形態によるユニットによって生成された出力ニューロンは、出力ニューロンアレイのブリックに対応することができる。符号化器ユニットが行わなければならないことの全ては、ゼロでないニューロンをブリックの中にパックすることである。
符号化器は、16ニューロン入力バッファ(IB:Input Buffer)、16符号化ニューロン出力バッファ(OB:Output Buffer)、およびオフセットカウンタを使用する。変換は、全てのOBエントリをクリアしながら、NBoutからIBへの16ニューロンエントリを読み出すことから始める。サイクル毎に、符号化器は、IBから次のニューロンを読み出し、オフセットカウンタをインクリメントする。ニューロンは、それが、ゼロでない場合だけ次のOB位置にコピーされる。オフセットカウンタの現行の値も、書き込まれて、符号化されたニューロン対を完了させる。全16個のIBニューロンが処理されると、OBは、ブリックをZFNMfの中に包含し、NMに送信されることができる。DaDianNaoと同じ相互接続が、オフセットフィールドを収容できるように広げられて使用される。符号化器は、1)出力ニューロンが、非常に遅い速度で生成される、および2)符号化されたブリックは、次の層で必要であるので、連続的に符号化を行うことができ得る。
DaDianNaoでは、全てのユニットは、同じウィンドウからのニューロンを処理し、次のウィンドウの処理は、現行のウィンドウが処理された後にのみ始められる。本発明の実施形態は、ユニットのバックエンドおよび制御へのさらなる変更を回避して、この手法に従うことができる。ニューロンレーンが、それらのブリックを独立して処理するので、全てのスライスが、正確に同じ数のゼロでないニューロンを有していなければ、いくつかのニューロンレーンは、他より早くそれらのウィンドウスライスを処理することを終えることになる。これらのニューロンレーンは、全ての他のレーンが、それらの処理を完了させるまで、アイドル状態を維持することになる。
評価方法論
評価は、図9に提示された表に示されるような、普及している最新式の畳込ニューラルネットワークのセットを使用する。これらのネットワークは、1000個のクラスにわたる256×256個の画像を含有するILSVRC12データセット上で画像分類を行う。実験は、各クラスから1つ、1000個の画像のランダムに選択されたセットを使用する。ネットワークは、配布の一部、またはCaffe Model Zooでの一部として、利用可能であり、Caffeで事前訓練される。
ベースラインアクセラレータの、および本発明の実施形態によるサイクルの正確なシミュレータが使用された。シミュレータは、層出力ニューロンのオンザフライ検証を可能にするために、Caffe枠組みと統合される。本発明の実施形態およびDaDianNaoの面積および電力特性は、合成された実施態様を用いて測定された。2つの設計は、Verilogで実施され、シノプシス設計コンパイラを介してTSMC 65nmライブラリと合成された。NBin、NBout、およびオフセットSRAMバッファは、ダブルポンピングを用いてサイクル毎の読み書きを可能にするArtisanシングルポートレジスタファイルメモリコンパイラを使用して、モデル化された。eDRAM面積およびエネルギは、Destinyを用いてモデル化された。
性能
図10は、ベースラインを上回る本発明の実施形態のスピードアップを示す。第1の棒(CNV)は、ゼロニューロンだけが考えられる場合の、スピードアップを示し、その一方で、第2の棒(CNV+Pruning)は、追加のニューロンが、ネットワーク全体の精度に影響を及ぼすことなくさらにスキップされる場合の、スピードアップを示す。本節の残りでは、第1の棒に焦点を合わせる。
本発明の実施形態は、最高で55%(cnnS)、最低で24%(google)、平均で37%だけ性能を改善する。性能改善は、ゼロ値ニューロンの比率だけによって左右されるのではなく、対応する層によってかかる全実行時間の比率(本発明の評価された実施形態は、第1の層を加速しない)と、サブユニットが、現行のウィンドウが全ての他のものによって処理されるのを待つアイドル状態にあるときに失われる潜在能力とによっても左右される。グーグルは、ゼロニューロンの平均的比率より高い比率を呈しているが、第1の層は、他のネットワークより相対的に長い、ベースライン上で測定されたときの平均21%に対して、ランタイム合計の35%を占めるランタイムを有する。Googleは、さらに、時間のより多い部分を他の層を計算することに費やしている。
ネットワークでの性能結果は、図11に示すように、時間が、ネットワーク毎にベースライン(b)および本発明の実施形態(c)において時間が進む場合についての分析に注目することによって、よりよく理解され得る。実行アクティビティは、以下のカテゴリに分割される。:1)非畳込層を処理すること(他)、2)第1の畳込層を実行すること(畳込1)、3)ゼロでないニューロンを処理すること(ゼロでない)、4)ゼロニューロンを処理すること(ゼロ)、および5)アイドリングすること(ストール)。サイクルであるタイムユニットを一意的に各カテゴリに割り当てることは可能ではない。例えば、ベースラインでの同じサイクルの間、いくつかのニューロンレーンは、ゼロニューロンを処理している可能性があり、一方で、別のニューロンレーンは、ゼロでないニューロンを処理している可能性がある。さらに、本発明の実施形態では、いくつかのニューロンレーンは、全ての他のニューロンレーンが現行のウィンドウを処理し終わるのを待つアイドル状態である可能性がある。したがって、図は、サイクル毎別々に各ニューロンレーン(本発明の実施形態におけるサブユニットに相当する)を占める実行アクティビティの分析を報告するものである。占められたイベントの総数は、ユニットx(neuron_lanes/ユニット)×サイクルであり、実行時間に正比例し、各イベントが単一のカテゴリに割り当てられることができるようにする測定基準となる。
結果は、第1の層を含む畳込層が、ベースライン上での全てのネットワークにわたる実行アクティビティで優位を占めることを裏付けている。本発明の実施形態のサブユニットがアイドル状態である、アクティビティの相対的に小さい比率は、実施形態が、ゼロ値ニューロンを削除することから、存在する潜在能力のほとんどを獲得することがなんとかできることを示している。
面積
図12は、ベースラインアーキテクチャおよび本発明の実施形態によるアーキテクチャの面積分析を示す。総体的に、本発明の実施形態は、ベースラインを上回って4.49%だけ総面積が増えており、測定された性能改善を考えれば小規模のオーバヘッドである。2つのアーキテクチャの間の面積比較は、以下の通りである。1)フィルタ記憶(SB)が、両方のアーキテクチャでの総面積で優位を占めている。本発明による実施形態は、サブユニットにわたってSBinを区分化しているが、各チャンクが大きい状態(1サブユニット当たり128KB)であるので、そうするためのオーバヘッドは、ごくわずかである。2)本発明による実施形態は、a)オフセットのために25%より大きい記憶域を必要としており、b)16個のバンクを使用しているので、34%だけニューロンメモリ(NM)面積を増やしている。3)ユニット論理において本発明による実施形態の追加コストは、ごくわずかである。4)本発明による実施形態は、15.8%だけSRAM面積を増やしている。これは、オフセットの記憶域専用の追加バッファ空間に因るものである。
電力
図13は、ベースラインでの、および本発明による実施形態での平均電力消費の分析を示す。3つの棒は、静的電力、動的電力、および電力全体に対応するアーキテクチャごとに示されている。各カテゴリは、NM、SB、論理、およびSRAMにわたってさらに分割されている。論理は、データパス、制御ロジック、符号化器、およびメモリディスパッチャを含み、一方で、SRAMは、NBinおよびNBoutを含む。NM電力は、本発明による実施形態では、ベースラインより53%高い。NMがより幅広く、バンク化されているので、これは予想されたことである。しかしながら、NMだけで、ベースラインの総チップ電力の22%を占めており、したがって、総電力コストは小さい。NBinを分割して、ユニットの中に論理を追加するオーバヘッドは、2%だけ電力を増やすにとどまる。SBを再編成することは電力コストにほとんど影響を有しておらず、サブユニットがストールしているとき、シナプスは、読み出されないので、SBの動的電力は18%だけ減少する。全体として、SBの32MBは、総電力消費のほとんどを占め、動的SBエネルギの節約はNM、論理、およびSRAMのオーバヘッドを上回っている。結果的に、本発明の実施形態の電力コストは、平均でベースラインより7%より低い。
EDPおよびED2P
本節では、2つのアーキテクチャに関するエネルギ遅延積(EDP:Energy−Delay Product)およびエネルギ遅延二乗積(ED2P:Energy−Delay Squared Product)を報告する。エネルギおよび性能を考慮して、2つの計算システムを適切に比較する方法に関する異議のないコンセンサスは存在しないが、2つの一般的に使用される測定基準は、EDPおよびED2P(ET 2)である。図14は、ベースラインを上回る本発明の実施形態のEDPおよびED2Pの改善を報告する。平均して、本発明のEDPによる実施形態は、1.47xだけ改善し、ED2Pは、2.01xだけ改善している。
多くの有効でないニューロンを取り除く
プルーニングは、有効でないシナプスまたはニューロンを取り除く、ニューラルネットワークにおける演算削減技法である。本発明の実施形態のアーキテクチャは、それらの演算がスキップされるように、ニューロン値をゼロに設定することによって、動的ニューロンプルーニングの形態を可能にすることができる。この能力を示すために、本節では、ゼロに近いニューロンは、それらの大きさが、事前に特定された層毎の閾値を下回る場合には、ゼロに設定される単純なプルーニング手法を考察する。ベースライン設計は、本発明の実施形態が、閾値比較で再利用する、最大プーリング用コンパレータを包含している。閾値は、あらかじめ決められ、入力次元、パディング、およびストライドなどの層メタデータと共に伝えられる。
ほとんど最適な層毎の閾値構成を見つけるために、調査は、層毎の精度要件を見つけるために以前の作業で使用された手法と同様に、勾配降下を使用して行われる。簡潔にするために、2つの閾値の電力が、調査されたが、ハードウェアは、いかなる固定小数点閾値でもサポートすることができた。ネットワーク精度は、ImageNet検証セットから5000画像にわたって測定され、各クラスにわたって一様にサンプリングされた。
図15は、ニューロンが、層毎の閾値を使用して動的にプルーニングされるときの、精度(y軸)と性能(x軸)との間のトレードオフを示す。ネットワークごとに調査された構成のパレートフロンティアが、示される。ネットワークごとの最左点は、ゼロ値ニューロンだけが取り除かれた、図10の本発明による実施形態に対応している。概括的には、全てのネットワークは、ニューロンが、精度に影響を及ぼすことなくプルーニングされ得る当初の領域を呈している。この領域は、図15では実線で示される。精度の損失を伴わない最大スピードアップは、さらに、図10の(CNV+Pruning)で報告されている。図16の表は、精度の損失なしに最高のスピードアップをもたらす閾値を示す。平均して、プルーニングは、スピードアップを、1.52xに増やすことができ、11%の増加となる。グーグルでは、その代わりに、閾値が、『開始モジュール』毎に特定されている。
全てのネットワークに関して、性能は、さらに改善され得るが、性能改善に伴って、精度が指数的に低下して、精度が失われる。例えば、最大で1%まで相対精度の低下を許容すれば、平均的性能改善を、ベースラインを上回る1.60xにさらに増やし、他方では、最大で10%まで相対精度の低下を可能にすれば、ベースラインを上回る1.87xのスピードアップをもたらす。
上記のように、ZFNAfフォーマットは、有効なニューロン値をブリックコンテナの始めにパッキングすることによって符号化する。それらのオフセットは、16個の値のブリックに対して、1つの値につき4ビットを使用して、別々に符号化された。これは、16ビット値および16個の要素のブリックに対する25%のオーバヘッドを表している。実施形態によれば、メモリオーバヘッドを減らす、代替的な活性化アレイフォーマットが、提供され得る。明暸にするために、以下に続く考察では、ゼロ値活性化だけが、有効でないと考える例を使用する。しかしながら、基準は、実際には、より緩和されることが可能である。
RAWまたは符号化フォーマット(RoE:RAW or Encoded)
この符号化は、有効でない値の全ての可能な組合せを符号化することができないことを犠牲にして、ブリックコンテナにつきただ1つ追加のビットを使用する。具体的には、ブリックの第1のビットは、ブリックが符号化されるかどうかを特定する。ブリックが符号化される場合、残りのビットは、ニューロン値およびそれらのオフセットを記憶するのに使用される。有効な活性化の数が、それらがブリックコンテナの中に適合するようなものである限り、ブリックは、符号化されることができる。そうでない場合、全ての活性化値は、現状のままで記憶され、有効でない活性化をスキップする能力は、特定のブリックでは利用可能ではなくなる。例えば、サイズ4および16ビット値のブリックが、提供される。全体で、それぞれのこのようなブリックは、4x16=64ビットを必要とする。値(1,2,0,0)を含有しているブリックは、65ビットを使用して、以下のように符号化されることができる:(1(0,1)(1,2))。最初の1は、ブリックが符号化されていることを意味している。その後の(オフセット、値)=(0,1)は、オフセットで2ビット、値で16ビットを使用している。全体で、1+2x(16+4)=41ビットを必要とする上述のブリックは、利用可能な65ビットの中に適合することができる。値(2,1,3,4)を含有しているブリックは、65ビットの中に適合することができず、したがって、65ビットを使用して未加工のフォーマット:(0,2,1,3,4)に記憶され、最初の1が、ブリックの残りは、符号化されないこと、および各値が、16ビット長さであることを示す単一ビットである。
ベクトル非有効活性化識別子フォーマット(VIAI:Vector Ineffectual Activation Identifier)
代替的な符号化は、活性化値を適所に残し、追加の16ビットビットベクトルIを使用して、どれが、有効でないのか、したがってスキップされ得るのかを符号化する。例えば、4つの要素のブリックと仮定すれば、(1,2,0,4)を含有しているブリックは、現状のままに、(1101)を含有する4ビットIベクトルを加えたものに符号化され得る。16個の活性化のブリックでは、16ビットごとに、このフォーマットは、16/256、または6.25%のオーバヘッドを課する。あるいは、ゼロでない要素は、一緒にパックされることができ、ベクトルを使用して、それらの元のオフセットを導出することができる。例えば、(1,2,0,4)を含有しているブリックは、(1,2,4,0)に、(1101)を含有する4ビットベクトルを加えたものとして記憶される。この方法の利点は、ゼロ活性化を記憶することまたは伝えることを回避することが可能であり得るということである。
有効な活性化だけを記憶する
別のフォーマットは、有効な値だけを記憶するVIAI上に構築される。例えば、VIAIの中の(1,0,0,4)の4要素活性化ブリックは、(1001,1,0,0,4)として記憶される。圧縮VIAIでは、それは、代わりに(1001,1,4)として記憶される。ここでは、2つの有効でないゼロ活性化は、メモリに記憶されなかった。ブリックが、もはや固定サイズを有していないので、1段階の間接参照が、任意のブリックをフェッチすることをサポートするのに必要である。元の活性化アレイ次元が、(X,Y,I)である場合には、この間接参照アレイIRは、(X,Y[I/16])ポインタを有する。これらは、前の層の出力時に生み出されることができる。
メモリ記憶域のさらなる削減は、精度を下げて活性化を記憶することによって可能であり得る。例えば、https://arxiv.org/abs/1511.05236のコーネル大学ライブラリ経由のオンラインで公的にアクセス可能な「Reduced−Precision Strategies for Bounded Memory in Deep Neural Nets」(2016年)に記載される、Patrick Judd、Jorge Albericio、Tayler Hetherington、Tor Aamodt、Natalie Enright Jerger、Raquel Urtasun、およびAndreas Moshovosの方法を用いることで、プロファイリングに基づいて、前もって層毎に精度を決めることは、可能である。より微細な粒度で精度を調整することも、可能であり得る。しかしながら、ポインタおよび正確な指定子は共に、可能な設置面積の縮小化を減らすオーバヘッドである。
元のCNV実施態様では、有効でない活性化は、前の層の出力時に「取り除かれた」。ZFNAfは、メモリ記憶域オーバヘッドを発生し、活性化オフセット値の書込みおよび読出しは、追加的なエネルギを必要とする。本節では、NMから有効でない活性化をフェッチしながら、タイルにこれらの活性化値を伝える前に、有効でない活性化を「削除する」代替案ディスパッチャ設計を説明する。
具体的には、層の処理は、前に述べたように、ディスパッチャに、1ニューロンレーン当たり1つのブリック、16個の活性化ブリックをフェッチさせることで始まる。次いで、ディスパッチャは、1活性化値当たり1つ、1ブリック当たり16個のコンパレータを使用して、I(VIAIフォーマットで先に記載したように)ベクトルを現場で算出する。
次いで、ディスパッチャは、続けて1サイクル当たり1つの割合で有効な活性化を伝える。活性化値を伝えるとき、ディスパッチャは、含有しているブリックの中の活性化のオフセットをさらに送信することになる。例えば、入力活性化ブリックが(1,0,0,4)を含有する場合、2サイクルにわたって、ディスパッチャは、最初に(00b,1)((オフセット、値))、続いて(11b,4)をタイルに送信する。全ての有効な活性化値がタイルに伝えられると、ディスパッチャは、続いて、特定のニューロンレーン用の別のブリックを処理する。有効でない活性化を検出するための基準であるべきものには、多くの選択肢が、存在する。例えば、ゼロとの単純な比較、任意の閾値との比較、または2つの内の1つの電力である閾値との比較が、使用され得る。
図17は、ディスパッチャでスキップする活性化についての詳細なブリックバッファ実施態様の例を示す。明暸にするために、図は、16個のブリックバッファ335の1つだけを示しており、ブリックが、8個の活性化のみを含有していると仮定する。活性化レーン(図示せず)毎の第2のブリックバッファ335は、現行のブリックから有効な活性化を検出して伝えることを、次のブリックをフェッチすることと重複することができる。より多くのこのようなブリックバッファ335が、NM330の待ち時間を完全に隠すためには必要であり得る。
図17では、ブリックバッファ335の中に配置されたばかりの活性化ブリック340が、示される。各ブリックバッファ335エントリの次に、「有効でない活性化」検出器345(「In?」と標示された六角形として示される)がある。これらの検出器345は、有効でないそうした活性化を識別する。描画されるように、活性化が有効でない場合、出力は、ゼロに設定される。これらの検出器の集合的な出力は、「1であるリーディングビット」検出器355を動かすEベクトル350を形成する。この検出器355の出力は、ブリックバッファ335から活性化値を読み出す復号器320を動かす第1の有効な活性化のオフセットである。次いで、活性化値およびオフセットは、タイルにブロードキャストされる。この活性化のためのEベクトル350位置は、リセットされ、工程は、次の有効な活性化に続く。この例では、4個の有効な活性化値を伝えるためには、4サイクルが必要とされる。
有効でないシナプス(重み)をスキップする
本節では、さらに有効でない重みをスキップすることができる本発明のさらなる実施形態を記載する。重みまたはシナプスの大部分は、有効でないことは、知られている。例えば、https://arxiv.org/abs/1511.05236のコーネル大学ライブラリ経由のオンラインで公的にアクセス可能な「Reduced−Precision Strategies for Bounded Memory in Deep Neural Nets」(2016年)に記載される、Patrick Judd、Jorge Albericio、Tayler Hetherington、Tor Aamodt、Natalie Enright Jerger、Raquel Urtasun、およびAndreas Moshovosの方法論のように、精度が、層毎に調整されると、大部分の重みは、ゼロになる。大抵の場合、追加的重みは、有効ではなく、例えば、重みの値は、ゼロに近い。他の研究は、ネットワークは、さらに、有効でない重みの比率を増やすように訓練され得ることを示してきた。活性化とは異なり、重さの値は、前もって利用可能であり、したがって、どれが有効でないのかを識別することは、静的に行われることができる。この情報は、前もって符号化されることができ、対応する活性化値が、ゼロでない(または、一般に、活性化を有効でないと分類するのに使われている基準によって有効である)ときでさえ、次いで、対応する乗算をランタイムにスキップすることができるハードウェアに伝達され得る。
前述のようにサイクル毎に、本発明の実施形態は、1ユニット当たり16個のフィルタにわたって16個の活性化を並列に処理する。1ユニット当たりの活性化およびフィルタの数は、適宜調整され得る設計パラメータである。有効でない重みをスキップする本発明のこのさらなる実施形態では、その両方が、16であると仮定される。
普遍性を失うことなく、入力ニューロンアレイは、256の深さおよび1のウィンドウストライドを有し得る。明暸にするために、n(x,y,i)を使用して、n(x,y,i)...n(x,y,i+15)を含有する活性化ブリックを表し、(i MOD 16)=0である。同様に、sf(x,y,i)で、フィルタfの重みs(x,y,i)...s(x,y,i+15)を含有する重みブリックを表し、再び、(i MOD 16)=0である。
入力活性化ブリックn(x,y,i)ごとに、16ビットベクトルI(x,y,i)は利用可能であり、ビットjは、活性化n(x,y,i+j)が有効でないかどうか示すとさらに仮定される。1入力活性化ブリック当たり1つのI(x,y,i)ベクトルがあり、それゆえに、iは、16で割り切れる。ZFNAfと同様に、Iベクトルは、その前の層の出力時、または活性化ブリックが、前節の考察のように、NMから読み出されるとき、ランタイムに算出されることができる。重みブリックごとに、類似のISベクトルは、利用可能である。具体的には、fがフィルタである、重みブリックsf(x,y,i)ごとに、どの重みが有効でないかを示す16ビットビットベクトルIS (x,y,i)が、ある。例えば、IS (x,y,i)のビットjは、重みs(x,y,i+j)(フィルタ0)が有効でないかどうかを示す。ISベクトルは、予め算出されて、SBの拡張部分に記憶されることができる。
普遍性を失うことなく、あるサイクルCで、本発明の実施形態において、16個のニューロンレーンの中の16個の活性化ブリックの以下のセットを処理することが始まる場合、ニューロンレーン0は、活性化n(x,y,0)を処理し、一方で、ニューロンレーン15は、n(x,y,240)を処理する。全ての活性化値が有効である場合、これらの16個の活性化ブリックを処理するのに、16サイクルが、必要とされる。しかしながら、前に記載した本発明の実施形態では、活性化ブリックは、有効な活性化だけが、処理されるように、符号化される。
その場合、全てのニューロンレーンは、ブリックの次のセットに移る前に、ほとんどの有効な活性化を備えたものを待つことになる。同等に、ブリック毎に有効な活性化の位置が、上述のIベクトルを使用して符号化される場合には、同じことが可能である。ディスパッチャは、どれが、レーンで処理する次の有効な活性化であるのかを識別するために、ニューロンレーン毎にIベクトル上でリーディングゼロ検出を行う。次いで、それは、Iの中の次のゼロビットに移り、ついには、全ての有効な活性化が、レーンで処理される。全てのニューロンレーンがそれらの有効な活性化を処理したとき、全てが、ブリックの次のセットに移る。
次に、ISベクトルが、さらに利用可能であるので、ディスパッチャがする必要のある全てのことは、それらを考慮して、活性化が伝えられるべきかどうかを決定することである。具体的には、各活性化が、それぞれが異なるフィルタからの16個の重みと結合されるので、全ての対応する重みが、有効でない場合、有効な活性化は、スキップされることがあり得た。すなわち、各ニューロンレーンは、それが、どの活性化を処理しなければならないのかを決定するために、単一のIベクトルを、対応する重みブリック用の16個のISベクトルと結合させることができる。具体的には、n(x,y,i)を処理するニューロンレーンは、以下の通り、Can Skip16ビットベクトルの各ビットjを算出する:
Figure 0006898359
オペレーションは、ブーリアンであり、積は、ANDであり、和は、ORである。すなわち、活性化が、I(活性化ベクトル)によって指定されるように有効でない場合、または全ての対応する重みが、有効でない場合、活性化値は、スキップされることがあり得る。同時的に処理されているフィルタの数が多いほど、そうでなければ有効な活性化がスキップされる確率は、低くなる。それぞれ16個のフィルタの16個のタイルを使用する元のDaDianNao構成では、1フィルタ当たり1つ、256個の重みが、スキップされる活性化では有効でない必要があることになる。しかしながら、プルーニングは、有効でない重みを識別することが可能であると知られており、再訓練は、有効でない重みの数を増やすことが知られてきた。両方とも、本発明の前述した実施形態によれば可能であるものを越えて追加のニューロンをスキップする機会を増やすことになる。そのうえ、他の構成は、より少ないフィルタを同時的に処理する場合もあり、したがって、全て有効でない重みと活性化を結合する、より大きい可能性を有している。
上記の数式では、全てのIS積項が、定数であることに気付くことができる。本発明の前述した実施形態で説明したように、16個の重みブリックの同じセットは、異なるウィンドウ上で同時的に処理される。したがって、IS積(和の第1項)は、予め算出されることができ、最終結果だけが、記憶されて、ハードウェアに伝えられる必要がある。16のブリックサイズでは、そして、16個のフィルタを同時的に処理するタイルでは、オーバヘッドは、1つのブリックにつき16ビットから、16個のブリックにつき16ビットへと下がる。16ビット重みを仮定すると、オーバヘッドは、1/16から1/256へと下がる。
図18Aから図18Cは、有効でない重みをスキップする本発明のこのさらなる実施形態のオペレーションの例を示す。明暸にするために、例は、ブリックサイズは、4であり、2つのフィルタを並列に、そしてフィルタ毎に2つの重み(シナプス)を処理するタイルを示していると仮定する。部分(b)が示すように、活性化(ニューロン)ブリックn(x,y,i+12)は、3つの有効な活性化を含有するので、全ての入力ブリックを処理するのに3サイクルを要する。しかしながら、図18Cが示すように、これらの有効な活性化の1つ、具体的には、n(x,y,13)=6は、共に0であって、ゆえに有効でない重みs(x,y,13)およびs(x,y,13)と結合されていたであろう。本発明のこのさらなる実施形態は、この演算をスキップし、ここでは、入力活性化ブリックは、全て、ちょうど2サイクルで処理され得る。追加の有効な活性化も、有効でない重みと結合されていたであろうことから、スキップされる。
実施形態によれば、アクセラレータは、さらに、ゼロに近い値を選択的にスキップすることによって、バックプロパゲーション訓練プロシージャをスピードアップすることができる。ニューラルネットワークを訓練するために、アクセラレータは、処理を実施することができ、分類エラーが、逆伝搬され、それに応じて、ネットワークの重みが更新される。性能が、値の大きさによって決まる実施形態では、何らかの設定された基準にしたがって、エラーを閾値化することによって、小規模の更新を回避することは、有利であり得る。このようにして、エンジンは、これらの値を処理することを完全にスキップすることができる。一部の重み更新が省略されるので、ニューラルネットワークの詳細および閾値化基準によっては、ある程度の分類精度を実現するのに、より多くの訓練段階が必要な場合もあり得るが、これらの段階のそれぞれは、より少ない時間で行われ、全体的により高速な訓練プロシージャとなる。実施形態によれば、システムは、ニューラルネットワーク訓練のために提供されることができ、逆伝搬されたエラー値は、動的または静的に設定された閾値に基づいて、0に設定され、さらに、システムは、0のエラー値に関する重み更新演算を省略することができる。
上記説明および関連図の部分が、ハードウェアの使用を記載するまたは示唆する場合もあるが、本発明は、GPU(図形処理ユニット)などの、プロセッサ上のソフトウェアでエミュレートされることができ、類似の性能強化を生成することができることを、さらに留意されたい。そのうえ、使用されている「活性化」および「ニューロン」という用語は、技術および文献において交換可能であることが知られており、同じことは、制限なく本明細書に適用されるものである。上述したニューロンメモリ(NM)は、所望の実施態様によって、専用であっても、共有であっても、分散されていても、またはそれらの組み合わせでもよい。
本発明は、その精神または主要な特徴から逸脱することなく、他の具体的な形で具現化され得る。本発明のある種の変更および修正は、当業者には明白であろう。したがって、現在論じている実施形態は、例示的であり制限的ではないと考えられ、本発明の範囲は、前述の説明ではなく、添付の特許請求の範囲によって示されており、特許請求の範囲と等価の意味および範囲の中に入る全ての変更は、したがって、その中に包含されるように意図されている。

Claims (24)

  1. ニューラルネットワークで演算を行うための1つまたは複数のタイルであって、各タイルが、各入力ニューロンが関連オフセットを有している入力ニューロン、オフセット、およびシナプスを受信して、出力ニューロンを生み出す、1つまたは複数のタイルと、
    ニューロンを記憶するための、ディスパッチャおよび符号化器を介して前記1つまたは複数のタイルと通信する活性化メモリであって、
    前記ディスパッチャが、前記活性化メモリからニューロンをそれらの関連オフセットと共に読み出し、前記ニューロンをそれらの関連オフセットと共に前記1つまたは複数のタイルに伝え、前記ディスパッチャが、メモリからシナプスを読み出して、前記シナプスを前記1つまたは複数のタイルに伝え、
    前記符号化器が、前記1つまたは複数のタイルから前記出力ニューロンを受信し、それらを符号化して、前記出力ニューロンを前記活性化メモリに伝え、
    前記オフセットが、ゼロでないニューロン上だけで演算を行うために、前記タイルによって処理される、
    活性化メモリと
    を備える、ニューラルネットワークの層を計算するためのシステム。
  2. 符号化器が、出力ニューロンを関連オフセットと対にされたフォーマットで符号化する、請求項1に記載のシステム。
  3. 前記符号化器が、出力ニューロンをゼロのないニューロンアレイフォーマットで符号化する、請求項1に記載のシステム。
  4. 前記符号化器が、出力ニューロンをRAWまたは符号化フォーマット(RoE)で符号化する、請求項1に記載のシステム。
  5. 前記符号化器が、出力ニューロンをベクトル非有効活性化識別子(VIAI)フォーマットで符号化する、請求項1に記載のシステム。
  6. 前記符号化器が、出力ニューロンを圧縮VIAIフォーマットで符号化する、請求項1に記載のシステム。
  7. 前記タイルが、シナプスを有効でないと識別する1つまたは複数のビットをさらに受信し、前記タイルが、有効な重みを備えたゼロでないニューロン上だけで演算を行うために、前記1つまたは複数のビットを処理する、請求項1に記載のシステム。
  8. 閾値を下回る少なくとも1つのゼロでないニューロンが、その上で演算が行われないように、ゼロに設定される、請求項1に記載のシステム。
  9. ニューラルネットワークの層を計算するのに使用されるアクセラレータを備える集積回路であって、
    ニューラルネットワークで演算を行うための1つまたは複数のタイルであって、各タイルが、各入力ニューロンが関連オフセットを有している入力ニューロン、オフセット、およびシナプスを受信して、出力ニューロンを生み出す、1つまたは複数のタイルと、
    ニューロンを記憶するための、ディスパッチャおよび符号化器を介して前記1つまたは複数のタイルと通信する活性化メモリであって、
    前記ディスパッチャが、前記活性化メモリからニューロンをそれらの関連オフセットと共に読み出し、前記ニューロンをそれらの関連オフセットと共に前記1つまたは複数のタイルに伝え、前記ディスパッチャが、メモリからシナプスを読み出して、前記シナプスを前記1つまたは複数のタイルに伝え、
    前記符号化器が、前記1つまたは複数のタイルから前記出力ニューロンを受信し、それらを符号化して、前記出力ニューロンを前記活性化メモリに伝え、
    前記オフセットが、ゼロでないニューロン上だけで演算を行うために、前記タイルによって処理される、
    活性化メモリと
    を備える、集積回路。
  10. 符号化器が、出力ニューロンを関連オフセットと対にされたフォーマットで符号化する、請求項9に記載の集積回路。
  11. 前記符号化器が、出力ニューロンをゼロのないニューロンアレイフォーマットで符号化する、請求項9に記載の集積回路。
  12. 前記符号化器が、出力ニューロンをRAWまたは符号化フォーマット(RoE)で符号化する、請求項9に記載の集積回路。
  13. 前記符号化器が、出力ニューロンをベクトル非有効活性化識別子(VIAI)フォーマットで符号化する、請求項9に記載の集積回路。
  14. 前記符号化器が、出力ニューロンを圧縮VIAIフォーマットで符号化する、請求項9に記載の集積回路。
  15. 前記タイルが、シナプスを有効でないと識別する1つまたは複数のビットをさらに受信し、前記タイルが、有効な重みを備えたゼロでないニューロン上だけで演算を行うために、前記1つまたは複数のビットを処理する、請求項9に記載の集積回路。
  16. 閾値を下回る少なくとも1つのゼロでないニューロンが、その上で演算が行われないように、ゼロに設定される、請求項9に記載の集積回路。
  17. ニューラルネットワークで演算を行うことにおいて有効でないオペレーションを減らすための方法であって、
    ニューロンストリームの中のゼロでないニューロンを識別して、ニューロンごとにオフセット値を作成することと、
    ニューロンごとの前記オフセット値を前記ニューロンと共に、前記ニューロンを処理するタイルに伝えることと、
    前記タイルが、前記オフセット値を使用して、演算を行う前記ゼロでないニューロンを識別することと、
    前記タイルが、前記ゼロでないニューロン上だけで演算を行って、出力ニューロン生み出すことと、
    出力ニューロンを活性化メモリに記憶することと
    を含む、方法。
  18. 前記方法が、関連オフセット値を備えた前記出力ニューロンを符号化することをさらに含む、請求項17に記載の方法。
  19. 前記符号化が、ゼロのないニューロンアレイフォーマットにある、請求項18に記載の方法。
  20. 前記符号化が、RAWまたは符号化フォーマット(RoE)にある、請求項18に記載の方法。
  21. 前記符号化が、ベクトル非有効活性化識別子(VIAI)フォーマットにある、請求項18に記載の方法。
  22. 前記符号化が、圧縮VIAIフォーマットにある、請求項18に記載の方法。
  23. 前記タイルが、シナプスを有効でないと識別する1つまたは複数のビットを受信することと、有効な重みを備えたゼロでないニューロン上だけで演算を行うために、前記1つまたは複数のビットを処理することとをさらに含む、請求項17に記載の方法。
  24. 閾値を下回る少なくとも1つのゼロでないニューロンを、その上で演算が行われないようにゼロに設定することをさらに含む、請求項17に記載の方法。
JP2018565018A 2016-06-14 2017-06-14 ディープニューラルネットワーク用のアクセラレータ Active JP6898359B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021097593A JP7266065B2 (ja) 2016-06-14 2021-06-10 ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662349716P 2016-06-14 2016-06-14
US62/349,716 2016-06-14
US201762490712P 2017-04-27 2017-04-27
US62/490,712 2017-04-27
PCT/CA2017/050731 WO2017214728A1 (en) 2016-06-14 2017-06-14 Accelerator for deep neural networks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021097593A Division JP7266065B2 (ja) 2016-06-14 2021-06-10 ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2019522850A JP2019522850A (ja) 2019-08-15
JP6898359B2 true JP6898359B2 (ja) 2021-07-07

Family

ID=60662974

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018565018A Active JP6898359B2 (ja) 2016-06-14 2017-06-14 ディープニューラルネットワーク用のアクセラレータ
JP2021097593A Active JP7266065B2 (ja) 2016-06-14 2021-06-10 ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021097593A Active JP7266065B2 (ja) 2016-06-14 2021-06-10 ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム

Country Status (7)

Country Link
US (2) US11423289B2 (ja)
EP (1) EP3469522A4 (ja)
JP (2) JP6898359B2 (ja)
KR (2) KR102459855B1 (ja)
CN (1) CN109328361B (ja)
CA (1) CA2990712C (ja)
WO (1) WO2017214728A1 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
KR102415506B1 (ko) * 2016-10-26 2022-07-01 삼성전자주식회사 뉴럴 네트워크 간소화 방법 및 장치
JP6832050B2 (ja) 2017-02-23 2021-02-24 セレブラス システムズ インク. 加速化ディープラーニング
EP4372620A3 (en) * 2017-04-06 2024-07-17 Shanghai Cambricon Information Technology Co., Ltd Neural network processor and neural network computation method
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
EP3607506B1 (en) 2017-04-17 2021-07-14 Cerebras Systems Inc. Fabric vectors for deep learning acceleration
EP3610612B1 (en) 2017-04-17 2022-09-28 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
CN108256628B (zh) * 2018-01-15 2020-05-22 合肥工业大学 基于多播片上网络的卷积神经网络硬件加速器及其工作方法
SG11202007532TA (en) * 2018-02-16 2020-09-29 Governing Council Univ Toronto Neural network accelerator
US20190303757A1 (en) * 2018-03-29 2019-10-03 Mediatek Inc. Weight skipping deep learning accelerator
US11886979B1 (en) 2018-04-20 2024-01-30 Perceive Corporation Shifting input values within input buffer of neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US10977338B1 (en) 2018-04-20 2021-04-13 Perceive Corporation Reduced-area circuit for dot product computation
CN108647774B (zh) * 2018-04-23 2020-11-20 瑞芯微电子股份有限公司 一种优化稀疏性矩阵运算的神经网络方法和电路
US20210125046A1 (en) * 2018-05-08 2021-04-29 The Governing Council Of The University Of Toronto Neural network processing element
CN109086819B (zh) * 2018-07-26 2023-12-05 北京京东尚科信息技术有限公司 caffemodel模型压缩方法、系统、设备及介质
WO2020044152A1 (en) * 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
WO2020044238A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
US11586417B2 (en) 2018-09-28 2023-02-21 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks
GB2577732B (en) 2018-10-04 2022-02-23 Advanced Risc Mach Ltd Processing data in a convolutional neural network
US20200117988A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Networks for distributing parameters and data to neural network compute cores
KR20200057814A (ko) * 2018-11-13 2020-05-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
WO2020121203A1 (en) * 2018-12-11 2020-06-18 Mipsology SAS Realigning streams of neuron outputs in artificial neural network computations
KR102556506B1 (ko) * 2019-01-15 2023-07-19 한국전자통신연구원 뉴로모픽 연산 장치 및 그것의 동작 방법
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US10878321B2 (en) * 2019-02-28 2020-12-29 DeepCube LTD. Partial activation of multiple pathways in neural networks
US11379420B2 (en) * 2019-03-08 2022-07-05 Nvidia Corporation Decompression techniques for processing compressed data suitable for artificial neural networks
KR20200111939A (ko) * 2019-03-20 2020-10-05 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US20200311511A1 (en) * 2019-03-26 2020-10-01 Mipsology SAS Accelerating neuron computations in artificial neural networks by skipping bits
US11868901B1 (en) 2019-05-21 2024-01-09 Percieve Corporation Compiler for optimizing memory allocations within cores
TWI737228B (zh) 2020-03-20 2021-08-21 國立清華大學 基於記憶體內運算電路架構之量化方法及其系統
US20230273828A1 (en) * 2020-07-21 2023-08-31 The Governing Council Of The University Of Toronto System and method for using sparsity to accelerate deep learning networks
KR20220049294A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
US20220188492A1 (en) * 2020-12-10 2022-06-16 Memryx Incorporated Chiplet based artificial intelligence accelerators and configuration methods
US20220197634A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Efficient divide and accumulate instruction when an operand is equal to or near a power of two
US12118057B2 (en) 2021-01-14 2024-10-15 Microsoft Technology Licensing, Llc Computing partial matrices at hardware accelerator
KR102644702B1 (ko) * 2021-02-08 2024-03-06 한양대학교 산학협력단 컨볼루션 신경망 가속 방법 및 장치
CN113128681B (zh) * 2021-04-08 2023-05-12 天津大学 一种多边缘设备辅助的通用cnn推理加速系统
JP2022178980A (ja) 2021-05-21 2022-12-02 富士通株式会社 機械学習プログラム、機械学習方法および情報処理装置
US20230053294A1 (en) * 2021-08-13 2023-02-16 Taiwan Semiconductor Manufacturing Co., Ltd. Bitwise product-sum accumulations with skip logic
US11694733B2 (en) 2021-08-19 2023-07-04 Apple Inc. Acceleration of in-memory-compute arrays
KR102700292B1 (ko) * 2021-11-26 2024-08-29 건국대학교 산학협력단 신경망 가속기의 통신 특성을 동적으로 재구성하는 프로세서 장치, 및 그의 구동 방법
GB2621383A (en) * 2022-08-11 2024-02-14 Advanced Risc Mach Ltd Mechanism for neural network processing unit skipping

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740270A (en) * 1988-04-08 1998-04-14 Neuromedical Systems, Inc. Automated cytological specimen classification system and method
JPH0748207B2 (ja) * 1989-04-14 1995-05-24 シャープ株式会社 行列演算装置
FR2664072A1 (fr) * 1990-06-29 1992-01-03 Thomson Csf Systeme de calcul neuronal.
JPH08315141A (ja) 1995-05-15 1996-11-29 Mitsubishi Electric Corp 画像認識装置
US6658554B1 (en) * 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
JP4620943B2 (ja) * 2003-10-16 2011-01-26 キヤノン株式会社 積和演算回路及びその方法
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
US8275727B2 (en) * 2009-11-13 2012-09-25 International Business Machines Corporation Hardware analog-digital neural networks
US8311965B2 (en) * 2009-11-18 2012-11-13 International Business Machines Corporation Area efficient neuromorphic circuits using field effect transistors (FET) and variable resistance material
US8467623B2 (en) 2010-03-26 2013-06-18 Brain Corporation Invariant pulse latency coding systems and methods systems and methods
US8510239B2 (en) * 2010-10-29 2013-08-13 International Business Machines Corporation Compact cognitive synaptic computing circuits with crossbar arrays spatially in a staggered pattern
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US9373073B2 (en) * 2012-12-21 2016-06-21 International Business Machines Corporation Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation
US9262712B2 (en) * 2013-03-08 2016-02-16 International Business Machines Corporation Structural descriptions for neurosynaptic networks
US9798751B2 (en) * 2013-10-16 2017-10-24 University Of Tennessee Research Foundation Method and apparatus for constructing a neuroscience-inspired artificial neural network
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
US20170193361A1 (en) * 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Neural network training performance optimization framework
US11170294B2 (en) * 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile

Also Published As

Publication number Publication date
JP2019522850A (ja) 2019-08-15
US20190205740A1 (en) 2019-07-04
WO2017214728A1 (en) 2017-12-21
CN109328361A (zh) 2019-02-12
CN109328361B (zh) 2020-03-27
EP3469522A1 (en) 2019-04-17
US11423289B2 (en) 2022-08-23
JP7266065B2 (ja) 2023-04-27
CA2990712C (en) 2018-09-04
KR20190019081A (ko) 2019-02-26
JP2021144750A (ja) 2021-09-24
US20220327367A1 (en) 2022-10-13
CA2990712A1 (en) 2017-12-21
KR102120395B1 (ko) 2020-06-08
KR102459855B1 (ko) 2022-10-27
EP3469522A4 (en) 2020-03-18
KR20200067916A (ko) 2020-06-12

Similar Documents

Publication Publication Date Title
JP6898359B2 (ja) ディープニューラルネットワーク用のアクセラレータ
Kiningham et al. GRIP: A graph neural network accelerator architecture
JP6890615B2 (ja) ディープニューラルネットワークについての加速器
CN108427990B (zh) 神经网络计算系统和方法
Venkataramanaiah et al. Automatic compiler based FPGA accelerator for CNN training
US11763156B2 (en) Neural network compression based on bank-balanced sparsity
US9632729B2 (en) Storage compute device with tiered memory processing
CN108090565A (zh) 一种卷积神经网络并行化训练加速方法
CN111178494A (zh) 神经处理单元、神经处理系统和应用系统
CN101717817A (zh) 对基于随机上下文无关文法的rna二级结构预测进行加速的方法
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
Sommer et al. Efficient hardware acceleration of sparsely active convolutional spiking neural networks
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
CN111522776B (zh) 一种计算架构
JP2023534068A (ja) スパース性を使用して深層学習ネットワークを加速するためのシステム及び方法
Liu et al. SoBS-X: Squeeze-out bit sparsity for ReRAM-crossbar-based neural network accelerator
CN115836346A (zh) 存内计算设备及其数据处理方法
CN116997910A (zh) 张量控制器架构
US12026548B2 (en) Task manager, processing device, and method for checking task dependencies thereof
Sarma Optimizing Deep Learning for Memory and Compute: A joint Algorithm-Architecture Exploration
CN111860797A (zh) 运算装置
CN117933325A (zh) 一种新型计算体系结构
Nag Enabling Near Data Processing for Emerging Workloads
Wang et al. Enabling High-Efficient ReRAM-based CNN Training via Exploiting Crossbar-Level Insignificant Writing Elimination
KR20240064469A (ko) 태스크 매니저 및 그의 태스크 디펜던시 체크 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200525

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200525

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210212

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20210224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210511

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210610

R150 Certificate of patent or registration of utility model

Ref document number: 6898359

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250