(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-25
(45)【発行日】2024-12-03
(54)【発明の名称】人工ニューラルネットワークの量子化方法とそのためのシステム及び人工ニューラルネットワーク装置
(51)【国際特許分類】
G06N 3/0495 20230101AFI20241126BHJP
G06N 3/06 20060101ALI20241126BHJP
G06N 3/10 20060101ALI20241126BHJP
【FI】
G06N3/0495
G06N3/06
G06N3/10
(21)【出願番号】P 2020156057
(22)【出願日】2020-09-17
【審査請求日】2023-07-28
(32)【優先日】2019-11-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】ファン, ヂュィン
(72)【発明者】
【氏名】ハッスン, ジョセフ エイチ.
(72)【発明者】
【氏名】シャフィイー アルデスターニ, アリ
(72)【発明者】
【氏名】アブデルアジズ, ハムザ アーメド アリ
(72)【発明者】
【氏名】ゲオルギアディス, ゲオルギオス
(72)【発明者】
【氏名】チェン, フゥイ
(72)【発明者】
【氏名】トースレイ, デイビッド フィリップ ロイド
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開2020-177535(JP,A)
【文献】米国特許出願公開第2019/0147322(US,A1)
【文献】Shubham JAIN et al.,BiScaled-DNN: Quantizing Long-tailed Datastructures with Two Scale Factors for Deep Neural Networks,[online],2019年06月06日,[検索日2024.07.05],インターネット:<URL:https://dl.acm.org/doi/pdf/10.1145/3316781.3317783>
【文献】Ritchie ZHAO et al.,Improving Neural Network Quantization without Retraining using Outlier Channel Splitting,arXiv[online],v3,2019年05月22日,[検索日2024.07.05],インターネット:<URL:https://arxiv.org/pdf/1901.09504v3>
【文献】Ron BANNER et al.,Post training 4-bit quantization of convolutional networks for rapid-deployment,arXiv[online],2019年05月29日,[検索日2024.07.05],インターネット:<URL:https://arxiv.org/pdf/1810.05723v3>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0495
G06N 3/06
G06N 3/10
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行される人工ニューラルネットワークを量子化する方法であって、
前記人工ニューラルネットワークのテンソルに対する量子化範囲を第1の領域
と第2の領域
とに分割するステップと、
前記第1の領域のテンソルの値及び前記第2の領域のテンソルの値
を、それぞれ別途に線形量子化するステップと、を有
し、
前記量子化範囲を第1の領域と第2の領域とに分割するステップは、前記第1の領域と前記第2の領域との間に1つ以上のブレークポイントを配置するステップを含み、
前記線形量子化するステップは、学習後の重み値分布の量子化範囲を重畳しない前記第1の領域と前記第2の領域とに分割した後、前記第1の領域及び前記第2の領域の各領域に均一の量子化を適用するステップを含み、
前記量子化範囲は、それぞれ正の部分及び負の部分を有する前記第1の領域と前記第2の領域とに分割され、
前記量子化範囲の前記各領域内の各区間内では、2ビットの均一の量子化が使用されることを特徴とする方法。
【請求項2】
前記第1の領域のテンソルの値は、第1の量子化関数に基づいて量子化され、
前記第2の領域のテンソルの値は、第2の量子化関数に基づいて量子化されることを特徴とする請求項1に記載の方法。
【請求項3】
前記第1
の量子化関数と前記第2の量子化関数
とは、互いに異なるスケールファクターを有することを特徴とする請求項2に記載の方法。
【請求項4】
前記第1
の量子化関数と前記第2の量子化関数
とは、互いに異なるオフセットを有することを特徴とする請求項3に記載の方法。
【請求項5】
前記ブレークポイントを
配置するステップは、
前記量子化範囲の少なくとも一部に対する量子化エラーを決定するステップと、
前記量子化エラーを最小化するステップと、を含
み、
前記ブレークポイントを配置するステップは、
ゼロ導関数(zero derivative)について解析的に(analytically)解決するステップと、
線形近似法で最適のブレークポイントを近似化するステップと、
グリッド(grid)の検索を行うステップと、の何れか1つ以上を含むことを特徴とする請求項
1に記載の方法。
【請求項6】
前記量子化エラーを最小化するステップは、
前記ブレークポイントの位置の関数として、前記量子化エラーを定式化するステップと、
前記位置の関数の1次導関数を定式化するステップと、
前記1次導関数が0になるブレークポイントの値を決定するステップと、を含むことを特徴とする請求項
5に記載の方法。
【請求項7】
前記1次導関数が0になるブレークポイントの値は、バイナリ探索を使用して決定されることを特徴とする請求項
6に記載の方法。
【請求項8】
前記ブレークポイントの
配置は、回帰を使用して近似化されることを特徴とする請求項
5に記載の方法。
【請求項9】
前記量子化エラーは、グリッド検索を使用して最小化されることを特徴とする請求項
5に記載の方法。
【請求項10】
前記ブレークポイントは、量子化値の密度と前記テンソルの値の密度とをマッチングさせるように配置
されることを特徴とする請求項
1に記載の方法。
【請求項11】
前記テンソルは、1つ以上の重み値を含むことを特徴とする請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子化に関し、より詳しくは、人工ニューラルネットワークのためのピースワイズ量子化(piecewise quantization)方法とそのためのシステム及び人工ニューラルネットワーク装置に関する。
【背景技術】
【0002】
ディープニューラルネットワーク(DNNs:deep neural networks)のような人工ニューラルネットワークは、イメージ分類及びオブジェクト検出などのような多様なマシンラーニングのタスクに使用される。DNNの正確度は、ネットワークの深さ、ネットワークの幅、イメージの解像度のような1つ以上のディメンションを拡張して向上させるが、これは計算の複雑性とメモリ要件が大きくなって、エネルギー消費及び実行時間が増加する。このような増加されたリソース要件のために、エンベデッドシステム及びモバイル装置のようなリソースが限られたアプリケーションにDNNを利用することが困難になる。
【0003】
量子化技術は、精度一杯(full-precision)の重み値及び活性化を低い精度(低いビット幅(bit-width))の表現に変換することにより、DNNの資源要求を減少させるために使用することができる。例えば、人工ニューラルネットワークをトレーニングするうちに、一般的に使用される32ビット浮動小数点数(FP32:32-bit floating-point numbers)は、各数字を表すために使用される離散(discrete)値の数を減少させる小さい8ビット整数(INT8:8-bit integers)に変換して量子化される。このような低いビット幅の数は、メモリでより少ない空間を占めており、これを処理するシステム(ハードウェア、ソフトウェア、又はそれらの組み合わせに関係なく)の複雑性、コスト、及び/又はエネルギー消費量を減少させることができる。しかし、量子化は、DNNの性能(正確度)を減少させる量子化エラーを引き起こすことがある。
【0004】
量子化エラーを最小化し、精度一杯のモデルの性能を維持するために、量子化されたDNNは、量子化を考慮した学習(quantization-aware training)を使用して、事前知識なしにトレーニングされる。他の方法で、事前トレーニングされた浮動小数点モデルは、量子化後に微調整される。しかし、2つの方法は、両方共利用プロセスを複雑にし、速度を低くし、トレーニングデータセット一杯にアクセスを要求する。
【0005】
いくつかのアプリケーションにおいて、INT8の数を有する均一な量子化を使用する学習後の量子化(PTQ:post-training quantization)は、略本来のFP32の事前学習済みモデルの性能を維持する。但し、一部のアプリケーションにおいて、8ビット量子化されたDNNのリソース要件が相変わらず広く利用されるのには高すぎる場合がある。4ビットの均一なPTQのような低いビット幅の技術は、DNNがより広い範囲のリソース限定アプリケーションに使用できるようにするが、低いビット幅の量子化は、収容することができないレベルに性能を低下させることがある。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許出願公開第2017/0308789号明細書
【文献】米国特許出願公開第2019/0042935号明細書
【文献】米国特許出願公開第2017/0205736号明細書
【文献】欧州特許出願公開第03543917号明細書
【文献】国際公開第2019/006976号
【非特許文献】
【0007】
【文献】GUPTA, Suyog et al., “Deep Learning with Limited Numerical Precision”, arXiv:1502.02551 [cs.LG], 2015, pgs. 1-10
【文献】JACOB, Benoit et al.,“Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference”, The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2018, pp. 2704-2713
【文献】JAIN, Shubham et al., “BiScaled-DNN Quantizing Long-tailed Datastructures with Two Scale Factors for Deep Neural Networks”, 2019 56th ACM/IEEE Design Automation Conference (DAC), 2-6 June 2019
【文献】KRISHNAMOORTHI, Raghuraman, “Quantizing deep convolutional networks for efficient inference: A whitepaper”, arXiv:1806.08342 [cs.LG], 21 Jun 2018, pg. 1-36
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、量子化エラーを最小化する人工ニューラルネットワークの量子化方法とシステム及び人工ニューラルネットワーク装置を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するためになされた本発明の一態様による人工ニューラルネットワークを量子化する方法は、前記人工ニューラルネットワークのテンソルに対する量子化範囲を第1の領域及び第2の領域に分割するステップと、前記第2の領域のテンソルの値とは別途に、前記第1の領域のテンソルの値を量子化するステップと、を有する。
【0010】
前記第1の領域のテンソルの値は、第1の量子化関数に基づいて量子化され、前記第2の領域のテンソルの値は、第2の量子化関数に基づいて量子化され得る。
前記第1及び第2の量子化関数は、異なる場合がある。
前記第1及び第2の量子化関数は、実質的に同一であり得る。
前記第1及び第2の量子化関数は、互いに異なるスケールファクターを有し得る。
前記第1及び第2の量子化関数は、互いに異なるオフセットを有し得る。
線形量子化は、前記第1の領域及び前記第2の領域のテンソルの値に適用され得る。
前記第1の領域は、正の部分及び負の部分を含み得る。
前記第2の領域は、正の部分及び負の部分を含み得る。
量子化の範囲は、テンソルの最小値から最大値まで拡張される。
量子化範囲を分割するステップは、前記第1の領域及び前記第2の領域に対するブレークポイント(breakpoint)を位置させるステップを含み得る。
前記ブレークポイントを位置させるステップは、前記量子化範囲の少なくとも一部に対する量子化エラーを決定するステップと、前記量子化エラーを実質的に最小化するステップと、を含み得る。
前記量子化エラーを最小化するステップは、前記ブレークポイントの位置の関数として量子化エラーを定式化するステップと、前記位置の関数の1次導関数(first derivative)を定式化するステップと、前記1次導関数が実質的に0(zero)になるブレークポイントの値を決定するステップと、を含み得る。
前記1次導関数が実質的に0(zero)になるブレークポイントの値は、バイナリ探索を使用して決定され得る。
前記ブレークポイントの位置は、回帰(regression)を使用して近似化され得る。
前記量子化エラーは、グリッド検索を使用して実質的に最小化され得る。
前記ブレークポイントは、オフラインに位置し得る。
前記ブレークポイントは、オンラインに位置し得る。
前記ブレークポイントは、量子化範囲の中間点未満に制限され得る。
前記ブレークポイントは、量子化値の密度と前記テンソルの値の密度とをマッチングさせるように位置し得る。
前記テンソルは、第1及び第2の領域のうちの少なくとも1つで個別に量子化される少なくとも2つのチャンネルを含み得る。
前記テンソルは、第1及び第2の領域のうちの少なくとも1つで個別に量子化される少なくとも2つのグループを含み得る。
前記方法は、テンソルの量子化された値におけるバイアスを訂正するステップを更に含み得る。
前記テンソルは、1つ以上の重み値を含み得る。
前記テンソルは、1つ以上の活性化を含み得る。
前記人工ニューラルネットワークは、ディープニューラルネットワークを含み得る。
前記第1の領域及び第2の領域は重ならない場合がある。
前記テンソルは、学習後の値を含み得る。
前記テンソルの値は、トレーニングデータセットに応答して生成され、前記テンソルの量子化範囲は、前記トレーニングデータセット一杯にアクセスすることなく、又は全体トレーニングデータセットの一部のみにアクセスして分割され得る。
【0011】
上記目的を達成するためになされた本発明の一態様によるシステムは、プロシージャを実行するように構成されたプロセッサを備え、前記プロシージャは、人工ニューラルネットワークのテンソルに対する量子化範囲を第1の領域及び第2の領域に分割し、前記第2の領域のテンソルの値とは別途に、前記第1の領域のテンソルの値を量子化することを含む。
【0012】
前記プロセッサは、前記第1の領域及び前記第2の領域に対するブレークポイントを位置させることを含むプロシージャを実行するように、更に構成され得る。
前記プロセッサは、前記量子化範囲の少なくとも一部に対する量子化エラーを実質的に最小化することにより、前記ブレークポイントを位置させることを含むプロシージャを実行するように、更に構成され得る。
【0013】
上記目的を達成するためになされた本発明の一態様による人工ニューラルネットワーク装置は、量子化範囲の第1の領域に対する活性化と重み値積とを合算するように構成された第1のアキュムレータと、前記量子化範囲の第2の領域に対する活性化と重み値積とを合算するように構成された第2のアキュムレータと、前記第2の領域に対する活性化を合算するように構成された第3のアキュムレータと、を備える。
【0014】
前記第2の領域に対する活性化は、オフセットが掛けられる。
前記第1、第2、及び第3のアキュムレータは、専用のハードウェアで実装され得る。
前記第1、第2、及び第3のアキュムレータは、累積プロシージャを実行するように構成された1つ以上のプロセッサで実装され得る。
【発明の効果】
【0015】
本発明によると、量子化エラーを最小化するニューラルネットワークのためのピースワイズ量子化の方法及びシステムを提供することができる。
【図面の簡単な説明】
【0016】
【
図1】トレーニングされたディープニューラルネットワークにおける重み値の分布の例を示すヒストグラム図である。
【
図2】
図1に示した重み値の4ビットの均一な学習後の量子化から量子化された値の分布を示す図である。
【
図3】本発明の一実施形態によるピースワイズ線形学習後の量子化から量子化された値の分布を示す図である。
【
図4】本発明の一実施形態によるピースワイズ量子化技術の他の例を示す図である。
【
図5】本発明の一実施形態による人工ニューラルネットワークにおけるピースワイズ量子化された値を処理するための装置の一例を示す図である。
【
図6】本発明の一実施形態によるコンピューティングシステムの一例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【0018】
図面は、必ずしも縮尺通り図示したものではなく、類似する構造又は機能のエレメントは、一般的に図面全体に亘って例としての目的のために同じ参照符号で示される。図面は、本明細書に記述する多様な実施形態の説明を容易にするように示される。図面は、本明細書に記述する実施形態の全ての側面を説明せず、請求の範囲の範囲を限定しない。図面が不明瞭になることを防止するために、全てのコンポーネント、連結などが示されない可能性があり、全てのコンポーネントが参照符号を有するわけではない。しかし、コンポーネントの配置のパターンは、図面から容易に明らかになり得る。図面は、本明細書と共に本発明の実施形態を示し、詳しい説明と共に本発明の原理を説明する役割をする。
【0019】
いくつかの人工ニューラルネットワークにおいて、事前学習済みモデルにおける重み値及び活性化の分布は、ガウス(Gaussian)及び/又はラプラシアン(Laplacian)関数によって近似される。
図1は、トレーニングされたディープニューラルネットワーク(DNN)における重み値の分布の例を示すヒストグラム図である。殆どの重み値は、0(zero)のまわりに群集(cluster)され、一方、残りの重み値は、ロングテール(long tail)に広がる。
【0020】
図2は、
図1に示した重み値の4ビットの均一な学習後の量子化(PTQ)から量子化された値(太いバーで図示する)の分布を示す図である。
図2から明らかなように、均一な量子化技術は、重み値の不均一な分布にも拘らず、量子化範囲を均等に分割する。従って、特に低いビット幅の状況(regime)において、均一な量子化方式は、多数の小さなサイズを有する値に少なすぎる量子化レベルを割り当て、比較的(相対的に)少ない数の大きいサイズを有する値に比較的多すぎる量子化レベルを割り当てる。これは、例えば量子化エラーを増加させ、結果の正確度を低下させ、モデルの性能を低下させる。
【0021】
本発明の一実施形態による人工ニューラルネットワークにおいて、重み値のようなテンソル(tensor)の量子化範囲は、個別に量子化される2つ以上の領域に分割される。例えば、ピースワイズ(piecewise)線形量子化技術は、学習後の重み値分布の量子化範囲を2つの重畳されない領域に分割して、
図3に示すように各領域に均一の量子化を適用する。
【0022】
図3は、
図1に示した重み値に適用される本発明の一実施形態によるピースワイズ線形の学習後の量子化から量子化された値(太いバーで示される)の分布を示す図である。
図3のそれぞれの太いバーの高さは、その重み値で量子化された重み値のサンプルの個数を表す。
【0023】
量子化範囲[-t、t]は、それぞれ正の部分及び負の部分を有する2つの領域に分割される。第1の領域は、負の部分[-x、0]及び正の部分[0、x]を含む。第1の領域は、[-x、0]∪[0、x]又は代案的に[-x、x]として表される。第2の領域は、負の部分[-t、-x]及び正の部分[x、t]を含む。第2の領域は、[-t、-x]∪[x、t]として表される。便宜上、2つの領域のそれぞれの2つの部分は、また量子化範囲の4つの区間[-t、-x]、[-x、0]、[0、x]、及び[x、t]として集合的又は個別的に呼ばれる。
【0024】
第1の領域と第2の領域との間のブレークポイント(breakpoint)xは、-x及びxの破線で示され、2ビットの均一の量子化が各区間内で使用される。従って、各区間で4つの量子化された値が有り、全体の量子化範囲に対する総計16個の量子化された値が有る。
【0025】
-xにおける太いバーは、2つの共存するバーを含む。1つは、区間[-t、-x]の上部に位置し、1つは、区間[-x、0]の下部に位置する。同様に、0及びxにおける太いバーは、それぞれ量子化範囲の隣接する区間(ピースワイズ)の終端に2つの共存するバーを含む。
【0026】
図3から明らかなように、量子化値は、[-x、x]領域(第1の領域)で、より稠密であり、ここで重み値の分布は更に稠密である。同様に、量子化値は、[-t、-x]∪[x、t]領域(第2の領域)では、それほど稠密ではなく、ここで重み値の分布はあまり稠密ではない。実装の詳細に依存して、2つの技術(ピースワイズ線形PTQ技術及び均一PTQ技術)の両方が量子化値の同一の数を使用するにも拘らず、この密度マッチングは、
図3に示したピースワイズ線形PTQ技術が
図2に示した均一PTQ技術よりも優れた性能(例えば、より低い量子化エラー)を提供することができる。
【0027】
なお、実装の詳細に依存して、本発明の実施形態によるピースワイズ量子化技術は、より高い速度、より低い消費電力、減少されたメモリ要件、ハードウェア及び/又はソフトウェアのより低い複雑性、及び/又はコスト、集積回路上の減少されたダイ領域、商用のハードウェアに対する変更が殆ど或いは全くない実施などのような1つ以上の追加的な利点を提供することができる。例えば、
図2に示した均一な量子化方式は、4ビットの加算、乗算、累積などを要求する反面、
図3に示したピースワイズ量子化技術は、より速く且つより効率的なパイプラインの少なくとも一部に対する2ビット演算だけを要求する。更に、実装の詳細に依存して、このような利点のうちの一部又は全部がトレーニングデータセット一杯にアクセスせずに実現される。
【0028】
一実施形態において、ピースワイズ量子化モデルの性能は、1つ以上の最適な位置に又は近くに配置される1つ以上のブレークポイント(例えば、
図3の実施形態では、x)の値に依存して量子化エラーを減らすか又は最小化される。本発明の実施形態は、また1つ以上の最適ブレークポイントを位置させるための技術を含む。この技術は、以下を含む。ブレークポイントの関数として量子化エラーを定式化し、ゼロ導関数(zero derivative)について解析的に(analytically)解決し、線形近似法で最適のブレークポイントを近似化し、及び/又はグリッド(grid)の検索を行う。これらの全ては、以下でより詳しく説明する。
【0029】
図3に示した実施形態は、本発明の実施形態に基づいて無数の方式に変更され、数多くのアプリケーションに使用されるように構成及び/又は適応される。可能な変更及び/又はアプリケーションの中の一部は、以下で説明する。
【0030】
一実施形態において、任意のビット幅が量子化範囲の任意の又は全ての領域及び/又はその領域の一部を量子化するのに使用される。人工ニューラルネットワークレイヤー内の異なるレイヤー及び/又はノードだけでなく、異なる領域及び/又はその領域の部分に対して異なるビット幅が使用される。
【0031】
一実施形態において、ピースワイズ量子化は、重み値、活性化(活性化関数の適用前後を含む)、及び量子化される任意の他のテンソル又は値を含む人工ニューラルネットワークの任意のテンソル又はテンソルの組み合わせに適用される。任意のテンソルは、符号付(signed)又は符号なし(unsigned)である。ピースワイズ量子化は、人工ニューラルネットワーク内の任意の位置における値の任意の分布を有する任意のテンソル又はテンソルの組み合わせに適用される。これは、例えば一般的にロングテールを有するガウス又はラプラシアン分布のような任意の一般的に鐘の形や正規分布を有するテンソルを含む。ピースワイズ量子化は、均一又は不均一、対称又は非対称などの値の分布を有するテンソルに適用される。
【0032】
一実施形態において、ピースワイズ量子化は、ディープニューラルネットワーク、コンボリューションニューラルネットワーク、フィードフォワードニューラルネットワークなどを含む任意のタイプの人工ニューラルネットワークに適用される。
【0033】
一実施形態において、ピースワイズ量子化は、均一又は線形及び非線形量子化、アフィン(affine)又は非アフィン量子化などを含む任意の量子化関数、又はこれらの組み合わせと共に使用される。異なる量子化関数は、量子化範囲の異なる領域及び/又は領域の部分に対して使用される。ピースワイズ量子化は、レイヤー当たり(per-layer)、チャンネル当たり、グループ当たり、又はこれらの任意の変形又は組み合わせで適用される。
【0034】
一実施形態において、量子化範囲は、任意の数の領域及び/又はその部分に分割され、領域及び/又はその部分間に任意の数のブレークポイントを有する。領域及び/又はその部分は、対称又は非対称、均衡又は不均衡である。領域及び/又はその部分は、負の値のみ、正の値のみ、又はこれらの組み合わせを有する。量子化に使用される量子化範囲は、テンソルの全体(最小から最大まで)の値の範囲をカバーするか、又はテンソルの全体値の範囲の1つ以上の部分のみをカバーする。量子化の範囲は、重なるか若しくは重ならないか、隣接するか若しくは隣接しないか(接触されるか又は離隔されるか)、又はそれらの任意の組み合わせである領域及び/又はその領域の部分に分割される。実装の詳細に依存して、例えば、重ならない領域及び/又はその部分の使用は、本発明の実施形態によるピースワイズ量子化を使用するモデルの正確度を向上させる。
【0035】
一実施形態において、量子化は、量子化範囲の各領域又はその領域の部分に個別に適用される。一実施形態で、動作及び/又は装置は、1つ以上の領域又はその領域の部分で量子化を完全に又は部分的に結合するために、結合される。
【0036】
一実施形態において、ピースワイズ量子化は、オンライン(リアルタイムで)若しくはオフラインで、又はこれらの任意の組み合わせで実施される。ピースワイズ量子化は、トレーニング後、トレーニング前、初期トレーニング後の調整(tuning)、若しくは再トレーニングのうち、量子化の認識トレーニングのうち、又はこれらの任意の組み合わせで実施される。一実施形態で、本発明の実施形態によるピースワイズ量子化は、テンソル値の分布を生成するのに使用されていた可能性があるトレーニングデータセット一杯(全て)にアクセスせずに実施される。一実施形態で、トレーニングデータセットの一部又は全部が使用される。例えば、トレーニングデータセットの小さな部分が活性化関数の範囲をプロファイリングするために使用される。
【0037】
一実施形態において、ピースワイズ量子化は、ハードウェア、ソフトウェア、又はこれらの任意の組み合わせで実装される。
【0038】
一実施形態において、ピースワイズ量子化は、量子化範囲の1つ以上の領域又はその領域の部分においてアフィン量子化で実装される。一実施形態で、アフィン量子化は、スケールファクター及びオフセット又は零点(zero-point)のような量子化パラメータを含む。
【0039】
一実施形態において、量子化は、次のことを特徴とする。
【0040】
【0041】
ここで、xqは量子化された出力値であり、xは入力浮動小数点値であり、xminは量子化領域の最小終端における浮動小数点値であり、Sは次によって与えられるスケールファクターである。
【0042】
【0043】
ここで、xmaxは量子化領域の最大終端における浮動小数点値であり、Nlevels=2bであり、bは量子化に使用されるビット幅である。
【0044】
対称量子化の場合に、xmaxは次のように与えられる。
【0045】
【0046】
非対称量子化の場合に、xmaxは次のように与えられる。
【0047】
【0048】
【0049】
ここで、xは入力浮動小数点値のアレイ(配列)である。
【0050】
本発明の実施形態は、量子化の任意の特定のタイプの使用に限定されないが、数学式1を参照して上述した例のようなアフィン量子化技術の使用は、実装の詳細に依存して、1つ以上の利点を提供する。これは、いくつかの代替的な実施技術を参照して理解される。例えば、量子化を実施するための1つの可能な技術は、数字の固定小数点表現を使用するものである。しかし、固定小数点数を使用すると、表現できる最も小さい数及び/又は最も大きい数に制限が有り、ブレークポイント及び/又はスケールファクターを選択するためのオプションに制限がある。このような制限は、モデル及び/又は結果の正確性を減少させる。例えば、固定小数点数の使用は、表現できる最小値及び/若しくは最大値、並びに/又はブレークポイント及び/若しくはスケールファクターを2N(但し、Nは正又は負の整数)と同一である値に限定される。対照的に、数学式1を参照して上述した量子化技術の使用は、スケールファクター、オフセット又は零点、ブレークポイントなどに対する浮動小数点又は他のより柔軟な数値表現の使用を可能にし、より小さな数字、数字のより広い範囲などの表現を可能にする。実装の詳細に依存して、このようなファクターのうちのいずれかが、モデル及び/又は結果の正確性だけでなく、他の性能メトリック(metric)を改善する。
【0051】
数学式1を参照して上述した例のような量子化技術の更なる潜在的な利点は、重ならない量子化領域の実現を容易にする。例えば、一実施形態で、より大きな値のためにピースワイズ量子化領域の最小終端にxminを位置させることにより、xminよりも小さな値で無駄になる量子化の解像度がなく、これは、もっと小さな値に対する別途の領域の一部として量子化される。
【0052】
図4は、本発明の一実施形態によるピースワイズ量子化技術の他の例を示す図である。
図4の実施形態は、全体の量子化範囲[-t、t](連続水平線で示される)内の重み値の浮動小数点表現が量子化範囲の4区間(ピースワイズ)[-t、-x]、[-x、0]、[0、x]、及び[x、t]で4つの異なる4ビット(INT4)の量子化された値にどのようにマッピングされるかを示している。
【0053】
一実施形態において、予想される量子化エラーを最小化することで、最適のブレークポイントが発見される。例えば、重み値のガウス分布及び2領域(各領域が正の部分と負の部分を有する)に分割された量子化範囲[-t、t]を有する実施形態で、重み値分布は、4つの区間[-t、-x]、[-x、0]、[0、x]、及び[x、t]に分割される。各区間は、浮動小数点の重み値の量子化された値を示すレベル(値)の数のNlevelsを有する。ガウス確率密度関数(PDF:probability density function)は、次のように与えられる。
【0054】
【0055】
そして、累積分布関数(CDF:cumulative distribution function)は、次のように与えられる。
【0056】
【0057】
それにより、予想される量子化エラーは、次のように与えられる。
【0058】
【0059】
ここで、Cは、次によって与えられた定数である。
【0060】
【0061】
ここで、bは、量子化に使用されたビット幅である。
【0062】
数学式7の1次導関数は、次のように与えられる。
【0063】
【0064】
0(zero)について解くと、最適のブレークポイントが提供される。
【0065】
は、次のように単調に(monotonically)増加する。
【0066】
【0067】
【0068】
従って、固有の最適のブレークポイントxoptが次のように存在する。
【0069】
【0070】
これは、量子化エラーを最小化する。
【0071】
実装の詳細に依存して、本発明の実施形態による区間均一(線形)量子化技術に対する量子化エラー
は、量子化レベルの同一の数を使用する均一量子化プロセス対する量子化エラーよりも小さい。例えば、本発明の実施形態による量子化範囲の4つの区間のそれぞれについて、4ビットの量子化を使用するピースワイズ量子化技術は、同一の量子化範囲に対する均一の6ビットの量子化を適用する一般的な量子化プロセスよりも、もっと少ない量子化エラーを有する。
【0072】
本発明の実施形態による最適のブレークポイントを位置させるために方程式
を解決する(又は解く)1つのアプローチは、例えば複雑度O(log t)を有するバイナリ検索を使用して、これを数値的に解決するものである。実装の詳細に依存して、このアプローチは、非常に正確な結果を提供し、例えば重み値を量子化する際に量子化がオフラインで遂行される実施に特に適している。
【0073】
本発明の実施形態による方程式
を解決するための他のアプローチは、O(1)の複雑度を有する線形回帰を使用して最適のブレークポイントを近似化するものである。例えば、これは正規化された量子化範囲[-t、t]を推定するために重み値(又は他のテンソル)の標準偏差に対する最大値を先ず決定することにより達成される。その次に、バイナリ検索は、正規化された量子化範囲に基づいて、最適のブレークポイントを見つけるために使用される。その後、バイナリ検索結果を使用して1つ以上の最適のブレークポイントに対する線形近似値を見つける。一実施形態で、ガウス重み値分布と小さな変化(摂動、perturbation)
に対する大略的な最適のブレークポイントの値x
appは、次の式を使用して、このような近似を介して決定される。
【0074】
【0075】
実装の詳細に依存して、ワンショット(one-shot)のアプローチとして考慮されるこのアプローチは、量子化エラーの低下が殆ど発生せずに、最適のブレークポイントを決定するために必要な時間を減らすことができる。従って、近似化のアプローチは、活性化のようなオンライン又はオンザフライ(on-the-fly)の量子化を使用する実装に有利である。このアプローチは、ガウス以外の分布と共に使用される。例えば、ラプラシアン分布でxappの値は、次のように決定される。
【0076】
【0077】
ここで、このような分布は、正規化される。
【0078】
本発明の実施形態による方程式
を解決するための他のアプローチは、粗密グリッド探索(coarse-to-fine grid search)を使用するものであり、これは、テンソル値の分布に関するいかなる仮定も要求しない。一実施形態で、3段階のグリッド探索は、量子化エラーを最小化するために、テンソルの最大値に対する最適のブレークポイントの割合を探索するために、以下の段階を使用する。即ち、
段階1:np.arange(0.1、1.0、0.1)で最上の割合r1を検索
段階2:np.arange(r1-0.05、r1+0.05、0.01)で最上の割合r2を検索
段階3:np.arange(r2-0.005、r1+0.005、0.001)で最上の割合r3を検索
ここで、npはナンパイ(NumPy)演算子である。
【0079】
実装の詳細に依存して、グリッド探索のアプローチは、非常に正確な結果を提供し、量子化がオフラインで遂行する実装に特に適している。粗密グリッド探索のアプローチの潜在的な利点は、テンソル値の分布に関する特定の知識及び/又は仮定に対する必要がなくても量子化エラーを直接減少及び/又は最小化することができるというものである。
【0080】
表1は、本発明の実施形態によるブレークポイントを見つけるために粗密グリッド探索を実施するためのいくつかの擬似コード(pseudocode)を示す。
【0081】
【0082】
一実施形態において、本発明の実施形態による一般的に鐘型の分布を有するテンソルのピースワイズ量子化のためのブレークポイントを位置させる場合、値の最も高い密度は、一般的に0(zero)の周りに群集(cluster)される。従って、ブレークポイントを量子化範囲の中間地点未満(例えば、xopt<t/2)に制限することが有利であり、これは量子化エラーを減らすか又は最小化してブレークポイントを配置する解析技術、検索技術,及び/又は他の技術を使用して最適なブレークポイントを見つけることに有用である。一実施形態で、量子化エラーは、全体の量子化範囲に対する量子化エラーを評価することにより、減少されるか又は最小化される。他の実施形態で、量子化エラーは、量子化範囲の部分及び/又は範囲が分割される区間(ピースワイズ)及び/又は領域の全部又は一部に対する量子化エラーを評価することにより、減少されるか又は最小化される。
【0083】
上述したように、量子化の範囲は、任意の数の領域及び/又はその領域の部分に分割され、領域及び/又はその領域の部分間に任意の数のブレークポイントを有する。多数のブレークポイントを有する実施形態では、上述した任意の技術は、1つ以上の最適のブレークポイントの値を見つけるために拡張される。例えば、一実施形態で、多数の最適なブレークポイント値は、多数のブレークポイントに適用される上記数学式7で与えられて予想された量子化エラーを最小化することにより、決定される。別の例として、粗密グリッド探索は、また多数のブレークポイントを位置させるために拡張される。一実施形態で、最適のブレークポイントの数及び/又は位置を決定することは、多様な考慮事項の均衡をとることを含む。例えば、実装の詳細に依存して、多数のブレークポイントを使用すると、正確度が大幅に向上する。しかし、他の実装において、多数のブレークポイントによって提供される正確度の改善は、追加的なブレークポイントを実現するために必要とする余分のハードウェア及び/又はソフトウェアの実行時間よりもそれほど重要ではない場合もある。
【0084】
本発明の実施形態による原理が1つ以上の最適化されたブレークポイントを見つけるために任意の特定の技術の使用を必要としないにも拘らず、本明細書に記載した任意の解析、近似、及び/又は検索の技術は、より容易に分析可能であり、拡張可能であり、そして/又は強力な解決策を提供することができる。
【0085】
一実施形態において、ピースワイズ量子化は、本発明の実施形態による専用のハードウェアで実装される。ハードウェア実装で、ピースワイズ量子化はテンソルの範囲を2つ以上の領域に分割し、それぞれの領域は、例えば異なるスケーリングファクター及び/又はオフセットを収容するために別の計算経路で実装される。
図3に示したようなピースワイズ線形量子化を実現する実施形態で、ハードウェアの実施は、各領域及び/又はその領域の部分(例えば、量子化範囲の区間(ピースワイズ)に)内で均一の量子化に使用されるものに類似する一部のハードウェアを含むが、区間配置(arrangement)を収容するために、いくつかの装置を追加する。例えば、それぞれの区間内の均一の量子化は、2つのアキュムレータ(accumulator)で実装される。即ち、第1のアキュムレータは活性化及びテンソル(例えば、重み値)積(product)を実行し、第2のアキュムレータは活性化を合算する。1つの追加のアキュムレータが、0(zero)からオフセットになる区間又は領域で(例えば、領域2で)0(zero)ではないオフセットが掛けられる活性化を合算するために含まれる。
【0086】
従って、一実施形態において、本発明の実施形態によるピースワイズ量子化技術のハードウェア実装は、次の中から任意のもの又はその両方を含む。即ち、均一の量子化に使用されるものに類似する加算器及び乗算器、3つの累積レジスタ(第1及び第2の累積レジスタは2つの計算経路のそれぞれにある積の合算のために、第3の累積レジスタは0(zero)以外のオフセットを処理する経路で活性化のために)、及びテンソル当たりのストレージの1つ又は2つの余分なビット(1つは符号を表し、1つはテンソル値が量子化された領域)を表す。符号を表すビットは、符号なし(unsigned)の値を有する実装に含まれない。領域を表すビットは、適切なアキュムレータを探している場合にのみ使用されるため、積和演算(MAC:multiply-accumulate computations)に含まれない。従って、一実施形態で、本発明の実施形態によるピースワイズ量子化技術のハードウェア実装は、商用のハードウェアに対する最小限の修正で実現される。
【0087】
図5は、本発明の一実施形態による人工ニューラルネットワークにおけるピースワイズ量子化された値を処理するための装置の一例を示す図である。
図5の実施形態で、重み値バッファ112は、4ビットの量子化された重み値の列を含み、これらのそれぞれは、領域1(灰色)又は領域2(白色)で量子化されたか否かを示すインデックスビットを伴う。任意の数の列が複数の値の並列処理を提供するために使用され、列は任意の適切なディープを有する。この例で、列は9の重み値のディープである。ローカル入力特徴マップ(IFM:input feature map)キュー110は、4ビットの量子化された値(ifm_value)のストリームを提供し、これらのそれぞれは、最上位ニブル(nibble)/最下位ニブルビット(ifm_MSN/LSN)を伴って、それがどの領域に関連するかを表す。ローカルIFMキュー110で、それぞれの値(ifm_value)に関連するIFMインデックス(ifm_idx)は、セレクター114(この例では、1-of-9セレクター)を使用して4ビット乗算器116によって、ローカルIFMキュー110から、その値(ifm_value)に掛けられる重み値のブリック120(brick)を選択する。部分積は、ifm_MSN/LSNビットの状態に応じてシフトレジスタ118で4ビットほどの部分がシフトされる。従って、重み値のそれぞれのブリック120は、IFMインデックス(ifm_idx)及びニブルビット(ifm_MSN/LSN)の値の対応するセット122に関連する。それぞれの列に関連するオフセット加算器ツリー124は、対応する列の重み値が領域2に属する場合に活性化を合算する。
図5に示した例としての状態で、第1の列は、第1の領域に関連付けられる。従って、第1の列に対する対応するオフセット加算器ツリー124は、×で示したように非活性化される。対照的に、第2及び最後の列は、第2の領域に関連付けられ、従って第2及び最終列に対する対応するオフセット加算器ツリー124は、〇で表示したように活性化される。
【0088】
ピースワイズ量子化に関する本発明の実施形態は、他の量子化技術に結合され、これにより相乗的な結果を生成する追加の実施形態を生成することができる。例えば、ピースワイズ均一(線形)量子化を実施する実形態は、量子化範囲の個別的又は集合的に各区間内でバイアス補正を実現する。このような実施形態において、テンソルの量子化された値で、バイアスは、例えば1つ以上の補正項を量子化範囲の1つ以上の区間に対するスケール及び/又はオフセットにフォールディング(folding)することにより補正される。実装の詳細に依存して、ピースワイズ量子化バイアス補正の組み合わせは、量子化エラーを更に減少させ、それが実装される人工ニューラルネットワークの性能を改善することができる。
【0089】
別の例として、本発明の実施形態によるピースワイズ均一(線形)量子化を実装する実施形態は、量子化範囲の区間の中のいずれか1つ以上に対して出力チャンネルフィルター当たりの個別の量子化を適用する。この技術は、本発明の実施形態に基づいて1つ以上の出力チャンネルのフィルターを量子化範囲の1つ以上の区間に対して個別に量子化される1つ以上のグループに分解するように更に拡張される。実装の詳細に依存して、チャンネル当たり及び/又はグループ当たりのピースワイズ量子化の組み合わせは、量子化エラーを更に減少させ、人工ニューラルネットワークの性能をより向上させることができる。一実施形態で、1つのグループから他のグループに変更することはスケールファクターを変更することを含む。実装の詳細に依存して、チャンネル当たり(又はチャネル単位で)のピースワイズ量子化を適用すると、レイヤー当たり(又はレイヤー単位で)の実装に比べて正確度が向上する。
【0090】
本発明の実施形態による方法及び/又は装置のうちの任意のもの又は全ては、人工ニューラルネットワークを使用する任意のアプリケーションに使用される。例として、本発明の実施形態によるピースワイズ量子化を実施する人工ニューラルネットワークは、イメージ分類、顔認識、音声認識、セマンティックセグメンテーション(semantic segmentation)、自律走行、ロボット制御、及びその他のアプリケーションのためのピースワイズ量子化を実装する人工ニューラルネットワークを使用するように構成される装置を含むモバイルコンピューティング、モノのインターネット(IOT)、及び/又はエンベデッドアプリケーションのための装置に利用される。本発明の実施形態によるピースワイズ量子化を実装する人工ニューラルネットワークは、またデスクトップ/ワークステーションのアプリケーション、サーバ、ハイパースケールのデータセンターを含むデータセンターなどに利用される。
【0091】
図6は、本発明の一実施形態によるコンピューティングシステムの一例を示す図である。
図6のシステム150は、本発明の実施形態による方法及び/又は装置のうちの任意のもの又は全部を実装するために使用される。システム150は、中央処理装置152(CPU)、ユーザーインターフェース154、ネットワークインターフェース156、メモリ158、ストレージ160、GPU162、FPGA(Field Programmable Gate Array)157、及びASIC(Application Specific Integrated Circuit)163を含む。しかし、本発明の実施形態に基づいて、
図6に示した任意のコンポーネントとしての実装に限定されず、任意の適切なハードウェア、ソフトウェア、又はこれらの組み合わせで実装され得る。異なる実施形態で、システムは、これらのコンポーネントの中のいずれか1つを省略したり、本発明の実施形態による方法及び/又は装置のうちの任意のものを実装したりするための任意の他のタイプのコンポーネントだけでなく、任意の重複又は任意の数の任意のコンポーネントを含み得る。
【0092】
CPU152は、任意の数のコア、キャッシュ、バス及び/又はインターコネクトインターフェース及び/又はコントローラを含む。メモリ158は、DRAM及び/又はSRAM、不揮発性メモリ(例えば、フラッシュメモリ)などの任意の配列を含む。ストレージ160は、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、及び/又はデータストレージ装置の任意の他のタイプ又はこれらの任意の組み合わせを含む。ユーザーインターフェース154は、キーボード、マウス、モニター、ビデオキャプチャー又は伝送装置、マイク、スピーカー、タッチスクリーンのような任意のタイプのヒューマンインターフェース装置だけでなく、そのような装置の任意の仮想化又はリモートバージョンを含む。ネットワークインターフェース156は、イーサネット、Wi-Fi、ブルートゥース(登録商標)又は任意の他のコンピュータのネットワーキング構成を介して通信するための1つ以上のアダプター又は他の装置を含み、コンポーネントがイントラネット、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などのような物理的及び/又は論理的なネットワークを通じて通信できるようにする。GPU162、FPGA157、及びASIC163は、本発明の実施形態による量子化及び/又は他のニューラルネットワークプロセッシングの中の任意のもの又は全てを効率的に実装するように構成するプログラム可能なMAC(multiply- accumulate computations)のハードウェアのような専用のハードウェアを含む。
【0093】
システム150の任意の又は全てのコンポーネントは、システムバス164を介して相互連結される。システムバス164は、電力バス、アドレス及びデータバス、SATA(Serial AT Attachment)、PCI(Peripheral Component Interconnect)、PCI-e(Peripheral Component Interconnect Express)、SMB(System Management Bus)、及びコンポーネントをある場所からローカルに及び/又は異なる場所の間に分散されて動作する他のタイプのインターフェースのような高速インターコネクトを含む多様なインターフェースを通称する。
【0094】
システム150は、また多様なチップセット、インターフェース、アダプター、グルーロジック、プログラム可能な又はプログラム可能でないロジック装置、又はアレイのようなエンベデッドコントローラ、ASIC、エンベデッドコンピュータ、スマートカードなどを含み、システム150の多様なコンポーネントが、本発明の実施形態による方法及び/又は装置のうちの任意のもの又は全部を実装するために共に作動するようにする。システム150の任意のコンポーネントは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実装される。一実施形態で、任意の又は全てのコンポーネントは、仮想化された形態及び/又は、例えばデータセンター内で又は多数のデータセンターに分散されて、リソースの柔軟なプロビジョニングを有するクラウドベースの実装で実行される。
【0095】
本発明の実施形態による方法又はアルゴリズム及び機能の部分又はステップは、システム150を含むハードウェアやプロセッサによって実行される1つ以上のソフトウェアモジュール又はその2つの組み合わせで直接具現化される。ソフトウェアで実行される場合に、機能は、タンジブル(Tangible)、非一時的コンピュータ読み取り可能な記録媒体上に1つ以上の命令語又はコードとして格納又は伝送される。ソフトウェアモジュールは、RAM(Random Access Memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPOM(Electrically Erasable Programmable ROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又は他の形態のストレージ媒体で有る。本発明の実施形態による任意のシステム又はそのコンポーネント又は一部は、より大きなシステムのソフトウェアスタックの一部として実装される。本発明の実施形態による任意のシステム又はそのコンポーネント又は一部は、ソフトウェアスタックそのものとして実装される。
【0096】
上述した実施形態は、多様な実装の詳細のコンテキストで説明したが、本発明の実施形態は、これら又は他の任意の特定の詳細に限定されない。例えば、一部の機能は、特定のコンポーネントによって実装されるものとして説明したが、他の実施形態で、機能は、異なる位置において存在し、多様なユーザーインターフェースを有するコンポーネントと異なるシステムとの間に分散される。特定の実施形態は、特定のプロセスやステップなどを有するものとして説明したが、このような用語は、また特定のプロセス、ステップなど、又は多数のプロセス、多数のステップなどで実装されるか、又は単一のプロセス、単一のステップなどに集積される実施形態を含む。また、コンポーネント又はエレメントへの参照は、コンポーネント又はエレメントの一部のみを指すことがある。
【0097】
本明細書及び請求の範囲において、「第1の」及び「第2の」のような用語の使用は、これらが指すことを区別するためのものだけであり、文脈上明らかに別の意味を示していると判定されない限り、任意の空間的又は時間的順序を示さない場合がある。第1のものに対する言及は、第2のものの存在を意味しない場合もある。
【0098】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0099】
110 ローカルIFM(入力特徴マップ)キュー
112 重み値バッファ
114 セレクター
116 4ビット乗算器
118 シフトレジスタ
120 ブリック(brick)
122 セット
124 オフセット加算器ツリー
150 システム
152 中央処理装置
154 ユーザーインターフェース
156 ネットワークインターフェース
157 FPGA
158 メモリ
160 ストレージ
162 GPU
163 ASIC