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

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

▶ 緯創資通股▲ふん▼有限公司の特許一覧

特許7539959深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体
<>
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図1
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図2
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図3
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図4
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図5
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図6
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図7
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図8
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図9
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図10
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図11
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図12
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図13
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図14
  • 特許-深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-16
(45)【発行日】2024-08-26
(54)【発明の名称】深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体
(51)【国際特許分類】
   G06N 3/0495 20230101AFI20240819BHJP
【FI】
G06N3/0495
【請求項の数】 6
【外国語出願】
(21)【出願番号】P 2022199034
(22)【出願日】2022-12-14
(65)【公開番号】P2023174473
(43)【公開日】2023-12-07
【審査請求日】2022-12-14
(31)【優先権主張番号】111119653
(32)【優先日】2022-05-26
(33)【優先権主張国・地域又は機関】TW
【前置審査】
(73)【特許権者】
【識別番号】504429600
【氏名又は名称】緯創資通股▲ふん▼有限公司
【氏名又は名称原語表記】WISTRON CORPORATION
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【弁理士】
【氏名又は名称】吉澤 雄郎
(72)【発明者】
【氏名】郭 峻因
(72)【発明者】
【氏名】陳 柏源
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特開2021-072103(JP,A)
【文献】特開2021-056734(JP,A)
【文献】韓国公開特許第10-2021-0093648(KR,A)
【文献】特表2022-501670(JP,A)
【文献】米国特許出願公開第2020/0234126(US,A1)
【文献】TSAI, Chia-Chi et al.,"IVS-Caffe―Hardware-Oriented Neural Network Model Development",IEEE Transactions on Neural Networks and Learning Systems [online],2021年07月26日,Vol. 33,Issue 10,p. 5978-5992,[2024年07月12日検索],インターネット<URL:https://ieeexplore.ieee.org/abstract/document/9496282>,DOI: 10.1109/TNNLS.2021.3072145
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
深層学習ネットワーク用の最適化方法であって、
事前学習済みモデルから値分布を得るステップであって、該値分布は、前記深層学習ネットワークにおける1つのパラメータタイプの複数の値の統計的分布であるステップと、
前記値分布の範囲内に少なくとも1つの区切り点を決定するステップであって、前記範囲は前記少なくとも1つの区切り点によって複数のセクションに分割されるステップと、
前記複数のセクションのうちの第1セクション内の、前記パラメータタイプの前記値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、前記複数のセクションのうちの第2セクション内の、前記パラメータタイプの前記値の他の部分に対する量子化を、第2量子化パラメータを用いて実行するステップであって、前記第1量子化パラメータが前記第2量子化パラメータと異なるステップとを含み、
前記量子化を実行するステップが、
動的な固定小数点量子化をクリッピング法と組み合わせて実行するステップであって、前記第1量子化パラメータの整数部分の長さを、前記値分布内の最大絶対値及び最小絶対値に応じて決定するステップを含み、
前記深層学習ネットワーク用の最適化方法が、
量子化モデルを事後学習させて、学習済み量子化モデルを得るステップと、
前記学習済み量子化モデルを調整するステップとをさらに含み、
前記学習済み量子化モデルを調整するステップが、
境界制約付きストレートスルー推定器(STEBC)を用いて、前記パラメータタイプの重みの量子化の勾配を決定するステップであって、前記境界制約付きストレートスルー推定器は、上限と下限との間の入力勾配が出力勾配に等しくなるように構成されているステップを含む、深層学習ネットワーク用最適化方法。
【請求項2】
前記値分布の範囲内に少なくとも1つの区切り点を決定するステップが、
複数の第1探索点を前記範囲内に決定するステップと、
前記範囲を前記第1探索点のそれぞれにより分割して、複数の評価セクションを形成するステップであって、該評価セクションの各々が前記第1探索点の各々に対応するステップと、
前記第1探索点の各々に対応する前記評価セクションに対する量子化を、それぞれ異なる量子化パラメータにより実行して、前記第1探索点の各々に対応する量子化値を得るステップと、
前記第1探索点の複数の差異量どうしを比較して、前記少なくとも1つの区切り点を得るステップであって、前記差異量の各々が、前記第1探索点のうちの1つに対応し、量子化値と当該量子化値に対応する非量子化値との差異から成るステップと
を含み、
前記複数の第1探索点を決定するステップが、
前記範囲内に第1探索空間を決定するステップであって、該第1探索空間は前記第1探索点によって均等に前記評価セクションに分割されるステップを含み、
前記第1探索点の複数の差異量どうしを比較して、前記少なくとも1つの区切り点を得るステップが、
前記第1探索点のうち小さい前記差異量を有する1つの前記第1探索点を、前記少なくとも1つの区切り点として用いるステップと、
前記第1探索点のうち小さい前記差異量を有する1つの前記第1探索点により、第2探索空間を決定するステップであって、前記第2探索空間は前記第1探索空間よりも小さいステップと、
前記第2探索空間内に複数の第2探索点を決定するステップであって、隣接する2つの前記第2探索点間の距離が、隣接する2つの前記第1探索点間の距離よりも小さいステップと、
前記第2探索点の差異量どうしを比較して、前記少なくとも1つの区切り点を得るステップであって、前記差異量の各々が、前記第2探索点のうちの1つに対応し、量子化値と当該量子化値に対応する非量子化値との差異から成るステップとを含み、
前記第1探索点のうち前記小さい差異量を有する前記1つの第1探索点により、前記第2探索空間を決定するステップが、
前記第1探索点のうち前記小さい差異量を有する前記1つの前記第1探索点により区切り点比率を決定するステップであって、該区切り点比率は、前記値分布内の最大絶対値に対する、前記小さい差異量を有する前記1つの第1探索点の比率であるステップと、
前記区切り点比率により前記第2探索空間を決定するステップであって、前記小さい差異量が前記第2探索空間内に位置するステップとを含む、請求項1に記載の深層学習ネットワーク用最適化方法。
【請求項3】
記量子化モデルを事後学習させるステップが、
前記量子化モデル内の複数の量子化層の各々の重みの整数部分の長さを決定するステップと、
前記量子化モデルにより、複数の較正サンプルを推測して、前記量子化モデル内の前記量子化層の各々の活性化値/特徴値の整数部分の長さを決定するステップと、
前記量子化層の各々の小数部分の長さを、前記量子化層の各々のビット幅限界に応じて決定するステップと
を含む、請求項1または2に記載の深層学習ネットワーク用最適化方法。
【請求項4】
前記深層学習ネットワーク用最適化方法が、
前記パラメータタイプの重みの値または入力活性化値を量子化するステップと、
前記量子化による量子化値を、前記量子化モデル内の計算層に入力するステップと、
前記計算層から出力される、前記パラメータタイプの出力活性化値を量子化するステップと
をさらに含む、請求項1または2に記載の深層学習ネットワーク用最適化方法。
【請求項5】
コードを記憶するメモリと、
前記メモリに結合されたプロセッサとを具えた、深層学習ネットワーク用のコンピュータ装置であって、前記プロセッサは、前記コードをロードし実行して、
事前学習済みモデルから値分布を得て、該値分布は、前記深層学習ネットワークにおける1つのパラメータタイプの複数の値の統計的分布であり、
前記値分布の範囲内に少なくとも1つの区切り点を決定し、前記範囲は前記少なくとも1つの区切り点によって複数のセクションに分割され、 前記複数のセクションのうちの第1セクション内の、前記パラメータタイプの前記値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、前記複数のセクションのうちの第2セクション内の、前記パラメータタイプの前記値の他の部分に対する量子化を、第2量子化パラメータを用いて実行し、前記第1量子化パラメータが前記第2量子化パラメータと異なり、
前記プロセッサがさらに、
動的な固定小数点量子化をクリッピング法と組み合わせることであって、前記第1量子化パラメータの整数部分の長さを、前記値分布内の最大絶対値及び最小絶対値に応じて決定することを実行し、
前記プロセッサがさらに、
量子化モデルを事後学習させて、学習済み量子化モデルを得ることと、
前記学習済み量子化モデルを調整することとを実行し、
前記学習済み量子化モデルを調整することが、
境界制約付きストレートスルー推定器(STEBC)を用いて、前記パラメータタイプの重みの量子化の勾配を決定することであって、前記境界制約付きストレートスルー推定器は、上限と下限との間の入力勾配が出力勾配に等しくなるように構成されていることを含む、コンピュータ装置。
【請求項6】
コードを記憶する非一時的コンピュータ可読記憶媒体であって、
プロセッサが前記コードをロードし実行して、
事前学習済みモデルから値分布を得て、該値分布は、前記深層学習ネットワークにおける1つのパラメータタイプの複数の値の統計的分布であり、
前記値分布の範囲内に少なくとも1つの区切り点を決定し、前記範囲は前記少なくとも1つの区切り点によって複数のセクションに分割され、 前記複数のセクションのうちの第1セクション内の、前記パラメータタイプの前記値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、前記複数のセクションのうちの第2セクション内の、前記パラメータタイプの前記値の他の部分に対する量子化を、第2量子化パラメータを用いて実行し、前記第1量子化パラメータが前記第2量子化パラメータと異なり、
前記プロセッサがさらに、
動的な固定小数点量子化をクリッピング法と組み合わせることであって、前記第1量子化パラメータの整数部分の長さを、前記値分布内の最大絶対値及び最小絶対値に応じて決定することを実行し、
前記プロセッサがさらに、
量子化モデルを事後学習させて、学習済み量子化モデルを得ることと、
前記学習済み量子化モデルを調整することとを実行し、
前記学習済み量子化モデルを調整することが、
境界制約付きストレートスルー推定器(STEBC)を用いて、前記パラメータタイプの重みの量子化の勾配を決定することであって、前記境界制約付きストレートスルー推定器は、上限と下限との間の入力勾配が出力勾配に等しくなるように構成されていることを含む、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は機械学習(マシンラーニング)技術に関するものであり、特に深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体に関するものである。
【背景技術】
【0002】
近年、人工知能(AI:artificial intelligence)技術の更新が増加するに伴い、ニューラルネットワーク(神経回路網)モデルのパラメータ数及びコンピュータ計算の複雑性も増加している。その結果、深層学習ネットワーク用の圧縮技術も盛んになりつつある。量子化がモデルを圧縮するための重要な技術であることは、注目に値する。しかし、従来の量子化モデルの予測精度及び圧縮率は、さらに改善される必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
技術課題
本発明は、深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体を提供し、これらはマルチスケールの動的な量子化を用いて予測精度及び圧縮率を保証することができる。
【課題を解決するための手段】
【0004】
課題の解決策
本発明の好適例による深層学習ネットワーク用の最適化方法は、次のステップを含む(但し、これらのステップに限定されない)。事前学習済みモデルから値分布を得るステップ。この値分布の範囲内に1つ以上の区切り点(ブレークポイント)を決定するステップ。複数のセクションのうちの第1セクション内の、あるパラメータタイプ(パラメータの型)の値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、これらのセクションのうちの第2セクション内の、このパラメータタイプの値の他の部分に対する量子化を、第2量子化パラメータを用いて実行するステップ。この値分布は、上記深層学習ネットワークにおけるこのパラメータタイプの値の統計的分布である。上記範囲を1つ以上の区切り点によって上記セクションに分割するステップ。第1量子化パラメータは第2量子化パラメータと異なる。
【0005】
本発明の好適例による深層学習ネットワーク用のコンピュータ装置は、メモリ及びプロセッサを含む(但し、これらに限定されない)。メモリはコードを記憶する。プロセッサはメモリに結合されている。プロセッサは、コードをロードし実行して、学習済みモデルから値分布を得て、この値分布の範囲内に1つ以上の区切り点を決定し、複数のセクションのうちの第1セクション内の、あるパラメータタイプの値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、これらのセクションのうちの第2セクション内の、このパラメータタイプの値の他の部分に対する量子化を、第2量子化パラメータを用いて実行する。この値分布は、上記深層学習ネットワークにおけるこのパラメータタイプの値の統計的分布である。上記範囲は1つ以上の区切り点によって上記セクションに分割される。第1量子化パラメータは第2量子化パラメータと異なる。
【0006】
本発明の好適例の非一時的コンピュータ可読記憶媒体を用いて、コードを記憶する。プロセッサは、このコードを用いて次のステップを実行する。事前学習済みモデルから値分布を得るステップ。この値分布の範囲内に1つ以上の区切り点を決定するステップ。複数のセクションのうちの第1セクション内の、あるパラメータタイプの値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、これらのセクションのうちの第2セクション内の、このパラメータタイプの値の他の部分に対する量子化を、第2量子化パラメータを用いて実行するステップ。この値分布は、上記深層学習ネットワークにおけるこのパラメータタイプの値の統計的分布である。上記範囲は1つ以上の区切り点によって上記セクションに分割される。第1量子化パラメータは第2量子化パラメータと異なる。
【発明の効果】
【0007】
以上に基づいて、上記の深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体によれば、値分布を区切り点により複数のセクションに分割し、それぞれのセクションの値に対して、異なる量子化パラメータを用いる。このようにして、量子化された分布は、元の値分布をより近く近似することができ、これによりモデルの予測精度を改善することができる。
【0008】
本発明の特徴及び利点をより理解し易くするために、以下の具体的実施形態を、図面を併用して詳細に説明する。
【図面の簡単な説明】
【0009】
図1】本発明の一実施形態によるコンピュータ装置の要素のブロック図である。
図2】本発明の一実施形態による、深層学習ネットワーク用の最適化方法のフローチャートである。
図3】本発明の一実施形態による値分布の概略図である。
図4】本発明の一実施形態による区切り点探索のフローチャートである。
図5】本発明の一実施形態による区切り点探索のフローチャートである。
図6】本発明の一実施形態による第1段階探索の概略図である。
図7】本発明の一実施形態による第2段階探索の概略図である。
図8】本発明の一実施形態によるマルチスケールの動的な固定小数点量子化の概略図である。
図9】本発明の一実施形態による量子化パラメータの概略図である。
図10】本発明の一実施形態による段階的量子化の概略図である。
図11】本発明の一実施形態による、境界制約付きストレートスルー推定器(STE)の概略図である。
図12】本発明の一実施形態によるモデル補正のフローチャートである。
図13】本発明の一実施形態による層毎のレベルの量子化層のフローチャートである。
図14】本発明の一実施形態による層毎の事後学習量子化のフローチャートである。
図15】本発明の一実施形態によるモデル微調整のフローチャートである。
【発明を実施するための形態】
【0010】
開示する実施形態の詳細な説明
図1は、本発明の一実施形態によるコンピュータ装置100の要素のブロック図である。図1を参照されたい。コンピュータ装置100は、メモリ110及びプロセッサ150を含む(但し、これらに限定されない)。コンピュータ装置100は、デスクトップ・コンピュータ、ノート型コンピュータ、スマートホン、タブレット・コンピュータ、サーバー、または他の電子機器である。
【0011】
メモリ100は、あらゆる種類の固定または着脱式ランダムアクセスメモリ(RAM:random access memory)、読出し専用メモリ(ROM:read only memory)、フラッシュメモリ、従来型のハードディスクドライブ(HDD:hard disc drive)、半導体ドライブ(SSD:solid state drive)、または同様な素子とすることができる。一実施形態では、メモリ110を用いて、コード、ソフトウェア・モジュール、設定データ、またはファイル(例えば、サンプル、モデル・パラメータ、値分布、または区切り点)を記憶する。
【0012】
プロセッサ150はメモリ110に結合されている。プロセッサ150は、中央処理装置(CPU:central processing unit)、グラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)、他のプログラマブルな汎用または専用マイクロプロセッサ、デジタル・シグナル・プロセッサ(DSP:digital signal processor)、プログラマブル・コントローラ、フィールド・プログラマブル・ゲートアレイ(FPGA:field programmable gate array)、特定用途向け集積回路(ASIC:application specific integrated circuit)、ニューラルネットワーク・アクセレレータ、他の同様な素子、または上記の素子の組合せとすることができる。一実施形態では、プロセッサ150を用いて、コンピュータ装置100の動作の全部または一部を実行し、プロセッサ150は、各コード、ソフトウェア・モジュール、ファイル、及びメモリ110に記憶されているデータをロードして実行することができる。
【0013】
以下、本発明の一実施形態による方法を、コンピュータ装置100内の種々のデバイス、素子、及びモジュールに関連して説明する。この方法の各プロセスは、実現状況に応じて調整することができ、これらのプロセスに限定されない。
【0014】
図2は、本発明の一実施形態による深層学習ネットワーク用の最適化方法のフローチャートである。図2を参照されたい。プロセッサ150は、1つ以上の値分布を事前学習済みモデルから得る(ステップS210)。具体的には、事前学習済みモデルは、深層学習ネットワーク(例えば、ユー・オンリー・ルック・ワンス(YORO:you only look once)、AlexNet(アレックスネット)、ResNet(レスネット)、領域ベースの畳み込みニューラルネットワーク(R-CNN:region based convolutional neural network)、または高速R-CNN)に基づく。換言すれば、事前学習済みモデルは、学習サンプルを深層学習ネットワークに入力することによって学習させたモデルである。なお、事前学習済みモデルは、画像分類、物体検出、または他の推測用に用いることができ、本発明の実施形態は事前学習済みモデルの用法を限定しない。学習済みである事前学習済みモデルは、事前設定された精度基準を満足する。
【0015】
事前学習済みモデルが、対応するパラメータ(例えば、重み、入力活性化値/特徴値/出力活性化値/特徴値)を各層に有することは、注目に値する。パラメータが多過ぎるほど、より高度な計算及び記憶の必要条件が要求され、パラメータの複雑性が高いほど、計算の量が増加することが考えられる。量子化は、ニューラルネットワークの複雑性を低減するための1つの技法である。量子化は、活性化値/特徴値または重みを表すためのビット数を低減することができる。対称量子化、非対称量子化、及びクリッピング法のような多数の種類の量子化モデルが存在する。
【0016】
一方、値分布は、深層学習ネットワークにおける1つ以上のパラメータタイプの複数の値の統計的分布である。パラメータタイプは、重み、入力活性化値/特徴値、及び/または出力活性化値/特徴値とすることができる。統計的分布は、各値の統計量(例えば、合計個数)の分布を表す。例えば、図3は、本発明の一実施形態による値分布の概略図である。図3を参照されたい。事前学習済みモデル内の重みまたは入力活性化値/特徴値/出力活性化値/特徴値の値分布は、ガウス(正規)分布、ラプラス分布、またはベル(釣り鐘)型分布である。図3に示すように、値の大部分は値分布の中央セクション内に位置することは注目に値する。これらの値に対して一様量子化を用いる場合、中央セクション内の値はすべて0に量子化されることがあり、モデル予測の精度が低下し得る。従って、深層学習ネットワーク用のパラメータタイプの値については、量子化を改善する必要がある。
【0017】
一実施形態では、プロセッサ150が検証データを用いて値を生成することができる。例えば、プロセッサ150は、事前学習済みの浮動小数点モデル(即ち、事前学習済みモデル)により検証データに対する推論を実行し、各層のパラメータ(例えば、重み、入力活性化値/特徴値、または出力活性化値/特徴値)を収集し、当該パラメータタイプの値をカウントして当該パラメータタイプの値分布を生成することができる。
【0018】
図2を参照されたい。プロセッサ150は、1つ以上の区切り点を値分布の範囲内に決定する(ステップS220)。具体的には、図3に示すように、異なるセクション内の値の合計個数は大幅に変化し得る。例えば、中央セクションの値の合計個数は、2つの終端/末端セクションの値の合計個数よりも大幅に大きい。その代わりに、区切り点を用いて上記範囲を複数のセクションに分割する。即ち、上記範囲を1つ以上の区切り点によって複数のセクションに分割する。例えば、図3中の値領域内の区切り点p(実数)は、範囲[-m, m]内の値分布を2つの対称なセクションに分割し、ここにm(実数)は値分布内の最大絶対値を表す。これら2つの対称なセクションは、中央セクション及び末端セクションを含む。中央セクションは範囲[-p, p]内にあり、末端セクションは範囲[-m, m]内の他のセクションである。
【0019】
図3を例として挙げ、値が浮動小数点であるものと仮定すれば、上記範囲を中央セクション及び末端セクションに分割する場合、中央セクションの値は、過度に多数の値が0に量子化されることを防止するように小数部分を表現するために、より大きなビット幅を必要とし得る。また、末端セクションについては、より大きな値を量子化するのに十分な能力を提供するように整数部分を表現するために、より大きなビット幅を必要とし得る。このことより、区切り点は、値を異なる量子化条件に分類するための基になることがわかる。また、値分布に適した区切り点を見出すことが量子化に役立つ。
【0020】
図4は、本発明の一実施形態による区切り点探索のフローチャートである。図4を参照されたい。第1探索点を用いて、区切り点が存在するか否かを評価する(ステップS410)。第1探索点は上記範囲内に位置する。一実施形態では、任意の隣接する2つの第1探索点間の距離が、他の隣接する2つの第1探索点間の距離と同一である。他の実施形態では、隣接する第1探索点間の距離が異なってもよい。
【0021】
プロセッサ150は、上記範囲をそれぞれの第1探索点により分割して複数の評価セクションを形成することができ(ステップS420)、各評価セクションは各第1探索点に対応する。換言すれば、あらゆる探索点が上記範囲を評価セクションに分割し、あるいはあらゆる評価セクションが隣接する2つの探索点間に位置する。一実施形態では、プロセッサ150が第1探索空間を値分布の範囲内に決定することができる。第1探索点は第1探索空間を評価セクションに分割することができる。プロセッサ150は、区切り点比率を用いて第1探索空間及び第1探索点を規定することができる。複数の区切り点比率のそれぞれは、値分布内の最大絶対値に対する第1探索点の比率であり、数式表現(1)は次の通りである:
breakpoint ratio=break point/abs max...(1)
ここに、breakpoint ratioは区切り点比率であり、break pointは任意の第1探索点または他の探索点であり、abs maxは値分布内の最大絶対値である。例えば、第1探索空間は[0.1, 0.9]であり、上記距離は0.1である。換言すれば、第1探索点の区切り点比率は、0.9までのそれぞれ0.1、0.2、0.3、等であり、第1探索点は数式表現に従ってバックトラックすることができる。
【0022】
プロセッサ150は、各第1探索点に対応する評価セクションに対する量子化を、それぞれ異なる量子化パラメータにより実行して、各第1探索点に対応する量子化値を得る(ステップS430)。換言すれば、いずれの探索点の異なる評価セクションに対しても異なる量子化パラメータを用いる。動的な固定小数点量子化を例として挙げれば、量子化パラメータは、ビット幅(BW:bit width)、整数部分の長さ(IL:integer length)、及び小数部分の長さ(FL:fraction length)を含む。これらの異なる量子化パラメータは、例えば、異なる整数部分の長さ及び/または異なる小数部分の長さである。なお、異なる量子化法が用いる量子化パラメータは異なり得る。一実施形態では、同じビット幅の下で、0に近い値を有するセクションが用いる小数部分の長さはより長く、より大きい値を有するセクションが用いる整数部分長はより長い。
【0023】
プロセッサ150は、第1探索点の複数の差異量どうしを比較して、1つ以上の区切り点を得る(ステップS440)。第1探索点に対応する各差異量は、量子化値とそれに対応する非量子化値(即ち、量子化の前の値)との差異から成る。例えば、差異量は、平均二乗誤差(MSE:mean squared error)、二乗平均平方根誤差(RMSE:root mean squared error)、または平均絶対誤差である。MSEを例として挙げれば、数式表現2は次の通りである:
【数1】
ここに、MSEはMSEによって計算した差異量であり、xiは(非量子化)値(例えば、重み、または入力活性化値/特徴値/出力活性化値/特徴値)、Q(xi)は量子化値であり、h( )は定数であり、nは値の合計個数である。上記量子化値について対称量子化を例として挙げれば、式(3)及び(4)は次の通りである:
【数2】
ここに、xquantizedは量子化値であり、xfloatは浮動小数点の値(即ち、非量子化値)であり、xscaleは量子化レベルのスケールであり、
(外1)
は値分布内の最大値であり、
(外2)
は値分布内の最小値であり、
(外3)
は量子化値のうちの最大値であり、
(外4)
は量子化値のうちの最小値である。
【0024】
一実施形態では、プロセッサ150が、第1探索点のうちより小さい差異量を有する1つ以上を、1つ以上の区切り点として用いることができる。より小さい差異量とは、その差異量が他のものより小さいことを意味する。1つの区切り点を例として挙げれば、プロセッサ150は、第1探索点のうち小さい差異量を有する1つを区切り点として選択することができる。2つの区切り点を例として挙げれば、プロセッサ150は、第1探索点のうち小さい差異量及び第2の小さい差異量を有する2つを区切り点として選択する。
【0025】
小さい差異量を選択することを例として挙げれば、図5は、本発明の一実施形態による区切り点探索のフローチャートである。図5を参照されたい。プロセッサ150は、探索空間を決定して、現在の第1探索点の量子化値を得ることができる(ステップS510)。例えば、値分布内の最大値及び最小値を、探索空間の上限及び下限として用いる。それに加えて、第1探索点によって分割された2つのセクションに対して、異なる量子化パラメータを用いて量子化を実行する。プロセッサ150は、現在の第1探索点の量子化値と非量子化値との差異量、例えば平均二乗誤差を決定する(ステップS520)。プロセッサ150は、現在の第1探索点の差異量が前回の差異量よりも小さいか否かを判定する(ステップS530)。前回の差異量は、前回計算した他の第1探索点の差異量である。現在の差異量が前回の差異量よりも小さい場合、プロセッサ150は、現在の第1探索点を用いて区切り点比率を更新することができる(ステップS540)。例えば、区切り点比率は、第1探索点を数式表現(1)に代入することによって得ることができる。現在の差異量が前回の差異量よりも小さくない場合、プロセッサ150は区切り点を無効にする/無視する/更新しないことができる。次に、プロセッサ150は、現在の第1探索点が探索空間内の最後の探索点であるか否かを判定することができ(ステップS550)、即ち、全部の第1探索点の差異量を比較したことを保証する。第1探索点の差異量の中に、比較していない他の差異量が存在する場合、プロセッサ150は次の第1探索点の量子化値を決定することができる(ステップS510)。第1探索点を全部比較している場合、プロセッサ150は最終の区切り点比率を出力し、この区切り点比率により区切り点を決定することができる(ステップS560)。
【0026】
図6は、本発明の一実施形態による第1段階探索の概略図である。図6を参照されたい。複数の第1探索点FSPのうちの隣接する2つの間に距離ESが存在する。一実施形態では、第1段階探索を大まかな探索として用いることができ、探索の第2段階を追加的に設けることができる。例えば、第2段階は第2探索点を規定し、隣接する2つの第2探索点間の距離は、隣接する2つの第1探索点間の距離よりも小さい。第2探索点も用いて区切り点が存在するか否かを評価し、第2探索点は値分布の範囲内に位置する。
【0027】
一実施形態では、プロセッサ150が、第1探索点のうちより小さい差異量を有する1つ以上により、第2探索空間を決定することができる。第2探索空間は第1探索空間よりも小さい。区切り点比率によって定義されるように、一実施形態では、プロセッサ150が、第1探索点のうち小さい差異量を有する1つにより区切り点比率を決定することができる。区切り点比率は、値分布内の最大絶対値に対する、上記小さい差異量を有する第1探索点の比率であり、数式表現(1)に関連する説明を参照することができ、ここではその説明を繰り返さない。プロセッサ150は、区切り点比率に応じて第2探索空間を決定することができる。小さい差異量は、第2探索空間の中央に位置し得る。例えば、区切り点比率が0.5である場合、第2探索空間の範囲は[0.4, 0.6]とすることができ、隣接する2つの第2探索点間の距離は0.01とすることができる(第1探索点間の距離が0.1であるものと仮定する)。なお、第1段階において小さい差異量を有する区切り点比率は、第2探索空間の中央に位置するとは限らない。
【0028】
図7は、本発明の一実施形態による第2段階探索の概略図である。値分布の部分拡大図である図7を参照されたい。図6に比べると、図7中の隣接する2つの第2探索点SSP間の距離は、図6中の距離ESよりも大幅に小さい。それに加えて、第2探索空間は、第2探索点SSPによって均等に分割され、対応する複数の評価セクションを相応に分割する。
【0029】
同様に、第2段階については、プロセッサ150は、各第2探索点によって分割された評価セクションの値に対して、異なる量子化パラメータを用いて量子化を実行して、各第2探索点に対応する量子化値を得ることができる。次に、プロセッサ150は、第2探索点の複数の差異量どうしを比較して、1つ以上の区切り点を得ることができる。第2探索点に対応する各差異量は、量子化値とそれに対応する非量子化値との差異を含む。例えば、差異量はMSE、RMSE、またはMAEである。それに加えて、プロセッサ150は、第2探索点のうちより小さい差異量を有する1つ以上を、1つ以上の区切り点として用いることができる。1つの区切り点を例として挙げれば、プロセッサ150は、第2探索点のうち小さい差異量を有する1つを区切り点として選択することができる。
【0030】
図2を参照されたい。プロセッサ150は、上記セクションのうちの第1セクション内の、上記パラメータタイプの値の一部分に対する量子化を、第1量子化パラメータを用いて実行し、これらのセクションのうちの第2セクション内の、このパラメータタイプの値の他の部分に対する量子化を、第2量子化パラメータを用いて実行する(ステップS230)。具体的には、ステップS220において説明したように、区切り点を用いて、値分布内を、異なる量子化条件を有するセクションに分割する。従って、本発明の実施形態は、異なる量子化パラメータを異なるセクション用に提供する。例えば、図8は、マルチスケールの動的な固定小数点量子化の概略図である。図8を参照されたい。一対の区切り点BPが値分布を中央セクション及び末端セクションに分割する。点線は、ある量子化パラメータを量子化するための概略線であり、中央セクション内の値はより高密度であり、末端セクション内の値はより散在し、量子化は2つのセクションに対して異なる量子化パラメータを用いて実行する。
【0031】
値分布がより高密度である中央セクションについては、プロセッサ150は、より大きなビット幅を小数部分の長さ(FL)に割り当てることができ;値分布がより散在している末端セクションについては、プロセッサ150は、より大きなビット幅を整数部分の長さ(IL)に割り当てることができる。図9は、本発明の一実施形態による量子化パラメータの概略図である。図9を参照されたい。動的な固定小数点量子化を例として挙げれば、追加ビット901、符号ビット902に加えて、ある値を表す12ビットのうち、仮数903は整数部分904及び小数部分905を含む。小数部分の長さが3(即ち、fl=3)であれば、小数部分905は図中に示すように3ビットを占める。一部の応用シナリオでは、動的な固定小数点量子化が、対称量子化よりもハードウェア実現に適している。例えば、加算器及び乗算器に加えて、ニューラルネットワーク・アクセレレータは変換計算のための追加的サポートしか必要としない。しかし、他の実施形態では、非対称量子化または他の量子化方法も採用することができる。
【0032】
また、3つ以上の区切り点が得られる場合、2つの量子化パラメータを異なるセクションに適用することに限定されない。
【0033】
一実施形態では、プロセッサ150が動的な固定小数点量子化をクリッピング法と組み合わせて実行することができる。プロセッサ150は、第1量子化パラメータ、第2量子化パラメータ、または他の量子化パラメータの整数部分の長さを、値分布内の最大絶対値及び最小絶対値に応じて決定することができる。クリッピング法はパーセンタイル(百分位数、百分位値)クリッピングを例として挙げる。図3中に示すベル型分布内の中央から遠くには少数の値しか存在せず、パーセンタイル・クリッピングは、これらのオフピーク値の影響を軽減することができる。プロセッサ150は、値分布内の99.99パーセンタイルに位置する値を最大値Wmaxとして用いることができ、値分布内の0.01パーセンタイルに位置する値を最小値Wminとして用いることができる。プロセッサ150は、例えば、重みの整数値ILWを式(5)により決定することができる:
ILW=log2(max(|Wmax|, |Wmin|))+1...(5)
ここに、maxは()内の値の最大値を表す。
【0034】
なお、最大値及び最小値は99.99%及び0.01%に限定されず、量子化はパーセンタイル・クリッピングと組み合わせることに限定されず、量子化方法は動的な固定小数点量子化に限定されない。それに加えて、入力活性化値/特徴値、出力活性化値/特徴値、または他のパラメータタイプも適用可能である。最大絶対値を例として挙げれば、プロセッサ150は、学習サンプルの一部を較正サンプルとして用いることができ、これらの較正サンプルを推測して、活性化値/特徴値の値分布を得ることができる。値分布内の最大値を、クリッピング法用の最大値として用いることができる。また、式(5)は、例えば、入力活性化値/特徴値/出力活性化値/特徴値の整数部分の長さを次式のように決定することができる:
ILI=log2(max(|Imax|, |Imin|))+1...(6)
ILO=log2(max(|Omax|, |Omin|))+1...(7)
ここに、ILIは入力活性化値/特徴値の整数部分の長さであり、ILOは出力活性化値/特徴値の整数部分の長さであり、Imaxは入力活性化値/特徴値の値分布内の最大値であり、Omaxは出力活性化値/特徴値の値分布内の最大値であり、Iminは入力活性化値/特徴値の値分布内の最小値であり、Ominは出力活性化値/特徴値の値分布内の最小値である。
【0035】
一方、図10は、本発明の一実施形態による段階的(ステップ)量子化の概略図である。図10を参照されたい。量子化の式は通常は段階的である。最大値x_maxと最小値x_minとの間で同じレベルの値は同じ値に量子化される。しかし、段階的量子化のニューラルネットワーク学習では、学習することを困難にするゼロ勾配に起因して、パラメータを更新することができないことがある。従って、量子化の式の勾配を改善する必要性が存在する。
【0036】
ストレートスルー推定器(STE:straight through estimator)を用いて、量子化の式の勾配を近似することができる。一実施形態では、プロセッサ150が境界制約付きストレートスルー推定器(STE)を用いて、勾配ノイズをさらに軽減することができる。図11は、本発明の一実施形態による、境界制約付きストレートスルー推定器(STEBC:STE with boundary constraint)の概略図である。図11を参照されたい。このSTEBCは、量子化の式における微分法を防止して、入力勾配が出力勾配に等しい量子化の式を定めることができる。式(8)はSTEBCを次のように表現することができる:
【数3】
【数4】
ここに、lbは下限であり、ubは上限であり、flは小数部分の長さであり、Rは実数であり、Qは量子化した数であり、
(外5)
は実数の値(即ち、非量子化値)であり、
(外6)
は量子化値であり、yは出力活性化値/特徴値であり、Bはビット幅である。
(外7)
が上限と下限との間の制限範囲[lb, ub]内にある場合、プロセッサ150は、その実勾配
(外8)
を量子化勾配
(外9)
に等しくすることができる。しかし、値
(外10)
が制限範囲[lb, ub]外にある場合、プロセッサ150は、その勾配を無視して、量子化勾配を直接0に設定することができる。
【0037】
図12は、本発明の一実施形態によるモデル補正のフローチャートである。図12を参照されたい。量子化モデルは、事前学習済みモデル内のパラメータを量子化した後に得ることができる。例えば、深層学習ネットワーク内の各層の重み、入力活性化値/特徴値、及び/または出力活性化値/特徴値を量子化する。一実施形態では、同じパラメータタイプの異なるセクション用に異なる量子化パラメータを用いることに加えて、プロセッサ150は、異なる量子化パラメータを異なるパラメータタイプ用に用いることができる。AlexNetを例として挙げれば、上記パラメータタイプの重みの範囲が[2-11, 2-3]であり、上記パラメータタイプの活性化値/特徴値の範囲が[2-2, 28]である。単一の量子化パラメータを用いてこれら2つの範囲をカバーする場合、これらの値を表すために、より大きなビット幅を必要とし得る。従って、異なる量子化パラメータを、異なるパラメータタイプの範囲に割り当てることができる。
【0038】
一実施形態では、複数の量子化層を深層学習ネットワークに追加する。これらの量子化層を、重み用、入力活性化値/特徴値用、及び出力活性化値/特徴値用の3つの部分に分割することができる。それに加えて、異なるビット幅及び/または小数部分の長さ、あるいは同一のビット幅及び/または小数部分の長さのそれぞれを用意して、これらの量子化層の上記3つの部分を表すことができる。これにより、層毎のレベルの量子化層を実現することができる。
【0039】
図13は、本発明の一実施形態による層毎のレベルの量子化層のフローチャートである。図13を参照されたい。プロセッサ150は、あるパラメータタイプの入力活性化値/特徴値及び重み(浮動小数点を例として挙げる)を取得して(ステップS101及びS102)、重みまたは入力活性化値/特徴値のそれぞれを量子化(例えば、動的な固定小数点量子化、対称量子化、または他の量子化)して(ステップS103及びS104)、量子化した入力活性化値/特徴値及び量子化した重みを得ることができる(ステップS105及びS106)。プロセッサ150は、これらの量子化値を計算層に入力することができる(ステップS107)。計算層は、例えば、畳み込み計算、全結合計算、または他の計算を実行する。次に、プロセッサ150は、計算層が出力する上記パラメータタイプの出力活性化値/特徴値を得て(ステップS108)、出力活性化値/特徴値を量子化して(ステップS109)、量子化した出力活性化値/特徴値を得ることができる(ステップS110)。量子化ステップS103、S104、及びS109は1つの量子化層におけるものと考えることができる。このメカニズムは、この量子化層を1つの一般的な浮動小数点層またはカスタマイズされた層に結び付けることができる。それに加えて、一部の実施形態では、プロセッサ150が、浮動小数点の汎用行列乗算(GEMM:general matrix multiplication)ライブラリ(例えば、コンピュート・ユニファイド・デバイス・アーキテクチャ(GUDA(登録商標):compute unified device architecture:NVIDIA社によるGPU向け汎用並列コンピューティング・プラットフォーム))を用いて、学習及び推測処理を加速することができる。
【0040】
プロセッサ150は、量子化モデルを事後学習させることができる(ステップS121)。例えば、ラベル付けした結果を有する学習サンプルを用いて量子化モデルを学習させる。図14は、本発明の一実施形態による層毎の事後学習量子化のフローチャートである。図14を参照されたい。プロセッサ150は、例えば、学習させた重みに対するパーセンタイル・クリッピングまたはマルチスケール量子化法を用いて、量子化モデル内の各量子化層の重みの整数部分の長さを決定することができる(ステップS141~S143)。パーセンタイル・クリッピングの例については、式(5)に関連する説明を参照することができ、ここではその説明を繰り返さない。次に、プロセッサ150は、量子化モデルによる複数の較正サンプルを推測し、量子化モデル内の各量子化層内の入力活性化値/特徴値/出力活性化値/特徴値の値分布を決定し、それに応じてクリッピング法用の最大値を選択することができる。プロセッサ150は、量子化モデル内の各量子化層内の活性化値/特徴値の整数部分の長さを、例えば、上記最大絶対値、または学習させた入力活性化値/特徴値/出力活性化値/特徴値に対するマルチスケール量子化法を用いて決定することができる(ステップS142及びS143)。上記最大絶対値の例については、式(6)及び(7)に関連する説明を参照することができ、ここではその説明を繰り返さない。
【0041】
次に、プロセッサ150は、各量子化層の重み/活性化値/特徴値の小数部分の長さを、各量子化層のビット幅限界に応じて決定することができる(ステップS144)。式(11)を用いて、小数部分の長さを次のように決定する:
FL=BW-IL...(11)
ここに、FLは小数部分の長さであり、BWは所定のビット幅限界であり、ILは整数部分の長さである。一部の応用シナリオの下では、式(11)から得られた整数部分の長さを、式(5)~(7)から得られた整数部分の長さよりも、例えば1ビットだけ小さくすることができる。整数部分の長さを(微)調整することは、モデルの予測精度を改善することに役立つ。最後に、プロセッサ150は、事後学習済み量子化モデルを得ることができる(ステップS145)。
【0042】
図12を参照されたい。プロセッサ150は、学習済み量子化モデルを再学習させること/(微)調整することができる(ステップS122)。一部の応用シナリオの下では、学習済みモデルを事後学習させることが予測精度を低下させ得る。従って、(微)調整により精度を改善することができる。一実施形態では、プロセッサ150が、境界制約付きストレートスルー推定器(STEBC)を用いることによって、重みの量子化の勾配を決定することができる。このストレートスルー推定器は、上記上限と上記下限との間の入力勾配が出力勾配に等しくなるように構成されている。前に説明したように、境界制約付きストレートスルー推定器は勾配近似を改善することができる。本発明の上記実施形態は、境界制約付きストレートスルー推定器を深層学習ネットワーク内の単一層用に導入して、層毎のレベルの(微)調整を提供する。換言すれば、層毎の量子化を順伝搬(フォワード・プロパゲーション)用に提供することに加えて、層毎の(微)調整を逆伝搬(バックワード・プロパゲーション)において提供することもできる。順伝搬の層毎の量子化については、図13に関連する説明を参照することができ、ここではその説明を繰り返さない。
【0043】
図15は、本発明の一実施形態によるモデル微調整のフローチャートである。図15を参照されたい。学習済み量子化モデルについては、逆伝搬では、プロセッサ150が次の層から勾配を取得し(ステップS151)、境界制約付きストレートスルー推定器を用いて出力活性化値/特徴値の勾配を(微)調整して(ステップS152)、量子化層の出力の勾配を得ることができる(ステップS153)。なお、ニューラルネットワーク推論を例として挙げれば、順伝搬はニューラルネットワークの入力層から始まり、その出力層へ順に向かう。隣接する層に関しては、1つの層の前後に、入力層に近い方の層が前の層であり、出力層に近い方の層が次の層である。それに加えて、プロセッサ150は、対応する勾配を、学習済み量子化モデルの重み及び入力活性化値/特徴値から、浮動小数点計算を用いて決定し(ステップS154)、重み及び入力活性化値/特徴値のそれぞれを、境界制約付きストレートスルー推定器を用いて(微)調整し(ステップS155及びS156)、それに応じて重みの勾配及び前の層についての勾配を決定する(ステップS157及びS158)ことができる。次に、プロセッサ150は、勾配降下法を用いて重みを更新することができる(ステップS159)。図13のステップS102では、この重みを用いることができる。更新した勾配は浮動小数点量子化にさらに適用することができることは注目に値する。最後に、プロセッサ150は(微)調整した量子化モデルを得ることができる(ステップS123)。これにより、予測精度をさらに改善することができる。
【0044】
本発明の一実施形態は、非一時的コンピュータ可読記憶媒体(例えば、ハードディスクドライブ、光ディスク、フラッシュメモリ、半導体ドライブ(SSD)、及び他の記憶媒体)を提供し、コードを記憶するために用いられる。コンピュータ装置100のプロセッサ150または他のプロセッサは、このコードをロードして、本発明の実施形態による1つ以上の最適化方法の対応するプロセスを実行することができる。これらのプロセスについては、上記の説明を参照することができ、ここではその説明を繰り返さない。
【0045】
要約すれば、本発明の実施形態による深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体では、事前学習済みモデルのパラメータの値分布を分析し、異なる量子化条件を有する区切り点に分割すべき範囲を決定する。区切り点は、異なるパラメータタイプの値分布を複数のセクションに分割すること、及び/または単一のパラメータタイプの値分布を複数のセクションに分割することができる。異なる量子化パラメータのそれぞれを異なるセクション用に用いることができる。パーセンタイル・クリッピング法を用いて、重みの整数部分の長さを決定し、最大絶対値法を用いて、入力特徴値/活性化値/出力特徴値/活性化値の整数部分の長さを決定する。それに加えて、境界制約付きストレートスルー推定器を導入して、勾配近似を改善する。このようにして、精度低下を低減することができ、許容可能な圧縮を実現することができる。
【0046】
以上の実施形態において本発明を開示してきたが、これらの実施形態は本発明を限定することを意図していない。当業者は、本発明の精神及び範囲から逸脱することなしに、ある程度の変更及び修正を加えることができる。従って、本発明の保護範囲は添付した特許請求の範囲によって規定される。
【産業上の利用可能性】
【0047】
本発明の深層学習ネットワーク用の最適化方法及びコンピュータ装置、及びコンピュータ可読記憶媒体は、コンピュータ装置及びその計算方法に適用することができる。
【符号の説明】
【0048】
100:コンピュータ装置
110:メモリ
150:プロセッサ
S210~S130、S410~S440、S510~S560、S121~S123、S101~S110、S141~S145、S151~S159:ステップ
m、-m:最大絶対値
ES:距離
FSP:第1探索点
SSP:第2探索点
p、BP:区切り点
901:追加ビット
902:符号ビット
903:仮数
904:整数部分
905:小数部分
fl:小数部の長さ
x_max:最大値
x_min:最小値
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15