JP7166389B2 - ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 - Google Patents

ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 Download PDF

Info

Publication number
JP7166389B2
JP7166389B2 JP2021087474A JP2021087474A JP7166389B2 JP 7166389 B2 JP7166389 B2 JP 7166389B2 JP 2021087474 A JP2021087474 A JP 2021087474A JP 2021087474 A JP2021087474 A JP 2021087474A JP 7166389 B2 JP7166389 B2 JP 7166389B2
Authority
JP
Japan
Prior art keywords
bit
serial
neurons
tiles
neuron
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
JP2021087474A
Other languages
English (en)
Other versions
JP2021144727A (ja
Inventor
ジュド,パトリック
アルベリシオ,ジョルジ
ラスコルツ,アルベルト デルマス
モショヴォス,アンドレアス
シャリフィモハダム,サイヤ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021144727A publication Critical patent/JP2021144727A/ja
Application granted granted Critical
Publication of JP7166389B2 publication Critical patent/JP7166389B2/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/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)

Description

本明細書は概して、ニューラルネットワークに関し、特に、使用される数値表現の長さと比例して拡張可能な実行時間によるディープニューラルネットワーク(DNN)についての加速器に関する。
ディープニューラルネットワーク(DNN)は、物体及び言語認識などの多くの認識タスクにおける最新技術である。DNNは、層のフィードフォワード配置を含み、各々の層は、グラフィックプロセシングユニット(GPU)の使用により共通して利用される高計算要求及び並列処理を示す。DNNの高計算要求及びより高いエネルギー効率についての必要性は、特殊目的アーキテクチャの開発及び提案を動機付けている。しかしながら、電力がDNN設計における制限要因になり続けている。
したがって、本分野において改善についての必要性が残っている。
本発明の態様に従って、ビット直列ニューラルネットワーク加速器が提供される。
本発明の実施形態に従って、ニューラルネットワークにおけるビット直列計算についてのシステムが提供され、システムは、ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、各々のビット直列タイルは、入力ニューロン及びシナプスを受信し、出力ニューロンを生成する、1つ以上のビット直列タイルと、ニューロンを記憶し、ディスパッチャ及び換算器を介して1つ以上のビット直列タイルと通信する活性化メモリと、を備え、ディスパッチャは、活性化メモリからニューロンを読み込み、第1のインタフェースを介して1つ以上のビット直列タイルにニューロンを通信し、ディスパッチャは、メモリからシナプスを読み込み、第2のインタフェースを介して1つ以上のビット直列タイルにシナプスを通信し、換算器は、1つ以上のビット直列タイルから出力ニューロンを受信し、第3のインタフェースを介して活性化メモリに出力ニューロンを通信し、第1のインタフェース及び第2のインタフェースのうちの1つは、1つ以上のビット直列タイルにニューロン又はシナプスをビットで直列に通信し、第1のインタフェース及び第2のインタフェースのうちのもう一方は、1つ以上のビット直列タイルにニューロン又はシナプスをビットで並列に通信する。
本発明の更なる実施形態に従って、ニューラルネットワークにおけるビット直列計算についてのシステムが提供され、システムは、ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、各々のビット直列タイルは、入力ニューロン及びシナプスを受信し、出力ニューロンを通信する、1つ以上のビット直列タイルと、ニューロンを記憶し、ディスパッチャ及び換算器を介して1つ以上のビット直列タイルと通信する活性化メモリと、を備え、ディスパッチャは、活性化メモリからニューロンを読み込み、第1のインタフェースを介して1つ以上のビット直列タイルにニューロンを通信し、ディスパッチャは、メモリからシナプスを読み込み、第2のインタフェースを介して1つ以上のビット直列タイルにシナプスを通信し、換算器は、1つ以上のビット直列タイルから出力ニューロンを受信し、第3のインタフェースを介して活性化メモリに出力ニューロンを通信し、第1のインタフェース及び第2のインタフェースは、1つ以上のビット直列タイルにニューロン及びシナプスをビットで直列に通信する。
本発明の更なる実施形態に従って、各々のビット直列タイルは更に、シナプスバッファ、ディスパッチャからの入力ニューロンを保持する入力ニューロンバッファ、及び換算器への通信を保留している出力ニューロンを保持するニューロン出力バッファを含んでもよい。
本発明の更なる実施形態に従って、ビット直列ニューラルネットワーク加速器を含む集積回路が提供され、集積回路は、ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、各々のビット直列タイルは、入力ニューロン及びシナプスを受信し、出力ニューロンを生成する、1つ以上のビット直列タイルと、ニューロンを記憶し、ディスパッチャ及び換算器を介して1つ以上のビット直列タイルと通信する活性化メモリと、を備え、ディスパッチャは、活性化メモリからニューロンを読み込み、第1のインタフェースを介して1つ以上のビット直列タイルにニューロンを通信し、ディスパッチャは、メモリからシナプスを読み込み、第2のインタフェースを介して1つ以上のビット直列タイルにシナプスを通信し、換算器は、1つ以上のビット直列タイルから出力ニューロンを受信し、第3のインタフェースを介して活性化メモリに出力ニューロンを通信し、第1のインタフェース及び第2のインタフェースのうちの1つは、1つ以上のビット直列タイルにニューロン又はシナプスをビットで直列に通信し、第1のインタフェース及び第2のインタフェースのうちのもう一方は、1つ以上のビット直列タイルにニューロン又はシナプスをビットで並列に通信する。
本発明の更なる実施形態に従って、ビット直列ニューラルネットワーク加速器を含む集積回路が提供され、集積回路は、ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、各々のビット直列タイルは、入力ニューロン及びシナプスを受信し、出力ニューロンを通信する、1つ以上のビット直列タイルと、ニューロンを記憶し、ディスパッチャ及び換算器を介して1つ以上のビット直列タイルと通信する活性化メモリと、を備え、ディスパッチャは、活性化メモリからニューロンを読み込み、第1のインタフェースを介して1つ以上のビット直列タイルにニューロンを通信し、ディスパッチャは、メモリからシナプスを読み込み、第2のインタフェースを介して1つ以上のビット直列タイルにシナプスを通信し、換算器は、1つ以上のビット直列タイルから出力ニューロンを受信し、第3のインタフェースを介して活性化メモリに出力ニューロンを通信し、第1のインタフェース及び第2のインタフェースは、1つ以上のビット直列タイルにニューロン及びシナプスをビットで直列に通信する。
本出願に従った他の態様及び特徴は、添付図面と共に発明の実施形態の以下の説明をレビューするときに当業者にとって明らかになるであろう。
例としてのみ、本発明の実施形態を示し、それらをどのように実行することができるかを示す、添付図面への参照がここでなされる。
従来技術のビット並列DNNタイルである。 本発明の実施形態に従ったニューラルプロセシングユニットである。 実施形態に従ったビット直列内積ユニット(SIP)である。 実施形態に従ったビット直列タイルとニューラルメモリ(NM)との間のデータ移動のデータフローチャートである。 実施形態に従ったディスパッチャである。 実施形態に従ったニューロンメモリマッピングのデータフローチャートである。 本発明の実施形態の実験的な加速化の結果の棒グラフである。 本発明の実施形態の実験的なエネルギー効率の結果の棒グラフである。 本発明の実施形態の性能対正確度の実験的な結果の線グラフである。 本発明の実施形態の性能の実験的な結果の棒グラフである。 本発明の実施形態の性能の実験的な結果の棒グラフである。 本発明の実施形態に従ったニューラルプロセシングユニット又はタイルである。 本発明の実施形態に従ったビット直列内積ユニット(SIP)である。 図14AはDaDNを表す従来技術のビット並列処理エンジンであり、図14B及び図14Cは2つのサイクルにわたる畳み込み層の処理を示す。 本発明の実施形態に従った畳み込み層を処理するニューラルプロセシングユニットを示し、図15Aはエンジンの構造を示し、図15B~図15Dはそれが畳み込み層をどのように処理するかを示す。 本発明の実施形態に従った完全結合層を処理するニューラルプロセシングユニットを示す。 本発明の実施形態に従ったニューラルプロセシングユニットによって処理される完全結合層及び畳み込み層についての層ごとの精度の結果を表示するテーブルである。 本発明の実施形態に従ったニューラルプロセシングユニットによって処理される完全結合層及び畳み込み層についての実行時間及びエネルギー効率の改善を表示するテーブルである。 発明の実施形態に従ったサイクルごとに2つの活性化ビットを処理するニューラルプロセシングユニットの完全結合層及び畳み込み層についての相対的性能を表示するテーブルである。 本発明の実施形態に従った各々が8ビットの基準値精度を有する4つのニューロンのグループの同時処理を示す。 本発明の実施形態に従ったニューラルプロセシングユニットである。 本発明の実施形態に従ったビット直列内積ユニット(SIP)である。 実施形態に従った完全結合層及びニューラルプロセシングユニットのシナプス/重みについての層ごとの精度の結果を表示するテーブルである。 本発明の実施形態に従ったサイクルごとに2つ及び4つの活性化ビットを処理するニューラルプロセシングユニットについての実行時間性能及びエネルギー効率を表示するテーブルである。 ネットワークごとの入力ニューロンごとの1ビットカウントの累積線グラフである。 本発明の実施形態に従ったビット直列内積ユニット(SIP)である。 本発明の実施形態のゼロビットの読み飛ばし(skipping)性能の実験的な結果の棒グラフである。 図28Aは2つのサイクルにわたる例示的な2b×2b層を処理する従来のビット並列処理エンジンを示し、図28B~図28Fは本発明の実施形態が完全結合層をどのように処理するかを示す。
図面において同様の参照符号は、同様の又は対応する要素を示している。
図1は、Chen et al.[Y.Chen,T.Luo,S.Liu,S.Zhang,L.He,J.Wang,L.Li,T.Chen,Z.Xu,N.Sun,and O.Temam,“DaDianNao:A machine-learning supercomputer,”in Microarchitecture(MICRO),2014 47th Annual IEEE/ACM International Symposium on,pp.609-622,Dec 2014.]によって提案されたものなど、従来技術のビット並列ディープニューラルネットワーク(DNN)システムを表すビット並列タイル100である。各々の従来技術のビット並列チップは、16のそのようなタイル100を含む。各々のタイルは、シナプスサブレーンごとに1つの、サイクルごとに256のシナプスを提供する、シナプスバッファ(SB)110を有する。タイルはまた、ニューロンレーン140ごとに1つのサイクルごとに16のニューロンを提供する、入力ニューロンバッファ(NBin)120と、サイクルごとに16の出力ニューロンを受け付けることができるニューロン出力バッファ(NBout)130とを有する。計算ロジックは、ニューラル機能ユニット(NFU:Neural Functional Unit)、又はユニット(unit)と称される。サイクルごとに、各々のNFUは、部分出力ニューロンのブリックo(q,w,f)を産出する。ブリックは、好ましくは第3次元、例えば、o(q,w,f)、…、o(q,w,f+15)に沿って隣接し、好ましくは、Fが16によって割り切ることができる、16の要素の集合として定義される。NFUは、1つの入力ニューロンブリックn(x,y,i)及び16のフィルタ、s (k,l,i)~s f+15(k,l,i)の各々からの16のシナプスブリックの1つを処理することによってそれを行う。この目的のために、NFUは、16のニューロンレーン140及び16フィルタレーン150を有し、それらの各々が256のシナプスレーンの合計に対し16のシナプスレーン160を有する。
各々のニューロンレーン140は、16のフィルタレーン150の各々からの1つの、16のシナプスサブレーン160に結合される。シナプスレーン160は、そのシナプスを入力ニューロンと乗算し、フィルタ150の全てのシナプスレーン160からの16の積が部分和に換算される。合計で、フィルタレーン150の各々は、ユニットごとに合計16の出力ニューロンについて、サイクルごとに部分和を産出する。内積ユニット(IP)170としての1つの出力ニューロンの産出に関連付けられたロジックを参照する。完全なウインドウが処理されると、16の結果として生じる和は、16の出力ニューロンを産出するために、非線形活性化関数、fを通じて供給される。サイクルごとの乗算及び換算は、シナプスサブレーン160ごとに1つの256の乗算器及び出力ニューロンごとに1つの16の17入力加算器ツリー(16の積プラスNBout130からの部分和)として実施される。
ビット並列システムの目的は、オフチップ帯域幅を最小化すると共に、オンチップ計算の利用を最大化するとして述べられる。オフチップからシナプスをフェッチすることを回避するために、SB110は、最高クラスのネットワークについて処理されている層(複数可)についての全てのシナプスをそれが記憶することを可能にするNFUごとに1つの、2MBのチャンクに分散されて32MBのeDRAMである。全体的に、ビット並列ノードは、ユニットごとに16の、最大で256のフィルタを並列に処理することができる。初期入力及び最終出力を除く全ての内部層のニューロン出力が、4MBの中央eDRAM、又はニューロンメモリ(NM)に共有して記憶される。オフチップアクセスは、入力画像、層ごとに1回シナプスを読み込み、最終出力を書き込むためのみ必要とされる。
処理は、外部メモリから第1の層のフィルタシナプス、及び入力画像を読み込むことによって開始する。シナプスは、SBにわたって分散され、入力はNMに記憶される。サイクルごとに、入力ニューロンブリック、n(x,y,i)は、全てのユニットにブロードキャストされる。層の出力ニューロンは、次の層を処理するとき、NBout130を通じてNMに記憶され、NBin120を通じて再度供給される。シナプスの次のセットを外部メモリからロードすることは、必要に応じて、現在の層の処理と重複され得る。
ビット直列処理
実施形態に従って、図2に示されるビット直列タイル200は、ニューロンの発火を記憶するために活性化メモリを使用してもよい。使用される用語「活性化メモリ」及び「ニューロンメモリ」は、本分野及び文献において相互に交換可能であり、限定なしに、同様のことが以下で適用される。活性化メモリは、ビット直列加速器の所望の実装態様に従って、専用とされ、共有され、分散され、又はそれらの組み合わせであってもよい。よって、1つの実施形態では、ビット直列タイル200は、使用される精度に関わらず、同一のNM読み込み及び書き込み相互結合構造を使用してもよく、NMにおける16ビットのコンテナにニューロンを記憶してもよい。ビット直列加速器は、NFUにそれらをビットで直列に供給する間、既存のビット並列インタフェースを使用してNMからニューロンを読み込むためにディスパッチャユニットを導入してもよい。各々のビット直列タイルはまた、NMに出力ニューロンを記憶するために換算器ユニットを使用する。
実施形態に従って、ビット直列DNN加速器がニューロンについてのビット直列計算を使用することができるので、それは、ビット並列DNNよりも多くのニューロンを並列に処理することができ、それによって、それは、最大精度が使用されるときに同程度の性能を維持することができる。例えば、最悪の場合、ビット直列DNN加速器は、16ビットのニューロンを含む積を計算するために16のサイクルを使用することがある。16のニューロンブリックを並列に処理することができるビット並列タイルを比較するために、ビット直列タイルは、16のブリック、又は256のニューロンを並列に処理することができる。畳み込み層の並列処理は、ニューロンを並列に処理するための多数のオプションを提供する。
実施形態に従って、図2に示されるビット直列タイル200は、ニューロンブリックを使用して、各々のウインドウから16のウインドウを並列に処理する能力を有し、それによって、16×16の出力ニューロンを並列に計算するために、16のフィルタの各々からの同一の16のシナプスを使用することができる。例えば、2つのストライドを有する層について、ビット直列タイルは、サイクルごとのニューロンごとの単一のビットの、16のニューロンブリックn(x,y,i)、n(x+2,y,i)~n(x+30,y,i)を並列に処理することができる。このケースでは、ビット直列タイルがフィルタfi~fi+15を処理すると仮定して、pサイクルの後、それは、以下の部分出力ニューロン、o(x/2,y/2,fi)~o(x/2+15,y,fi)を産出し、又はx次元の出力ニューロンブリック上で16の連続したパレットを産出する。ビット並列タイル100は、16のサイクルにわたって16のニューロンブリックを処理することができ、ビット直列タイル200は、pサイクルにわたって同時であるが、ビットで直列にそれらを処理することができ、pは、ビット内のニューロンの長さ又は精度である。pが16未満である場合、ビット直列タイル200は、ビット並列タイル100よりも16/pだけ性能を上回ることができ、pが16であるとき、ビット直列タイルは理想的に、ビット並列タイル性能に相当することができる。
タイル構成
図2に示される実施形態に従って、ビット直列タイル200は、以下のように構成されてもよく、タイルのNBin220は、16ウインドウレーン240において論理的に構成されてもよく、各々は、256のニューロンレーンの合計に対し16ビットの直列ニューロンレーン280グループを含んでもよい。各ウインドウレーン240は16の入力ニューロンアレイウインドウの1つを処理してもよい。実施形態に従って、SB210は、ビット並列タイル100と同一であってもよく、16のフィルタレーン250において論理的に構成されてもよく、各々は、16のシナプスレーン260を含んでもよい。SB210及びNBin220は、16×16の直列内積(SIP)サブユニット270のアレイと通信し、又はアレイに結合してもよく、各々のSIP270は、1つの出力ニューロンを産出することができる。行f及び列wにおけるSIP(f,w)270は、フィルタレーンf及びニューロンウインドウwを処理することができる。SBフィルタレーンfは、相互結合、例えば、バスを介して、行fに沿って全てのSIP270と通信してもよく、又は全てのSIP270に結合してもよく、NBinウインドウレーンwは、相互結合、例えば、バスを介して、列wに沿ってSIPと通信してもよく、又はSIPに結合してもよい。各々のSIP270は、シナプスレジスタ(SR)にラッチすることができる16のニューロンビット及びシナプスブリックを入力として受け付けてもよい。SRは、完全結合層をサポートすることができる。図2(及び、他の後続の図)は、ビット直列タイルをハードウェアとして説明し、ビット直列タイルは、GPU(グラフィックプロセシングユニット)などのプロセッサ上でソフトウェアでエミュレートされてもよく、同様の性能強化を生じさせることができる。
実施形態に従って、SIP270が図3に示される。各々のSIP270は、256の17入力加算器ツリーの合計に対し17入力加算器ツリー310を含んでもよく、ビット並列IPは、16のみ(IPごとに1つ)を使用してもよい。ビット直列タイル200についての領域を著しく増大させることができるように思えるが、各々のビット並列IP170は、256の2入力16ビットの乗算器を必要とし、ビット直列IP270は、何ら必要とせず、或る程度の領域の増大を相殺する。
実施形態に従って、ビット直列タイル200における処理は、各々のpサイクルの段階で続行してもよく、pは、ビット内のニューロンの精度である。段階の第1のサイクルにおいて、SB210は、フィルタごとの1つのブリックの、16ビットのシナプスの16のブリックを提供することができる。各々のSIP270は、その対応するシナプスブリックをそのSRにラッチする。サイクルごとに、NBin220は、256のニューロンビットを提供することができ、各々のニューロンビットは、同一の列に沿ったSIP270ごとに1つの、16のシナプスを有するビット単位(bit-wise)のANDedであってもよい。各AND演算は、16ビットの項を産出することができる。よって、各々のSIP270は、1つのフィルタ250及び1つのウインドウ240に対応する16の項を計算することができる。SIP270は、専用の16入力加算器ツリー310を使用して、その16の項を部分出力ニューロンに合計してもよい。段階の残りのp-1サイクルについて、各々のSIP270は、その部分出力ニューロンを1ビットだけシフトさせてもよいと共に、別の16項を累積し、ビット直列乗算を実施してもよい。pサイクルの後、256の16ビットの部分出力ニューロンに等しい出力ニューロンパレットを完全に産出することができる。
内積ユニット
説明される実装態様では、ビット直列ユニット200は、複数のサイクルにわたって256の出力ニューロンを同時に且つビットで直列に産出することができる。各々の出力ニューロンの計算は、内積である。ビット並列システム100が16の入力ニューロン及び16のシナプスのこの内積を一度に計算し、ビット直列システム200は、異なってこれを行ってもよい。ビット直列システム200では、出力ニューロンごとに、及び各々のサイクルにおいて、16のシナプスに沿った16の入力ニューロンの各々からの1ビットが組み合わされてもよい。
ニューロンをビットで直列に乗算することは直接的であり、ニューロンが直列に供給され、シナプスが並列に供給される。特に、長さpのビットの入力ニューロンnを仮定して、nの二値表現は、
Figure 0007166389000001
である。
はnのb番目のビットである。シナプスsを仮定して、乗算s×nを
Figure 0007166389000002
として書き換えることができる。
これは、n×sがANDであり、2による乗算がシフトであり、pサイクルにわたって積算器により総和が実行される回路の実装につながる。
これをビット並列システムに単純に適用するために、直列の1つに並列の乗算器の各々を変換することが可能である。しかしながら、この設計は、加算の可換的な性質を使用して簡易化されてもよい。正式には、上記式の内積の項は、以下のように再構成されてもよく、nは、nのb番目のビットであり、N=16は、ベクトルのサイズである。
Figure 0007166389000003
ロジックの項では、これは、加算器ツリーにより積
Figure 0007166389000004
に対して換算を最初に実行することができ、次いで、結果として生じる和についてシフト及び累積を実行することができることを示す。これは、加算器ツリーへの16の入力の各々から出力に対するちょうど1つにシフトされた積算器を移動させることによって直接内積ユニットを簡易化する。図3は、直列内積回路(SIP)270を示す。符号付きの2の補数ニューロンをサポートするために、SIP270は、MSBが1であるとき、部分和からの直列入力ニューロンからMSBに対応するシナプスを減算してもよい。これは、加算器ツリー310の前に各々のシナプスについての否定ブロック320により行われる。Nよりも大きい内積をサポートするために、データがNBout230から再度読み込まれ、積算器330を初期化するために使用されてもよい。各々のSIP270はまた、最大プーリング(max pooling)層をサポートするために比較器(最大)340を含んでもよい。
ディスパッチャ
ビット並列システムのニューロンメモリ400は、サイクルごとにブリック、すなわち、16の16ビットニューロン、又は256ビットを全てのタイル200にブロードキャストしてもよく、各々のタイル200は、異なるフィルタにわたって同一のブリックを処理してもよい。ビット直列システムはまた、サイクルごとに256ビットを全てのタイル200にブロードキャストしてもよいが、各々のビットは、異なるニューロンに対応してもよい。実施形態に従って、ビット直列システムは、16ビットの粒度において各々のニューロンを調整する、ビット並列システムにあるような中央ニューロンメモリ(NM)400に同一のニューロン記憶コンテナフォーマットを維持してもよい。ディスパッチャユニット500は、図4に示される第1のインタフェースを介して、NM400からニューロンを読み込み、ビット直列タイルにそれらをビットで直列に供給することの仕事が課されてもよい。
ユニットストライドを使用して層を最初に考えることによって、NM400から必要なニューロンを読み込むことを最良に理解することができる。このケースでは、各々のサイクルにおいて、ビット直列ユニットは、x次元のブリック、n(x,y,i)、n(x+1,y,i)~n(x+15,y,i)に沿って連続した16からのビットを供給されてもよい。それらの16のニューロンスライスを並列に読み込むことができると仮定して、ディスパッチャ500は、次のpサイクルにわたってそれらをビットで直列に供給してもよい。16のブリックを並列に読み込むことを可能にするために、ビット直列システムは、NM400における連続した位置上でそれらをマッピングしてもよい。多くの場合、これは、16のブリックが同一のNMの行に記憶されることをもたらすことがある。このケースでは、ディスパッチャ500は、単一のサイクルでそれらを全て読み込んでもよい(2MBのNMがいくつかのサブアレイを含み、256のニューロンを並列に読み込むことが実現可能であると仮定して)。
入力ニューロンアレイのy次元と共にストライドに応じて、16のブリックは、2つのNMの行にわたって広がってもよい(これは、データキャッシュから正しく調整されていないブロックを読み込むことと同様である)。このケースでは、ディスパッチャ500は、ビット直列タイル200を供給することができる前に、2つのサイクルにわたって最大で2つの行から適切なブリックを読み込み及び結合する必要がある場合がある。pが少なくとも2である限り、16のブリックの次のセットは、pサイクルが経過するまで必要とされない場合がある。したがって、処理の全体は、パイプライン型であってもよく、よって、ビット直列システムは、時間のほとんど全てでビジーなままであることがある。
実施形態に従って、図6は、2つのウインドウ及び2つのストライドを有する例を示す。ストライドSが1よりも多いとき、16のブリックは、R=min[S+1,16]行にわたって広がってもよい。したがって、ディスパッチャ500は、256のニューロンの次のセットをタイルに供給する前に、RサイクルにわたってRの行を読み込んでもよい。Rがp未満である限り、全ての時間でユニットをビジーにしたままにする十分な時間がある。Rがpよりも大きいとき、ユニットは、R-pサイクルの間に失速(stall)してもよい。ストライドを考慮して、ディスパッチャ500がNM400にブリックをマッピングすることによって読み込むことができる行の数を削減することが可能である。
上記説明されたように、層ストライドSを仮定して、ディスパッチャは、16のブリックを収集するためにサイクルごとに1つの、最大でmax[S+1,16]行を読み込んでもよい。それらの16のブリックを仮定して、ディスパッチャ500は次いで、pサイクルにわたって、サイクルごとに合計256のビットに対し、それらが含む256のニューロンの各々からの1ビットをビット直列タイル200に送信してもよい。図5に示される実施形態に従って、ディスパッチャ500は、2つの部分、シャッフラ510及び転移器520から構成されてもよい。シャッフラ510は、NMから16のブリックを読み込んでもよく、転移器520は、それらをビットで直列にタイル200に通信してもよい。ディスパッチャ500は、pサイクルごとに16のブリックの新たなセットを通信してもよい。
図5に示される実施形態に従って、シャッフラ510は、pサイクルにわたってビット直列ユニットをビジーなままにするために16のブリックを収集してもよい。16のブリックの次のグループの収集は、現在のグループの処理と重なってもよい。よって、シャッフラ510は、pサイクルごとに16のブリックグループを収集してもよい。サイクルごとに、シャッフラ510は、NM400から256のニューロンの行を読み込んでもよい。ブリックをNM400に連続して記憶することができるので、あらゆる行は16のブリックを含むことができる。しかしながら、それらのブリックの全てが所与の時間に必要とされないことがある。出力ブリックごとの16対1マルチプレクサは、入力行に現れるときに適切なブリックを選択するために十分であることがある。したがって、シャッフラ510は、16の16対1の256ビット(16のニューロンの16ビットコンテナの1つのブリック)マルチプレクサを含んでもよい。入力ニューロンは、入力ブリックごとに1つ、16のグループに構成された256の16ビットレジスタに収集されてもよい。シャッフラ510が全ての16のブリックを収集すると、それは、転移器520の入力レジスタにそれらを転移させてもよい。
図5に示される実施形態に従って、転移器520は、直列ビットストリームにシャッフラによってメモリから読み込まれたニューロンを変換してもよい。シャッフラ510が全ての16のブリックを収集すると、それは、256の16ビットレジスタにそれらをビットで並列に書き込んでもよい。各々のレジスタは、16ビットのビット並列書き込みポート、及び単一ビットのビット直列読み込みポートを提供する。次のpサイクルにわたって、転移器520は、サイクルごとの256ビットの合計に対し、ニューロンごとに1ビットを出力する。それらは、ビット並列システムと同様に、相互結合を使用して全てのNFUにブロードキャストされる。
換算器
実施形態に従って、ビット直列システムのNFUは、16ビットの固定ポイントフォーマットで出力ニューロンを産出することができる。換算器ユニット600は、1)出力層によって使用される精度に変換すること、及び2)第3のインタフェースを介してNMに出力ニューロンブリックを書き込むことの二重目的の役割を果たすことができる。実施形態に従って、第3のインタフェース(第1のインタフェースと同一のインタフェースであってもよい)を介してNMに出力ニューロンを再度書き込むことは、ビット並列システムにあるような同一のインタフェース又は相互結合を使用してもよい。相違は、ビット直列システムがビット並列システムよりも性能を上回るので、それは、より高い出力ニューロン帯域幅要求を示すことがあることである。幸いにも、出力ニューロンを計算することが完全な入力ニューロンウインドウを処理することを含むので、既存の相互結合によりこの要求を満たす十分な時間が存在する。例えば、ビット並列システムが単一の出力ニューロンブリック、又は16の出力ニューロンを同時に(例えば、o(x,y,fi))産出することができ、ビット直列システムは、x次元に沿って連続した16のブリック(例えば、o(x,y,fi))~o(x+15,y,fi))を含む256の出力ニューロンのパレットを産出することができる。このパレットは、次の層を処理するとき、ディスパッチャによって予測することができるようにNMアドレス空間に継続的に記憶されてもよい。ビット直列タイルは、基準値にあるように一度に単一のブリックを送信してもよく、全ての16を書き込むために複数のサイクルを要してもよい。タイルがサイクルごとに単一のブリックを書き込むことができ、ブリックがNMの行に及ばないことがあるので、調整されていないブリックの書き込みをサポートすることが必要とされないことがある。
ビット直列システムがビット並列システムよりも性能を上回る場合、その計算スループットが16/pだけ増大される。層が相対的に小さい場合、原則として、全ての出力ニューロンのドレーンを行う(drain)追加のサイクルが必要となる場合がある。しかしながら、基準値にあるときでさえ、出力ニューロンは典型的には、出力ニューロンを産出することが完全な入力ニューロンウインドウを処理することを含むことがあるので、計算される数百のサイクルを要することがある。したがって、出力ブリックを書き込む十分な時間が存在することがある。
実施形態に従って、ニューロンは、ビットでインタリーブされた方式でNMに記憶されてもよい。256の完全なニューロンを1つのアクセスで読み込み、次いで、ビット直列形式にそれらを転移させるのではなく、ニューロンの256のビットは、それらが256のニューロンのビット0であるビット並列インタフェースを使用して読み込まれてもよい。次のサイクルでは、全ての256のニューロンのビット1を読み込んでもよく、次いで、次のビットに続く。このケースでは、換算器は、適切な変換を行う。
完全結合層のための実行
ビット並列システムは、フィルタの次元が入力ニューロンアレイの次元に一致する畳み込み層として完全結合(FC)層を計算してもよい。このケースでは、ビット並列システムの性能に相当するための異なるデータアクセス及び実行スケジュールを有する1つのウインドウのみが存在してもよい。畳み込み層を処理するとき、シナプスは、pサイクルごとに1回のみ、第2のインタフェースを介して読み込まれてもよい。FC層を処理するために、ビット直列ユニットは、単一のSB読み込みポート及びバスを介してサイクルごとに1つのSIP列にラウンドロビン形式でシナプスをロードしてもよく、ニューロンを処理する際に全てのSIPをビジーのままにする。例えば、図3を参照して、ユニットは、サイクル0で256のシナプスをSIP(0,0)…SIP(0,15)にロードしてもよく、次いで、サイクル1で次の256のシナプスをSIP(0,0)…SIP(0,15)にロードしてもよい、などである。シナプスのロードは、シナプスのロードと同期するためにニューロンストリームをスタガする(staggering)ことによってニューロンを処理することと重なってもよい。
演算のこのモード(ラウンドロビンのシナプスのロード及びスタガされたニューロンストリーム)は、制御に対する修正を必要とすることがある。表1(真下)は、シナプスのロード及び計算が最初の17のサイクルを処理するためにどのように重なるのかを例示する例を示す。
Figure 0007166389000005
このアプローチは、バッチ処理(batching)が使用されるときにFC層についての性能を改善することができ、シナプスの帯域幅がボトルベックになるときに共通の方策を改善することができる。バッチ処理は、複数の画像にわたって各々の層を一度の計算し、それによって、シナプスを異なる画像からニューロンについて再使用することができる。このケースでは、SIPにロードされた各々のシナプスは、p×bサイクルの間に使用されてもよく、bはバッチ処理のサイズである。
単一の画像を処理するときにビット並列システムに対する性能の改善があることがあり、又はないことがあり、ビット直列FC層においてより低い精度を使用することは、16のサイクルごとに16-pサイクルの間に各々のSIP列に対する計算を回避することによってエネルギーを削減することができる。代わりに、pのSIP列のみがその場合に使用されてもよく、他のSIPは、トグルしないことによって電力を節約し、又は電力ゲーティング(power gating)により完全にターンオフされる。実験的な結果は、平均して層のランタイムの0.16%である、ニューロンストリームをスタガすることからの小さいオーバヘッドを示している。FC層を加速化するっことによって更に性能を改善する潜在性は、全体の実行時間のごく一部を考慮するので、非常に小さい可能性がある。更に、DNNにおける現在の傾向は、FC層の数を削減又は除去することである。
プーリング層
プーリング層について、ニューロンは、NMからビットで並列に伝送され、SIPにおける加算器ツリーをバイパスする。ディスパッチャは、256のビット/サイクルにおいて直列データをブロードキャストするように設計され、プーリング層は、ニューロンがタイルにわたって分散されるにつれて4096のビット/サイクルを読み込む。最大プーリングは、SIPにおいて比較器によりサポートされる。平均プーリングは、SIPにニューロンを蓄積することによって、及び結果を拡張するために活性化ユニットを使用してサポートされる。局所的応答性正規化層は、ディスパッチャの制限された帯域幅に起因して内積ユニットを使用し、基準値性能に相当する間は直列されなくてもよい。
層ごとの精度の通信
この実施形態は、層ごとの精度が事前計算されてもよく、次元、パディング、及び各々の層のストライドなどのネットワークの他のメタデータに従って提供されてもよいことを想定する。層ごとの精度のいくつかの全プロファイルは、ランタイムにおける正確度対性能のトレードオフを可能にするためにDNNに提供されてもよい。このメタデータ情報は、ビット直列コントローラによって読み込まれてもよく、ユニット、ディスパッチャ、及び換算器の演算を制御するために使用されてもよい。
ランタイムにおけるニューロングループごとの精度の判定
別の実施形態に従って、精度pは、同時に処理される256のニューロンのグループごとに動的に調節される。この判定は、処理のためにユニットにニューロンを通信する前に転移器によって実行される。i=0…255である、ユニット、nに送信される256のニューロンごとに、転移器は、1であるビットが現れる最高ビット位置n を判定するために、1検出器である先頭ビットを使用する。同様に、転移器は、1であるビットが現れる最低ビット位置n を判定するために、1検出器である最終ビットを使用する。ニューロンのこのセットについての精度pは、maxi=0…255{n }-mini=0…255{n }に効果的に設定される。それらのニューロンを処理するために、転移器はまた、追加の4つのワイヤのセットを介して、ビットに従ってそれらのオフセットを送信する。追加のワイヤは、ニューロングループを処理する最後を示す。したがって、精度を明確に計算する必要はない。実行者に公知な様々な先頭又は最終ビット1検出器回路が存在する。
ビット並列タイルへの比較
畳み込み層が高度に並列であるので、更なるタイルを追加することによる並列処理を利用することによって、ビット並列システムの性能を改善することが提案されている。以下の例に示されるように、ビット直列システムは、最大で24%だけタイル領域を増大させることができる。理想的な性能のスケーリングを仮定して、比較のために、ビット並列システムに追加の24%の更なるタイルを導入するためにこの追加領域を使用してもよい。実際に、全てのニューロンレーンをビジーのままにすることが可能でないことがあるように、理想的なスケーリングは可能でないことがある。例えば、ビット並列チップは、層に256の倍数のフィルタが存在する限り(16のタイルの各々に16のフィルタ)、完全に利用されてもよい。結果として、層に応じて、ユニットが十分に活用されず、更なるユニットを有することがそのようなケースをより一般的にするケースが存在する。
ビット並列性能がビット直列と同一の領域のオーバヘッドにより24%だけスケーリングされてもよいことが最も起こり得る想定とするときでさえ、例は、ビット直列がなお、この代替例よりも性能を上回ることができ、よって、より良好な領域対性能のスケーリングをもたらすことができることを示す。更に、ビット直列アプローチは、ビット並列設計によっては可能でないことがある静的又はランタイムの性能対正確度のトレードオフを可能にすることができる。
分解可能なプロセシングユニットとの比較
換算された精度から性能を得るための一般的な現在のアプローチは、分解可能な乗算器及び加算器を使用することである。例えば、16ビットの加算器は、最小のオーバヘッドにより2つの8ビットの加算器として容易に構成されてもよい。このアプローチは一般的に、汎用プロセッサのマルチメディア命令セットの拡張において使用される。これは各々の演算の待ち時間を増大させないので、それは、計算スループットを増大させるように使用されてもよい。
ニューラルネットワークの特性を考えると、分解可能なユニットは、それらにデメリットとなる3つの制約を有する。1)分解可能なユニットは典型的には、2の累乗に制約され、それらが変動する換算された精度の潜在的な利点のすべてを得ることができないわけではないことを意味する。例えば、9ビットのみを必要とする層は、16ビット(2)を使用する。2)分解可能なユニットは、両方の入力が同一の幅であることを必要とする。ニューラルネットワークのケースでは、それらは重み及びニューロンであり、重みは典型的には、8ビットよりも多いビットを必要とし、結果として、多くの層が改善を見ないことがある。3)最後に、基準値乗算器及び加算器ツリーが分解可能であった場合、データ及び重みの最大精度は、層ごとに選択される必要があることがある。例は、ビット直列が理想とされた分解可能なユニットに基づくビット並列設計よりも性能を上回ることができることを証明している。
このセクションは、層ごとの精度プロファイルの利用戦略及び実験的な手順を説明する。数値表現要件分析について、最良の層ごとの精度プロファイルは、Judd et al.[P.Judd,J.Albericio,T.Hetherington,T.Aamodt,N.E.Jerger,R.Urtasun,and A.Moshovos,“Reduced-Precision Strategies for Bounded Memory in Deep Neural Nets,arXiv:1511.05236v4[cs.LG],” arXiv.org,2015]の手順を介して発見される。Caffeは、各々の畳み込み層の精度を換算することが、5000の画像にわたってネットワークの全体の最上位の予測の正確度にどのように影響し、すなわち、ネットワークが正確に入力をどの程度分類しているかを測定するために使用されている。ネットワーク定義及び事前に訓練されたシナプス重みは、Caffe Model Zooから取得される。
Juddらは、I≧0の整数及びF≧0のわずかなビットを有するとして固定されたポイント数を考えており、この例は、二値ポイントに対するMSBのビット位置M、及びビットの数Nとして数をパラメータ化することによってより下位の桁の整数ビットのいくつかをドロップさせることがある。これは、層ごと及び複数の層ごとのM,N∈[0,16]による指数関数的な探索空間の問題である。ヒューリスティックな探索空間刈込みアプローチは、1)傾斜降下を使用して層ごとの最良のMのプロファイルを発見し、一度に1つの層に1ビットだけMを繰り返し削減し、2)固定されたMのプロファイルを仮定して、傾斜降下を再度使用して、Nのプロファイルの空間を利用することであった。両方のステップでは、層ごとの分析は、良好な開始ポイントを判定するために使用される。
表2(真下)は、基準値(100%)にあるのと同一の正確度を維持し、基準値(99%)の1%内でそれを換算するために必要な畳み込み層ごとのニューロン精度プロファイルを一覧にしている。Cnv:基準値システムにおいて畳み込み層によって要される実行時間のごく一部。Ideal:ビット直列DNNによる潜在的な加速化。
Figure 0007166389000006
性能、領域、及びエネルギーについて、ビット並列システム及びビット直列システムの両方が一貫性のために同一の手順を使用してモデル化されている。カスタムサイクル正確加速シミュレータは、実行時間をモデル化する。計算は、Chenらによって説明されるようにスケジュールされている。指数(power)及び領域(area)は、シナプス設計コンパイラ及びTSMC 65nmライブラリを介して合成されたVerilogの実装態様から抽出されている。NBin及びNBout SRAMバッファは、CACTIを使用してモデル化されている。eDRAM領域及びエネルギーは、Destinyによりモデル化されている。単一の実行及びバッチ処理の実行の両方(複数の画像について同時に計算された各々の層)が実行される。バッチ処理のサイズは、他の場合、性能及びエネルギーを厳しく不利にするニューロンオフチップを漏らすことを回避するように選択される。測定はネットワーク実行全体にわたって行われる。
性能測定
図7は、表2における精度プロファイルについてのビット並列に対するビット直列性能を報告する。バッチ処理は、ビット並列又はビット直列のいずれかにおいて性能に影響を与えないので、報告される結果は、両方に適用可能である。正確度が損失しない100%プロファイルについて、ビット直列は平均して、ビット並列にわたって2.24× の加速化を得る。各々の層において精度の3ビットのみを必要とする最良のケース、LeNetでは、加速化は5.33×であり、NiN及びVGG19は、それらの高精度の要件にほとんど起因して、最小の加速化、1.8×及び1.35×をそれぞれ示す。概して、性能改善は、精度における換算に従い、表2における理想的な加速化に一致する。差異は、最悪なケースで7%(NiN)である、ニューロンレーンのあまり活用されていないことに起因する。平均して、ビット直列は、理想の2%内である加速化を達成する。
領域のオーバヘッド
全チップにわたって、ビット直列は、その中から1%がディスパッチャについてのものであるビット並列よりも22%多い領域を必要とする。各々のタイルを単独で考え、NBoutのエントリ、換算器、及びSIPにおいて16×の増大を考慮すると、ビット直列は、24%だけ領域を増大させる。ビット直列におけるタイルごとの256のSIPは、256の乗算器のビット並列の組み合わせ及び16の加算器ツリーの単独と比較して、139%だけ領域を増大させ、SBは、タイルごとにはるかに低く、チップ領域全体のオーバヘッドをもたらすタイル領域を支配する。
エネルギー効率測定
図8は、単一及びバッチ処理モードの下でビット直列及びビット並列のエネルギー効率を比較する。エネルギー効率、又は単純に基準に対して新しいシステムについての効率は、新しいそれを通じて稼働する完全なネットワークを完了するために、基準によって必要とされるエネルギーの比率Ebase/Enewとして定義される。全てのケースにわたって直接の比較を促進するために、図8で報告される全ての効率測定における分子として単一のモードにおいてビット並列のエネルギーを使用する。
単一のモードに焦点を当てると、100%のプロファイルについての全てのネットワークにわたるビット直列による平均効率改善は、3×であり、最良のケース(LeNet)での6×から最悪のケース(VGG19)での1.92×の範囲にわたる。二次オーバヘッドを無視して、エネルギー節約が主としてより少ないニューロンビットを処理することから導出されるので、効率は主として、層ごとの精度長における換算に依存する。第二に、エネルギー節約は、ビット直列がpサイクルごとのみに発生するSBアクセスの数を削減することから来る。ビット直列において複数のウインドウにわたってシナプスの再使用によって動機付けられると、ビット直列と同様に複数のウインドウの処理をインタリーブするビット並列についての改善された処理スケジュールを評価している。「BASEWT」の棒は、元々提案されたスケジュールよりも効率的であるが、なお、ビット直列よりも効率的でないことを証明するこのウインドウタイリングアプローチのエネルギー効率を報告する。
シナプスが複数の画像にわたって再使用されるにつれて、バッチ処理は、ビット並列及びビット直列の両方についてエネルギー効率を改善し、よって、SB読み込みはあまり頻繁でない。しかしながら、ビット直列においてより少ないニューロンビットを処理することからの利点は、シナプスの再使用からのそれらをはるかに上回る。バッチ処理モードにおけるビット直列についての平均エネルギー効率は、3.19×であり、ビット並列はなお、その単一のモードにわたって1.4×の効率によりビット直列よりも効率的でない。ビット並列におけるウインドウタイリングは、2.03×だけ効率を改善する。ウインドウタイリングがNMのサイズによって制限されないので、それは、ビット並列におけるバッチ処理と比較して、より大きなエネルギー節約を可能にする。
正確度対性能
いくつかの実施形態では、ビット直列DNNは更に、静的且つオンザフライのエネルギー、性能、及び正確度のトレードオフを可能にする。例えば、精度を換算することによって、アプリケーションは、改善された性能及びエネルギー効率と引き換えに正確度を換算することを選択してもよい。この能力は、例えば、1)ユーザ又はオペレーティングシステムがより長い動作時間と引き換えにわずかに換算された正確度を選ぶことができるバッテリ動作デバイス上で、又は2)アプリケーションが正確度は劣るが応答性が時機にかなっていることを選ぶことができる厳密な時間制約の下で有益である。
この例は、ネットワーク正確度の全体に影響を与え始めるポイントに精度を低下させることによって性能を改善するための適切な計算アプローチを考える。直列計算及び層ごとのニューロン精度を使用して、ビット直列は、能力が正確度及び性能のトレードオフを微細に調整することを可能にする。性能が、バッチ処理又は単一のモードが使用されるかどうかに依存しないので、残りのセクションにおける結果は、いずれかの処理モードに適用可能である。
図9は、ネットワーク正確度と加速化との間のトレードオフを示す。グラフは、ビット並列にわたって正規化するよりも明確に性能対正確度のトレードオフを示すために、図7の100%の構成に対する性能をプロットしている。グラフにおける各々のポイントは、正確度対性能のPareto境界上の精度プロファイルに対応する。正確度が90%を下回って急速に降下するので、注意は、基準値に対する90%の正確度を上回るプロファイルに制限される。全てのケースでは、追加の性能改善は、換算された正確度により可能であり、ネットワークは、急激な性能損失を引き起こす過去の正確度対性能曲線における曲がりを示す。このセクションの残りは以下で、最大で1%の正確度の損失が許容可能であるときに可能な性能改善に焦点を当てる。
図10は、ビット並列に対する表2からの99%の精度プロファイルの加速化を示す。予測誤差に対して最大で1%を許容することによって、平均加速化は2.48×まで増大し、11%の漸増の加速化である。個々のネットワークについての加速化は、VGG19についての1.56×からLeNetについての7.23×までの範囲にわたり、精度長における換算に全体的に従う。正確度の制約が緩くなるとき、NiNは、各々の層におけるはるかに小さい精度を使用することが可能なように最も有益となる。図8との比較は、99%の精度プロファイルについての効率を示す。平均して、効率は、3.24×まで増大する。
LeNetについての99%のプロファイルにより、ビット直列は、失速したディスパッチャのインスタンスのみに直面する。このケースでは、このケースでは、第1の層の精度は2ビットであり、よって、バッファは2サイクルにおいてドレーンされる。NM内のウインドウデータのいくつかのセットについて、ディスパッチャは、データを読み込むために2サイクルよりも多くのサイクルを必要とし、ディスパッチャを失速させる。しかしながら、この状況は一般的でなく、合計ランタイムの2%の間の失速を生じさせるにすぎない。全ての他のケースでは、ビット直列は、直列データを継続的に発信することが可能である。
分解可能な計算ユニット
これは、ビット直列を、上記説明され、全ての2の累乗の表現の長さを最大で16までサポートするビット並列の理想的な分解可能な分散と比較する。この比較のために、NFUの利用がビット並列における全ての精度について同一であることが想定され、例えば、16ビットにおいて256の乗算を実行する層は、8ビットにおいて512の乗算を実行する。実際に、利用は、ビット並列により課される調節の制約に起因していくつかの層に対して最悪である。
図11は、ビット直列及び理想的なビット並列によって達成される加速化を比較する。正確度の損失がないことにより、ビット並列は、平均してビット直列について1.99×に対して1.13×の加速化を達成し、最大で1%の正確度の損失が許容されているとき、ビット並列の平均加速化は、ビット直列について2.18×に対して1.27×である。ビット並列はまた、各々の層の精度が2の累乗であり、ニューロン及びシナプスの両方に対して同一であるプロファイルに制限される。ビット並列のサイズの制約は、理想的な想定の下でさえ、ビット直列と比較してその性能の利点を厳格に制限する。
完全結合層の代替的な処理
別の実施形態では、性能及びエネルギー効率を改善すると共に、領域における追加のコストのみで、畳み込み層だけでなく、完全結合層をも処理することが可能である。
この実施形態では、タイル1200内の各々のSIP270aが、図12に示される16の16ビットのサブレジスタのベクトルである追加の直列重みレジスタ、SWR1210によりここで増補される。重みレジスタ、WR1220と称されるSIP270aが既存のレジスタを維持するので、畳み込み層の処理がこれまでのように続行する。SWR1210は、同時に処理されたシナプス及びニューロンのグループごとにmax(Ps,Pa)サイクルにおける完全結合層の処理を可能にし、Ps及びPaはそれぞれ、シナプスの精度及び活性化の精度である。したがって、16ビットのビット並列エンジンと比較した性能改善は、16/max(Ps,Pa)である。元の設計では、同一の行全てに沿ったSIP270は、同一の256の線(wire)を共有し、全ての16のWRへの16の16ビットの重みの同一のセットの並列ローディングを可能にする。この実施形態では、256の線の各々は、16×16のSWRサブレジスタのうちの1つに結合される。したがって、サイクルごとに、16×16=256のSWRサブレジスタの各々に異なるビットをロードすることができる。Psサイクルにわたって、256のSWRサブレジスタにPsビットの異なるシナプスをロードすることができる。それらの256のシナプス値は次いで、対応するWRサブレジスタに並列にロードされてもよく、次いで、対応するニューロンによりこれまでのようにビットで直列に処理されてもよい。よって、この実施形態は、3段階パイプラインを使用し、最初に重みがSWR1210にビットで直列にロードされ、次いで、WR1220に並列にロードされ、次いで、ニューロンとビットで直列に乗算される。
図13は、この実施形態についての例示的なSIP270aを示す。各々のSIP270aは、出力活性化を産出するために、活性化ごとに1ビットの、16の活性化ビットを16の重みと乗算する。各々のSIP270aは、2つのレジスタ、SWR1210及びWR1220を有し、各々は、16の16ビットのサブレジスタを含む。各々のSWRサブレジスタ1212は、完全結合層について重みをビットで直列に読み込むために使用される重みバス線のうちの1つへの単一のビット結合1213によるシフトレジスタである。各々のWRサブレジスタ2222は、畳み込み層又は完全結合層をそれぞれ処理するために、重みバス又は対応するSWRサブレジスタ1212のいずれから並列にロードされてもよい。各々のSIP270aは、WR1220内の重みを入ってくる活性化ビット1320と乗算する256の2入力ANDゲート1310、並びに部分積を合計する16×16ビットの加算器ツリー1330を含む。最終的な加算器1340にシフタ1350を加えたものは、出力レジスタORに加算器ツリーの結果を蓄積する。
各々のSIP270aでは、加算器ツリー1330の第1の入力におけるマルチプレクサ1327は、単一の行のSIPに従って出力活性化計算をスライシングすることをサポートする直列モードを実施する。符号付きの2の補数ニューロンをサポートするために、SIP270aは、最上位ビット(MSB)が1であるときに、部分和からMSBに対応する重みを減算することができる。これは、加算器ツリーの前に重みごとに否定ブロック1325により行われる。各々のSIP270aはまた、最大プーリング層をサポートする比較器(最大)1360を含む。
以下の例は、2つの意図的な些細なケース、1)2つの出力活性化を産出する単一の入力活性化を有する完全結合層、並びに2)2つの入力活性化及び2つの出力活性化を産出する1つの単一の重みフィルタを有する畳み込み層、をそれがどのように処理するかを示すことによって、実施形態が作用する方法を高レベルにおいて例示する。層ごとの計算は、
Figure 0007166389000007
である。
f1、f2、c1、及びc2は、出力活性化であり、w1、w2、及びwは、重みであり、a1、a2、及びaは、入力活性化である。明確にするために、全ての値は、精度の2ビットにおいて表されると仮定する。
従来のビット並列処理
図14A~14Cは、2つのサイクルにわたって畳み込み層を処理するビット並列エンジンを示す。図14Aは、DaDNを表す従来技術のビット並列処理エンジンを示す。サイクルごとに、エンジンは、2つの2ビット入力、i(重み)及びv(活性化)の積を計算することができ、出力レジスタORにそれを蓄積又は記憶することができる。図14B及び14Cは、このユニットが2つのサイクルにわたって例示的なCVLをどのように計算することができるかを示す。図14Bでは、サイクル1の間、ユニットは、vに沿ってaの入力ビット0及び1(図ではa1/0及びaとそれぞれ表記される)を受け付け、iに沿ってwの入力ビット0及び1を受け付け、出力cの両方ビットを産出する。同様に、サイクル2(図14C)の間、ユニットは、cを産出するためにa及びwを処理する。合計で、2つのサイクルにわたって、エンジンは、2つの2b×2bの積を産出している。例示的なFCLを処理することは、2つのサイクルを要する。第1のサイクルでは、wそしてfを産出し、第2のサイクルでは、wそしてfを産出する。
ビット直列処理
図15A~15Dは、エンジンの実施形態が例示的な畳み込み層をどのように処理するかを示す。この実施形態は、完全畳み込み層についてDaDNを通じて性能を改善するように示される。図15Aは、2つのサブユニットを含むエンジンの構造を示す。2つのサブユニットは、入力v及びvそれぞれを通じてサイクルごとに活性化の各々の1ビットを受け付け、これまでのように、共通の2ビットの重み入力(i,i)が存在する。合計して、入力ビットの数は4であり、ビット並列エンジンにおけるのと同一である。各々のサブユニットは、3つの2ビットのレジスタ、シフトレジスタAR、並列ロードレジスタBR、及び並列ロード出力レジスタORを含む。サイクルごとに、各々のサブユニットは、それがそのORに書き込み又は蓄積することができるBRにより、その単一のビットvi入力の積を計算することができる。サブユニットがサイクルごとに単一の活性化ビットを処理するので、ビット並列乗算器が存在しない。代わりに、2つのANDゲート、シフト及び加算機能ユニット、及びORは、シフト及び加算乗算器/積算器を形成する。各々のARは、i線のうちの1つからサイクルごとに単一のビットをロードすることができ、BRは、ARから又はi線から並列にロードされてもよい。
図15B~15Dは、実施形態が畳み込み層をどのように処理するかを示す。図は、レジスタの内容のみを示すユニットの詳細を要約している。図15Bが示すように、サイクル1の間、wシナプスは、i及びi入力を介して両方のサブユニットのBRに並列にロードされる。サイクル2の間、aのビット0及びaのビット0は、第1のサブユニット及び第2のサブユニットにそれぞれ、v及びv入力を介して送信される。サブユニットは、a1/0×w及びa2/0×wを同時に計算し、それらのORにそれらの結果を蓄積する。最後に、サイクル3では、a及びaのビット1はそれぞれ、v及びv上に現れる。サブユニットは、それらのORに最終的な出力活性化c及びcを蓄積するa1/1×w及びa2/1×wをそれぞれ計算する。
合計して、層を処理するために3つのサイクルを要する。しかしながら、第3のサイクルの終わりに、別のwがBRにロードされていることがあり(iの入力がアイドルである)、出力の新たなセットがサイクル4の間に計算を開始することを可能にする。すなわち、新たな重みをロードすることは、最初の時間を除き、現在の出力活性化の処理の間に隠蔽されることがある。定常状態では、入力活性化が2つのビットで表されるとき、このエンジンは、2つのサイクルごとに2つの2b×2b項を産出しており、よって、ビット並列エンジンの帯域幅に相当する。
活性化a及びaがちょうど1ビットで表される場合、このエンジンは次いで、サイクルごとに2つの出力活性化を産出しており、ビット並列エンジンの帯域幅の2倍である。後者は、実行時間を減少させるための換算された精度を利用することが不可能である。概して、ビット並列ハードウェアが活性化を表すためにPbaseビットを使用しており、P ビットのみが十分であった場合、この実施形態は、Pbase/P だけビット並列エンジンよりも性能を上回る。
図16A~16Eは、ユニットの実施形態が例示的な完全結合層をどのように処理するかを示す。図16Aは、サイクル1では、wのビット1及びwのビット1がラインi及びi上でそれぞれ現れることを示す。左サブユニットのARは、iに結合され、右サブユニットのARは、iに結合される。ARは、空いた位置に拡張符号化する(例では0として示される)それらの最下位ビットに対応するビットをシフトインする。サイクル2の間、図16Bが示すように、wのビット0及びwのビット0は、それぞれのiライン上に現れ、それぞれのARがそれらをシフトインする。サイクルの終わりに、左サブユニットのARは、完全な2ビットwを含み、右サブユニットのARは、完全な2ビットwを含む。サイクル3では、図16Cは、各々のサブユニットがそのBRにARの内容を複製することを示す。次のサイクルから、積を計算することが、CVLについて行われたのと同様にここで続行することができる。しかしながら、このケースでは、各々のBRは、異なる重みを含むが、前のセクションにおいてCVLを処理するとき、全てのBRが同一のw値を保持している。異なるi線に結合する各々のサブユニットに結合されたARのシフト能力は、TRTが2つのサイクルにわたって異なる重みをビットで直列にロードすることを可能にしている。図16D及び図16Eは、サイクル4及び5をそれぞれ示す。サイクル4の間、aのビット0は、両方のv入力上で現れ、各々のサブユニットにおいてBRと乗算される。サイクル5では、aのビット1は、両方のv入力上で現れ、サブユニットは、f及びfの計算を完了する。正確な入力がBRに現れると、2つの2b×2bの積を産出するために2つのサイクルを要する。
例では、追加の入力も出力も示されないが、BRに記憶された現在の重みを処理している間、ARに入力の新たなセットをロードすることが重なる可能性があった。すなわち、ARにロードすること、BRに複製すること、及び活性化とのBRのビット直列乗算は、各々の段階が複数のサイクルを要することがある3段階パイプラインである。概して、活性化及び重みの両方が2ビットを使用して表されると仮定して、このエンジンは、定常状態ではビット並列エンジンの性能に相当する。入力i及びvの両方のセットをより少ないビット(例では1)により表すことができるとき、エンジンは、サイクルごとに2つの項を産出し、前のセクションのビット並列エンジンの帯域幅の2倍である。
概して、ビット並列エンジンの精度Pbase、並びに活性化及び層Lについての重みについてそれぞれ使用することができる精度P 及びP である場合、実施形態に従ったエンジンは、理想的には、畳み込み層についてPbase/P 及び完全結合層についてPbase/max(P ,P )だけ同等のビット並列エンジンよりも性能を上回ることができる。
上記例は、最も簡易化されたエンジン構成を使用している。典型的な層が大規模な並列処理を示すので、エンジンは、畳み込み層についての重みの再使用及び完全結合層についての活性化の再使用を利用する間、更に多くのサブユニットにより構成されてもよい。
同時の活性化ビット
領域及び電力効率を改善するために、同時に処理される活性化ビットの数は、設計時間において調節されてもよい。そのような構成の根本的な利点は、同一のスループットを達成するためにより少ないSIPが必要とされること、例えば、2つの活性化ビットを同時に処理することは、SIP列の数を16から8に削減し、それらの合計数を半分に削減することである。バス線の合計数が同様であるが、それらがカバーする必要がある距離は、著しく減少する。同様に、加算器の合計数は同様なままであるが、それらは、ともに近くにクラスタ化される。それらの構成の欠点は、それらがサイクルごとに処理するビットの数の倍数に活性化ビットをさせるにつれて、それらが潜在的な性能の一部を差し控えることである。設計者は、それらの領域、エネルギー効率、及び性能ターゲットを最良に満たす構成を選択することができる。それらの構成では、重みは、いくつかの活性化ビットと同時に乗算され、乗算結果がそれらの対応する加算器ツリーに挿入される前に部分的にシフトされる。
重みを時間通りにロードするために、SWRサブレジスタ1212が修正される必要があり、よって、いくつかのビットを並列にロードすることができ、サイクルごとにその数の位置をシフトすることができる。否定ブロック1325(2の補数がサポートするための)は、最上位の積の結果のみに対して機能する。
評価
図17は、畳み込み層及び完全結合層についての様々な画像分類ディープラーニングネットワークについての許容可能な層ごとの精度のセットを報告している。表は、正確度を維持する間(「100%の正確度」)に使用することができる換算された精度、及び正確度における1%の関連する換算が許容可能である場合に使用することができる更なる換算された精度のセットを報告している。列「理想的な加速化」は、同等に構成されるビット並列の従来のエンジンに対して可能な性能改善を報告している。
図18は、完全結合及び畳み込み層について、並びに「100%」及び「99%」の関連の相対的な正確度精度構成について、DaDianNaoに対するこの実施形態の実行時間性能(「Perf」列)及び相対的なエネルギー効率(「Eff」列)を報告している。図19は、サイクルごとに2つの活性化ビットを処理する実施形態の相対的性能を報告している。測定値の2つのセットは、1)DaDianNaoに対して、及び2)図18の表のビット直列構成に対して報告される。結果のこのセットは、「100%」の精度構成を使用する。
ランタイムにおけるニューロングループごとの精度の判定
前の説明した加速器は、性能及びエネルギー効率を改善するためにディープラーニングニューラルネットワークの可変的な精度要件を利用している。前の説明した設計では、ハードウェアは、各々の層を処理する前に、その層によって必要とされる精度がソフトウェアによって通信されることを予期する。よって、それらの層ごとの精度は、各々の層について、又はより小さい粒度においてでさえ可能となる場合がある精度におけるいずれかの追加の換算を反映するようにランタイムにおいて調節されていない。しかしながら、内在する計算ユニットは、層よりもはるかに微細な粒度で精度を利用することが可能である。説明される実装態様では、各々のチップは16のタイルを含んでおり、各々が16のフィルタ及びフィルタごとに16の重み(シナプス)を処理する。256の活性化のセットは、サイクルごとに1ビット、全てのタイルにブロードキャストされている。層ごとに、活性化の精度、すなわち、最上位ビットの位置及び最下位ビットの位置(MSB及びLSBそれぞれ)、n及びnは、層ごとに調節されている。しかしながら、精度は、より低い粒度で容易に適合されてもよい。例えば、精度は、所望の実装態様において、同時に処理される256の活性化のグループごと、又はSIPの同一の列にブロードキャストされる16の活性化のグループごとに調節されてもよい。更なる実施形態に従って、両方ではなく最上位ビット又は最下位ビットのいずれかに対して精度を調節することが可能である。これは、性能及びエネルギー効率の何らかの改善をなおももたらすが、両方に対して同程度に精度を調節しない。
別の実施形態に従って、精度pは、同時に処理される256のニューロンのグループごとに動的に調節される。この判定は、処理のためにユニットにニューロンを通信する前に転移器によって実行される。i=0…255であるユニットに送信される256のニューロンnごとに、及び各々のビットnj=0…16ごとに、且つ全てのニューロンが正であると仮定して、転移器は、同一の位置における全てのビットの論理ORを最初に計算し、OR=n+…+n255であり、次いで、1であるビットが現れる最高ビット位置nを判定するために、OR,j=0…16にわたる1検出器である先頭ビットを適用する。同様に、転移器は、1であるビットが現れる最低ビット位置nを判定するために、1検出器である最終ビットを使用する。それらのニューロンを処理するために、転移器は、追加の4線のセットを介してビットに従ってそれらのオフセットも送信する。追加の線は、ニューロングループを処理する最後を示す。nのビット位置において処理が開始すると仮定して、カウンタは、ブロードキャストされている現在のビット位置を保持し、比較器は、ユニットがnに到達するときにグループ信号の終わりを設定する。
及びnの検出は、16のニューロンのグループなど、ニューロンのサブグループごとに別個に行われる。図20は、そのような実施形態を示し、そこでは、各々が8ビットの基準値精度を有する4つのニューロングループが同時に処理される。図20は、菱形として示される直列ORゲートのセットを使用してORを計算するネットワーク、及びn検出ブロックにオフセットエンコーダを加えたものを示す。n検出は、予約されたOR入力の優先度が高いnブロックと同一のブロックを使用する。図は、ニューロン値のセットについてn及びnを検出する例を示す。入力ニューロンが8ビットを使用するので、2つのオフセットは、各々で3ビットを使用して符号化される。ニューロンのこのグループを処理するために、ディスパッチャは、開始オフセットとしてnを送信する。ユニットは、後続のサイクルごとにこのオフセットをデクリメントする。ディスパッチャは、現在のオフセットがnに等しくなるときにこのグループについての処理の最後のサイクルをシグナリングする。ビット位置nにおいて処理が開始すると仮定して、カウンタは、ブロードキャストされている現在のビット位置を保持し、比較器は、nに到達するときにグループ信号の終わりを設定する。ニューロンのグループが処理されると、対応するニューロンレーンは、ニューロン値の次のグループに進む前に終了するように、全ての他のニューロンレーンを待つように作成されてもよい。代わりに、ディスパッチャ及びシナプスバッファは、追加の領域及びメモリ帯域幅を犠牲にして、ニューロングループごとのアクセスをサポートするように修正されてもよい。
精度の動的検出は、電力ゲーティングが使用される場合、電力処理時間を減少させ、完全結合層についてのエネルギー効率及び畳み込み層についてのエネルギー効率を改善することができる重みにも適用されてもよい。
性能の評価
DaDianNaoと比較したこの実施形態の実行時間性能は、AlexNet、NiN、GoogLeNet、VGG_2、VGGS、VGG19について、及び平均して、それぞれ2.8×、2.4×、2.6×、3.2×、3.3×、1.7×、及び2.6×である。
シナプス及びニューロンのビット直列処理
別の実施形態は、ニューロンだけでなくシナプスをもビットで直列に処理することによって性能を改善する。この実施形態における性能は、畳み込み層について256/(Ps×Pa)だけ、及び完全結合層について16/Psだけ改善し、Ps及びPaは、それぞれシナプスの精度及びニューロンの精度である。
実施形態に従って、図21は、128×16のグリッドにおいて構成された2Kの直列内積ユニット(SIP)270bを含むタイル2100を示す。このタイル2100は、少なくとも、16のニューロン及び8のフィルタと共に、フィルタごとに16のシナプスに対して同時にビット並列タイル処理を常に実行するように設計される。サイクルごとに、各々のSIP270bは、16の1ビットの入力活性化を16の1ビットの重みと乗算し、部分出力活性化にそれらの積を換算する。同一の行に沿ったSIP270bは、共通の16ビットの重みバスを共有し、同一の列に沿ったSIP270bは、共通の16ビットの活性化バス2180を共有する。各々のSIP270bは、16ビットの重みレジスタWR2122を有する。SIPアレイは、2Kビットの重みバス及び256ビットの活性化入力バスによってフィードされる。タイル2100は、出力及び入力活性化(ニューロン)をそれぞれ記憶するためのABout2130及びABin2120を有する。タイル2100は、活性化及び重みの両方をビットで直列に処理する。
畳み込み層を処理することは、オフチップメモリ2110から2Kの重みビットを並列に読み込み、SIP行ごとに全てのWR2122に16ビットをロードすることによって開始する。ロードされた重みは、P サイクルわたってSIP列ごとに16の対応する活性化ビットとビットで直列に乗算され、P は、この層Lについての活性化精度である。次いで、P サイクルの後、重みの第2のビットは、WR2122にロードされ、SIP行ごとに16の対応する活性化ビットの、第1のP サイクルにおけるものとの同一のセットと乗算される、などである。合計して、ビット直列乗算は、P ×P サイクルを要し、P は、この層Lについての重み精度である。ビット並列エンジンは、256のサイクルにわたって16の活性化及び128のフィルタの16のセットを処理し、この実施形態は、P ×P サイクルにわたってそれらを同時であるがビットで直列に処理する。P 及び/又はP は、16未満である場合、この実施形態は、256/(P ×P )だけビット並列エンジンよりも性能を上回る。そうでない場合、この実施形態は、ビット並列エンジンの性能に相当することができる。
完全結合層を処理することは、第1のSIP列のWRレジスタ2122に重みのセットのLSB(最下位ビット)をロードし、ロードされた重みを対応する活性化のLSBと乗算することによって開始する。第2のサイクルでは、SIPの第1の列が、そのWR2122のLSBを活性化の第2のビットと乗算することでなおもビジーである間、重みの新たなセットのLSBは、第2のSIP列のWR2122にロードされてもよい。各々の重みビットは、入力活性化のビット0~ビット15と乗算する、16のサイクルの間に再使用される。よって、この実施形態について、他の15の列に重みの新たなセットをロードする間、SIP270bのいずれかの単一の列をビジーなままにするために十分な時間が存在する。例えば、図21に示されるように、エンジンは、サイクル0では、SIP(0,0).SIP(0,127)に2Kの重みの単一のビットをロードすることができ、次いで、サイクル1では、SIP(1,0)..SIP(1,127)に次の2Kの重みの単一のビットをロードすることができる、などである。最初の15のサイクルの後、全てのSIPが完全に利用される。この設計について、16の活性化及び128のフィルタの16のセットを処理すると共に、同等のビット並列設計が256のサイクルにおいてそれらを処理するためにPwL×16サイクルを要する。よって、P が16未満であるとき、この設計は、16/P だけビット並列設計よりも性能を上回り、それは、他の場合にその性能に相当することができる。
図22は、この実施形態についての修正されたビット直列内積ユニット(SIP)270bを示す。クロックサイクルごとに、各々のSIP270bは、部分出力活性化を産出するために、16の単一のビット活性化を16の単一のビット重みと乗算する。内部では、各々のSIPは、16の1ビットの重みレジスタ(WR)2122、WRにおける重みを入ってくる入力活性化ビットと乗算するための16の2入力ANDゲート、並びにそれらの部分積を合計する16入力の1ビット加算器ツリーを有する。
Accu.1は、P サイクルにわたって加算器ツリーの出力を蓄積及びシフトする。P サイクルごとに、Accu.2は、Accu.1の出力をシフトし、ORにそれを蓄積する。P ×P サイクルの後、出力レジスタ(OR)は、活性化及び重みセットの内積を含む。各々のSIPでは、Accu.1の後のマルチプレクサは、直列化を実施する。符号付きの2の補数活性化をサポートするために、否定ブロック2225は、最上位ビット(MSB)が1であるとき、部分和から重みのMSBに対応する入力活性化の和を減算するために使用される。各々のSIP270bはまた、最大プーリング層をサポートするための比較器(最大)2260を含む。i_nbout入力は、2Kの出力よりも少ない完全結合層についての直列モードをサポートする。
この次のセクションは、2ビットの活性化及び重みを仮定して、この実施形態が畳み込み及び完全結合層をどのように処理することができるかを説明する。図28Aは、サイクルごとに単一の2ビットの出力活性化を生成する、2つの入力活性化を2つの重みと乗算する従来のビット並列処理エンジンを示す。エンジンは、サイクルごとに新たな2ビットの重み及び/又は活性化を処理することができ、サイクルごとに2つの2b×2bの積のスループットを処理することができる。
本発明の実施形態に従って、図28Bは、4×4アレイにおいて構成された4つのサブユニットを含むエンジンを示す。各々のサブユニットは、サイクルごとに入力活性化の2ビット及び重みの2ビットを受け付ける。同一の列に沿ったサブユニットは、活性化入力を共有すると共に、同一の行に沿ったサブユニットは、それらの重み入力を共有する。合計して、このエンジンは、ビット並列エンジンの入力帯域幅に等しい4つの活性化及び4つの重みビットを受け付ける。各々のサブユニットは、2つの1ビットの重みレジスタ(WR)、1つの2ビットの出力レジスタ(OR)を有し、そのORに蓄積することができる2つの1b×1bの積を実行することができる。
図28B~図28Fは、この実施形態が完全結合層をどのように処理するかを示す。図28Bが示すように、サイクル1では、左列サブユニットは、フィルタ0及び1から、活性化a及びaの最下位ビット(LSB)a及びa1/0、並びに4つの重みのLSBw 0/0、w 1/0、w 0/0、及びw 1/0を受信する。それらの2つのサブユニットの各々は、2つの1b×1bの積を計算し、そのORにそれらの和を記憶する。サイクル2では、図28Cが示すように、左列サブユニットはここで、同一の重みビットを、活性化a及びaの最上位ビット(MSB)a/1及びaのそれぞれと乗算し、それらのORにそれらを蓄積する。並列して、2つの右列サブユニットは、入力活性化a及びaのLSB、a0/0及びa1/0をロードし、それらをフィルタ2及び3からの重みのLSB w 0/0、w 1/0、w 0/0、及びw 1/0と乗算する。サイクル3では、左列サブユニットはここで、LSB a0/0及びa1/0をロードし、a0/0及びa1/0をフィルタ0及び1からの4つの重みのMSB w 0/1、w 1/1、w 0/1、及びw 1/1と乗算する。並列して、右サブユニットは、それらのWRに保持された重みw 0/0、w 1/0、w 0/0、及びw 1/0を再使用し、それらを活性化a及びaの最上位ビットa0/1及びa1/1と乗算する(図28D)。図28Eが例示するように、サイクル4では、左列サブユニットは、それらのWRに保持された重みを活性化a及びaのMSB a0/1及びa1/1と乗算し、出力活性化o及びoの計算を終了する。同時に、右列サブユニットは、フィルタ2及3からの重みのMSB w 0/1、w 1/1、w 0/1、及びw 1/1をロードし、それらをa0/0及びa1/0と乗算する。サイクル5では、図28Fが示すように、右サブユニットは、それらのWRに保持された重みと2つの活性化のMSB a0/1及びa1/1との乗算を完了する。このサイクルの終わりにより、出力活性化o及びoも準備された状態になる。
合計して、32の1b×1bの積を処理するために4+1サイクルを要する(サイクル2~5のそれぞれにおいて4、8、8、8、4の積)。5番目のサイクルの終わりでは、左列サブユニットがアイドルであり、よって、重みの別のセットがWRにロードされており、出力の新たなセットが計算を開始することを可能にすることに留意されたい。定常状態では、入力活性化及び重みが2つのビットで表現されるとき、このエンジンは、サイクルごとに8の1b×1bの項を産出しており、よって、並列エンジンの2つの2b×2bのスループットに相当する。
重みが1ビットのみを使用して表される場合、この実施形態は、サイクルごとに2つの出力活性化を産出しており、ビット並列エンジンの帯域幅の2倍である。概して、ビット並列ハードウェアが重みを表すためにPbaseビットを使用しており、Pビットのみが実際に必要とされていた場合、完全結合層について、エンジンは、Pbase/Pだけビット並列エンジンよりも性能を上回る。完全結合層では重みの再使用がないので、Cサイクルは、C列の各々に重みの異なるセットをロードすることが必要とされる。よって、Cビットよりも少ないビットを使用する活性化を有することは、性能を改善しないが、エネルギー効率を改善する。
この実施形態は、完全結合層とほとんど同様に畳み込み層を処理するが、重み及び活性化の両方に対して精度における換算を利用するために異なるウインドウにわたって重みの再使用を利用する。特に、畳み込み層では、同一の行にわたるサブユニットは、それらが単一のサイクルにおいてそれらのWRに並列にロードする同一の重みビットを共有する。それらの重みビットは、Pサイクルにわたって対応する活性化ビットと乗算される。重みビットの別のセットは、Pサイクルごとにロードされる必要があり、Pは、入力活性化精度である。ここで、この実施形態は、各々のサブユニット列に活性化の異なるセットを処理させることによって、複数のウインドウにわたって重みの再使用を利用する。ビット並列エンジンが入力活性化及び重みの両方を表すためにPbaseビットを使用すると仮定して、この実施形態は、P base/(P×P)だけビット並列エンジンよりも性能を上回ることができ、P及びPはそれぞれ、重み精度及び活性化精度である。
直列モード
完全に利用される上記言及された実施形態について、完全結合層は、少なくとも2Kの出力ニューロンを有する必要がある。学習されたネットワークのいくつかは、1K程度の出力活性化を有する層を有する。十分に活用しないことを回避するために、各々の行に沿ったSIP270bは、デイジーチェーンに直列化され、1つの出力は、マルチプレクサを介して次の入力にフィードされてもよい。このようにして、出力活性化の計算は、同一の行に沿ってSIPにわたってスライシングされてもよい。このケースでは、各々のSIPは、同一の行でのSIPに沿ったいくつかの部分出力活性化をもたらす入力活性化の一部のみを処理する。NPが、使用されるスライスの数である次のNPサイクルにわたって、NP部分出力は、最終出力活性化に換算されてもよい。ユーザは、最大で16までいずれかの数のスライスを選択することができ、それによって、エンジンは、ちょうど256の出力の完全結合層と同等に完全に利用されてもよい。この直列モードは、NeuralTalk[Andrej Karpathy and Fei-Fei Li,“Deep Visual-Semantic Alignments for Generating Image Descriptions”,CoRR abs/1412.2306(2014).http://arxiv.org/abs/1412.2306]にあるような他のディープラーニングネットワークにおいて有効である場合があり、最小の完全結合層は、600以下の出力を有することができる。この直列モードはまた、他の上記言及された実施形態と共に使用されてもよい。
サイクルごとの1つよりも多いビットの処理
サイクルごとに1つよりも多いビットの活性化を処理することによって、SIPの数及びそれぞれの領域のオーバヘッドを削減する実行時間性能の利点のいくつかをトレードオフすることが可能である。この方法を使用して、実施形態は、同等に構成されたビット並列エンジンのスループットに相当するためにより少ないSIP270bを必要とする。
評価性能
図23は、完全結合層及びシナプス/重みについての有効な層ごとの精度のセットを報告している。活性化についての精度は、図17において報告されるようなものである。図24は、同等に構成されたDaDianNaoに対する実行時間性能、並びに2つの構成、1)サイクルごとの2つの活性化ビット(「2ビット」)の第1の処理、及び2)サイクルごとの4つの活性化ビット(「4ビット」)の第2の処理、についての実行時間性能を報告している。2つの構成は、8つのSIP列及び4つのSIP列をそれぞれ必要とする。活性化がここで2又は4それぞれの倍数とされるので、それらの構成は、潜在的な性能のいくつかを断念する。例えば4ビットについて、8から5ビットにP を削減する構成は、性能の利点を生じさせず、ビット直列構成について、1.6×だけ性能を改善する。
ゼロビットのスキップ
よって、説明される実施形態は、活性化精度をはるかに変え、それによって、いくつかの先頭ビット及び最終ビットがゼロとして扱われる。しかしながら、処理されるゼロであるいくつかのビットがなおも存在する。別の実施形態は、ゼロであるニューロンビットをスキップすることによって、それらを取り除き、性能を改善する。ビット直列タイルでは、各々のサイクルにおいて、各々のニューロンビットは、いくつかのシナプスを有するANDedである。ニューロンビットがゼロであるとき、結果はゼロでもあり、最終出力ニューロンに何ら貢献しない。それは、出力ニューロン値に貢献する1つであるニューロンビットにすぎない。したがって、ビット直列タイルは、1つであるニューロンビットのみを処理するように拡張されてもよい。
図25は、ネットワークごとに入力ニューロンについての1ビットのカウントの累積分布を示す。全てのネットワークについて、入力ニューロンの少なくとも90%は、1つである最大で5ビットを有し、実質的に全ての入力ニューロンは、1つである最大で8ビットを有する。したがって、ゼロビットをスキップすることが可能なビット直列タイルは、ほとんどの時間(90%)に最大で5ビットを処理し、実質的に全て時間に最大で8ビットを処理する必要がある。
1つであるビットだけを処理するために、ディスパッチャは、それらのみを通信するように修正される。各々のビットの相対的な位置は、シナプスを適切に乗算するために知られる必要があるので、1つの実施形態では、ディスパッチャは、ビットのオフセットを通信する。例えば、入力ニューロンが値0b11001を有している場合、ディスパッチャは、1つであるビットの位置に対応するオフセット(0,3,4)を通信する。基準値が16ビットの数を使用するので、オフセットは4ビット長である必要がある。結果として、各々のニューロン線は、4線に置き換わる。1つであるビットの空間的分布を利用することによって、他のより短い線のカウントの代替が可能である。例えば、絶対的なオフセットの代わりに、ディスパッチャは、デルタを通信してもよく、そのケースでは、前の例示的な数が(0,2,1)として通信される。この例について、想定は、絶対的なオフセットの使用である。別の実施形態では、ディスパッチャは、これまでのようにではあるが、より高速なレートでニューロンを通信することができ、オフセット表現への変換は、各々の処理するタイルにおいて局所的に行われてもよい。
元の例では、全てのニューロンレーンは、全てのラインにわたって同一のオフセットにおいてビットを送信するロックステップにおいて作用する。ゼロビットのスキップを可能にするために、ニューロンレーンは、分離される必要があり、それによって、それらは、異なるオフセットにおいて通信することができる。ディスパッチャにオフセットを送信させることが、これを直に可能にする。しかしながら、ニューロンが完全に処理されると、ニューロンレーンは、次の入力ニューロンを処理する必要がある。結果として、ディスパッチャは、NMからそれをフェッチする必要がある。最悪のケースでは、全ての256のニューロンレーンは、完全に独立して動作し、各々が異なるブリックに属するニューロンを必要とする。これは、ディスパッチャにおいて256のブリックの入力バッファを維持することを必要とする。より悪く、最大で256の独立したブリックを作成することがNMから読み込む必要がある。帯域幅の要件は、取り除かれるビットのわずかによって必要とされるよりも多くは増大せず、ディスパッチャは、それらの要求の間で調停する必要がある。最後に、各々のSIPは、異なるニューロンオフセットにおいて作用しており、よって、異なるオフセットにおいてもシナプスをフェッチする必要がある。これは、SBが全てのSIPにわたって分割されることを必要とし、それによって、各々のSIPがその自身のSBのスライスを有する。
ゼロビットのスキップをサポートするために必要な独立したブリック要求の数は、ニューロンレーンをグループ化し、グループ内の全てのニューロンレーンがそれらの現在のニューロンを処理することを終了した後のみに入力ニューロンの次のセットに進むことを必要とすることによって削減されてもよい。複数の設計オプションが存在する。スペクトルの1つの目的は、全てのニューロンレーンが独立して作用する設計である。これは、ディスパッチャにおいて最大で256の異なるニューロンブリックをフェッチする必要があり、SIPごとに別個のSBのスライスを提供する必要がある、潜在的に望まれる要件を有する。スペクトルのもう一方の目的は、全てのニューロンレーンが単一のグループを形成する設計である。この設計では、各々のニューロンレーンは、異なるニューロンビットオフセットにおいて作用するが、全てのニューロンレーンは、全ての現在のニューロンが処理されたときのみニューロンの次のセットに進むことが許可される。すなわち、このケースでは、全てのニューロンレーンは、1つであるビットの最大カウントを有するニューロンを処理しているニューロンレーンを待つ。この設計の潜在的な追加された利点は、SBが全く分割されることを必要としないことである。ビット直列タイルは、加算器ツリー入力において導入されているシフタによるままであり、加算器は、シフトされた入力を扱うように適切に拡張される。異なる程度の要件による複数の他の選択肢が存在する。例えば、同一の行に沿ったSIPがグループを形成することを必要とすることがあり、そのケースでは、SBは、SIP行ごとに1つの、16のスライスに分割される必要があり、ディスパッチャは、異なる位置から最大で16の入力ブリックを維持する必要がある。それは、同様に、2つ、4つ、又は8つの行ごとにグループ化されてもよい。代わりに、それは、列に沿ってグループ化してもよく、複数のSBスライス及び複数のブリックがディスパッチャからフェッチすることを必要とする。
全てのニューロンレーンがロックステップにおいて続行しているとき、各々のSB列は、1回読み込まれ、全てのニューロンレーンによって再使用される。しかしながら、ニューロンレーンがより小さいグループにおいて独立して続行するとき、それらは、相互に先行して動作し、独立して、場合によっては異なる時に同一のSB列を読み込む。SBの前にバッファのセットを追加することによって、より少ないエネルギーによりこの要求にサービスすることが可能である。この実施形態では、各々のSB列は、バッファスロットに読み込まれ、全てのニューロンレーンがそれを読み込むまでそこに保持される。バッファの数は、各々の他のニューロンレーングループが独走してどのように動作することができるかを指示する。
1つの実施形態では、ビット直列エンジンのANDゲートは、シフタに置き換わり、それによって、重みは、2の累乗を表す、入ってくるオフセットと効果的に乗算されてもよい。そのような設計は、領域及び電力に関して高価であることが認識される。理由は、各々の加算器ツリーをフィードする16のニューロンオフセットを処理するとき、最悪のケースでは、オフセットの1つが0であり、その他が15である可能性があることである。結果として、シフタは、16ビットの入力シナプスを要し、32ビットの重みにそれを変換する必要がある。更に、加算器ツリーは、16ビットの加算器ツリーではなく、むしろ32ビットの加算器ツリーである。潜在的な性能のいくつかを断念することによって、「2段階シフティング」アプローチを使用して領域及びエネルギーオーバヘッドを削減することが可能である。特に、別の実施形態では、入力ニューロンは、ビットのグループ、例えば、4ビットの4つのグループとして処理される。例えば、オフセット(5)及び(0)を有する2つのニューロンを仮定して、基準値設計は、1つのサイクルにおいて両方を同時に処理する。修正された設計は、0~3の累乗を最初に処理し、次いで、別のサイクルでは、4~8の累乗を処理する。したがって、例では、修正された設計は、1つではなく2つのサイクルにおいて2つのニューロンを処理する。この設計は、いずれかのシフト演算が2つのより小さいシフト、a<<K=a<<(K’+C)=((a<<K’)<<C)として2つの段階において実行されてもよいという見解を利用する。よって、異なるオフセットK,…,KによってTの重みをシフト及び加算するために、共通項Cとの和、例えば、K=K’+Cにオフセットを分解することができる。したがって、処理する内積は、第1の段階が重みごとの特有のオフセットK’を使用し、第2の段階が全ての重みにわたる共通のオフセットCを使用する、2つの段階処理を使用して再配置されてもよい。この配置は、図26が示すように、加算器ツリーの後に1つの共通シフタを共有することによって、重みシフタの幅及び加算器ツリーの幅を減少させるために使用されてもよい。設計パラメータLは、重みシフタを制御するビットの数を定義し、それによって、設計は、単一のサイクルにおいて2未満で異なるオフセットを処理することができる。これは、16+2-1のビットの項のみをサポートするために、重みシフタのサイズを減少させ、加算器ツリーのサイズを減少させる。
図26は、この実施形態についての直列内積ユニット2600を示す。示されるシフタは、最大で16ビットの位置をシフトする。shift_B信号は、2段階シフティングを実施するために使用されてもよい。Done信号は、他のレーンが終了することをレーンが待っているときにシナプス値を蓄積することを禁止するために使用されてもよい。
図27は、ゼロビットのスキップ及び異なるニューロンレーンのグループ化により可能な性能を示す。特に、以下の構成、COL:SIPが列ごとに同期されるときのゼロビットのスキップの性能、ROW:SIPが行ごとにロックされるときのゼロビットのスキップの性能、及びPAL:SIPがパレットごとにロックされるとき、すなわち、全てのSIPが同期されるときのゼロビットのスキップの性能、が示される。
列ごとの設計は、可能な最高性能を達成し、行の設計がそれに続き、最後に、パレットの設計が続く。パレットの設計は、全てのSIPユニットを同期させ、よって、最も多くの制約を有する。しかしながら、それは、ディスパッチャとして実施するために最も簡易であり、SBはそのままである。行の設計は、SBが行に沿って16のスライスに分割されることを必要とし、ディスパッチャは、16の独立したブリックを保持する必要がある。
改善された符号化
SIPがいずれかの入力項を無効にすることができるので、Booth符号化を使用して符号付きオフセットを可能にすることによって、1つの連続(run)を含む活性化値について処理されるオフセットを換算することが可能である。この改善されたオフセットジェネレータは、隣接するオフセットA…Bの連続を形式A+1,-Bのペアに換算する。連続の中の単一のオフセット又は間隔は、正のオフセット又は負のオフセットそれぞれによって表される。例えば、通常はオフセット(4,3,1,0)により符号化される11011の活性化値は代わりに、(5,-3,+2,-0)により表されてもよく、又は更に経済的にオフセット(5,-2,-0)により表されてもよい。これは、Radix-4 Booth符号化と同等である。この符号化は、基準値符号化と比較して更なるオフセットを産出しない。しかしながら、2段階シフティングを理由に、この符号化は、必要とされるサイクルの数を増加させることが可能である。これは、2段階シフティングの間に共に処理されているビットグループの中でのオフセット分布が変化するときに起こる。
説明されるゼロビットのスキップ設計に加えて、図13はまた、ニューロン値が、1つであるビットの数を削減するように変更されるオプションごとの2つの拡張を示す。Ra拡張では、nが使用される精度である形式2-1の値であるニューロン値は、2に変換され、Rb拡張では、上記変換が全ての2の累乗について行われ、すなわち、いずれかの数の形式2-1が2に変換される。結果は、両方の技術が追加の性能改善を提供することができることを示す。正確度への影響の分析は行われていない。別の符号化では、層ごとの閾値又はニューロンのグループごとの閾値は、処理される2の累乗の最大数を判定する。例えば、閾値が3であり、ニューロンが(4,3,0,-1)として符号化される場合、(4,3,0)のみが処理される。
当業者によって認識されるように、上記言及された演算では、構成要素は、コントローラによって制御されてもよく、コントローラは、例えば、機能的ユニットとして加速器を制御することができるプログラム可能な有限状態機械又はプログラム可能なプロセッサであってもよい。実施形態に従って、プログラム可能な有限状態機械は、いくつかの制御及びデータレジスタを有してもよく、潜在的に、プログラム及びデータメモリを有してもよく、ニューラルネットワークシステムにおける本明細書で説明される他の構成要素に様々な制御信号を出力してもよい。
実施形態に従って、完全層以外の層の一部に本発明の実施形態を適合させることも可能である。層ごとの計算に対するそのような代替的なアプローチは、例えば、H次元及びW次元における入力マトリックスをいくつかの区画に分割してもよい。次いで、フィルタは、部分出力を産出するためにそれらの区画のうちの1つ以上に適用されてもよい。それらの部分出力は、全体として処理されてもよく、又は更に分割されてもよい。部分出力は、ネットワークの終端まで処理されてもよく(完全結合層がないと仮定して)、又はいくつかのポイントにおいて停止してもよく、更なる区画を処理することを続けるために分割ポイントに進んでもよい。
本発明は、その精神及びその必須の特性から逸脱することなく他の特定の形式において具体化されてもよい。本発明の特定の適合及び修正が当業者にとって明らかである。したがって、現在議論されている実施形態は、例示的であり、限定的でないものと見なされ、本発明の範囲は、上述した説明ではなく添付の特許請求の範囲によって示され、したがって、特許請求の範囲の同等物の意味及び範囲内にある全ての変更がそれに包含されると意図される。

