JP2022088096A - 量子化プログラム,量子化方法および量子化装置 - Google Patents
量子化プログラム,量子化方法および量子化装置 Download PDFInfo
- Publication number
- JP2022088096A JP2022088096A JP2020200353A JP2020200353A JP2022088096A JP 2022088096 A JP2022088096 A JP 2022088096A JP 2020200353 A JP2020200353 A JP 2020200353A JP 2020200353 A JP2020200353 A JP 2020200353A JP 2022088096 A JP2022088096 A JP 2022088096A
- Authority
- JP
- Japan
- Prior art keywords
- quantization
- bit width
- confidence radius
- difference
- calculated
- 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.)
- Pending
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000010365 information processing Effects 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000013528 artificial neural network Methods 0.000 claims abstract description 24
- 230000006870 function Effects 0.000 description 42
- 238000004364 calculation method Methods 0.000 description 35
- 239000013598 vector Substances 0.000 description 22
- 230000015654 memory Effects 0.000 description 15
- 238000013135 deep learning Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】短時間で全レイヤを最適化する量子化プログラム,量子化方法および量子化装置を提供する。【解決手段】量子化対象データの量子化を行なう情報処理装置において、プロセッサは、ニューラルネットワークを構成する全てのレイヤに対して、仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、差分に基づき、全てのレイヤのスケーリング係数を計算し、全てのスケーリング係数のうち最も小さな値を用いて、信頼半径を更新する処理を実行させる。【選択図】図10
Description
本発明は、量子化プログラム,量子化方法および量子化装置に関する。
複雑化の傾向にあるニューラルネットワーク(Neural Network:NN)の実行時間を短縮する手法として量子化が知られている。
量子化においては、ニューラルネットワークに使用される重みのデータ型(例えばFP32)をよりデータ容量の小さなデータ型(INT8)に変換することで、計算時間や通信時間を削減する。
また、従来の量子化手法として、レイヤ毎に、認識率が劣化しないデータ型を自動的に設定する最適化アルゴリズムが知られている。
また、従来の量子化手法として、レイヤ毎に、認識率が劣化しないデータ型を自動的に設定する最適化アルゴリズムが知られている。
このような従来の最適化アルゴリズムにおいては、量子化対象ベクトルの量子化誤差と、信頼領域法によるアルゴリズムが決める閾値とを比較し、この比較結果に応じてビット幅を仮算出する。なお、信頼領域法においては、近似誤差によるビット幅判定の間違いを防ぐために、閾値は信頼半径以下となるようにスケールされる。
そして、仮算出されたビット幅の設定で、複数イテレーションの訓練を実行したのちに、評価関数を計算する。
そして、仮算出されたビット幅の設定で、複数イテレーションの訓練を実行したのちに、評価関数を計算する。
さらに、仮算出されたビット幅を用いて算出された損失関数が理想条件で算出された損失関数(理想損失関数)以下となるかという制約条件を満たすか否かに応じて、ビット幅と信頼半径とを更新する。
すなわち、算出された損失関数が理想損失関数以下の場合には、ビット幅を仮算出したビット幅の値を用いて更新するとともに、現在の信頼半径に定数aを乗算することで信頼半径を増加させる。なお、ここでの定数aは1よりも大きい値(a > 1)である。一方、算出された損失関数が理想損失関数よりも大きい場合には、ビット幅の値を維持して、仮算出したビット幅の値を破棄するとともに、現在の信頼半径に定数aを乗算することで信頼半径を減少させる。なお、ここでの定数aは1未満の値(a < 1)である。
量子化アルゴリズムにおいては、これらの処理を、全て量子化対象のレイヤに対して、予め規定された反復回数だけ繰り返し実行する。
量子化アルゴリズムにおいては、これらの処理を、全て量子化対象のレイヤに対して、予め規定された反復回数だけ繰り返し実行する。
このような従来の量子化手法においては、反復回数を多くすることでビット幅を確実に収束させることができる。しかしながら、反復回数を多くすることで実行時間が増大する。一方で、最適化にかけられる期間が制限される場合には、その期間内でビット幅が十分に量子化されない場合がある。量子化が十分になされない結果として、ニューラルネットワークの訓練時間も増大する。
1つの側面では、本発明は、短時間で全レイヤを最適化できるようにすることを目的とする。
1つの側面では、本発明は、短時間で全レイヤを最適化できるようにすることを目的とする。
このため、この量子化プログラムは、量子化対象データの量子化を行なう情報処理装置のプロセッサに、ニューラルネットワークを構成する全てのレイヤに対して、仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する処理を実行させる。
一実施形態によれば、短時間で全レイヤを最適化できる。
以下、図面を参照して本量子化プログラム,量子化方法および量子化装置にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)構成
図1は実施形態の一例としての情報処理装置1のハードウェア構成を例示する図である。
図1は実施形態の一例としての情報処理装置1のハードウェア構成を例示する図である。
情報処理装置1は、量子化されたニューラルネットワークを実現するコンピュータである。情報処理装置1は、図1に示すように、CPU(Central Processing Unit)10,メモリ11およびアクセラレータ12を備える。これらのCPU10,メモリ11およびアクセラレータ12は、通信バス13を介して相互に通信可能に接続されている。通信バス13は、本情報処理装置1内のデータ通信を行なう。
メモリ11は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ11のROMには、量子化処理に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ11上のソフトウェアプログラムは、CPU10に適宜読み込まれて実行される。また、メモリ11のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。メモリ11のRAMには、重み等の量子化に用いられるパラメータや各種閾値等も格納される。
アクセラレータ12は、行列演算などのニューラルネットワークの計算に必要な演算処理を実行する。
アクセラレータ12は、行列演算などのニューラルネットワークの計算に必要な演算処理を実行する。
CPU10は、種々の制御や演算を行なう処理装置(プロセッサ)であり、実装されたプログラムに基づき、情報処理装置1全体を制御する。そして、このCPU10がメモリ11等に格納された深層学習処理プログラム(図示省略)を実行することで、後述する深層学習処理部100(図2)としての機能を実現する。
また、深層学習処理プログラムは量子化プログラムを含んで構成されてもよい。CPU10がメモリ11等に格納された量子化プログラム(図示省略)を実行することで、後述する量子化処理部101(図2)としての機能を実現する。
そして、情報処理装置1のCPU10が、深層学習処理プログラム(量子化プログラム)を実行することにより、深層学習処理部100(量子化処理部101)として機能する。
なお、深層学習処理部100(量子化処理部101)としての機能を実現するためのプログラム(量子化プログラム)は、例えばフレキシブルディスク,CD(CD-ROM,CD-R,CD-RW等),DVD(DVD-ROM,DVD-RAM,DVD-R,DVD+R,DVD-RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータ(情報処理装置1)はその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
深層学習処理部100(量子化処理部101)としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ11のRAMやROM)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU10)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
図2は実施形態の一例としての情報処理装置1の機能構成を例示する図である。
情報処理装置1は、図2に示すように、深層学習処理部100としての機能を備える。深層学習処理部100は、ニューラルネットワークにおける深層学習を実施する。
ニューラルネットワークは、ハードウェア回路であってもよいし、CPU10等によりコンピュータプログラム上で仮想的に構築される階層間を接続するソフトウェアによる仮想的なネットワークであってもよい。
図3にニューラルネットワークの概要を示す。図3に示すニューラルネットワークは、入力層と出力層との間に複数の隠れ層を含むディープニューラルネットワークである。例えば、隠れ層は、畳み込み層、プーリング層または全結合層等である。各層に示す丸印は、所定の計算をそれぞれ実行するノードを示す。
ニューラルネットワークは、例えば、画像や音声などの入力データを入力層に入力し、畳み込み層やプーリング層などで構成される隠れ層にて所定の計算を順次実行することで、演算により得られる情報を入力側から出力側に順次伝えるフォーワッド方向の処理(順伝播処理)を実行する。フォーワッド方向の処理の実行後、出力層から出力される出力データと正解データとから得られる誤差関数の値を小さくするために、フォーワッド方向の処理で使用するパラメータを決定するバックワード方向の処理(逆伝播処理)を実行する。そして、逆伝播処理の結果に基づいて重み等の変数を更新する更新処理が実行される。例えば、逆伝播処理の計算に使用される重みの更新幅を決定するアルゴリズムとして、勾配降下法が使用される。
深層学習処理部100は、量子化処理部101を備える。
量子化処理部101は、ニューラルネットワークに使用される変数を量子化する。本情報処理装置1においては、量子化処理部101は、各レイヤにおける重みベクトルのビット幅を狭めることで量子化を実現する。また、本情報処理装置1においては、信頼領域法が用いられる。
量子化処理部101は、ニューラルネットワークに使用される変数を量子化する。本情報処理装置1においては、量子化処理部101は、各レイヤにおける重みベクトルのビット幅を狭めることで量子化を実現する。また、本情報処理装置1においては、信頼領域法が用いられる。
量子化処理部101は、図2に示すように、量子化誤差算出部106,閾値生成部107,ビット幅設定部102,差分算出部103,スケーリング係数算出部104および信頼半径更新部105としての機能を備える。
量子化誤差算出部106は、ニューラルネットワークの計算に用いられるベクトルの量子化誤差を算出する。なお、量子化誤差の算出は既知の種々の手法で実現することができ、その説明は省略する。
図4は実施形態の一例としての情報処理装置1における量子化対象のベクトルを例示する図である。
本情報処理装置1においては、この図4に例示するレイヤ1の重みベクトルW1とレイヤ2の重みベクトルW2とを量子化対象とする例について示す。
図4は実施形態の一例としての情報処理装置1における量子化対象のベクトルを例示する図である。
本情報処理装置1においては、この図4に例示するレイヤ1の重みベクトルW1とレイヤ2の重みベクトルW2とを量子化対象とする例について示す。
閾値生成部107は、設定された信頼半径およびビット幅に基づいて信頼半径閾値を生成する。以下、信頼半径閾値を単に閾値という場合がある。閾値生成部107は、例えば、設定されたビット幅でlossおよび勾配を計算し、以下の導出式(1)に基づいて信頼半径閾値を算出する。
上記の式(1)において、Δwは量子化誤差である。L(w+Δw)は、ベースを量子化したモデル(例えば、INT16)の損失関数である。L(w)は、ベースモデル(例えば、INT32)の損失関数である。Lidealは、例えば、FP32で算出した量子化しない場合の損失関数(理想損失関数)である。Lmarginは、設計者が設定する、量子化されたモデルの損失関数L(w+Δw)の、理想損失関数Lideal からの、損失関数のマージン量である。
量子化した時の損失関数L(w+Δw)をテイラー展開している。また、量子化しても損失関数は理想値Lideal(FP32の損失関数)にマージンLmarginを加えた量よりも小さくなるという制約が設定されている。
上記式(1)を量子化誤差について整理することで、制約条件を満たす量子化誤差の上限=閾値が導出される。
上記式(1)を量子化誤差について整理することで、制約条件を満たす量子化誤差の上限=閾値が導出される。
閾値生成部107は、当該閾値のL2ノルム(|| Qth||2)が信頼半径以下となるように閾値を設定(スケール)する。以下、閾値を符号Qthで表す場合がある。
ビット幅設定部102は、各レイヤにおける重みベクトルのビット幅を設定する。
ビット幅設定部102は、理想条件で算出された損失関数(理想損失関数)Lidealを算出する。
ビット幅設定部102は、各レイヤにおける重みベクトルのビット幅を設定する。
ビット幅設定部102は、理想条件で算出された損失関数(理想損失関数)Lidealを算出する。
ビット幅設定部102は、ビット幅の仮算出を行なう。ビット幅設定部102は、複数のビット幅の候補のうち、量子化誤差が算出された閾値以下となる最小のビット幅を仮算出する。本情報処理装置1においては、ビット幅の候補として、[8, 16, 32]の3種類(3段階)のビット幅を用いるものとする。
そして、ビット幅設定部102は、仮算出したビット幅が制約条件を満たすか確認する。ビット幅設定部102は、制約条件として、仮算出したビット幅による損失関数(Ltmp)が理想損失関数(Lideal)以下であるか否かを判定する。
損失関数(Ltmp)が理想損失関数(Lideal)以下である場合、すなわち、制約条件が満たされている場合には、仮算出したビット幅をビット幅として設定する。また、ビット幅設定部102は、制約条件が満たされている場合には、現在の信頼半径に定数(1よりも大きい値)を乗算することで信頼半径を増加させる。
一方、損失関数(Ltmp)が理想損失関数(Lideal)よりも大きい場合、すなわち、制約条件が満たされていない場合には、ビット幅の値を維持して、仮算出したビット幅の値を破棄するとともに、現在の信頼半径に定数(1よりも小さい値)を乗算することで信頼半径を減少させる。
差分算出部103は、全ての量子化対象のベクトル(全レイヤ)について、ビット幅設定部102により仮算出されたビット幅よりも一段階狭いビット幅の量子化誤差と信頼半径閾値(Qth)との差分(Qdiff)を測定する。
図5および図6は、それぞれ実施形態の一例としての情報処理装置1の差分算出部103が算出する差分(Qdiff)を説明するための図であり、図5はレイヤ1の重みベクトルW1の量子化誤差を示す図、図6はレイヤ2の重みベクトルW2の量子化誤差を示す図である。
図5に示す例においては、仮算出したビット幅が16ビットであるものとする。また、レイヤ1の閾値を符号Qth,1で表し、レイヤ1の差分を符号Qdiff,1で表す。なお、各レイヤにおける閾値や差分を一般化し、レイヤkの閾値を符号Qth,kで表し、レイヤkの差分を符号Qdiff,kで表してもよい。
差分算出部103は、仮算出したビット幅16(16ビット)よりも1段階狭いビット幅8(8ビット)の量子化誤差(符号P1参照)と、閾値1(Qth,1)との差分Qdiff,1(符号P2参照)を測定(算出)する。
図6に示す例においては、仮算出したビット幅が32ビットであるものとする。また、レイヤ2の閾値を符号Qth,2で表し、レイヤ2の差分を符号Qdiff,2で表す。
差分算出部103は、仮算出したビット幅32(32ビット)よりも1段階狭いビット幅16(16ビット)の量子化誤差(符号P3参照)と、閾値2(Qth,2)との差分Qdiff,2を(符号P4参照)測定(算出)する。
スケーリング係数算出部104は、全ての量子化対象のベクトル(全レイヤ)について、スケーリング係数(Qscale)を算出する。
スケーリング係数(Qscale)は、差分算出部103が算出した差分(Qdiff)を、後述する信頼半径更新部105が乗算に用いるために係数化した値である。
スケーリング係数(Qscale)は、差分算出部103が算出した差分(Qdiff)を、後述する信頼半径更新部105が乗算に用いるために係数化した値である。
スケーリング係数算出部104は、全ての量子化対象のベクトルについて、仮算出されたビット幅よりも一つ狭いビット幅の量子化誤差と閾値との差分(Qdiff)、および閾値(Qth)を用いて、スケーリング係数Qscaleを計算する
スケーリング係数算出部104は、以下の式(2)を用いてスケーリング係数(Qscale)を算出する。
Qscale, k= 1 + Qdiff,k / Qth,k ・・・(2)
スケーリング係数算出部104は、以下の式(2)を用いてスケーリング係数(Qscale)を算出する。
Qscale, k= 1 + Qdiff,k / Qth,k ・・・(2)
上記式(2)においては、スケーリング係数を一般化して表しており、kはレイヤ番号を表す。式(2)は、次回の信頼半径、すなわち、閾値の上限が、今回仮算出されたビット幅よりも一段階狭いビット幅の量子化誤差と一致するスケーリング係数を示す。
上記式(2)より、レイヤ1のスケーリング係数は以下の式(3)で表される。
Qscale,1= 1 + Qdiff,1 / Qth,1 ・・・(3)
また、上記式(2)より、レイヤ2のスケーリング係数は以下の式(4)で表される。
Qscale,2= 1 + Qdiff,2 / Qth,2 ・・・(4)
なお、仮算出されたビット幅よりも一つ狭いビット幅の量子化誤差と閾値との差分(Qdiff)が無いケースについては、スケーリング係数なしとする
上記式(2)より、レイヤ1のスケーリング係数は以下の式(3)で表される。
Qscale,1= 1 + Qdiff,1 / Qth,1 ・・・(3)
また、上記式(2)より、レイヤ2のスケーリング係数は以下の式(4)で表される。
Qscale,2= 1 + Qdiff,2 / Qth,2 ・・・(4)
なお、仮算出されたビット幅よりも一つ狭いビット幅の量子化誤差と閾値との差分(Qdiff)が無いケースについては、スケーリング係数なしとする
また、スケーリング係数算出部104は、各レイヤについて求めた全てのスケーリング係数のうち最も小さな値を、最小スケーリング係数(Qscale,min)として選択する。
スケーリング係数により次回の閾値が大きくなりすぎると、“全レイヤにおいてビット幅= 8ビット”のように制約条件の成立が難しくなるビット幅の組合せが算出される可能性がある。そこで、本情報処理装置1においては、徐々にビット幅を変更するために、最も小さなスケーリング係数を選択する。
最小スケーリング係数(Qscale,min)は以下の式(5)で表される。
Qscale,min= min(Qscale,1,Qscale,2) ・・・(5)
信頼半径更新部105は、信頼半径を更新する。
信頼半径更新部105は、以下の式(6)を用いて信頼半径を更新する。
次回の信頼半径 = 今回の信頼半径 × max(定数a, Qscale,min)・・・(6)
最小スケーリング係数(Qscale,min)は以下の式(5)で表される。
Qscale,min= min(Qscale,1,Qscale,2) ・・・(5)
信頼半径更新部105は、信頼半径を更新する。
信頼半径更新部105は、以下の式(6)を用いて信頼半径を更新する。
次回の信頼半径 = 今回の信頼半径 × max(定数a, Qscale,min)・・・(6)
ここで、定数aは従来手法において信頼半径の増減に用いていた所定の定数(信頼半径更新用定数)である。信頼半径更新部105は、信頼半径更新用定数a(以下、単に定数aという場合がある)と、スケーリング係数(Qscale,min)との大きい方の値を用いて、信頼半径を更新する。
Qscale,minには上述した差分(Qdiff)が含まれることとなり、Qscale,min を選べば、次回は異なるビット幅が算出される。そのため、“定数a > Qscale,min”である場合には、定数aを選んでも次回は異なるビット幅が算出される。
図7および図8は、それぞれ実施形態の一例としての情報処理装置1における量子化誤差と閾値との関係を示す図である。図7はレイヤ1の重みベクトルW1の量子化誤差を示す図、図8はレイヤ2の重みベクトルW2の量子化誤差を示す図である。
また、図7および図8のそれぞれにおいて、上側が信頼半径の更新前の状態を示し、下側が信頼半径の更新後の状態を示す。これらの図7および図8に示す例においては、Qscale,min にQscale,2が選ばれた場合を示す。すなわち、信頼半径がQscale,2を用いて更新された例を示す。
図7に示すレイヤ1においては、仮算出したビット幅が16ビットであったが、信頼半径がQscale,2を用いて更新された後においても、次回に選択されるビット幅は16ビットで変化がない例を示す。このように、一段階下のビット幅の量子化誤差が閾値Qth,kよりも多きい場合には、ビット幅の更新は行なわれない。
一方、図8に示すレイヤ2においては、仮算出したビット幅が32ビットであったが、信頼半径がQscale,2を用いて更新された後においては、次回の信頼半径=閾値の上限は、ベクトルによる量子化誤差と一致する。これにより、次回に選択されるビット幅は16ビットとなり、前回と違うビット幅が選択されたことを示す。
(B)動作
上述の如く構成された実施形態の一例としての情報処理装置1における量子化処理を、図9および図10に示すフローチャート(ステップS1~S17)に従って説明する。図9はステップS1~S6を示し、図10はステップS7~S17を示す。
上述の如く構成された実施形態の一例としての情報処理装置1における量子化処理を、図9および図10に示すフローチャート(ステップS1~S17)に従って説明する。図9はステップS1~S6を示し、図10はステップS7~S17を示す。
図9のステップS1において、量子化処理部101が初期化処理を実行する。例えば、量子化処理部101は、ビット幅の初期値の設定や、理想損失関数(目標値)の計算を行なう。
図9のステップS2において、閾値生成部107が閾値Qthを算出する。閾値生成部107は、設定されたビット幅で閾値を算出する。この際、閾値生成部107は、閾値QthのL2ノルムが信頼半径以下となるように閾値を設定する。
図9のステップS3において、閾値生成部107は、閾値QthのL2ノルムが信頼半径以下であるかを確認し、閾値QthのL2ノルムが信頼半径以下の場合には(ステップS3のYESルート参照)、図9のステップS5に移行する。
一方、閾値QthのL2ノルムが信頼半径よりも大きい場合には(ステップS3のNOルート参照)、ステップS4に移行する。図9のステップS4において、閾値生成部107は、閾値QthのL2ノルムが信頼半径となるように閾値をスケールする。その後、処理はステップS5に移行する。
一方、閾値QthのL2ノルムが信頼半径よりも大きい場合には(ステップS3のNOルート参照)、ステップS4に移行する。図9のステップS4において、閾値生成部107は、閾値QthのL2ノルムが信頼半径となるように閾値をスケールする。その後、処理はステップS5に移行する。
ステップS5において、ビット幅設定部102がビット幅の仮算出を行なう。ビット幅設定部102は、複数のビット幅の候補のうち、量子化誤差が算出された閾値以下となる最小のビット幅を仮算出する。
図9のステップS6において、ビット幅設定部102は、仮算出したビット幅が制約条件を満たすかを確認する。ビット幅設定部102は、制約条件として、仮算出したビット幅による損失関数(Ltmp)が理想損失関数(Lideal)以下であるか否かを判定する(図10のステップS7)。
損失関数(Ltmp)が理想損失関数(Lideal)以下である場合、すなわち、制約条件が満たされている場合には(ステップS7のYESルート参照)、ビット幅設定部102は、仮算出したビット幅をビット幅として設定する(図10のステップS8)。ビット幅を設定することをビット幅を判定するといってもよい。
図10のステップS9において、差分算出部103が、全ての量子化対象のベクトル(全レイヤ)について、ビット幅設定部102により仮算出されたビット幅よりも一段階狭いビット幅の量子化誤差と閾値(Qth)との差分(Qdiff)を測定する。
図10のステップS10において、スケーリング係数算出部104が、全ての量子化対象のベクトル(全レイヤ)について、上述した式(2)を用いてスケーリング係数(Qscale)を算出する。
図10のステップS11において、スケーリング係数算出部104は、計算された全てのスケーリング係数のうち、最小のスケーリング係数(Qscale,min)を選択し、出力する。
図10のステップS12において、信頼半径更新部105が、最小スケーリング係数は信頼半径更新部105は、上述した式(5)を用いて信頼半径を更新する(増加させる)。その後、ステップS15に移行する。
一方、ステップS7における確認の結果、損失関数(Ltmp)が理想損失関数(Lideal)よりも大きい場合、すなわち、制約条件が満たされていない場合には(ステップS7のNOルート参照)、図10のステップS13に移行する。
ステップS13において、ビット幅設定部102は、ビット幅の値を維持し、仮算出したビット幅の値を破棄する。
図10のステップS14において、ビット幅設定部102は、現在の信頼半径に定数a(a は1未満の値)を乗算することで信頼半径を減少させる。
ステップS13において、ビット幅設定部102は、ビット幅の値を維持し、仮算出したビット幅の値を破棄する。
図10のステップS14において、ビット幅設定部102は、現在の信頼半径に定数a(a は1未満の値)を乗算することで信頼半径を減少させる。
量子化処理部101は、ステップS2~S14の処理(ビット幅判定処理)を、収束条件を満たすまで繰り返し行なう(図10のステップS15)。すなわち、量子化処理部101は、量子化処理部101は、ステップS2~S14の処理の実行回数(判定回数)をカウントし、判定回数が予め規定された規定回数に達したかを確認する(図10のステップS16)。
確認の結果、判定回数が規定回数に達していない場合には(ステップS16のNOルート参照)、図9のステップS2に戻る。一方、判定回数が規定回数に達した場合には(ステップS16のYESルート参照)、図10のステップS17において、量子化処理部101は、判定されたビット幅を出力する。量子化処理部101は、メモリ12や図示しない記憶装置等の所定の記憶領域に、判定したビット幅をレイヤ毎に記憶させてもよい。量子化処理部101は、レイヤ毎に決定されたビット幅でそれぞれ量子化を行なう。その後、処理を終了する。
(C)効果
このように、実施形態の一例としての情報処理装置1によれば、差分算出部103は、全ての量子化対象のベクトル(全レイヤ)について、ビット幅設定部102により仮算出されたビット幅よりも一段階狭いビット幅の量子化誤差と閾値(Qth)との差分(Qdiff)を測定する。
このように、実施形態の一例としての情報処理装置1によれば、差分算出部103は、全ての量子化対象のベクトル(全レイヤ)について、ビット幅設定部102により仮算出されたビット幅よりも一段階狭いビット幅の量子化誤差と閾値(Qth)との差分(Qdiff)を測定する。
また、スケーリング係数算出部104が、全ての量子化対象のベクトル(全レイヤ)について、スケーリング係数(Qscale)を算出し、各レイヤについて求めた全てのスケーリング係数のうち最も小さな値を、最小スケーリング係数(Qscale,min)として選択する。
そして、信頼半径更新部105が、定数aと、スケーリング係数(Qscale,min)との大きい方の値を用いて、信頼半径を更新する。これにより、ビット幅判定処理において、信頼半径の更新後の各レイヤのビット幅の組み合わせには、更新後の信頼半径(=閾値)の上限が、ベクトルによる量子化誤差算と一致し、前回と異なるビット幅が選択されることとなる。
これにより、仮算出したビット幅が制約条件を満たすかの判定が、毎回必ず異なるビット幅の組み合わせで行なわれる。すなわち、制約条件が成り立つかの判定が、同じビット幅の組み合わせで重複して行なわれることがない。
従って、重複するビット幅の組み合わせに対する判定が行なわれることがなく、効率的にビット幅判定を行なうことができる。すなわち、短期間で全レイヤを最適化することができる。
限られた最適化の期間内で、ビット幅を十分に量子化することができる。また、ビット幅が最適化されるまでのアルゴリズム適用回数が短縮され、計算時間および計算コストを削減することができる。また、従来手法に比べて量子化度合いが増え、その結果、ニューラルネットワークの訓練時間を短縮することができる。
従来の量子化手法において、ビット幅の収束に多くの反復回数が必要である理由は、一度判定が行なわれたビット幅の組み合わせでの再び制約条件成立の判定が行なわれる場合があるからである。一度判定されたビット幅の組み合わせでの再び制約条件の判定が行なわれることで、重複した作業が行なわれ、これにより量子化処理にかかる時間が増大する。
これに対して、本情報処理装置1においては、重複するビット幅の組み合わせに対する判定が行なわれることがなく、効率的にビット幅判定を行なうことができる。
図11および図12は、それぞれ実施形態の一例としての情報処理装置1により量子化を行なった結果を例示する図である。
図11および図12は、それぞれ実施形態の一例としての情報処理装置1により量子化を行なった結果を例示する図である。
図11においては、横軸にepochを示し、縦軸にValidation accuracyを示す。この図11に示すように、本情報処理装置1による量子化により、全レイヤのビット幅をそれぞれ8ビットにしても(全てQINT8で訓練した場合)、認識率(Validation accuracy)の劣化がなく訓練ができるビット幅調整(量子化)が行なわれたことがわかる。
図12においては、横軸に判定回数を示し、縦軸に判定されたビット幅を示す。この図12に示すように、本情報処理装置1による量子化により、最適化の期間内(適用回数=10回)に、全てのレイヤのビット幅を8ビットに設定(判定)された。
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した実施形態においては、各レイヤにおける重みベクトルのビット幅を狭めることで量子化を実現する例を示したが、これに限定されるものではない。例えば、活性,重み勾配,活性勾配等の量子化に適用してもよく、種々変更して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
量子化対象データの量子化を行なう情報処理装置のプロセッサに、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を実行させることを特徴とする、量子化プログラム。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
量子化対象データの量子化を行なう情報処理装置のプロセッサに、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を実行させることを特徴とする、量子化プログラム。
(付記2)
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、付記1記載の量子化プログラム。
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、付記1記載の量子化プログラム。
(付記3)
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、付記2記載の量子化プログラム。
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、付記2記載の量子化プログラム。
(付記4)
情報処理装置が量子化対象データの量子化を行なうに際して、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出する処理と、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する処理と
を備えることを特徴とする、量子化方法。
情報処理装置が量子化対象データの量子化を行なうに際して、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出する処理と、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する処理と
を備えることを特徴とする、量子化方法。
(付記5)
前記信頼半径を更新する処理を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
ことを特徴とする、付記4記載の量子化方法。
前記信頼半径を更新する処理を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
ことを特徴とする、付記4記載の量子化方法。
(付記6)
前記信頼半径を更新する処理を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
ことを特徴とする、付記5記載の量子化方法。
前記信頼半径を更新する処理を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
ことを特徴とする、付記5記載の量子化方法。
(付記7)
量子化対象データの量子化を行なう処理を実行するプロセッサを有する情報処理装置であって、
前記プロセッサは、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を行なうことを特徴とする、量子化装置。
量子化対象データの量子化を行なう処理を実行するプロセッサを有する情報処理装置であって、
前記プロセッサは、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を行なうことを特徴とする、量子化装置。
(付記8)
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
ことを特徴とする、付記7記載の量子化装置。
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
ことを特徴とする、付記7記載の量子化装置。
(付記9)
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
ことを特徴とする、付記8記載の量子化装置。
前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
ことを特徴とする、付記8記載の量子化装置。
1 情報処理装置
10 CPU
11 メモリ
12 アクセラレータ
13 通信バス
100 深層学習処理部
101 量子化処理部
102 ビット幅設定部
103 差分算出部
104 スケーリング係数算出部
105 信頼半径更新部
106 量子化誤差算出部
107 閾値生成部
10 CPU
11 メモリ
12 アクセラレータ
13 通信バス
100 深層学習処理部
101 量子化処理部
102 ビット幅設定部
103 差分算出部
104 スケーリング係数算出部
105 信頼半径更新部
106 量子化誤差算出部
107 閾値生成部
Claims (5)
- 量子化対象データの量子化を行なう情報処理装置のプロセッサに、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を実行させることを特徴とする、量子化プログラム。 - 前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、請求項1記載の量子化プログラム。 - 前記信頼半径の更新を、前記信頼半径に前記スケーリング係数のうち最も小さな値と、信頼半径更新用定数との大きい方の値を乗算することで行なう
処理を、前記プロセッサに実行させることを特徴とする、請求項2記載の量子化プログラム。 - 情報処理装置が量子化対象データの量子化を行なうに際して、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出する処理と、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する処理と
を備えることを特徴とする、量子化方法。 - 量子化対象データの量子化を行なう処理を実行するプロセッサを有する情報処理装置であって、
前記プロセッサは、
ニューラルネットワークを構成する全てのレイヤに対して、
仮算出されたビット幅より1段階狭いビット幅の量子化誤差と信頼半径閾値との差分を算出し、
前記差分に基づき、前記全てのレイヤのスケーリング係数を計算し、
全ての前記スケーリング係数のうち最も小さな値を用いて、信頼半径を更新する
処理を行なうことを特徴とする、量子化装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020200353A JP2022088096A (ja) | 2020-12-02 | 2020-12-02 | 量子化プログラム,量子化方法および量子化装置 |
US17/500,998 US20220172022A1 (en) | 2020-12-02 | 2021-10-14 | Storage medium, quantization method, and quantization apparatus |
EP21203656.0A EP4009244A1 (en) | 2020-12-02 | 2021-10-20 | Quantization program, quantization method, and quantization apparatus |
CN202111283733.7A CN114580608A (zh) | 2020-12-02 | 2021-11-01 | 存储介质、量化方法和量化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020200353A JP2022088096A (ja) | 2020-12-02 | 2020-12-02 | 量子化プログラム,量子化方法および量子化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022088096A true JP2022088096A (ja) | 2022-06-14 |
Family
ID=78332608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020200353A Pending JP2022088096A (ja) | 2020-12-02 | 2020-12-02 | 量子化プログラム,量子化方法および量子化装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220172022A1 (ja) |
EP (1) | EP4009244A1 (ja) |
JP (1) | JP2022088096A (ja) |
CN (1) | CN114580608A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102692092B1 (ko) | 2022-07-12 | 2024-08-05 | 오픈엣지테크놀로지 주식회사 | 신경망 레이어의 출력 액티베이션을 산출하는 신경망 연산방법 및 이를 위한 하드웨어 가속기 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
JP7045947B2 (ja) | 2018-07-05 | 2022-04-01 | 株式会社日立製作所 | ニューラルネットワークの学習装置および学習方法 |
US20210019630A1 (en) * | 2018-07-26 | 2021-01-21 | Anbang Yao | Loss-error-aware quantization of a low-bit neural network |
WO2020049681A1 (ja) | 2018-09-06 | 2020-03-12 | 株式会社Pfu | 情報処理装置、方法及びプログラム |
-
2020
- 2020-12-02 JP JP2020200353A patent/JP2022088096A/ja active Pending
-
2021
- 2021-10-14 US US17/500,998 patent/US20220172022A1/en active Pending
- 2021-10-20 EP EP21203656.0A patent/EP4009244A1/en active Pending
- 2021-11-01 CN CN202111283733.7A patent/CN114580608A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102692092B1 (ko) | 2022-07-12 | 2024-08-05 | 오픈엣지테크놀로지 주식회사 | 신경망 레이어의 출력 액티베이션을 산출하는 신경망 연산방법 및 이를 위한 하드웨어 가속기 |
Also Published As
Publication number | Publication date |
---|---|
CN114580608A (zh) | 2022-06-03 |
US20220172022A1 (en) | 2022-06-02 |
EP4009244A1 (en) | 2022-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2024200810A1 (en) | Training tree-based machine-learning modeling algorithms for predicting outputs and generating explanatory data | |
US7243056B2 (en) | Strategy parameter adaptation in evolution strategies | |
US9697471B2 (en) | Device and method for managing plant model | |
CN110073371A (zh) | 用于以降低精度进行深度神经网络训练的损失缩放 | |
Zhou et al. | Solving continuous-state POMDPs via density projection | |
US11120333B2 (en) | Optimization of model generation in deep learning neural networks using smarter gradient descent calibration | |
US20040199481A1 (en) | Bayesian neural networks for optimization and control | |
US11416654B2 (en) | Analysis apparatus using learned model and method therefor | |
US20190204794A1 (en) | Optimization apparatus and optimization apparatus control method | |
CN110121171B (zh) | 基于指数平滑法和灰色模型的信任预测方法 | |
JP2022088096A (ja) | 量子化プログラム,量子化方法および量子化装置 | |
JP2021111143A (ja) | 学習プログラム,学習方法および推定装置 | |
KR101492197B1 (ko) | 순차적 근사 최적 설계 방법 및 장치 | |
WO2019208564A1 (ja) | ニューラルネットワーク学習装置、ニューラルネットワーク学習方法、プログラム | |
CN112330054B (zh) | 基于决策树的动态旅行商问题求解方法、系统及存储介质 | |
JP7512631B2 (ja) | イジングマシンデータ入力機器、及びイジングマシンにデータを入力する方法 | |
CN112508167A (zh) | 信息处理装置和方法以及记录介质 | |
WO2019194128A1 (ja) | モデル学習装置、モデル学習方法、プログラム | |
JP4733552B2 (ja) | Parcor係数算出装置、parcor係数算出方法、そのプログラムおよびその記録媒体 | |
WO2022009449A1 (ja) | 情報処理装置,情報処理方法および情報処理プログラム | |
EP4125001A1 (en) | Machine learning program, information processing device, and machine learning method | |
JP2022177458A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US20210081783A1 (en) | Information processing apparatus, method of processing information, and non-transitory computer-readable storage medium for storing information processing program | |
KR20200104195A (ko) | 다항식 선택 방법, 이를 수행하기 위한 기록매체, 다항식 선택 장치 및 이를 포함하는 gnfs 방식의 인수분해 연산기 | |
JPWO2020090025A1 (ja) | 演算処理装置および演算処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230804 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240802 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240813 |