JP7174243B2 - 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 - Google Patents

情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 Download PDF

Info

Publication number
JP7174243B2
JP7174243B2 JP2018239640A JP2018239640A JP7174243B2 JP 7174243 B2 JP7174243 B2 JP 7174243B2 JP 2018239640 A JP2018239640 A JP 2018239640A JP 2018239640 A JP2018239640 A JP 2018239640A JP 7174243 B2 JP7174243 B2 JP 7174243B2
Authority
JP
Japan
Prior art keywords
special
calculation
layer
computation
sum
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
JP2018239640A
Other languages
English (en)
Other versions
JP2020101991A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018239640A priority Critical patent/JP7174243B2/ja
Priority to EP19212664.7A priority patent/EP3671572A1/en
Priority to US16/709,962 priority patent/US11475284B2/en
Priority to CN201911319384.2A priority patent/CN111353578A/zh
Publication of JP2020101991A publication Critical patent/JP2020101991A/ja
Application granted granted Critical
Publication of JP7174243B2 publication Critical patent/JP7174243B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Landscapes

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

Description

本発明は,情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法に関する。
深層学習(Deep Learning、以下DLと称する)は、多層のニューラルネットワーク(Neural Network、以下NNと称する)を用いた機械学習である。深層学習の一例であるディープニューラルネットワーク(Deep Neural Network、以下DNNと称する)は、入力層、複数の隠れ層、出力層が順番に並べられたネットワークである。各層は、1または複数のノードを持ち、各ノードは値を持つ。そして、ある層と次の層の間のノード同士はエッジで結ばれ、各エッジは重みやバイアスなどの変数(またはパラメータ)を持つ。
NNにおいて、各層のノードの値は、例えば、前段の層のノードの値とエッジの重み等に基づく所定の演算を実行して求められる。そして、入力データが入力層のノードに入力されると、次の層のノードの値が所定の演算により求められ、さらに、演算により求められたデータを入力として次の層のノードの値がその層の所定の演算により求められる。そして、最終層である出力層のノードの値が、入力データに対する出力データとなる。
NNの複数の層は、それぞれ、前層からの入力データと変数に基づいて様々な演算を実行する。複数の層の演算は、(1)加算、減算、乗算、除算の四則演算、(2)乗算と加算を一緒に行う積和演算、(3)論理演算、(4)累乗、除算(逆数を含む)、双曲線正接(ハイパボリックタンジェント、tanh)、平方根、シグモイド関数などの特殊演算などを含む。
プロセッサは、一般に、演算器として、積和演算器と特殊演算器を有する。積和演算器は、積和演算を行うために乗算器と加減算器に加えて、論理演算器を有する。一方、特殊演算器は、積和演算器が行う演算以外の特殊な演算を実行する複数の演算器を有する。本明細書では、一例として、除算は特殊演算器内の演算器により実行されるものとする。
NNは、例えば画像認識を行う場合、畳込み演算を行う畳込み層(Convolution Layer, Convolutional Neural Network)と、畳込み層の直後に挿入されるプーリング層とを有する。プーリング層は、例えば、畳込み層の出力の複数の要素(複数の画素)の最大値を選ぶマックスプーリング層である。更に、NNは、畳込み層とプーリング層以外に、チャネル間の画素の正規化を行う局所レスポンス正規化層(Local Response Normalization Layer LRN層)、チャネル内の画素の正規化を行うバッチ正規化層(Bach Normalization Layer BN層)、全結合層(Fully Connected Layer)、出力層の活性化関数として用いられるSoftmax層、非線形活性化関数であるReLU層、ネットワーク内の一部のノードを一時的に非活性化するDropout層などを有する。また、再帰型ニューラルネットワーク(Recurrent Neural Network RNN)内にはLSTM層(Long Short Term Memory Layer)が設けられる。
NNについては、例えば以下の文献に記載されている。
これらのNN内の各層の演算は、汎用的な演算器である積和演算器で実行される非特殊演算だけを含む場合と、各層の演算が非特殊演算に加えて特殊演算を含み、積和演算器で実行される演算と特殊演算器で実行される演算を含む場合がある。
特開平6-215021号公報 特開2005-275626号公報
ImageNet Classification with Deep Convolutional Neural Networks, Alex Krishwvsky, Ilya Sutskever, Geoffrey E. Hinton,(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)
しかしながら、NNの演算を実行するNNプロセッサは、NN全体の演算量を考慮して、第1の数の積和演算器と、第2の数の特殊演算器とを搭載する。そのため、第1の数が第2の数より多く、特殊演算を含む層の演算量が、特殊演算器による多くの演算量と積和演算器による比較的少ない演算量を含む場合、両演算器の演算量の割合と、両演算器の処理能力の割合とがアンバランスになる。その結果、特殊演算を含む層の特殊演算器による演算時間が極端に長くなり、NN全体の演算時間に対し特殊演算を含む層の演算時間がボトルネックになる。
そこで,本実施の形態の第1の側面の目的は,特殊演算器の演算時間が原因となりNNの演算時間が長くなることを抑制する情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法を提供することにある。
本実施の形態の第1の側面は,メモリと、前記メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサとを有し、
前記プロセッサは、
複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
前記第2の演算時間が前記メモリ転送時間以下でない場合、
前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、情報処理装置である。
第1の側面によれば,特殊演算器の演算時間が原因となりNNの演算時間が長くなることを抑制する。
ニューラルネットワーク(以下NN)の一例を示す図である。 本実施の形態におけるNNの演算を実行する情報処理装置のシステムの構成例を示す図である。 ホストマシン30の構成例を示す図である。 NN実行マシンの構成例を示す図である。 ホストマシンとNN実行マシンによる学習処理や本番処理の概略を示すシーケンスチャートの図である。 積和演算器MAの構成例を示す図である。 特殊演算器SPの構成例を示す図である。 NN内の複数の層の演算に含まれる特殊演算の例を示す図である。 NNの演算時間の一例を示す図である。 ボトルネックとなっているNN内の特定の層の演算時間を短縮する方法を説明する図である。 本実施の形態におけるNNプロセッサの学習時での処理を示すフローチャート図である。 本実施の形態におけるNNプロセッサの本番時(推論時)での処理を示すフローチャート図である。 特殊演算を特殊演算器で行うか近似計算により積和演算器で行うかの選択処理のフローチャート図である。 特殊演算を特殊演算器で行う場合の層の演算時間とメモリ転送時間の比較処理S61のフローチャート図である。 近似計算を選択する処理S63のフローチャートを示す図である。 畳込み層の演算を説明する図である。 畳込み層の演算内容、入力画像サイズ、パディング数、入力チャネル数、ストライド数、出力画像サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 マックスプーリング層の演算を説明する図である。 マックスプーリング層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 活性化関数ReLU層の演算を説明する図である。 活性化関数ReLU層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 全結合層FCの演算を説明する図である。 全結合層FCの演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 Dropout層の演算を説明する図である。 Dropout層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 Softmax層の演算を説明する図である。 Softmax層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 Softmax層の演算のソースコードを示す図である。 LRN層の演算を説明する図である。 LRN層の演算のソースコードを示す図である。 LRN層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 LRN層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 バッチ正規化層の演算内容の演算式を示す図である。 バッチ正規化層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 バッチ正規化層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。 LRN層の特殊演算(-3/4乗)と近似計算のテーブルを示す図である。 LRN層における特殊演算を含む演算時間とメモリ転送時間の比較及び近似計算の選択の具体例を示すフローチャート図である。 バッチ正規化層の特殊演算(-1/2乗)と近似計算のテーブルを示す図である。 バッチ正規化層における特殊演算を含む演算時間とメモリ転送時間の比較及び近似計算の選択の具体例を示すフローチャート図である。
目次
1.NNの例
2.NNを実行する情報処理装置の構成例
3.NN実行プロセッサの演算器の例
4.NN実行プロセッサの問題点
5.本実施の形態におけるNNプロセッサの概略
6.特殊演算を特殊演算器により計算するか積和演算器により近似計算するかの選択
7.近似計算の選択
8.NNの各層の演算と演算回数、演算命令数、データ量の例
9.具体例に基づく選択方法
以下、上記の目次に沿って本実施の形態を説明する。
1.NNの例
図1は、ニューラルネットワーク(以下NN)の一例を示す図である。図1のNNは、非特許文献1のAlexNetであり、本実施の形態が適用されるNNがこのNNに限定されるわけではない。
図1のNNは、例えば、画像を入力し、入力画像の内容(例えば数字)に応じて有限個のカテゴリに分類する物体カテゴリ認識のモデルである。NNは、入力層INPUTと出力層であるソフトマックス層SOFTMAXとの間に、隠れ層として、畳込み層CONV、活性化関数層ReLU、局所レスポンス正規化層LRN、マックスプーリング層MAX_POOLING、全結合層FC、ドロップアウト層Dropoutなどを有する。
隠れ層は、上記以外に、バッチ正規化層が含まれることもある。また、再帰型ニューラルネットワークRNNの場合、隠れ層にLSTM層が含まれることもある。各層は、単数または複数のノードを有し、前後の層間のノードはリンクで結合される。
畳込み層CONVは、入力層INPUT内の複数のノードに入力された例えば画像の画素データに、ノード間のリンクに対応付けられた重みを乗算しそしてバイアスを加算する積和演算を実行し、畳込み層11内の複数のノードに画像の特徴を有する出力画像の画素データをそれぞれ出力する。
活性化関数層ReLUは、畳込み層の出力を入力しReLU関数の値を出力する。LRN層は、チャネル間の画素の正規化を行う。マックスプーリング層MAX_POOLINGは、近傍の複数ノードの最大値を抽出して出力する。全結合層FCは、前層の全ノードの値にエッジの重みを乗算しバイアスを加算して全ノードの値を生成する。ソフトマックス層SOFTMAXは、画像内の物体が特定の物体に該当するか否かの確率を、複数の物体カテゴリに対応するノードに出力する。
また、ドロップアウト層は、複数のノードの一部を非活性状態にして、NNのロバスト性(堅牢性、強靭性、頑強性)を高める。バッチ正規化層は、畳込み層が畳込み演算して生成した出力画像の画素データを正規化し、例えば分布の偏りを抑制する。LSTM層は、再帰型ニューラルネットワークRNN内の設けられる一種のメモリ機能を有する。
2.NNを実行する情報処理装置の構成例
図2は、本実施の形態におけるNNの演算を実行する情報処理装置のシステムの構成例を示す図である。情報処理システムは、ホストマシン30とNN実行マシン40とを有し、例えば、専用インターフェース32,41を介して、ホストマシン30とNN実行マシン40とが接続される。また、ホストマシン30には利用者端末50がアクセス可能にされ、利用者は、利用者端末50からホストマシン30にアクセスし、NN実行マシン40を操作し、NNに対する学習処理や本番処理(推論処理)を実行する。ホストマシン30は、利用者端末からの指示に従い、NN実行マシンが実行するNNプログラムを作成し、NN実行マシンに送信する。そして、NN実行マシンは送信されたNNプログラムを実行し、学習処理や本番処理を実行する。
ホストマシン30は、例えば、コンピュータであり、ホストプロセッサ31、インターフェース32、メインメモリ33、補助記憶装置であるハードディスドライブHDDまたはソリッドステートドライブSSD35を有する。HDDまたはSDDには、NNの演算を実行するNNプログラムや、学習処理で利用される教師データなどが格納される。
NN実行マシン40は、インターフェース41、NNプロセッサ43、メインメモリ45などを有する。NNプロセッサ43は、複数の積和演算器MA_0~MA_n-1と、単数または複数の特殊演算器SP_0~SP_m-1と、レジスタ群REGを有する。好ましくは、積和演算器の数は、特殊演算器の数よりも多い。一般に、NNの演算は、積和演算器により実行される演算量が、特殊演算器により実行される演算量より多いので、それぞれの演算器の数も異なる場合がある。しかし、本実施の形態は、積和演算器の数が特殊演算器の数より多い場合に限定されない。
図3は、ホストマシン30の構成例を示す図である。ホストマシン30は、ホストプロセッサ31と、NN実行マシン40と接続するための高速入出力インターフェース32と、メインメモリ33と、内部バス34とを有する。さらに、内部バス34に接続された大容量のHDDまたはSSDなどの補助記憶装置35と、利用者端末50と接続するための低速入出力インターフェース36を有する。
ホストマシン30は、メインメモリ33に展開された補助記憶装置35内のプログラムを実行する。補助記憶装置35には、図示されるとおり、NNの演算処理を実行するNNプログラムと、教師データが記憶される。ホストプロセッサ31は、NNプログラムと教師データをNN実行マシンに送信し、NN実行マシンに実行させる。
高速入出力インターフェース32は、例えば、PCI Expressなどのプロセッサ31とNN実行マシンのハードウエアとを接続するインターフェースである。メインメモリ33は、プロセッサが実行するプログラムやデータを記憶し、例えば、SDRAMである。
内部バス34は、プロセッサより低速の周辺機器とプロセッサとを接続し、両者の通信を中継する。低速入出力インターフェース36は、例えば、USBなど利用者端末のキーボードやマウスとの接続を行い、または、イーサネット(登録商標)のネットワークとの接続を行う。
図4は、NN実行マシンの構成例を示す図である。NN実行マシン40は、ホストマシン30との通信を中継する高速入出力インターフェース41と、ホストマシン30からの指令やデータに基づいて対応する処理を実行する制御部42とを有する。また、NN実行マシン40は、NNの演算を実行するNNプロセッサ43と、メモリアクセスコントローラ44と、内部のメモリ45を有する。
NNプロセッサ43は、ホストマシンから送信されたNNプログラムとデータに基づいて、NNプログラムを実行し、学習処理及び本番処理を実行する。高速入出力インターフェース41は、例えば、PCI Expressであり、ホストマシン30との通信を中継する。
制御部42は、ホストマシンから送信されるプログラムやデータをメモリ45に記憶し、ホストマシンからの指令に応答して、NNプロセッサによるプログラムの実行を指示する。メモリアクセスコントローラ44は、制御部42からのアクセス要求とNNプロセッサ43からのアクセス要求に応答して、メモリ45へのアクセス処理を制御する。
内部のメモリ45は、NNプロセッサが実行するNNプログラム、NNのパラメータ、教師データ、処理対象データ、処理結果のデータなどを記憶する。例えば、SDRAMや、より高速のGDR5や広帯域のHBM2などである。
図5は、ホストマシンとNN実行マシンによる学習処理や本番処理の概略を示すシーケンスチャートの図である。ホストマシン30は、NN実行マシン40に、教師データや入力データを送信し(S30)、学習処理または本番処理を実行するNNプログラムを送信し(S31)、プログラム実行指示を送信する(S32)。
これらの送信に応答して、NN実行マシン40は、教師データや入力データとNNプログラムを内部のメモリ45に記憶し、プログラム実行指示に応答して、メモリ45に記憶した教師データや入力データについてNNプログラムの実行を行う(S40)。この間、ホストマシン30は、NN実行マシンによるNNプログラムの実行完了まで待機する(S33)。
NN実行マシン40は、NNプログラムの実行が完了すると、プログラム実行終了の通知をホストマシン30に送信し(S41)、出力データをホストマシン30に送信する(S42)。この出力データがNNの出力データの場合、ホストマシン30が出力データと正解データとの誤差を小さくするようにNNのパラメータ(重み等)を最適化する処理を実行する。または、NN実行マシン40がNNのパラメータを最適化する処理を実行してもよい。NN実行マシンが送信する出力データが最適化されたNNのパラメータ(重みやバイアス等)の場合、ホストマシン30は、最適化されたパラメータを記憶する。
3.NN実行プロセッサの演算器の例
図6は、積和演算器MAの構成例を示す図である。積和演算器MAは、乗算器MUL、加減算器ADD_1、論理演算器LGCと、複数のセレクタSEL_1, SEL_2, SEL_3を有する。また、積和演算器MAは、浮動小数点数の指数を減算する加減算器ADD_2を有する。論理演算器LGCは、入力値の論理和、論理積、排他的論理和など種々の論理演算を実行する。また、加減算器ADD_1は、加算と減算を実行する。
セレクタSEL_1は、レジスタ群REG内のメモリから転送されたデータを、所望の演算器MUL,LGC,ADD_1,ADD_2に入力する。加減算器ADD_2は、浮動小数点数の指数の減算を行い、仮数のビットのシフト量を出力する。このシフト量に基づいて、加減算器ADD_1などがデータの桁合わせを行う。セレクタSEL_2は、セレクタSEL_1で選択されたデータか乗算器MULの出力データのいずれかを選択し、加減算器ADD_1に入力する。乗算器MULのデータが選択されて加減算器ADD_1に入力されると、加減算器ADD_1は積和演算結果を出力する。セレクタSEL_3は、所望の演算器の出力データを選択し、レジスタ群内のレジスタに出力し、または、メモリ45に出力する。
このように、積和演算器MAは、加減算、乗算、乗算器MULと加算器ADD_1による積和演算、乗算器MULと減算器ADD_1による積減演算、及び、論理演算など、特殊演算を除く非特殊演算を実行する。また、特殊演算に対する近似計算が加減算、乗算、積和演算、論理演算などで実行される場合、積和演算器MAがその近似計算を実行する。
図7は、特殊演算器SPの構成例を示す図である。特殊演算器SPは、入力側のセレクタSEL_11と出力側のセレクタSEL_12と、両セレクタの間に設けられた複数の特殊演算エレメントSP_Eを有する。複数の特殊演算エレメントSP_Eは、それぞれ異なる特殊演算または一部同じ特殊演算を実行する。入力側のセレクタSEL_11は、レジスタ群REG内の入力データを、所望の特殊演算エレメントSP_Eに入力し、出力側のセレクタSEL_12は、所望の特殊演算エレメントSP_Eの出力を選択して、例えばレジスタや図示しないメモリに出力する。このように、特殊演算器SPは、複数種類の特殊演算を実行する複数の特殊演算エレメントを有する。
4.NN実行プロセッサの問題点
図8は、NN内の複数の層の演算に含まれる特殊演算の例を示す図である。NN内の複数の層は、一般に、積和演算器により実行可能な多くの演算、特に積和演算、を有する。一方、特定の層は、積和演算器により実行可能な演算に加えて、特殊演算器により実行される特殊演算を有する。または、特定の層は、積和演算器により実行可能な演算を含まず、特殊演算器により実行される特殊演算を有する。
図8に示した9つの層の演算については後で詳述する。概略を述べると、畳込み層CONVは、例えば、多くの積和演算を有し特殊演算を有していない。マックスプーリング層MAX_POOLは、NN内のデータの比較を行う論理演算を有し特殊演算を有していない。活性化関数ReLU層は、比較を行う論理演算を有し特殊演算を有していない。全結合層FUL_CNCTは、多くの積和演算を有し特殊演算を有していない。そして、ドロップアウト層DROPOUTは、ビットマスクとの論理積演算や乗算を有し特殊演算を有していない。
一方、ソフトマックス層SOFTMAXは、積和演算器で実行される四則演算に加えて、指数演算ex(累乗)や対数演算などの特殊演算を有する。LRN層は、積和演算器の演算に加えて、-3/4乗の演算や除算などの特殊演算を有する。-3/4乗は、例えば、平方根と乗算と除算の組み合わせ(2回平方根の値と1回平方根の値を乗算し逆数をとる)で実行される。バッチ正規化層BATCH_NORMは、積和演算器の演算に加えて-1/2乗などの特殊演算を有する。さらに、LSTM層は、シグモイド関数sigmoidや、ハイパボリックタンジェントtanhなどの特殊演算を有する。
図9は、NNの演算時間の一例を示す図である。例えば、図1のNNが学習処理を実行したときの演算時間の各層の内訳を示す。横軸は時間軸である。
図9に示されたNNの演算時間例によれば、大量の積和演算からなる畳込み演算を行う畳込み層CONVの演算時間が全演算時間の約30%を占める。そして、活性化関数層ReLU、マックスプーリング層MAX_POOL、全結合層FUL_CNCT、ソフトマックス層SOFTMAXなどの演算時間はそれほど大きくない、
それに対して、LRN層の演算時間が全体の演算時間の約50%を占めている。その結果、全体の演算時間が長くなっている。このような場合、特殊演算を有するLRN層の演算時間が、全体の演算時間のボトルネックとなっている。この原因は、例えば、NNプロセッサが、積和演算器MAに比較して少数の特殊演算器SPしか搭載していないため、特殊演算の処理能力が低いからである。そのため、LRN層の特殊演算である累乗を特殊演算器SPで実行すると、図9に示すようにそのLRN層の実行時間が比較的長くなり、演算時間短縮のボトルネックとなる。
特に、学習処理では、大量の教師データについてNNの演算を実行するので、1つの学習データの対するNNの実行時間を短くすることが、学習処理を完了するまでの長い演算時間を短縮するためには必要である。また、学習処理後の推論処理(本番処理)でも、多数のユーザが入力データについてNNの演算による推論を要求する場合、NNの実行時間を短くすることが望まれる。
5.本実施の形態におけるNNプロセッサの概略
図10は、ボトルネックとなっているNN内の特定の層の演算時間を短縮する方法を説明する図である。図10の横軸は時間軸である。NN内の特定の層の演算を実行する場合、演算器による演算処理と、メモリ転送処理とが発生する。メモリ転送処理は、演算のための入力データをメモリからプロセッサ内のレジスタに転送し、演算結果である中間データや出力データをレジスタからメモリに転送する処理である。
図10には、ある層の演算に必要なメモリ転送時間tmが示される。演算処理EX_0、EX_1は、ある層の演算に含まれる積和演算器で実行される非特殊演算と、特殊演算器で実行される特殊演算とを有する。演算処理EX_0の演算時間は、積和演算器により実行される非特殊演算の演算時間tcmaと、特殊演算器による演算時間tcs_0との和である合計演算時間tcma+tcs_0である。この演算処理EX_0では、特殊演算器による演算時間tcs_0が短く、演算時間t cma +tcs_0はメモリ転送時間tmより短くなっている。一方、演算処理EX_1の演算時間はtcma+tcs_1である。この演算処理EX_1では、特殊演算器による演算時間tcsが長くなり、演算時間tcma+tcs_1はメモリ転送時間tmより長くなっている。
メモリ転送と演算器による演算は、並列に実行される。したがって、演算処理EX_0のように、層の演算器の演算時間がメモリ転送時間以下の場合、演算器による演算時間がメモリ転送時間に隠蔽されるので、層の演算時間がNN全体の演算時間のボトルネックになることはない。この場合は、メモリ転送時間がボトルネックになる。
逆に、演算処理EX_1のように、層の演算器の演算時間がメモリ転送時間以下でない場合、演算器による演算時間がメモリ転送時間に隠蔽されず、層の演算中のメモリ転送時間がNN全体の演算時間のボトルネックになる。
一方、演算処理EX_2、EX_3では、層の特殊演算を特殊演算器で実行することに代えて、特殊演算の近似計算による積和演算器で実行する。演算処理EX_2は、近似計算1を積和演算器で実行し、演算処理EX_3は、近似計算2を積和演算器で実行する。
したがって、演算処理EX_2の演算時間は、積和演算器により実行される非特殊演算の演算時間tcmaと、積和演算器により実行される近似計算1の演算時間tca_1との和tcma+tca_1である。同様に、演算処理EX_3の演算時間は、積和演算器により実行される非特殊演算の演算時間tcmaと、積和演算器により実行される近似計算2の演算時間tca_2との和tcma+tca_2である。これらの演算時間tcma+tca_1、tcma+tca_2は、いずれもメモリ転送時間tmより短い。
本実施の形態におけるNNプロセッサは、NN内の特殊演算が含まれる層の演算を演算処理EX_0で行った場合の時間tcma+tcs_0がメモリ転送時間tm以下の場合、演算処理EX_0を演算方法として選択する。この場合、層の特殊演算は特殊演算器で演算される。
一方、NNプロセッサは、NN内の特殊演算が含まれる層の演算を演算処理EX_1で行った場合の時間tcma+tcs_1がメモリ転送時間tm以下でない場合、演算処理EX_2、EX_3のいずれかを演算方法として選択する。この場合、NNプロセッサは、選択した演算方法でその層の演算を実行し、特殊演算に特殊演算器を使用せず、汎用的な積和演算器を使用する。積和演算器は、一般に1つの命令を1クロックサイクルで完了することができ、また、積和演算器の数が大きいため、近似計算を積和演算器で実行した場合の実行時間tcaが、特殊演算を特殊演算器で実行した場合の実行時間tcsよりも短くなる。そのため、その層の合計演算時間tcma+tcaがメモリ転送時間tmより短くなり、演算実行時間をメモリ転送時間内に隠蔽することができる。
さらに、本実施の形態におけるNNプロセッサは、演算処理EX_2, EX_3のうち、近似計算の誤差が小さい演算処理EX_2を選択する。一般的に、近似計算は、演算回数を増やすほど誤差が小さくなる傾向にある。そこで、NNプロセッサは、できるだけ誤差が少ない近似計算で、演算時間tcma+tcaがメモリ転送時間tmより短くなる演算処理を選択する。
上記のとおり、層の特殊演算を含む演算を特殊演算器で実行した場合の層の実行時間がメモリ転送時間以下の場合(メモリ転送がボトルネックの場合)、特殊演算は特殊演算器で演算したほうが積和演算器で近似計算するよりも高精度に演算できるので、NNプロセッサは、特殊演算器で演算する。
一方、層の特殊演算を含む演算を特殊演算器で実行した場合の層の実行時間がメモリ転送時間以下でない場合(演算器による演算時間がボトルネックの場合)、NNプロセッサは、特殊演算を近似計算により積和演算器で行う。これにより、NNプロセッサは、層の演算時間をメモリ転送時間以下にでき、NNの演算を高速化できる。
そして、好ましくは、層の演算時間をメモリ転送時間以下にできる近似計算のうち、できるだけ高精度の近似計算を選択する。
層の演算の演算器による実行時間は、NNの演算内容とデータ量及びプロセッサの性能に依存して異なる。また、メモリ転送時間は、NNのデータ量及びプロセッサとメモリのメモリ転送能力に依存して異なる。
また、NNプロセッサは、NNの学習時は、最初の学習処理を実行する工程内で、層の特殊演算を特殊演算器で実行するか、近似計算により積和演算器で実行するかを決定し、その後の学習処理では、再度決定処理をせず、最初に決定した方法で層の演算を実行する。また、NNプロセッサは、本番処理時(推論時)は、最初の本番処理工程で、層の特殊演算を特殊演算器で実行するか、近似計算により積和演算器で実行するかを決定し、その後の本番処理では、再度決定処理をせず、最初に決定した方法で層の演算を実行する。学習時と本番時で異なるプロセッサがNNの演算を実行する場合があるからである。
図11は、本実施の形態におけるNNプロセッサの学習時での処理を示すフローチャート図である。NNプロセッサが学習処理を実行する前に、予め特殊演算と近似計算のテーブルが作成される(S0)。特殊演算と近似計算のテーブルは、後で詳述するが、特殊演算を特殊演算器で実行する場合の各特殊演算エレメントの命令数と各特殊演算エレメントのクロックサイクル数、特殊演算を近似計算により積和演算器で実行する場合の積和演算器の命令数と積和演算器のクロックサイクル数をそれぞれ有する。また、テーブルは、それぞれの近似計算の誤差も有すると好ましい。上記のクロックサイクル数はNNプロセッサの性能情報であるので、特殊演算と近似計算のテーブルとは別に、NNプロセッサの性能情報として予め準備されてもよい。
学習処理では、NNプロセッサは、最初の学習工程S1~S11を実行し、2回目以降の学習の反復工程S20~S32を実行する。最初の学習工程S1~S11では、NNプロセッサは、NNの各層を順方向に伝播しながら(S1)、層の演算に特殊演算が含まれる場合、図10で説明した方法で、特殊演算を特殊演算器で行うか、近似計算により積和演算器で行うかを選択する(S2)。そして、NNプロセッサは、選択した方法でその層の演算に含まれる特殊演算を実行する(S3)。NNプロセッサは、上記の処理が、全層が終わるまで繰り返す(S4)。
次に、NNプロセッサは、NNの各層を逆方向に伝播しながら(S5)、層の演算に特殊演算が含まれる場合、図10で説明した方法で、特殊演算を特殊演算器で行うか、近似計算により積和演算器で行うかを選択する(S6)。そして、NNプロセッサは、選択した方法でその層の演算に含まれる特殊演算を実行する(S7)。NNプロセッサは、上記の処理が、全層が終わるまで繰り返す(S8)。なお、NN逆方向伝播では、出力値と教師データの差分(誤差)をNNの逆方向に伝播しながら、各層での誤差を小さくする更新後のパラメータと更新前のパラメータとの差分を求める。
そして、NNプロセッサは、NNの各層を順方向に伝播しながら(S9)、各層の重みやバイアスなどのパラメータを逆伝播で求めたパラメータの差分により更新する(S10)。このパラメータの更新処理も全層が終わるまで行われる(S11)。
2回目以降の学習の反復工程S20~S32では、NNプロセッサは、順伝播しながら(S21)全層終了するまで(S24)、選択した方法で各層の演算を実行する(S23)。さらに、NNプロセッサは、逆伝播しながら(S25)全層終了するまで(S28)、選択した方法で各層の演算を実行する(S27)。そして、NNプロセッサは、NNの各層を順方向に伝播しながら(S29)全層終了するまで(S31)、各層の重みやバイアスなどのパラメータを逆伝播で求めたパラメータの差分により更新する(S30)。上記の処理が学習の反復が終了するまで繰り返される(S32)。
図11の処理は、NNプロセッサがホストマシンから送信されたNNプログラムを実行することで行われる。NNプログラムは、層の演算の特殊演算を特殊演算器で行うか近似計算により積和演算器で行うかの判定コードと、層の演算の特殊演算を特殊演算器で行うためのコードと、近似計算により積和演算器で行うためのコードとを有する。判定コードは、初回の学習工程で実行され、次回の学習工程以降は実行されない。また、NNプロセッサが異なる度に、特殊演算と近似計算のテーブルが作成され、判定コードが実行され、特殊演算器で行うか、近似計算により積和演算器で行うかが判定される。
図12は、本実施の形態におけるNNプロセッサの本番時(推論時)での処理を示すフローチャート図である。NNプロセッサが本番処理を実行する前に、予め特殊演算について近似計算のテーブルが作成される。本番時のNNプロセッサが学習時のNNプロセッサと異なる場合があるからである。
本番処理では、NNプロセッサは、最初の本番工程S41~S44を実行し、2回目以降の本番工程S51~S54を実行する。最初の本番工程S41~S44では、NNプロセッサは、NNの各層を順方向に伝播しながら(S41)、層の演算に特殊演算が含まれる場合、図10で説明した方法で、特殊演算を特殊演算器で行うか、近似計算により積和演算器で行うかを選択する(S42)。そして、NNプロセッサは、選択した方法でその層の演算に含まれる特殊演算を実行する(S43)。NNプロセッサは、上記の処理が、全層が終わるまで繰り返す(S44)。
2回目以降の本番工程S51~S54では、NNプロセッサは、NNの各層を順方向に伝播しながら(S51)、層の演算に含まれる特殊演算を選択した方法で実行する(S53)。NNプロセッサは、上記の処理が、全層が終わるまで繰り返す(S54)。
6.特殊演算を特殊演算器で行うか近似計算により積和演算器で行うかの選択
図13は、特殊演算を特殊演算器で行うか近似計算により積和演算器で行うかの選択処理のフローチャート図である。この選択処理は、図11,図12の工程S2,S6,S42の処理である。
NNプロセッサは、各層において特殊演算を含む層か否か判定し(S60)、特殊演算を含まない場合(S60のNO)、その層の演算を積和演算器で実行すると決定する(S66)。特殊演算を含む場合(S60のYES)、NNプロセッサは、層の演算に含まれる特殊演算を特殊演算器で実行した場合の層の演算時間と、層の演算に必要なデータのメモリ転送時間とを比較する(S61)。この比較については、図14で説明する。NNプロセッサは、特殊演算を特殊演算器で実行した場合の層の演算時間がメモリ転送時間以下か否か判定し(S62)、以下の場合(S62のYES)、層の演算を特殊演算は特殊演算器で非特殊演算は積和演算器で実行すると決定する(S65)。以下でない場合(S62のNO)、NNプロセッサは、層の演算を特殊演算は近似計算により積和演算器で、非特殊演算は積和演算器でそれぞれ実行すると決定する(S64)。
さらに、望ましくは、NNプロセッサは、演算時間がメモリ転送時間以下を満たす近似計算のうち、誤差が最小の近似計算を選択する(S63)。
図14は、特殊演算を特殊演算器で行う場合の層の演算時間とメモリ転送時間の比較処理S61のフローチャート図である。層の演算時間は、NNの演算内容とNNプロセッサの性能に依存する。NNプロセッサの性能は、積和演算器の性能である積和演算性能nmaと特殊演算器の性能である特殊演算性能nsである。また、NNの演算内容は、NNの演算に必要な四則演算の回数や特殊演算の回数であり、それらの演算回数を積和演算器や特殊演算器で実行した場合の演算命令数(演算器の命令実行回数)である。一方、メモリ転送時間は、データ転送量(byte)とメモリ帯域(メモリアクセスにおける単位時間当たりのデータ量(byte/sec))とに依存する。データ転送量はNNの演算内容に基づき、メモリ帯域はNNプロセッサの性能に基づく。
本実施の形態では、特殊演算器内の複数種類の特殊演算エレメントの1つの命令に要する平均クロックサイクル数Csが異なるので、積和演算性能nmaと特殊演算性能nsを、演算器の個数とクロック周波数の積と定義する。そして、積和演算器の演算時間tcmaと特殊演算器の演算時間tcsを、各演算器の演算命令数Xma, Xs 、(演算性能nma/1命令の平均クロックサイクル数(演算サイクル数)Cma), (演算性能 ns/1命令の平均クロックサイクル数(演算サイクル数 Cs))それぞれ除算して求める。
14に示されるとおり、NNプロセッサは、プロセッサの積和演算性能nmaと、特殊演算性能nsと、メモリ転送性能mを以下の通り求める(S70)。MACはメモリアクセスコントローラである。
積和演算性能nma = 積和演算器数 * クロック周波数
特殊演算性能ns = 特殊演算器数 * クロック周波数
メモリ転送性能m = MAC数 * MAC当たりのデータ転送量
次に、NNプロセッサは、積和演算時間tcmaと、特殊演算時間tcsと、メモリ転送時間tmを以下のとおり求める(S71)。
積和演算時間tcma = 積和演算命令数Xma* 積和演算サイクル数Cma/積和演算性能nma
特殊演算時間tcs = Σ(特殊演算命令数Xs * 特殊演算サイクル数Cs)/特殊演算性能ns
メモリ転送時間tm = メモリ転送量y(=データ要素数 * 1要素のデータサイズ)/メモリ転送性能m
上記のΣ(特殊演算命令数Xs * 特殊演算サイクル数Cs)は、特殊演算が複数の特殊演算エレメントで実行される場合の、複数の演算エレメントそれぞれの(特殊演算命令数Xs *特殊演算サイクル数Cs)の合計を意味する。
そして、NNプロセッサは、上記で求めた層の演算に要する演算時間(積和演算時間tcma + 特殊演算時間tcs)と、メモリ転送時間tmとを比較し、演算時間がメモリ転送時間以内か否か(tcma + tcs ≦ tm)を判定する(S72)。tcma + tcs ≦ tmが真(YES)の場合、層の演算の特殊演算を特殊演算器で実行し、偽(NO)の場合、層の演算の特殊演算を近似計算により積和演算器で実行すると決定する。
留意すべき点は、後で説明する具体例で説明するが、層の演算は、非特殊演算のみの場合、非特殊演算と特殊演算が混在する場合、などがある。
層の演算が非特殊演算と特殊演算が混在する場合、
(1)特殊演算を特殊演算器で実行する場合、層の演算に要する演算時間は、非特殊演算の積和演算時間tcma + 特殊演算の特殊演算時間tcsとなる。また、
(2)特殊演算を近似計算により積和演算器で実行する場合、層の演算に要する演算時間は、(非特殊演算の積和演算時間+ 近似計算の積和演算時間)tcmaとなる。
7.近似計算の選択
図15は、近似計算を選択する処理S63のフローチャートを示す図である。特殊演算の近似計算は複数存在する。例えば、ニュートン法は、所定の演算で初期値を推定する初期値推定と、初期値に基づいて近似計算を繰り返し収束演算とにより、近似値を算出する。一般に収束演算の回数を増やすほど誤差が少なくなるが、その分演算時間が長くなる。
そこで、本実施の形態では、予め準備する特殊演算と近似計算のテーブルに、複数の近似計算をNNプロセッサで実行して得たそれぞれの積和演算命令数を格納する。このテーブルには、積和演算器の1命令の平均サイクル数(通常、1サイクル)、特殊演算エレメントの1命令の平均サイクル数、近似計算の誤差も格納する。近似計算の誤差も実験で得ておく。
図15に示されるとおり、近似計算を選択する処理では、NNプロセッサは、特殊演算と近似計算のテーブルから、誤差が一番小さい近似計算を選択する(S75)。
次に、NNプロセッサは、特殊演算を選択した近似計算により積和演算で実行する場合の層の演算時間tcma + tcaを次の計算式で算出する(S76)。
tcma + tca = (非特殊演算の積和演算命令数Xma* 積和演算サイクル数Csa +
特殊演算の近似計算による積和演算命令数Xma * 積和演算サイクル数Csa)/積和演算性能nma
上記の特殊演算の近似計算による積和演算命令数Xmaは、近似計算の初期値推定のための演算回数aと、収束演算の演算回数bと、収束演算の反復回数rとから、以下の式で求める。
Xma = a + r*b
近似計算の初期値推定は、例えば、クエイク(Quake)のアルゴリズムと同様の初期値推定で行う。この場合、入力の浮動小数点数の指数部分に関しては、ビット演算のみで正確な近似解が得られる。一方、仮数部(Kビット)は、前もって符号ビットを含めたK+1ビットの全通り(2K+1通り)をNNプロセッサで実験し、最も誤差が少ない初期値を決定する。この初期値を得るのに要した演算回数がaとなる。
詳細は、例えば、http://takashiijiri.com/study/miscs/fastsqrt.htmlを参照。
また、収束演算と反復回数の例は、例えば、3次Householder法を2回、Newton法を4回、3次Householder法と4次Householder法を1回などである。
次に、NNプロセッサは、近似計算により積和演算器で実行した場合の層の合計演算時間tcma + tcaと、メモリ転送時間tmとを比較する(S77)。tcma + tca ≦ tmが真の場合(YES)、選択した近似計算に決定し(S78)、偽の場合(NO)、特殊演算と近似計算のテーブルから次に誤差の小さい近似計算を選択し(S79)、工程S76, S77を繰り返す。
上記の近似計算を選択する処理は、近似計算の収束演算の繰り返し回数が多く演算時間が長いほど、近似計算の誤差が小さいことに基づく。tcma + tca ≦ tmが満たされれば、近似計算により積和演算器で実行した層の演算時間はメモリ転送時間に隠蔽され、演算時間がボトルネックになることはない。但し、近似計算の種類によって誤差が異なるので、上記の条件を満たす範囲で、最小誤差の近似計算を選択することが好ましい。
8.NNの各層の演算と演算回数、演算命令数、データ量の例
次に、図1のNNの具体例について、各層の演算、演算回数、演算命令数、データ量の例を示し、図8に示した各層の特殊演算の有無と、各層が特殊演算を含む場合の特殊演算を説明する。以下に説明する図1のNNの演算例は、非特許文献1のAlexNetのプログラムのソースコードに基づく。
[畳込み層CONV]
図16は、畳込み層の演算を説明する図である。畳込み層は、Hin×Winの入力画像を入力チャネルCin数有する入力INPUTを入力する。入力画像の周囲にはフィルタサイズに基づく幅の画素がパディングされる。畳込み層は、Hin×Winの入力画像に、kH×kW(2×2)のフィルタFILTERをストライドSt間隔で移動させながら、畳込み演算する。各フィルタFILTERは、入力画像の入力チャネルCinと同じ数を有し、全フィルタは出力チャネルCout数分のフィルタを有する。畳込み層の演算は、入力チャネルCin分の入力画像に各フィルタFILTERを畳込み演算し、Hout×Woutの出力画像をフィルタの数Cout有するOUTPUTを出力する。
図17は、畳込み層の演算内容、入力画像サイズ、パディング数、入力チャネル数、ストライド数、出力画像サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。図17に示されるとおり、畳込み層の演算内容は、パディングされた入力画像の全入力チャネルCinの各要素I(i)にkH×kW×Cinのフィルタの重みwijを乗算し、それにバイアスbiasを加算した値(wij* I(i)+bias)を、累積加算する演算を、全出力チャネルCout分のフィルタについて実行することである。
入力画像サイズHin×Win、パディング数pad、入力チャネル数Cin、フィルタ画像サイズkH×kW×Cin、フィルタのストライドSt、出力画像サイズHout×Wout×Coutとすると、出力画像のサイズWout、Houtは、図17に示されるとおり、以下である。
Wout = (Win+2pad-kW)/St - 1 or Win = Wout×St + kW +St -2pad
Hout = (Hin+2pad-kH)/St - 1 or Hin = Hout×St + kH +St -2pad
したがって、畳込み層の積の演算回数と和の演算回数は、それぞれ以下のとおりである。
演算回数(積) = (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
演算回数(和) = { (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr×Gr+ Hout×Wout×Cout}×MB
但し、Grは入力INPUTと出力OUTPUTのグループ数、MBはミニバッチのデータ数である。具体例の畳込み層は、入力チャネルCinと出力チャネルCoutをグループ数Grに分け、各グループ内で畳込み演算を行い、その畳込み演算をグループ数Grだけ行い、これをミニバッチデータ数MB分行う。これにより演算回数を1/Gr回数に減らす。
上記の積の演算回数と和の演算回数の共通回数を積和演算器で実行し、共通回数に満たない積の演算回数または和の演算回数を積和演算器で実行する。その場合、NNプロセッサの積和演算器の積和命令数と、積和演算器の加算命令数と、積和演算器の乗算命令数は、図17に示されるように、以下のとおりである。
命令数(積和) = (Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
命令数(和) = 演算回数(和) - 命令数(積和) = Hout×Wout×Cout}×MB
命令数(積) = 演算回数(積) - 命令数(積和) = 0
上記から、畳込み層の演算は、全て積和演算器で実行され、特殊演算は含まれない。
次に、入力bottomと、出力topと、バイアスbiasと、重みweightのデータ数は、それぞれ以下のとおりである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
bias = Cout
weight = kH×kW×Cin÷Gr×Cout÷Gr×Gr
[Max Pooling層]
図18は、マックスプーリング層の演算を説明する図である。マックスプーリング層は、図1の具体例では、畳込み演算結果をLRN層で正規化した画像や畳込み演算された画像を入力し、近接する画素の最大値を選択して出力する。近傍の要素の最大値を選択するために、マックスプーリング層は、Hout * Wout * Cout * MB分、kH * kW回の比較演算(論理演算)を実行する。
図19は、マックスプーリング層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。演算内容は、入力画像の最大値対象サイズkH×kWの入力I(i)の最大値を、kH×kW個の入力I(i)を互いに比較して得る演算である。
最大値対象サイズkH×kW、出力画像サイズHout×Wout×Cout、ミニバッチのデータ数MBとすると、比較の演算回数は、Hout×Wout×Cout×(kH×kW)×MBである。また、比較演算は論理演算であり、積和演算器で実行されるので、積和演算器の命令数は、比較演算回数と等しい。したがって、マックスプーリング層の演算は積和演算器で実行され、特殊演算はない。さらに、入力bottom、出力top、変数maskのデータ数は、図19に示されるとおりである。
[活性化関数ReLU層]
図20は、活性化関数ReLU層の演算を説明する図である。ReLU層は、Hin×Win×Cinの入力データI(i)がI(i)<0か、I(i)≧0かの比較を行い、I(i)<0なら出力O(i)=0とし、I(i)≧0なら出力O(i)=I(i)とする演算を行う。
図21は、活性化関数ReLU層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。演算内容は、上記の通りである。入力画像サイズはHin×Win×Cin、出力画像サイズはHout×Wout×Coutであり、両者は等しいサイズである。また、ミニバッチのデータ数はMBである。この場合の演算回数は、入力I(i)とゼロ(0)との比較演算の回数であるので、Hin×Win×Cin×MBである。この比較演算は積和演算器の論理演算器で実行できるので、積和演算器の命令数は演算回数(比較)と等しい。したがって、活性化関数ReLU層は、積和演算器で実行され、特殊演算はない。入力borrowと出力topのデータ数は、入力画像サイズと出力画像サイズと同じである。
[全結合層FC]
図22は、全結合層FCの演算を説明する図である。全結合層は、入力画像の全画素(全ニューロン)を並べたHin*Win*Cinサイズの入力I(i)それぞれに重みwijを乗算したものを累積し、累積値にバイアスbiasを加算した値O(i)を出力する。
図23は、全結合層FCの演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。演算内容は、上記の通りである。入力画像サイズはHin×Win×Cin、出力画像サイズはHout×Wout×Coutである。両サイズは必ずしも等しくない。
入力サイズをI、出力サイズをO、ミニバッチデータの数をMBとすると、乗算の演算回数はI×O×MBであり、加算の演算回数は(I×O+O)×MBである。加算は、ミニバッチの各データに対し、全入力に重みを乗算したものを累積加算する回数I×Oと、累積加算結果にバイアスbiasを加算する回数Oの和、I×O+Oである。この加算が、ミニバッチの各データで発生するので、合計加算回数は、(I×O+O)×MBである。
次に、加算と乗算は積和演算器で同時に実行可能であるので、加算の演算回数と乗算の演算回数の共通回数は、積和演算命令数I×O×MBとなる。そして、加算演算回数から積和演算命令数を減じた残りが加算演算命令数O×MBとなる。乗算演算命令数はゼロである。
更に、データ数については、入力bottomのデータ数、出力topのデータ数は、図23に示されるとおり、それぞれ入力画像サイズにミニバッチのデータ数MBを乗じた数になる。
bottom = Hin × Win × Cin × MB
top = Hout × Wout × Cout × MB
そして、バイアスbiasのデータ数は出力チャネルCout分であるので、bias=Cout、重みweightのデータ数は、全入力数×全出力数であるので、weight = Hin×Win×Cin×Hout×Wout×Coutである。
上記の通り、全結合層の演算は、全て積和演算器で実行され、特殊演算は含まれていない。
[Dropout層]
図24は、Dropout層の演算を説明する図である。Dropout層は、図1に示されるとおり、全結合層FCの出力のうち、ランダムに選択したノードを不活性化し、不活性化されなかったノードを強化する。Dropout層は、脳科学の知見に基づく手法であり、学習時に、ランダムに選択したノードを不活性化することでネットワークに負荷をかけ、不活性化されなかったノードに定数scaleを乗じて強化する。本番時(推論時)は、Dropout層の演算は行われない。
図25は、Dropout層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。演算内容は、上記したとおりであり、演算式は以下のとおりである。
O(i) = I(i) * mask(i) * scale
また、入力画像サイズはHin×Win×Cin、出力画像サイズはHout×Wout×Coutである。また、ミニバッチのデータ数はMBである。このことから、乗算の演算回数は、学習時に入力データそれぞれにマスクビットmask(i)を乗算し、更にスケールscaleを乗算するので、2×I×MBである。本番時の演算回数はゼロである。そして、学習時の乗算演算の命令数は、乗算の演算回数と等しく、2×I×MBである。
入力borrow、出力top、マスクビットmaskのデータ数は、それぞれ以下のとおりである。
borrow = Hin×Win×Cin×MB
top = Hout×Wout×Cout×MB
mask = Hin×Win×Cin×MB
したがって、Dropout層の演算は、全て積和演算器で実行され、特殊演算は含まない。
[Softmax層]
図26は、Softmax層の演算を説明する図である。図26のSoftmax層の演算は、合計が1になる確率を各出力のノード(ニューロン)に生成するとともに、逆方向伝播時に利用する各ノードの出力の誤差(クロスエントロピー誤差)を求める。
図27は、Softmax層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。さらに、図28は、Softmax層の演算のソースコードを示す図である。AlexNetのソースコードは、オープンソースから抽出可能である。
Softmax層の演算内容は、図27の演算内容及び図28のソースコードに示すように以下のとおりである。
(1)関数maxで入力bottom_xの最大値scaleを出力する。関数maxは比較演算である。
(2)全入力bottom_yそれぞれから最大値scaleを減じ、全入力x-最大値maxを負にする。
(3)更に、x-max(<0)のexpを求め、その範囲を0~1.0にする。
(4)そして、全ex-maxの和scaleを求める。
(5)各ex-maxを全ex-maxの和scaleで割り、和が1になる確率 = ex-max/(全ex-maxの和scale)を求める。
(6)そして、正解ベクトルt[mb][i]=1の場合に、上記確率のlogである、log(ex-max/Σex-max)(クロスエントロピー誤差)を求め、log(ex-max/Σex-max)が負であるので、(-1)倍して正の誤差eを求める。
Softmax層の入力サイズ、出力サイズは以下のとおりである。
I = Hin×Win×Cin
O = Hout×Wout×Cout
そして、ミニバッチのデータ数をMBとすると、
上記の(1)~(6)の比較、差、exp、和、商、比較、logの演算回数はそれぞれ以下のとおりである。入力サイズをI、ミニバッチのデータ数をMBとする。
演算回数(比較)= I × MB×2
演算回数(差)= I × MB×2
演算回数(exp)= I × MB
演算回数(和)= I × MB
演算回数(商)= I × MB
演算回数(log)= I × MB
これらの演算のうち、比較、差、和は積和演算器で実行され、exp、商、logは特殊演算器で実行される。それぞれの演算命令数は、演算回数と同じになる。このように、Softmax層は、非特殊演算を積和演算器で実行し特殊演算を特殊演算器で実行する。
さらに、データ数は、入力bottom、誤差eに対応する出力topは、次の通りである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB(学習時のみ、本番時はゼロ)
[LRN層]
図29は、LRN層の演算を説明する図である。LRN層は、図1に示されるとおり、畳込み層CONVの出力側に設けられ、畳込み層が生成した画像データのチャネル方向の局所的な数の画素データの正規化を行う。
図30は、LRN層の演算のソースコードを示す図である。図31,図32は、LRN層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。
LRN層の演算内容は、図31の演算内容及び図30のソースコードに示すように以下のとおりである。
(1)畳込み層CONVの出力であるLRN層の入力X(bottom_data)の二乗X2をHin*Win*Cinの要素分求める。二乗X2は変数Padded_squareとなる。この演算は積である。
(2)Padded_squareのチャネルCin内のLocal_size=nの要素をそれぞれα倍しLocal_size=nで除算し(α/n倍)、padded_squareの各要素X2のチャネル方向の局所数Local_size分の平均scale_data[cin](=scale_data[mb][0][i], Cin=0の平均)を求める。この演算は積と和である。
(3)チャネルCin内で移動しながら、残りのc=1~Cinについてそれぞれの平均を求める。具体的には、(2)でc=0について求めた平均(scale_data[mb][c-1][i])から、その平均の端tailを減じ先頭headを加算してc=1の平均を求める。c=2以降も同様に繰り返す。これらの平均はLocal_size=nの要素の移動平均である。この演算は、和、積を2回、差の演算である。
(4)(3)の出力を-3/4乗し、出力top_data[i]を求める。出力top_data[i]は、i=Cin*Hin*Win分求める。ここの演算は、累乗powであり、特殊演算である。
(5)(4)の出力top_data[i]に入力bottom_data[i]をそれぞれ乗算する。ここの演算は積である。
そして、入力画像サイズIと出力画像サイズOは、次のとおりである。
I = Hin×Win×Cin (Cinは入力チャネル数)
O = Hout×Wout×Cout (Coutは入力チャネル数)
そして、ミニバッチのデータ数はMBである。
次に演算回数は、上記の演算(1)~(5)の回数及び同じ演算をまとめた回数は、それぞれ、以下のとおりである。
(1)積:Cin×Hin×Win
(2)積:local_size×Hin×Win 和:local_size×Hin×Win
(3)積:(Cin-1)×Hin×Win ×2 和:(Cin-1)×Hin×Win 差:(Cin-1)×Hin×Win
(4)累乗:Cin×Hin×Win
(5)積:Cin×Hin×Win
よって、
演算回数(積): (4Cin + local_size - 2)×Win×Hin×MB
演算回数(和): (Cin + local_size - 1) ×Win×Hin×MB
演算回数(差): (Cin -1)×Win×Hin×MB
演算回数(Pow): Cin×Win×Hin×MB
次に、演算の命令数は、積和、積差でまとめると、次の通りである。
命令数(積和): {lsize×Win×Hin + (Cin - 1)×Win×Hin}×MB
命令数(積差): (Cin - 1)×Win×Hin×MB
命令数(和): 演算回数(和) - 命令数(積和) = 0
命令数(差): 演算回数(差) - 命令数(積差) = 0
命令数(積): 演算回数(積) - 命令数(積和) - 命令数(積差) = Cin×Win×Hin×MB×4
命令数(pow): 演算回数(pow) = Cin×Win×Hin×M
さらに、データ数は、以下のとおりである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
scale = Hin×Win×Cin×MB
padded square = Win×Hin×Cin
上記の通り、LRN層の演算では、非特殊演算を積和演算器で実行し、特殊演算(累乗pow)を特殊演算器で実行される。
[Bach Normalization(バッチ正規化)層]
図33は、バッチ正規化層の演算内容の演算式を示す図である。図34、図35は、バッチ正規化層の演算内容、入力サイズ、出力サイズ、演算回数、演算器の演算命令数及びデータ数などを示す図表である。
バッチ正規化層は、例えば、畳込み層の後ろに設けられ、ミニバッチの全入力画像について演算して求めた全出力画像をチャネルCout毎に正規化する。バッチ正規化層の入力は、畳込み層で演算したミニバッチのデータ分の出力画像であり、出力は正規化された出力画像である。
図34の演算内容にも示すが、バッチ正規化層の演算は、次の通りである。
(1)各ミニバッチ(MB)で算出した各チャネルCiの出力画像の平均、分散、正規化、スケール及びシフトを実行する。
(2)現MBで算出したチャネルCiの平均+前MBで算出したチャネルCiの平均*係数=移動平均、の演算を、全チャネルC0-Cnに対して繰り返す。
(3)現MBで算出したチャネルCiの分散*係数+前MBで算出したチャネルCiの分散*係数=移動平均、の演算を、全チャネルC0-Cnに対して繰り返す。
(2)(3)では、各MBにおいて、乗算*3回、加算*2回がチャネル数Cin回実行される。(2)(3)の移動平均は、本番工程のために学習工程で予め求めておく演算である。
図33には、上記の各チャネルCiの出力画像の平均、分散、正規化、スケール及びシフトの演算式が示される。ここで、正規化の演算は、t[ci]を求める演算式と、正規化された値temp[bi][ci][x][y]を求める演算式に分けることで、平方根と除算の演算回数を減らすことができる。スケール&シフト演算は、正規化された値temp[bi][ci][x][y]を0~255に線形変換する演算である。
図34において、入力画像サイズ、出力画像サイズは、次の通りである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout×MB
ミニバッチのデータ数はMBである。
そこで、図33の演算式によれば、平均(mean)、分散(variance)、移動平均、正規化、スケール&シフトの演算回数は、図34に示すとおりである。
平均(mean):
演算回数(積) = 演算回数(和) = Hin×Win×Cin×MB
分散(variance):
演算回数(差) = Hin×Win×Cin×MB
演算回数(積) = 2×Hin×Win×Cin×MB
演算回数(和) = Hin×Win×Cin×MB
移動平均:
演算回数(積) = 3×Cin
演算回数(和) = 2×Cin
正規化:
演算回数(和) = Cin
演算回数(平方根) = Cin
演算回数(商) = Hin×Win×Cin×MB
スケール&シフト:
演算回数(積) = Hin×Win×Cin×MB、演算回数(和) = Hin×Win×Cin×MB
平均(mean)、分散(variance)、移動平均、正規化、スケール&シフトの積和、積、和、差、商、平方根の演算の命令数は、図35に示すとおりである。積と和、積と差は積和演算で一緒に演算できるので、積和演算の命令数でまとめられる。
平均(mean):
命令数(積和) = Hin×Win×Cin×MB
分散(variance):
命令数(差) = Hin×Win×Cin×MB
命令数(積) = Hin×Win×Cin×MB
命令数(積和) = Hin×Win×Cin×MB
移動平均:
命令数(積) = Cin
命令数(積和) = 2×Cin
正規化:
命令数(和) = Cin
命令数(平方根) = Cin
命令数(商) = Hin×Win×Cin×MB
スケール&シフト:
命令数(積和) = 演算回数(積) = Hin×Win×Cin×MB
さらに、データ数は、図35に示すとおりである。
bottom = Hin×Win×Cin×MB
top = Hout×Wout×Cout × MB
deviation = Cin
bias (β) = Cout
bias(γ) = Cout
上記の通り、バッチ正規化層は、非特殊演算を積和演算器で行い、商、平方根の特殊演算を特殊演算器で行う。
[LSTM層]
LSTM層の特殊演算はsigmoid関数の演算と、tanh関数の演算である。これらの具体例については省略する。
9.具体例に基づく選択方法
次に、具体例に基づき、特殊演算を特殊演算器で実行するか近似計算により積和演算器で実行するかの判定と、どの近似計算により積和演算器で実行するかの選択について説明する。具体例は、特殊演算を有するLRN層とバッチ正規化層である。
[LRN層の具体例]
図11,図12で示した、LRN層の特殊演算と近似計算のテーブルについて説明し、図13~図15に示した、ある性能を有するNNプロセッサでLRN層の演算を実行する場合の上記判定及び選択について説明する。
図36は、LRN層の特殊演算(-3/4乗)と近似計算のテーブルを示す図である。このテーブルは、特殊演算(-3/4乗)の計算方法として、特殊演算器で実行するOriginalと、近似計算を積和演算器で実行する4つの例が示される。4つの近似計算は、(1)初期値推定(Magic numberの推定)のみ、(2)初期値推定と3次Householder法を2回転、(3)初期値推定とNewton法を4回転、(4)初期値推定と3次Householder法と4次Householder法である。テーブルには、特殊演算器で実行するケースと、4つの近似計算それぞれについて、初期値推定の命令数、収束演算の命令数、命令数の合計、クロックサイクル数、誤差が示される。
第1に、特殊演算を特殊演算器で実行するケースは、収束演算(命令数)のコラムに示した通り、√xの演算fsqrtが2命令+乗算fmulが1命令+除算fdivが1命令となる。つまり、2回平方根の値(1/4乗)と1回平方根(2/4乗)の値を乗算し(1/4+2/4=3/4乗)逆数をとる(-3/4乗)演算である。fsqrtとfdivが特殊演算器により実行され、fmulは積和演算器により実行される。fsqrt, fmul, fdivはいずれも浮動小数点演算器の命令である。したがって、命令数の合計は、積和演算命令数が1,特殊演算命令数が3(fsqrt命令数が2,fdiv命令数が1)である。NNプロセッサの1命令の実行に要する平均クロックサイクル数が、積和演算器が1,fsqrtが23、fdivが22とすると、合計クロックサイクル数は、積和演算器が1、特殊演算器が68となる。また、誤差(-1)は実質的にゼロを意味する。
第2に、特殊演算を近似計算による積和演算器で実行する4つのケースについて説明する。
(1)初期値設定のみの演算は、実験の結果、右論理シフトisrlが2命令、減算isubが2命令である。命令isrl, isubは、いずれも固定小数点演算器の命令である。これらの命令の演算は積和演算器で実行可能であり、命令数の合計は積和演算命令数が4である。したがって、合計クロックサイクル数は4となる。
(2)初期値推定と3次Householder法を2回転の演算では、初期値推定の命令数が前述と同じ4であり、収束演算の命令数は積和演算fmaが5*2命令+乗算fmuが5*2命令となる。したがって、命令数の合計は積和演算命令数が24である。したがって、合計クロックサイクルは24*1=24となる。誤差は19.53である。
(3)初期値推定とNewton法を4回転の演算は、初期値推定の命令数は前述と同じ4であり、収束演算の命令数は積和演算fmaが2*4命令+乗算fmuが6*4命令となる。したがって、命令数の合計は積和演算命令数が36である。したがって、合計クロックサイクルは36*1=36となる。誤差は0.95である。
(4)初期値推定と3次Householder法と4次Householder法の演算は、初期値推定の命令数は前述と同じ4であり、収束演算の命令数は積和演算fmaが5+5命令+乗算fmuが5+7命令となる。したがって、命令数の合計は積和演算命令数が26である。したがって、合計クロックサイクルは36*1=36となる。誤差は0.87である。
図37は、LRN層における特殊演算を含む演算時間とメモリ転送時間の比較及び近似計算の選択の具体例を示すフローチャート図である。まず、LRN層の演算命令数Xma+Xsと、メモリ転送量yは、以下のとおりである(S80)。
Xma +Xs = 1,200,000,000 (積和) + 300,000,000 (特殊)
y = 300,000,000 * 4 [byte]
そして、NNプロセッサの性能は、以下のとおりである(S81)。
積和演算性能: nma = 2,000 GFLOPS, 特殊演算性能: ns = 125 GFLOPS
メモリ転送性能 (メモリ帯域) : m = 200 GB/s
そこで、LRN層の演算を非特殊演算と特殊演算の一部を積和演算器で実行する時間tcmaと特殊演算の残りを特殊演算器で実行する時間tcsは、特殊演算サイクル数の合計が68サイクルだったので、図37に示すとおり、tcma + tcs= 163,950μsecとなる。
一方、メモリ転送時間tmは、メモリ転送量yが入力bottom、変数scale_data、出力topそれぞれ300,000,000 * 4 [byte]故、図37に示すとおり、tm = 18,000μsecとなる。その結果、tcma + tcs ≦ tmとならず、近似計算による積和演算器による実行を選択する(S82)。
近似計算の選択処理では、最初に誤差が最小のテーブル最下段の近似法により積和演算器で実行する場合の演算時間tcma+tcaを計算すると、図37に示されるとおり、tcma + tca = 3,900μsecとなる。その結果、tcma + tca ≦ tmを満たし、最下段の近似法が選択される。
[バッチ正規化層の具体例]
図38は、バッチ正規化層の特殊演算(-1/2乗)と近似計算のテーブルを示す図である。図38と近似計算が異なる。減算fsubは浮動小数点演算器の命令である。特殊演算器による演算と、4種類の近似計算に対する、初期値推定の命令数、収束演算の命令数、合計命令数、合計命令数に必要なクロックサイクル数、誤差は、図38に示されるとおりであり、それぞれの説明は省略する。
図39は、バッチ正規化層における特殊演算を含む演算時間とメモリ転送時間の比較及び近似計算の選択の具体例を示すフローチャート図である。バッチ正規化層の演算命令数Xma+Xsと、メモリ転送量yは、S90に示されるとおりである。また、NNプロセッサの性能S91は、図37と同じである。
そこで、バッチ正規化層の演算を非特殊演算を積和演算器で実行する時間tcmaと特殊演算を特殊演算器で実行する時間tcsは、特殊演算サイクル数の合計が45サイクルだったので、図39に示すとおり、tcma + tcs = 350μsecとなる。
一方、メモリ転送時間tmは、図示されるとおり、tm = 6,000μsec(>350)となり、特殊演算器で実行が選択される。なお、メモリ転送時間tmのbottomでメモリ転送量y=100,000,000*4を3倍したのは、入力bottom、中間データscale_data、出力topの3種類のデータが存在するからである。
30:ホストマシン
40:ニューラルネットワーク(NN)実行マシン
43:NNプロセッサ
MA_0~MA_n-1:積和演算器
SP_0~SP_m-1:特殊演算器
SP_E:特殊演算エレメント
tcma :積和演算器の演算時間
tca :特殊演算器の演算時間
tcs :近似計算による積和演算器の演算時間
tm :メモリ転送時間

Claims (9)

  1. メモリと、
    前記メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサとを有し、
    前記プロセッサは、
    複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
    前記第2の演算時間が前記メモリ転送時間以下でない場合、
    前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、情報処理装置。
  2. 前記第1の演算を前記第1の方法で実行することは、
    前記第1の方法の近似計算が複数有り、
    前記第1の演算時間が前記メモリ転送時間以下である前記近似計算のうち、前記近似計算の誤差が最小の近似計算で前記第1の演算を前記第1の方法で実行する、請求項1に記載の情報処理装置。
  3. 前記プロセッサは、
    前記第2の演算時間が前記メモリ転送時間以下か否か判定し、前記判定が真の場合、前記第1の演算を前記第2の方法で実行すると決定し、前記判定が偽の場合、前記第1の演算時間が前記メモリ転送時間以下を満たす複数の近似計算のうち、前記近似計算の誤差が最小の近似計算を選択し、前記選択した近似計算で前記第1の演算を前記第1の方法で実行する、特殊演算実行方法の決定を実行する、請求項1に記載の情報処理装置。
  4. 前記プロセッサは、
    前記ニューラルネットワークの学習工程において、
    (1)初回の学習工程で、前記特殊演算を前記第1の方法か第2の方法かを決定し、前記決定した第1の方法または第2の方法で前記第1の演算を実行し、
    (2)前記初回後の繰り返し学習工程で、前記初回の学習工程で決定した第1の方法または第2の方法で前記第1の演算を実行する、請求項3に記載の情報処理装置。
  5. 前記第2の演算時間は、前記第1の演算に含まれる前記特殊演算以外の非特殊演算を実行するための前記第1の演算器の命令実行回数に要する非特殊演算時間と前記第1の演算に含まれる前記特殊演算を実行するための前記第2の演算器の命令実行回数に要する特殊演算時間の和であり、
    前記第1の演算時間は、前記第1の演算に含まれる前記特殊演算以外の非特殊演算を実行するための前記第1の演算器の命令実行回数に要する非特殊演算時間と、前記第1の演算に含まれる前記特殊演算の近似計算を実行するための前記第1の演算器の命令実行回数に要する近似計算時間の和である、請求項1に記載の情報処理装置。
  6. 前記第1及び第2の演算時間は、前記命令実行回数に演算器が1つの命令を実行するために要する平均クロックサイクル数を乗じ、演算を実行する複数の演算器の単位時間当たりの総クロックサイクル数で除算した値である、請求項5に記載の情報処理装置。
  7. 前記第1の演算器の数は、前記第2の演算器の数より多い、請求項1に記載の情報処理装置。
  8. メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサにニューラルネットワークの処理を実行させるニューラルネットワークプログラムであって、
    前記処理は、
    複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
    前記第2の演算時間が前記メモリ転送時間以下でない場合、
    前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、プロセッサが実行可能なニューラルネットワークプログラム。
  9. メモリと接続され、少なくとも乗算及び加算、論理演算、積和演算を実行可能な第1の演算器と、前記乗算及び加算、論理演算、積和演算と異なる特殊演算を実行可能な第2の演算器と、レジスタとを有するプロセッサが、
    複数の層を有するニューラルネットワーク内の前記特殊演算を含む第1の演算を実行する第1の層の前記第1の演算を、前記第1の演算の特殊演算を第2の演算器で計算する第2の方法で実行した時の、前記第1の演算に要する第2の演算時間が、前記第1の演算のために行われる前記メモリと前記レジスタ間のメモリ転送に要するメモリ転送時間以下の場合、前記第1の演算を前記第2の方法で実行し、
    前記第2の演算時間が前記メモリ転送時間以下でない場合、
    前記第1の演算を、前記第1の演算の特殊演算を前記第1の演算器で近似計算する第1の方法で実行した時の、前記第1の演算に要する第1の演算時間が、前記メモリ転送時間以下の場合、前記第1の演算を前記第1の方法で実行する、ニューラルネットワークの処理方法。
JP2018239640A 2018-12-21 2018-12-21 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 Active JP7174243B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018239640A JP7174243B2 (ja) 2018-12-21 2018-12-21 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
EP19212664.7A EP3671572A1 (en) 2018-12-21 2019-11-29 Information processing apparatus, neural network program, and processing method for neural network
US16/709,962 US11475284B2 (en) 2018-12-21 2019-12-11 Information processing apparatus, neural network program, and processing method for neural network
CN201911319384.2A CN111353578A (zh) 2018-12-21 2019-12-19 信息处理装置、神经网络程序和用于神经网络的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018239640A JP7174243B2 (ja) 2018-12-21 2018-12-21 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法

Publications (2)

Publication Number Publication Date
JP2020101991A JP2020101991A (ja) 2020-07-02
JP7174243B2 true JP7174243B2 (ja) 2022-11-17

Family

ID=68762456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018239640A Active JP7174243B2 (ja) 2018-12-21 2018-12-21 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法

Country Status (4)

Country Link
US (1) US11475284B2 (ja)
EP (1) EP3671572A1 (ja)
JP (1) JP7174243B2 (ja)
CN (1) CN111353578A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7137067B2 (ja) * 2018-10-25 2022-09-14 富士通株式会社 演算処理装置、学習プログラム及び学習方法
US20200210840A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Adjusting precision and topology parameters for neural network training based on a performance metric
CN114077482B (zh) * 2020-08-18 2024-04-16 中国科学院沈阳自动化研究所 一种工业智能制造边缘智能计算优化方法
CN112051980B (zh) * 2020-10-13 2022-06-21 浙江大学 一种基于牛顿迭代法的非线性激活函数计算装置
CN112633212B (zh) * 2020-12-29 2022-10-04 长沙湘丰智能装备股份有限公司 一种基于计算机视觉的茶叶嫩芽等级的识别和分类方法
JP2022121055A (ja) 2021-02-08 2022-08-19 キオクシア株式会社 演算装置及び演算回路
CN114139693B (zh) * 2021-12-03 2024-08-13 安谋科技(中国)有限公司 神经网络模型的数据处理方法、介质和电子设备
CN116481128B (zh) * 2023-05-10 2023-11-24 佛山市清源科技有限公司 空气净化系统、空气净化方法及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275626A (ja) 2004-03-23 2005-10-06 Fujitsu Ltd 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置
CN108734281A (zh) 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 处理装置、处理方法、芯片及电子装置
JP2018190045A (ja) 2017-04-28 2018-11-29 日立オートモティブシステムズ株式会社 車両電子制御装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215021A (ja) * 1993-01-12 1994-08-05 Fujitsu Ltd 関数近似計算方法
JP3096387B2 (ja) * 1994-01-28 2000-10-10 三菱電機株式会社 数値演算処理装置
JP5199212B2 (ja) * 2009-09-29 2013-05-15 富士通株式会社 プログラム生成方法およびシステムの動作方法
US10235232B2 (en) * 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
EP3035249B1 (en) * 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
JP6802480B2 (ja) * 2017-01-27 2020-12-16 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
IT201700008949A1 (it) * 2017-01-27 2018-07-27 St Microelectronics Srl Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
CN107622305A (zh) * 2017-08-24 2018-01-23 中国科学院计算技术研究所 用于神经网络的处理器和处理方法
CN107862374B (zh) * 2017-10-30 2020-07-31 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
US10698766B2 (en) * 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005275626A (ja) 2004-03-23 2005-10-06 Fujitsu Ltd 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置
CN108734281A (zh) 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 处理装置、处理方法、芯片及电子装置
JP2018190045A (ja) 2017-04-28 2018-11-29 日立オートモティブシステムズ株式会社 車両電子制御装置

Also Published As

Publication number Publication date
US20200202201A1 (en) 2020-06-25
JP2020101991A (ja) 2020-07-02
EP3671572A1 (en) 2020-06-24
US11475284B2 (en) 2022-10-18
CN111353578A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
JP7174243B2 (ja) 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
JP6528893B1 (ja) 学習プログラム、学習方法、情報処理装置
WO2019168084A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
CN111353579A (zh) 利用反向传播为深度神经网络选择量化参数的方法和系统
US10579334B2 (en) Block floating point computations using shared exponents
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US20210097397A1 (en) Information processing apparatus and information processing method
KR20200121497A (ko) 가중치 신경망의 신경망 연산 방법 및 장치
US11551087B2 (en) Information processor, information processing method, and storage medium
WO2021245370A1 (en) Modulo operation unit
JP2020067897A (ja) 演算処理装置、学習プログラム及び学習方法
CN110659014B (zh) 乘法器及神经网络计算平台
JP2021111081A (ja) 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法
JP2020190901A (ja) 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
TW201935286A (zh) 電路規劃結果產生方法與系統
Evdokimov et al. Adaptive finite ring neural network
US20240046098A1 (en) Computer implemented method for transforming a pre trained neural network and a device therefor
Alijani et al. Fractional Concepts in Neural Networks: Enhancing Activation and Loss Functions
WO2020194032A1 (en) Accelerating neuron computations in artificial neural networks by skipping bits
JP7310910B2 (ja) 情報処理回路および情報処理回路の設計方法
JP7364026B2 (ja) 情報処理回路
JP2023042056A (ja) 演算処理装置および演算処理方法
US20240143985A1 (en) Identifying one or more quantisation parameters for quantising values to be processed by a neural network
US20210334635A1 (en) Neural network accelerator configured to perform operation on logarithm domain
Olegovich et al. Hardware Implementation of Classical and Bipolar Morphological Models for Convolutional Neural Network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220926

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

R150 Certificate of patent or registration of utility model

Ref document number: 7174243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150