(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024159416
(43)【公開日】2024-11-08
(54)【発明の名称】深層学習ネットワークのための最適化方法及び演算システム
(51)【国際特許分類】
G06N 3/0495 20230101AFI20241031BHJP
【FI】
G06N3/0495
【審査請求】有
【請求項の数】5
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023171693
(22)【出願日】2023-10-02
(31)【優先権主張番号】112116132
(32)【優先日】2023-04-28
(33)【優先権主張国・地域又は機関】TW
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.THUNDERBOLT
(71)【出願人】
【識別番号】504429600
【氏名又は名称】緯創資通股▲ふん▼有限公司
【氏名又は名称原語表記】WISTRON CORPORATION
(74)【代理人】
【識別番号】100204490
【弁理士】
【氏名又は名称】三上 葉子
(72)【発明者】
【氏名】郭 峻因
(72)【発明者】
【氏名】林 威志
(57)【要約】 (修正有)
【課題】深層学習ネットワークのために用いられる最適化方法及び演算システムを提供する。
【解決手段】深層学習ネットワークのための最適化方法であって、第1データを取得し、第1データを2のべき乗量子化を通じて量子化する。2のべき乗量子化後の第1データは、第1フォーマット又は第2フォーマットであり、第1フォーマット又は第2フォーマット中の第1の値の数は異なる。方法はまた、第2データを取得し、第2データを動的固定点量子化を通じて量子化し、2のべき乗量子化後の量子化された第1データ及び動的固定点量子化後の量子化された第2データに、深層学習ネットワークに関する演算を実行し、予測精度を高め、モデルの複雑さを低減させる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化することであって、前記第1フォーマット又は前記第2フォーマット中の第1の値の数は異なることと、
前記第1フォーマット又は前記第2フォーマットを目標フォーマットとして用いることと、
前記目標フォーマットに基づいて量子化された前記第1データを用いることにより、深層学習ネットワークに関する演算を実行することと
を含む、
深層学習ネットワークのための最適化方法。
【請求項2】
前記第1フォーマット又は前記第2フォーマットを前記目標フォーマットとして用いることは、
量子化誤差に基づいて前記第1フォーマット及び前記第2フォーマットのうちの1つを前記目標フォーマットとして決定することであって、前記量子化誤差は前記2のべき乗量子化により前記第1フォーマット又は前記第2フォーマットに量子化された前記第1データと、前記2のべき乗量子化により量子化されていない前記第1データとの間の誤差であること
を含む、
又は、
前記第1データは、前記深層学習ネットワークに基づく事前訓練モデル中の複数の層のうちの1つに属し、前記第1データを前記2のべき乗量子化を通じて前記第1フォーマット又は前記第2フォーマットに量子化することは、
前記層のスケーリング係数を決定することと、
前記スケーリング係数に基づいて前記層の量子化値の上限及び前記量子化値の下限を決定することと、
前記量子化値の前記上限及び前記量子化値の前記下限に基づいて前記層のための前記2のべき乗量子化におけるデータセットを決定することであって、前記データセットは前記第1フォーマット及び前記第2フォーマット中の量子化値を定義するために用いられることと
を含む、
請求項1に記載の深層学習ネットワークのための最適化方法。
【請求項3】
前記第1フォーマットはワンホットエンコーディングであり、前記第2フォーマットはツーホットエンコーディングであり、前記第1データは前記深層学習ネットワークに基づく事前訓練モデルの重みであり、前記演算は乗算演算であり、前記目標フォーマットは前記ワンホットエンコーディングであり、前記目標フォーマットに基づいて量子化された前記第1データを用いて前記深層学習ネットワークに関する前記演算を実行することは、
前記目標フォーマット中の前記第1の値の1つの位置に基づいて、シフターを介して第2データをシフトすることであって、前記第2データは前記深層学習ネットワークにおいて前記第1データで前記演算を実行するためのパラメータであること
を含む、
又は、
前記演算は乗算演算であり、前記目標フォーマットはツーホットエンコーディングであり、前記目標フォーマットに基づいて量子化された前記第1データを用いて前記深層学習ネットワークに関する前記演算を実行することは、
前記目標フォーマット中の前記第1の値の2つの位置に基づいて、前記シフターを介して前記第2データをシフトすることと、
加算器を介して、シフトされた前記第2データを加算することと
を含む、
請求項1に記載の深層学習ネットワークのための最適化方法。
【請求項4】
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて量子化することであって、前記2のべき乗量子化を通じて量子化された前記第1データは第1フォーマット又は第2フォーマットであり、前記第1フォーマット又は前記第2フォーマット中の第1の値の数は異なることと、
第2データを取得することと、
前記第2データを動的固定点量子化を通じて量子化することと、
前記2のべき乗量子化後の量子化された前記第1データ、及び前記動的固定点量子化後の量子化された前記第2データに、深層学習ネットワークに関する演算を実行することと
を含む、
深層学習ネットワークのための最適化方法。
【請求項5】
プログラムコードを格納するよう構成されたメモリと、
前記メモリに結合され、
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化することであって、前記第1フォーマット又は前記第2フォーマット中の第1の値の数は異なることと、
前記第1フォーマット又は前記第2フォーマットを目標フォーマットとして用いることと、
前記目標フォーマットに基づいて量子化された前記第1データを用いることにより、深層学習ネットワークに関する演算を実行することと
を実行するため、前記プログラムコードをロードするよう構成されたプロセッサと
を含む、
深層学習ネットワークのための演算システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は機械学習技術に関するものであり、特に深層学習ネットワークのための最適化方法及び演算システムに関する。
【背景技術】
【0002】
近年、人工知能(Artificial Intelligence、AI)技術の継続的な発展に伴い、ニューラルネットワークのパラメータ量及び演算の複雑さも増加している。その結果、深層学習ネットワークのための圧縮技術が大きく進展している。量子化はモデルを圧縮するための重要な技術であることに注意されたい。しかし、既存の量子化されたモデルの予測精度及び圧縮率にはまだ発展の余地がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
上記を鑑み、本発明の1つの実施形態は、ハイブリッド式の効果的なコーディングと量子化を用いることにより、予測精度を高めて一定の圧縮率を維持することのできる、深層学習ネットワークのための最適化方法及び演算システムを提供する。
【課題を解決するための手段】
【0004】
本発明の1つの実施形態における深層学習ネットワークのための最適化方法は、第1データを取得することと、第1データを2のべき乗量子化(Power of Two Quantization)を通じて第1フォーマット又は第2フォーマットに量子化することとであって、第1フォーマット又は第2フォーマット中の第1の値の数は異なることと、第1フォーマット又は第2フォーマットを目標フォーマットとして用いることと、目標フォーマットに基づき量子化された第1データを用いることにより、深層学習ネットワークに関する演算を実行することとを含む(が、これに限定されない)。
【0005】
本発明の1つの実施形態における深層学習ネットワークのための最適化方法は、第1データを取得することと、第1データを2のべき乗量子化を通じて量子化することであって、2のべき乗量子化を通じて量子化された第1データは第1フォーマット又は第2フォーマットであり、第1フォーマット又は第2フォーマット中の第1の値の数は異なることと、第2データを取得することと、第2データを動的固定点量子化(dynamic fixed-point quantization)を通じて量子化することと、2のべき乗量子化後の量子化された第1データ及び動的固定点量子化後の量子化された第2データに、深層学習ネットワークに関する演算を実行することとを含む(が、これに限定されない)。
【0006】
本発明の1つの実施形態における深層学習ネットワークのための演算システムは、メモリとプロセッサとを含む。メモリは、プログラムコードを格納するよう構成される。プロセッサはメモリに結合される。プロセッサは、第1データを取得することと、第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化することであって、第1フォーマット又は第2フォーマット中の第1の値の数は異なることと、第1フォーマット又は第2フォーマットを目標フォーマットとして用いることと、目標フォーマットに基づき量子化された第1データを用いることにより、深層学習ネットワークに関する演算を実行することというステップを実行するため、プログラムコードをロードするよう構成される。
【発明の効果】
【0007】
上記に基づき、本発明の実施形態による深層学習ネットワークのための最適化方法及び演算システムによると、2つのデータを2のべき乗量子化及び動的固定点量子化を通じて特定のフォーマットに量子化する。このようにして、予測精度を高めることができ、モデルの複雑さを低減させることができる。
【0008】
本発明の上記特徴及び利点をより理解しやすくするため、以下に特定の実施形態を添付図面と併せて詳細に説明する。
【図面の簡単な説明】
【0009】
【
図1】本発明の1つの実施形態による演算システムのコンポーネントのブロック図である。
【
図2】本発明の1つの実施形態による深層学習ネットワークのための最適化方法のフロー図である。
【
図3】本発明の1つの実施形態による量子化比較の概略図である。
【
図4】本発明の1つの実施形態による層毎(layer-by-layer)の量子化幅の概略図である。
【
図5】本発明の1つの実施形態による2のべき乗量子化のフロー図である。
【
図6】本発明の1つの実施形態による2のべき乗量子化の量子化レベルの概略図である。
【
図8】本発明の1つの実施形態による深層学習ネットワークのための最適化方法のフロー図である。
【
図10】動的固定点量子化を表すもう1つの例である。
【
図11A】ツーホットエンコーディング(two-hot encoding)の積和(Multiply-Accumulate、MAC)演算を表す例である。
【
図11B】ツーホットエンコーディングのMAC演算を表す例である。
【
図12】本発明の1つの実施形態による応用シナリオのフロー図である。
【
図13】本発明の1つの実施形態によるモデル最適化のフロー図である。
【発明を実施するための形態】
【0010】
図1は、本発明の1つの実施形態による演算システム10のコンポーネントのブロック図である。
図1を参照し、演算システム10は、メモリ11とプロセッサ12とを含む(が、これに限定されない)。演算システム10は、1つ以上のデスクトップコンピュータ、ノートブックコンピュータ、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス、サーバ、又は他の電子デバイスであってよい。
【0011】
メモリ11は、任意のタイプの固定又は取外し可能なランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、又は類似のコンポーネントであってよい。1つの実施形態において、メモリ11は、プログラムコード、ソフトウェアモジュール、構成設定、データ、又はファイル(例えば、データ、モデルパラメータ、又は演算値)を格納するよう構成され、後続の実施形態において詳細に説明する。
【0012】
プロセッサ12はメモリ11に結合される。プロセッサ12は、中央処理装置(CPU)、グラフィックプロセッシングユニット(GPU)、又は他のプログラム可能な汎用又は特定用途向けマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、プログラマブルコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ニューラルネットワークアクセラレータ、又は他の類似の要素、又は上記要素の組合せであってよい。1つの実施形態において、プロセッサ12は、演算システム10の演算の全て又は一部を実行するよう構成され、メモリ11に格納された様々なプログラムコード、ソフトウェアモジュール、ファイル、及びデータをロードして実行することができる。
【0013】
以下に、演算システム10内の様々なデバイス、コンポーネント、及びモジュールと併せて本発明の実施形態における方法を説明する。方法の各プロセスは実装に応じて調整されてよく、本発明はこれに限定されない。
【0014】
図2は、本発明の1つの実施形態による深層学習ネットワークのための最適化方法のフロー図である。
図2を参照し、プロセッサ12は第1データを取得する(ステップS210)。1つの実施形態において、第1データは深層学習ネットワークに基づく事前訓練モデルの重みである。深層学習ネットワークにおいて、畳み込み演算は入力フィーチャマップ(例えば、画像又は画像特徴セット)で畳み込みカーネルをスライドさせることによって実現されることに注意されたい。畳み込み演算は積和演算(又はMAC演算と呼ばれる)に関係し、積和演算は重み付け演算の合計と見なされてよい。重み付け演算の観点から、畳み込み演算において用いられる畳み込みカーネル中の要素は、重み付け演算の重みと見なされてよく、入力フィーチャマップは重みに対応する値と見なされてよい。
【0015】
事前訓練モデルは、深層学習ネットワーク(例えば、YOLO、畳み込みニューラル ネットワーク(CNN)、長・短期記憶(Long Short-Term Memory、LSTM)、又は敵対的生成ネットワーク(Generative Adversarial Network、GAN)、及び訓練サンプル及び対応するラベル又は実際の結果を入力することにより訓練されたモデル)に基づくアルゴリズムを指す。深層学習ネットワークに基づくモデルは、訓練サンプル及び対応するラベル又は実際の結果の間の関係を分析することで、そこから法則を導き出すことができ、該法則を通じて未知のデータを予測する。事前訓練モデルは、学習後に構築された機械学習モデルであり、評価データを推論する。この事前訓練モデルは、画像認識/分類、物体検出、意味解析、又は他の推論に用いることができ、本発明の実施形態は事前訓練モデルの使用を限定しないことに注意されたい。いくつかの応用シナリオにおいて、訓練された事前訓練モデルは、予め設定された精度の基準を満たすことができ得る。
【0016】
他の実施形態において、第1データは事前訓練モデル中の他のデータ/パラメータ、又はネットワークベースの深層学習のための関連するアルゴリズム関連パラメータであってもよい。
【0017】
1つの実施形態において、プロセッサ12は、第1データをメモリ11から取得してよい、又は、第1データを通信送受信器(例えば、Wi-Fi、モバイルネットワーク、又は光ファイバー網をサポートする送受信器)、又は伝送インターフェイス(例えば、USB又はThunderbolt)を介して外部電子デバイス又は記憶装置から取得してよい。
【0018】
プロセッサ12は、第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化する(ステップS220)。具体的には、事前訓練モデルの各レイヤは対応するパラメータ(例えば、重み、入力/出力アクティベーション値/フィーチャ値/フィーチャマップ)を有する。過度な数のパラメータは、演算及び格納において高い要件を必要とし、パラメータの複雑さが増すほど演算量も増加すると考えられる。量子化は、ニューラルネットワークの複雑さを低減させるために用いられる技術の1つである。量子化は、アクティベーション/フィーチャ又は重みを表すために用いられるビットの数を減少させる。
【0019】
多くのタイプの量子化方法が存在する。例えば、対称量子化、非対称量子化、及びクリッピングである。加えて、2のべき乗量子化は、鐘形状及びロングテールの重みに対して提案された不均一量子化スキームである。このスキームは、全ての量子化値をいくつかの2のべき乗(又は2の冪)の加算(即ち、2のべき乗のデータセット)に制限し、演算効率を高めることが可能であり、重みの数値分布に適用可能である。2のべき乗のデータセットは、例えば{0,20,21,22,23,24}であるが、他の2のべき乗の組合せであってもよく、本発明の実施形態はこれに限定されない。
【0020】
図3は、本発明の1つの実施形態による量子化比較の概略図である。
図3を参照し、不均一量子化された量子化レベルは、より細かくより均一であり、これは浮動小数点値が0と1の間であるとき量子化のためのより多くの量子化点が用いられることを意味する。ただし、2のべき乗量子化の量子化点の分布は、他の領域よりも浮動小数点値が0に近い領域においてより緊密であり、浮動小数点値が1に近い領域における量子化点の分布は他の領域よりもまばらである。ここから分かるように、データ中の値を2のべき乗に符号化する量子化方法は、モデル全体の一部の精度喪失を引き起こす可能性がある。ただし、重みの感度が低く且つ数値分布が比較的集中しているため、2のべき乗量子化は重みの量子化に適している。
【0021】
第1フォーマット及び第2フォーマットは、上述した2のべき乗データセットの異なるフォーマットである。第1フォーマット及び/又は第2フォーマット中の第1の値の数は異なる。この第1の値は、例えば「1」である。つまり、2のべき乗データセットにおいて、第1の値はデータセット中の各要素に対応する値「1」の数である。例えば、2のべき乗により量子化された値は2であり、データセット{0,20,21,22}の値は{0,0,1,0}であり、第1の値「1」の数は1つである。もう1つの例において、例えば、2のべき乗により量子化された値が3の場合、データセット{0,20,21,22}の値は{0,1,1,0}であり、第1の値「1」の数は2つである。
【0022】
1つの実施形態において、第1フォーマットはワンホットエンコーディング(one-hot encoding)である。つまり、第1フォーマットにおける2のべき乗により量子化されたデータセットに対応する値「1」の数は1つである。例えば、データセット{0,20,21,22}の値は{0,0,1,0}であり、第1の値「1」の数は1である。一方、第2フォーマットはツーホットエンコーディング(two-hot encoding)である。つまり、第2フォーマットにおける2のべき乗により量子化されたデータセットに対応する値「1」の数は2つである。例えば、データセット{0,20,21,22}の値は{0,1,1,0}であり、第1の値「1」の数は2つである。
【0023】
図4は、本発明の1つの実施形態による層毎(layer-by-layer)の量子化幅の概略図である。
図4を参照し、深層学習ネットワークに基づく事前訓練モデルはL
1~L
NのN個の層を含み、Nは正の整数である。各層L
1~L
Nは、畳み込み層、プーリング層、全結合層、又は他の層であってよく、本発明の実施形態は層のタイプを限定しない。第1データは、これら層L
1~L
Nのうちの特定層中のパラメータ(例えば重み)に属する。これら層L
1~L
Nは、それぞれのスケール/スケーリング係数S
1~S
Nにそれぞれ対応する。スケーリング係数S
1~S
Nは、浮動小数点と整数/量子化値との間の比例関係を表す。線形量子化を例とすると、数式は次となる。
【数1】
該式において、xとqはそれぞれ量子化前後の値であり、sはスケーリング係数、zはゼロ点(即ち、元々の範囲中の0の量子化値)であり、round()は整数の丸めるために用いられる。ここから、事前訓練モデルがL
1~L
NのN個の層を含む場合、S
1~S
NのN個のスケーリング係数が存在することが分かる。スケーリング係数S
1~S
Nは、モデルの訓練プロセスの間、継続して後進される。
【0024】
図5は、本発明の1つの実施形態による2のべき乗量子化のフロー図である。
図5を参照し、プロセッサ12は、第1データが属する層のスケーリング係数を決定してよい(ステップS510)。スケーリング係数の数学的表現は次となる。
【数2】
該式において、nはn番目の層L
nを表し(nは1~Nのうちの1つ)、W
nはこの層L
n中の第1データの値(例えば重み)であり、max()は最大値である。即ち、層L
nのスケーリング係数は層L
n中の第1データ中の最大値である。
【0025】
プロセッサ12は、スケーリング係数に基づいて第1データが属する層の量子化値の上限と量子化値の下限とを決定してよい(ステップS520)。量子化値が8ビットであると例示し、量子化値の上限と下限の数式は次となる。
【数3】
該式において、ub
nは層L
nの量子化値の上限であり、lb
nは層L
nの量子化値の下限である。量子化値が他のビット数である場合、量子化値の下限における7はそれに応じて調整されてよい。各層はそれぞれのスケーリング係数に対応することから、量子化値の上限及び/又は量子化値の下限も層によって異なる。
【0026】
【0027】
図5を参照し、プロセッサ12は、量子化値の上限及び量子化値の下限に基づいて第1データの層の2のべき乗量子化に用いられるデータセットを決定してよい(ステップS530)。データセットは、第1フォーマットおよび第2フォーマット中の量子化値を定義するために用いられる。具体的には、データセットQ
nの数式は次となる。
【数5】
該式において、Q
nは層L
nのデータセットである。つまり、量子化値の上限及び量子化値の下限は、2のべき乗項の上限及び下限である。層L
nの第1データの全ての値(例えば重み)は、データセットQ
nの順列と組合せである。
【0028】
図2を参照し、プロセッサ12は、第1フォーマット又は第2フォーマットを目標フォーマットとする(ステップS230)。1つの実施形態において、プロセッサ12は、第1データを第1フォーマットの量子化データ及び第2フォーマットの量子化データに量子化し、次いで第1フォーマットの量子化データ及び第2フォーマットの量子化データのうちの1つを選択する。選択されたフォーマットは目標フォーマットである。特筆すべき点として、ワンホットエンコーディングを用いる複雑さは低いが、モデルの予測精度は失われる可能性がある。一方、ツーホットエンコーディングを用いることは予測精度を高めるが、複雑さが増加する。これに比べ、本発明の実施形態は性能指標(例えば、精度又は複雑さ)に基づいて2つのフォーマットのうちの1つを選択することができ(以降、「ハイブリッド符号化」と呼ぶ)、応用要件に符合する。
【0029】
1つの実施形態において、プロセッサ12は、量子化誤差に基づいて第1フォーマット及び第2フォーマットのうちの1つを目標フォーマットとして決定してよい。量子化誤差は、2のべき乗によって第1フォーマット又は第2フォーマットに量子化された第1データと、2のべき乗によって量子化されていない(元々の)第1データとの間の誤差である(例えば、ユークリッド距離、平均二乗誤差(Mean Square Error、MSE)、二乗平均平方根誤差(Root-Mean-Square Error、RMSE)、最小二乗平均平方根誤差(Least-Mean-Square Error、LMSE)、コサイン類似度、又はコサイン距離)。即ち、性能指標は予測精度である。量子化誤差が小さい場合、予測精度は維持される可能性があり、さもなくば予測精度は減少する可能性がある。
【0030】
1つの実施形態において、プロセッサ12は、最小量子化誤差を有するフォーマットを目標フォーマットとして選択してよい。例えば、第1フォーマットの量子化データと第1データとの間の誤差が第2フォーマットの量子化データと第1データとの間の誤差よりも小さい場合は目標フォーマットは第1フォーマットである、もしくはその逆であり、詳細はここでは繰り返し述べない。0.361を例とすると、ワンホットエンコーディングにおける2のべき乗量子化後の値は0.25(即ち2-2)であり、ツーホットエンコーディングにおける2のべき乗量子化後の値は0.375(即ち2-2+2-1)である。このため、ツーホットエンコーディングに対応する量子化誤差が比較的小さい。0.243を例とすると、ワンホットエンコーディングにおける2のべき乗量子化後の値は0.25(即ち2-2)であり、ツーホットエンコーディングにおける2のべき乗量子化後の値は0.251953125(即ち2-2+2-9)である。このため、ワンホットエンコーディングに対応する量子化誤差が比較的小さい。
【0031】
図7は、2のべき乗量子化を表す例である。
図7を参照し、第1データの浮動小数点が32ビットであることを例示する。目標フォーマットがツーホットエンコーディングであると仮定し、ツーホットエンコーディングの2のべき乗量子化後(ステップS710)、第1データ(即ち8ビット量子化データ)がツーホットエンコーディングに符合する目標フォーマットに基づいて量子化される。即ち、値「1」の数は2つである。
【0032】
図2を参照し、プロセッサ12は、深層学習ネットワークに関する演算を実行するため、目標フォーマットに基づいて量子化された第1データを用いる(ステップS240)。具体的には、演算は乗算演算、MAC演算、及び/又は加算演算であってよい。例えば、第1データが重みである場合、それらの量子化データが畳み込み層、全結合層、又は他の演算層を実装するために(量子化された)フィーチャマップとMAC演算を実行するために用いられてよい。
【0033】
図8は、本発明の1つの実施形態による深層学習ネットワークのための最適化方法のフロー図である。
図8を参照し、プロセッサ12は第1データを取得する(ステップS810)。具体的には、ステップS810の詳細についてはステップS210の説明を参照することができ、ここでは繰り返し述べない。
【0034】
プロセッサ12は、第1データを2のべき乗量子化を通じて量子化する(ステップS820)。具体的には、2のべき乗量子化後の第1データ(即ち量子化データ)は、第1フォーマット及び第2フォーマットのうちの1つであり、第1フォーマット及び第2フォーマット中の第1の値の数は異なる。ステップS820の詳細についてはステップS220の説明を参照されたい。1つの実施形態において、プロセッサ12は更に、ステップS220に基づいて目標フォーマットを決定してよい。もう1つの実施形態において、プロセッサ12は、2のべき乗量子化のための第1フォーマット及び第2フォーマットのうちの1つの使用を事前に決定している。
【0035】
一方、プロセッサ12は第2データを取得する(ステップS830)。1つの実施形態において、第2データは、深層学習ネットワークにおいて第2データで算出されたパラメータである。1つの実施形態において、第2データは、深層学習ネットワークに基づく事前訓練モデルのフィーチャ値/マップ又はアクティベーション値である。事前訓練モデルの詳細についてはステップS210の説明を参照することができ、ここでは繰り返し述べない。もう1つの実施形態において、第2データは事前訓練モデルの他のデータ/パラメータ、又はネットワークベースの深層学習のための関連するアルゴリズム関連パラメータであってもよい。
【0036】
1つの実施形態において、プロセッサ12は、第2データをメモリ11から取得する、又は第2データを通信送受信器(例えば、Wi-Fi、モバイルネットワーク、又は光ファイバー網をサポートする送受信器)、又は伝送インターフェイス(例えば、USB又はThunderbolt)を介して外部電子デバイス又は記憶装置から取得する。
【0037】
プロセッサ12は、動的固定点量子化を通じて第2データを量子化する(ステップS840)。具体的には、動的固定点量子化は、固定点量子化の限られた表現能力の問題を解決するために提供された量子化スキームである。「動的」は、事前訓練モデル中の各層が自身の量子化パラメータを有することを意味する。量子化パラメータは、例えば小数/分数の長さ、整数の長さ、又はビット幅である。
【0038】
図9は、動的固定点量子化を表す例である。
図9を参照し、値を表す10ビットのうち、符号ビット902を除き、仮数903は整数部904と小数部905とを含む。小数/分数の長さが3である場合(即ち、fl=3)、小数部905は図示するように3ビットを占める。応用シナリオによっては、動的固定点量子化は非対称量子化よりもハードウェア実装に適する。動的固定点量子化の数式は次となる。
【数6】
該式において、q
2とx
iは量子化前後の値であり、Bは量子化に用いられるビット幅であり、flは小数の長さであり、sは符号を表す。
【0039】
図10は、動的固定点量子化を表すもう1つの例である。
図10を参照し、第2データの浮動小数点を32ビットとして例示すると、マルチスケール動的固定点量子化は事前の分析で得られた動的長さ(例えば3)に基づいて量子化し(ステップS1010)、これにより8ビットの量子化データを取得する。
【0040】
1つの実施形態において、プロセッサ12は、第2データをマルチスケール動的固定点量子化を通じて量子化してよい。「マルチスケール」は、事前訓練モデルの各層に対応する量子化器が値範囲の異なるセグメントにて異なる量子化パラメータを用いることを意味する。量子化パラメータは、例えば小数/分数の長さ、整数の長さ、又は仮数である。例えば、プロセッサ12は、より緊密な数値分布を有する中央セグメントに対し、小数の長さ(Fractional Length、FL)により多くのビット幅を割り当て、プロセッサ12は、よりまばらな数値分布を有する末尾セグメントに対し、整数の長さ(Integer Length、IL)により多くのビット幅を割り当て、よって「マルチスケール」を達成する。
【0041】
図8を参照し、プロセッサ12は、2のべき乗量子化の後の第1データ及び動的固定点量子化後の第2データに深層学習ネットワークに関する演算を実行する(ステップS850)。具体的には、演算は、乗算演算、MAC演算、及び/又は加算演算であってよい。例えば、第1データが重みであり且つ第2データが入力/出力フィーチャマップ/値である場合、2つのデータに対応する量子化データは、畳み込み層、全結合層、又は他の演算層を実装するため、MAC演算の対象とされてよい。
【0042】
1つの実施形態において、演算は乗算演算であり、目標フォーマットはワンホットエンコーディングである。プロセッサ12は乗算演算を実現するため、目標フォーマット中の第1の値の1つの位置に基づいて、シフターを介して量子化された第2データをシフトする。1の値を有するのはワンホットエンコーディングにおいて1つのビットのみであることから、プロセッサ12は、データの組合せ中のこの1ビットの位置を見つけることができ、これに応じて量子化された第2データをシフトし、これによりMAC演算の結果を取得する。例えば、最下位ビットが0番目のビットであることを基準とし、「1」が1番目のビットにある場合、プロセッサ12は第2データを1ビットシフトする。乗算演算はシフトにより実現できることが分かる。
【0043】
例えば、畳み込み演算にて用いられるMAC演算は次である。
【数7】
そのうち、A
jは第2データの値であり(例えばフィーチャ値)、W
jは第1データの値であり(例えば重み)、Mは量子化データの長さで且つ正の整数である。第1データの値がワンホットエンコーディングにより量子化されたと仮定し、MAC演算は次に変更される。
【数8】
【0044】
もう1つの実施形態において、演算は乗算演算であり、目標フォーマットはツーホットエンコーディングである。プロセッサ12は乗算演算を実現するため、目標フォーマット中の第1の値の2つの位置に基づいて、シフターを介して量子化された第2データをシフトし、加算器を介してシフトされた第2データを加算する。ツーホットエンコーディングは1の値である2つのビットを有することから、プロセッサ12はデータの組合せ中の2つのビットの位置を見つけることができ、これに応じて量子化された第2データをシフトして加算を実行し、これによりMAC演算の結果を取得する。加算演算はシフトと加算により実現できることが分かる。
【0045】
【0046】
図11Aと
図11Bは、ツーホットエンコーディングのMAC演算を表す例である。
図11Aを参照し、量子化された第2データは[0 1 0 1 0 1 1 0]であり、量子化された第1データは[0 0 0 0 1 0 1 0]である。2つのデータを乗算することにより、出力データを[0 1 0 1 1 1 0 0]として取得することができる。
【0047】
図11Bを参照し、
図11Aの量子化された第1データはツーホットエンコーディングに基づくことから、「1」の値が2つある。最下位ビットが0番目のビットであることを基準とし、1番目のビットと3番目のビットが「1」である。このため、プロセッサ12は量子化された第2データをそれぞれ1ビット及び3ビットでシフトする。次に、プロセッサ12は1ビットシフトされた第2データと3ビットシフトされた第2データを加算し、出力データはやはり[0 1 0 1 1 1 0 0]である。
【0048】
シフターと加算器の演算の複雑さは乗算器のものよりも低いことから、演算の複雑さは2のべき乗量子化を通じてシフターと加算器の組合せにより低減することができる。
【0049】
上記実施形態は層毎に実装することができることに注意されたい。
【0050】
例えば、
図12は本発明の1つの実施形態による応用シナリオのフロー図である。事前訓練モデルの特定の層を示す
図12を参照し、プロセッサ12は32ビット浮動小数点値の入力フィーチャーマップを取得し(ステップS1201)、この入力フィーチャーマップにマルチスケール動的固定点量子化を実行する(ステップS1202)ことで、32ビット出力フィーチャマップを8ビットの量子化された入力フィーチャーマップに量子化する。一方、プロセッサ12は32ビット浮動小数点値の重みを取得し(ステップS1204)、該重みに2のべき乗量子化を実行する(ステップS1205)ことで、32ビット浮動小数点値の重みは8ビットの量子化された重みに量子化される。第1フォーマット及び第2フォーマットのうちの1つを選択することを「ハイブリッド符号化」と呼ぶ。プロセッサ12は、対応する演算を実行するため、量子化されたフィーチャマップと量子化された重みを事前訓練モデルのフィーチャ層に入力する(ステップS1207)。次に、プロセッサ12は、出力フィーチャマップを8ビットの量子化された出力フィーチャマップに量子化するため、算出された出力フィーチャマップにマルチスケール動的固定点量子化を実行する(ステップS1209)。プロセッサ12は、入力フィーチャーマップを次の層として用い、上記ステップを繰り返してよい。
【0051】
図13は、本発明の1つの実施形態によるモデル最適化のフロー図である。
図13を参照し、モデルのパラメータが層毎に量子化された後、プロセッサ12は量子化されたモデルを取得してよい。プロセッサ12は、量子化されたモデルを後学習させてよい(ステップS1310)。例えば、量子化モデルはラベル付けされた結果を有する訓練サンプルを用いて訓練されてよい。プロセッサ12は、訓練された量子化モデルを際訓練/微調整してよい(ステップS1320)。応用シナリオによっては、訓練されたモデルを後学習させることは予測精度を低下させる可能性がある。このため、精度を微調整によって高めることができる。例えば、パラメータタイプが重みである量子化の勾配を決定するため、straight-through estimator with boundary constraint(STEBC)が用いられる。最後に、プロセッサ12は微調整された量子化モデルを取得してよい(ステップS1330)。このようにして、予測精度を更に高めることができる。
【0052】
応用シナリオによっては、量子化モデルは、画像認識、物体検出、意味解析、又は他の推論に用いられてよい。
【0053】
まとめると、本発明の実施形態の深層学習ネットワークのための最適化方法及び演算システムにおいて、2のべき乗量子化後のワンホットエンコーディングされた第1データが採用され、第2データはマルチスケール動的固定点量子化により量子化されて、演算のため訓練されたモデルの特定の層に入力される。このようにして、予測精度を高めることができ(例えば、最大85%以上、又は量子化されていないモデルと比較した差は3%未満)、ハードウェアを介した実装に適用される。
【0054】
実施形態により本発明を上記に開示したが、本発明をこれらに限定することを意図していない。当業者は、本発明の精神及び範囲から逸脱することなく、いくつかの改変及び変更を行うことができる。このため、本発明によって保護される範囲は、添付の特許請求の範囲によって定義されるべきである。
【産業上の利用可能性】
【0055】
本発明の深層学習ネットワークのための最適化方法及び演算システムは、機械学習技術に応用することができる。
【符号の説明】
【0056】
10:演算システム
11:メモリ
12:プロセッサ
S210~S240、S510~S30、S710、S810~S850、S1010、S1201~S1209、S1310~S1330:ステップ
L1~LN:層
S1~SN:スケーリング係数
902:符号ビット
903:仮数
904:整数部
905:小数部
fl:小数の長さ
【手続補正書】
【提出日】2024-09-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化することであって、第1データを前記2のべき乗量子化により前記第1フォーマットに量子化した後のデータセット中の第1の値を有する要素と、第1データを前記2のべき乗量子化により前記第2フォーマットに量子化した後のデータセット中の第1の値を有する要素の数は異なることと、
前記第1フォーマット又は前記第2フォーマットを目標フォーマットとして用いることは、
量子化誤差に基づいて前記第1フォーマット及び前記第2フォーマットのうちの1つを前記目標フォーマットとして決定することであって、前記量子化誤差は前記2のべき乗量子化により前記第1フォーマット又は前記第2フォーマットに量子化された前記第1データと、前記2のべき乗量子化により量子化されていない前記第1データとの間の誤差であること
を含むことと、
前記目標フォーマットに基づいて量子化された前記第1データの量子化データを用いることにより、深層学習ネットワークに関する演算を実行することと
を含む、
深層学習ネットワークのための最適化方法。
【請求項2】
前記第1データは、前記深層学習ネットワークに基づく事前訓練モデル中の複数の層のうちの1つに属し、前記第1データを前記2のべき乗量子化を通じて前記第1フォーマット又は前記第2フォーマットに量子化することは、
前記層のスケーリング係数を決定することと、
前記スケーリング係数に基づいて前記層の量子化値の上限及び前記量子化値の下限を決定することと、
前記量子化値の前記上限及び前記量子化値の前記下限に基づいて前記層のための前記2のべき乗量子化における前記データセットを決定することであって、前記データセットは前記第1フォーマット及び前記第2フォーマット中の量子化値を定義するために用いられることと
を含む、
請求項1に記載の深層学習ネットワークのための最適化方法。
【請求項3】
前記第1フォーマットはワンホットエンコーディングであり、前記第2フォーマットはツーホットエンコーディングであり、前記第1データは前記深層学習ネットワークに基づく事前訓練モデルの重みであり、
前記演算は乗算演算であり、前記目標フォーマットは前記ワンホットエンコーディングであり、前記目標フォーマットに基づいて量子化された前記第1データを用いて前記深層学習ネットワークに関する前記演算を実行することは、
前記目標フォーマット中の前記第1の値の1つの位置に基づいて、シフターを介して第2データをシフトすることであって、前記第2データは前記深層学習ネットワークにおいて前記第1データで前記演算を実行するためのパラメータであること
を含む、
又は、
前記演算は乗算演算であり、前記目標フォーマットはツーホットエンコーディングであり、前記目標フォーマットに基づいて量子化された前記第1データを用いて前記深層学習ネットワークに関する前記演算を実行することは、
前記目標フォーマット中の前記第1の値の2つの位置に基づいて、前記シフターを介して前記第2データをシフトすることと、
加算器を介して、シフトされた前記第2データを加算することと
を含む、
請求項1に記載の深層学習ネットワークのための最適化方法。
【請求項4】
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて量子化することであって、前記2のべき乗量子化を通じて量子化された前記第1データは第1フォーマット又は第2フォーマットであり、第1データを前記2のべき乗量子化により前記第1フォーマットに量子化した後のデータセット中の第1の値を有する要素と、第1データを前記2のべき乗量子化により前記第2フォーマットに量子化した後のデータセット中の第1の値を有する要素の数は異なり、前記第1データを前記2のべき乗量子化を通じて量子化することは、
前記第1データを前記2のべき乗量子化を通じて前記第1フォーマット又は前記第2フォーマットに量子化することと、
前記第1フォーマット又は前記第2フォーマットを目標フォーマットとして用いることは、
量子化誤差に基づいて前記第1フォーマット及び前記第2フォーマットのうちの1つを前記目標フォーマットとして決定することであって、前記量子化誤差は前記2のべき乗量子化により前記第1フォーマット又は前記第2フォーマットに量子化された前記第1データと、前記2のべき乗量子化により量子化されていない前記第1データとの間の誤差であること
を含むことと、
を含むことと、
第2データを取得することと、
前記第2データを動的固定点量子化を通じて量子化することと、
前記2のべき乗量子化後の前記第1データの量子化データ、及び前記動的固定点量子化後の前記第2データの量子化データに、深層学習ネットワークに関する演算を実行することと
を含む、
深層学習ネットワークのための最適化方法。
【請求項5】
プログラムコードを格納するよう構成されたメモリと、
前記メモリに結合され、
第1データを取得することと、
前記第1データを2のべき乗量子化を通じて第1フォーマット又は第2フォーマットに量子化することであって、第1データを前記2のべき乗量子化により前記第1フォーマットに量子化した後のデータセット中の第1の値を有する要素と、第1データを前記2のべき乗量子化により前記第2フォーマットに量子化した後のデータセット中の第1の値を有する要素の数は異なることと、
前記第1フォーマット又は前記第2フォーマットを目標フォーマットとして用いることは、
量子化誤差に基づいて前記第1フォーマット及び前記第2フォーマットのうちの1つを前記目標フォーマットとして決定することであって、前記量子化誤差は前記2のべき乗量子化により前記第1フォーマット又は前記第2フォーマットに量子化された前記第1データと、前記2のべき乗量子化により量子化されていない前記第1データとの間の誤差であること
を含むことと、
前記目標フォーマットに基づいて量子化された前記第1データの量子化データを用いることにより、深層学習ネットワークに関する演算を実行することと
を実行するため、前記プログラムコードをロードするよう構成されたプロセッサと
を含む、
深層学習ネットワークのための演算システム。
【外国語明細書】