Claims (21)

  1. ニューラルネットワークにおけるビット直列計算についてのシステムであって、
    ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、各々のビット直列タイルは、2つ以上のウインドウを並列に処理し、各々のビット直列タイルは、2つ以上のウインドウにおける入力ニューロン及び2つ以上のフィルタにおけるシナプスを受信し、出力ニューロンを生成する、1つ以上のビット直列タイルと、
    ニューロンを記憶し、ディスパッチャ及び換算器を介して前記1つ以上のビット直列タイルと通信する活性化メモリと
    を備え、
    前記ディスパッチャは、前記活性化メモリからニューロンを読み込み、各々のビット直列タイルのための2つ以上のウインドウレーンを介して前記1つ以上のビット直列タイルに前記ニューロンを通信し、
    前記ディスパッチャは、シナプスバッファからシナプスを読み込み、各々のビット直列タイルのための2つ以上のフィルタレーンを介して前記1つ以上のビット直列タイルに前記シナプスを通信し、
    前記換算器は、前記1つ以上のビット直列タイルから前記出力ニューロンを受信し、前記活性化メモリに前記出力ニューロンを通信し、
    前記ニューロンまたは前記シナプスのうちいずれか一方は、前記1つ以上のビット直列タイルとビットで直列に通信し、かつ前記ニューロンまたは前記シナプスのうちもう片方は、前記1つ以上のビット直列タイルとビットで並行に通信する、
    システム。
  2. 前記ディスパッチャは、1つ以上のブリックにおいて前記ニューロンを収集するためのシャッフラおよび直列ビットストリームに前記ブリックを変換するための転移器を含み、かつ前記ディスパッチャは、前記1つ以上のブリックを1つ以上のグループに収集する、請求項1に記載のシステム。
  3. 前記活性化メモリは、前記1つ以上のビット直列タイルに専用のメモリである、請求項1に記載のシステム。
  4. 各々のウインドウレーンは、1つ以上のビットの直列ニューロンレーンである、請求項1に記載のシステム。
  5. 前記ビット直列タイルの各々は更に、前記ディスパッチャからの入力ニューロンを保持する入力ニューロンバッファ、および前記換算器への通信を保留している出力ニューロンを保持するニューロン出力バッファを含む、請求項1に記載のシステム。
  6. 各々のフィルタレーンは、1つ以上のシナプスレーンを含む、請求項5に記載のシステム。
  7. 前記シナプスバッファおよび前記入力ニューロンバッファは、1つ以上の直列内積サブユニットの2次元アレイと通信する、請求項6に記載のシステム。
  8. 前記1つ以上の直列内積サブユニットの各々は、1つの出力ニューロンを産出する、請求項7に記載のシステム。
  9. 前記シナプスバッファの前記フィルタレーンは、相互接続を介して対応する前記直列内積サブユニットと通信する、請求項8に記載のシステム。
  10. 前記入力ニューロンバッファのウインドウレーンは、相互接続を介して対応する前記直列内積サブユニットと通信する、請求項9に記載のシステム。
  11. 前記直列内積サブユニットに1つ以上のシナプスグループを提供するシナプスレジスタを更に備える、請求項8に記載のシステム。
  12. 各々の直列内積サブユニットは、複数の入力加算器ツリーを含む、請求項8に記載のシステム。
  13. 各々の直列内積サブユニットは更に、1つ以上の否定ブロックを含む、請求項12に記載のシステム。
  14. 各々の直列内積サブユニットは更に、比較器を含む、請求項12に記載のシステム。
  15. 前記ディスパッチャは、1つ以上のブリックにおいて前記ニューロンを収集するシャッフラと、前記ブリックを直列ビットストリームに変換する転移器を備え、かつ前記シャッフラは、1つ以上のマルチプレクサを含む、請求項1に記載のシステム。
  16. 前記シナプスは、ビット並行インタフェースを介して通信する、請求項1に記載のシステム。
  17. ニューラルネットワークにおけるビット直列計算についてのシステムであって、
    ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、前記1つ以上のビット直列タイルは2つ以上のウインドウを並列に処理し、各々のビット直列タイルは、2つ以上のウインドウにおける入力ニューロン及び2つ以上のフィルタにおけるシナプスを受信し、出力ニューロンを通信する、1つ以上のビット直列タイルと、
    ニューロンを記憶し、ディスパッチャ及び換算器を介して前記1つ以上のビット直列タイルと通信する活性化メモリと
    を備え、
    前記ディスパッチャは、前記活性化メモリからニューロンを読み込み、各々のビット直列タイルのための2つ以上のウインドウレーンを介して前記1つ以上のビット直列タイルに前記ニューロンを通信し、
    前記ディスパッチャは、メモリからシナプスを読み込み、各々のビット直列タイルのための2つ以上のフィルタレーンを介して前記1つ以上のビット直列タイルに前記シナプスを通信し、
    前記換算器は、前記1つ以上のビット直列タイルから前記出力ニューロンを受信し、前記活性化メモリに前記出力ニューロンを通信し、
    前記ニューロンおよび前記シナプスは前記1つ以上のビット直列タイルとビットで直列に通信する、
    システム。
  18. 前記ディスパッチャは、前記入力ニューロンの最上位ビット値又は最下位ビット値に基づいて、入力シナプスの精度を換算する、請求項17に記載のシステム。
  19. 前記ディスパッチャは、前記入力ニューロンの前記最上位ビット値及び前記最下位ビット値に基づいて、前記入力シナプスの精度を換算する、請求項18に記載のシステム。
  20. ビット直列ニューラルネットワーク加速器を含む集積回路であって、
    ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、前記1つ以上のビット直列タイルは、2つ以上のウインドウを並列に処理し、各々のビット直列タイルは、2つ以上のウインドウにおける入力ニューロン及び2つ以上のフィルタにおけるシナプスを受信し、出力ニューロンを生成する、1つ以上のビット直列タイルと、
    ニューロンを記憶し、ディスパッチャ及び換算器を介して前記1つ以上のビット直列タイルと通信する活性化メモリと
    を備え、
    前記ディスパッチャは、前記活性化メモリからニューロンを読み込み、各々のビット直列タイルのための2つ以上のウインドウレーンを介して前記1つ以上のビット直列タイルに前記ニューロンを通信し、
    前記ディスパッチャは、メモリからシナプスを読み込み、各々のビット直列タイルのための2つ以上のフィルタレーンを介して前記1つ以上のビット直列タイルに前記シナプスを通信し、
    前記換算器は、前記1つ以上のビット直列タイルから前記出力ニューロンを受信し、前記活性化メモリに前記出力ニューロンを通信し、
    前記ニューロンまたは前記シナプスのいずれか一方が前記1つ以上のビット直列タイルとビットで直列に通信し、かつ前記ニューロンまたは前記シナプスのうちもう片方は、前記1つ以上のビット直列タイルとビットで並列に通信する、
    集積回路。
  21. ビット直列ニューラルネットワーク加速器を含む集積回路であって、
    ニューラルネットワークにおいてビット直列計算を実行する1つ以上のビット直列タイルであって、前記1つ以上のビット直列タイルは、2つ以上のウインドウを並列に処理し、各々のビット直列タイルは、入力ニューロン及びシナプスを受信し、出力ニューロンを通信する、1つ以上のビット直列タイルと、
    ニューロンを記憶し、ディスパッチャ及び換算器を介して前記1つ以上のビット直列タイルと通信する活性化メモリと
    を備え、
    前記ディスパッチャは、前記活性化メモリからニューロンを読み込み、各々のビット直列タイルのための2つ以上のウインドウレーンを介して前記1つ以上のビット直列タイルに前記ニューロンを通信し、
    前記ディスパッチャは、メモリからシナプスを読み込み、各々のビット直列のための2つ以上のフィルタレーンを介して前記1つ以上のビット直列タイルに前記シナプスを通信し、
    前記換算器は、前記1つ以上のビット直列タイルから前記出力ニューロンを受信し、前記活性化メモリに前記出力ニューロンを通信し、
    前記ニューロンおよび前記シナプスは、前記1つ以上のビット直列タイルにビットで直列に通信する、
    集積回路。
