JP6773568B2 - 演算システムおよびニューラルネットワークの演算方法 - Google Patents

演算システムおよびニューラルネットワークの演算方法 Download PDF

Info

Publication number
JP6773568B2
JP6773568B2 JP2017006740A JP2017006740A JP6773568B2 JP 6773568 B2 JP6773568 B2 JP 6773568B2 JP 2017006740 A JP2017006740 A JP 2017006740A JP 2017006740 A JP2017006740 A JP 2017006740A JP 6773568 B2 JP6773568 B2 JP 6773568B2
Authority
JP
Japan
Prior art keywords
weight parameter
arithmetic
data
memory
weight
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
JP2017006740A
Other languages
English (en)
Other versions
JP2018116469A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017006740A priority Critical patent/JP6773568B2/ja
Priority to EP17206922.1A priority patent/EP3352113A1/en
Priority to US15/846,987 priority patent/US20180204118A1/en
Publication of JP2018116469A publication Critical patent/JP2018116469A/ja
Application granted granted Critical
Publication of JP6773568B2 publication Critical patent/JP6773568B2/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/08Learning methods
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • 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

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

Description

本発明は高信頼に情報を処理する技術、特に演算システムおよびニューラルネットワークの演算方法に関する。
近年、画像認識にディープニューラルネットワーク(DNN)を用いることで高い認識率を達成可能であることがわかり、注目を集めている(例えば特許文献1参照)。画像認識とは、画像に映る物体の種類を分類し識別する処理である。DNNは、入力情報の特徴量抽出を行うパーセプトロンを多層に組み合わせることで、特徴量抽出を多重に行い高い認識率を達成可能な機械学習技術である。
DNNが機械学習アルゴリズムの中でも特に有効であることが最近になり判明した背景に、計算機の性能向上が挙げられる。DNNにおいて高い認識率を達成するためには、中間層のパーセプトロンのパラメータデータ(以下単に「パラメータ」という)を何千枚/何万枚もの画像データを用いて訓練し、最適化する必要がある。パラメータのデータ数を増やすほど、画像の詳細な分類と高い認識率を達成可能となる。したがって、多量の画像を用いて多量のパラメータを訓練するために高い計算性能が必要であり、近年のサーバにおけるマルチコア技術やGPGPU(General−purpose computing on graphics processing units)技術など計算機の発展によって、DNNによる一般画像認識が可能となった。
DNNの有効性が広く認知されたことでDNNの研究は爆発的に広まり、様々な応用が検討されている。一例を挙げると,自動車の自動運転技術の開発において、周囲の物体を認識するためにDNNを用いることが検討されている。
特開2013−69132号公報
現在のDNNアルゴリズムは、処理に必要なパラメータを格納するためのメモリ量や演算量が大きく、消費電力が大きい。この点、自動車などの組込み用途においては,サーバ環境と比較するとリソース、処理性能の制約がある。
そこで、発明者らは車載用途の汎用小型デバイスに実装する際に、電力当たりの演算効率の高いFPGA(Field-Programmable Gate Array)と、DRAM(Dynamic Random Access Memory)などの外部メモリの組み合わせを検討した。
一方、処理の高速化(並列化)および低電力化のためは、外部メモリ使用率を低減し、内部メモリを使用することが有効である。そこで、発明者らはFPGAの内部メモリであるCRAM(Configuration Random Access Memory)等を有効活用することも検討した。しかし、FPGAの論理を構成するCRAMには、ソフトエラー耐性が脆弱なメモリ、例えばSRAM(Static Random Access Memory)が用いられており、そこで発生したソフトエラーは装置自体の動作を変えてしまうため,対策が必要となる。
CRAMのソフトエラー対策については、メモリを巡回モニタリングし、外部メモリに格納されたコンフィギュレーションデータと比較することで、ソフトエラーを検出する方式が考えられる。しかし、エラー検出には所定の時間(例えば50ms以上)が必要であり、エラー検出と訂正が完了するまでは、誤った処理が行われる可能性がある。
そこで本発明の課題は、DNNを用いて信頼性の高い情報処理を可能とするとともに、高速化および低電力化が可能な情報処理技術を提供することにある。
本発明の一側面は、入力データと重みパラメータを用いて演算するニューラルネットワークが、演算回路と内部メモリを内蔵する演算デバイスと、外部メモリに実装される構成の演算システムにおいて、重みパラメータを、第1重みパラメータと第2重みパラメータに2分割するものであり、第1重みパラメータを演算デバイスの内部メモリに格納し、第2重みパラメータを外部メモリに格納する。
本発明の他の一側面は、データを受け付ける入力手段と、データに対して処理を行うニューラルネットワークを構成する演算回路と、演算回路の設定を行うためのコンフィグレーションデータが格納される記憶領域と、処理の結果を出力する出力手段と、を備える演算システムであって、ニューラルネットワークは、内積の計算を含む処理を行う中間層を含み、内積の計算のための重みパラメータの一部分を、記憶領域に格納するものである。
本発明の他の一側面は、演算回路と内部メモリを内蔵する演算デバイス、外部メモリ、および演算デバイスと外部メモリを接続するバスで構成される演算システムに、ニューラルネットワークを実装し、ニューラルネットワークによって、入力データと重みパラメータを用いて演算するニューラルネットワークの演算方法である。ここで、重みパラメータの一部である第1重みパラメータを内部メモリに格納し、重みパラメータの一部である第2重みパラメータを外部メモリに格納し、演算を行う場合には、第1重みパラメータを内部メモリから読み出すとともに、第2重みパラメータを外部メモリから読み出して、演算に必要な重みパラメータを演算デバイスに準備し、演算を行うことを特徴とする。
本発明によれば、DNNを用いて高信頼に情報を処理するとともに、高速化および低電力化が可能な情報処理技術を提供することができる。前述した以外の課題,構成及び効果は,以下の実施の形態の説明により明らかになる。
実施例の画像認識装置の構成例を示すブロック図。 DNNの処理の概念を示す概念図。 各層のノードの演算処理を示す模式図。 DNNの画像認識装置への実装例を、データの流れとともに示す模式図。 重みデータWの分布の例を示すグラフ図。 0に近い重みデータW0のメモリへの割り当て方法の一例を概念的に示す概念図。 0から遠い重みデータW1のメモリへの割り当て方法の一例を概念的に示す概念図。 畳込み演算・全結合演算モジュールへの、データの読み出し構成例を示すブロック図。 畳込み演算・全結合演算モジュールへの、データの読み出し構成の他の例を示すブロック図。 重みデータ等を各メモリに格納する手順を示すフロー図。 重みデータの内部メモリと外部メモリへの割り当て表の例を示す表図。 重みデータの内部メモリと外部メモリの格納アドレス表の例を示す表図。 実施例の画像認識装置の処理を示すフロー図。 実施例の畳込み演算の処理を示すフロー図。 重みデータの外部メモリと内部メモリへの格納形態を示す概念図。 演算ユニットの構成例を示すブロック図。 演算ユニットへの重みデータの格納処理例を示すフロー図。
以下,実施例を図面に基づいて説明する。なお,実施例を説明する全図において,同一の機能を有する構成には同一の符号を付し,その繰り返しの説明は特に必要な場合を除き省略する。
以下で説明される実施例の一例を挙げるならば,入力データと重みパラメータを用いて演算するニューラルネットワークが、演算回路とメモリを内部に含むFPGA等の演算デバイスと、外部メモリに実装される構成において、重みパラメータを第1及び第2の重みパラメータに2分割し、第1重みパラメータをCRAM等の演算デバイスの内部に搭載されるメモリに格納し、第2重みパラメータをDRAMやフラッシュメモリ等の外部メモリに格納することを特徴とする。
すなわち、本実施例では、DNN演算に用いる重みのパラメータセットを以下のように2分割する。第1重みパラメータは、DNNの演算結果への寄与が低いパラメータである。例えば、値が0に近い重みであるとか、重みの下位の桁を表すビットである。一方、第2重みパラメータは、DNNの演算結果への寄与が高いパラメータである。これは、第1重みパラメータ以外のパラメータの少なくとも一部であると定義できる。そして、第1重みパラメータを内部メモリ(CRAM)、第2重みパラメータを外部メモリ(DRAM)に格納し、DNN演算を実行する。
以下で説明する実施例では、画像を処理するためのDNNについて説明するが、用途は画像認識装置に限定されるものではない。
図1に,本実施例における画像認識装置1000の構成を示す。画像認識装置1000は、例えば自動車に搭載される装置として構成され、図示しないバッテリー等から電力を供給される。画像認識装置1000は、汎用の処理を行うCPU(Central Processing Unit)101、アクセラレータ100、データを記憶するためのメモリ102(便宜上「外部メモリ102」と呼ぶこともある)を含む。これらは外部バス115で接続され、データのやり取りが可能である。外部メモリ102は、例えば1または複数のチップで構成されるDRAMやフラッシュメモリなどの半導体メモリを用いることができる。
アクセラレータ100は画像データを処理するための専用の装置であり、入力データはCPU101から送られてくる画像データである。すなわち、CPU101は画像データ処理の必要が発生すると、アクセラレータ100に画像データを送り、アクセラレータ100から処理結果を受け取る。
アクセラレータ100は内部に演算データ記憶領域103(便宜上「内部メモリ103」と呼ぶこともある)と演算ユニット104を持つ。入力ポートと出力ポート(図示せず)と演算データ記憶領域103と演算ユニット104はバス105(便宜上「内部バス105」と呼ぶこともある)で接続されており,バス105を通じて演算データは転送される。
図1では、アクセラレータ100を1チップのFPGAで構成することを想定している。自動車などの組込み用途においては、アクセラレータ100はFPGAのような半導体集積回路で構成することができる。この半導体集積回路は、例えば1チップで構成され、汎用用途のCPU101と協働して、主に画像に関する処理を行う。演算データ記憶領域103は、半導体メモリであって、例えばSRAMのようなスケールが小さく高速のメモリが用いられる。なお、本実施例では画像認識処理を例に説明しているが、本実施例は他の処理に用いることも可能であり、特に用途を限定するものではない。また、外部メモリ102は、例えばDRAMやフラッシュメモリのようなメモリであり、内部メモリである演算データ記憶領域103に比較して、ソフトエラー耐性に優れるものを想定する。
演算データ記憶領域103は、一時記憶領域として用いられるBRAM(Block RAM)106とCRAM107を含む。BRAM106には,アクセラレータ100で実行される演算の途中結果等が格納される。CRAM107には、演算ユニット104の各モジュールを設定するためのコンフィグレーションデータが格納されている。後述するように、BRAMやCRAMにはDNNの中間層のパラメータ(重みデータ)も格納される。
演算ユニット104は,DNNの演算に必要なモジュールを含む。演算ユニットに含まれる各モジュールは、FPGAの機能によりプログラムが可能なものとする。ただし、一部を固定的な論理回路で構成することも可能である。
アクセラレータ100がFPGAで構成される場合には、演算ユニット104はプログラム可能なロジックセルで構成することができる。ルックアップテーブルの内容や、演算ユニット104の各モジュール108〜114のスイッチの設定のためのデータなど、プログラムのためのデータは、CPU101の制御により、外部メモリ102から演算データ記憶領域103のCRAM107にロードされ、各モジュール108〜114の機能を実現するようにロジックセルを設定する。
演算制御モジュール108は,DNNのアルゴリズムにしたがって他の演算モジュールや演算データのフローを制御するモジュールである。
デコード演算モジュール109は、外部メモリ102や内部メモリ103に格納されたパラメータをデコードするモジュールである。後に詳細に説明する。
畳込み演算・全結合演算モジュール110はDNNにおける畳込み演算もしくは全結合演算を実行するモジュールである。畳込み演算と全結合演算の内容は,ともに内積演算であるため1つのモジュールで実行可能である。また畳込み層や全結合層が複数あったとしても、1つの畳込み演算・全結合演算モジュール110で実行可能である。
活性化演算モジュール111は,DNNの活性化層の演算を実行するモジュールである。
プーリング演算モジュール112は,DNNにおけるプーリング層の演算を実行するモジュールである。
正規化演算モジュール113は,DNNにおける正規化層の演算を実行するモジュールである。
最大値演算モジュール114は,DNNにおける出力層の最大値を検出し認識結果202を得るためのモジュールである。これら演算モジュールのなかで本実施例の内容に深く関わるモジュールはデコード演算モジュール109と畳込み演算・全結合演算モジュール110であり,これら2つのモジュールについて後に詳細に説明する。また、本実施例で説明を省略する構成は、公知のFPGAやDNNの技術を踏襲してよい。
図2は、実施例における、DNNの処理の概念を示す図である。この例のDNNは入力層IN、第1の畳込み層CN1、第2の畳込み層CN2、出力層OUTを持つこととする。層の数は任意に変更することができる。入力層INは画像データ201をを正規化したものである。出力層OUTは第1の全結合層IP1としている。なお、通常は各畳込み層にはプーリング層や活性化層がセットになっているが、ここでは省略する。このDNNには、画像データ201が入力され、認識結果202が出力される。
畳込み層CN1、CN2は、入力された画像データ201から、認識するために必要な情報(特徴量)を抽出する。特徴量を抽出するために必要な畳込み処理のために、畳込み層はパラメータを使用する。プーリング層は、畳み込み層で得られた情報を要約するとともに、データが画像の場合には、位置に対する不変性を高める。
全結合層IP1は、抽出された特徴量を使って、その画像がどのカテゴリに属するかを判断する、つまりパターン分類を行う。
各層は多層パーセプトロン(multi-layer perceptron)の一つの層を構成する。概念的には、一つの層には複数のノードが一列に並んでいると考えることができる。1つのノードは、前の層の全てのノードと結合されている。結合一つ一つに対しては、パラメータとして重みデータW(「重みパラメータ」ともいう)が割り当てられている。後の層のノードの入力は、前の層の入力と重みデータの内積に基づくものとなる。演算には、その他バイアスのデータや閾値のデータが用いられることがある。本明細書では、これらを総称してパラメータということにする。本実施例では、ニューラルネットワークを構成するそれぞれの層のパラメータをメモリへ格納する際に、特徴的な処理を行っている。
図3は、図2の畳込み層CN1,CN2や全結合層IP1等の各層のノードの演算を模式的に示す図である。前の層の複数のノードからの入力I301に対して、所定の重みデータW302が積算される。それらの総和303に対して、所定の閾値やバイアスを与える活性化機能304を持つこともある。重みデータW302は入力301に対して、入力情報の強化や減退を行う。このような方法で、アルゴリズムが学習するタスクの中で、入力情報の重要性が割り当てられる。次に、複数の重みが結合した入力の総和303がノードの活性化機能304を通過する。これにより、その信号が、ネット内を進んでいくのか、そうであればどの程度進み、最終的な結果に影響するのか、などのような分類作業が行われ、次の層の1つのノードへの入力O305となる。
図4は、図2と図3に示したDNNを、図1に示した画像認識装置1000に実装する際の概念を、データの流れとともに示す図である。図1で概略を説明したように、アクセラレータ100は一般的なFPGAの1チップで構成することができる。FPGAの演算ユニット104は論理のプログラムが可能であり、種々の論理回路を実装することができる。
演算ユニット104のプログラムは、CRAM107に格納されたコンフィギュレーションデータCにより行われる。CRAM107はSRAMで構成されるため、コンフィギュレーションデータCは電源ON時などに、CPU101の制御により外部メモリ102等からCRAM107にロードされる。図4では、単純化するために演算ユニット104の論理として、畳込み演算・全結合演算モジュール110を模式的に示した。図4には示していないが、他の演算モジュールも同様にプログラムすることができ、演算ユニット104の一部を構成する。
図2および図3で説明したように、畳込み層CN1,CN2や全結合層IP1等は基本的に積和演算、すなわち乗算の結果の加算を行うものである。この演算においては、図2や図3で説明したように、重みデータW等のパラメータを用いる。本実施例では重みデータWは、基本的にその全てを外部メモリ102に格納することにしている。電源ON時等、演算を行う前には、重みデータWの少なくとも一部Wmを、BRAM106あるいはCRAM107にロードする。すなわち、本実施例では、重みデータを所定のルールにより、外部メモリ102と演算データ記憶領域103に分散させる。
当該ルールとしては、演算結果への寄与が低い重みデータWmをソフトエラー耐性の低い演算データ記憶領域103のBRAM106あるいはCRAM107に格納し、演算結果への寄与が高い重みデータWkは、ソフトエラー耐性の低い演算データ記憶領域103に格納しない。演算結果への寄与が低い重みデータWmを内部メモリである演算データ記憶領域103に格納し、演算に用いることにより、高速な処理と低消費電力の効果がある。また、演算結果への寄与が高い重みデータWkは、ソフトエラー耐性の高い外部メモリ102に保持したものを演算に用いることで、ソフトエラーの演算結果に対する影響を低減することができる。
画像認識装置1000が画像認識を行う場合には、画像データ201を入力データIとしてBRAM106に保持し、演算ユニット104の論理モジュールで演算を行う。畳込み演算・全結合演算モジュール110を例に取れば、外部メモリ102あるいは演算データ記憶領域103から、演算に必要なパラメータを演算ユニット104に読み出し、演算を行う。内積演算の場合には、入力側ノードIと出力側ノードOの積の数だけの重みデータWが必要となる。図4では、出力O1に対する入力I1の重みデータW11を示している。演算結果である出力データOは、外部メモリ102に格納され、当該データは次の演算の入力データIとしてBRAM106に格納される。必要な演算が全て終了すると、演算ユニット104からの最終的な出力Oは、認識結果202として出力される。
畳込み層CN1,CN2や全結合層IP1等は積和演算(内積の計算)を行うものであるため、畳込み演算・全結合演算モジュール110を最も大きな行と列に合わせてプログラムしておけば、各層の演算はパラメータを変えることで1つの畳込み演算・全結合演算モジュール110を共通に用いることができる。この場合には、コンフィグレーションデータCのデータ量は少なくて済む。ただし、重みデータWについては、層やノードの数の増加に伴ってデータ量が増加する。図4および以下の説明では、畳込み演算・全結合演算モジュール110を共通に用いる場合を想定したが、各層毎に畳込み演算・全結合演算モジュール110を個別に準備することも可能である。
図5は、重みデータWの分布の例を示している。横軸は、重みデータWの数値であり、縦軸は出現頻度である。この例では、0に近い重みデータW0の度数が大きいため、W0のデータ総量が大きい。また、0から遠い重みデータW1(例えば絶対値で0.005以上)の度数が小さいため、W1のデータ総量は小さい。この場合、0に近い重みデータW0では、積の結果が0に近くなるため、DNNの最終的な演算結果に与える影響が小さいと考えられる。すなわち、ソフトエラーにより、0に近い重みデータW0の値が変化しても、演算結果に与える影響が小さい。したがって、図5に示すように、0に近い重みデータW0をソフトエラー耐性の低い演算データ記憶領域103に記憶する重みデータWmとすれば、演算結果に与える影響は少ないといえる。一方、0から遠い重みデータW1は、演算データ記憶領域103に記憶せずに、重みデータWkとして外部メモリ102に格納する。
ただし、ソフトエラーにより0に近い重みデータW0が、0から遠い重みデータに変化すると、演算結果に与える影響が大きくなってしまう。そこで、演算データ記憶領域103に記憶させる重みデータWmは、重みの下位桁をあらわすビットに限定することが望ましい。
図6は、0に近い重みデータW0のメモリへの割り当て方法を概念的に示す図である。(a)は固定小数点演算の場合を示し、(b)は不動小数点演算の場合を示す。いずれも、斜線により示す下位のビットから所定ビットを、演算データ記憶領域103に格納する重みデータWmとし、それ以外は外部メモリ102に格納する重みデータWkとする。
図7は、0から遠い重みデータW1のメモリへの割り当て方法を概念的に示す図である。(a)は固定小数点演算の場合を示し、(b)は不動小数点演算の場合を示す。いずれも、全てのデータを外部メモリ102に格納する重みデータWkとする。
重みデータをどのようにW1とW0に分けるか、またW0をどのようにWmとWkに分けるかは、デバイスのソフトエラー耐性や、演算の内容にもよるが、基本的には重みデータの大きさとビットの桁に従う。例えばプラスマイナス0.005をしきい値とし、0.005以下の値を持つパラメータはゼロに近似できるとし、0に近い重みデータW0として扱うことができる。そして、下位例えば3ビットを演算データ記憶領域103に格納する重みデータWmとし、それ以外は外部メモリ102に格納する重みデータWkとする。
図8は、畳込み演算・全結合演算モジュール110への、データの読み出し構成を示すブロック図である。入力である画像データ201は演算データ記憶領域103のBRAM106に記憶する。演算途中の中間データもBRAM106に記憶する。0に近い重みデータW0は上位桁を外部メモリ102のDRAMに記憶したものを用いる。また、0に近い重みデータW0の下位桁はCRAM107に記憶したものを用いる。また、0から遠い重みデータW1は外部メモリ102のDRAMに記憶したものを用いる。
デコード演算モジュール109は、外部メモリ102と演算データ記憶領域103に格納された重みデータを、セレクタ801で選択し、フリップフロップ802でタイミングを制御して演算ユニット104に送出する。画像データ201や中間データもフリップフロップ803でタイミングを制御して演算ユニット104に送出する。
図8の例では、0に近い重みデータW0の下位桁はCRAM107に記憶したが、BRAM106のサイズや画像データ201や中間データの大きさによっては、BRAM106に記憶することもできる。
図9は、0に近い重みデータW0の上位桁を外部メモリ102のDRAMに、下位桁をBRAM106とCRAM107に記憶する例である。
図10は、図4と図8の構成において、コンフィグレーションデータCや重みデータWを各メモリに格納する手順を示すフロー図である。この処理は、CPU101が制御して行うものとする。まず処理S1001では、FPGAの通常の処理と同様に、コンフィグレーションデータCを外部メモリ102からCRAM107にロードし、処理S1002でCRAM107の残りの空き領域を確保する。
次に、処理S1003では重みデータWの外部メモリ102と内部メモリ103への割り当て表を参照する。割り当て表は例えば外部メモリ102のDRAMに予め格納しておく。
図11は、重みデータWの外部メモリ102と内部メモリ103への割り当て表1100の例を示す表図である。ここでは、あるひとつの層(あるいはそのひとつのフィルタ)のパラメータひとつひとつについて、重みデータWを外部メモリ102と内部メモリ103へ各何ビット割り当てるかを示している。通常DNNのパラメータは、DNNの学習によって最適化されて定められる。よって、学習済みのパラメータについて、図6と図7に示した手法により、重みデータWを外部メモリにnビット、内部メモリにmビットのように割り当てを決定する。これは、手作業によってデータを作成しても良いし、単純なプログラムによって各パラメータを処理しても良い。なお、既述のように外部メモリには重みデータWが全て格納されることにしているので、上記の外部メモリの割り当てビット数nとは、格納されている重みデータのうち、演算時に読み出されるビット数ということができる。
処理S1004では、割り当て表1100を参照し、外部メモリ102から内部メモリ103へ所定ビット数だけ重みデータWmをロードする。例えば、図11の#2のパラメータについては下位2ビットを、#3のパラメータについては下位3ビットを内部メモリ103にロードする。#1のパラメータは、内部メモリ103へロードするデータはない。
処理S1005では、外部メモリ102に格納された重みデータWkと内部メモリ103にロードされた重みデータWmの格納場所を示すアドレス表1200を作成し、CRAM107あるいはBRAM106に格納する。
図12は、アドレス表1200の一例を示す。例えば、外部メモリ102と内部メモリ103のそれぞれに対して、各層(あるいはそのひとつのフィルタ)のパラメータ毎に先頭アドレスを指定する。外部メモリ102の先頭アドレスは、パラメータを予めDRAMに格納したとおりなので、内部メモリ103に格納した重みデータWmの先頭アドレスが追加されることになる。
以上で、画像認識装置1000の画像処理に先立って、演算ユニット104の演算に必要なデータの準備が完了する。
図13は,本実施例における画像認識装置1000の画像処理手順を示すフローチャートである。ここでは、図2のDNNを例に、2つの畳込み演算と、1つの全結合演算を行うものを示した。
ステップS1301:画像認識装置1000のアクセラレータ100はCPU101から入力データである画像101を受け取り,演算データ記憶領域103内部のBRAM106に格納する。画像データは,DNNにおける入力層INに相当する。
ステップS1302:畳込み演算・全結合演算モジュール110を用いてパラメータによる特徴量抽出を行う。DNNにおける畳込み層CN1,CN2に相当する。詳細は後ほど図14で説明する。
ステップS1303:演算データ記憶領域103内部のBRAM106に格納されている畳込み演算の結果や全結合演算の結果に対して,活性化演算モジュール111やプーリング演算モジュール112を適用する。DNNにおける活性化層やプーリング層に相当する演算を実行する。
ステップS1304:演算データ記憶領域103内部のBRAM106に格納されている中間層データに対して,正規化演算モジュール113を適用する。DNNにおける正規化層に相当する演算を実行する。
ステップS1305:畳込み演算・全結合演算モジュール110を用いてパラメータによる特徴量抽出を行う。DNNにおける全結合層IP1に相当する。詳細は後ほど説明する。
ステップS1306:出力層の中で最大値を持つ要素のインデックスを求め,認識結果202として出力する。
図14は,本実施例における畳込み演算の処理フローS1302の詳細を示す図である。畳込み演算の処理は、重みパラメータを読み出す処理と、入力あるいは中間層のデータと重みパラメータの内積演算を行う処理を含む。
ステップS1401:ループ変数を i=1 と初期化する。
ステップS1402:畳込み層のi枚目のフィルタを選択する。ここで、後段のひとつのノードに接続される複数の入力に対する複数の重みデータWをフィルタと称している。
ステップS1403:パラメータのデコードを行う。すなわち、パラメータを畳込み演算・全結合演算モジュール110の入力レジスタにロードする。詳細は後ほど説明する。
ステップS1404:演算データ記憶領域103内部のBRAM106に格納されている中間層のデータを、入力データとして畳込み演算・全結合演算モジュール110の入力レジスタにロードする。
ステップS1405:畳込み演算・全結合演算モジュール110を用いて内積演算を実行する。出力レジスタに格納されている出力データは、演算の中途結果として演算データ記憶領域103内部のBRAM106に一時記憶する。
ステップS1406:すべての入力データに対してフィルタを適用したならばステップS1407に進む。そうでないなら,フィルタを適用する対象の中間層データを変更し,ステップS1404に進む。
ステップS1407:すべてのフィルタの処理が完了したならば,畳込み演算の処理フローを終了する。その層の最終的な出力は、外部メモリ102に転送され、当該データはBRAM106に転送されて次の層の入力となる。未処理のフィルタがある場合には、ステップS1408に進む。
ステップS1408:ループ変数を i=i+1 と更新して次のフィルタの処理をする。
以上の処理により、1個の畳込み層に対する処理フローS1302が行われる。全結合層の処理フローS1305についても、若干の相違はあるものの、パラメータを変えながら内積の計算を行う点は同様であり、図14と同様に処理することができる。
図15は,本実施例におけるパラメータの記憶の例を示す図である。ここでは、図11の畳込み層CN2のパラメータを例に説明する。畳込み層CN2の1つのパラメータは8ビットであり、外部メモリ102には8ビット全てが格納されている。また、図10の処理S1004によって、内部メモリ103には、8ビットのうち下位2ビットが格納されている。図では単純化するため、各パラメータはすべて下位2ビットが内部メモリに格納されることにしたが、パラメータ毎に異なるビット数を内部メモリにロードすることにしてもよい。
外部メモリ102と内部メモリ103それぞれの記憶領域は、内部がバンク1501によって分割されアドレス1502によりアドレス番号が振られている。これらバンク1501の構成やアドレス1502の振り方はメモリの物理的構成に依存しているが、ここでは、外部メモリ102と内部メモリ103で共通しているものとし、各アドレスに1つのパラメータを格納するものとする。
外部メモリ102では、1つのアドレスに8ビットのデータ1503aが格納されるが、デコードされるのは斜線で示す上位6ビットである。内部メモリ103では、アドレスに2ビットのデータ1503bが格納され、斜線で示す2ビット全てがデコードされる。
図16は、本実施例における演算ユニット104内部のデコード演算モジュール109と畳込み演算・全結合演算モジュール110の構成を示す図である。演算ユニット104は複数の畳込み演算・全結合演算モジュール110を含むことができる。また、各演算モジュールを相互接続するバス160が存在し、各演算モジュールが演算データを交換するために使用される。演算ユニット104内部のバスはアクセラレータ100の内部バス105と接続し、内部バス105は外部バス115と接続しており、BRAM106や外部メモリ102と演算データの交換が可能である。畳込み演算・全結合演算モジュール110は、1つのモジュールを、入力レジスタ163に格納するデータを変更してパラメータを変更することにより、異なる中間層として利用することできる。ただし、畳込み演算・全結合演算モジュール110は、複数備えていても良い。
デコード演算モジュール109は内部にパラメータを一時保存するためのレジスタ162と、フィルタデータのデコードを行うためのデコード処理部161を持つ。畳込み演算・全結合演算モジュール110は内積演算を実行する演算モジュールであり,入力レジスタ163と乗算器164と加算器165と出力レジスタ166を持つ。入力レジスタ163は計(2N+1)個で奇数個あり、パラメータを保持するレジスタFと、前の層の演算結果を保持するレジスタDを含む。入力レジスタ163は、演算ユニット104内部のバス160と接続し、バス160から入力データを受け取り保持する。これら入力レジスタ163は1個をのぞき全てが乗算器164の入力に接続し,残りの1個は加算器165の入力に接続する。乗算器164の入力に接続する2N個の入力レジスタ163は半数のN個+1個(レジスタF)は中間層のパラメータを受け取って保持し,残り半数のN個(レジスタD)は内部メモリ103におけるBRAM106に保存された演算中間結果を受け取って保持する。
畳込み演算・全結合演算モジュール110はN個の乗算器と加算器を持つ。N個の乗算器はそれぞれがパラメータと演算中間結果の積を計算し出力する。N個の加算器は,N個の乗算器の結果と1個の入力レジスタの総和を計算し,その結果は出力レジスタ166に保存される。出力レジスタ166に保存された演算データは演算ユニット104内部のバス160を通じて外部メモリ102もしくは演算モジュールに転送される。
図15に示した畳込み層CN2のパラメータ1503をデコードする場合を例に説明する。まず最初に、演算ユニット104内部のデコード処理部161が、図11と図12に示したデータに基づいて、外部メモリ102のBANK AのアドレスADDR 0に格納されている8ビットのうち、上位6ビットのパラメータをデコード演算モジュール109内部のレジスタ162に転送するよう指示を出す。
次に、演算ユニット104内部のデコード処理部161が、図11と図12に示したデータに基づいて、内部メモリ103のBANK AのアドレスADDR 0に格納されている2ビットのパラメータをデコード演算モジュール109内部のレジスタ162に転送するよう指示を出す。これにより、外部メモリ102と内部メモリ103の対応するアドレスに格納された、6ビットと2ビットのデータが、デコード演算モジュールのレジスタ162に転送される。
次に、演算ユニット104内部のデコード処理部161が、レジスタ162に格納されたパラメータをバス160を介して畳込み演算・全結合演算モジュールのレジスタFに転送する。
図17は,本実施例におけるパラメータのデコード処理フローS1403を示す図である。
ステップS1701: 該当するフィルタのパラメータ個数を参照し,k個と設定する。また,該当するパラメータが一つのアドレスに格納されている個数は1個とする。
ステップS1711: ループ変数jを j=1 と初期化する。
ステップS1712: 演算制御モジュール108は外部メモリ102のアドレスのj番目のアドレスに格納されたパラメータを、nビット分アクセラレータ100の内部バス105や演算ユニット104内部のバス160を通じてデコード演算モジュール109内部のレジスタ162に転送する。
ステップS1713: 演算制御モジュール108は内部メモリ103のアドレスのj番目のアドレスに格納されたパラメータを、mビット分アクセラレータ100の内部バス105や演算ユニット104内部のバス160を通じてデコード演算モジュール109内部のレジスタ162に転送する。
ステップS1714: 演算制御モジュール108は、レジスタ162に格納されたn+mビットのパラメータをj番目のレジスタFに転送する。
ステップS1715: j≦kならばステップS1706に進み,そうでないならパラメータのデコード処理フローを終了する。
以上で、1つの層の1つのフィルタに相当する重みパラメータのデコードが終了する。
以上説明した実施例によれば、FPGAの内部メモリを活用することにより、高速で低消費電力の計算が可能となり、また、計算結果の信頼性も高い。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
101:CPU、102:外部メモリ、103:演算データ記憶領域、104:演算ユニット、105:内部バス

