IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特開2022-75307演算デバイス、計算機システム、及び演算方法
<>
  • 特開-演算デバイス、計算機システム、及び演算方法 図1
  • 特開-演算デバイス、計算機システム、及び演算方法 図2
  • 特開-演算デバイス、計算機システム、及び演算方法 図3
  • 特開-演算デバイス、計算機システム、及び演算方法 図4
  • 特開-演算デバイス、計算機システム、及び演算方法 図5
  • 特開-演算デバイス、計算機システム、及び演算方法 図6
  • 特開-演算デバイス、計算機システム、及び演算方法 図7
  • 特開-演算デバイス、計算機システム、及び演算方法 図8
  • 特開-演算デバイス、計算機システム、及び演算方法 図9
  • 特開-演算デバイス、計算機システム、及び演算方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022075307
(43)【公開日】2022-05-18
(54)【発明の名称】演算デバイス、計算機システム、及び演算方法
(51)【国際特許分類】
   G06N 3/10 20060101AFI20220511BHJP
【FI】
G06N3/10
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2020186016
(22)【出願日】2020-11-06
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】中田 憲吾
(72)【発明者】
【氏名】宮下 大輔
(72)【発明者】
【氏名】出口 淳
(57)【要約】
【課題】少ない推論時間で高い認識精度を実現することができる演算デバイス、計算機システム、及び演算方法を提供する。
【解決手段】重みを用いてニューラルネットワークに関する演算を実行する演算デバイスにおいて、前記ニューラルネットワークにおける積和演算の回数と前記積和演算ごとの重みのビット数との積を、量子化が適用されるグループ分だけ足し合わせた結果を用いて、前記ニューラルネットワークによる推論時間における計算量を計算し、前記計算した計算量に基づいて、前記ニューラルネットワークによる認識誤差が最小化するように前記重みの値と量子化幅を最適化するように構成された、計算部を備える。
【選択図】図4
【特許請求の範囲】
【請求項1】
重みを用いてニューラルネットワークに関する演算を実行する演算デバイスにおいて、
前記ニューラルネットワークにおける積和演算の回数と前記積和演算ごとの重みのビット数との積を、量子化が適用されるグループ分だけ足し合わせた結果を用いて、前記ニューラルネットワークによる推論時間における計算量を計算し、
前記計算した計算量に基づいて、前記ニューラルネットワークによる認識誤差が最小化するように前記重みの値と量子化幅を最適化するように構成された、計算部を備える、
演算デバイス。
【請求項2】
前記計算部は、前記重みと前記量子化幅をパラメータとして設定し、前記重みを更新して勾配が最小になる点を探索する勾配降下法に従い、前記認識誤差を最小化するように繰り返し更新することで、前記重みと前記量子化幅を最適化する、
請求項1に記載の演算デバイス。
【請求項3】
前記計算部は、認識性能に寄与しない層又はフィルタに対して、認識性能に寄与する層又はフィルタに比べて小さなビット数を割り当てることにより、推論結果に影響しない重みのビット数を減らす、
請求項1に記載の演算デバイス。
【請求項4】
前記計算部は、前記推論時間と相関がある計算コストの指標を用いた正則化手法を用いる、
請求項1に記載の演算デバイス。
【請求項5】
請求項1ないし4の何れか一項に記載の演算デバイスと、
前記演算デバイスが演算するデータを記憶するメモリデバイスと、
を備える計算機システム。
【請求項6】
重みを用いてニューラルネットワークに関する演算を実行する演算デバイスにおける演算方法であって、
前記ニューラルネットワークにおける積和演算の回数と前記積和演算ごとの重みのビット数との積を、量子化が適用されるグループ分だけ足し合わせた結果を用いて、前記ニューラルネットワークによる推論時間における計算量を計算することと、
前記計算した計算量に基づいて、前記ニューラルネットワークによる認識誤差が最小化するように前記重みの値と量子化幅を最適化することと、
を含む、
演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、演算デバイス、計算機システム、及び演算方法に関する。
【背景技術】
【0002】
例えば画像認識処理の演算において、ニューラルネットワークが広く利用されるようになってきている。例えば、ニューラルネットワークの1つである畳み込みニューラルネットワーク(CNN)を利用することで、画像認識のタスクにおいて高い認識性能を達成することできる。しかしながら、このような畳み込みニューラルネットワーク(CNN)を利用した推論では、何百万回の積和演算が実行されることになるため、処理時間や消費電力の削減が求められる。
【0003】
従来、畳み込みニューラルネットワーク(CNN)のモデルのサイズやメモリ消費量を考慮して推論にかかる処理時間や消費電力を最適化する正則化手法が検討されている。
【0004】
しかしながら、従来の最適化手法によれば、計算量やハードウェアの計算性能は考慮されていなかった。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Mixed Precision DNNs: S. Uhlich, L. Mauch, F. Cardinaux, K. Yoshiyama, J. A. Garcia, S.Tiedemann, T. Kemp, and A. Nakamura, “Mixed precision dnns: All you need is a goodparametrization,” in International Conference on Learning Representations, 2020. [Online].Available:https://openreview.net/forum?id=Hyx0slrFvH
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、少ない推論時間で高い認識精度を実現することができる演算デバイス、計算機システム、及び演算方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態の演算デバイスは、重みを用いてニューラルネットワークに関する演算を実行する演算デバイスにおいて、前記ニューラルネットワークにおける積和演算の回数と前記積和演算ごとの重みのビット数との積を、量子化が適用されるグループ分だけ足し合わせた結果を用いて、前記ニューラルネットワークによる推論時間における計算量を計算し、前記計算した計算量に基づいて、前記ニューラルネットワークによる認識誤差が最小化するように前記重みの値と量子化幅を最適化するように構成された、計算部を備える。
【図面の簡単な説明】
【0008】
図1図1は、実施形態の演算デバイスを含む計算機システムの構成の一例を示すブロック図である。
図2図2は、実施形態の計算機システムで実行されるニューラルネットワークの構成例を説明するための模式図である。
図3図3は、実施形態の演算デバイスの機能構成を示す機能ブロック図である。
図4図4は、実施形態の勾配降下法に基づく最適化処理の流れを示すフローチャートである。
図5図5は、実施形態の量子化の例を示す図である。
図6図6は、実施形態の手法及び比較例の手法の着目点の違いを示す図である。
図7図7は、実施形態の手法及び比較例の手法の効果の違いを示す図である。
図8図8は、実施形態及び比較例の手法における計算量(MACxbit)と認識精度の関係の一例を示す図である。
図9図9は、実施形態及び比較例の手法のビット数における効果の違いの一例を示す図である。
図10図10は、実施形態及び比較例の手法の重みと量子化幅を調整した後の累積のモデルサイズを例示的に示す図である。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、実施形態に係る演算デバイス、プロセッサ、及び演算方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0010】
図1は、実施形態の演算デバイスを含む計算機システム1の構成の一例を示すブロック図である。図1に示されるように、計算機システム1は、入力データを受信する。この入力データは、例えば音声データや音声データから生成されたテキストデータであっても良いし、画像データであっても良い。計算機システム1は、入力データに対して各種の処理を実行する。例えば、入力データが音声データである場合、計算機システム1は、自然言語処理を実行する。例えば、入力データが画像データである場合、計算機システム1は、画像認識処理を実行する。
【0011】
計算機システム1は、入力データに対する処理の結果に対応する信号を出力し、処理の結果を表示デバイス80に表示させることができる。表示デバイス80は、液晶ディスプレイ、又は、有機ELディスプレイなどである。表示デバイス80は、ケーブル又は無線通信を介して、計算機システム1に電気的に接続される。
【0012】
計算機システム1は、GPU(Graphic Processing Unit)10、CPU(Central Processing Unit)20、及び、メモリ70を少なくとも含む。GPU10、CPU20、及び、メモリ70は、内部バスにより通信可能に接続されている。
【0013】
本実施形態において、GPU10は、後述のニューラルネットワーク100を用いた推論処理に関する演算を実行する。GPU10は、近似的に類似度計算を行うプロセッサである。GPU10は、メモリ70をワークエリアとして用いながら、入力データに対する処理を実行する。
【0014】
CPU20は、計算機システム1の全体の動作を制御するプロセッサである。CPU20は、GPU10及びメモリ70の制御のための各種の処理を実行する。CPU20は、メモリ70をワークエリアとして用いながら、GPU10で実行されるニューラルネットワーク100を用いた演算を制御する。
【0015】
メモリ70は、メモリデバイスとして機能する。メモリ70は、外部から入力された入力データ、GPU10によって生成されたデータ、CPU20によって生成されたデータ、及び、ニューラルネットワークのパラメータを記憶する。なお、GPU10及びCPU20によって生成されるデータは、各種の計算の中間結果及び最終結果を含み得る。例えば、メモリ70は、DRAM、SRAM、MRAM、NAND型フラッシュメモリ、抵抗変化型メモリ(例えば、ReRAM、PCM(Phase Change Memory))などの中から選択される少なくとも1以上を含む。GPU10が用いる専用のメモリ(図示せず)が、GPU10に直接接続されてもよい。
【0016】
入力データは、記憶媒体99から提供されてもよい。記憶媒体99は、ケーブル又は無線通信を介して、計算機システム1に電気的に接続される。記憶媒体99は、メモリデバイスとして機能するものであって、メモリカード、USBメモリ、SSD、HDD、及び、光記憶媒体などのいずれでもよい。
【0017】
図2は、実施形態の計算機システム1で実行されるニューラルネットワーク100の構成例を説明するための模式図である。
【0018】
計算機システム1において、ニューラルネットワーク100は、機械学習装置として用いられる。ここで、機械学習とは、コンピュータが大量のデータを学習することで、分類や予測などのタスクを遂行するアルゴリズムやモデルを構築する技術である。ニューラルネットワーク100は、例えば、畳み込みニューラルネットワーク(CNN)である。ニューラルネットワーク100は、多層パーセプトロン(MLP)、又は注意機構を備えたニューラルネットワーク(例えばTransformer)などであってもよい。
【0019】
ニューラルネットワーク100は、如何なるデータの推論を行う機械学習装置であってもよい。例えば、ニューラルネットワーク100は、音声データを入力として、当該音声データの分類を出力する機械学習装置であってもよいし、音声データのノイズ除去や音声認識を実現する機械学習装置であってもよいし、画像データの画像認識を実現する機械学習装置であってもよい。なお、ニューラルネットワーク100は、機械学習モデルとして構成されてもよい。
【0020】
ニューラルネットワーク100は、入力層101、隠れ層(中間層ともよばれる)102、及び出力層(全結合層ともよばれる)103を有する。
【0021】
入力層101は、計算機システム1の外部から受信した入力データ(又はその一部のデータ)を受信する。入力層101は、複数の演算デバイス(ニューロン又はニューロン回路ともよばれる)118を有する。なお、演算デバイス118は専用の装置又は回路であってもよいし、プロセッサがプログラムを実行することでその処理が実現されても良い。これ以降も同様の構成を演算デバイスとして説明する。入力層101において、各演算デバイス118は、入力データに任意の処理(例えば線形変換や、補助データの追加など)を施して変換し、変換したデータを、隠れ層102に送信する。
【0022】
隠れ層102(102A,102B)は、入力層101からのデータに対して、各種の計算処理を実行する。
【0023】
隠れ層102は、複数の演算デバイス110(110A,110B)を有する。隠れ層102において、各演算デバイス110は、供給されたデータ(以下では、区別化のため、デバイス入力データともよばれる)に対して、所定のパラメータ(例えば、重み)を用いた積和演算処理を実行する。例えば、各演算デバイス110は、供給されたデータに対して、互いに異なるパラメータを用いて積和演算処理を実行する。
【0024】
隠れ層102は、階層化されてもよい。この場合において、隠れ層102は、少なくとも2つの層(第1の隠れ層102A及び第2の隠れ層102B)を含む。第1の隠れ層102Aは、複数の演算デバイス110Aを有し、第2の隠れ層102Bは、複数の演算デバイス110Bを有する。
【0025】
第1の隠れ層102Aの各演算デバイス110Aは、入力層101の処理結果であるデバイス入力データに対して、所定の計算処理を実行する。各演算デバイス110Aは、計算結果を、第2の隠れ層102Bの各演算デバイス110Bに送信する。第2の隠れ層102Bの各演算デバイス110Bは、各演算デバイス110Aの計算結果であるデバイス入力データに対して、所定の計算処理を実行する。各演算デバイス110Bは、計算結果を、出力層103に送信する。
【0026】
このように、隠れ層102が階層構造を有する場合、ニューラルネットワーク100による推論(inference)、及び学習(learning/training)の能力が、向上され得る。なお、隠れ層102の層の数は、3層以上でもよいし、1層でもよい。1つの隠れ層は、積和演算処理、プーリング処理、正規化処理、及び活性化処理などの処理の任意の組み合わせを含むように構成されてもよい。
【0027】
出力層103は、隠れ層102の各演算デバイス110によって実行された各種の計算処理の結果を受信し、各種の処理を実行する。
【0028】
出力層103は、複数の演算デバイス119を有する。各演算デバイス119は、複数の演算デバイス110Bの計算結果であるデバイス入力データに対して、所定の処理を実行する。これによって、隠れ層102による計算結果に基づいて、ニューラルネットワーク100に供給された入力データに関する認識や分類などの推論を実行できる。各演算デバイス119は、得られた処理結果(例えば分類結果)を記憶及び出力できる。出力層103は、隠れ層102の計算結果をニューラルネットワーク100の外部へ出力するためのバッファ及びインターフェイスとしても機能する。
【0029】
なお、ニューラルネットワーク100は、GPU10の外部に設けられてもよい。すなわち、ニューラルネットワーク100は、GPU10のみならず、計算機システム1内のCPU20、メモリ70、記憶媒体99などを利用して実現されるものであってもよい。
【0030】
本実施形態の計算機システム1は、ニューラルネットワーク100によって、例えば、音声認識や画像認識における推論のための各種の計算処理、及び、機械学習(例えば、ディープラーニング)のための各種の計算処理を、実行する。
【0031】
例えば、計算機システム1において、画像データに対するニューラルネットワーク100による各種の計算処理に基づいて、画像データが何であるかを高い精度で認識及び分類したり、画像データが高い精度で認識/分類されるように学習したりすることが可能となる。
【0032】
図3は、実施形態の演算デバイス110の機能構成を示す機能ブロック図である。図3に示すように、演算デバイス110は、計算部1101を備える。計算部1101は、ニューラルネットワーク100における積和演算の回数と重みのビット数の積を、当該ニューラルネットワーク100が適用されるハードウェアの仕様に合わせて設定されるグループ分だけ足し合わせる。ここで、ニューラルネットワークの量子化とは、通常、浮動小数点数で表現される重みなどのパラメータを、数ビット(1~8bit)で表現する手法である。また、グループとは、量子化が適用される単位である。これにより、計算部1101は、量子化されたグループを含むニューラルネットワークにおける推論時間を計算する。以下において、詳述する。
【0033】
量子化されたグループを含む畳み込みニューラルネットワーク(CNN)の推論時間は、計算コストに関連のある以下の三つの要因で決まるものとなっている。ここで、計算コストとは、推論にかかる処理時間や消費電力を示すものである。
(1)畳み込みニューラルネットワーク(CNN)の積和演算の回数
(2)ニューラルネットワークが適用されるハードウェアの計算速度のビット数依存性
(3)同じビット精度で処理するグループの単位
【0034】
畳み込みニューラルネットワーク(CNN)は計算強度が高いため、メモリアクセスの時間やバンド幅よりもむしろ計算時間やハードウェアの計算速度がボトルネックとなる。そのため、推論時間を短縮するためには、モデルサイズやメモリ消費量ではなく計算量(例えば、積和演算の回数など)やハードウェアの計算速度を考慮すべきである。したがって、要因(1)に関しては、畳み込みニューラルネットワーク(CNN)の積和演算の回数が支配的となる。
【0035】
要因(2)に関しては、下記の文献に示されるようなハードウェアでは、計算速度の逆数すなわち計算時間とビット数の間には、比例の関係が成り立つことが知られている。
【0036】
"FPGA-based CNN Processor with Filter-Wise-Optimized Bit Precision", A. Maki, D. Miyashita, K. Nakata, F. Tachibana, T. Suzuki, and J. Deguchi, in IEEE Asian Solid-State Circuits Conference 2018.
【0037】
要因(3)に関しては、ハードウェアの仕様に依存する。例えば、ハードウェアによって、GPUのカーネルの単位で同じビット精度で計算したり、畳み込みニューラルネットワーク(CNN)のフィルタの単位で同じビット精度で計算したりする。
【0038】
以上のことから、量子化されたグループを含む畳み込みニューラルネットワーク(CNN)の推論時間は、積和演算の回数と重みのビット数の積を、処理するグループ分だけ足し合わせることで見積もることができる。
【0039】
本実施形態においては、複数のビット数(例えば、1~8ビット)を混ぜて演算できる専用ハードウェアにおいて、
Σ(積和演算の回数)×(重みのビット数)
という計算量で推論時間が決まるものとする。
【0040】
このような重みにかかる複数のビット数(例えば、1~8ビット)を混ぜて演算できる専用ハードウェアでは、認識精度を維持したまま、推論時間を決める上述の計算量を減らしたい、という要望がある。
【0041】
そこで、本実施形態においては、推論時間と相関がある計算コストの指標を用いた正則化手法を提案する。具体的には、見積もりの推論時間を誤差関数に加算し、推論時間と認識精度の両方を考慮しながら重みと量子化幅を最適化する。これにより、少ない推論時間で高い認識精度を実現するビット数の割り当てを得ることができる。以下において詳述する。
【0042】
以下では、重みを量子化する手順を説明する。また、推論時間を計算するための指標(計算量)をMACxbitと呼び、以下のように定義する。
【0043】
【数1】
【0044】
ここで、指数gは量子化が適用されるグループを表す。ニューラルネットワークが適用されるハードウェアの仕様に合わせて指数gを適切に設定することで、上記式によりニューラルネットワークが適用されるハードウェアにおける計算量を表現することができる。また、bは、量子化された重みを表現するために必要なビット数である。
【0045】
本実施形態においては、認識精度に寄与しない層やフィルタに小さなビット数を割り当てることにより、量子化で推論結果に影響しない重みのビット数を減らし、認識精度を維持したまま計算の量を減らすようにする。最適なビット数の割り当てを探し出す手法としては、勾配降下法に基づく最適化手法が挙げられる。勾配降下法とは、重みを少しずつ更新して勾配が最小になる点を探索するアルゴリズムである。勾配降下法ベースの手法では、重みの学習と同様に、量子化に使う量化子幅のようなパラメータを変数に設定し、勾配降下法に従い、誤差を減らすように重みと量子化幅を最適化する。そして、最適化された重みと量子化幅の値に基づき、最適なビット数の割り当てを得ることができる。
【0046】
ここで、図4は実施形態の勾配降下法に基づく最適化処理の流れを示すフローチャートである。なお、本実施形態においては、複数のビット数(例えば、1~8ビット)を混ぜた演算をサポートする専用ハードウェアを使用する。専用ハードウェアの仕様に合わせて重みのビット数は1~8ビットで可変に設定し、アクティベーションは8ビットに固定する。
【0047】
図4に示すように、はじめに、計算部1101は、対象のデータセット及びネットワークを設定し重みWを32ビットで学習する(S1)。
【0048】
次いで、計算部1101は、学習後の重みの値の分布から量子化幅を初期化する(S2)。より詳細には、例えば、最適化前の初期ビット幅を8bitとし、重みの最大値と最小値の差を2の8乗で割った値に量子化幅を初期化する。
【0049】
次に、計算部1101は、実施した更新回数iが予め設定した更新回数を超えていないかを判定する(S3)。
【0050】
計算部1101は、実施した更新回数iが予め設定した更新回数を超えていない場合(S3のYes)、現在の量子化幅で重みを量子化して順伝播により再び学習し、lossを計算する(S4)。
【0051】
ここで、本実施形態における重みの量子化の手順を、図5を用いて説明する。図5は量子化の例を示す図である。図5に示す量子化の例においては、量子化幅Δ=0.1としている。図5に示す量子化の例によれば、32ビットから4ビットに重みWのビット数が削減されている。本実施形態においては、複数のビット数(例えば、1~8ビット)を混ぜて演算できる専用ハードウェアを使用して推論を行うことを想定する。通常、学習時の順伝播の計算では32ビットの重みが使用されるが、本実施形態の専用ハードウェア(1~8ビットの計算に対応)の仕様に合わせて学習時の段階で重みのビット数を1~8ビットに量子化しておく。
【0052】
重みWを量子化幅Δで量子化すると、量子化された重みWintは、下記式(1)で表される。
int=round(W/Δ) ・・・(1)
ここでroundは入力引数の値を最も近い整数値に丸める関数である。また、順伝搬の計算では、Wintを量子化から戻したWdqは、下記式(2)で表される。
dq=Wint×Δ ・・・(2)
【0053】
このとき量子化された重みWintを表現するために必要なビット数bは、下記式(3)で表される。
【0054】
【数2】
【0055】
ここで、指数gは、量子化を適用するグループを示し、ニューラルネットワークが適用されるハードウェアの仕様に合わせて適切に設定する。例えば、前述した文献のハードウェアをニューラルネットワークが適用されるターゲットにする場合、指数gはフィルタを示す。
【0056】
勾配降下法ベースの手法では、重みWと量子化幅Δをパラメータとして設定し、勾配降下法に従い、誤差を最小化するように重みWと量子化幅Δを繰り返し更新して最適化する。そして、式(3)から最適化された重みWのビット数の割り当てが得られることになる。
【0057】
図4に戻り、次に、計算部1101は、推論時間を計算するための指標(計算量)であるMACxbitを測定する(S5)。より詳細には、計算部1101は、1層目のMACxbitから最終層のMACxbitを計算して総和をとる。
【0058】
続いて、計算部1101は、S5で測定したMACxbitが閾値(target)と比べて小さいかを判定する(S6)。測定したMACxbitが閾値(target)と比べて小さい場合(S6のYes)、計算部1101は、S4で計算したlossを用いて誤差逆伝播を実行することにより、重みWと量子化幅Δを更新し(S7)、実施した更新回数iを1インクリメントする(S8)。そして処理は(S3)へ戻る。
【0059】
ここで、S7の処理について詳述する。通常、学習する際には誤差逆伝播法を使い、誤差Lossを減らすために、重みWを調整する(最適化する)ための情報(δLoss/δW)を計算し、当該情報(δLoss/δW)の値を使って下記式(4)を計算することで、誤差を減らすように重みWを調整することができる。
【0060】
【数3】
【0061】
なお、情報(δLoss/δW)の計算手順は、下記の通りである。
【0062】
【数4】
【0063】
同様に、量子化幅Δに関しても下記式より誤差逆伝搬法で(δLoss/δΔ)を求めた後、下記式(5)を計算することで、誤差を減らすように量子化幅Δの調整が可能となる。
【0064】
【数5】
【0065】
【数6】
【0066】
一方、測定したMACxbitが閾値(target)と比べて大きい場合(S6のNo)、計算部1101は、正則化項を計算しlossに加算してloss’とする(S9)。そして、計算部1101は、S9で計算したloss’を用いて誤差逆伝播を実行することにより、重みWと量子化幅Δを更新する(S7)。
【0067】
比較例の正則化項は、下記式(6)のように、モデルサイズ(重みの要素数にビット数をかけたもの)をペナルティとして誤差に加えて誤差が減るように学習していた。しかしながら、モデルサイズが減れば計算量(MACxbit)も減るが、最適解ではなかった。
【0068】
【数7】
【0069】
一方、本実施の正則化項は、下記式(7)のように、出力画像の大きさ(Oh,l,Ow,l)を考慮したものであって、計算量(MACxbit)をペナルティとして加えるようにしたものである。
【0070】
【数8】
【0071】
計算部1101は、S4~S9の処理を、実施した更新回数iが予め設定した更新回数を超えるまで(S3のNo)、繰り返す。計算部1101は、実施した更新回数iが予め設定した更新回数を超えた場合(S3のNo)、処理を終了する。
【0072】
ここで、図6は実施形態及び比較例の手法の着目点の違いを示す図である。図6(a)はResNet-18というニューラルネットワークの重みの要素数を層ごとに測定したものであり、図6(b)は積和演算回数を層ごとに測定したものである。重みの要素数にビット数をかけたものがModel size、積和演算回数にビット数をかけたものが本実施形態に示す計算量(MACxbit)を表す。
【0073】
図6(a)に示すように、重みの要素数を層ごとに測定した場合、後半の層ほど重みの要素数が大きくなっている。そのため、比較例の手法では、Model sizeを小さくするために後半の層のビット数が小さくなるように重みWと量子化幅Δが調整される。その結果、このResNet-18というネットワークでは、後半の層の計算量(MACxbit)も小さくなる。一方、図6(b)に示すように、積和演算回数を層ごとに測定した場合、前段の層と後段の層で積和演算回数の差が小さい(均一)ことが分かる。そのため、実施形態の手法では、計算量(MACxbit)を小さくするために前段の層と後段の層のビット数が均一に小さくなるように重みWと量子化幅Δが調整される。そしてResNet-18というネットワークでは結果的に、計算量(MACxbit)も均一になる。
【0074】
ここで、図7は実施形態及び比較例の手法の効果を示す図である。図7に示す例は、重みWと量子化幅Δを調整した後、計算量(MACxbit)の値を層ごとに測定したものである。図7に示すように、最適化後の結果では、前段の層と後段の層で計算量(MACxbit)の差が小さい(均一)ことが分かる。一方、比較例の手法においては、前段の層は計算量(MACxbit)が大きく、後段の層は計算量(MACxbit)が小さくなっている。
【0075】
ここで、図8は実施形態及び比較例の手法における計算量(MACxbit)と認識精度の関係の一例を示す図である。図8に示すように、同等の計算量に対して、本実施形態の手法の方が、比較例の手法よりも、認識精度が高いことがわかる。図8に示す例では、特に、計算量(MACxbit)の合計が6.5×10(平均3.6ビット相当)付近で、顕著である。
【0076】
ここで、図9は実施形態及び比較例の手法のビット数における効果の違いの一例を示す図である。図9に示す例は、計算量(MACxbit)の合計が6.5×10(平均3.6ビット相当)になるように、重みWと量子化幅Δを調整した後、平均ビット数を層ごとに測定したものである。図9に示すように、本実施形態の手法では、全体的に3.6ビット前後のビット数(3~5ビット)であることが分かる。一方、比較例の手法では、前段の層はビット数が大きく(4~5ビット)、後段の層は小さい(2~3ビット)であることが分かる。
【0077】
図10は、実施形態及び比較例の手法の重みWと量子化幅Δを調整した後の累積のモデルサイズを例示的に示す図である。図10に示す例は、計算量(MACxbit)の合計が6.5×10(平均3.6ビット相当)になるように、重みWと量子化幅Δを調整した後、モデルサイズを1層目から順次加算(累積和)した累積のモデルサイズを示したものである。本実施形態の手法によれば、後半の層ほどモデルサイズへの寄与(伸び)が大きい。一方、比較例の手法によれば、図9に示す比較例の手法の結果のように後半の層で、本実施形態の手法に対して1ビット小さくなるため、モデルサイズの合計も小さくなり、認識精度の劣化につながることが分かる。
【0078】
このように、本実施形態によれば、計算量やハードウェアの計算性能を考慮し、少ない推論時間で高い認識精度を実現することができる。
【0079】
なお、本実施形態の演算デバイス、本実施形態の演算デバイスを含む計算機システム、及び、本実施形態の演算方法を記憶する記憶媒体は、スマートフォン、携帯電話、パーソナルコンピュータ、デジタルカメラ、車載カメラ、監視カメラ、セキュリティシステム、AI機器、システムのライブラリ(データベース)、及び、人工衛星などに適用され得る。
【0080】
上述の説明において、本実施形態の演算デバイス、計算機システム、及び演算方法が、人間の言語(自然言語)を機械で処理する自然言語処理にかかる計算機システム1におけるニューラルネットワークに適用された例が示されている。但し、本実施形態の演算デバイス及び演算方法は、ニューラルネットワークを含む様々な計算機システム、及び、ニューラルネットワークによる計算処理を実行する様々なデータ処理方法に、適用可能である。
【0081】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0082】
1 計算機システム
70 メモリデバイス
99 メモリデバイス
100 ニューラルネットワーク
110 演算デバイス
1101 計算部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10