JP2021087474A 2016-05-26 2021-05-25 ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路 Active JP7166389B2 (ja)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201662341814P 2016-05-26 2016-05-26
US62/341,814 2016-05-26
US201662381202P 2016-08-30 2016-08-30
US62/381,202 2016-08-30
US201662395027P 2016-09-15 2016-09-15
US62/395,027 2016-09-15
US201662416782P 2016-11-03 2016-11-03
US62/416,782 2016-11-03
US201762448454P 2017-01-20 2017-01-20
US62/448,454 2017-01-20
US201762454268P 2017-02-03 2017-02-03
US62/454,268 2017-02-03
US201762490659P 2017-04-27 2017-04-27
US62/490,659 2017-04-27
JP2018562055A JP6890615B2 (ja) 2016-05-26 2017-05-26 ディープニューラルネットワークについての加速器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018562055A Division JP6890615B2 (ja) 2016-05-26 2017-05-26 ディープニューラルネットワークについての加速器

Publications (2)

Publication Number Publication Date
JP2021144727A JP2021144727A (ja) 2021-09-24
JP7166389B2 true JP7166389B2 (ja) 2022-11-07

Family

ID=60412016

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018562055A Active JP6890615B2 (ja) 2016-05-26 2017-05-26 ディープニューラルネットワークについての加速器
JP2021087474A Active JP7166389B2 (ja) 2016-05-26 2021-05-25 ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018562055A Active JP6890615B2 (ja) 2016-05-26 2017-05-26 ディープニューラルネットワークについての加速器