Claims (12)

  1. 入力データと重みパラメータを用いて演算するニューラルネットワークが、演算回路と内部メモリを内蔵する演算デバイスと、外部メモリに実装される構成において、
    前記重みパラメータを、第1重みパラメータと第2重みパラメータに2分割し、
    前記第1重みパラメータは、絶対値が所定のしきい値以下である前記重みパラメータのうち、所定の下位桁の集合であり、
    前記第2重みパラメータは、前記重みパラメータのうち、前記第1重みパラメータ以外の部分の集合であり、
    前記第1重みパラメータを前記演算デバイスの内部メモリに格納し、
    前記第2重みパラメータを前記外部メモリに格納する演算システム。
  2. 前記演算回路は、FPGA(Field−Programmable Gate Array)であり、
    前記内部メモリは、SRAM(Static Random Access Memory)であり、
    前記外部メモリは、前記SRAMよりソフトエラー耐性に優れるメモリである、
    請求項1に記載の演算システム。
  3. 前記演算回路は、FPGA(Field−Programmable Gate Array)であり、
    前記内部メモリは、前記演算回路の設定を行うためのコンフィグレーションデータが格納されるメモリ、および、前記演算回路で実行される演算の途中結果が格納されるメモリの少なくとも1つである、
    請求項1に記載の演算システム。
  4. 前記ニューラルネットワークは、積和演算を行う畳込み層および全結合層の少なくとも1つを含み、
    前記重みパラメータは、前記入力データに対して前記積和演算を行うためのデータである、
    請求項1に記載の演算システム。
  5. データを受け付ける入力手段と、
    前記データに対して処理を行うニューラルネットワークを構成する演算回路と、
    前記演算回路の設定を行うためのコンフィグレーションデータが格納される記憶領域と、
    前記処理の結果を出力する出力手段と、を備え、
    前記ニューラルネットワークは、内積の計算を含む処理を行う中間層を含み、
    前記内積の計算のための重みパラメータの一部分を、前記記憶領域に格納
    前記記憶領域に格納される前記重みパラメータの一部分は、
    パラメータ値の絶対値が所定のしきい値以下である前記重みパラメータのうち、所定の下位ビットの集合である、
    演算システム。
  6. 前記演算回路は、FPGA(Field−Programmable Gate Array)で構成され、
    前記記憶領域は、SRAM(Static Random Access Memory)で構成され、
    前記演算回路と前記記憶領域は1チップの半導体装置に内蔵される、
    請求項5に記載の演算システム。
  7. 前記1チップの半導体装置は、
    前記演算回路で実行される演算の途中結果が格納される一時記憶領域を備え、
    前記内積の計算のための重みパラメータの一部分を、さらに、前記一時記憶領域に格納する、
    請求項6に記載の演算システム。
  8. 前記中間層は、畳込み層もしくは全結合層である、
    請求項5記載の演算システム。
  9. 演算回路と内部メモリを内蔵する演算デバイス、外部メモリ、および前記演算デバイスと前記外部メモリを接続するバスで構成される演算システムに、ニューラルネットワークを実装し、
    前記ニューラルネットワークによって、入力データと重みパラメータを用いて演算するニューラルネットワークの演算方法であって、
    前記重みパラメータの一部である第1重みパラメータを前記内部メモリに格納し、
    前記重みパラメータの一部である第2重みパラメータを前記外部メモリに格納し、
    前記第1重みパラメータは、絶対値が所定のしきい値以下の前記重みパラメータの少なくとも一部の集合であり、
    前記第2重みパラメータは、前記重みパラメータのうち、前記第1重みパラメータ以外の部分の集合であり、
    前記演算を行う場合には、前記第1重みパラメータを前記内部メモリから読み出すとともに、前記第2重みパラメータを前記外部メモリから読み出して、前記演算に必要な前記重みパラメータを前記演算デバイスに準備し、演算を行うことを特徴とする、
    ニューラルネットワークの演算方法。
  10. 前記第重みパラメータは、絶対値が所定のしきい値以下の前記重みパラメータの所定の下位ビット部分の集合である、
    請求項9に記載のニューラルネットワークの演算方法。
  11. 前記外部メモリには、前記第1重みパラメータおよび前記第2重みパラメータの両方を含む重みパラメータ全体を格納し、そのうちの前記第1重みパラメータに相当する部分を、前記内部メモリに転送する、
    請求項9記載のニューラルネットワークの演算方法。
  12. 前記演算回路は、FPGA(Field−Programmable Gate Array)で構成され、
    前記内部メモリは、SRAM(Static Random Access Memory)で構成され、
    前記外部メモリは、前記SRAMよりソフトエラー耐性に優れる半導体メモリである、
    請求項9に記載のニューラルネットワークの演算方法。
