JP7379821B2 - 推論処理装置および推論処理方法 - Google Patents

推論処理装置および推論処理方法 Download PDF

Info

Publication number
JP7379821B2
JP7379821B2 JP2019001590A JP2019001590A JP7379821B2 JP 7379821 B2 JP7379821 B2 JP 7379821B2 JP 2019001590 A JP2019001590 A JP 2019001590A JP 2019001590 A JP2019001590 A JP 2019001590A JP 7379821 B2 JP7379821 B2 JP 7379821B2
Authority
JP
Japan
Prior art keywords
inference
input data
processing device
data
batch
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
JP2019001590A
Other languages
English (en)
Other versions
JP2020112901A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2019001590A priority Critical patent/JP7379821B2/ja
Priority to PCT/JP2019/050832 priority patent/WO2020145146A1/ja
Priority to US17/293,736 priority patent/US20210406655A1/en
Publication of JP2020112901A publication Critical patent/JP2020112901A/ja
Application granted granted Critical
Publication of JP7379821B2 publication Critical patent/JP7379821B2/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/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/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

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)
  • Feedback Control In General (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Description

本発明は、推論処理装置および推論処理方法に関し、特に、ニューラルネットワークを用いて推論を行う技術に関する。
近年、モバイル端末やInternet of Things(IoT)デバイス等のエッジデバイスの増加に伴い、生成されるデータが爆発的に増加している。この膨大なデータから有意義な情報を抽出するには、深層ニューラルネットワーク(Deep Neural Networks:DNN)とよばれる最先端の機械学習技術が優位である。近年のDNNに関する研究の進歩により、データの解析精度は大幅に改善されており、DNNを利用した技術のさらなる発展が期待されている。
DNNの処理は学習および推論の2つのフェーズがある。一般に、学習では、大量のデータを必要とするため、クラウドで処理される場合がある。一方、推論では学習済みのDNNモデルを使用し、未知の入力データに対して出力を推定する。
より詳細に説明すると、DNNにおける推論処理では、学習済みのニューラルネットワークモデルに時系列データまたは画像データなどの入力データを与えて、入力データの特徴を推論する。例えば、非特許文献1に開示されている具体的な例によると、加速度センサとジャイロセンサとを搭載したセンサ端末を用いて、ゴミ収集車の回転や停止といったイベントを検出することで、ゴミの量を推定している。このように、未知の時系列データを入力として、各時刻におけるイベントを推定するには、予め各時刻におけるイベントが既知である時系列データを用いて学習したニューラルネットワークモデルを用いる。
非特許文献1では、センサ端末から取得される時系列データを入力データとして用いており、リアルタイムにイベントを抽出する必要がある。そのため、推論処理をより高速化することが必要となる。そこで、従来から、推論処理を実現するFPGAをセンサ端末に搭載し、そのようなFPGAで推論演算を行い、処理の高速化を図っている(非特許文献2参照)。
しかし、従来の技術では、推論処理を行う際に、メモリから入力データおよびニューラルネットワークモデルの重みを推論処理の対象となるデータセットごとに読み出し、推論演算を行う回路に転送する必要があった。そのため、扱うデータ量が多くなるとデータ転送がボトルネックになり、推論演算の処理時間を削減することが困難であった。
本発明は、上述した課題を解決するためになされたものであり、データ転送のボトルネックを排除して推論演算の処理時間を削減することができる推論処理技術を提供することを目的とする。
上述した課題を解決するために、本発明に係る推論処理装置は、1個1個がニューラルネットワークの推論対象となる複数個の入力データと、前記ニューラルネットワークの重みと、を記憶する主記憶装置と、プログラムを実行することで、前記入力データに関する情報に基づいて1回のバッチ処理で扱う前記入力データの個数であるバッチサイズを設定する処理と、前記主記憶装置から、設定した前記バッチサイズに応じた前記個数の入力データ、及び、当該個数の入力データのそれぞれに共通して使用される前記重みを、推論演算部にまとめて転送する処理と、を行うプロセッサと、前記推論演算部として機能し、転送された前記個数の入力データおよび前記重みに基づいて、前記個数の入力データ1個1個と前記重みとの前記ニューラルネットワークの各演算をバッチ処理して、前記個数の入力データ1個1個の特徴を推論するFPGA又はASICとを備える。
また、本発明に係る推論処理装置において、前記プロセッサは、前記FPGA又はASICのハードウェアリソースに関する情報に基づいて、前記バッチサイズを設定してもよい。
また、本発明に係る推論処理装置において、前記推論演算部は、前記入力データと前記重みとの行列演算を行う行列演算部と、前記行列演算部による行列演算結果に対して活性化関数を適用する活性化関数演算部とを備え、前記行列演算部は、前記入力データと前記重みとを乗算する乗算器と、前記乗算器による乗算結果を加算する加算器とを有していてもよい。
また、本発明に係る推論処理装置において、前記行列演算部は、複数具備され、行列演算を並列に行ってもよい。
また、本発明に係る推論処理装置において、前記行列演算部は、前記乗算器および前記加算器をそれぞれ複数具備し、乗算および加算を並列に行ってもよい。
また、本発明に係る推論処理装置において、前記推論演算部に入力される前記入力データおよび前記重みのデータタイプを変換するデータ変換部をさらに備えていてもよい。
また、本発明に係る推論処理装置において、前記推論演算部は、複数具備され、推論演算を並列に行ってもよい。
上述した課題を解決するために、本発明に係る推論処理方法は、プロセッサが、プログラムを実行することで、主記憶装置に記憶された1個1個がニューラルネットワークの推論対象となる複数個の入力データに関する情報に基づいて1回のバッチ処理で扱う前記入力データの個数であるバッチサイズを設定する処理と、前記主記憶装置から、設定した前記バッチサイズに応じた前記個数の入力データ、及び、当該個数の入力データのそれぞれに共通して使用される前記ニューラルネットワークの重みを、推論演算部にまとめて転送する処理と、を行う第1ステップと、FPGA又はASICが、前記推論演算部として機能することで、転送された前記個数の入力データおよび前記重みに基づいて、前記個数の入力データ1個1個と前記重みとの前記ニューラルネットワークの各演算をバッチ処理して、前記個数の入力データ1個1個の特徴を推論する第2ステップとを備える。
本発明によれば、入力データに関する情報に基づいて設定されたバッチサイズに応じた入力データ、および重みを入力として、学習済みニューラルネットワークの演算をバッチ処理するので、扱うデータ量が多くなっても、データ転送のボトルネックを排除して、推論演算の処理時間を削減することができる。
図1は、本発明の第1の実施の形態に係る推論処理装置の構成を示すブロック図である。 図2は、第1の実施の形態に係る記憶部の構成を示すブロック図である。 図3は、第1の実施の形態に係る推論演算部の構成を示すブロック図である。 図4は、第1の実施の形態に係る行列演算部の構成を示すブロック図である。 図5は、第1の実施の形態に係る推論処理装置のハードウェア構成を示すブロック図である。 図6は、第1の実施の形態に係る推論処理プログラムのサンプルコードの一例を説明する図である。 図7Aは、第1の実施の形態に係るニューラルネットワークを用いた推論処理を説明するための図である。 図7Bは、第1の実施の形態に係るニューラルネットワークを用いた推論処理を説明するための図である。 図8は、第1の実施の形態に係る推論処理装置の動作を説明するためのフローチャートである。 図9は、第1の実施の形態に係るバッチサイズの設定処理を説明するためのフローチャートである。 図10は、従来例の推論処理装置におけるデータの転送を説明するための図である。 図11は、第1の実施の形態に係る推論処理装置におけるデータの転送を説明するための図である。 図12は、第1の実施の形態の効果を説明するための図である 図13は、第2の実施の形態に係る推論処理装置の構成を示すブロック図である。 図14は、第2の実施の形態に係る推論処理装置の動作を説明するためのフローチャートである。 図15は、第2の実施の形態の効果を説明するための図である。 図16は、第3の実施の形態に係る推論処理装置の構成を示すブロック図である。 図17は、第4の実施の形態に係る推論演算部の構成を示すブロック図である。 図18は、第5の実施の形態に係る行列演算部の構成を示すブロック図である。 図19は、第6の実施の形態に係る推論処理装置の構成を示すブロック図である。 図20は、従来例に係る推論処理装置の構成を示すブロック図である。
以下、本発明の好適な実施の形態について、図1から図20を参照して詳細に説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係る推論処理装置1の構成を示すブロック図である。本実施の形態に係る推論処理装置1は、図1に示すように、外部のセンサ2などから取得された音声データや言語データなどの時系列データ、または画像データを推論対象の入力データXとして用いる。推論処理装置1は、学習済みのニューラルネットワークモデルを用いてニューラルネットワークの演算をバッチ処理し、入力データXの特徴を推論する。
より詳細には、推論処理装置1は、各時刻におけるイベントが既知である時系列データなどの入力データXを用いて予め学習したニューラルネットワークモデルを用いる。推論処理装置1は、設定されたバッチサイズに応じた未知の時系列データなどの入力データXおよび学習済みのニューラルネットワークの重みデータWを入力として、各時刻におけるイベントの推定をバッチ処理により行う。なお、入力データXおよび重みデータWは、行列データである。
例えば、推論処理装置1は、加速度センサとジャイロセンサとを搭載したセンサ2から取得された入力データXをバッチ処理して、ごみ収集車の回転や停止といったイベントを検出することで、ゴミの量を推定することができる(非特許文献1参照)。
[推論処理装置の構成]
推論処理装置1は、図1に示すように、バッチ処理制御部10、メモリ制御部11、記憶部12、および推論演算部13を備える。
バッチ処理制御部10は、入力データXに関する情報に基づいて、推論演算部13で入力データXをバッチ処理するためのバッチサイズを設定する。バッチ処理制御部10は、メモリ制御部11に対して、設定されたバッチサイズに応じた入力データXを記憶部12から読み出す指示を送る。
例えば、バッチ処理制御部10は、後述する推論演算に用いられるハードウェアリソースに関する情報に基づいて、1回のバッチ処理で扱う入力データXの数、すなわちバッチサイズを設定することができる。
あるいは、バッチ処理制御部10は、記憶部12に記憶されているニューラルネットワークモデルの重みデータWの行列サイズまたは入力データXの行列サイズに基づいて、バッチサイズを設定することができる。
上記例の他にも、バッチ処理制御部10は、例えば、データの送受信時間およびデータの演算時間の最適化を行い、送受信時間と演算時間とのバランスにより最適なバッチサイズを設定することもできる。また、バッチ処理制御部10は、推論処理装置1全体の処理時間および推論精度に基づいて、バッチサイズを設定してもよい。
メモリ制御部11は、バッチ処理制御部10で設定されたバッチサイズに応じた入力データXを記憶部12から読み出す。また、メモリ制御部11は、記憶部12からニューラルネットワークの重みデータWを読み出す。メモリ制御部11は、読み出した入力データXおよび重みデータWを推論演算部13に転送する。
記憶部12は、図2に示すように、入力データ格納部(第1記憶部)120および学習済みニューラルネットワーク(NN)格納部(第2記憶部)121を備える。
入力データ格納部120には、外部のセンサ2から取得された時系列データなどの入力データXが格納される。
学習済みNN格納部121には、予め学習され構築された学習済みニューラルネットワーク、すなわち、ニューラルネットワークの学習済みパラメータである重みデータWが格納される。例えば、予め外部のサーバなどで学習が行われて決定された重みデータWがロードされ、学習済みNN格納部121に格納されている。
なお、推論処理装置1において採用されるニューラルネットワークモデルとして、例えば、畳み込みニューラルネットワーク(CNN)、長期短期記憶(LSTM)、ゲート付き再帰型ユニット(GRU)、Residual Network(ResNet) CNN、その他の公知の少なくとも1層の中間層を有するニューラルネットモデル、あるいはこれらを組み合わせたニューラルネットワークを用いることができる。
また、行列である入力データXおよび重みデータWのサイズは推論処理装置1で用いられるニューラルネットワークモデルにより定まる。入力データXおよび重みデータWは、例えば、32ビットの浮動小数点型で表される。
推論演算部13は、設定されたバッチサイズに応じた入力データXおよび重みデータWを入力としてニューラルネットワークの演算をバッチ処理し、入力データXの特徴を推論する。より詳細には、メモリ制御部11によって読み出され、転送された入力データXおよび重みデータWが推論演算部13に入力されて、推論演算が行われる。
推論演算部13は、図3に示すように、行列演算部130、および活性化関数演算部131を備える。行列演算部130は、図4に示すように、乗算器132と加算器133とを有する。
行列演算部130は、入力データXと重みデータWとの行列演算を行う。より詳細には、図4に示すように、乗算器132は、入力データXと重みデータWとの乗算を行う。乗算結果は、加算器133によって加算され、加算結果が出力される。この加算結果は、行列演算部130による行列演算結果Aとして出力される。
行列演算結果Aは、活性化関数演算部131に入力され、予め設定された活性化関数が適用されて、推論演算の結果である推論結果Yが決定される。より具体的には、活性化関数演算部131は、活性化関数の適用により、行列演算結果Aがどのように活性化するかを決定し、行列演算結果Aを変換して推論結果Yを出力する。活性化関数は、例えば、ステップ関数、シグモイド関数、tanh関数、ReLU関数、softmax関数などから選択することができる。
[推論処理装置のハードウェア構成]
次に、上述した構成を有する推論処理装置1のハードウェア構成の一例について図5を参照して説明する。
図5に示すように、推論処理装置1は、例えば、バス101を介して接続されるプロセッサ102、主記憶装置103、通信インターフェース104、補助記憶装置105、入出力装置106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。推論処理装置1は、例えば、表示装置107がバス101を介して接続され、表示画面に推論結果などを表示してもよい。また、センサ2がバス101を介して接続され、推論処理装置1において推論の対象となる音声データなどの時系列データからなる入力データXを測定してもよい。
主記憶装置103は、例えば、SRAM、DRAM、およびROMなどの半導体メモリによって実現される。主記憶装置103は、図1で説明した記憶部12を実現する。
主記憶装置103には、プロセッサ102が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ102と主記憶装置103とによって、図1から図4に示したバッチ処理制御部10、メモリ制御部11、推論演算部13を含む推論処理装置1の各機能が実現される。
通信インターフェース104は、通信ネットワークNWを介して各種外部電子機器との通信を行うためのインターフェース回路である。推論処理装置1は、通信インターフェース104を介して外部から学習済みニューラルネットワークの重みデータWを受信したり、外部に推論結果Yを送出してもよい。
通信インターフェース104としては、例えば、LTE、3G、無線LAN、Bluetooth(登録商標)などの無線データ通信規格に対応したインターフェースおよびアンテナが用いられる。通信ネットワークNWは、例えば、WAN(Wide Area Network)やLAN(Local Area Network)、インターネット、専用回線、無線基地局、プロバイダなどを含む。
補助記憶装置105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
補助記憶装置105は、推論処理装置1がバッチ処理により推論を行うためのプログラムを格納するプログラム格納領域を有する。さらには、補助記憶装置105は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。補助記憶装置105は、例えば、図6に示す推論処理プログラムを記憶することができる。
入出力装置106は、表示装置107など外部機器からの信号を入力したり、外部機器へ信号を出力したりするI/O端子により構成される。
なお、推論処理装置1は、1つのコンピュータによって実現される場合だけでなく、互いに通信ネットワークNWで接続された複数のコンピュータによって分散されていてもよい。また、プロセッサ102は、FPGA(Field-Programmable Gate Array)、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)等のハードウェアによって実現されていてもよい。
特に、推論演算部13をFPGAなどの書き換え可能なゲートアレイを用いて構成することで、入力データXの構成や使用されるニューラルネットワークモデルに応じて柔軟に回路構成を書き換えることができる。この場合、様々なアプリケーションに対応することが可能な推論処理装置1を実現できる。
[推論処理方法の概要]
次に、本実施の形態に係る推論処理装置1による入力データXの推論処理の概要について、図7Aおよび図7Bに示す具体例を用いて説明する。
図7Aに示すように、入力層、中間層、および出力層の3層からなるニューラルネットワークを例に挙げて説明する。活性化関数としては、図7Bに示すsoftmax関数を用いる。推論の対象となる入力データXの特徴は、M個(Mは正の整数)の成分、推論結果Yの特徴は、N個(Nは正の整数)の成分で表される。また、ニューラルネットワークの重みデータWのデータサイズはM×Nで表される。
図7Aおよび図7Bの具体例に示すように、M=N=2とする。また、説明の簡単のため、バッチ処理制御部10によって設定された1回のバッチ処理で扱われるバッチサイズは、Batch=1とする。このとき、バッチサイズBatch=1に対応する入力データXは、X[x1,x2]である。また、重みデータWは、4つの成分を有する2行2列の行列で表される。
図7Bに示すように、まず、バッチサイズBatch=1に応じた入力データXと、重みデータWとの行列の積和演算が行われ、行列演算結果Aが得られる。行列演算結果Aのデータサイズは、Batch×N、すなわち1×2である。その後、行列演算結果Aには、活性化関数としてsoftmax関数が適用されて、推論結果Yが求められる。
設定されたバッチサイズBatchに応じたデータ数の入力データXに対しては、そのバッチサイズBatchに応じたデータ数の推論結果Yが出力される。したがって、図7Aおよび図7Bの例では、Batch=1に応じた1セットの入力データX[x1,x2]に対して、1セットの推論結果Y[y1,y2]が出力されている。なお、バッチサイズBatchは、1以上かつ入力データXのデータ数以下の範囲の値である。
活性化関数の演算処理においては、行列演算結果Aの各成分の値ak(k=1,・・・,n)に対してsoftmax関数が適用されて、推論結果Yの各成分yk(k=1,・・・,n)の値が求められる。図7Aおよび図7Bに示す具体例では、行列演算結果A[a1,a2]の各成分にsoftmax関数が適用されて(softmax(A[a1,a2])、推論結果Y[y1,y2]が出力される。
なお、設定されたバッチサイズに応じて、入力データXのバッチ処理により推論演算を繰り返し行って推論結果Yを出力する処理は、図6のサンプルコードの破線の枠60に示されている。この推論演算において、入力データXの行の成分と重みデータWの列の成分との積およびその和が計算される(図6のサンプルコードにおける破線の枠61、62を参照)。
[推論処理装置の動作]
次に、本実施の形態に係る推論処理装置1の動作について、図8および図9のフローチャートを参照してより詳細に説明する。以下の説明では、記憶部12には、予め学習が行われて構築されたニューラルネットワークの重みデータWが格納されているものとする。また、外部のセンサ2によって測定された時系列データや画像データなどの入力データXは、記憶部12に保持されるものとする。
まず、図8に示すように、バッチ処理制御部10は、1回のバッチ処理で扱う入力データXのバッチサイズを設定する(ステップS1)。
より詳細には、バッチ処理制御部10は、図9に示すように、記憶部12に記憶されている重みデータWのデータサイズ、および入力データXのデータ数の情報を取得する(ステップS100)。次に、バッチ処理制御部10は、推論処理装置1全体におけるハードウェアリソースの情報を記憶部12から取得する(ステップS101)。なお、推論処理装置1全体のハードウェアリソースに関する情報は、予め記憶部12に記憶されている。
ここで、ハードウェアリソースとは、入力データXや重みデータWを記憶するために必要なメモリ容量や、加算、乗算などの演算処理を行うための回路を構成するのに必要なスタンダードセルの組合せ回路などを意味する。例えば、FPGAの場合であれば、フリップフロップ(FF)、ルックアップテーブル(LUT)、デジタルシグナルプロセッサ(DSP)などの組合せ回路がハードウェアリソースの例として挙げられる。
ステップS101では、推論処理装置1全体におけるメモリ容量、および推論処理装置1全体のデバイスとしての規模、すなわち推論処理装置1全体が演算回路として備えるハードウェアリソース、例えば、FPGAであればFF、LUT、DSPなどの数が記憶部12から取得される。
次に、バッチ処理制御部10は、入力データXの全データ数を1回のバッチ処理で扱うバッチサイズの初期値として設定する(ステップS102)。すなわち、ステップS102では、バッチサイズの最大値である、入力データXの全データ数がバッチサイズの初期値として設定される。
その後、ステップS100で取得した重みデータWのデータサイズおよび入力データXのデータ数、ステップS101で取得した推論処理装置1全体のハードウェアリソースの情報、およびステップS102で設定されたバッチサイズに基づいて、推論演算部13を実現する回路構成に必要なハードウェアリソースを求める(ステップS103)。例えば、バッチ処理制御部10は、推論演算部13のロジック回路を構築して、使用されるハードウェアリソースを取得することができる。
次に、推論演算部13が推論演算を行う際に使用するハードウェアリソースの数が、推論処理装置1全体が備えるハードウェアリソースの数を超える場合には(ステップS104:YES)、バッチ処理制御部10は、ステップS102で初期設定されたバッチサイズを小さくする(ステップS105)。例えば、バッチ処理制御部10は、初期設定されたバッチサイズから1を減算する。
その後、より小さいバッチサイズに基づいて求められる推論演算部13のハードウェアリソースの数が、推論処理装置1全体のハードウェアリソースの数以下となる場合には(ステップS106:NO)、そのバッチサイズが設定値として用いられ、処理は図8に戻る。より詳細には、バッチ処理制御部10は、メモリ制御部11に対して、設定されたバッチサイズに応じた入力データXを読み出すことを指示する。
なお、ステップS106で推論演算部13が推論演算に使用するハードウェアリソースの数が、推論処理装置1全体の備えるハードウェアリソースの数を超える場合には(ステップS106:YES)、バッチ処理制御部10は、再びバッチサイズを減らす処理を行う(ステップS105)。
その後、メモリ制御部11は、設定されたバッチサイズに応じた入力データX、および重みデータWを記憶部12から読み出す(ステップS2)。より詳細には、メモリ制御部11は、入力データXおよび重みデータWを記憶部12から読み出して、推論演算部13へ転送する。
次に、推論演算部13は、入力データXおよび重みデータWに基づいてニューラルネットワークの演算をバッチ処理し、推論結果Yを求める(ステップS3)。より詳細には、行列演算部130において、入力データXと重みデータWとの積和演算が行われる。具体的には、乗算器132が入力データXと重みデータWとの乗算を行う。乗算結果は加算器133によって加算されて行列演算結果Aが求められる。行列演算結果Aに対しては、活性化関数演算部131によって活性化関数が適用され、推論結果Yが出力される(ステップS4)。
上記処理によって推論処理装置1は、画像データや音声などの時系列データを入力データXとして、学習済みのニューラルネットワークを用いた入力データXの特徴の推論を行うことができる。
ここで、本実施の形態に係るバッチ処理制御部10の効果について、図10および図11、ならびに図20を用いて説明する。まず、比較のため、従来例の推論処理装置(図20)として、本実施の形態に係るバッチ処理制御部10を備えていない推論処理装置について説明する。図10に示すように、従来例に係る推論処理装置では、入力データXをn個(nは正の整数)処理すると、重みデータWをn回にわたって推論演算部に転送する必要がある。
これに対して、本実施の形態に係るバッチ処理制御部10を備える推論処理装置1では、図11に示すように、バッチ処理制御部10が、1回の推論演算で処理されるバッチサイズBatchを設定し、設定されたバッチサイズに応じた入力データXをまとめて処理する。そのため、入力データXが、例えば、n個ある場合であっても、重みデータWをn/Batch回だけ推論演算部13に転送すればよい。Batch=nの場合は、重みデータWの推論演算部13への転送は1回だけで済む。したがって、推論処理装置1におけるバス帯域の負荷を低減することができる。
また、本実施の形態に係る推論処理装置1では、バッチ処理を行うことで比較的大きな行列計算を行うことができ、分割された、より小さい行列計算を実行するよりも計算速度は速く、推論演算をより高速化することができる。
図12は、重みデータWのデータサイズが30×30の場合のバッチ処理による本実施の形態の効果を示している。図12において、破線はバッチ処理を行わない場合、実線は本実施の形態に係るバッチ処理を行った場合それぞれにおけるバッチサイズと、推論演算の正規化された処理時間との関係を示している。図12からわかるように、本実施の形態に係るバッチ処理を行った場合には、バッチ処理を行わない場合と比較して処理時間が短縮されている。
以上説明したように、第1の実施の形態に係る推論処理装置1によれば、推論処理装置1全体のハードウェアリソースに対する推論演算部13が使用するハードウェアリソースに基づいて、1回のバッチ処理で扱う入力データXのバッチサイズを設定する。そのため、扱われるデータ量が多くなってもデータ転送におけるボトルネックを排除して、推論演算に要する処理時間を削減することができる。
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1の実施の形態では、推論演算部13は、例えば、32ビットの浮動小数点型の入力データXおよび重みデータWの推論演算を実行する場合について説明した。これに対して第2の実施の形態では、推論演算部13に入力されるデータのビット表現をより低ビット精度のデータに変換してから推論演算を実行する。以下、第1の実施の形態と異なる構成を中心に説明する。
[推論処理装置の構成]
図13は、本実施の形態に係る推論処理装置1Aの構成を示すブロック図である。
推論処理装置1Aは、バッチ処理制御部10、メモリ制御部11、記憶部12、推論演算部13、およびデータタイプ変換部(データ変換部)14を備える。
データタイプ変換部14は、推論演算部13に入力される入力データXおよび重みデータWのデータタイプを変換する。より詳細には、データタイプ変換部14は、メモリ制御部11によって記憶部12から読み出されて推論演算部13に転送される入力データXおよび重みデータWのデータタイプを、32ビットの浮動小数点型から、予め設定されたデータタイプ、例えば、8ビットや16ビットなど、より桁数を減らして精度を下げたデータ表現に変換する。データタイプ変換部14は、例えば、切り上げ、切り捨て、四捨五入などの丸め処理を行って小数点を含む入力データXおよび重みデータWを整数型へ変換することができる。
なお、データタイプ変換部14は、メモリ制御部11が記憶部12にアクセスして読み出した入力データXおよび重みデータWについて、転送される前にデータタイプを変換することができる。また、データタイプ変換部14は、元のデータタイプよりも桁数の低い低ビット精度とすることができれば、入力データXと重みデータWとをそれぞれ異なるビット表現のデータタイプに変換してもよい。
メモリ制御部11は、データタイプ変換部14によってデータタイプが変換され、よりビット精度が低くなった入力データX’および重みデータW’を推論演算部13に転送する。より詳細には、メモリ制御部11は、バッチ処理制御部10によって設定されたバッチサイズに応じた入力データX、および予め記憶部12に記憶されている重みデータWを記憶部12から読み出す。その後、読み出された入力データXおよび重みデータWは、データタイプ変換部14によってデータタイプが変換され、変換された入力データX’および重みデータW’が推論演算部13に転送される。
[推論処理装置の動作]
次に、上述した構成を有する推論処理装置1Aの動作について、図14のフローチャートを参照して説明する。以下の説明では、記憶部12には、予め学習が行われて構築されたニューラルネットワークの重みデータWが格納されているものとする。また、重みデータWと、センサ2から取得されて記憶部12に記憶されている入力データXとは、ともに32ビットの浮動小数点型のデータであるものとする。
まず、図14に示すように、バッチ処理制御部10は、1回のバッチ処理で扱う入力データXのバッチサイズを設定する(ステップS10)。なお、バッチサイズの設定処理は、第1の実施の形態と同様である(図9)。
その後、メモリ制御部11は、バッチ処理制御部10によって設定されたバッチサイズに応じた入力データX、および重みデータWを記憶部12から読み出す(ステップS11)。次に、データタイプ変換部14は、メモリ制御部11が読み出した入力データXおよび重みデータWのデータタイプを変換する(ステップS12)。
より具体的には、データタイプ変換部14は、32ビットの浮動小数点型の入力データXおよび重みデータWを、より低ビット精度のデータ、例えば、8ビットの入力データX’および重みデータW’に変換する。データタイプが変換された入力データX’および重みデータW’は、メモリ制御部11によって推論演算部13に転送される。
その後、推論演算部13は、低ビット精度のデータに変換された入力データX’および重みデータW’に基づいて、ニューラルネットワークの演算をバッチ処理し、推論結果Yを求める(ステップS13)。より詳細には、行列演算部130において、入力データX’と重みデータW’との積和演算が行われる。具体的には、乗算器132が入力データX’と重みデータW’との乗算を行う。乗算結果は加算器133によって加算され、行列演算結果Aが求められる。行列演算結果Aに対しては、活性化関数演算部131により活性化関数が適用され、推論結果Yが出力される(ステップS14)。
上記処理によって推論処理装置1Aは、画像データや音声などの時系列データを入力データXとして、学習済みのニューラルネットワークを用いた入力データXの特徴の推論を行うことができる。
次に、本実施の形態に係る推論処理装置1Aにおけるデータの転送時間について、図15を用いて説明する。図15の上段に示すように、バス幅が32ビットの場合、32ビットの入力データXの送信において1つの32ビットデータしか転送することができない。一方、図15の下段に示すように、32ビットの入力データXが8ビットの入力データX’に変換された場合には、4つの8ビットデータを転送することができる。
このように、メモリ制御部11が記憶部12から入力データXおよび重みデータWを読み出して転送する際に、低ビット精度のデータに変換したデータを転送するので、転送時間を削減することができる。
以上説明したように、第2の実施の形態に係る推論処理装置1Aによれば、推論演算部13に入力される入力データXおよび重みデータWをより低ビット精度のデータに変換するので、キャッシュの使用率を向上させ、データバス帯域のボトルネックを減らすことができる。
また、推論処理装置1Aでは、低ビット精度の入力データX’および重みデータW’を用いてニューラルネットワークの演算を行うので、演算に必要な乗算器132および加算器133の数を削減することができる。その結果として、推論処理装置1Aは、より少ないハードウェアリソースによって実現でき、装置全体としての回路規模を小さくすることができる。
また、推論処理装置1Aでは、使用するハードウェアリソースを削減することができるため、消費電力および発熱を低減できる。
また、推論処理装置1Aでは、より低ビット精度の入力データX’および重みデータW’を用いてニューラルネットワークの演算を行うので、より高いクロック周波数で処理を行うことで、処理を高速化することができる。
また、推論処理装置1Aでは、32ビットよりも低ビット精度の入力データX’および重みデータW’を用いてニューラルネットワークの演算を行うので、32ビットで演算を行う場合と比較して、より多くの並列化やバッチ処理が可能となり、処理を高速化できる。
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1および第2の実施の形態では、1つの推論演算部13によってニューラルネットワークの演算処理が行われる場合について説明した。これに対して、第3の実施の形態では、複数の推論演算部13a、13bを用いて、図6のサンプルコードの破線の枠60に示す推論演算を並列処理する。以下、第1および第2の実施の形態と異なる構成を中心に説明する。
図16に示すように、推論処理装置1Bは、バッチ処理制御部10、メモリ制御部11、記憶部12、および複数の推論演算部13a、13bを備える。
本実施の形態では、推論演算部13a、13bが例えばK個(Kは2以上かつBatch(バッチサイズ)以下の整数、但しBatchは2以上の場合。)設けられている。推論演算部13a、13bは、それぞれが備える行列演算部130において、メモリ制御部11によって転送された入力データXおよび重みデータWの行列演算を行い、行列演算結果Aをそれぞれ出力する。
さらに、複数の推論演算部13a、13bのそれぞれが備える活性化関数演算部131において、行列演算結果Aに対して活性化関数が適用されて、出力である推論結果Yが求められる。
より具体的には、設定されたバッチサイズに応じた入力データXがBatch個の場合、入力データXはBatch行N列となる。図6のサンプルコードにおける破線の枠60に示すように、設定されたバッチサイズに応じた入力データXのデータ数分の推論結果Yを求めるためにBatch回繰り返すことが必要な演算が、本実施の形態ではK並列で行われる。
以上説明したように、第3の実施の形態に係る推論処理装置1Bによれば、K個の推論演算部13a、13bが設けられ、Batch回繰り返すことが必要なニューラルネットワークの演算をK並列に行うので、繰り返し演算の回数が削減され、推論演算の処理を高速化できる。
[第4の実施の形態]
次に、本発明の第4の実施の形態について説明する。なお、以下の説明では、上述した第1から第3の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1から第3の実施の形態では、推論演算部13が行列演算部130を1つだけ備え、行列の積和演算を行う場合について説明した。これに対して第4の実施の形態では、推論演算部13Cが複数の行列演算部130a、130bを備え、図6に示したサンプルコードの破線の枠61に示す行列の積和演算を並列に実行する。以下、第1から第3の実施の形態と異なる構成を中心に説明する。
図17に示すように、本実施の形態に係る推論演算部13Cは、複数の行列演算部130a、130b、および1つの活性化関数演算部131を備える。本実施の形態に係る推論処理装置1が備えるその他の構成は、図1に示す推論処理装置1と同様である。
推論演算部13Cは、K個(Kは2以上かつN以下の整数)の行列演算部130a、130bを備える。K個の行列演算部130a、130bは、入力データXと重みデータWとの行列演算をK並列で実行し、行列演算結果Aを出力する。前述したように、入力データXの成分がM個で、重みデータWのデータサイズがM×Nである場合に、これらの行列の積和演算をN回繰り返すことで、バッチサイズ(Batch)×Nのデータサイズを有する行列演算結果Aの1行分の計算を完了する。
例えば、図7Aおよび図7Bで説明したように、M=N=2、およびBatch=1であり、2個(K=2)の行列演算部130a、130bの場合を考える。行列演算部130a、130bのそれぞれには、M個の入力データXが入力される。例えば、行列演算部130aには、重みデータWの1列目の成分W11、W21が入力され、行列演算部130bには、重みデータWの2列目の成分W21、W22が入力される。メモリ制御部11は、行列演算部130a、130bの個数に応じて重みデータWの振り分けを制御することができる。
行列演算部130aは積和演算を行い、行列演算結果Aの成分a1を出力する。一方、行列演算部130bも同様に積和演算を行い、行列演算結果Aの成分a2を出力する。行列演算部130a、130bの演算結果は、活性化関数演算部131に入力されて、活性化関数にかけられ、推論結果Yが決定される。
以上説明したように、第4の実施の形態によれば、K個の行列演算部130a、130bが行列演算をK並列に行うので、行列演算結果Aの1行分の行列演算における繰り返しの計算回数を削減することができる。特に、上述した具体例のようにK=Nの場合、計算の繰り返しが不要となり、行列演算の処理時間を削減することができる。結果として、推論処理装置1の推論処理を高速化できる。
なお、第4の実施の形態に係る複数の行列演算部130a、130bは、第3の実施の形態と組み合わせてもよい。第3の実施の形態で説明した複数の推論演算部13a、13bのそれぞれが、複数の行列演算部130a、130bを備えることにより、推論演算をより高速化することができる。
[第5の実施の形態]
次に、本発明の第5の実施の形態について説明する。なお、以下の説明では、上述した第1から第4の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1から第4の実施の形態では、行列演算部130が1つの乗算器132と加算器133とを備える場合について説明した。これに対して、第5の実施の形態では、行列演算部130Dが複数の乗算器132a、132bと加算器133a、133とを備え、図6のサンプルコードの破線の枠62で示す行列演算の内部処理を並列に行う。
図18に示すように、行列演算部130Dは、K個(Kは2以上かつM以下の整数)の乗算器132a、132bと加算器133a、133bとを備える。本実施の形態に係る推論処理装置1の他の構成は、第1の実施の形態と同様である(図1)。なお、以下においては、説明の簡単のため、M=3の場合を例に挙げて説明する。
行列演算部130Dは、入力データXと重みデータWとの積和演算を行って、行列演算結果Aの1行分の成分を計算する。行列演算部130Dは、K個の乗算器132a、132bおよび加算器133a、133bにおいて、積和演算をK並列で行う。行列演算では、M個の成分を有する入力データXとデータサイズがM×Nの重みデータWとの積和演算が行われる。
例えば、M=3の場合に、2個(K=2)の乗算器132a、132bおよび加算器133a、133bが設けられている場合を考える。なお、入力データXは[x1,x2,x3]で表される。また、重みデータWは、例えば、3×2(M×N)のデータサイズを有する場合を考える。重みデータWの第1列目は、W11,W21,W31で表される。また、行列演算結果Aは2つの成分を有し、A[a1,a2]で表される。
この場合、例えば、乗算器132aに入力データXの成分x1および重みデータWの成分W11が入力される。一方、乗算器132bには、入力データXの成分x2および重みデータWの成分W21、ならびに入力データXの成分x3および重みデータの成分W31が入力される。
乗算器132a、132bのそれぞれは、乗算結果を出力する。上記具体例においては、乗算器132aは、乗算結果x1W11を出力し、乗算器132bは、乗算結果x2W21と乗算結果x3W31を出力する。加算器133bは、乗算器132bの乗算結果x2W21と乗算結果x3W31とを加算する。加算器133aは、乗算器132aの乗算結果x1W11と加算器133bの加算結果x2W21+x3W31とを加算して、行列演算結果Aの成分a1を出力する。
以上説明したように、第5の実施の形態によれば、行列演算部130Dにおいて、K個の乗算器132a、132bが入力データXと重みデータWとの行列積をK並列で実行するので、行列演算結果Aの各成分を計算する際の繰り返しの計算回数を削減することができる。特に、K=Mの場合、1回の計算で行列演算結果Aの1成分を出力することができる。結果として、行列演算の処理時間を削減し、推論処理装置1における処理を高速化できる。
なお、第5の実施の形態は、第3および第4の実施の形態と組み合わせてもよい。例えば、第3の実施の形態の複数の推論演算部13a、13bそれぞれの行列演算部130が、本実施の形態に係る複数の乗算器132a、132bを備えることで、第3の実施の形態に係る構成のみを採用した場合と比較して、推論演算をより高速化することができる。
また、第4の実施の形態に係る複数の行列演算部130a、130bのそれぞれが本実施の形態に係る複数の乗算器132a、132bを備えることで、第4の実施の形態に係る構成のみを採用した場合と比較して行列演算をより高速化することができる。
第3から第5の実施の形態の構成をそれぞれ単独で採用した場合、例えば、バッチサイズBatch、推論結果Yの成分の数N、および入力データXの成分の数Mの関係が、Batch>B>Mであれば、第3の実施の形態に係る推論処理装置1Bにおいて最も処理が高速化できる。次いで、第4の実施の形態、第5の実施の形態の順に処理を高速化することができる。
なお、本実施の形態においてM=2の場合には、加算器133を1つ設ければよい。その場合においても、乗算処理を並列に実行するので、行列演算を高速化することができる。本実施の形態は特にMが4以上の場合により有効である。
[第6の実施の形態]
次に、本発明の第6の実施の形態について説明する。なお、以下の説明では、上述した第1から第5の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
第1から第5の実施の形態では、重みデータWは予め記憶部12に記憶されている場合について説明した。これに対して、第6の実施の形態に係る推論処理装置1Eは、通信ネットワークNWを介して重みデータWを受信する無線通信部15を備える。
図19に示すように、第6の実施の形態に係る推論処理装置1Eは、バッチ処理制御部10、メモリ制御部11、記憶部12、推論演算部13、および無線通信部15を備える。
無線通信部15は、通信ネットワークNWを介して外部のクラウドサーバなどから、推論処理装置1Eで用いられるニューラルネットワークモデルの重みデータWを受信し、記憶部12に格納する。例えば、推論処理装置1Eで用いるニューラルネットワークモデルの重みデータWを再度学習して更新した場合など、無線通信部15は、更新された重みデータWを無線通信によりダウンロードし、記憶部12に記憶されている古い重みデータWを書き換える。
また、推論処理装置1Eにおいて、別のニューラルネットワークモデルを用いて推論処理を行うような場合に、無線通信部15は、外部のクラウドサーバなどから受信した新しい学習済みのニューラルネットワークの重みデータWを受信し、記憶部12に記憶させる。
このように、第6の実施の形態に係る推論処理装置1Eによれば、ニューラルネットワークモデルの重みデータWが書き換え可能であり、推論処理装置1Eにおいて最適な重みデータWを用いることができるので、入力データXの変動などにより推論精度が低下することを防止できる。
以上、本発明の推論処理装置および推論処理方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
例えば、本発明の推論処理装置における推論演算部を除く各機能部は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
1…推論処理装置、2…センサ、10…バッチ処理制御部、11…メモリ制御部、12…記憶部、13…推論演算部、120…入力データ格納部、121…学習済みNN格納部、15…無線通信部、130…行列演算部、131…活性化関数演算部、132…乗算器、133…加算器、101…バス、102…プロセッサ、103…主記憶装置、104…通信インターフェース、105…補助記憶装置、106…入出力装置、107…表示装置。

Claims (8)

  1. 1個1個がニューラルネットワークの推論対象となる複数個の入力データと、前記ニューラルネットワークの重みと、を記憶する主記憶装置と、
    プログラムを実行することで、前記入力データに関する情報に基づいて1回のバッチ処理で扱う前記入力データの個数であるバッチサイズを設定する処理と、前記主記憶装置から、設定した前記バッチサイズに応じた前記個数の入力データ、及び、当該個数の入力データのそれぞれに共通して使用される前記重みを、推論演算部にまとめて転送する処理と、を行うプロセッサと、
    前記推論演算部として機能し、転送された前記個数の入力データおよび前記重みに基づいて、前記個数の入力データ1個1個と前記重みとの前記ニューラルネットワークの各演算をバッチ処理して、前記個数の入力データ1個1個の特徴を推論するFPGA又はASICと
    を備える推論処理装置。
  2. 請求項1に記載の推論処理装置において、
    前記プロセッサは、前記FPGA又はASICのハードウェアリソースに関する情報に基づいて、前記バッチサイズを設定することを特徴とする推論処理装置。
  3. 請求項1または請求項2に記載の推論処理装置において、
    前記推論演算部は、
    前記入力データと前記重みとの行列演算を行う行列演算部と、
    前記行列演算部による行列演算結果に対して活性化関数を適用する活性化関数演算部とを備え、
    前記行列演算部は、
    前記入力データと前記重みとを乗算する乗算器と、
    前記乗算器による乗算結果を加算する加算器とを有する
    ことを特徴とする推論処理装置。
  4. 請求項3に記載の推論処理装置において、
    前記行列演算部は、複数具備され、行列演算を並列に行うことを特徴とする推論処理装置。
  5. 請求項3または請求項4に記載の推論処理装置において、
    前記行列演算部は、前記乗算器および前記加算器をそれぞれ複数具備し、乗算および加算を並列に行うことを特徴とする推論処理装置。
  6. 請求項1から5のいずれか1項に記載の推論処理装置において、
    前記推論演算部に入力される前記入力データおよび前記重みのデータタイプを変換するデータ変換部をさらに備えることを特徴とする推論処理装置。
  7. 請求項1から6のいずれか1項に記載の推論処理装置において、
    前記推論演算部は、複数具備され、推論演算を並列に行うことを特徴とする推論処理装置。
  8. プロセッサが、プログラムを実行することで、主記憶装置に記憶された1個1個がニューラルネットワークの推論対象となる複数個の入力データに関する情報に基づいて1回のバッチ処理で扱う前記入力データの個数であるバッチサイズを設定する処理と、前記主記憶装置から、設定した前記バッチサイズに応じた前記個数の入力データ、及び、当該個数の入力データのそれぞれに共通して使用される前記ニューラルネットワークの重みを、推論演算部にまとめて転送する処理と、を行う第1ステップと、
    FPGA又はASICが、前記推論演算部として機能することで、転送された前記個数の入力データおよび前記重みに基づいて、前記個数の入力データ1個1個と前記重みとの前記ニューラルネットワークの各演算をバッチ処理して、前記個数の入力データ1個1個の特徴を推論する第2ステップと
    を備える推論処理方法。
JP2019001590A 2019-01-09 2019-01-09 推論処理装置および推論処理方法 Active JP7379821B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019001590A JP7379821B2 (ja) 2019-01-09 2019-01-09 推論処理装置および推論処理方法
PCT/JP2019/050832 WO2020145146A1 (ja) 2019-01-09 2019-12-25 推論処理装置および推論処理方法
US17/293,736 US20210406655A1 (en) 2019-01-09 2019-12-25 Inference processing device and inference processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019001590A JP7379821B2 (ja) 2019-01-09 2019-01-09 推論処理装置および推論処理方法

Publications (2)

Publication Number Publication Date
JP2020112901A JP2020112901A (ja) 2020-07-27
JP7379821B2 true JP7379821B2 (ja) 2023-11-15

Family

ID=71520421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019001590A Active JP7379821B2 (ja) 2019-01-09 2019-01-09 推論処理装置および推論処理方法

Country Status (3)

Country Link
US (1) US20210406655A1 (ja)
JP (1) JP7379821B2 (ja)
WO (1) WO2020145146A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11392740B2 (en) 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware
US11200096B1 (en) 2021-03-26 2021-12-14 SambaNova Systems, Inc. Resource allocation for reconfigurable processors
US11544548B2 (en) * 2021-05-24 2023-01-03 Rebellions Inc. Processing element and neural processing device including same
KR102590993B1 (ko) * 2021-09-03 2023-10-19 한국전자기술연구원 적응형 배치 프로세싱 방법 및 시스템
CN114118389B (zh) * 2022-01-28 2022-05-10 深圳鲲云信息科技有限公司 神经网络数据处理方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017073000A1 (ja) 2015-10-29 2017-05-04 株式会社Preferred Networks 情報処理装置及び情報処理方法
CN107330515A (zh) 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
US20180373976A1 (en) 2017-05-19 2018-12-27 Google Llc Scheduling neural network processing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018173814A (ja) * 2017-03-31 2018-11-08 富士通株式会社 画像処理装置、画像処理方法、画像処理プログラム、及び教師データ生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017073000A1 (ja) 2015-10-29 2017-05-04 株式会社Preferred Networks 情報処理装置及び情報処理方法
CN107330515A (zh) 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
US20180373976A1 (en) 2017-05-19 2018-12-27 Google Llc Scheduling neural network processing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
竹中 慎治,スーパーコンピュータを活用したディープラーニング分散学習の高効率開発基盤,パナソニック技報 [5月号] MAY 2018 Vol.64 No.1 [online] ,2018年05月15日,第64巻,pp.39-44
西川 由理,一般物体検出YOLOの分散深層学習による性能評価,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2018-HPC-166 [online] ,日本,情報処理学会,2018年09月20日

Also Published As

Publication number Publication date
US20210406655A1 (en) 2021-12-30
JP2020112901A (ja) 2020-07-27
WO2020145146A1 (ja) 2020-07-16

Similar Documents

Publication Publication Date Title
JP7379821B2 (ja) 推論処理装置および推論処理方法
KR102516092B1 (ko) 신경망 프로세서의 벡터 컴퓨테이션 유닛
CN112162723B (zh) 一种量子减法运算方法、装置、电子装置及存储介质
US8995756B2 (en) 3D vision processing
CN112114776A (zh) 一种量子乘法运算方法、装置、电子装置及存储介质
WO2020074989A1 (en) Data representation for dynamic precision in neural network cores
CN108363559B (zh) 神经网络的乘法处理方法、设备和计算机可读介质
CN113177209B (zh) 基于深度学习的加密流量分类方法及相关设备
CN113222150B (zh) 一种量子态的变换方法及装置
CN111767986A (zh) 一种基于神经网络的运算方法及装置
JP2023084094A (ja) 面積高効率畳み込みブロック
JP7215572B2 (ja) 推論処理装置および推論処理方法
CN112214200A (zh) 一种量子减法运算方法、装置、电子装置及存储介质
CN114819168A (zh) 一种矩阵特征值的量子比较方法及装置
Strempfer et al. Designing a streaming data coalescing architecture for scientific detector ASICs with variable data velocity
CN112561050A (zh) 一种神经网络模型训练方法及装置
CN115879530A (zh) 一种面向rram存内计算系统阵列结构优化的方法
TW202311984A (zh) 用於具有不同的精度之按位元乘法之混合信號電路
JP7226541B2 (ja) 推論処理装置および推論処理方法
Luo et al. DeepBurning-MixQ: An open source mixed-precision neural network accelerator design framework for FPGAs
CN113495717A (zh) 神经网络装置、操作神经网络装置的方法和应用处理器
Pan et al. Hierarchical resampling algorithm and architecture for distributed particle filters
Wei et al. Fpga design of real-time mdfd system using high level synthesis
CN115358391B (zh) 神经网络的规模拓展方法、装置、电子设备及存储介质
CN111324860B (zh) 一种基于随机矩阵逼近的轻量级cnn计算方法与装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230615

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231016

R150 Certificate of patent or registration of utility model

Ref document number: 7379821

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150