Country Status (7)

Country Link
US (3) US10387771B2 (ja)
EP (1) EP3465550B1 (ja)
JP (2) JP6890615B2 (ja)
KR (2) KR102120396B1 (ja)
CN (1) CN109416754B (ja)
CA (1) CA2990709C (ja)
WO (1) WO2017201627A1 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
US20180232627A1 (en) * 2017-02-16 2018-08-16 Intel IP Corporation Variable word length neural network accelerator circuit
EP3579150B1 (en) * 2017-04-06 2022-03-23 Shanghai Cambricon Information Technology Co., Ltd Operation apparatus and method for a neural network
KR102292349B1 (ko) * 2017-04-19 2021-08-20 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
CN109902804B (zh) 2017-08-31 2020-12-18 安徽寒武纪信息科技有限公司 一种池化运算方法及装置
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109961137B (zh) * 2017-12-14 2020-10-09 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
US10872291B2 (en) * 2017-12-22 2020-12-22 Alibaba Group Holding Limited On-chip communication system for neural network processors
CN109978131B (zh) * 2017-12-28 2020-05-22 中科寒武纪科技股份有限公司 集成电路芯片装置、方法及相关产品
CN108256644B (zh) * 2018-01-05 2021-06-22 上海兆芯集成电路有限公司 微处理器电路以及执行神经网络运算的方法
KR102463532B1 (ko) * 2018-01-16 2022-11-08 한국전자통신연구원 신경망 컴퓨팅 장치 및 그것의 동작 방법
US11630997B2 (en) * 2018-01-23 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus with bit-serial data processing of a neural network
GB201801639D0 (en) * 2018-02-01 2018-03-21 Ruff Brendan Patrick Low precision efficient multiplication free convolutional filter bank device
CN111742331A (zh) * 2018-02-16 2020-10-02 多伦多大学管理委员会 神经网络加速器
US11256841B1 (en) * 2018-03-06 2022-02-22 Ansys Lumerical Ip, Llc Method and system to implement a composite, multi-domain model for electro-optical modeling and simulation
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
KR102162749B1 (ko) * 2018-04-03 2020-10-07 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서
WO2019194466A1 (ko) * 2018-04-03 2019-10-10 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서
US10698730B2 (en) * 2018-04-03 2020-06-30 FuriosaAI Co. Neural network processor
US10657442B2 (en) * 2018-04-19 2020-05-19 International Business Machines Corporation Deep learning accelerator architecture with chunking GEMM
US10522226B2 (en) * 2018-05-01 2019-12-31 Silicon Storage Technology, Inc. Method and apparatus for high voltage generation for analog neural memory in deep learning artificial neural network
CN112106078A (zh) * 2018-05-08 2020-12-18 多伦多大学管理委员会 神经网络处理元件
US20190378013A1 (en) * 2018-06-06 2019-12-12 Kneron Inc. Self-tuning model compression methodology for reconfiguring deep neural network and electronic device
US11275713B2 (en) * 2018-06-09 2022-03-15 International Business Machines Corporation Bit-serial linear algebra processor
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
KR102650660B1 (ko) * 2018-09-03 2024-03-25 삼성전자주식회사 뉴로모픽 장치 및 뉴로모픽 장치에서 멀티-비트 뉴로모픽 연산을 처리하는 방법
WO2020072619A1 (en) * 2018-10-02 2020-04-09 The Regents Of The University Of Michigan Addressing bottlenecks for deep neural network execution of a graphics processor unit
US11354888B2 (en) 2018-11-16 2022-06-07 GM Global Technology Operations LLC Method and apparatus for a neural network
KR102451519B1 (ko) * 2018-11-20 2022-10-07 삼성전자주식회사 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기
US10657617B1 (en) 2018-11-26 2020-05-19 GM Global Technology Operations LLC Method and apparatus for memory access management for data processing
KR102562320B1 (ko) 2018-12-24 2023-08-01 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
CN109711542B (zh) * 2018-12-29 2020-08-18 西安交通大学 一种支持动态精度的dnn加速器及其实现方法
US11551093B2 (en) * 2019-01-22 2023-01-10 Adobe Inc. Resource-aware training for neural networks
WO2020172494A1 (en) 2019-02-22 2020-08-27 Neureality Ltd. Directed and interconnected grid dataflow architecture
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11211944B2 (en) 2019-04-17 2021-12-28 Samsung Electronics Co., Ltd. Mixed-precision compression with random access
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
US10998037B2 (en) 2019-05-07 2021-05-04 Memryx Incorporated Memory processing units and methods of computing dot products
US11488650B2 (en) 2020-04-06 2022-11-01 Memryx Incorporated Memory processing unit architecture
US10853066B1 (en) 2019-05-07 2020-12-01 Memryx Incorporated Memory processing units and methods of computing DOT products including zero bit skipping
US11507349B2 (en) * 2019-06-26 2022-11-22 Microsoft Technology Licensing, Llc Neural processing element with single instruction multiple data (SIMD) compute lanes
US11604972B2 (en) 2019-06-28 2023-03-14 Microsoft Technology Licensing, Llc Increased precision neural processing element
KR102435447B1 (ko) * 2019-07-23 2022-08-25 포항공과대학교 산학협력단 뉴럴 네트워크 시스템 및 이의 동작 방법
US20210150313A1 (en) * 2019-11-15 2021-05-20 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
KR102334473B1 (ko) * 2019-11-20 2021-12-03 한국전자기술연구원 적응형 딥러닝 가속 장치 및 방법
CN112990449B (zh) * 2019-12-12 2022-10-25 上海交通大学 一种面向神经网络的可变计算精度的simt系统
US11809798B2 (en) * 2019-12-13 2023-11-07 Intel Corporation Implementing large multipliers in tensor arrays
US11656872B2 (en) 2019-12-13 2023-05-23 Intel Corporation Systems and methods for loading weights into a tensor processing block
US11314483B2 (en) * 2020-01-08 2022-04-26 International Business Machines Corporation Bit-serial computation with dynamic frequency modulation for error resiliency in neural network
US11281554B2 (en) 2020-03-17 2022-03-22 Samsung Electronics Co., Ltd. System and method for in-memory computation
US12001929B2 (en) * 2020-04-01 2024-06-04 Samsung Electronics Co., Ltd. Mixed-precision neural processing unit (NPU) using spatial fusion with load balancing
US11514326B2 (en) 2020-06-18 2022-11-29 International Business Machines Corporation Drift regularization to counteract variation in drift coefficients for analog accelerators
KR102474053B1 (ko) * 2020-06-22 2022-12-06 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
KR102474054B1 (ko) * 2020-06-22 2022-12-06 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서
WO2022027172A1 (zh) * 2020-08-03 2022-02-10 深圳市大疆创新科技有限公司 数据处理装置、方法和系统以及神经网络加速器
CN114004347A (zh) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 用于加速图神经网络属性访问的硬件加速器、系统和方法
CN114254740B (zh) * 2022-01-18 2022-09-30 长沙金维信息技术有限公司 卷积神经网络加速计算方法、计算系统、芯片及接收机

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3260357B2 (ja) * 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
JP2663995B2 (ja) * 1990-05-22 1997-10-15 インターナショナル・ビジネス・マシーンズ・コーポレーション スケーラブル・フロー仮想学習ニューロコンピュータ
JP2785155B2 (ja) * 1990-09-10 1998-08-13 富士通株式会社 ニューロコンピュータの非同期制御方式
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH07210533A (ja) * 1994-01-19 1995-08-11 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路及びこれを用いた演算方法
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
US5751913A (en) * 1996-07-29 1998-05-12 Industrial Technology Research Institute Reconfigurable neural network and difference-square neuron
US6199057B1 (en) * 1996-10-23 2001-03-06 California Institute Of Technology Bit-serial neuroprocessor architecture
RU2131145C1 (ru) * 1998-06-16 1999-05-27 Закрытое акционерное общество Научно-технический центр "Модуль" Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
JP2010134389A (ja) 2008-12-08 2010-06-17 Oki Data Corp 定着装置及び画像形成装置
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system
US9400955B2 (en) * 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
US11551076B2 (en) * 2014-09-05 2023-01-10 Qualcomm Incorporated Event-driven temporal convolution for asynchronous pulse-modulated sampled signals
US9646611B2 (en) * 2014-11-06 2017-05-09 Microsoft Technology Licensing, Llc Context-based actions
CN105488563A (zh) * 2015-12-16 2016-04-13 重庆大学 面向深度学习的稀疏自适应神经网络、算法及实现装置