JP2017006740A 2017-01-18 2017-01-18 演算システムおよびニューラルネットワークの演算方法 Active JP6773568B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017006740A JP6773568B2 (ja) 2017-01-18 2017-01-18 演算システムおよびニューラルネットワークの演算方法
EP17206922.1A EP3352113A1 (en) 2017-01-18 2017-12-13 Calculation system and calculation method of neural network
US15/846,987 US20180204118A1 (en) 2017-01-18 2017-12-19 Calculation System and Calculation Method of Neural Network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017006740A JP6773568B2 (ja) 2017-01-18 2017-01-18 演算システムおよびニューラルネットワークの演算方法

Publications (2)

Publication Number Publication Date
JP2018116469A JP2018116469A (ja) 2018-07-26
JP6773568B2 true JP6773568B2 (ja) 2020-10-21

Family

ID=60915166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017006740A Active JP6773568B2 (ja) 2017-01-18 2017-01-18 演算システムおよびニューラルネットワークの演算方法

Country Status (3)

Country Link
US (1) US20180204118A1 (ja)
EP (1) EP3352113A1 (ja)
JP (1) JP6773568B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436442B2 (en) 2019-11-21 2022-09-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN109214504B (zh) * 2018-08-24 2020-09-04 北京邮电大学深圳研究院 一种基于fpga的yolo网络前向推理加速器设计方法
WO2020044527A1 (ja) * 2018-08-31 2020-03-05 株式会社アラヤ 情報処理装置
WO2020063940A1 (zh) * 2018-09-29 2020-04-02 上海寒武纪信息科技有限公司 计算装置及相关产品
US11443185B2 (en) 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof
CN109754070B (zh) * 2018-12-28 2022-10-21 东莞钜威软件科技有限公司 基于神经网络的绝缘阻值计算方法及电子设备
CN110175670B (zh) * 2019-04-09 2020-12-08 华中科技大学 一种基于FPGA实现YOLOv2检测网络的方法及系统
JP7027371B2 (ja) * 2019-06-03 2022-03-01 株式会社東芝 ニューラルネットワークの演算装置、ニューラルネットワーク、ニューラルネットワークの制御方法
JP7391553B2 (ja) * 2019-06-28 2023-12-05 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
JP7253468B2 (ja) * 2019-07-26 2023-04-06 株式会社メガチップス ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
KR102491202B1 (ko) * 2019-09-10 2023-01-25 주식회사 모빌린트 인공 신경망 연산을 수행하는 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체
DE102020202632A1 (de) 2020-03-02 2021-09-02 Robert Bosch Gesellschaft mit beschränkter Haftung Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler
JP2022142201A (ja) * 2021-03-16 2022-09-30 Necプラットフォームズ株式会社 情報処理装置、情報処理システム、情報処理方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5772442B2 (ja) 2011-09-22 2015-09-02 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436442B2 (en) 2019-11-21 2022-09-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof

Also Published As

Publication number Publication date
JP2018116469A (ja) 2018-07-26
US20180204118A1 (en) 2018-07-19
EP3352113A1 (en) 2018-07-25

Similar Documents

Publication Publication Date Title
JP6773568B2 (ja) 演算システムおよびニューラルネットワークの演算方法
US11868426B2 (en) Hardware implementation of convolutional layer of deep neural network
JP6823495B2 (ja) 情報処理装置および画像認識装置
US20190087713A1 (en) Compression of sparse deep convolutional network weights
US20190042251A1 (en) Compute-in-memory systems and methods
JP2020521195A (ja) ニューラルネットワーク処理のスケジューリング
WO2019046835A1 (en) COMPUTER ACCELERATOR OF ARTIFICIAL INTELLIGENCE NEUROMORPHIC TO ULTRA-LOW CONSUMPTION
KR20190104406A (ko) 처리방법 및 장치
US11593002B2 (en) Artificial neural networks in memory
Miyashita et al. Time-domain neural network: A 48.5 TSOp/s/W neuromorphic chip optimized for deep learning and CMOS technology
Ryu et al. Bitblade: Energy-efficient variable bit-precision hardware accelerator for quantized neural networks
CN108804973B (zh) 基于深度学习的目标检测算法的硬件架构及其执行方法
Dutta et al. Hdnn-pim: Efficient in memory design of hyperdimensional computing with feature extraction
GB2602524A (en) Neural network comprising matrix multiplication
CN113065632A (zh) 验证用于图像识别的神经网络的训练的方法和设备
Geng et al. CQNN: a CGRA-based QNN framework
CN115204355A (zh) 能够重新使用数据的神经处理单元及其方法
Ouyang et al. A fast and power-efficient hardware architecture for visual feature detection in affine-sift
WO2022031446A1 (en) Optimized sensor fusion in deep learning accelerator with integrated random access memory
US11966344B2 (en) Accelerator and electronic device including the same
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
US10997497B2 (en) Calculation device for and calculation method of performing convolution
Han et al. A high-throughput scalable BNN accelerator with fully pipelined architecture
Yang et al. Value-driven synthesis for neural network ASICs
US20230237368A1 (en) Binary machine learning network with operations quantized to one bit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200825

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201001

R150 Certificate of patent or registration of utility model

Ref document number: 6773568

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150