Also Published As

Publication number Publication date
EP3465550A1 (en) 2019-04-10
US20230186065A1 (en) 2023-06-15
JP2019522271A (ja) 2019-08-08
CN109416754A (zh) 2019-03-01
KR102120396B1 (ko) 2020-06-08
JP2021144727A (ja) 2021-09-24
KR20190010642A (ko) 2019-01-30
CA2990709A1 (en) 2017-11-30
JP6890615B2 (ja) 2021-06-18
EP3465550B1 (en) 2023-09-27
EP3465550A4 (en) 2020-01-22
KR20200067915A (ko) 2020-06-12
CA2990709C (en) 2018-09-04
CN109416754B (zh) 2020-06-23
KR102459854B1 (ko) 2022-10-27
WO2017201627A1 (en) 2017-11-30
US20170357891A1 (en) 2017-12-14
US10387771B2 (en) 2019-08-20
US20200125931A1 (en) 2020-04-23
US11610100B2 (en) 2023-03-21

Similar Documents

Publication Publication Date Title
JP7166389B2 (ja) ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路
CN111291859B (zh) 通用矩阵-矩阵乘法数据流加速器半导体电路
Ma et al. Optimizing the convolution operation to accelerate deep neural networks on FPGA
JP7266065B2 (ja) ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム
Judd et al. Stripes: Bit-serial deep neural network computing
CN107239829B (zh) 一种优化人工神经网络的方法
CN113076521B (zh) 一种基于gpgpu可重构架构的方法及计算系统
US20230143798A1 (en) Processing element and neural processing device including same
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN110705703A (zh) 基于脉动阵列的稀疏神经网络处理器
CN110851779A (zh) 用于稀疏矩阵运算的脉动阵列架构
US11650793B2 (en) Processing element, neural processing device including same, and method for calculating thereof
CN113762480B (zh) 一种基于一维卷积神经网络的时间序列处理加速器
US11494627B1 (en) Dynamic tile parallel neural network accelerator
Shabani et al. Hirac: A hierarchical accelerator with sorting-based packing for spgemms in dnn applications
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
Li et al. RAWAtten: Reconfigurable accelerator for window attention in hierarchical vision transformers
US11868741B2 (en) Processing element, neural processing device including same, and multiplication operation method using same
US20240211742A1 (en) Neural core, neural processing device including same, and method for loading data of neural processing device
KR102353816B1 (ko) 심층 신경망을 위한 뉴로모픽 컴퓨팅 구조의 최적화 시스템
CN118260070A (en) Method and system for accelerating pooling operation of heterogeneous processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210720

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20210816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220815

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: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221025

R150 Certificate of patent or registration of utility model

Ref document number: 7166389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150