本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られる他のすべての実施形態は、本開示の保護範囲に含まれる。
本開示のアイテムや明細書および添付の図面における「第1」、「第2」、「第3」および「第4」等の用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書およびアイテムで使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および/またはコンポーネントの存在を示すが、1つまたは複数の他の特徴、全体、ステップ、操作、要素、コンポーネント、および/またはそれらのコレクションの存在または追加を除外しない。
本開示の明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示の明細書およびアイテムで使用されているように、文脈が他の状況を明確に示さない限り、単数形「一」、「一つ」および「当該」は複数形を含むことを意図している。本開示の明細書およびアイテムで使用される「および/または」という用語は、関連してリストされた1つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
この明細書およびアイテムで使用されているように、「もし」という用語は、文脈に応じて、「…時」または「…すると」または「確定に応じて」または「検出に応じて」と解釈することができる。同様に、「確定される場合」または「記述された条件またはイベント]が検出される場合」という句は、文脈に応じて、「[確定されると」または「確定に応じて」または「[記述された条件またはイベント]が検出されると」または「[記述された条件またはイベント]の検出に応じて」を意味すると解釈できる。
専門用語の定義:
浮動小数点数:IEEE浮動小数点規格では、V=(−1)^sign*mantissa*^Eの形で一つの数を表す。ここ、signは符号ビットで、0は正の数、1は負の数、Eは浮動小数点数に重みを付ける指数を表し、重みは2のE乗(負の冪乗の場合もある)であり、mantissaは2進数の小数であり、その範囲は、1〜2−εまたは0−εである。コンピュータでの浮動小数点数の表現は、3つのフィールドに分割される。それらのフィールドはそれぞれコード化される:
(1)単一の符号ビットsで、符号sを直接エンコードする。
(2)kビット指数フィールドで指数をエンコードする。
(3)nビットの小数フィールドmantissaで仮数をエンコードする。ただし、エンコードの結果は、指数部がすべて0であるかどうかによって異なる。
固定小数点数:共有指数(exponent)、符号ビット(sign)、および仮数(mantissa)の3つの部分で構成される。ここ、共有指数とは、指数が量子化する必要のある実数の集合内で共有されることを意味する。符号ビットは、固定小数点数が正または負であることを示する。仮数は、固定小数点数の有効桁数、つまり精度を確定する。8ビットの固定小数点数を例にとると、その数値計算方法は次のとおりである:
value=(−1)signX(mantissa)X2(ecponent−127)
2進数の小数:任意の10進数を式Σj*10iで表すことができる。たとえば、10進数の12.34は式1で表されると、12.34=1*101+2*100+3*10−1+4*10−2となる。小数点の左側は10の正の冪乗としてカウントされ、小数点の右側は10の負の冪乗としてカウントされる。同様に、2進数の小数もこのように表すことができる。小数点の左側は2の正の冪乗であり、小数点の右側は2の負の冪乗としてカウントされる。10進数の小数5.75は、2進数の小数の101.11で表すことができと、5.75=1*22+0*21+1*20+1*2−1+1*2−2となる。
オーバーフロー:固定小数点演算ユニットでは、数値表現には特定の範囲がある。演算プロセスにおいて、数値のサイズが固定小数点数で表すことができる範囲を超える場合、「オーバーフロー」と呼ばれる。
KLダイバージェンス(Kullback-LeiblerDivergence):相対エントロピー(relative entropy)、情報ダイバージェンス(informationDivergence)、情報利得(information gain)とも呼ばれる。KLダイバージェンスは、2つの確率分布PとQの間の差の非対称性の測度である。KLダイバージェンスは、Qベースのコーディングを使用してPからのサンプルをエンコードするために平均的に必要な追加ビット数の測度である。通常、Pはデータの真の分布を表し、QはPの理論分布、モデル分布、または近似分布を表す。
データビット幅:データを表すためであるビット数。
量子化:過去に32ビットまたは64ビットで表していた高精度の数値を、メモリスペースを節約する固定小数点数に変換するプロセスであり、高精度の数値を固定小数点数に変換するプロセスでは、精度がある程度低下する。
以下は、添付の図面を参照して、本開示の実施形態によって提供される、ニューラルネットワークの量子化パラメータの確定方法および関連製品の特定の実施形態を詳細に説明する。
ニューラルネットワーク(NN)は、生物学的ニューラルネットワークの構造と機能を模倣する数学モデルである。ニューラルネットワークは、多数のニューロンによって接続され計算を行う。したがって、ニューラルネットワークは、相互に接続された多数のノード(または「ニューロン」と呼ばれる)で構成される計算モデルである。各ノードは、活性化関数(activation function)と呼ばれる特定の出力関数を表す。2つのニューロン間の各接続は、当該接続を通過する信号の重み付き値を表し、重みと呼ばれ、これはニューラルネットワークの記憶に相当する。ニューラルネットワークの出力は、ニューロン間の接続方法、重み、活性化関数によって異なる。ニューラルネットワークにおいて、ニューロンはニューラルネットワークの基本単位である。特定の数の入力とオフセットを取得し、信号(値)が到着すると、重みと乗算される。接続とは、ニューロンを別の層または同じ層内の別のニューロンに接続することであり、接続にはそれに関連付けられた重みが伴う。さらに、オフセットはニューロンへの追加入力であり、常に1であり、独自の接続重みを持つ。これにより、すべての入力が空(すべて0)の場合でも、ニューロンを活性化することができる。
応用では、非線形関数がニューラルネットワーク内のニューロンに適用されない場合、ニューラルネットワークは単なる線形関数であり、単一のニューロンよりも強力ではない。ニューラルネットワークの出力が0から1の間にする場合、たとえば猫と犬の識別の場合、0に近い出力は猫と見なされ、1に近い出力は犬と見なされる。この目標を達成するために、sigmoid活性化関数などの活性化関数がニューラルネットワークに導入される。この活性化関数に関しては、その戻り値が0から1の間の数値であることを知っておく必要のみがある。したがって、活性化関数はニューラルネットワークに非線形性を導入するためであり、ニューラルネットワークの演算結果をより狭い範囲に絞る。実際、活性化関数がどのように表現されるかは重要ではない。重要なことは、いくつかの重みによって一つの非線形関数をパラメータ化することであり、これらの重みを変更することで非線形関数を変更することができる。
図1に示すように、これはニューラルネットワーク構造の概略図である。図1に示すニューラルネットワークには、入力層、隠れ層、出力層の3つの層があり、図1に示す隠れ層には5つの層がある。ここで、ニューラルネットワークの左端の層は入力層と呼ばれ、入力層のニューロンは入力ニューロンと呼ばれる。入力層はニューラルネットワークの第一層であり、必要な入力信号(値)を受け入れて次の層に伝送する。通常、入力層は入力信号(値)に対して操作を行わなく、関連する重みとオフセットもない。図1に示すニューラルネットワークには、4つの入力信号x1、x2、x3、x4がある。
隠れ層には、入力データにさまざまな変換を適用するためのニューロン(ノード)が含まれている。図1に示すニューラルネットワークには、5つの隠れ層がある。第1隠れ層には4つのニューロン(ノード)があり、第2層には5つのニューロンがあり、第3層には6つのニューロンがあり、第4層には4つのニューロンがあり、第5層には3つのニューロンがある。最後に、隠れ層はニューロンの演算値を出力層に伝送する。図1に示すニューラルネットワークは、5つの隠れ層の各ニューロンを完全に接続する。つまり、各隠れ層の各ニューロンは、次の層の各ニューロンに接続される。すべてのニューラルネットワークの隠れ層が完全に接続されているわけではないことに注意されたい。
図1ニューラルネットワークの右端の層は出力層と呼ばれ、出力層のニューロンは出力ニューロンと呼ばれる。出力層は、最後の隠れ層からの出力を受け取る。図1に示すニューラルネットワークでは、出力層には3つのニューロンと3つの出力信号y1、y2、およびy3がある。
実際の応用では、初期のニューラルネットワークをトレーニングするために、事前に多数のサンプルデータ(入力と出力を含む)が提供され、トレーニングが完了した後、トレーニングされたニューラルネットワークが取得される。当該ニューラルネットワークは、将来の実際の環境での入力に対して正しい出力を提供できる。
ニューラルネットワークのトレーニングについて説明する前に、損失関数を定義する必要がある。損失関数は、特定のタスクを実行する際のニューラルネットワークを評価するパフォーマンス関数である。いくつかの実施形態では、損失関数は、以下のように得ることができる:特定のニューラルネットワークをトレーニングする過程において、各サンプルデータをニューラルネットワークに沿って伝送し、出力値を得る。次にこの出力値と期待値との除算を行い、その差が二乗される。このように計算された損失関数は、予測値と真の値の間の差別である。ニューラルネットワークをトレーニングする目的は、この差別または損失関数の値を減らすことである。いくつかの実施形態では、損失関数は次のように表すことができる。
ニューラルネットワークのトレーニングの開始時に、重みをランダムに初期化する必要がある。明らかに、初期化されたニューラルネットワークは良い結果を提供しない。トレーニングプロセスでは、悪いニューラルネットワークから始めたと仮定し、トレーニングを通じて、高精度のネットワークを取得できる。
ニューラルネットワークのトレーニングプロセスは2つの段階に分かれている。第1段階は、入力層から隠れ層、最後に出力層への信号の順方向処理である。第2段階は、出力層から隠れ層、最後に入力層への逆方向伝播勾配であり、勾配に従って、ニューラルネットワークの各層の重みとオフセットが順番に調整される。
順方向処理の過程で、入力値はニューラルネットワークの入力層に入力され、いわゆる予測値の出力はニューラルネットワークの出力層から取得される。入力値がニューラルネットワークの入力層に提供されるとき、何の操作もしない。隠れ層では、第2隠れ層が第1隠れ層から予測中間結果値を取得し、計算操作および活性化操作を実行してから、取得した中間予測結果値を次の隠れ層に伝送する。後続の層で同じ操作を実行し、最後にニューラルネットワークの出力層で出力値を取得する。
順方向処理後、予測値と呼ばれる出力値が得られる。誤差を計算するために、予測値が実際の出力値と比較され、対応する誤差値が取得される。逆方向伝播は微分学のチェーンルールを使用する。チェーンルールでは、ニューラルネットワークの最後の層に対応する誤差値の導関数が最初に計算される。これらの導関数を勾配と呼び、次にこれらの勾配を使用して、ニューラルネットワークの最後から第2層の勾配を計算する。ニューラルネットワークの各重みに対応する勾配が得られるまで、このプロセスを繰り返す。最後に、ニューラルネットワークの各重みから対応する勾配を差し引き、重みが1回更新され、誤差値を減らす目的を達成する。
ニューラルネットワークの場合、微調整とは、トレーニングされたニューラルネットワークをロードすることである。微調整プロセスは、トレーニングプロセスと同じ、2つの段階に分かれている。第1段階は信号の順方向処理で、第2段階は逆方向の伝搬勾配であり、トレーニングされたニューラルネットワークの重みが更新される。トレーニングと微調整の違いは、トレーニングは初期化されたニューラルネットワークをランダムに処理し、ニューラルネットワークを最初からトレーニングすることであるが、微調整はそうではないことである。
ニューラルネットワークのトレーニングまたは微調整のプロセスでは、ニューラルネットワークに対して信号の順方向処理および対応する誤差の逆方向伝播プロセスを実行するたびに、ニューラルネットワークの重みが勾配を使用して1回更新される。これは1回の反復(iteration)と呼ばれる。精度が期待に応えるニューラルネットワークを取得するには、トレーニングプロセス中に非常に大きなサンプルデータ集合が必要である。この場合、サンプルデータ集合を一度にコンピュータに入力することはできない。したがって、この問題を解決するには、サンプルデータ集合を複数のブロックに分割し、各ブロックをコンピュータに伝送必要がある。データ集合の各ブロックが順方向処理された後、それに応じてニューラルネットワークの重みが更新される。一つの完全なサンプルデータ集合がニューラルネットワークによって順方向処理を1回実行され、かつ対応する重みの更新を1回返す場合、このプロセスはエポック(epoch)と呼ばれる。実際には、完全なデータ集合をニューラルネットワークで1回伝送するだけでは不十分であり、完全なデータ集合を同じニューラルネットワークで複数回伝送する必要がある。つまり、期待される精度で最終的にニューラルネットワークを取得するには、複数のエポックが必要である。
ニューラルネットワークのトレーニングまたは微調整のプロセスでは、一般に、高速であるほど優れており、精度が高いほど優れていることが望まれる。ニューラルネットワークにおけるデータは浮動小数点数などの高精度のデータフォーマットで表現されるため、トレーニングや微調整の過程で、関連するデータはすべて高精度のデータフォーマットになり、トレーニングされたニューラルネットワークが量子化される。量子化される対象をニューラルネットワーク全体の重みで、かつ量子化された重みはすべて8ビットの固定小数点数であるとすると、ニューラルネットワークには数百万もの接続があることが多いため、ほとんどすべてのスペースがニューロンの接続に占められている。さらに、これらの重みはすべて異なる浮動小数点数である。各層の重みは、(−3.0、3.0)などの特定の区間の正規分布になる傾向がある。ニューラルネットワークの各層の重みに対応する最大値と最小値が格納され、各浮動小数点値は8ビットの固定小数点数で表される。ここで、最大値と最小値の範囲内の区間で256の量子化間隔に線形に分割され、各量子化間隔は8ビットの固定小数点数で表される。例:区間(−3.0、3.0)では、バイト0は−3.0を表し、バイト255は3.0を表す。類推で、バイト128は0を表す。
高精度のデータフォーマットで表されるデータの場合、浮動小数点数を例にとると、コンピュータアーキテクチャによれば、浮動小数点数の算術表現規則、固定小数点数の演算表現規則に基づき、同じ長さの固定小数点演算と浮動小数点演算に対して、浮動小数点演算の計算モードはより複雑であり、浮動小数点演算ユニットを形成するには、より多くのロジック装置が必要である。このように、体積に関しては、浮動小数点演算ユニットの体積は固定小数点演算ユニットの体積よりも大きくなる。さらに、浮動小数点演算ユニットは処理するためにより多くのリソースを消費する必要があるため、固定小数点演算と浮動小数点演算の間の電力消費ギャップは通常、オーダー的である。つまり、浮動小数点演算が占めるチップ面積と消費電力は、固定小数点演算の何倍にもなる。
ただし、浮動小数点演算はかけがえのないものである。まず、固定小数点演算は直感的であるが、固定の小数点位置が固定桁数の整数部と小数部を確定するため、非常に大きい数や非常に小さい数を同時に表現することができず、オーバーフローが発生する可能性がある。
さらに、トレーニングまたは微調整に人工知能プロセッサのチップを使用する場合、主に監視付き学習を備えたニューラルネットワークでは、浮動小数点演算のみがトレーニング時の僅かなインクリメントを記録およびキャプチャできるため、浮動小数点演算が通常好まれる。そのため、人工知能プロセッサのチップ面積や消費電力を増やすことなく、チップのトレーニングするための計算能力を大幅に向上させることは、早急に解決する必要のある問題である。
当業者の場合、低ビット幅で表される固定小数点数を使用してトレーニングを行う場合、実際のフィードバックによれば、逆伝播勾配を処理するためには、8ビットよりも大きい固定小数点数を使用する必要があり、低ビット幅で表される定点数を使用してトレーニング実行するプロセスは非常に複雑である。浮動小数点演算ユニットを固定小数点演算ユニットに置き換えて、固定小数点演算の高速性を実現し、人工知能プロセッサのチップのピーク計算能力を向上させ、同時に演算に必要な浮動小数点演算の精度を満たす方法は、この明細書で解決される技術的な問題である。
上記の技術的問題の説明に基づくと、ニューラルネットワークの特徴の1つは、入力ノイズに対する耐性が高いことである。画像内のオブジェクトを識別することを検討する場合、ニューラルネットワークは主なノイズを無視して重要な類似点に焦点を合わせることができる。この機能は、ニューラルネットワークが低精度の計算をノイズ源として、情報が少ない数値形式でも正確な予測結果を生成できることを意味する。低精度のトレーニングや微調整を行うには、データのオーバーフローを改善できるだけでなく、目標区間範囲内の0に近いデータをより適切に表現できるユニバーサルなデータ表現を見つける必要がある。したがって、このデータ表現は、適応性が必要であり、トレーニングまたは微調整プロセスとともに調整できる。
上記の説明に基づいて、図2に示されるように、本開示で提案されたニューラルネットワークの量子化パラメータの確定方法のフローチャートである。図2に示す技術案によって確定された量子化パラメータは、量子化予定のデータを表すために使用され、量子化された固定小数点数を確認する。量子化された固定小数点数は、ニューラルネットワークのトレーニング、微調整、または推論に使用される。この方法には次のものが含まれる。
ステップ201):量子化予定のデータを統計し、各タイプの量子化予定のデータの統計結果を確定する。ここで、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも1つが含まれる。
前述のように、ニューラルネットワークのトレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層には、ニューロン、重み、勾配、オフセットの4種類のデータが含まれる。推論プロセスでは、ニューラルネットワークの各層に、ニューロン、重み、オフセットの3種類のデータが含まれる。これらのデータは高精度のデータフォーマットで表現されている。本明細書では、例として高精度のデータとして浮動小数点数を使用している。例としての浮動小数点数は、網羅的なリストではなく、例の一部のリストにすぎないことは明らかである。当業者は、技術案の本質を理解していれば、本開示の技術案に基づいて他の技術案を生み出すことができる。たとえば、高精度のデータは、範囲が広く、最小精度が低く、データビット幅が大きい固定小数点数にすることができる。この技術案を使用して、データビット幅が小さい固定小数点数に変換できる。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
ニューラルネットワークの構造の種類に関係なく、ニューラルネットワークのトレーニングまたは微調整の過程で、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも1つが含まれる。推論プロセスでは、量子化予定のデータこれには、ニューラルネットワークのニューロン、重み、およびオフセットのデータが少なくとも1つ含まれている。たとえば、量子化予定のデータを重みとすると、量子化予定のデータは、ニューラルネットワーク内の特定の層のすべての重み、またはニューラルネットワーク内の特定の層の重みの一部にすることができる。層が畳み込み層の場合、量子化予定のデータは、チャンネル単位での畳み込み層のすべての重みまたは重みの一部である可能性があり、チャネルは畳み込み層のチャネルのすべてまたは一部である。畳み込み層のみがチャネルの概念を持ち、畳み込み層では、重みサブ層のみがチャネルの方法で量子化されることを強調する必要がある。
以下では、量子化予定のデータがニューロンとニューラルネットワーク内のターゲット層の重みであることを例として取り上げ、技術案について詳しく説明する。このステップでは、ターゲット層の各層のニューロンと重みを個別にカウントして、各タイプの量子化予定のデータの最大値と最小値を取得する。また、各タイプの量子化予定のデータの絶対最大値も取得できる。ここで、ニューラルネットワークで量子化する必要のある層としてのターゲット層は、1つの層または複数の層にすることができる。1つの層を単位として、各タイプの量子化予定のデータの最大絶対値は、各タイプの量子化予定のデータの最大値と最小値によって確認できる。また、まず各タイプの量子化予定のデータの絶対値を取得し、絶対値を取得した後の結果をトラバースして、各タイプの量子化予定のデータの最大絶対値を取得することもできる。
実際の応用では、各タイプの量子化予定のデータの絶対最大値が、各タイプの量子化予定のデータの最大値と最小値に従って取得される理由は、量子化中に、通常の状況では、ターゲット層の各層の量子化予定のデータに対応する最大値と最小値が格納され、量子化予定のデータの絶対値を計算するために多くのリソースを消費する必要はない。絶対最大値は、格納された量子化予定のデータに対応する最大値と最小値に基づいて直接取得できる。
ステップ202):各タイプの量子化予定のデータの統計結果とデータビット幅を使用して、対応する量子化パラメータを確定する。ここで、量子化パラメータは、人工知能プロセッサがニューラルネットワーク演算プロセスにおけるデータを対応して量子化するためである。
このステップでは、量子化パラメータを次の6つのケースに分けることができる。第1ケース:量子化パラメータは小数点位置パラメータsである。この場合、次の式(1)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round(Fx/2s) (1)
ここ、sは小数点位置パラメータ、Ixはデータxの量子化後のnビットのバイナリ表現の値、Fxはデータxの量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(1)の丸め演算を置き換えてもよい。このとき、nビットの固定小数点数で浮動小数点数を表せる最大値Aは2s(2n−1−1)であり、nビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最大値は2s(2n−1−1)であり、nビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最小値は−2s(2n−1−1)である。式(1)からわかるように、第1ケースに対応する量子化パラメータを使用して、量子化予定のデータを量子化すると、量子化間隔は2sであり、量子化間隔はCで表される。
Zは量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値であるとすると、AはZを含める必要があり、かつZはA/2より大きい必要があるため、次の式(2)の制約がある。
2s(2n−1−1)>=Z>2s−1(2n−1−1) 式(2)
よって、ln(Z/(2n−1−1))−1>s>=ln(Z/(2n−1−1))であり、s=ceil(ln(Z/(2n−1−1)))およびA=(2^ceil(ln(Z/(2n−1−1))))(2n−1−1)が得られる。
第2のケース:量子化パラメータが第1のスケーリング係数f1である。この場合、次の式(4)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round(Fx/f1) 式(4)
ここ、f1は第1のスケーリング係数、Ixはデータxの量子化後のnビットのバイナリ表現の値、Fxはデータ量子化前の浮動小数点値、roundは四捨五入の丸めによって実行される丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(4)の丸め演算を置き換えてもよい。式(4)からわかるように、第2のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔はf1であり、量子化間隔はCで表される
第1のスケーリング係数f1には、次のような状況がある。小数点位置パラメータsが固定の既知の値であり、変更されなくなった場合、2s=TとしかつTを固定値とすると、nビットの固定小数点数で表せる浮動小数点数の最大値Aは、(2n−1−1)xTである。この場合、最大値Aはデータビット幅nに依存する。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をZとする。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値がであることを示すことができ、nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値がであることを示すことができる。エンジニアリング応用では、全体として第1のスケーリング係数として別のケースがある。現時点では、独立した小数点位置パラメータは存在しないと見なすことができる。第2のスケーリング係数はどこにあるか。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をZとする。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値がであることを示すことができ、nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値がであることを示すことができる。
第3のケース:量子化パラメータは、小数点位置パラメータsと第2のスケーリング係数である。この場合、次の式(6)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round(Fx/(2sxf2)) 式(6)
ここ、sは小数点位置パラメータ、f2は第2のスケーリング係数で、f2=Z/(2s(2n−1−1))であり、Ixはデータxの量子化後のnビットのバイナリ表現の値、Fxはデータx量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(6)の丸め演算を置き換えてもよい。量子化予定のデータの数値フィールドで、nビットの固定小数点数で表せる最大値Aは2s(2n−1−1)である。式(6)からわかるように、第3のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は2sxf2であり、量子化間隔はCで表される。
量子化予定のデータの数値領域におけるすべての数値の最大絶対値をZとする。このとき、式(2)に従って、次の式が得られる。
1>=Z/(2s(2n−1−1))>1/2、即ち1>=Z/A>1/2、1>=f2>1/2
f2=Z/(2s(2n−1−1))=Z/Aの場合、式(2)によれば、Zは損失なく正確に表現できる。f2=1の場合、式(6)および式(1)は、s=ceil(ln(Z/(2n−1−1)))である。nビットの固定小数点数で表せる、量子化予定のデータの数値フィールドの最大値が(2n−1−1)x2sxf2であり、nビットの固定小数点数で表せる、量子化予定のデータの数値フィールドの最小値が−(2n−1−1)x2sxf2である。
図3に示すように、対称固定小数点数の概略図を表している。図3に示す量子化予定のデータの数値フィールドは、対称中心として「0」で分布されている。Zは、量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値である。図3は、Aはnビットの固定小数点数で表すことができる浮動小数点数の最大値である。浮動小数点数Aから固定小数点数2n−1−1への変換はである。オーバーフローを回避するには、AはZを含める必要がある。実際には、ニューラルネットワーク運用の過程での浮動小数点データは一定の間隔で正規分布する傾向があるが、対称中心が「0」の分布を必ずしも満たすとは限らない。このとき、固定小数点数で表すとオーバーフローが発生しやすくなる。この状況を改善するために、図4に示すように、オフセットが量子化パラメータに導入される。図4では、量子化予定のデータの数値フィールドは、「0」を中心として対称的に分布していない。Zminは、量子化予定のデータの数値フィールドのすべての浮動小数点数の最小値であり、Zmaxは量子化予定のデータの数値フィールドのすべての浮動小数点数の最大値である。PはZmin〜Zmaxの間の中心点であり、全体として量子化予定のデータの数値フィールドをシフトして、変換後に量子化予定のデータの数値フィールドが対称中心として「0」で分散されるようにし、変換後に量子化予定のデータの数値フィールドは最大絶対値はである。図4からわかるように、オフセットはポイント「0」からポイント「P」までの水平距離であり、この距離はオフセットと呼ばれている。ここ、0=(Zmax+Zmin)/2で、Z=(Zmax−Zmin)/2である。
上記のオフセットOの説明に基づいて、第4のケースの量子化パラメータのケースが表れる。第4のケース:量子化パラメータには、小数点位置パラメータとオフセットが含まれる。この場合、次の式(8)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round((Fx−O)/2s) 式(8)
ここ、sは小数点位置パラメータ、Oはオフセット、0=(Zmax+Zmin)/2はデータxの量子化後のnビットのバイナリ表現の値、Fxはデータ量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(8)の丸め演算を置き換えてもよい。このとき、nビットの固定小数点数で浮動小数点数を表せる最大値Aは2s(2n−1−1)であり、nビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最大値は2s(2n−1−1)であり、nビットの固定小数点数で量子化予定のデータの数値フィールドにおいて表せる最小値は−2s(2n−1−1)+Oである。式(8)から分かる、第4のケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は2sであり、量子化間隔はCで表される。
量子化予定のデータの数値フィールド内のすべての浮動小数点数の最大絶対値をZとすると、AはZを含め、かつZはA/2より大きいる必要があり、式(2)に従ってln(Z/(2n−1−1))−1>s>=ln(Z/(2n−1−1))を取得してからs=ceil(ln(Z/(2n−1−1)))及びA=(2^ceil(ln(Z/(2n−1−1))))(2n−1−1)を取得する。
上記のオフセットOの説明に基づいて、第5の量子化パラメータのケースが表れる。第5ケース:量子化パラメータには、第1のスケーリング係数f1とオフセットOが含まれる。この場合、次の式(10)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round((Fx−O)/f1) 式(10)
ここで、f1は第1のスケーリング係数、Oはオフセット、Ixはデータxの量子化後のnビットのバイナリ表現の値、Fxはデータ量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(10)の丸め演算を置き換えてもよい。このとき、小数点位置パラメータsが既知の固定値であり、変化しなくなり、2s=Tとすると、Tを固定値とするという状況がある。次に、nビットの固定小数点数で表せる浮動小数点数の最大値Aは(2n−1−1)xTである。この場合、最大値Aはデータビット幅nに依存する。このとき、量子化予定のデータの数値領域の全数値の最大絶対値をZとして設定すると、f1=Z/(2n−1−1)となり、Z=(2n−1−1)xf1となる。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が2n−1−1)xf1である、nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−2n−1−1)xf1である。エンジニアリング応用では、2sxf2は全体として第1のスケーリング係数として別のケースがある。現時点では、独立した小数点位置パラメータは存在しないと見なすことができる。f2は第2のスケーリング係数である。このとき、量子化予定のデータの数値領域にあるすべての数値の最大絶対値をZとすると、f1=Z/(2n−1−1)でZ=(2n−1−1)xf1となる。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が(2n−1−1)xf1+Oであるが、nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−(2n−1−1)xf1+Oである。
式(10)からわかるように、第5ケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔はf1であり、量子化間隔はCである。
上記のオフセットOの説明に基づいて、第6の量子化パラメータのケースが表れる。第6ケース:量子化パラメータには、小数点位置パラメータ、第2のスケーリング係数f2、およびオフセットOが含まれる。この場合、次の式(12)を使用して、量子化予定のデータを量子化し、量子化データIxを取得できる。
Ix=round((Fx−O)/(2sxf2)) 式(12)
ここ、sは小数点位置パラメータで、オフセットO、f2は第2のスケーリング係数で、f2=Z/(2s(2n−1−1))かつZ=(Zmax−Zmin)/2であり、Ixはデータxの量子化後のnビットのバイナリ表現の値、Fxはデータ量子化前の浮動小数点値、roundは四捨五入の丸め演算である。このroundの丸め演算に限定されるものではなく、他の丸め演算方法も使用できることに注意されたい。たとえば、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算で式(12)の丸め演算を置き換えてもよい。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドでの最大値Aは2s(2n−1−1)である。式(12)からわかるように、第6ケースに対応する量子化パラメータを使用して量子化予定のデータを量子化すると、量子化間隔は2sxf2であり、量子化間隔はCで表される。
量子化予定のデータの数値領域におけるすべての数値の最大絶対値をZとする。このとき、式(2)に従って、次の式が得られる。
1>=Z/(2s(2n−1−1))>1/2、即ち1>=Z/A>1/2、1>=f2>1/2
f2=Z/(2s(2n−1−1))=Z/Aの場合、式(2)によれば、Zは損失なく正確に表現できる。f2=1の場合、s=ceil(ln(Z/(2n−1−1)))である。nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最大値が(2n−1−1)x2sxf2+Oであるが、nビットの固定小数点数で表せる量子化予定のデータの数値フィールドの最小値が−(2n−1−1)x2sxf2+Oである。
6つの量子化パラメータの確定プロセスに関する上記の詳細な説明は、説明の一例にすぎない。量子化パラメータのタイプは、異なる実施形態における上記の説明とは異なる場合がある。式(1)〜式(13)からわかるように、小数点位置パラメータとスケーリング係数はすべてデータビット幅に関連している。データビット幅が異なると、小数点位置パラメータとスケーリング係数が異なるため、量子化の精度に影響する。トレーニングまたは微調整の過程で、特定の反復範囲内で、同じデータ幅の量子化を使用しても、ニューラルネットワーク演算の全体的な精度にはほとんど影響しない。特定の回数の反復の後、同じデータビット幅の量子化はトレーニングまたは微調整の精度要件を満たすことができない。これには、トレーニングまたは微調整プロセスとともにデータビット幅nを調整する必要がある。簡単に、データビット幅nを手動で設定できる。異なる反復時間の範囲で、事前に設定された対応するデータビット幅nを呼び出する。ただし、前述のように、低ビット幅で表される固定小数点数を使用してトレーニングを実装するプロセスは非常に複雑である。データビット幅を事前に設定するこの人為的な調整方法は、基本的に実際の応用の要件を満たしていない。
この技術案では、データビット幅nは量子化誤差に従って調整される。より詳細には、量子化誤差をしきい値と比較し、比較結果を取得する。ここで、しきい値は第1のしきい値と第2のしきい値を含み、第1のしきい値が第2のしきい値よりも大きい。比較結果の3つの場合がある。第1の場合は、量子化誤差が第1のしきい値以上である。この場合、データビット幅が増やす。第2のケースは、量子化誤差が第2のしきい値以下である場合である。この場合、データビット幅を減らす。第3のケースは、量子化誤差が第1のしきい値と第2のしきい値の間にある場合である。この場合、データビット幅は変更されない。実際の応用では、第1のしきい値と第2のしきい値は、経験値または可変ハイパーパラメータである可能性がある。従来のハイパーパラメータ最適化方法は、第1のしきい値と第2のしきい値に適しており、ハイパーパラメータ最適化スキームはここでは繰り返されない。
データビット幅は、固定ビット長に従って調整できること、または量子化誤差と誤差しきい値の差に従って調整できることを強調する必要がある。データビット幅は、可変調整ステップ長さによって、最後に次のように調整できる。ニューラルネットワークの運用プロセスの実際のニーズに応じて、データビット幅を長くまたは短く調整できる。たとえば、現在の畳み込み層のデータビット幅nは16であり、データビット幅nは量子化誤差diffbitに応じて12に調整される。つまり、実際の応用では、データビット幅nを16ではなく12にして、ニューラルネットワークの運用プロセスの精度要件を満たすため、精度の許容範囲内で固定小数点の動作速度を大幅に向上させることができる。これにより、人工知能プロセッサのチップのリソース使用率が向上する。
量子化誤差diffbitの場合、量子化誤差は、量子化後のデータおよび量子化前の対応するデータによって確定される。実際の応用では、3つの量子化誤差確定方法があり、それらはすべてこの技術案に適用できる。第1の方法:量子化間隔、量子化後のデータの数、および量子化前の対応するデータに従って、式(14)に従って量子化誤差を確定する。
diffbit=ln(C*2−1*m/Σi|Fi|) 式(14)
ここで、Cは量子化中の対応する量子化間隔、mは量子化後に取得された量子化データの数、Fiは量子化予定のデータに対応する浮動小数点値、iは量子化予定のデータ集合内のデータの添え字である。
量子化誤差diffbitを取得するための上記の方法は単なる例であり、網羅的なリストではないことを強調すべきである。当業者は、本開示の技術案に基づいて、本開示の技術案の本質を理解し得る。他の変形または変換を生成する。量子化後のデータおよび量子化前の対応するデータに基づく量子化誤差の確定をサポートする変形式。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示に属するべきである。保護の範囲。
データビット幅については、図5aは、トレーニングプロセス中のニューラルネットワークの重みデータの変動範囲のグラフの1つである。図5bは、トレーニングプロセス中のニューラルネットワークの重みデータの変動範囲の第2のグラフである。図5aおよび5bでは、横軸は反復回数を表し、縦軸は対数を取った後の重みの最大値を表す。図5aに示される重みデータ変動振幅曲線は、ニューラルネットワークの任意の畳み込み層の同じエポック(epoch)における異なる反復に対応する重みデータの変動を示している。図5bでは、conv0層は重みデータ変動範囲曲線Aに対応し、conv1層は重みデータ変動範囲曲線Bに対応し、conv2層は重みデータ変動範囲曲線Cに対応し、conv3層は重みデータ変動範囲曲線D、conv4に対応する。この層は、重みデータの変動範囲曲線eに対応する。図5aと図5bからわかるように、同じエポックで、初期トレーニング段階では、各反復の重み変動範囲が比較的大きい。トレーニングの中期および後期では、各反復での重みの変化はそれほど大きくならない。この場合、トレーニングの中期以降の段階では、各反復の前後で重みデータがほとんど変化しないため、各反復に対応する層の重みデータは、特定の反復間隔内で類似性がある。ニューラルネットワークトレーニングプロセスでは前の反復で各層に含まれるデータを量子化する場合、前の反復で対応する層の量子化で使用されたデータビット幅を使用できる。ただし、トレーニングの開始時には、各反復の前後で重みデータが比較的大きく変化するため、量子化に必要な浮動小数点演算の精度を満たすために、初期トレーニング段階の各反復で、前の反復で使用した対応する層量子化を使用する。データビット幅は、カレント反復の対応する層の重みデータを量子化するか、現在の層のプリセットデータビット幅nに基づいて現在の層の重みデータを量子化して、量子化された固定小数点数を取得する。量子化された重みデータと量子化前の対応する重みデータに従って量子化誤差diffbitを確定する。量子化誤差diffbitとしきい値の比較結果、前の反復で対応する層の量子化に使用されたデータビット幅n、または現在の層のプリセット値データビット幅nが調整され、調整後のデータビット幅がカレント反復の対応する層の重みデータの量子化に適用される。さらに、トレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューラルネットワークの各反復における各層のデータビット幅は、対応するニューラルネットワーク層にのみ適用できる。
重みデータを例にとると、ニューラルネットワークのトレーニングや微調整の過程で、ニューロンデータと勾配データに対応するデータビット幅も同じであり、ここでは繰り返さない。
ニューラルネットワーク推論のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークの推論プロセスでは、ニューラルネットワークの各層のデータビット幅が対応する層に適用される。実際の応用では、推論プロセスで毎回入力されるニューロンデータは異なるか異なる可能性があり、ニューラルネットワークの各層間の重みデータは互いに独立しているため、ニューラルネットワークの各隠れ層層の入力ニューロンデータは類似していない。量子化する場合、上位層の入力ニューロンデータで使用されるデータビット幅は、現在の層の入力ニューロンデータには適していない。これに基づいて、量子化に必要な浮動小数点演算の精度を満たすために、推論では、現在の層の入力ニューロンデータは、前の層の入力ニューロンデータの量子化で使用されるデータビット幅によって、または現在の層に基づいて量子化される。プリセットデータのビット幅nは、現在の層の入力ニューロンデータを量子化して、量子化された固定小数点数を取得する。量子化前の入力ニューロンデータとそれに対応する量子化された入力ニューロンデータに従って量子化誤差diffbitを確定し、量子化誤差diffbitとしきい値の比較結果によって、上位層の入力ニューロンデータを量子化するときに使用されるデータビット幅はnまたは現在の層のプリセットデータビット幅nが調整され、調整後のデータビット幅が現在の層の入力ニューロンデータの量子化に適用される。重みデータに対応するデータビット幅も同じであり、ここでは繰り返さない。
量子化パラメータについては、図5aからからわかるように、同じ周期(エポック)の初期トレーニング段階で、各反復の重みが比較的大きく変化する。トレーニングの中期および後期では、各反復の前後の重みデータはあまり変化しないため、各反復の対応する層の重みデータは特定の反復間隔内で類似性があり、カレント反復の各層が量子化される。前の反復の対応する層の対応するデータの量子化パラメータは、前の反復のデータに使用できる。量子化パラメータは、トレーニングの中間および後の段階で反復なしで再確認され、量子化パラメータは、最初のトレーニング段階の各反復の各層でのみ確認される。ニューラルネットワーク演算に必要な浮動小数点操作の精度を満たし、量子化の効率を大幅に向上させる。さらに、トレーニングまたは微調整のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューラルネットワークの各反復における各層の量子化パラメータが、対応する層で量子化される対応するデータに適用される。
重みデータを例にとると、ニューラルネットワークのトレーニングまたは微調整プロセスでは、ニューロンデータと勾配データに対応する量子化パラメータも同じであり、ここでは繰り返さないことにする。
ニューラルネットワーク推論のプロセスでは、ニューラルネットワークの各層間の重みデータは互いに独立しており、類似性はない。重みデータには類似性がないため、各層間のニューロンデータも互いに独立しており、類似性はない。したがって、ニューラルネットワーク推論プロセスでは、ニューラルネットワークの各層の量子化パラメータが、対応する層で量子化予定のデータに適用される。たとえば、ニューラルネットワークの現在の層は畳み込み層である。畳み込み層で量子化予定のデータによると、現在の畳み込み層で量子化予定のデータの量子化パラメータは、図2に示す技術案に従って取得される。量子化パラメータは、現在の畳み込み層は、他の層が畳み込み層であっても、ニューラルネットワークの他の層に適用することはできない。
要約すると、データビット幅と量子化パラメータの拡張戦略は、データ間の類似性に基づいて確定される。データが類似している場合は、データビット幅と量子化パラメータを使用できる。類似性を得るには、データビット幅または量子化パラメータを調整する必要がある。データ間の類似性の測度は、通常KLダイバージェンスによって測定され、次の式(17)によっても測定できる。
Absmax(A)≒absmax(B)かつmean(A)≒mean(B) 式(17)
いくつかの実施形態では、データAおよびデータBが式(17)を満たす場合、データAおよびデータBは類似していると確定される。
上記の量子化誤差の確認、データビット幅、データビット幅、および量子化パラメータの拡張戦略の調整方法は単なる例であり、以下のように網羅的ではないことに注意されたい。量子化誤差を確認する方法、データビット幅を調整する方法、データビット幅を拡張する戦略、および量子化パラメータはすべて、ニューラルネットワークの微調整プロセスに適している。また、データ間の類似性の測定に関しては、上記のKLダイバージェンスと式(17)の類似性測定方法は単なる例であり、以下のような網羅的ではない。ヒストグラムマッチング法、マトリックス分解法、特徴点に基づく画像類似度計算法、近接測定標準法など。当業者が本開示の技術案の本質を理解している状況下では、本開示の技術案に基づいて他の変形または変形を生じ得るが、達成された機能および技術的効果が本開示のものと類似している限り、すべてがこの開示の保護範囲に含まれるべきである。
要約すると、トレーニングの中期および後期段階では、各反復の前後の重みデータはあまり変化しないため、各反復の対応する層の重みデータは、特定の反復間隔内で類似している。このテクノロジーを作成するためにこのソリューションは、合理的なアプリケーションを実現するための人工知能プロセッサのチップリソースの要件を満たすためのトレーニングまたは微調整での適用性が高くなる。反復間隔内で各反復の対応する層がなるように、反復間隔を確定するための戦略が必要である。データビット幅nは変更されないままであり、反復間隔を超えると、データビット幅nが変更されるため、反復ごとにデータビット幅nを調整するかどうかを確定する必要はない。同様に、量子化パラメータは同じであり、人工知能プロセッサのチップのピーク計算能力を向上させると同時に、量子化に必要な浮動小数点演算の精度を満たする。
図6に示すように、これは目標反復間隔を確定する方法のフローチャートの1つである。図6に示す技術案では、目標反復間隔は少なくとも1つの重み更新反復を含み、同じデータビット幅が同じ目標反復間隔内の量子化プロセスで使用される。目標反復間隔を確定するステップには、次のものが含まれる。
ステップ601):予測時点で、重み反復プロセス中に量子化予定のデータの対応する小数点位置パラメータの変化傾向値を確定する;ここで、予測時点は、データビット幅を調整する必要があるかどうかを確定するための時点である。調整が行われる時点、予測時点は、重み更新の反復が完了する時点に対応する。
このステップでは、式(18)に従って、小数点位置パラメータの変化傾向値は、現在の予測時点に対応する重みに基づいている。反復プロセス中の小数点位置パラメータのスライディング平均値、および前の予測時点に対応する値重み反復プロセスの小数点位置パラメータのスライディング平均値が確定されるか、現在の予測時点に対応する重み反復プロセスの小数点位置パラメータと、最後の予測時点に対応する重み反復プロセスの小数点位置によって確定される。パラメータのスライディング平均値が確定される。式18の式は次のとおりである。
diffupdate1=|M(t)−M(t−1)|=α|s(t)−M(t−1)| 式(18)
式18で、M(t)はトレーニングの反復とともに増やす小数点位置パラメータsのスライディング平均値である。その中には、M(t)は式(19)に従って得られる、トレーニングの反復が増やすときのt番目の予測時点に対応する小数点位置パラメータのスライディング平均値がある。s(t)はt番目の予測時点に対応する小数点位置パラメータsである。αはハイパーパラメータであり、M(t−1)はt−1番目の予測時点に対応する小数点位置パラメータsのスライディング平均値である。小数点位置パラメータsの変化は、量子化する現在のデータの最大値Zmaxの変化にも偽装して反映されるため、小数点位置パラメータの変化傾向を測定する。diffupdate1値が大きいほど、値の範囲が大幅に変化し、更新頻度が短くなる。つまり、目標反復間隔が短くなる。
M(t)←αxs(t−1)+(1−α)M(t−1) 式(19)
ステップ602):小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定する。
この技術案では、目標反復間隔は式(20)に従って確定される。目標反復間隔の場合、同じ目標反復間隔内の量子化プロセスで同じデータビット幅が使用され、異なる目標反復間隔内の量子化プロセスで使用されるデータビット幅は同じでも異なっていてもよい。
I=β/diffupdate1−γ 式(20)
式(20)で、Iは目標反復間隔である。diffupdate1は小数点位置パラメータの変化傾向値である。β、γは経験値であり、可変ハイパーパラメータにすることもできる。従来のハイパーパラメータ最適化方法はすべて、β、γに適しており、ハイパーパラメータの最適化スキームはここでは繰り返されない。
この技術案の場合、予測時点には最初の予測時点が含まれ、最初の予測時点は目標反復間隔によって確定される。具体的には、トレーニングまたは微調整プロセスのt番目の予測時点で、カレント反復の対応する層の重みデータが、前の反復の対応する層の量子化で使用されるデータビット幅を使用して量子化され、量子化された固定小数点数が取得される。量子化前の重みデータとそれに対応する量子化前の重みデータに基づいて量子化誤差diffbitを求めます。量子化誤差diffbitはそれぞれ第1しきい値および第2しきい値と比較され、その比較結果は、前の反復で対応する層の量子化に使用されたデータビット幅を調整するかどうかを確定するためである。仮定:t番目の最初の予測時点は100回目の反復に対応し、99回目の反復で使用されるデータビット幅はn1である。100回目の反復では、データビット幅n1に従って量子化誤差diffbitを確認し、量子化誤差diffbitを第1しきい値、第2しきい値と比較して比較結果を求めます。比較結果により、データビット幅n1を変更する必要がないことが確認された場合は、式(20)を使用して、目標反復間隔が8反復であることを確認する。現在の目標反復間隔内で、1番目の反復として100回目の反復を使用する場合は、100回目の反復から107回目の反復まで第2の反復は現在の目標反復間隔である。100回目の反復が前の目標反復間隔の最後の反復である場合、101回目から108回目の反復が現在の目標反復間隔として使用される。現在の目標反復間隔で量子化する場合、各反復は、前の目標反復間隔で使用されたデータビット幅n1を引き続き使用する。この場合、異なる目標反復間隔間の量子化で使用されるデータビット幅は同じにすることができる。100回目の反復から107回目の反復が現在の目標反復間隔として使用される場合、次の目標反復間隔内の108回目の反復は、t+1の最初の予測時点と見なされる。108回の反復が現在の目標反復間隔として使用され、現在の目標反復間隔内の108回目の反復がt+1の最初の予測時点として使用される。t+1番目の予測時点で、データビット幅n1に従って量子化誤差diffbitを確認し、量子化誤差diffbitを第1しきい値、第2しきい値と比較して比較結果を求めます。比較結果から、データビット幅n1をn2に変更する必要があると判断し、式(20)を使用して、目標反復間隔が55反復であることを確認する。次に、108回目の反復から163回目の反復、または109回目の反復から163回目の反復が目標反復間隔として使用され、各反復は、目標反復間隔内で量子化するときにデータビット幅n2を使用する。この場合、量子化で使用されるデータビット幅は、異なる目標反復間隔間で異なる可能性がある。
この技術案に関しては、最初の予測時点が1番目の反復であるか、目標反復間隔内の最後の反復であるかに関係なく、式(18)を適用して、小数小数点位置パラメータの変化傾向値を取得できる。現在の時点での最初の予測時点が現在の目標反復間隔の1番目の反復である場合、式(18)では、M(t)は現在の目標反復間隔の1番目の反復に対応する時点に対応する小数点位置パラメータsが、トレーニング反復とともに増やすスライディング平均値である。s(t)は現在の目標反復間隔の1番目の反復の時点に対応する小数点位置パラメータsであり、M(t−1)は前の目標反復間隔の1番目の反復の時点に対応する小数点位置パラメータsが、トレーニングの反復とともに増やすスライディング平均値である。現在の時点での最初の予測時点が現在の目標反復間隔の最後の反復である場合、式(18)は、M(t)はトレーニング反復としての現在の目標反復間隔の最後の反復に対応する時点に対応する小数点位置パラメータsが、増加したスライディング平均値であり、s(t)は現在の目標反復間隔の最後の反復の時点に対応する小数点位置パラメータsであり、M(t−1)は前の目標反復間隔の最後の反復の時点に対応する小数点位置パラメータsが、トレーニングの反復とともに増やすスライディング平均値である。
この技術案の場合、第1の予測時点を含むことに基づいて、予測時点はまた、第2の予測時点を含み得る。第2の予測時点は、データ変動範囲曲線に従って確定される。ニューラルネットワークトレーニングプロセスにおけるビッグデータのデータ変動範囲に基づいて、図5aに示されるようなデータ変動範囲曲線が得られる。
重みデータを例にとると、図5aに示すデータ変動範囲曲線からからわかるように、トレーニングの開始からT回目の反復の反復間隔まで、重みが更新されるたびにデータ変動範囲が非常に大きい。現在の予測時点で、量子化するとき、カレント反復は最初に前の反復のデータビット幅n1を使用して量子化し、得られた量子化結果と量子化前の対応するデータが対応する量子化誤差を確定する。量子化誤差はそれぞれ第1のしきい値である。第2のしきい値を比較し、比較結果に応じてデータビット幅n1を調整し、データビット幅n2を取得する。データビット幅n2を使用して、カレント反復に含まれる量子化される重みデータを量子化する。次に、式(20)に従って目標反復間隔を確定し、最初の予測時点を確定し、最初の予測時点で、データビット幅を調整するかどうかと調整方法を確定し、式(20)に従って次の目標反復間隔を確定する。次の最初の予測時点を取得する。トレーニングの開始からT回目の反復までの間隔のため、各反復の前後で変化する重みデータが非常に大きく、各反復の対応する層の重みデータに類似性がない。精度の問題に対応するために、量子化してください。カレント反復の各層のデータが前の反復の対応する層の対応する量子化パラメータを引き続き使用できない場合、データビット幅は最初のT反復に対して調整できる。このとき、量子化は前のT反復の各反復に対して使用される。のデータビット幅が異なり、目標反復間隔は1反復である。人工知能プロセッサのチップのリソースの利用を最適化するために、前のT反復の目標反復間隔は、図5aに示すデータ変動範囲曲線によって明らかにされた法則に従って、つまり前のデータ変動範囲曲線に従って事前に事前設定できる。T反復の目標反復間隔は直接事前設定されており、前のT反復の各反復に対応する重みの更新が第2の予測時点として完了したことを式(20)で確認する必要はない。これにより、人工知能プロセッサのチップのリソースがより合理的になる。図5aに示すデータ変動範囲曲線は、T回目の反復以降あまり変化していない。トレーニングの中期および後期段階では、量子化パラメータは反復なしで再確認される。T回目の反復またはT+1回目の反復では、現在の時刻を使用する。反復は、量子化前のデータと量子化後のデータに対応して、量子化誤差を確定する。量子化誤差に応じて、データビット幅の調整が必要かどうか、調整方法を確定し、式(20)に従って目標反復間隔を確定する。確認された目標反復間隔が55反復である場合、データビット幅を調整するかどうかを確定するための最初の予測時点として、T回目の反復またはT+1回目の反復後の55回の反復に対応する時点が必要である。同じ周期(エポック)のすべての代数演算が完了するまで、次の最初の予測時点を確定するために、式(20)に従って次の目標反復間隔を調整および確定する方法。これに基づいて、各エポックの後に、データビット幅または量子化パラメータに適応調整が行われ、最後に、量子化後のデータを使用して、精度が期待に応えるニューラルネットワークが取得される。
特に、図5aに示す重みデータの変動範囲のグラフからTの値が130と確定されたとする(この値は図5aに対応していない。説明の便宜上、Tの値は130とのみ仮定する。)の場合、トレーニングプロセスの130回目の反復は、第2の予測時点と見なされ、現在の最初の予測時点は、トレーニングプロセスの100回目の反復である。100回目の反復では、式(20)目標反復間隔を35回の反復として確定する。目標反復間隔で、130回目の反復までトレーニングし、第2の予測時点に到達する。この時点で、データビット幅を調整する必要があるかどうか、および130回目の反復に対応する時点でどのように調整するかを確定する必要がある。式(20)は、目標反復間隔を確定する。この場合に確定された目標反復間隔が42反復であると仮定する。130回目の反復から172回目の反復までを目標反復間隔として、目標反復間隔が35回の場合に確定される最初の予測時点に対応する135回目の反復は、42回の目標反復間隔内にある。135回目の反復では、式(20)に従って、データビット幅を調整するかどうかとその調整方法を判断できる。また、135回目の反復で評価予測を行わず、172回目の反復に直接進んで、データビット幅を調整する必要があるかどうかとその調整方法を評価することもできる。つまり、135回目の反復で評価と予測を実行するかどうかは、この技術案に適している。
要約すると、第2の予測時点は、データ変動曲線に従って事前に事前設定されている。トレーニングまたは微調整の初期段階では、目標反復間隔を確定するために人工知能プロセッサのチップのリソースを費やす必要はない。プリセット第2の予測時間この時点で、データビット幅は量子化誤差に応じて直接調整され、調整後のデータビット幅は、カレント反復に含まれる量子化予定のデータを量子化するためである。トレーニングまたは微調整の中期および後期段階では、式(20)に従って目標反復間隔を取得して、対応する最初の予測時点を確定し、各最初の予測時点で、データビット幅を調整するかどうかと調整方法を確定する。このように、ニューラルネットワーク演算に必要な浮動小数点操作の精度を満たしながら、人工知能プロセッサのチップのリソースが合理的に使用され、量子化の効率が大幅に向上する。
実際には、データビット幅のより正確な目標反復間隔を得るために、小数点位置パラメータの変化傾向値だけでなく、小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値も同時に考慮することができる。図7に示すように、これは、目標反復間隔を確定する方法の第2のフローチャートである。目標反復間隔を確定するステップには、次のものが含まれる。
ステップ701):予測時点で、重み反復プロセス中における量子化予定のデータの対応する小数点位置パラメータの変化傾向値およびデータビット幅の変化傾向値を確定する;ここで、予測時点は、データビット幅を調整する必要があるかどうかを判断するための時点である。予測時点は、重み更新の反復が完了する時点に対応する。
小数点位置パラメータの変化傾向値に基づいてデータビット幅の目標反復間隔を確定するための図6に示される技術案の内容は、図7に示される技術案に適用可能であり、ここでは繰り返されないことを強調すべきである。
このステップでは、式(21)に従って、データビット幅の変化傾向値が対応する量子化誤差を使用して確定される。
diffupdate2=δ*diff2 bit 式(21)
式(21)で、δはハイパーパラメータ、diffbitは量子化誤差、diffupdate2はデータビット幅の変化傾向値である。diffupdate2は量子化に使用されるデータビット幅nの変化傾向を測定するには使われ、diffupdate2値が大きいほど、固定小数点ビット幅を更新する必要があり、更新頻度を短くする必要がある。
図7に含まれる小数点位置パラメータの変化傾向値は、式(18)に従って取得でき、式(18)のM(t)は式(19)に従って取得できる。diffupdate1は小数点位置パラメータの変化sは、量子化予定のデータの最大値Zmaxの変化にも偽装して反映されるため、小数点位置パラメータの変化傾向を測定する。diffupdate1値が大きいほど、値の範囲が大幅に変化し、更新頻度が短くなる。つまり、目標反復間隔が短くなる。
ステップ702):小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値に従って、対応する目標反復間隔を確定する。
この技術案では、目標反復間隔は式(22)に従って確定される。目標反復間隔の場合、同じ目標反復間隔内の量子化プロセスで同じデータビット幅が使用され、異なる目標反復間隔内の量子化プロセスで使用されるデータビット幅は同じでも異なっていてもよい。
I=β/max(diffupdate1,diffupdate2)−γ 式(22)
式(22)で、Iは目標反復間隔である。β、γはハイパーパラメータである。diffupdate1は小数点位置パラメータの変化傾向値である。diffupdate2はデータビット幅の変化傾向値である。diffupdate2経験値であり、可変ハイパーパラメータにすることもできる。従来のハイパーパラメータ最適化方法はすべて、β、γに適しており、ハイパーパラメータの最適化スキームはここでは繰り返されない。
この技術案では、diffupdate1を使用して小数点位置パラメータの変化を測定するが、データビット幅nの変化による小数点位置パラメータの変化は無視してください。これは、diffupdate2のデータビット幅nの変更をすでに反映しているためである。diffupdate1でこの無視された操作を行わないと、式(22)に従って確定された目標反復間隔Iが不正確になり、最初の予測時点が多すぎます。トレーニングまたは微調整中に、データビット幅を頻繁に実行するのは簡単である。n更新するかどうか、および操作を更新する方法。その結果、人工知能プロセッサのチップリソースが合理的に使用されない。
上記の説明に基づいて、diffupdate1はM(t)に従って確定される。t−1番目の予測時点に対応するデータビット幅をn1とすると、対応する小数点位置パラメータs1はであり、トレーニングの反復とともに増やす小数点位置パラメータのスライディング平均値はm1である。データビット幅n1を使用して、量子化予定のデータを量子化し、量子化された固定小数点数を取得する。量子化前のデータと対応する量子化データに基づいて量子化誤差diffbitを求めます。量子化誤差diffbitとしきい値の比較結果に応じて、データビット幅n1をn2に調整し、データビット幅を|n1−n2|調整し、t番目の予測時点での量子化に使用するデータビット幅はn2である。データビット幅の変更による小数点位置パラメータの変更を無視するために、M(t)を確定するとき以下の2つの最適化方法のいずれかを選択してことができる。第1の方法:データビット幅が|n1−n2|ビット増やすと、s(t−1)はs1−|n1−n2|となり、M(t−1)はm1−|n1−n2|となる。s(t−1)、M(t−1)を式(19)に代入されてM(t)を取得される。つまり、t番目の予測時点に対応する小数点位置パラメータがトレーニングに従う。スライディング平均値を反復増加させる。データビット幅が|n1−n2|ビットだけ減少した場合、s(t−1)はs1+|n1−n2|となり、M(t−1)はm1+|n1−n2|となる。値は式(19)に代入されて得られる。これは、トレーニングの反復が増やすにつれて、t番目の予測時点に対応する小数点位置パラメータのスライディング平均値である。第2の方法:データビット幅が|n1−n2|で増やすか減少するかに関係なく、s(t−1)はs1となり、M(t−1)はm1となる。s(t−1)、M(t−1)を式(19)に代入してM(t)を取得する。データビット幅が|n1−n2|ビット増やすと、M(t)と|n1−n2|が減算され、データビット幅が|n1−n2|ビット減少すると、M(t)と|n1−n2|が加算され、その結果は、トレーニングの反復が増やすにつれて、t番目の予測時点に対応する小数点位置パラメータのスライディング平均値として使用される。これら2つの方法は同等であり、どちらもデータビット幅の変更による小数点位置パラメータの変更を無視し、より正確な目標反復間隔を取得できるため、人工知能プロセッサのチップのリソース使用率が向上する。
実際の応用では、データビット幅nと小数点位置パラメータsは量子化精度に大きな影響を与え、第2のスケーリング係数f2と量子化パラメータのオフセットOは量子化精度にほとんど影響を与えない。第1のスケーリング係数f1は、前述のように、第2のケースに属する場合、2sxf2全体として第1のスケーリング係数f1と見なされる。小数点位置パラメータsは量子化精度に大きな影響を与えるため、この場合は第1のスケーリング係数f1は、量子化に大きな影響を与える。したがって、この技術案では、データビット幅nが変化し、小数点位置パラメータが可変であるかどうかに関係なく、小数点位置パラメータの目標反復間隔を確定することも非常に意味がある。図6に示す技術案このアイデアは、小数点位置パラメータの目標反復間隔を確定するために適用できる。したがって、小数点位置パラメータの目標反復間隔を確定する方法を図8Aに示する。
ステップ801):予測時点で、重み反復プロセスにおける量子化予定のデータの対応する小数点位置パラメータの変化傾向値を確定する;ここで、予測時点は、データビット幅を調整する必要があるかどうかを判断するための時点である。予測時点は、重み更新の反復が完了する時点に対応する。
ステップ802):小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定する。
小数点位置パラメータの変化傾向値に基づいて量子化パラメータの目標反復間隔を確定するための図6に示される技術案の内容は、図8Aに示される技術案に適用可能であり、ここでは繰り返されないことを強調すべきである。図8Aに示される技術案の場合、量子化パラメータは、好ましくは、小数小数点位置パラメータである。
データビット幅を確定するための上記の目標反復間隔および量子化パラメータの目標反復間隔は単なる例であり、網羅的ではないことに留意されたい。当業者は、本開示の技術案の本質を理解している。次に、本開示の技術案に基づいて、他の変形または変換を生成することができる。例えば、データビット幅を確定するための目標反復間隔内の量子化パラメータを確定するための目標反復間隔は、図6、7および8Aにも適用可能である。示されている技術案。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
技術案は、量子化パラメータを確定し、量子化誤差に応じてデータビット幅または量子化パラメータを調整し、データビット幅または量子化パラメータを調整するための目標反復間隔を確定して、ニューラルネットワーク演算プロセスの適切な時点を達成するためである。データビット幅または量子化パラメータは、適切な量子化パラメータが適切な反復時点で使用されるように調整され、人工知能プロセッサのチップを実現して、固定点動作速度に到達するためのニューラルネットワーク動作を実行し、人工知能プロセッサのチップのピーク計算能力を向上させる。同時に、操作に必要な浮動小数点操作の精度が満たされる。
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関与する作用およびモジュールが必ずしも本開示によって必要とされないことを認識すべきである。
ここでの量子化パラメータは、プリセット量子化パラメータ(すなわち、オフライン量子化パラメータ)であり得るか、または量子化予定のデータの処理に従って得られる量子化パラメータ(すなわち、オンライン量子化パラメータ)であり得ることが理解されよう。ニューラルネットワークの推論、トレーニング、および微調整の過程で、目標データをオフラインまたはオンラインで量子化できる。それらの中で、オフライン量子化は、量子化パラメータを使用して、量子化予定のデータに対してオフライン処理を実行することであり得る。オンライン量子化は、量子化パラメータを使用して量子化予定のデータのオンライン処理である。たとえば、ニューラルネットワークは人工知能チップ上で実行され、量子化および量子化されるパラメータのデータは、オフライン量子化のために人工知能チップの外部のコンピューティング装置に送信できる。または、人工知能チップ以外のコンピューティング装置を使用して、事前に量子化予定のデータを計算できる。そしてオフライン量子化のための量子化パラメータ。ニューラルネットワークを実行する人工知能チップのプロセスでは、人工知能チップは、量子化パラメータを使用して、量子化後のデータのオンライン量子化を実行できる。ニューラルネットワークに量子化する複数の層が含まれている場合、量子化する各層をオンラインとオフラインでそれぞれ量子化できる。この開示は、量子化される各層の量子化プロセスがオンラインであるかオフラインであるかを制限するものではない。
本開示の一実施形態によれば、データビット幅の調整方法が提供される。以下、図8B〜8Vを参照して説明する。図8Bは、本開示の一実施形態におけるデータビット幅の調整方法800Bのフローチャートを示す。この方法には次のものが含まれる。
S114で、カレント検査反復の量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定し、ここ、カレント検査反復の量子化データは、カレント検査反復の量子化予定のデータを量子化することによって取得される。
任意選択で、前述のプロセッサは、初期データビット幅を使用して、量子化予定のデータを量子化して、前述の量子化データを取得することができる。カレント検査反復の初期データビット幅はハイパーパラメータであり得、カレント検査反復の初期データビット幅はまた、カレント検査反復の前の一つ前の検査反復の量子化データに基づいて確定され得る。
具体的には、プロセッサは、カレント検査の反復で量子化予定のデータおよびカレント検査の反復で量子化データに従って、中間表現データを確定することができる。オプションで、中間表現データは、量子化予定のデータの前述の表現形式と一致する。例えば、プロセッサは、前述の量子化データに対して逆量子化を実行して、量子化予定のデータの表現形式と一致する中間表現データを取得することができる。ここで、逆量子化は、量子化の逆プロセスを指す。たとえば、量子化データは式23を使用して取得でき、プロセッサは式24に従って量子化データに対して逆量子化を実行して、対応する中間表現データを取得し、量子化予定のデータと中間表現データに従って量子化誤差を確定することもできる。
Ix=round(Fx/2s) 式(23)
Fx1=round(Fx/2s)x2s 式(24)
さらに、プロセッサは、量子化予定のデータおよび対応する中間表現データに従って、量子化誤差を計算することができる。現在の検査反復で量子化予定のデータがFx=[Z1,Z2...,Zm]であるとすると、量子化予定のデータに対応する中間表現データはFx1=[Z1 (n),Z2 (n)...,Zm (n)]である。プロセッサは、量子化予定のデータFxおよびそれに対応する中間表現データFx1に従って誤差項を確定し、誤差項に従って量子化誤差を確定することができる。
必要に応じて、プロセッサは、中間表現データFx1の要素の合計および量子化予定のデータFxの要素の合計に従って、上記の誤差項を確定することができる。誤差項は、中間表現データFx1の要素の合計および量子化後のデータFxの各要素の合計の差。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
diffbit=ln((Σi|Zi (n)|−Σi|Zi|)/Σi|Zi|+1) 式(25)
ここ、ziは量子化予定のデータの要素であり、Zi (n)はデータFx1を表す中央の要素である。
オプションで、プロセッサは、量子化予定のデータの各要素と中間表現データFx1の対応する要素との間の差をそれぞれ計算し、m個の差の値を取得し、m個の差の値の合計を誤差項として使用することができる。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
diffbit=ln(Σi|Zi (n)−Zi|/Σi|Zi|+1) 式(26)
ここ、ziは量子化予定のデータの要素であり、Zi (n)はデータFx1を表す中央の要素である。
オプションで、量子化予定のデータの各要素と中間表現データFx1の対応する要素との差は、ほぼ2s−1に等しい場合がある。したがって、量子化誤差は、次の式に従って確定することもできる。
diffbit=ln(2s−1*m/Σi|Zi|) 式(27)
ここ、mは目標データに対応する中間表現データFx1の数、sは小数点位置、ziは量子化予定のデータの要素である。
オプションで、中間表現データは、前述の量子化データのデータ表現形式と一致させることもでき、量子化誤差は、中間表現データおよび量子化データに基づいて確定される。たとえば、量子化予定のデータは次のように表すことができる。Fx≒Ixx2s、次に中間表現データIx1≒Fx/2sを確定でき、中間表現データIx1は前述の量子化データと同じデータ表現形式を持つことができる。このとき、プロセッサは、上記の式(23)で計算された中間表現データIx1およびIx=round(Fx/2s)に従って、量子化誤差を確定できる。特定の量子化誤差の確定方法は、上記の式(25)から式(27)を参照することができる。
S115で、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定する。
具体的には、プロセッサは、量子化誤差に従ってカレント検査反復に対応するデータビット幅を適応的に調整し、カレント検査反復によって調整された目標データビット幅を確定することができる。量子化誤差がプリセット条件を満たす場合、カレント検査反復に対応するデータビット幅を変更しないでおくことができる。つまり、カレント検査反復の目標データビット幅を初期データビット幅と等しくすることができる。量子化誤差がプリセット条件を満たさない場合、プロセッサは、カレント検査反復で量子化予定のデータに対応するデータビット幅を調整して、カレント検査反復に対応する目標データビット幅を取得できる。プロセッサが目標データのビット幅を使用して、カレント検査反復で量子化予定のデータを量子化する場合、量子化誤差は前述のプリセット条件を満たす。オプションで、前述のプリセット条件は、ユーザーが設定したプリセットしきい値にすることができる。
任意選択で、図8Cは、本開示の別の実施形態におけるデータビット幅の調整方法800Cのフローチャートを示す。図8Cに示されるように、前述の操作S115は、以下を含み得る。
S1150で、プロセッサは、前述の量子化誤差が第1のプリセットしきい値以上であるかどうかを判断できる。
量子化誤差が第1のプリセットしきい値以上である場合、動作S1151を実行して、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第1のプリセットしきい値よりも小さい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
さらに任意選択で、プロセッサは、1回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは1回の調整後に目標データビット幅n2=n1+tを確定できる。ここで、tはデータビット幅の調整値である。ここで、目標データビット幅n2を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第1のプリセットしきい値よりも小さい可能性がある。
さらに任意選択で、プロセッサは、量子化誤差が第1のプリセットしきい値未満になるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第1のプリセットしきい値未満の場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第1のプリセットしきい値以上の場合、第1の中間データビット幅は第1のプリセットビット幅のステップ長さに従って確定され、プロセッサは第1の中間データビット幅によって現在のチェックをチェックできる。量子化される反復データは、量子化データを取得するために量子化され、量子化誤差は、量子化誤差が第1のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化後のデータによって確定される。プロセッサは、量子化誤差が第1のプリセットしきい値よりも小さい場合に対応するデータビット幅を目標データビット幅として使用することができる。
たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは初期データビット幅n1を使用して、カレント検査反復の量子化データAを量子化して、量子化後のデータB1を取得し、次に、量子化予定のデータAおよび量子化後のデータに従ってB1は、量子化誤差C1を取得するために計算される。量子化誤差C1が第1のプリセットしきい値以上の場合、プロセッサは第1の中間データビット幅n2=n1+t1を確定する。ここで、t1は第1のプリセットビット幅のステップ長さである。その後、プロセッサは、第1の中間データビット幅n2に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データB2を取得し、量子化予定のデータAおよび量子化後のデータB2に従って量子化誤差C2を計算できる。量子化誤差C2が第1のプリセットしきい値以上の場合、プロセッサは第1の中間データビット幅n2=n1+t1+t1を確定し、新しい第1の中間データビット幅によってカレント検査反復の量子化を実行する。データAが量子化され、対応する量子化誤差が、量子化誤差が第1のプリセットしきい値より小さくなるまで計算される。量子化誤差C1が第1のプリセットしきい値よりも小さい場合、初期データビット幅n1を変更しないでおくことができる。
さらに、前述の第1のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第1のプリセットしきい値よりも大きいときはいつでも、プロセッサはカレント検査反復に対応するデータビット幅を同じ値だけ増やすことができる。ビット幅の値。オプションで、前述の第1のプリセットビット幅のステップ長さも可変値であり得る。例えば、量子化誤差が第1のプリセットしきい値よりも大きい場合、プロセッサは、量子化誤差と第1のプリセットしきい値との間の差を計算し得る。差が小さいほど、第1のプリセットビット幅のステップ長さの値は小さくなる。
任意選択で、図8Dは、本開示の別の実施形態におけるデータビット幅の調整方法800Dのフローチャートを示す。図8Dに示されるように、前述の操作S115はさらに以下を含み得る。
S1152で、プロセッサは、前述の量子化誤差が第2のプリセットしきい値以下であるかどうかを判断できる。
量子化誤差が第2のプリセットしきい値以下である場合、操作S1153を実行して、カレント検査反復に対応するデータビット幅を減らして、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第2のプリセットしきい値よりも大きい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
さらに任意選択で、プロセッサは、1回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは1回の調整後に目標データビット幅n2=n1−tを確定できる。ここで、tはデータビット幅の調整値である。ここで、目標データビット幅n2を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第2のプリセットしきい値よりも大きくなる可能性がある。
さらに任意選択で、プロセッサは、量子化誤差が第2のプリセットしきい値より大きくなるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第2のプリセットしきい値よりも大きい場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第1のプリセットしきい値以下の場合、第2の中間データビット幅は第2のプリセットビット幅のステップ長さによって確定され、プロセッサは第2の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第2のプリセットしきい値より大きくなるまで量子化誤差を確定する。プロセッサは、量子化誤差が第2のプリセットしきい値よりも大きい場合、対応するデータビット幅を目標データビット幅として使用できる。
たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは初期データビット幅n1を使用して、カレント検査反復の量子化データAを量子化して、量子化後のデータB1を取得し、次に、量子化予定のデータAおよび量子化後のデータに従ってB1は、量子化誤差C1を取得するために計算される。量子化誤差C1が第2のプリセットしきい値以下の場合、プロセッサは第2の中間データビット幅n2=n1−t2を確定する。ここで、t2は第2のプリセットビット幅のステップ長さである。その後、プロセッサは、第2の中間データビット幅n2に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データB2を取得し、量子化予定のデータAおよび量子化予定のデータB2に従って量子化誤差C2を計算することができる。量子化誤差C2が第2のプリセットしきい値以下の場合、プロセッサは第2の中間データビット幅n2=n1−t2−t2を確定し、新しい第2の中間データビット幅によってカレント検査反復の量子化を実行する。データAが量子化され、対応する量子化誤差が、量子化誤差が第2のプリセットしきい値より大きくなるまで計算される。量子化誤差C1が第2のプリセットしきい値よりも大きい場合、初期データビット幅n1を変更しないでおくことができる。
さらに、前述の第2のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第2のプリセットしきい値よりも小さいときはいつでも、プロセッサは、カレント検査反復に対応するデータビット幅を同じ値だけ減らすことができる。ビット幅の値。オプションで、前述の第2のプリセットビット幅のステップ長さも可変値にすることができる。たとえば、量子化誤差が第2のプリセットしきい値より大きい場合、プロセッサは量子化誤差と第2のプリセットしきい値の差を計算できる。差が小さいほど、第2のプリセットビット幅のステップ長さの値は小さくなる。
任意選択で、図8Eは、本開示のさらに別の実施形態におけるデータビット幅の調整方法800Eのフローチャートを示す。図8Eに示されるように、プロセッサが、量子化誤差が第1のプリセットしきい値よりも小さく、量子化誤差が第2のプリセットしきい値よりも大きいと確定した場合、カレント検査反復のデータビット幅は、第1のプリセットしきい値がより大きい場合、不変に保つことができる。第2のプリセットしきい値。つまり、カレント検査反復の目標データビット幅は、初期データビット幅と等しくすることができる。ここで、図8Eは、例として、本開示の実施形態のデータビット幅確定方法を示すだけであり、図8Eの各動作のシーケンスは、ここで特に限定されないが、適応的に調整することができる。
図8Fは、本開示の一実施形態によるニューラルネットワーク量子化法800Fのフローチャートを示す。図8Fに示されるように、ニューラルネットワークの量子化方法は、以下を含む。
ステップS10:量子化予定の層の各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも1つが含まれる。
ステップS20:量子化予定のデータが対応する量子化パラメータを量子化して、量子化データを取得し、それにより、ニューラルネットワークは、量子化データに従って演算を実行する。
ステップS30:目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、任意タイプの量子化予定のデータである。
目標データの量子化誤差は、目標データに対応する量子化データと目標データとの間の誤差によって確定することができる。標準偏差計算法、二乗平均平方根誤差計算法などの設定誤差計算法を使用して、目標データの量子化誤差を計算できる。
量子化パラメータに従って目標データに対応する量子化データを逆量子化して逆量子化データを取得し、逆量子化データと目標データ間の誤差に従って目標データの量子化誤差を確定することも可能である。
量子化間隔に関連する方法を計算することができ、例えば、目標データと目標データに対応する逆量子化データとの間の誤差diffbitは、式(35)によって計算することができる。
diffbit=ln(A*2−1*p/Σi|Fx|) 式(35)
ここ、pは目標データの要素数、sは目標データの小数点位置である。Aの値は、量子化パラメータに従って確定できる。量子化パラメータに小数点位置sが含まれる場合、A=2s、量子化パラメータに小数点位置sとスケーリング係数fが含まれる場合、A=2sxfである。
ステップS40:量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得する。
誤差しきい値は経験値に基づいて確定でき、誤差しきい値は量子化誤差の期待値を示すために使用できる。量子化誤差が誤差しきい値より大きいか小さい場合、ターゲット番号に対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得することができる。データビット幅をより長いビット幅またはより短いビット幅に調整して、量子化精度を増減させることができる。
誤差しきい値は、最大許容誤差に応じて確定できる。量子化誤差が誤差しきい値よりも大きい場合、量子化精度が期待に応えられないことを意味し、データビット幅をより長いビット幅に調整する必要がある。量子化精度が高いほど、誤差しきい値を小さくすることもできる。量子化誤差が誤差しきい値よりも小さい場合は、量子化精度が高くなり、ニューラルネットワークの運用効率に影響が出ます。データビット幅を適切に調整して短くすることができる。のビット幅は、量子化精度を適切に低下させ、ニューラルネットワークの運用効率を向上させるためのものである。
データビット幅は、固定ビット長に応じて調整できる。または、データビット幅は、量子化誤差と誤差しきい値の差に応じて、可変調整ステップ長さによって調整できる。この開示はこれを制限するものではない。
ステップS50では、目標データに対応するデータビット幅が調整ビット幅に更新され、対応する調整量子化パラメータが目標データおよび調整ビット幅に従って計算して得られ、ニューラルネットワークは調整量子化パラメータに従ってが量子化される。
調整ビット幅を確定した後、目標データに対応するデータビット幅を調整ビット幅に更新することができる。たとえば、更新前の目標データのデータビット幅が8ビットで、調整後のビット幅が12ビットの場合、更新後の目標データに対応するデータビット幅は12ビットである。目標データに対応する調整済み量子化パラメータは、調整ビット幅と目標データに基づいて計算できる。目標データは、目標データに対応する調整された量子化パラメータに従って再量子化され、より高いまたはより低い量子化精度で量子化後のデータを取得できるため、量子化予定の層は、量子化精度と処理効率のバランスを実現する。
ニューラルネットワークの推論、トレーニング、微調整の過程で、層間で量子化予定のデータには一定の相関関係があると見なすことができる。たとえば、各層で量子化予定のデータの平均値の差が設定された平均しきい値よりも小さく、各層で量子化予定のデータの最大値の差も設定された差のしきい値よりも小さい場合、量子化予定の層の調整された量子化パラメータは、量子化予定の層の1つ以上の後続の層で量子化予定のデータを量子化するために、1つ以上の後続の層の調整された量子化パラメータとして使用され得る。ニューラルネットワークのトレーニングおよび微調整プロセスでは、量子化予定の層のカレント反復で取得された調整済み量子化パラメータを使用して、後続の反復で量子化予定の層を量子化することもできる。
可能な実装方法では、この方法はさらに以下を含む。
量子化予定の層の量子化パラメータは、量子化予定の層の後の1つまたは複数の層で使用される。
ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。これには、量子化予定の層でのみ調整された量子化パラメータを使用して量子化予定のデータを再量子化し、量子化予定の層の操作で再取得された量子化後のデータを使用することが含まれる。また、調整された量子化パラメータを使用して、量子化予定の層で量子化予定のデータを再量子化しないこと、および調整された量子化パラメータを使用して、量子化予定の層の1つまたは複数の後続の層で量子化すること、および/または後続の反復で量子化予定の層でそれを使用することも含まれる。量子化の量子化パラメータを調整する。また、調整された量子化パラメータを使用して、量子化予定の層で再量子化すること、および取得された量子化データを量子化予定の層の操作で使用すること、および調整された量子化パラメータを使用して、量子化予定の層に続く1つまたは複数の層で量子化すること、および/または、後続の反復での量子化のために量子化予定の層で調整された量子化パラメータを使用する。この開示はこれを制限するものではない。
この実施形態では、目標データの量子化誤差は、目標データおよび目標データに対応する量子化データによって確定され、目標データは、量子化予定の任意の種類のデータであり、量子化誤差および誤差しきい値は、目標データに対応するデータビット幅に調整される。目標データに対応する調整ビット幅を取得する。目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算し、ニューラルネットワークが調整量子化パラメータに従って量子化を実行するようにする。目標データと量子化データ間の誤差に応じてデータビット幅を調整し、調整済みデータビット幅に応じて調整済み量子化パラメータを計算する。さまざまな誤差しきい値を設定することにより、さまざまな調整済み量子化パラメータを取得して、量子化精度の向上や操作効率の向上など、さまざまな量子化要件を実現できる。目標データおよび目標データの量子化データに従って計算された調整済み量子化パラメータも、目標データ自体のデータ特性とより一致し、目標データ自体のニーズにより一致する量子化結果を達成し、より優れた量子化精度と処理効率を実現できる。残高。
図8Gは、本開示の一実施形態によるニューラルネットワーク量子化法800Gのフローチャートを示す。図8Gに示されるように、ニューラルネットワークの量子化方法のステップS40は、以下を含む。
ステップS41:量子化誤差が第1の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
第1の誤差しきい値は、受け入れることができる最大量子化誤差によって確定することができる。量子化誤差は、第1の誤差しきい値と比較できる。量子化誤差が第1の誤差しきい値よりも大きい場合、量子化誤差はすでに許容できないと見なすことができる。量子化精度を向上させるために、目標データに対応するデータビット幅を増やすことにより、目標データの量子化精度を向上させることができる。
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を増やすことができる。固定調整ステップ長さサイズはNビットにすることができ、Nは正の整数である。データビット幅を調整するたびに、Nビットを増やすことができる。各増加後のデータビット幅=元のデータビット幅+Nビット。
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を大きくして、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第1しきい値より大きい場合、データビット幅は調整ステップ長さM1に従って調整でき、量子化誤差と誤差しきい値の差が第1しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さM2は、データビット幅を調整する。第1のしきい値は第2のしきい値よりも大きく、M1はM2よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
調整ビット幅に従って目標データを計算して、調整された量子化パラメータを取得できる。調整された量子化パラメータを使用して目標データを再量子化することによって得られる量子化データは、調整前に量子化パラメータを使用して得られる量子化データよりも高い量子化精度を持っている。
図8Hは、本開示の一実施形態による、ニューラルネットワーク量子化法800Hのフローチャートを示す。図8Hに示されるように、ニューラルネットワークの量子化方法はさらに以下を含む。
ステップS42:調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
ステップS43:調整ビット幅と目標データに従って計算された調整済み量子誤差が第1の誤差しきい値以下になるまで、調整済の量子化誤差と第1の誤差しきい値に従って調整ビット幅を増やし続ける。
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を1回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第1の誤差しきい値よりも大きい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差が第1の誤差しきい値よりも大きい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回増やする。の調整済み量子化誤差は、第1の誤差しきい値よりも小さくなっている。
複数回増やす調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さにすることができる。たとえば、最終データビット幅=元のデータビット幅+A*Nビット。ここで、Nは各増加の固定調整ステップ長さであり、Aはデータビット幅が増加した回数である。最終データビット幅=元データビット幅+M1+M2+...+Mm、ここでM1、M2...Mmは、毎回増やす可変調整ステップ長さである。
この実施形態では、量子化誤差が第1の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を大きくして、目標データに対応する調整ビット幅を得る。第1の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を増やすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。1つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第1の誤差しきい値と調整ステップ長さの設定により、さまざまな量子化要件を満たすために量子化要件に応じて量子化パラメータを柔軟に調整できるため、量子化精度を独自のデータ特性に応じて適応的に調整できる。
図8Iは、本開示の一実施形態によるニューラルネットワーク量子化法800Iのフローチャートを示す。図8Iに示されるように、ニューラルネットワーク量子化法のステップS40は、以下を含む。
ステップS44:量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を減らし、第2の誤差しきい値が第1の誤差しきい値よりも小さい。
第2の誤差しきい値は、許容可能な量子化誤差とニューラルネットワークの予想される動作効率に従って確定できる。量子化誤差は、第2の誤差しきい値と比較できる。量子化誤差が第2の誤差しきい値よりも小さい場合、量子化誤差は予想を超えていると見なすことができるが、動作効率が低すぎて許容できない。量子化精度を下げてニューラルネットワークの運用効率を向上させ、目標データに対応するデータビット幅を小さくすることで目標データの量子化精度を下げることができる。
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を減らすことができる。固定調整ステップ長さサイズはNビットにすることができ、Nは正の整数である。データビット幅を調整するたびに、Nビットを減らすことができる。増加したデータビット幅=元のデータビット幅−Nビット。
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を縮小して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第1しきい値より大きい場合、データビット幅は調整ステップ長さM1に従って調整でき、量子化誤差と誤差しきい値の差が第1しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さM2は、データビット幅を調整する。第1のしきい値は第2のしきい値よりも大きく、M1はM2よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
調整ビット幅に応じて目標データを計算し、調整された量子化パラメータを取得できる。調整された量子化パラメータで目標データを再量子化した後に得られた量子化データは、調整前の量子化パラメータを使用して得られた量子化データよりも量子化精度が高くなる。
図8Jは、本開示の一実施形態による、ニューラルネットワーク量子化法800Jのフローチャートを示す。図8Jに示されるように、ニューラルネットワークの量子化方法はさらに以下を含む。
ステップS45:調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
ステップS46:調整ビット幅と目標データに従って計算された調整済の量子誤差が第2の誤差しきい値以上になるまで、調整済の量子化誤差と第2の誤差しきい値に従って調整ビット幅を減らし続ける。
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を1回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第2の誤差しきい値よりも小さい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第2の誤差しきい値よりも小さい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回減らする。の調整済み量子化誤差は、第2の誤差しきい値よりも大きくなっている。
複数回短縮される調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さであり得る。たとえば、最終データビット幅=元のデータビット幅−A*Nビット。ここで、Nは各増加の固定調整ステップ長さであり、Aはデータビット幅が増加した回数である。最終データビット幅=元のデータビット幅−M1−M2−...−Mm、ここでM1、M2...Mmは、毎回減少する可変調整ステップ長さである。
この実施形態では、量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を縮小して、目標データに対応する調整ビット幅を得る。調整後のデータビット幅が量子化要件を満たすことができるように、第2の誤差しきい値を設定し、ステップ長さを調整することにより、データビット幅を減らすことができる。1つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第2の誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟かつ適応的に調整し、さまざまな量子化要件を満たすことができるため、量子化精度を調整でき、量子化精度とニューラルネットワークの運用効率のバランスが取れる。
可能な実装方法では、この方法はさらに以下を含む。
量子化誤差が第1の誤差しきい値より大きい場合、目標データに対応するデータビット幅が増加し、量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少して、目標データに対応する調整ビット幅。
2つの誤差しきい値を同時に設定することもできる。第1の誤差しきい値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数が増える可能性がある。第2の誤差しきい値は、量子化精度が高すぎることを示すために使用され、データビット幅を減らす可能性がある。桁。第1の誤差しきい値が第2の誤差しきい値よりも大きい目標データの量子化誤差を2つの誤差しきい値と同時に比較できる。量子化誤差が第1の誤差しきい値よりも大きい場合、データビット幅のビット数が増やす。量子化誤差が第2の誤差しきい値よりも小さい場合誤差しきい値を使用する場合は、データビット幅のビット数を減らしてください。量子化誤差が第1の誤差しきい値と第2の誤差しきい値の間にある場合、データビット幅は変更されないままになる。
この実施形態では、量子化誤差を第1の誤差しきい値および第2の誤差しきい値と同時に比較することにより、比較結果に応じてデータビット幅を増減することができ、第1の誤差しきい値および第2の誤差しきい値を使用してより柔軟な調整を行うことができる。データビット幅。これにより、データビット幅の調整結果が量子化要件にさらに一致するようになる。
ニューラルネットワークのトレーニングは、ニューラルネットワークの複数の反復を参照することを明確にする必要がある(ニューラルネットワークの重みはランダムな数にすることができる)。これにより、ニューラルネットワークの重みはプリセット条件を満たすことができる。処理する。ここで、反復演算には、一般に、順方向演算、逆方向演算、および重み更新演算が含まれる。順方向演算とは、ニューラルネットワークの入力データに基づいて順方向演算の結果を得るための順方向推論のプロセスを指する。逆方向演算は、順方向演算の結果とプリセットされた基準値に基づいて損失値を確定し、損失値に応じて重み勾配値および/または入力データ勾配値を確定するプロセスである。重み更新演算とは、重み勾配値に従ってニューラルネットワークの重みを調整するプロセスを指する。具体的には、ニューラルネットワークのトレーニングプロセスは次のとおりである。プロセッサは、ランダム数の重みを持つニューラルネットワークを使用して、入力データに対して順方向演算を実行し、順方向演算の結果を取得できる。次に、プロセッサは、順方向演算の結果とプリセット参照値に従って損失値を確定し、損失値に従って重み勾配値および/または入力データ勾配値を確定する。最後に、プロセッサは、重み勾配値に従ってニューラルネットワークの勾配値を更新し、新しい重みを取得して、反復演算を完了することができる。プロセッサは、ニューラルネットワークの順方向演算の結果がプリセット条件を満たすまで、ループ内で複数の反復を実行する。たとえば、ニューラルネットワークの順方向演算結果がプリセット基準値に収束すると、トレーニングは終了する。または、ニューラルネットワークの順方向演算結果とプリセット基準値によって確定される損失値がプリセット精度以下になると、トレーニングは終了する。
微調整とは、ニューラルネットワークの精度がプリセット要件を満たすことができるように、ニューラルネットワークで複数の反復演算を実行するプロセスを指する(ニューラルネットワークの重みはすでに収束状態にあり、ランダムな数値ではない)。この微調整プロセスは、基本的に上記のトレーニングプロセスと同じであり、収束状態でニューラルネットワークを再トレーニングするプロセスと見なすことができる。推論とは、重みがプリセット条件を満たすニューラルネットワークを使用して、画像認識などのニューラルネットワークの使用など、認識や分類などの機能を実現するための順方向演算を実行するプロセスを指する。
本開示の実施形態において、上記のニューラルネットワークのトレーニングまたは微調整プロセスにおいて、異なる量子化パラメータを使用して、ニューラルネットワーク動作の異なる段階におけるニューラルネットワークの動作データを量子化することができ、それにより、反復動作が、量子化予定のデータによって実行される。ニューラルネットワークの運用プロセスにおけるデータストレージスペースを減少し、データアクセスと運用の効率を向上させることができる。図8Kに示されるように、本開示の一実施形態による、量子化パラメータの調整方法800Kのフローチャートが示される。上記の方法は、以下を含み得る。
S100で、量子化予定のデータのデータ変動範囲を取得する。
任意選択で、プロセッサは、量子化予定のデータのデータ変動範囲を直接読み取ることができ、量子化予定のデータのデータ変動範囲は、ユーザによって入力され得る。
オプションで、プロセッサは、カレント反復で量子化予定のデータおよび履歴反復で量子化予定のデータによって、量子化予定のデータのデータ変動範囲を計算することもできる。ここで、カレント反復は、現在実行されている反復演算を指し、履歴反復は、カレント反復の前に実行される反復演算。たとえば、プロセッサは、量子化予定のデータの要素の最大値とカレント反復の要素の平均値、および量子化予定のデータの要素の最大値と、各履歴反復で量子化予定のデータの要素の平均値を、各反復の要素の値に従って取得できる。要素の最大値と平均値によって、量子化予定のデータの変動範囲が決まる。カレント反復で量子化予定のデータの要素の最大値が、プリセット履歴反復数で量子化予定のデータの要素の最大値に近く、カレント反復で量子化予定のデータの要素の平均値が、プリセット履歴反復数である場合量子化予定のデータの要素の平均値が比較的近い場合、量子化予定のデータのデータ変動範囲が小さいと判断できる。そうでなければ、量子化予定のデータのデータ変動範囲が比較的大きいと判断することができる。別の例として、量子化予定のデータのデータ変動範囲は、量子化予定のデータのスライディング平均値または分散によって表すことができ、これはここでは特に限定されない。
本開示の実施形態では、量子化予定のデータのデータ変動範囲を使用して、量子化予定のデータの量子化パラメータを調整する必要があるかどうかを確定することができる。たとえば、量子化予定のデータのデータ変動範囲が大きい場合、量子化の精度を確保するために、量子化パラメータを時間内に調整する必要があることを示している可能性がある。量子化予定のデータのデータ変動範囲が小さい場合は、履歴反復の量子化パラメータをカレント検査反復とその後の一定数の反復に使用できるため、量子化パラメータの頻繁な調整を回避し、量子化効率を向上させることができる。
ここで、各反復は、量子化される少なくとも1つのデータを含み、量子化予定のデータは、浮動点によって表される算術データまたは固定点によって表される算術データであり得る。任意選択で、各反復で量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得、勾配データはまた、ニューロン勾配データ、重み勾配データなどを含み得る。
S200で、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に従ってニューラルネットワーク演算の量子化パラメータを調整し、ここ、目標反復間隔に少なくとも1回の反復が含まれる。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。ここで、量子化パラメータはデータ幅を含み得る。したがって、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され得、目標反復間隔によってニューラルネットワーク操作におけるデータ幅を調整し、目標反復間隔は、少なくとも1回の反復を含む。
任意選択で、量子化パラメータは、前述の小数小数点位置および/またはスケーリング係数を含み得、ここで、スケーリング係数は、第1のスケーリング係数および第2のスケーリング係数を含み得る。特定の小数点位置の計算方法とスケーリング係数の計算方法は、上記の式を参照できるが、ここでは繰り返しない。任意選択で、量子化パラメータはオフセットも含み得、オフセットの計算方法は、上記の他の式に従って小数点位置を確定し得る;さらに、プロセッサはまた、上記の他の式に従って小数点位置を確定し得る。スケーリング係数を確定する。本開示のこの実施形態では、プロセッサは、確定された目標反復間隔によって、上記の小数小数点位置、スケーリング係数、またはオフセットのうちの少なくとも1つを更新して、ニューラルネットワーク動作における量子化パラメータを調整することができる。つまり、ニューラルネットワーク運用で量子化予定のデータのデータ変動範囲によって、ニューラルネットワーク運用での量子化パラメータを更新できるため、量子化精度を保証することができる。
量子化予定のデータのデータ変化曲線は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算データの変化傾向について統計および分析を実行することによって取得できることは理解できる。図8Lに示すように、データ変化曲線800Lによると、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化されるさまざまな反復のデータが大幅に変化することがわかる。トレーニングまたは微調整操作が進むにつれて、量子化予定のデータのさまざまな反復がデータの変化は徐々にフラットになる傾向がある。したがって、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化パラメータをより頻繁に調整できる。ニューラルネットワークのトレーニングまたは微調整の中間および後期段階では、量子化パラメータを複数の反復またはトレーニングサイクルの間隔で調整できる。本開示の方法は、適切な反復間隔を確定することにより、量子化精度と量子化効率との間のバランスを達成することである。
具体的には、プロセッサは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定して、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整することができる。オプションで、量子化予定のデータのデータ変動範囲が減少するにつれて、目標反復間隔が増やす場合がある。つまり、量子化予定のデータのデータ変動範囲が大きいほど、目標反復間隔が短くなり、量子化パラメータの調整頻度が高くなる。量子化予定のデータのデータ変動範囲が小さいほど、目標反復間隔が大きくなり、量子化パラメータの調整の頻度が低くなることを示している。もちろん、他の実施形態では、上記の目標反復間隔もハイパーパラメータであり得る。例えば、目標反復間隔は、ユーザによって設定され得る。
任意選択で、前述の重みデータ、ニューロンデータ、勾配データ、および量子化される他のデータは、異なる反復間隔を有することができる。これに対応して、プロセッサは、量子化される様々なデータに対応するデータ変動振幅を取得し、各タイプの量子化予定のデータのデータ変動振幅に従って、量子化される対応するデータに対応する目標反復間隔を確定することができる。言い換えれば、量子化される様々なデータの量子化プロセスを非同期的に実行することができる。本開示の実施形態では、量子化される異なるタイプのデータ間の差異のために、量子化される異なるデータのデータ変動範囲を使用して、対応する目標反復間隔を確定することができ、対応する目標反復間隔は、対応する目標反復間隔によって確定することができる。これにより、量子化パラメータは、量子化予定のデータの量子化精度を保証し、それによってニューラルネットワークの演算結果の正確さを保証することができる。
もちろん、他の実施形態では、同じ目標反復間隔を、量子化される異なるタイプのデータについて確定して、目標反復間隔によって量子化される対応するデータに対応する量子化パラメータを調整することができる。例えば、プロセッサは、量子化される様々なデータのデータ変動範囲を取得し、量子化予定のデータの最大データ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化される様々なデータの量子化パラメータを確定し得る。さらに、量子化されるさまざまなタイプのデータでも、同じ量子化パラメータを使用できる。
さらに任意選択で、前述のニューラルネットワークは、少なくとも1つの操作層を含み得、そして量子化されるべきデータは、各操作層に含まれるニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得る。このとき、プロセッサは、現在の算術層に関連して量子化予定のデータを取得し、上記の方法に従って、現在の算術層で量子化される様々なデータのデータ変動範囲および対応する目標反復間隔を確定することができる。
任意選択で、プロセッサは、各反復演算プロセスで1回量子化予定のデータのデータ変動範囲を確定し、量子化される対応するデータのデータ変動範囲によって目標反復間隔を確定することができる。言い換えると、プロセッサは、各反復で1回目標反復間隔を計算できる。特定の目標反復間隔の計算については、以下の説明を参照してください。さらに、プロセッサは、プリセット条件に従って各反復から検査反復を選択し、各検査反復で量子化予定のデータの変動範囲を確定し、検査反復に対応する目標反復間隔によって量子化パラメータなどを更新および調整することができる。このとき、反復が選択された検査反復でない場合、プロセッサは反復に対応する目標反復間隔を無視する場合がある。
オプションで、各目標反復間隔は検証反復に対応することができ、検証反復は、目標反復間隔の1番目の反復または目標反復間隔の終了反復であり得る。プロセッサは、各目標反復間隔の検査反復でニューラルネットワークの量子化パラメータを調整して、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整することができる。ここで、検証の反復は、現在の量子化パラメータが量子化予定のデータの要件を満たしているかどうかを検証するための時点である可能性がある。調整前の量子化パラメータは、調整後の量子化パラメータと同じでも、調整後の量子化パラメータとは異なる場合もある。オプションで、隣接する検査反復の間隔は、ターゲットの反復の間隔以上にすることができる。
たとえば、目標反復間隔は、カレント検査反復からの反復数を計算する場合があり、カレント検査反復は、目標反復間隔の開始反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復であると判断できる。2回目の反復、101回目の反復、102回目の反復。プロセッサは、100回目の反復でニューラルネットワーク演算の量子化パラメータを調整できる。ここで、カレント検査の反復は、プロセッサが現在量子化パラメータの更新と調整を実行しているときの対応する反復演算である。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもでき、カレント検査反復は、カレント検査反復の前の一つ前の反復間隔の終了反復であってもよい。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復(101回目反復、第102反復、および第103反復。)が含まれていると判断できる。プロセッサは、100回目の反復と103回目の反復で、ニューラルネットワーク演算の量子化パラメータを調整できる。この開示は、目標反復間隔の確定方法を特に制限するものではない。
一実施形態では、小数小数点位置、スケーリング係数、およびオフセットの上記の計算式から、量子化パラメータは、量子化予定のデータに関連することが多いことが分かる。したがって、上記の操作S100において、量子化予定のデータのデータ変動範囲はまた、これは、量子化パラメータの変動範囲によって間接的に確定され、量子化予定のデータのデータ変動範囲は、量子化パラメータの変動範囲によって表すことができる。具体的には、図8Mに示すように、本開示の一実施形態のパラメータ調整法における目標反復間隔の確定方法800Mのフローチャートが示されている。前述の操作S100は、以下を含み得る。
S110で、小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
オプションで、小数点位置の変動範囲は、量子化予定のデータの変動範囲を間接的に反映できる。小数点位置の変動範囲は、カレント検査反復の小数点位置および少なくとも1つの履歴反復の小数点位置によって確定され得る。ここで、カレント検査反復の小数点位置および各履歴反復の小数点位置は、上記の式によって確定することができる。
たとえば、プロセッサは、カレント検査反復の小数点位置と履歴反復の小数点位置の分散を計算し、分散に基づいて小数点位置の変動範囲を確定することもできる。別の例として、プロセッサは、カレント検査反復の小数小数点位置の平均値および履歴反復の小数小数点位置の平均値に従って、小数小数点位置の変動範囲を確定することができる。具体的には、図8Nに示すように、図8Nは、本開示の一実施形態における小数点位置の変動範囲の確定方法800Nのフローチャートを示す。前述の操作S110は、以下を含み得る。
S111で、カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって、第1の平均値を確定する。ここで、前の検査反復は、量子化パラメータが最後に調整された時間に対応する反復であり、前の検査反復とカレント検査反復との間に少なくとも1つの反復間隔がある。
オプションで、少なくとも1つの履歴反復が少なくとも1つの反復間隔に属し、各反復間隔が1つの検査反復に対応し、2つの隣接する検査反復が1つの反復間隔を持つ場合がある。前述の操作S111における前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復であり得る。
オプションで、第1の平均値は次の式に従って計算できる。
M1=a1xst−1+a2xst−2+a3xst−3+...+amxs1 式(38)
ここで、a1〜amは各反復の小数小数点位置に対応する計算された重みを指し、st−1は前の検査反復に対応する小数小数点位置を指する。st−2、st−3...s1は、最後の検査反復前の履歴反復に対応する小数点位置を指し、M1は上記の第1の平均値を指する。また、データの分布特性によれば、履歴反復が前回の検査反復から遠いほど、前回の検査反復付近の反復小数小数点位置の分布や変動範囲への影響が小さいため、上記の計算重みはa1として計算できる。a1〜amの順序は順番に減少する。
さらに、第1の平均値は、各反復間隔に対応する検査反復の小数点位置によって計算できる。たとえば、第1の平均値は次の式に従って計算できる。
M1=a1xst−1+a2xst−2+a3xst−3+...+amxs1
ここで、a1〜amは、各検査反復の小数点位置に対応する計算された重みを参照し、st−1は、前の検査反復に対応する小数点位置を参照する。st−2、st−3...s1は、最後の検査反復前のプリセット反復間隔数の検査反復に対応する小数点位置を指し、M1は上記の第1の平均値を指する。
たとえば、最後の検査反復はニューラルネットワーク演算の100回目の反復であり、履歴反復は1回目の反復から99回目の反復までであり、99回の履歴反復は11回の反復間隔に分割できる。たとえば、1回目から9回目までは第1反復間隔、10回目から18回目は第2反復間隔、...、90回目から99回目は第11反復間隔である。次に、プロセッサは100回目の反復の小数点位置(つまりst−1)を取得し、100回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、s1はニューラルネットワークを参照できる。検査反復の1番目の反復間隔に対応する小数点位置(たとえば、s1はニューラルネットワークの1番目の反復に対応する小数点位置を指してもよい)、...、st−3はニューラルネットワークの10番目の反復間隔の検査反復に対応する小数点位置を参照してもよく(たとえば、st−3はニューラルネットワークの81番目の反復に対応する小数点位置を指してもよい)、st−2はニューラルネットワークの11番目の反復を参照できるインターバルテストの反復に対応する小数点位置(たとえば、st−2は、ニューラルネットワークの90番目の反復に対応する小数点位置を指してもよい)。さらに、プロセッサは、上記の式に従って第1の平均値M1を計算することができる。
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
さらに、計算をさらに簡素化し、データが占めるストレージスペースを減少するために、上記の第1平均値M1は、次の式を使用して計算できる。
M1=αxst−1+(1−α)xM0 式(39)
ここ、αは前回の検査反復に対応する小数小数点位置の計算重み、st−1は前回の検査反復に対応する小数小数点位置、M0は前回の検査反復前の検査反復に対応するスライディングを表す。平均値については、M0の具体的な計算方法は、上記のM1の計算方法を参照できるが、ここでは繰り返しない。
S112で、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって、第2の平均値を確定する。ここで、カレント検査反復に対応する小数小数点位置は、カレント検査反復の目標データビット幅および量子化予定のデータによって確定することができる。
オプションで、第2の平均値M2は、次の式に従って計算できる。
M2=b1xst+b2xst−1+b3xst−2+...+bmxs1 式(40)
ここで、b1〜bmは各反復の小数小数点位置に対応する計算された重みを指し、stはカレント検査反復に対応する小数小数点位置を指する。st−1、st−2...s1これは、カレント検査反復前の履歴反復に対応する小数点位置を指し、M2は上記の第2の平均値を指する。さらに、データの分布特性によれば、履歴反復がカレント検査反復から離れるほど、カレント検査反復に近い反復小数小数点位置の分布および変動範囲への影響が小さくなるため、上記の計算の重みはb1〜bmに基づくことができる。順序が減少する。
たとえば、カレント検査の反復はニューラルネットワーク演算の101回目の反復であり、カレント検査の反復前の履歴の反復は1回目の反復から100回目の反復を指する。次に、プロセッサは101番目の反復の小数点位置(つまりst)を取得し、101番目の反復の前の履歴反復の小数点位置を取得できる。つまり、s1は、ニューラルネットワークの1番目の反復の対応する小数点位置を指してもよく、...、st−2は、ニューラルネットワークの99回目の反復に対応する小数点位置を指してもよく、st−1は、ニューラルネットワークの100回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第2の平均値M2を計算することができる。
S1121で、中間スライディング平均値のプリセット数を取得する。中間スライディング平均値のそれぞれは、カレント検査反復の前のプリセット数の検査反復に従って確定され、検査反復はニューラルネットワークの量子化を調整することである。プロセスのパラメータは、対応する反復である。
S1122で、カレント検査反復の小数点位置とプリセット数の中間スライディング平均値に従って、第2の平均値を確定する。
たとえば、第2の平均値は、次の式に従って計算できる。
M2=b1xst+b2xst−1+b3xst−2+...+bmxs1
ここで、b1〜bmは各反復の小数小数点位置に対応する計算された重みを指し、stはカレント検査反復に対応する小数小数点位置を指する。st−1、st−2...s1これは、カレント検査反復の前の検査反復に対応する小数点位置を指し、M2は上記の第2の平均値を指する。
たとえば、カレント検査の反復は100回目の反復であり、履歴の反復は1回目の反復から99回目の反復までであり、99回の履歴の反復は11回の反復間隔に分割できる。たとえば、1回目から9回目までは第1反復間隔、10回目から18回目は第2反復間隔、...、90回目から99回目は第11反復間隔である。次に、プロセッサは100回目の反復の小数点位置(つまりst)を取得し、100回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、s1はニューラルネットワークの最初の小数点位置を指してもよい。反復に対応する反復間隔検証小数点位置(たとえば、s1はニューラルネットワークの1番目の反復に対応する小数点位置を指してもよい)、...、st−2はニューラルネットワークの10番目の反復間隔の検査反復に対応する小数小数点位置を指してもよく(たとえば、st−2はニューラルネットワークの81回目の反復に対応する小数小数点位置を指してもよい)、st−1はニューラルネットワークの11回目の反復間隔の検査反復を参照できる。対応する小数点位置(たとえば、st−1は、ニューラルネットワークの90回目の反復に対応する小数点位置を指してもよい)。さらに、プロセッサは、上記の式に従って第2の平均値M2を計算することができる。
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
さらに、計算を簡素化し、データが占めるストレージスペースを減少するために、プロセッサは、カレント検査反復に対応する小数点位置によって第2の平均値を確定し、第1の平均値、すなわち、第2の平均値は以下のようになり得る。式は次のように計算される。
M2=βxst+(1−β)xM1 式(41)
ここで、βはカレント検査反復に対応する小数点位置の計算された重みを指し、M1は上記の第1の平均値を指する。
S113で、第1の平均値と第2の平均値に従って第1の誤差を確定する。第1の誤差は、カレント検査反復と履歴反復の小数点位置の変動範囲を表すためである。
任意選択で、第1の誤差は、第2の平均値と前述の第1の平均値との間の差の絶対値に等しくてもよい。具体的には、上記の第1の誤差は、次の式に従って計算できる。
diffupdate1=|M2−M1|=β|s(t)−M1| 式(42)
任意選択で、カレント検査反復の上記の小数小数点位置は、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって確定され得る。特定の小数小数点位置計算方法は、上記の式を参照され得る。ここで、カレント検査反復に対応する目標データビット幅はハイパーパラメータである可能性がある。さらに任意選択で、カレント検査反復に対応する目標データビット幅は、ユーザー定義の入力であり得る。オプションで、ニューラルネットワークのトレーニングまたは微調整のプロセスで量子化予定のデータに対応するデータビット幅は一定である場合がある。つまり、同じニューラルネットワークで量子化される同じタイプのデータは、たとえばニューラルネットワークの場合、同じデータビット幅で量子化される。ネットワークの各反復におけるニューロンデータは、8ビットのデータ幅で量子化される。
オプションで、ニューラルネットワークトレーニングまたは微調整プロセスで量子化予定のデータに対応するデータビット幅は、データビット幅が量子化予定のデータの量子化要件を満たすことができるように可変である。すなわち、プロセッサは、量子化予定のデータによって、量子化予定のデータに対応するデータビット幅を適応的に調整し、量子化予定のデータに対応する目標データビット幅を取得することができる。具体的には、プロセッサは、最初にカレント検査反復に対応する目標データビット幅を確定し、次にプロセッサは、カレント検査反復に対応する目標データビット幅に対応するカレント検査反復およびカレント検査反復に対応する量子化データを確定し得る。
本開示の実施形態では、カレント検査反復のデータビット幅が変化すると、それに応じて小数点位置が変化する。ただし、この時点での小数点位置の変化は、量子化予定のデータのデータ変化によるものではなく、上記式(42)で求めた第1の誤差で算出した目標反復間隔が不正確になり、量子化の精度に影響を与える可能性がある。したがって、カレント検査反復のデータビット幅が変化した場合、それに応じて上記の第2の平均値を調整して、第1の誤差が小数点位置の変動範囲を正確に反映できるようにし、それによって目標反復間隔の精度と信頼性を確保できる。具体的には、図8Pに示されるように、本開示の別の実施形態における第2の平均値の確定方法800Pのフローチャートが示される。上記の方法には、次のものも含まれる。
S116で、目標データビット幅によって、カレント検査反復のデータビット幅調整値を確定する。
具体的には、プロセッサは、カレント検査反復の目標データビット幅および初期データビット幅によって、カレント検査反復のデータビット幅調整値を確定することができる。ここで、データビット幅調整値=目標データビット幅−初期データビット幅。もちろん、プロセッサは、カレント検査反復のデータビット幅調整値を直接取得することもできる。
S117で、カレント検査反復のデータビット幅調整値に従って、上記の第2の平均値を更新する。
具体的には、データビット幅調整値がプリセットパラメータより大きい場合(たとえば、プリセットパラメータがゼロに等しい場合)、つまり、カレント検査反復のデータビット幅が増やすと、プロセッサはそれに応じて第2の平均値を減らすことができる。データビット幅調整値がプリセットパラメータよりも小さい場合(たとえば、プリセットパラメータがゼロに等しい場合)、つまり、カレント検査反復のデータビット幅を減らすと、プロセッサはそれに応じて第2の平均値を増やすことができる。データビット幅調整値がプリセットパラメータと等しい場合、つまりデータビット幅調整値が0の場合、この時点でカレント反復に対応する量子化データは変更されておらず、更新された第2の平均値は更新前の第2の平均値と等しくなる。更新前の第2の平均値は、上記の式(41)に従って計算される。オプションで、データビット幅調整値がプリセットパラメータに等しい場合、つまりデータビット幅調整値が0に等しい場合、プロセッサは第2の平均値を更新しない場合がある。つまり、プロセッサは上記の操作S117を実行しない場合がある。
たとえば、更新前の第2の平均値M2=β×st+(1−β)×M1;現在の検査反復に対応する目標データビット幅n2=初期データビット幅n1+Δnの場合、ここでΔnはデータビットを表す。幅調整値。このとき、更新された第2の平均値M2=β×(st−Δn)+(1−β)×(M1−Δn)。カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1−Δn(ここで、Δnはデータビット幅調整値を表す)の場合、この時点で、更新された第2の平均値M2=β×(st−Δn)+(1−β)×(M1+Δn)。ここで、stは、目標データのビット幅に応じてカレント検査反復によって確定される小数点位置を指する。
別の例として、更新前の第2の平均値M2=β×st+(1−β)×M1;カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1+Δnの場合、ここでΔnはデータを表すビット幅調整値。このとき、更新された第2の平均値M2=β×st+(1−β)×M1−Δn。別の例として、カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1−Δn(ここで、Δnはデータビット幅調整値を表す)の場合、この時点で、更新された第2の平均値M2=β×st+(1−β)×M1+Δn、ここでstは、カレント検査反復で目標データビット幅によって確定された小数点位置を指する。
さらに、前述の操作S200は、以下を含み得る。
目標反復間隔は、小数点位置の変動範囲によって確定され、ここで、目標反復間隔は、上記の小数点位置の変動範囲と負の相関がある。つまり、前述の小数点位置の変動範囲が大きいほど、目標反復間隔は短くなる。上記の小数点位置の変動範囲が小さいほど、目標反復間隔は大きくなる。
上記のように、上記の第1の誤差は、小数小数点位置の変動の範囲を表すことができ、上記の操作には、以下が含まれ得る。
プロセッサは、第1の誤差によって目標反復間隔を確定することができ、ここで、目標反復間隔は、第1の誤差と負の相関がある。つまり、第1の誤差が大きいほど、小数点位置の変動範囲が大きくなり、量子化予定のデータのデータ変動範囲が大きくなることを示する。このとき、目標反復間隔は小さくなる。
具体的には、プロセッサは、次の式に従って目標反復間隔Iを計算できる。
I=δ/diffupdate1−γ 式(43)
ここで、Iは目標反復間隔、diffupdate1は上記の第1の誤差を表し、δとγはハイパーパラメータにすることができる。
第1の誤差を使用して小数点位置の変動範囲を測定できることは理解できる。第1の誤差が大きいほど、小数点位置の変動範囲が大きくなる。これは、量子化予定のデータの変動範囲が大きく、目標反復間隔を設定する必要があることを示している。小さいである。つまり、第1の誤差が大きいほど、量子化パラメータの調整が頻繁に行われる。
この実施形態では、小数小数点位置の変動範囲(第1の誤差)が計算され、小数小数点位置の変動範囲によって目標反復間隔が確定される。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
オプションで、プロセッサは、カレント検査反復での目標反復間隔を確定した後、カレント検査反復での目標反復間隔に対応する量子化パラメータおよびデータビット幅をさらに確定して、目標反復間隔によって量子化パラメータを更新することができる。ここで、量子化パラメータは、小数小数点位置および/またはスケーリング係数を含み得る。さらに、量子化パラメータはまた、オフセットを含み得る。量子化パラメータの具体的な計算方法については、上記を参照してください。図8Qに示されるように、本開示の別の実施形態による量子化パラメータの調整方法800Qのフローチャートが示される。上記の方法は、以下をさらに含み得る。
S300で、プロセッサは、目標反復間隔によって、ニューラルネットワーク演算の量子化パラメータを調整する。
具体的には、プロセッサは、目標反復間隔によって検査反復を確定し、各検査反復で目標反復間隔を更新し得、また、各検査反復で量子化パラメータを更新し得る。たとえば、ニューラルネットワーク演算のデータビット幅は変更されない。このとき、プロセッサは、各検査反復で量子化予定のデータに応じて、小数点位置などの量子化パラメータを直接調整できる。別の例として、ニューラルネットワーク演算のデータビット幅は可変である。このとき、プロセッサは各検査反復でデータビット幅を更新し、更新されたデータビット幅と検査反復で量子化予定のデータによって小数点位置を調整できる。およびその他の量子化パラメータ。
本開示のこの実施形態では、プロセッサは、各検査反復で量子化パラメータを更新して、現在の量子化パラメータが、量子化予定のデータの量子化要件を確実に満たすようにする。ここで、更新前の目標反復間隔と更新後の目標反復間隔は同じでも異なっていてもかまいません。更新前のデータビット幅と更新後のデータビット幅は同じでも異なっていてもかまいません。つまり、異なる反復間隔のデータビット幅は同じでも異なっていてもかまいません。更新前の量子化パラメータと更新後の量子化パラメータは同じでも異なっていてもよい。つまり、異なる反復間隔の量子化パラメータは同じでも異なっていてもよい。
任意選択で、前述の操作S300において、プロセッサは、ニューラルネットワーク演算における量子化パラメータを調整するために、検証反復において、目標反復間隔における量子化パラメータを確定することができる。
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅は変化しない。つまり、ニューラルネットワーク演算の各反復に対応するデータビット幅は同じである。この時点で、プロセッサは次のことを確定できる。目標反復間隔内の小数点位置などの量子化パラメータは、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整するという目的を達成できる。ここで、目標反復間隔の反復に対応する量子化パラメータは一致している可能性がある。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、確定された小数点位置などの量子化パラメータのみが各検査反復で更新されるため、各反復での量子化パラメータの更新と調整を回避できるため、減少できる。量子化プロセスでの計算量により、量子化操作の効率が向上する。
オプションで、データビット幅が変更されていない上記の場合、目標反復間隔の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数小数点位置を確定し、カレント検査反復に対応する小数小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。上記の式を参照することにより、カレント検査反復に対応する小数点位置を計算することができる。
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅が変化する可能性がある。つまり、異なる目標反復間隔に対応するデータビット幅に一致性がない可能性があるが、目標反復間隔の各反復のデータビット幅は残る。絶え間ない。ここで、目標反復間隔の反復に対応するデータビット幅は、ハイパーパラメータであり得る。例えば、目標反復間隔の反復に対応するデータビット幅は、ユーザ定義の入力であり得る。ある場合には、目標反復間隔の反復に対応するデータビット幅もプロセッサによって計算され得る。例えば、プロセッサは、カレント検査反復で量子化予定のデータによって、カレント検査反復に対応する目標データビット幅を確定し得る。およびカレント検査反復に対応する目標データビット幅を、目標反復間隔に対応するデータビット幅として使用する。
このとき、量子化プロセスでの計算量を単純化するために、目標反復間隔内の対応する小数点位置などの量子化パラメータも変更しないでおくことができる。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、各反復での量子化パラメータの更新と調整を回避するために、確定された小数点位置やデータビット幅などの量子化パラメータのみが各検査反復で更新される。これにより、量子化プロセスでの計算量が減少され、量子化操作の効率が向上する。
オプションで、目標反復間隔に対応するデータビット幅が変更されない状況を考慮して、目標反復間隔内の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数小数点位置を確定し、カレント検査反復に対応する小数小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。上記の式を参照することにより、カレント検査反復に対応する小数点位置を計算することができる。
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復であると判断できる。2回目の反復、101回目の反復、102回目の反復。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数小数点位置などの量子化パラメータ対を使用できる。100回目の反復、101回目の反復、および102回目の反復が量子化される。このように、プロセッサは、101回目の反復や102回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が3であると判断する。次に、プロセッサは、目標反復間隔に3つの反復が含まれていると判断する場合がある。これらは、それぞれ101回目の反復、102回目の反復、および103回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数小数点位置などの量子化パラメータ対を使用できる。101回目の反復、102回目の反復、および103回目の反復が量子化される。このように、プロセッサは、102回目の反復や103回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
別のケースでは、ニューラルネットワーク演算の各反復に対応するデータビット幅は変更される可能性があるが、目標反復間隔の各反復のデータビット幅は変更されない。このとき、目標反復間隔での反復に対応する小数点位置などの量子化パラメータも不整合である可能性がある。プロセッサはまた、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することができ、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。任意選択で、図8Rに示されるように、本開示の実施形態による、量子化パラメータの調整方法における量子化パラメータの調整方法800Rのフローチャートが示される。上記の動作S300は、以下をさらに含み得る。
S310で、カレント検査反復の量子化データに従って、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔における反復に対応するデータビット幅は一致している。言い換えると、ニューラルネットワーク演算中のデータビット幅は、1つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作S114およびS115を参照してください。これらは、ここでは繰り返されない。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査の反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が6であると判断し、プロセッサは、目標反復間隔にそれぞれ100回目の反復〜105回目の反復である6回の反復が含まれると判断できる。。この時点で、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から105回目の反復まで使用され、101回目から105回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が6であると判断する。次に、プロセッサは、目標反復間隔に6つの反復が含まれていると判断する場合がある。これらは、それぞれ101番目の反復から106番目の反復である。このとき、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から106回目の反復まで使用され、101回目から106回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
S320で、プロセッサは、取得した小数点位置の反復間隔と目標反復間隔に対応するデータビット幅に応じて、目標反復間隔における反復に対応する小数点位置を調整し、ニューラルネットワーク演算の小数点位置などの量子化パラメータを調整する。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
具体的には、プロセッサは、カレント検査反復および小数小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができる。小数小数点位置を確定する方法は、上記の式を参照することができる。
たとえば、カレント検査の反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には100回目の反復から105番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、前述のサブ検査反復として100回目の反復を使用し、100回目の反復に対応する小数小数点位置s1を計算することができる。小数小数点位置s1は、100回目の反復、101回目の反復、および102回目の反復の間で共有される。s1が量子化される。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として103番目の反復を使用でき、プロセッサは、103番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅nに従って103番目の反復を確定することもできる。2つの小数点位置の反復間隔に対応する小数点位置s2は、前述の小数点位置s2を103回目の反復から105回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数小数点位置s1および更新後の小数小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
別の例では、カレント検査反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には、101回目の反復から106回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅n1に従って、第1の小数点位置反復間隔に対応する小数小数点位置がs1であると確定し得る。100回目の反復、10100回目の反復、102回目の反復と103回目の反復は、量子化のために前述の小数点位置s1を共有する。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として104番目の反復を使用でき、プロセッサは、104番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅n1に従って、4番目の反復を確定することもできる。上記の小数小数点位置s2を104回目の反復から106回目の反復まで共有することにより、2つの小数点位置の反復間隔に対応する小数点位置s2を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、106回の反復で再び量子化予定のデータのデータ変動範囲によって、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを確定し得る。
オプションで、小数点位置の反復間隔は1に等しくてもかまいません。つまり、小数点位置は反復ごとに1回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも1つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新され得る、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくあり得る。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
別の実施形態では、プロセッサは、小数点位置の変動範囲および量子化予定のデータのデータビット幅によって、量子化予定のデータのデータ変動範囲を包括的に確定し、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定することができる。目標反復間隔を使用して、確定されたデータビット幅を更新できる。つまり、プロセッサは、目標反復間隔の検証反復ごとに、確定されたデータビット幅を更新できる。小数点位置は固定点データの精度を反映でき、データビット幅は固定点データのデータ表現範囲を反映できるため、小数点位置の変動範囲と量子化目標データのデータビット幅変化を統合することで、量子化予定のデータの精度を考慮できるようになる。データ表現範囲を満たすこともできる。任意選択で、小数点位置の変動範囲は、前述の第1の誤差によって表すことができ、データビット幅の変化は、前述の量子化誤差によって確定することができる。具体的には、図8Sに示すように、本開示の別の実施形態によるパラメータ調整法における目標反復間隔の確定方法800Sのフローチャートが示されている。上記の方法は、以下を含み得る。
S400で、第1の誤差を取得する。第1の誤差は小数点位置の変動範囲を表すことができ、小数点位置の変動範囲は量子化予定のデータのデータ変動範囲を表すことができる。具体的には、第1の誤差の計算方法は上記の操作S110を参照できる。ここでは説明を反復ない。
S500で、第2の誤差を取得する。ここで、第2の誤差は、データビット幅の変化を表すためである。
任意選択で、前述の第2の誤差は、量子化誤差によって確定され得、第2の誤差は、前述の量子化誤差と正の相関がある。具体的には、図8Tに示すように、本開示の別の実施形態によるパラメータ調整法における目標反復間隔の確定方法800Tのフローチャートが示され、上記の動作S500は、以下を含み得る。
S510で、カレント検査反復の量子化予定のデータとカレント検査反復の量子化データに従って量子化誤差を確定する。カレント検査反復の量子化データは、初期データビット幅によってカレント検査反復の量子化データを比較する。データは量子化される。具体的な量子化誤差の確定方法については、上記の操作S114の説明を参照してください。ここでは繰り返さないことにする。
S520で、量子化誤差に従って第2の誤差を確定する。ここで、第2の誤差は量子化誤差と正の相関がある。
具体的には、第2の誤差は次の式に従って計算できる。
diffupdate2=θ*diff2 bit 式(44)
ここで、diffupdate2は上記の第2の誤差を表し、diffbitは上記の量子化誤差を表し、θはハイパーパラメータにすることができる。
図8Sに戻ると、S600において、目標反復間隔は、第2の誤差および第1の誤差によって確定される。
具体的には、プロセッサは、第1の誤差および第2の誤差によって目標誤差を計算し、目標誤差に従って目標反復間隔を確定することができる。オプションで、第1の誤差と第2の誤差に対して加重平均計算を実行することにより、目標誤差を取得できる。たとえば、target error=K*first error+(1−K)*second error、ここで、Kはハイパーパラメータである。その後、プロセッサは、目標誤差に従って目標反復間隔を確定することができ、目標反復間隔は、目標誤差と負の相関がある。つまり、目標誤差が大きいほど、目標反復間隔は短くなる。
オプションで、第1の誤差と第2の誤差の最大値に従って目標誤差を確定することもでき、第1の誤差または第2の誤差の重みは0である。具体的には、図8Tに示されるように、前述の動作S600は、以下を含み得る。
S610で、第1の誤差と第2の誤差うちの最大値を目標誤差とする。
具体的には、プロセッサは、第1の誤差diffupdate1と第2の誤差diffupdate2の大きさを比較し、第1の誤差diffupdate1が第2の誤差diffupdate2より大きい場合、目標誤差は第1の誤差diffupdate1と等しくなる。第1の誤差diffupdate1が第2の誤差よりも小さい場合、目標誤差は第2の誤差diffupdate2と等しくなる。第1の誤差diffupdate1が第2の誤差と等しい場合、目標誤差は第1の誤差diffupdate1または第2の誤差diffupdate2である可能性がある。つまり、目標誤差diffupdateは、次の式に従って確定できる。
diffupdate=max(diffupdate1, diffupdate2) 式(45)
ここで、diffupdateは目標誤差を参照し、diffupdate1は第1の誤差を参照し、diffupdate2は第2の誤差を参照する。
S620で、目標誤差に従って目標反復間隔を確定する。ここで、目標誤差は目標反復間隔と負の相関がある。具体的には、目標反復間隔は次のように確定できる。
目標反復間隔は、次の式に従って計算できる。
I=β/diffupdate1−γ 式(46)
ここで、Iは目標反復間隔を表し、diffupdateは上記の目標誤差を表し、δとγはハイパーパラメータにすることができる。
任意選択で、前述の実施形態では、データビット幅は、ニューラルネットワーク演算において可変であり、データビット幅の変化傾向は、第2の誤差によって測定することができる。この場合、図8Tに示すように、目標反復間隔を確定した後、プロセッサは、動作S630を実行して、目標反復間隔の反復に対応するデータビット幅を確定することができる。ここで、データビット幅は、目標反復間隔の反復に対応する。一致性がある。具体的には、プロセッサは、カレント検査反復で量子化予定のデータによって、目標反復間隔に対応するデータビット幅を確定することができる。言い換えると、ニューラルネットワーク演算中のデータビット幅は、1つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作S114およびS115を参照してください。これらは、ここでは繰り返されない。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査の反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が6であると判断し、プロセッサは、目標反復間隔にそれぞれ100回目の反復〜105回目の反復である6回の反復が含まれると判断できる。この時点で、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から105回目の反復まで使用され、101回目から105回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が6であると判断する。次に、プロセッサは、目標反復間隔に6つの反復が含まれていると判断する場合がある。これらは、それぞれ101番目の反復から106番目の反復である。このとき、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から106回目の反復まで使用され、101回目から106回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
さらに、プロセッサは、検査反復時に目標反復間隔の量子化パラメータを確定して、目標反復間隔によってニューラルネットワーク動作の量子化パラメータを調整することもできる。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータをデータビット幅と同期して更新することができる。
ある場合には、目標反復間隔の反復に対応する量子化パラメータが一致している可能性がある。任意選択で、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によってカレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を標的反復として使用することができる。間隔に対応する小数点位置。目標反復間隔の反復に対応する小数点位置は同じである。つまり、目標反復間隔の各反復は、カレント検査反復の小数点位置などの量子化パラメータを使用し、各反復での量子化パラメータの更新と調整を回避することで、量子化プロセスでの計算量を減らし、量子化を改善する。運用効率。
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復であると判断できる。2回目の反復、101回目の反復、102回目の反復。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。100回目の反復、101回目の反復、および102回目の反復が量子化される。このように、プロセッサは、101回目の反復や102回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が3であると判断する。次に、プロセッサは、目標反復間隔に3つの反復が含まれていると判断する場合がある。これらは、それぞれ101回目の反復、102回目の反復、および103回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。101回目の反復、102回目の反復、および103回目の反復が量子化される。このように、プロセッサは、102回目の反復や103回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
別の場合において、プロセッサはまた、ニューラルネットワーク操作における量子化パラメータを調整するために、小数点位置などの量子化パラメータに対応する小数点位置反復間隔によって、目標反復間隔における量子化パラメータを確定し得る。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータは、データビット幅と非同期に更新できる。プロセッサは、目標反復間隔の検査反復で、データビット幅や小数点位置などの量子化パラメータを更新できる。また、プロセッサは、小数点位置によって反復することもできる。間隔は、目標反復間隔の反復に対応する小数点位置を個別に更新する。
具体的には、プロセッサは、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することもでき、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。すなわち、図8Tに示すように、目標反復間隔に対応するデータビット幅を確定した後、プロセッサは、動作S640を実行して、取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって目標を調整することもできる。反復間隔で対応する小数点位置を反復して、ニューラルネットワーク演算での小数点位置を調整する。ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができる。小数点位置を確定する方法は、上記の式を参照することができる。
たとえば、カレント検査の反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には100回目の反復から105番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、前述のサブ検査反復として100回目の反復を使用し、100回目の反復に対応する小数点位置s1を計算することができる。小数点位置s1は、100回目の反復、101回目の反復、および102回目の反復の間で共有される。s1が量子化される。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として103番目の反復を使用でき、プロセッサは、103番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅nに従って103番目の反復を確定することもできる。2つの小数点位置の反復間隔に対応する小数点位置s2は、前述の小数点位置s2を103回目の反復から105回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
別の例では、カレント検査反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には、101回目の反復から106回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅n1に従って、第1の小数点位置反復間隔に対応する小数点位置がs1であると確定し得る。100回目の反復、102回目の反復と103回目の反復は、量子化のために前述の小数点位置s1を共有する。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として104番目の反復を使用でき、プロセッサは、104番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅n1に従って、4番目の反復を確定することもできる。上記の小数点位置s2を104回目の反復から106回目の反復まで共有することにより、2つの小数点位置の反復間隔に対応する小数点位置s2を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
オプションで、小数点位置の反復間隔は1に等しくてもかまいません。つまり、小数点位置は反復ごとに1回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも1つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致しいない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新することができ、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
他の任意選択の実施形態では、小数点位置、スケーリング係数、およびオフセットの3つの量子化パラメータも非同期であり得る、すなわち、小数点位置反復間隔、スケーリング係数反復間隔、およびオフセット反復間隔のうちの1つ、または3つすべてが異なる。ここで、小数点位置の反復間隔とスケーリング係数の反復間隔は、両方とも目標反復間隔以下である。オフセット反復間隔は、目標反復間隔よりも小さくすることができる。オフセットは、量子化予定のデータの分布にのみ関連するため、代替の実施形態では、オフセットは、目標反復間隔と完全に非同期にすることもでき、すなわち、オフセット反復間隔は、目標反復間隔よりも大きくすることもできる。
任意の実施形態において、上記の方法は、ニューラルネットワークのトレーニングまたは微調整プロセスにおいて使用され得、ニューラルネットワークの微調整またはトレーニングプロセスに含まれる操作データの量子化パラメータの調整を実現し、ニューラルネットワークの演算プロセスを改善する。に含まれる算術データの量子化精度と効率。動作データは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得る。図8Lに示すように、量子化予定のデータのデータ変化曲線によれば、トレーニングや微調整の初期段階では、各反復で量子化予定のデータの差が比較的大きく、量子化予定のデータのデータ変動範囲が比較的厳しいことがわかる。目標反復間隔の値を小さくすることができ、目標反復間隔の量子化パラメータを時間内に更新して、量子化の精度を確保することができる。トレーニングや微調整の中間段階では、量子化予定のデータのデータ変動範囲が徐々にフラットになる傾向があるが、このとき、目標反復間隔の値を大きくして、量子化パラメータの頻繁な更新を回避し、量子化効率と計算効率を向上させることができる。トレーニングまたは微調整の後の段階では、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある(つまり、ニューラルネットワークの正の演算結果がプリセット参照値に近づくと、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある)、このとき、目標反復間隔の値を増やし続けて、量子化効率と計算効率をさらに向上させることができる。上記のデータ変化の傾向に基づいて、さまざまな方法を使用して、ニューラルネットワークのトレーニングまたは微調整のさまざまな段階で目標反復間隔を確定し、量子化の精度を確保することに基づいて量子化効率と計算効率を向上させることができる。
具体的には、図8Uに示すように、本開示の別の実施形態による量子化パラメータの調整方法800Uのフローチャートが示されている。この方法がニューラルネットワークのトレーニングまたは微調整プロセスで使用される場合、この方法には以下も含まれる場合がある。
S710で、プロセッサは、カレント反復が第1のプリセット反復より大きいかどうかを判断する。
ここで、カレント反復は、プロセッサによって現在実行されている反復演算を指する。オプションで、第1のプリセット反復はハイパーパラメータであり得、第1のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定され得、そして第1のプリセット反復はまた、ユーザー定義設定であり得る。オプションで、第1のプリセット反復は、1つのトレーニング周期(エポック)に含まれる反復の総数より少なくてもかまいません。1つのトレーニング周期は、データ集合内で量子化されるすべてのデータが1つの順方向演算と1つの逆方向演算を完了することを意味する。
カレント反復が第1のプリセット反復以下である場合、プロセッサは操作S711を実行して、第1のプリセット反復間隔を目標反復間隔として設定し、第1のプリセット反復間隔によって量子化パラメータを調整することができる。
オプションで、プロセッサは、ユーザーによって入力された第1のプリセット反復間隔を読み取り、第1のプリセット反復間隔と第1のプリセット反復間隔との間の対応に従って、第1のプリセット反復間隔を確定することができる。オプションで、第1のプリセット反復間隔をハイパーパラメータにすることができ、第1のプリセット反復間隔をユーザーが設定することもできる。このとき、プロセッサは、ユーザーが入力した第1のプリセット反復と第1のプリセット反復間隔を直接読み取り、第1のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。本開示の実施形態では、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定する必要はない。
たとえば、ユーザーが入力した第1のプリセット反復が100回目の反復で、第1のプリセット反復間隔が5の場合、カレント反復が100回目の反復以下の場合、量子化パラメータは第1のプリセット反復間隔によって更新できる。つまり、プロセッサは、1番目の反復から100回目の反復までのニューラルネットワークのトレーニングまたは微調整中に、量子化パラメータが5回の反復ごとに更新されることを確定できる。具体的には、プロセッサは、1番目の反復に対応するデータビット幅n1および小数点位置s1などの量子化パラメータを確定し、データビット幅n1および小数点位置s1を使用して、第1の反復から第5の反復までのデータを分析し得る。量子化予定のデータは量子化される。つまり、1番目の反復から5番目の反復まで同じ量子化パラメータを使用できる。その後、プロセッサは、6回目の反復に対応するデータビット幅n2や小数点位置s2などの量子化パラメータを確定し、6回目の反復から10回目の反復までの待機時間にデータビット幅n2や小数点位置s2などの量子化パラメータを使用できる。量子化後のデータは量子化される。つまり、6番目の反復から10番目の反復まで同じ量子化パラメータを使用できる。同様に、プロセッサは、100回目の反復が完了するまで、上記の量子化方法に従うことができる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
別の例として、ユーザーが入力した第1のプリセット反復が100回目の反復であり、第1のプリセット反復間隔が1の場合、カレント反復が100回目の反復以下の場合、量子化パラメータは第1のプリセット反復間隔によって更新できる。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の1番目の反復から100回目の反復までの各反復で量子化パラメータが更新されることを確定できる。具体的には、プロセッサは、1番目の反復に対応するデータビット幅n1および小数点位置s1などの量子化パラメータを確定し、データビット幅n1および小数点位置s1を使用して、1番目の反復で量子化予定のデータを量子化することができる。その後、プロセッサは、2回目の反復に対応するデータビット幅n2や小数点位置s2などの量子化パラメータを確定し、データビット幅n2と小数点位置s2を使用して、2回目の反復で量子化予定のデータを量子化して、……。同様に、プロセッサは、データビット幅n100や100回目の反復の小数点位置s100などの量子化パラメータを確定し、データビット幅n100と小数点位置s100を使用して、100回目の反復で量子化予定のデータを量子化できる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
上記は、データビット幅と量子化パラメータの同期更新の一例にすぎない。他のオプションの実施形態では、各目標反復間隔において、プロセッサは、小数点位置の変動範囲によって、小数点位置の反復間隔を確定することもできる。および小数点位置の反復間隔によって、小数点位置などの量子化パラメータを更新する。
オプションで、カレント反復が第1のプリセット反復よりも大きい場合、ニューラルネットワークのトレーニングまたは微調整が中期段階にあることを示すことができる。この時点で、履歴反復で量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータを取得できる。変動の範囲によって目標反復間隔が決まり、目標反復間隔は上記の第1のプリセット反復間隔よりも大きくなる可能性があるため、量子化パラメータの更新回数が減り、量子化効率と計算効率が向上する。具体的には、カレント反復が第1のプリセット反復よりも大きい場合、プロセッサは操作S713を実行して、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整することができる。
上記の例を続けると、ユーザーが入力した第1のプリセット反復は100回目の反復であり、第1のプリセット反復間隔は1である。カレント反復が100回目の反復以下の場合、第1のプリセット反復間隔によって量子化を更新できる。パラメータ。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の1番目の反復から100回目の反復までの各反復で量子化パラメータが更新されることを確定でき、特定の実装は上記の説明を参照できる。カレント反復が100回目の反復より大きい場合、プロセッサは、カレント反復で量子化予定のデータと前の履歴反復で量子化予定のデータ、および量子化予定のデータのデータ変動範囲によって、量子化予定のデータのデータ変動範囲を確定できる。目標反復間隔を確定する。具体的には、カレント反復が100回目の反復より大きい場合、プロセッサは、カレント反復に対応するデータビット幅を適応的に調整し、カレント反復に対応する目標データビット幅を取得し、カレント反復に対応する目標データビット幅を変更できる。目標反復間隔のデータビット幅として、目標反復間隔の反復に対応するデータビット幅は一致している。同時に、プロセッサは、カレント反復に対応する目標データビット幅および量子化予定のデータによってカレント反復に対応する小数点位置を確定し、カレント反復に対応する小数点位置に従って第1の誤差を確定し得る。プロセッサはまた、カレント反復に対応して量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第2の誤差を確定することができる。その後、プロセッサは、第1の誤差および第2の誤差によって目標反復間隔を確定することができ、目標反復間隔は、前述の第1のプリセット反復間隔よりも大きくてもよい。さらに、プロセッサは、目標反復間隔における小数点位置またはスケーリング係数などの量子化パラメータを確定することができ、特定の確定方法は、上記の説明を参照することができる。
たとえば、カレント反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復、101回目の反復、および反復102回目の反復であると判断できる。反プロセッサはまた、100回目の反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って100回目の反復に対応する第2の誤差および目標データビット幅を確定し、目標反復間隔に対応するデータとして目標データビット幅を使用し得る。ビット幅。100回目の反復、101回目の反復、および102回目の反復に対応するデータビット幅はすべて、100回目の反復に対応する目標データビット幅である。プロセッサはまた、100回目の反復で量子化予定のデータおよび100回目の反復に対応する目標データビット幅によって、100回目の反復に対応する小数点位置およびスケーリング係数などの量子化パラメータを確定し得る。その後、100回目の反復に対応する量子化パラメータを使用して、100回目の反復、101回目の反復、および102回目の反復を量子化する。
さらに、図8Vに示されるように、本開示のさらに別の実施形態による、量子化パラメータの調整方法800Vのフローチャートが示され、上記の方法は、以下をさらに含み得る。
カレント反復が第1のプリセット反復よりも大きい場合、プロセッサはさらに操作S712を実行することができる。すなわち、プロセッサは、カレント反復が第2のプリセット反復よりも大きいかどうかをさらに確定することができる。ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。オプションで、前述の第2のプリセット反復はハイパーパラメータであり、第2のプリセット反復は少なくとも1つのトレーニング周期の反復の総数より大きくてもよい。オプションで、第2のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定できる。オプションで、第2のプリセット反復もユーザーがカスタマイズできる。
カレント反復が第2のプリセット反復以上である場合、プロセッサは操作S714を実行し、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって第2のプリセット反復間隔を調整することができる。ニューラルネットワークの量子化プロセスのパラメータ。カレント反復が第1のプリセット反復よりも大きく、カレント反復が第2のプリセット反復よりも小さい場合、プロセッサは上記の操作S713を実行し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、そして目標反復間隔は、量子化パラメータを調整する。
オプションで、プロセッサは、ユーザーが設定した第2のプリセット反復を読み取り、第2のプリセット反復と第2のプリセット反復間隔(第2のプリセット反復)の間の対応関係に従って、第2のプリセット反復間隔を確定できる。間隔は、最初にプリセット反復間隔よりも大きくなっている。オプションで、ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント反復が第2のプリセット反復以上であると判断される。例えば、カレント反復の順方向演算結果がプリセット基準値に近づくと、ニューラルネットワークの収束度がプリセット条件を満たしていると判断できる。このとき、カレント反復が2回目のプリセット反復以上であると判断できる。または、カレント反復に対応する損失値がプリセットしきい値以下の場合、ニューラルネットワークの収束度がプリセット条件を満たすと判断できる。
任意選択で、前述の第2のプリセット反復間隔はハイパーパラメータであり得、第2のプリセット反復間隔は、少なくとも1つのトレーニング周期の反復の総数以上であり得る。オプションで、第2のプリセット反復間隔はユーザーがカスタマイズできる。プロセッサは、ユーザーが入力した第2のプリセット反復と第2のプリセット反復間隔を直接読み取り、第2のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。たとえば、第2のプリセット反復間隔は、1つのトレーニング周期の反復の総数に等しくなる場合がある。つまり、量子化パラメータは、トレーニング周期(エポック)ごとに1回更新される。
さらに、上記の方法には以下も含まれる。
カレント反復が第2のプリセット反復以上である場合、プロセッサは、各検査反復で現在のデータビット幅を調整する必要があるかどうかを判断することもできる。現在のデータビット幅を調整する必要がある場合、プロセッサは上記の操作S714から操作S713に切り替えてデータビット幅を再確定し、データビット幅が量子化予定のデータの要件を満たすことができるようにすることができる。
具体的には、プロセッサは、前述の第2の誤差によってデータビット幅を調整する必要があるかどうかを確定することができる。プロセッサはまた、前述の操作S715を実行して、第2の誤差がプリセット誤差値より大きいかどうかを確定し得、カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、スイッチして操作を実行する。S713:量子化予定のデータのデータ変動範囲によって反復間隔を確定し、反復間隔によってデータビット幅を再確定する。カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値以下の場合、操作S714の実行を続行し、第2のプリセット反復間隔を目標反復間隔として使用する。プリセット反復間隔は、ニューラルネットワークの量子化プロセスのパラメータを調整する。ここで、プリセット誤差値は、量子化誤差に対応するプリセットしきい値に従って確定される場合がある.第2の誤差がプリセット誤差値よりも大きい場合は、データビット幅をさらに調整する必要がある可能性がある。プロセッサは、量子化予定のデータに基づいている場合がある。のデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
たとえば、2番目にプリセット反復間隔は、1つのトレーニング周期の反復の総数である。カレント反復が第2のプリセット反復以上の場合、プロセッサは第2のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期(エポック)ごとに1回量子化パラメータを更新する。このとき、各トレーニング周期の1番目の反復は検査反復と見なされる。各トレーニング周期の1番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第2の誤差を確定できる。そして、次の式に従って、第2の誤差がプリセット誤差値より大きいかどうかを判別する。
diffupdate2=θ*diff2 bit>T
ここで、diffupdate2は第2の誤差を表し、diffbitは量子化誤差を表し、θはハイパーパラメータを表し、Tはプリセット誤差値を表す。オプションで、プリセット誤差値は、第1のプリセットしきい値をハイパーパラメータで割った値に等しくなる。もちろん、プリセット誤差値もハイパーパラメータである可能性がある。たとえば、プリセット誤差値は次の式に従って計算できる。T=th/10、ここでthは第1のプリセットしきい値を表し、ハイパーパラメータの値は10である。
第2の誤差diffupdate2がプリセット誤差値Tより大きい場合は、データビット幅がプリセット要件を満たしていない可能性があることを意味する。この時点で、第2のプリセット反復間隔は量子化パラメータの更新に使用できなくなり、プロセッサは量子化予定のデータを追跡する可能性がある。変動範囲によって、データビット幅がプリセット要件を確実に満たすように、目標反復間隔が決まる。つまり、第2の誤差diffupdate2がプリセット誤差値Tより大きい場合、プロセッサは前述の操作S714から前述の操作S713に切り替わる。
もちろん、他の実施形態では、プロセッサは、前述の量子化誤差に従ってデータビット幅を調整する必要があるかどうかを確定することができる。たとえば、2番目にプリセット反復間隔は、1つのトレーニング周期の反復の総数である。カレント反復が第2のプリセット反復以上の場合、プロセッサは第2のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期(エポック)ごとに1回量子化パラメータを更新する。ここで、各トレーニングサイクルの1番目の反復が検査反復として使用される。各トレーニングサイクルの1番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定できる。量子化誤差が第1のプリセットしきい値以上の場合、データビット幅がプリセットしきい値を満たさない可能性がある。プロセッサが上記の動作S714から上記の動作S713に切り替わると想定される。
オプションの実施形態では、小数点位置、スケーリング係数、およびオフセットなどの前述の量子化パラメータを表示装置に表示することができる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの量子化パラメータを学習でき、プロセッサーによって確定された量子化パラメータを適応的に変更することもできる。同様に、前述のデータビット幅と目標反復間隔も表示装置で表示できる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの目標反復間隔やデータビット幅などのパラメータを学習でき、プロセッサーによって確定された目標反復間隔やデータビット幅を適応的に変更することもできる。
データビット幅を確定するための上記の目標反復間隔および量子化パラメータの目標反復間隔は単なる例であり、網羅的ではないことに留意されたい。当業者は、本開示の技術案の本質を理解している。次に、本開示の技術案に基づいて、他の変形または変換を生成することができる。例えば、データビット幅を確定するための目標反復間隔内の量子化パラメータを確定するための目標反復間隔は、図6、7および8Aにも適用可能である。示されている技術案。ただし、達成される機能および技術的効果が本開示のものと類似している限り、それらは本開示の保護範囲に含まれるべきである。
技術案は、量子化パラメータを確定し、量子化誤差に応じてデータビット幅または量子化パラメータを調整し、データビット幅または量子化パラメータを調整するための目標反復間隔を確定して、ニューラルネットワーク演算プロセスの適切な時点を達成するためである。データビット幅または量子化パラメータは、適切な量子化パラメータが適切な反復時点で使用されるように調整され、人工知能プロセッサのチップを実現してニューラルネットワーク動作を実行し、固定点動作速度を達成し、人工知能プロセッサのチップのピーク計算能力を向上させる同時に、操作に必要な浮動小数点操作の精度が満たされる。
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
さらに、図2、6、7、および8A〜8Vのフローチャートのステップは、矢印で示すように順番に表示されているが、これらのステップは、必ずしも矢印で示す順序で実行されるとは限らないことに留意されたい。この記事で特に明記されていない限り、これらのステップの実行は順序に厳密に制限されておらず、これらのステップは他の順序で実行できる。さらに、図2、6、7、および8Aから8Vのステップの少なくとも一部は、複数のサブステップまたは複数のステージを含み得る。これらのサブステップまたはステージは、必ずしも同時に実行されるとは限らないが、同時に完了することができる。異なる時間に実行される場合、これらのサブステップまたはステージの実行順序は、必ずしも連続して実行されるとは限らないが、他のステップまたは他のステップのサブステップまたはステージの少なくとも一部と交互にまたは交互に実行され得る。
図9に示されるように、本開示のために提案されたニューラルネットワークの量子化パラメータの確定装置のハードウェア構成のブロック図。図9において、ニューラルネットワークの量子化パラメータの確定装置10は、プロセッサ110およびメモリ120を含み得る。図9のニューラルネットワークの量子化パラメータ確定装置10には、本実施形態に関連する構成要素のみが示されている。したがって、当業者にとって、ニューラルネットワークの量子化パラメータ確定装置10はまた、図10に示されるものとは異なる共通の構成要素を含み得ることは明らかである。例:固定小数点演算。
ニューラルネットワークの量子化パラメータ確定装置10は、例えば、ニューラルネットワークの生成、ニューラルネットワークのトレーニングまたは学習、浮動点ニューラルネットワークの固定点ニューラルネットワークへの量子化、または再トレーニングのための様々な処理機能を有する計算装置に対応し得る。ニューラルネットワークの機能。例えば、ニューラルネットワークの量子化パラメータ確定装置10は、パーソナルコンピュータ(PC)、サーバ機器、モバイル機器などの様々なタイプの機器として実装することができる。
プロセッサ110は、ニューラルネットワークの量子化パラメータ確定装置10のすべての機能を制御する。例えば、プロセッサ110は、ニューラルネットワークの量子化パラメータ確定装置10上のメモリ120に格納されたプログラムを実行することによって、ニューラルネットワークの量子化パラメータ確定装置10のすべての機能を制御する。プロセッサ110は、ニューラルネットワークの量子化パラメータを確定するために装置10に設けられた中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、アプリケーションプロセッサ(AP)、人工知能プロセッサのチップ(IPU)などによって実装され得る。しかしながら、この開示はこれに限定されない。
メモリ120は、ニューラルネットワークの量子化パラメータ確定装置10で処理された様々なデータを格納するためのハードウェアである。例えば、メモリ120は、ニューラルネットワークの量子化パラメータを確定するために、処理されたデータおよび処理されるべきデータを装置10に格納することができる。メモリ120は、プロセッサ110が処理した、または処理されるニューラルネットワーク演算プロセスに関与するデータ集合、例えば、トレーニングされていない初期ニューラルネットワークのデータ、トレーニングプロセス中に生成されたニューラルネットワークの中間データ、およびすべてのトレーニングが完了することを格納することができる。ニューラルネットワークにおけるデータ、量子化されたニューラルネットワークにおけるデータなど。さらに、メモリ120は、ニューラルネットワークの量子化パラメータ確定装置10によって駆動されるアプリケーション、ドライバプログラムなどを格納することができる。例えば、メモリ120は、プロセッサ110によって実行されるニューラルネットワークのトレーニングアルゴリズム、量子化アルゴリズムなどに関連する様々なプログラムを格納することができる。メモリー120は、DRAMであり得るが、本開示は、それに限定されない。メモリ120は、揮発性メモリまたは非揮発性メモリのうちの少なくとも1つを含み得る。不揮発性メモリには、読み取り専用メモリ(ROM)、プログラム可能なROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)、フラッシュメモリ、位相変化RAM(PRAM)、磁気が含まれる。RAM(MRAM)、抵抗RAM(RRAM)、強誘電体RAM(FRAM)など。揮発性メモリには、動的RAM(DRAM)、静的RAM(SRAM)、同期DRAM(SDRAM)、PRAM、MRAM、RRAM、強誘電体RAM(FeRAM)などが含まれる。一実施形態では、メモリ120は、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、高密度フラッシュメモリ(CF)、セキュアデジタル(SD)カード、マイクロセキュアデジタル(Micro−SD)カード、ミニセキュアデジタル(ミニ−SD)カード、xDカード、キャッシュ、またはメモリスティックの少なくとも1つ。
プロセッサ110は、所与の初期ニューラルネットワークを反復トレーニング(学習)することによって、トレーニングされたニューラルネットワークを生成することができる。この状態では、ニューラルネットワークの処理精度を確保するという意味で、初期ニューラルネットワークのパラメータは、32ビット浮動小数点精度のデータ表現形式などの高精度のデータ表現形式である。パラメータには、ニューラルネットワークとの間のさまざまなタイプのデータ入力/出力を含めることができる。たとえば、ニューラルネットワークの入力/出力ニューロン、重み、オフセットなどである。固定小数点演算と比較して、浮動小数点操作は比較的大量の操作と比較的頻繁なメモリアクセスを必要とする。具体的には、ニューラルネットワーク処理に必要な操作のほとんどは、さまざまな畳み込み操作として知られている。したがって、処理性能が比較的低いモバイル装置(スマートフォン、タブレット、ウェアラブル装置など、組み込み装置など)では、ニューラルネットワークの高精度のデータ操作により、モバイル装置のリソースが十分に活用されない。その結果、ニューラルネットワークの動作を許容精度損失範囲内で駆動し、上記機器の動作量を十分に低減するために、ニューラルネットワークの動作に伴う高精度のデータを量子化して低精度定点数に変換することができる。
ニューラルネットワークが展開されているモバイル装置、組み込み装置などの装置の処理性能を考慮して、ニューラルネットワークの量子化パラメータ確定装置10は、トレーニングされたニューラルネットワークのパラメータを特定のビット数の固定点量子化に変換し、ニューラルネットワークを実行する。ネットワーク量子化パラメータ確定装置10は、対応する量子化パラメータをニューラルネットワークを展開する装置に送信するので、人工知能プロセッサのチップがトレーニング、微調整および他の操作操作を実行するとき、それは固定小数点数操作である。ニューラルネットワークを展開する装置は、ニューラルネットワークを使用して音声認識、画像認識などを実行する自律車両、ロボット、スマートフォン、タブレット装置、拡張現実(AR)装置、モノインターネット(IoT)装置などであり得るが、本開示はそうではない。これに限定される。
プロセッサ110は、メモリ120からニューラルネットワーク動作プロセスのデータを取得する。データには、ニューロン、重み、オフセット、および勾配の少なくとも1つが含まれる。図2に示す技術案を使用して、対応する量子化パラメータを確定し、量子化パラメータを使用して、ニューラルネットワーク演算プロセスで目標データを量子化する。量子化後のデータに対してニューラルネットワーク演算を実行する。この操作には、トレーニング、微調整、および推論が含まれるが、これらに限定されない。
プロセッサ110は、量子化誤差に従ってデータビット幅nを調整し、プロセッサ110は、図6、7および8に示される目標反復間隔法のプログラムを実行して、データビット幅の目標反復間隔または量子化パラメータを確定することができる。目標反復間隔。
要約すると、本明細書の方法は、ニューラルネットワーク量子化パラメータ確定装置を提供する。メモリ120およびプロセッサ110によって実施される特定の機能は、本明細書の前述の実施形態と比較して説明することができ、前述の実施形態を達成することができる。これの技術的効果はここでは繰り返されない。
この実施形態では、プロセッサ110は、任意の適切な方法で実施することができる。例えば、プロセッサ110は、(マイクロ)プロセッサ、論理ゲート、スイッチ、特別な目的によって実行可能なコンピュータ可読プログラムコード(例えば、ソフトウェアまたはファームウェア)を格納するマイクロプロセッサまたはプロセッサおよびコンピュータ可読媒体の形態をとることができる。集積回路(アプリケーション固有の集積回路、ASIC)、プログラム可能なロジックコントローラ、組み込みマイクロコントローラなどの形式。
図10に示されるように、それは、本開示で提案されるニューラルネットワーク量子化パラメータ確定装置の人工知能プロセッサのチップへの適用の概略図である。図10に示すように、PC、サーバ等のニューラルネットワークの量子化パラメータ確定装置10において、プロセッサ110は、量子化動作を実行して、ニューラルネットワーク動作に関与する浮動小数点データを固定小数点数に量子化し、人工知能処理を行う。チップ上の固定小数点演算ユニットは、量子化によって得られた固定小数点数を使用して、トレーニング、微調整、または推論を実行する。人工知能プロセッサのチップは、ニューラルネットワークを駆動するためである専用ハードウェアである。人工知能プロセッサのチップは比較的低電力または低性能で実装されているため、技術案では低精度の固定小数点数を使用してニューラルネットワーク演算を実装する。高精度のデータと比較して、低精度の固定小数点数を読み取る必要がある。メモリ帯域幅は小さく、人工知能プロセッサのチップのキャッシュをより適切に使用してメモリのボトルネックを回避できる。同時に、人工知能プロセッサのチップ上でSIMD命令を実行すると、1クロックサイクルでより多くの計算を実現して、ニューラルネットワーク演算の実行を高速化できる。
さらに、同じ長さの固定小数点演算と高精度のデータ演算、特に固定小数点演算と浮動小数点演算の比較に直面すると、浮動小数点演算の計算モデルはより複雑になり、浮動小数点演算を形成するためにより多くの論理装置が必要になる。端末。このように、体積に関しては、浮動小数点演算の体積は固定小数点演算の体積よりも大きくなる。さらに、浮動小数点演算ユニットは処理するためにより多くのリソースを消費する必要があり、固定小数点演算と浮動小数点演算の間の電力消費ギャップは通常数桁である。
要約すると、この技術案は、人工知能プロセッサのチップ上の浮動小数点演算ユニットを固定小数点演算ユニットに置き換えることができるため、人工知能プロセッサのチップの消費電力が低くなる。これは、モバイル装置にとって特に重要である。言い換えれば、この技術案は、浮動小数点計算コードを効率的に実行できない多数の組み込みシステムへの扉を開き、モノのインターネットの世界が広く使用されることを可能にする。
この技術案において、人工知能プロセッサのチップは、例えば、ニューラルネットワークを駆動するための専用チップである神経処理ユニット(NPU)、テンソル処理ユニット(TPU)、神経エンジンなどに対応し得るが、本開示は、に限定されない。この。
この技術案では、人工知能プロセッサのチップは、ニューラルネットワークの量子化パラメータ確定装置10から独立した別個の装置に実装することができ、ニューラルネットワークの量子化パラメータ確定装置10は、人工知能プロセッサのチップの機能モジュールの一部として使用することもできる。成し遂げる。しかし、この開示はこれに限定されない。
この技術案では、汎用プロセッサ(CPUなど)のオペレーティングシステムがこの技術案に基づいて命令を生成し、生成された命令を人工知能プロセッサのチップ(GPUなど)に送信し、人工知能プロセッサのチップが命令操作を実行する。ニューラルネットワークの量子化パラメータの確定と量子化プロセスを実現する。別の応用では、汎用プロセッサが技術案に基づいて対応する量子化パラメータを直接確定し、汎用プロセッサが量子化パラメータに従って対応する目標データを直接量子化し、人工知能プロセッサのチップが量子化後のデータを使用して固定小数点演算を実行する。さらに、汎用プロセッサ(CPUなど)と人工知能プロセッサのチップ(GPUなど)がパイプライン化されている。汎用プロセッサ(CPUなど)のオペレーティングシステムは、この技術案に基づいて命令を生成し、同時に目標データをコピーする。人工インテリジェンスプロセッサのチップ(GPUなど)はニューラルネットワーク演算を実行するため、時間の消費を隠すことができる。しかし、この開示はこれに限定されない。
この実施形態において、本開示の実施形態はまた、コンピュータプログラムが格納される読み取り可能な記憶媒体を提供し、コンピュータプログラムが実行されるとき、上記のニューラルネットワークの量子化パラメータの確定方法が実現される。
以上のことから、ニューラルネットワーク運用の過程において、本開示の技術案は、量子化中の量子化パラメータを確定するために使用され、量子化パラメータは、ニューラルネットワーク運用プロセスにおけるデータを量子化し、高精度のデータを低精度データに変換するために人工知能プロセッサによって使用されることが分かる。正確な固定小数点数により、ニューラルネットワーク演算のプロセスに関係するデータストレージのすべてのスペースサイズを減少できる。例:float32をfix8に変換すると、モデルパラメータを4分の1に減らすことができる。データストレージスペースが小さくなると、ニューラルネットワークの展開に使用されるスペースが小さくなり、人工知能プロセッサのチップ上のオンチップメモリがより多くのデータを格納できるようになり、人工知能プロセッサのチップのデータへのアクセスが減少され、コンピューティングパフォーマンスが向上される。
当業者はまた、純粋にコンピュータ可読なプログラムコード方式でクライアントおよびサーバーを実現することに加えて、クライアントおよびサーバーがロジックゲート、スイッチ、アプリケーション固有の集積回路、およびプログラム可能なロジックを使用するようにメソッドステップをプログラムすることが完全に可能であることを知っている。コントローラと組み込みマイクロメータは同じ機能を実現できる。したがって、このようなクライアントやサーバーは一種のハードウェアコンポーネントと見なすことができ、さまざまな機能を実装するためにそれらに含まれる装置もハードウェアコンポーネント内の構造と見なすことができる。あるいは、さまざまな機能を実現するための装置は、方法を実現するためのソフトウェアモジュールとハードウェアコンポーネント内の構造の両方と見なすことができる。
図11に示されるように、本開示のために提案されたニューラルネットワークの量子化パラメータの確定装置の機能的ブロック図。この方法には次のものが含まれる。
統計単位aは、量子化予定のデータをカウントし、各タイプの量子化予定のデータの統計結果を確定するためである。ここで、量子化予定のデータには、ニューラルネットワークのニューロン、重み、勾配、およびオフセットの少なくとも1つが含まれる。
量子化パラメータ確定ユニットbは、各タイプの量子化予定のデータの統計結果およびデータビット幅を使用することによって対応する量子化パラメータを確定するためである;ここで、量子化パラメータは、ニューラルネットワーク演算プロセスにおいてデータを量子化するために人工知能プロセッサによって使用される。
この実施形態では、任意選択で、ニューラルネットワークの量子化パラメータ確定装置は、さらに以下を含む。
最初の量子化ユニットは、対応する量子化パラメータを使用して、量子化予定のデータを量子化するように構成される。
この実施形態では、任意選択で、ニューラルネットワークの量子化パラメータ確定装置は、さらに以下を含む。
第2の量子化ユニットは、対応する量子化パラメータを使用することによって目標データを量子化するように構成される;ここで、目標データの特性および量子化予定のデータの特性は類似性を有する。
この実施形態では、ニューラルネットワーク演算プロセスは、ニューラルネットワークトレーニング、ニューラルネットワーク推論、およびニューラルネットワーク微調整の少なくとも1つの操作を含む。
この実施形態では、統計単位によって得られる統計結果は、各タイプの量子化予定のデータの最大値および最小値である。
この実施形態では、統計単位によって得られる統計結果は、各タイプの量子化予定のデータの最大絶対値である。
この実施形態では、統計単位は、各タイプの量子化予定のデータの最大値および最小値に従って最大絶対値を確定する。
この実施形態では、量子化パラメータ確定ユニットは、最大値、各タイプの量子化予定のデータの最小値、およびデータビット幅によって、量子化パラメータを確定する。
この実施形態では、量子化パラメータ確定ユニットは、各タイプの量子化予定のデータの最大絶対値およびデータビット幅によって、量子化パラメータを確定する。
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、小数点位置パラメータまたは第1のスケーリング係数である。
この実施形態では、量子化パラメータ確定ユニットは、小数点位置パラメータおよび第2のスケーリング係数に従って第1のスケーリング係数を確定する。ここで、第1のスケーリング係数を確定するときに使用される小数点位置パラメータは、既知の固定値、または小数点位置パラメータと対応する第2のスケーリング係数を全体として乗算した結果は、ニューラルネットワーク演算プロセスでのデータ量子化の第1のスケーリング係数として使用される。
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、小数点位置パラメータおよび第2のスケーリング係数を含む。
この実施形態では、量子化パラメータ確定ユニットは、小数点位置パラメータ、統計結果、およびデータビット幅によって、第2のスケーリング係数を確定する。
この実施形態では、量子化パラメータ確定ユニットによって確定される量子化パラメータは、オフセットをさらに含む。
この実施形態では、量子化パラメータ確定ユニットは、各タイプの量子化予定のデータの統計結果によってオフセットを確定する。
この実施形態では、量子化パラメータ確定ユニットによって使用されるデータビット幅は、プリセット値である。
この実施形態では、量子化パラメータ確定ユニットは、調整モジュールおよび量子化誤差確定モジュールを含む。
調整モジュールは、対応する量子化誤差に従ってデータビット幅を調整するように構成される。
量子化誤差確定モジュールは、量子化後のデータおよび量子化前の対応するデータに従って量子化誤差を確定するように構成される。
この実施形態では、調整モジュールは、特に以下のように構成される。
量子化誤差はしきい値と比較され、データビット幅は比較結果によって調整され、しきい値は第1のしきい値および第2のしきい値のうちの少なくとも1つを含む。
この実施形態では、調整モジュールは、第1の調整サブモジュールを含み、第1の調整サブモジュールは、以下のためである。
量子化誤差が第1のしきい値以上の場合、データビット幅が増やす。
この実施形態では、調整モジュールは、第2の調整サブモジュールを含み、第2の調整サブモジュールは、以下のためである。
量子化誤差が第2のしきい値以下の場合、データビット幅は減少する。
この実施形態では、調整モジュールは、第3の調整サブモジュールを含み、第3の調整サブモジュールは、以下のためである。
量子化誤差が第1のしきい値と第2のしきい値の間にある場合、データビット幅は変更されない。
この実施形態では、量子化誤差確定モジュールは、以下を含む。
データビット幅によって量子化間隔を確定するように構成される量子化間隔確定サブモジュール。
第1の量子化誤差確定サブモジュールは、量子化間隔、量子化後のデータの数、および量子化前の対応するデータに従って量子化誤差を確定するように構成される。
この実施形態では、量子化誤差確定モジュールは、以下を含む。
逆量子化データ確定サブモジュールは、量子化予定のデータを逆量子化して逆量子化データを取得するためである。逆量子化データのデータフォーマットは、量子化前の対応するデータのデータフォーマットと同じである。
第2の量子化誤差確定サブモジュールは、量子化予定のデータおよび対応する逆量子化データによって量子化誤差を確定するためである。
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、量子化予定のデータである。
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、目標反復間隔内の重み更新反復プロセスに関与する量子化予定のデータであり、ここで、目標反復間隔は、少なくとも1つの重みを含む。値は更新された反復であり、同じデータビット幅が同じ目標反復間隔内の量子化プロセスで使用される。
この実施形態では、ニューラルネットワークの量子化パラメータ確定装置は、第1の目標反復間隔確定ユニットをさらに含み、第1の目標反復間隔確定ユニットは、以下を含む。
第1の変化傾向値確定モジュールは、予測時点での重み更新反復プロセスに関与する量子化予定のデータの小数点位置パラメータの変化傾向値を確定するためである。予測時点は、次のことを確定するためである。データビット幅を調整する必要がある時点。予測時点は、重み更新の反復が完了する時点に対応する。
第1の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
この実施形態では、第1の目標反復間隔確定ユニットは、以下を含む。
第2の変化傾向値確定モジュールは、量子化予定のデータの小数点位置パラメータの変化傾向値と、予測時点での重み更新反復プロセスに含まれるデータビット幅の変化傾向値を確定するためである。判定時点は、データのビット幅を調整する必要があるかどうかを判断する時点であり、予測時点は、重み更新の反復が完了する時点に対応する。
第2の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値とデータビット幅の変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
この実施形態では、第1の目標反復間隔確定ユニットは、第1の所定の時点確定ユニットをさらに含む。
第1の予測時点確定ユニットは、目標反復間隔によって第1の予測時点を確定するように構成される。
この実施形態では、第1の目標反復間隔確定ユニットは、第2の所定の時点確定ユニットをさらに含み、第2の所定の時点確定ユニットは、データ変動範囲曲線に従って第2の所定の時点を確定するように構成される。時点を判断する。ここで、データ変動範囲曲線は、重み更新反復プロセス中にデータ変動範囲を統計的に計算することによって取得される。
この実施形態では、第1の変化傾向値確定モジュールおよび第2の変化傾向値確定モジュールは、現在の予測時点に対応する小数点位置パラメータのスライド平均値、および前の予測時点に対応する値に基づく。小数点位置パラメータのスライド平均値は、小数点位置パラメータの変化傾向値を確定する。
この実施形態では、第1の変化傾向値確定モジュールおよび第2の変化傾向値確定モジュールは、現在の予測時点に対応する小数点位置パラメータおよび前の予測時点に対応する小数点位置パラメータの値に基づく。スライド平均は、小数点位置パラメータの変化傾向値を確定する。
この実施形態では、第1の変化傾向値確定モジュールおよび第2の変化傾向値確定モジュールは、両方とも以下を含む。
現在の予測時点に対応する小数点位置パラメータ確定サブモジュールを使用して、最後の予測時点に対応する小数点位置パラメータおよびデータビット幅の調整値に従って、現在の予測時点に対応する小数点位置パラメータを確定する。
調整結果確定サブモジュールは、データビット幅の調整値に従って、最後の予測された時点に対応する小数点位置パラメータのスライド平均値を調整して、調整結果を取得するように構成される。
第1のスライディング平均値確定サブモジュールは、現在の予測時点に対応する小数点位置パラメータおよび調整結果によって、現在の予測時点に対応する小数点位置パラメータのスライディング平均値を確定するように構成される。
この実施形態では、第1の変化傾向値確定モジュールおよび第2の変化傾向値確定モジュールは、両方とも以下を含む。
中間結果確定サブモジュールは、最後の予測時点に対応する小数点位置パラメータおよび最後の予測時点に対応する小数点位置パラメータのスライディング平均値に従って、現在の予測時点に対応する小数点位置パラメータのスライディング平均値を確定するためである。価値の中間結果;
第2のスライディング平均値確定サブモジュールは、現在の予測時点に対応する小数点位置パラメータのスライディング平均値とデータビット幅の調整値の中間結果によって、現在の予測時点に対応する小数点位置を確定するためである。パラメータのスライディング平均値。
この実施形態では、第2の変化傾向値確定モジュールは、対応する量子化誤差に従って、データビット幅の変化傾向値を確定する。
この実施形態では、第1の目標反復間隔確定ユニットは、さらに以下を含む。
対応する量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、量子化誤差に対応する量子化前のデータは、所定の時点に対応する重み更新反復プロセスに関与する量子化予定のデータである。
データビット幅確定モジュールは、対応する量子化誤差に従って、目標反復間隔内の量子化プロセスで使用されるデータビット幅を確定するためである。
この実施形態では、データビット幅確定モジュールは、特に以下のように構成される。
量子化誤差をしきい値と比較し、最後の目標反復間隔で量子化処理に使用したデータビット幅を比較結果に応じて調整し、調整結果を現在の目標反復間隔で量子化処理に使用したデータビット幅として使用する。
この実施形態では、量子化誤差確定モジュールによって使用される量子化前のデータは、目標反復間隔内の重み更新反復に関与する量子化予定のデータであり、ここで、目標反復間隔は、少なくとも1つの重みを含む。反復が更新され、同じ目標反復間隔内の量子化プロセスで同じ量子化パラメータが使用される。
この実施形態では、ニューラルネットワークの量子化パラメータ確定装置は、第2の目標反復間隔確定ユニットをさらに含み、第2の目標反復間隔確定ユニットは、以下を含む。
第3の変化傾向値確定モジュールは、予測時点での重み更新反復プロセスに関係する量子化予定のデータの小数点位置パラメータの変化傾向値を確定するためである。ここで、予測時点は、量子化パラメータを調整する必要がある時点。予測時点は、重み更新の反復が完了する時点に対応する。
第3の目標反復間隔モジュールは、小数点位置パラメータの変化傾向値に従って、対応する目標反復間隔を確定するように構成される。
この実施形態では、量子化パラメータ確定ユニットは、統計結果およびデータビット幅によって小数点位置パラメータを確定する。
一実施形態では、データビット幅の調整装置が提供され、これは、以下を含むことを特徴とする。
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュール。データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
量子化モジュールは、データビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行して、1グループの量子化予定のデータを1グループの量子化後のデータに変換するように構成され、1グループの量子化後のデータは上記のデータビット幅を持つ。
1グループの量子化予定のデータを1グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定するように構成される確定モジュール。
調整は、確定された量子化誤差に基づいてデータビット幅を調整する。
この実施形態では、比較モジュールは以下を含む。
データビット幅によって量子化間隔を確定するように構成される間隔確定モジュール。
誤差確定モジュールは、量子化間隔、1グループの量子化後のデータ、および1グループの量子化予定のデータによって量子化誤差を確定するように構成される。
この実施形態では、誤差確定モジュールは以下を含む。
量子化モジュールは、量子化間隔によって1グループの量子化後のデータに対して逆量子化を実行して、1グループの逆量子化データを取得するように構成され、1グループの逆量子化データフォーマットは、1グループの量子化予定のデータと同じである。同じデータフォーマットである;および
量子化誤差確定モジュールは、1グループの逆量子化データおよび1グループの量子化予定のデータによって量子化誤差を確定するように構成される。
この実施形態では、調整モジュールは以下を含む。
量子化誤差をプリセットしきい値と比較するように構成される比較モジュール。プリセットしきい値には、第1のしきい値と第2のしきい値の少なくとも1つが含まれる。
ビット幅調整モジュールは、比較結果に応じてデータビット幅を調整するように構成される。
この実施形態では、ビット幅調整モジュールは以下を含む。
増加モジュールは、量子化誤差が第1のしきい値以上であるとの確定に応答してデータビット幅を増やすように構成される。
この実施形態では、追加モジュールは以下を含む。
ステップ長さ増加モジュールは、調整後のデータビット幅を確定するために、第1のプリセットビット幅のステップ長さによってデータビット幅を増やすように構成される。
この実施形態では、量子化モジュールは、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換するために、調整後のデータビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。別の1グループの量子化後のデータは、調整後のデータビット幅を持つ。
確定モジュールはさらに、1グループの量子化予定のデータを別の1グループの量子化予定のデータのと比較し、別の量子化誤差が以下になるまで、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第1のプリセットしきい値。
この実施形態では、装置は反復呼び出される。
この実施形態では、調整モジュールは以下を含む。
減少モジュールは、量子化誤差が第2のしきい値以下であると判断した場合にデータビット幅を縮小するように構成される。
この実施形態では、減少モジュールは以下を含む。
ステップ長さ減少モジュールは、調整後のデータビット幅を確定するために、第2のプリセットビット幅のステップ長さによってデータビット幅を減少するためである。
この実施形態では、量子化モジュールは、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換するために、調整後のデータビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。データ、別の1グループの量子化後のデータは、調整後のデータビット幅を持つ。
確定モジュールはさらに、別の量子化誤差がより大きくなるまで、量子化予定のデータの1つのセットおよび別の1グループの量子化後のデータに基づいて、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第2のプリセットしきい値。
この実施形態では、装置は反復呼び出される。
この実施形態では、調整モジュールは以下を含む。
維持モジュールは、量子化誤差が第1のしきい値と第2のしきい値との間にあるとの確定に応答してデータビット幅を維持するように構成される。
この実施形態では、それはさらに以下を含む。
更新モジュールは、1グループの量子化予定のデータおよび調整後のデータビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新するように構成される。
量子化モジュールは、更新された量子化パラメータに基づいて1グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。
この実施形態では、範囲モジュールを使用して、量子化予定のデータのデータ変動振幅を取得する。
間隔モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整するように構成され、目標反復間隔には少なくとも1回の反復が含まれる。
この実施形態では、範囲モジュールは以下を含む。
小数点位置モジュールは、小数点位置の変動範囲を取得するために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動と同じである。振幅は正の相関がある。
この実施形態では、小数点位置モジュールは以下を含む。
第1の平均値モジュールは、カレント検査反復の前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復の前の履歴反復に対応する小数点位置に従って第1の平均値を確定するためである。検査の反復は、目標反復間隔前の一つ前の反復間隔に対応しているか。
第2の平均モジュールは、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって第2の平均値を確定するためである。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に基づいている。検査の反復に対応する目標データのビット幅と量子化予定のデータが確定される。
第1の誤差モジュールは、第1の平均値および第2の平均値に従って第1の誤差を確定するように構成され、第1の誤差は、小数点位置の変動範囲を表すためである。
この実施形態では、間隔モジュールは以下を含む。
第1の間隔モジュールは、第1の誤差によって目標反復間隔を確定するように構成されており、目標反復間隔は第1の誤差と負の相関がある。
この実施形態では、範囲モジュールはさらに以下を含む。
データビット幅の変化傾向を取得するための傾向モジュール。
データ変動範囲モジュールは、小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定するためである。
この実施形態では、間隔モジュールはさらに以下を含む。
反復間隔モジュールは、取得した第1の誤差と第2の誤差によって目標反復間隔を確定するためである。第1の誤差は小数点位置の変動範囲を表すために使用され、第2の誤差はデータビット幅を表すためである。変化の傾向。
この実施形態では、反復間隔モジュールは以下を含む。
第1の誤差と第2の誤差うちの最大値を目標誤差とするように構成される目標誤差モジュール。
目標反復間隔モジュールは、目標誤差に従って目標反復間隔を確定するように構成される。ここで、目標誤差は目標反復間隔に負の相関がある。
この実施形態では、第2の誤差は、量子化誤差によって確定される。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
この実施形態では、装置は、ニューラルネットワークのトレーニングまたは微調整に使用され、装置はさらに以下を含む。
第1の反復モジュールは、カレント反復が第1のプリセット反復よりも大きい場合に量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整するように構成される。
この実施形態では、装置はさらに以下を含む。
第2の反復モジュールは、カレント反復が第1のプリセット反復間隔以下の場合に、第1のプリセット反復間隔を目標反復間隔として使用し、第1のプリセット反復間隔によって調整するように構成される。量子化パラメータ。
この実施形態では、装置はさらに以下を含む。
第3の反復モジュールは、カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって第2のプリセット反復間隔を調整するように構成される。量子化パラメータ。
ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。
この実施形態では、装置はさらに以下を含む。
コンバージェンスモジュールは、ニューラルネットワークのコンバージェンス度がプリセット条件を満たす場合に、現在の検証イテレーションが第2のプリセットイテレーション以上であると判断するように構成される。
この実施形態では、装置はさらに以下を含む。
カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
一実施形態では、コンピュータプログラムがその上に格納されることを特徴とするコンピュータ可読記憶媒体が提供され、プログラムが実行されると、上記のいずれか1つによる方法が実現される。
一実施形態では、チップが上記のいずれか1つに従ってデータを処理するための装置を含むことを特徴とする人工知能チップが提供される。
一実施形態では、電子装置が上記の人工知能チップを含むことを特徴とする電子装置が提供される。
一実施形態では、ボードカードは、以下を含むことを特徴とするボードカードが提供される:記憶装置、インターフェース装置、制御装置、および上記による人工知能チップ。
ここで、人工知能チップは、記憶装置、制御装置、およびインターフェイス装置に接続されている。
記憶装置は、データを格納するためである。
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
制御装置は、人工知能チップの状態を監視するためである。
一実施形態では、記憶装置は、以下を含む。記憶ユニットの複数のグループ、記憶ユニットの各グループは、バスを介して人工知能チップに接続され、記憶ユニットは、DRD SDRADである。
チップには、各記憶ユニットのデータ伝送とデータストレージを制御するためのDDRコントローラが含まれる。
インターフェイス装置は、標準のPCIEインターフェイスである。
一実施形態では、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定することは、以下を含む。
対応する量子化パラメータは、各タイプの量子化予定のデータと対応するデータビット幅によって計算される。
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置が求められ、目標データは任意の種類である。量子化予定のデータ。
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
量子化パラメータにオフセットが含まれていない場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数が取得される。
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。目標データは、任意の一種の量子化予定のデータである。
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
量子化パラメータにオフセットが含まれている場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
目標データのスケーリング係数は、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って取得される。
一実施形態では、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる。
目標データの最大値と最小値に応じて、目標データのオフセットが取得され、目標データは任意の一種の量子化予定のデータである。
一実施形態では、この方法はさらに以下を含む。
目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整し、目標データに対応する調整ビット幅を取得する。
目標データに対応するデータビット幅が調整ビット幅に更新され、目標データと調整ビット幅に応じて対応する調整量子化パラメータが計算されるため、ニューラルネットワークは調整量子化パラメータに従って処理を実行する。量子化。
一実施形態では、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を得るには、以下が含まれる。
量子化誤差が第1の誤差しきい値より大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
一実施形態では、調整ビット幅および目標データに従って、目標データの調整済の量子化誤差を計算する。
調整ビット幅と目標データに従って計算された調整済の量子誤差が第1の誤差しきい値以下になるまで、調整済の量子化誤差と第1の誤差しきい値に従って調整ビット幅を増やし続ける。
一実施形態では、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整することは、以下を含む。
量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少し、第2の誤差しきい値が1番目の誤差しきい値よりも小さくなる。
一実施形態では、この方法はさらに以下を含む。
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
調整ビット幅と目標データに従って計算された調整済の量子誤差が第2の誤差しきい値以上になるまで、調整済の量子化誤差と第2の誤差しきい値に従って調整ビット幅を減らし続ける。
一実施形態では、ニューラルネットワーク操作の微調整段階および/またはトレーニング段階において、この方法はさらに以下を含む。
カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、履歴反復はカレント反復の前の反復である。
目標データのデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新し、目標反復間隔には少なくとも1つが含まれる。反復になるが、目標データは任意の一種の量子化予定のデータである。
一実施形態では、この方法はさらに以下を含む。
カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定されるため、ニューラルネットワークはターゲット内の目標データに基づいている。反復間隔内の反復に対応するデータビット幅によって、量子化パラメータが決まる。
一実施形態では、量子化パラメータ確定モジュールは、以下を含む。
第2の量子化パラメータ確定サブモジュールは、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
一実施形態では、第2の量子化パラメータ確定サブモジュールは、以下を含む。
第1小数点位置計算単位は、量子化パラメータにオフセットが含まれていない場合に、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置を取得するためである。目標データは、任意の一種の量子化予定のデータである。
一実施形態では、第2の量子化パラメータ確定サブモジュールは、以下を含む。
第1のスケーリング係数計算ユニットは、量子化パラメータがオフセット、目標データを含まない場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得するように構成される。任意の一種の量子化予定のデータであり、目標データの最大絶対値と目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
一実施形態では、第2の量子化パラメータ確定サブモジュールは、以下を含む。
第2小数点位置計算ユニットは、量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅に応じて取得するように構成される。目標データの小数点位置、目標データは、任意の一種の量子化予定のデータである。
一実施形態では、第2の量子化パラメータ確定サブモジュールは、以下を含む。
第2のスケーリング係数計算ユニットは、量子化パラメータがオフセットを含み、目標データがである場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化データの最大値を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数が取得される。
一実施形態では、第2の量子化パラメータ確定サブモジュールは、以下を含む。
オフセット計算ユニットは、目標データの最大値と最小値に応じて目標データのオフセットを取得するように構成されており、目標データは、任意の一種の量子化予定のデータである。
一実施形態では、装置はさらに以下を含む。
目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、目標データは、量子化予定の任意の種類のデータである。
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される調整ビット幅確定モジュール。
調整量子化パラメータ確定モジュールは、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ネットワークは、調整された量子化パラメータに従って量子化を実行する。
一実施形態では、調整ビット幅確定モジュールは、以下を含む。
第1調整ビット幅確定サブモジュールは、量子化誤差が第1誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
一実施形態では、調整ビット幅確定モジュールは、さらに以下を含む。
第1の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
第1の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第1の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。の量子化誤差は、第1の誤差しきい値以下である。
一実施形態では、調整ビット幅確定モジュールは、以下を含む。
第2の調整ビット幅確定サブモジュールは、量子化誤差が第2の誤差しきい値未満であり、第2の誤差しきい値が第1の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
一実施形態では、調整ビット幅確定モジュールは、さらに以下を含む。
第2の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
第2の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第2の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。の量子化誤差は、第2の誤差しきい値以上である。
一実施形態では、ニューラルネットワーク動作の微調整段階および/またはトレーニング段階において、装置はさらに以下を含む。
カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成されるデータ変動範囲確定モジュール。履歴反復は、カレント反復の前の反復である。
目標反復間隔確定モジュールは、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成されるため、ニューラルネットワークは目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも1つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
一実施形態では、装置はさらに以下を含む。
第1の目標反復間隔適用モジュールは、カレント反復での目標データのデータビット幅によって、目標反復間隔での目標データの反復に対応するデータビット幅を確定するように構成される。ネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって、量子化パラメータを確定する。
一実施形態では、ニューラルネットワークの量子化パラメータの調整方法が提供され、この方法は以下を含む。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
一実施形態では、量子化パラメータは、小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、この方法は、以下をさらに含む。
カレント検査反復に対応する目標データビット幅と、カレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定し、ニューラルネットワーク演算の小数点位置を調整する。
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
一実施形態では、量子化パラメータは、小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、この方法は、以下をさらに含む。
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔の反復に対応する小数点位置を調整して、ニューラルネットワーク演算の小数点位置を調整する。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
一実施形態では、小数点位置反復間隔は、目標反復間隔以下である。
一実施形態では、量子化パラメータは、スケーリング係数をさらに含み、スケーリング係数は、小数点位置と同期して更新される。
一実施形態では、量子化パラメータはさらにオフセットを含み、オフセットは小数点位置と同期して更新される。
一実施形態では、この方法はさらに以下を含む。
カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって得られる。
量子化誤差に応じて、カレント検査反復に対応する目標データビット幅が確定される。
一実施形態では、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定することは、以下を含む。
量子化誤差が第1のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第2のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
一実施形態では、量子化誤差が第1のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復に対応する目標データビット幅を取得することは、以下を含む。
量子化誤差が第1のプリセットしきい値以上の場合、第1のプリセットビット幅のステップ長さによって第1の中間データビット幅を確定する。
戻り実行は、量子化誤差が第1のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データはこれは、第1の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
一実施形態では、量子化誤差が第2のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減らすことは、以下を含む。
量子化誤差が第2のプリセットしきい値以下の場合、第2のプリセットビット幅のステップ長さによって第2の中間データビット幅を確定する。
実行に戻り、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第2のプリセットしきい値より大きくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データこれは、第2の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
一実施形態では、量子化予定のデータのデータ変動範囲を取得することは、以下を含む。
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
一実施形態では、小数点位置の変動範囲取得することは、以下が含まれる。
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第1の平均値を確定する。ここで、前の検査反復は目標反復間隔である。前の反復間隔に対応する検査反復。
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第2の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データに基づいている。量子化するビット幅とデータが確定される。
第1の誤差は、第1の平均値および第2の平均値に従って確定され、第1の誤差は、小数点位置の変動範囲を表すためである。
一実施形態では、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定することは、以下を含む。
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
第2の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
一実施形態では、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定することは、以下を含む。
第2の平均値は、カレント検査反復に対応する小数点位置と第1の平均値に従って確定される。
一実施形態では、この方法はさらに以下を含む。
第2の平均値は、カレント検査反復の取得データビット幅調整値に従って更新される。カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅と初期データビットに基づいて確認される。
一実施形態では、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新することは、以下を含む。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
一実施形態では、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、以下を含む。
目標反復間隔は第1の誤差によって確定され、目標反復間隔は第1の誤差と負の相関がある。
一実施形態では、量子化予定のデータのデータ変動範囲を取得することは、さらに以下を含む。
データビット幅の変化傾向を取得する。
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
一実施形態では、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、さらに以下を含む。
取得した第1誤差と第2誤差に応じて、目標反復間隔を確定する。ここで、第1誤差は小数点位置の変動範囲を表すために使用され、第2誤差はデータビット幅の変化傾向を表すためである。
一実施形態では、取得された第2の誤差および第1の誤差によって目標反復間隔を確定することは、以下を含む。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
一実施形態では、第2の誤差は、量子化誤差によって確定される。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
一実施形態では、この方法は、ニューラルネットワークをトレーニングまたは微調整するために使用され、この方法は、以下をさらに含む。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
一実施形態では、この方法はさらに以下を含む。
カレント反復が第1のプリセット反復以下の場合、第1のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第1のプリセット反復間隔によって調整される。
一実施形態では、この方法はさらに以下を含む。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。
一実施形態では、この方法はさらに以下を含む。
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
一実施形態では、この方法はさらに以下を含む。
カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
一実施形態では、量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つである。
一実施形態では、メモリおよびプロセッサを含み、メモリがコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行するときの実装が上記のとおりであることを特徴とするニューラルネットワークの量子化パラメータ調整装置が提供される。メソッドの任意のステップ。
一実施形態では、コンピュータプログラムは、コンピュータ可読記憶媒体に格納され、コンピュータプログラムが実行されると、上記のいずれかに記載された方法のステップが実行される。
一実施形態では、ニューラルネットワークの量子化パラメータ調整装置が提供され、その装置は以下を含むことを特徴とする。
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも1回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
一実施形態では、量子化パラメータは小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、装置はさらに以下を含む。
量子化パラメータ確定モジュールは、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定するように構成され、ニューラルネットワーク動作を調整する。
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
一実施形態では、量子化パラメータは小数点位置を含み、小数点位置は、量子化予定のデータに対応する量子化データ内の小数点位置であり、装置はさらに以下を含む。
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成されるデータビット幅確定モジュール。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
量子化パラメータ確定モジュールは、取得した小数点位置反復間隔によって目標反復間隔の反復に対応する小数点位置を調整し、目標反復間隔に対応するデータビット幅を調整してニューラルネットワーク動作の小数点位置を調整するように構成される。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
一実施形態では、小数点位置反復間隔は、目標反復間隔以下である。
一実施形態では、量子化パラメータは、スケーリング係数をさらに含み、スケーリング係数は、小数点位置と同期して更新される。
一実施形態では、量子化パラメータはさらにオフセットを含み、オフセットは小数点位置と同期して更新される。
一実施形態では、データビット幅確定モジュールは、以下を含む。
量子化誤差確定ユニットは、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成され、カレント検査反復の量子化データは、カレント検査反復の量子化データを比較する。データは量子化に取得される。
データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
一実施形態では、データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
量子化誤差が第1のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第2のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
一実施形態では、データビット幅確定ユニットは、量子化誤差が第1のプリセットしきい値以上である場合、カレント検査反復に対応するデータを取得するために、カレント検査反復に対応するデータビット幅を増やすように構成される。目標データのビット幅は、特に次の目的で使用される。
量子化誤差が第1のプリセットしきい値以上の場合、第1のプリセットビット幅のステップ長さによって第1の中間データビット幅を確定する。
戻り実行は、量子化誤差が第1のプリセットしきい値より小さくなるまで、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データはこれは、第1の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
一実施形態では、データビット幅確定ユニットは、量子化誤差が第2のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させて、対応するカレント検査反復を取得するように構成される。の目標データビット幅が特に次の目的で使用される場合:
量子化誤差が第2のプリセットしきい値以下の場合、第2のプリセットビット幅のステップ長さによって第2の中間データビット幅を確定する。
実行に戻り、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第2のプリセットしきい値より大きくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データこれは、第2の中間データのビット幅に従って、カレント検査反復の量子化データを量子化することによって取得される。
一実施形態では、取得モジュールは以下を含む。
最初の取得モジュールは、小数点位置の変動範囲を取得するためである。小数点位置の変動範囲は、量子化予定のデータのデータ変化の範囲を表すために使用でき、小数点位置の変動範囲は、量子化予定のデータに対応する。データの変化には正の相関関係がある。
一実施形態では、第1の取得モジュールは、以下を含む。
第1の平均値確定ユニットは、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第1の平均値を確定するように構成される。検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
第2の平均値確定ユニットは、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定するように構成される;ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
第1の誤差確定ユニットは、第1の平均値および第2の平均値に従って第1の誤差を確定するように構成され、第1の誤差は、小数点位置の変動範囲を表すためである。
一実施形態では、第2の平均値確定ユニットは、具体的に以下のように構成される。
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
第2の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
一実施形態では、第2の平均値確定ユニットは、カレント検査反復に対応する小数点位置および第1の平均値に従って第2の平均値を確定するように特に構成される。
一実施形態では、第2の平均値確定ユニットは、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新するように構成される。
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
一実施形態では、第2の平均値確定ユニットは、特に以下のために、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新するように構成される。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
一実施形態では、反復間隔確定モジュールは、第1の誤差によって目標反復間隔を確定するように構成され、目標反復間隔は、第1の誤差と負の相関がある。
一実施形態では、取得モジュールはさらに以下を含む。
第2の取得モジュールは、データビット幅の変化傾向を取得するように構成される。小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
一実施形態では、反復間隔確定モジュールは、取得された第1の誤差および第2の誤差によって目標反復間隔を確定するようにさらに構成される;ここで、第1の誤差は、小数点位置の変化の範囲を表すためである。第2の誤差は、データビット幅の変化傾向を特徴づけるためである。
一実施形態では、ルート反復間隔確定モジュールは、特に以下について、取得された第1の誤差および第2の誤差によって、目標反復間隔を確定するように構成される。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
一実施形態では、第2の誤差は、量子化誤差によって確定される。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
一実施形態では、装置は、ニューラルネットワークのトレーニングまたは微調整を実施するために使用され、反復間隔確定モジュールは、以下の目的にも使用される。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
一実施形態では、反復間隔確定モジュールは、次のようにさらに構成される:カレント反復が第1のプリセット反復以下である場合、第1のプリセット反復間隔を目標反復間隔として使用し、それに従ってそれを設定する。第1のプリセット反復間隔で量子化パラメータを調整する。
一実施形態では、反復間隔確定モジュールは、以下のようにさらに構成される。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなっている。
一実施形態では、反復間隔確定モジュールは、カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値よりも大きい場合、次に、量子化予定のデータのデータに従って、以下のようにさらに構成される。変動範囲は、反復間隔を確定して、反復間隔によってデータビット幅を再確定する。
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット/モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、1つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示の実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット/モジュールは、1つのユニット/モジュールに統合され得るか、または各ユニット/モジュールが物理的に単独で存在し得るか、または2つ以上のユニット/モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット/モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット/モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、1つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示における実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット/モジュールは、1つのユニット/モジュールに統合され得るか、または各ユニット/モジュールが物理的に単独で存在し得るか、または2つ以上のユニット/モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット/モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
統合ユニット/モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。特に指定のない限り、人工知能プロセッサは、CPU、GPU、FPGA、DSP、ASICなどの適切なハードウェアプロセッサである。特に指定のない限り、記憶ユニットは、抵抗性ランダムアクセスメモリ(RRAM)、ダイナミックランダムアクセスメモリ(DRAM)などの適切な磁気ストレージメディアまたは磁気光学ストレージメディアのいずれかである。SRAM(静的ランダムアクセスメモリ)、拡張動的ランダムアクセスメモリ(EDRAM)、高帯域幅メモリ(HBM)、ハイブリッドメモリキューブ(HMC)など。待つ。
統合されたユニット/モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る)に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Uディスク、読み取り専用メモリ(ROM、読み取り専用メモリ)、ランダムアクセスメモリ(RAM、ランダムアクセスメモリ)、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
この技術案において、本開示はまた、上記のニューラルネットワーク量子化パラメータ確定装置を含む人工知能チップを開示する。
技術案において、本開示はまた、記憶装置、インターフェース装置、制御装置、および前述の人工知能チップを含むボードカードを開示し、ここで、人工知能チップおよび記憶装置、制御装置、およびインターフェイス装置はそれぞれ接続されている。記憶装置はデータの格納に使用される。インターフェイス装置は人工知能チップと外部装置間のデータ伝送を実装するためである。制御装置はスマートチップの状態が監視される。
図12は、本開示の実施形態によるボードカードのブロック図を示す。図12を参照すると、チップ389に加えて、ボードカードはまた、他の支持構成要素を含み得る。支持構成要素は、記憶装置390、インターフェース装置391および制御装置392を含むが、これらに限定されない。
記憶装置390は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット393の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはDDRSDRAM(英語:Double Data Rate SDRAM、ダブルレート同期動的ランダムアクセスメモリ)である可能性があることが理解できる。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍にすることができる。DDRを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。DDRの速度は標準のSDRAMの2倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの4つのグループを含み得る。記憶ユニットの各グループには、複数のDDR4粒子(チップ)を含めることができる。一実施形態では、人工知能チップは、4つの72ビットDDR4コントローラを含み得る。72ビットDDR4コントローラでは、64ビットがデータ伝送に使用され、8ビットがECC検証に使用される。記憶ユニットの各グループでDDR4−3200粒子を使用すると、データ伝送の理論上の帯域幅が25600MB/秒に達する可能性があることが理解できる。
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。DDRは、1クロックサイクルで2回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、DDRを制御するためのコントローラがチップに提供されている。
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置(サーバーやコンピュータなど)との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のPCIEインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のPCIEインターフェイスを介してサーバーからチップに伝送される。送信にPCIE3.0X16インターフェイスを使用する場合、理論上の帯域幅は16000MB/sに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置(サーバーなど)に送信される。
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、SPIインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ(マイクロコントローラユニット、MCU)を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理、および/または複数の処理回路の動作状態の調整を実現することができる。
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および/または医療機器。
輸送手段には飛行機、船および/または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴が含まれる。B−超音波および/または心電計。
上記は、次の条項に従ってよりよく理解できる。
A1、データビット幅を調整する方法。この方法には次のものが含まれる。
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得する。ここで、データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
データビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行して、1グループの量子化予定のデータを1グループの量子化後のデータに変換し、1グループの量子化後のデータはデータビット幅を有する。
1グループの量子化予定のデータを1グループの量子化後のデータと比較して、データビット幅に関連する量子化誤差を確定する。
データビット幅は、確定された量子化誤差に基づいて調整される。
A2、1グループの量子化予定のデータを1グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定する、条項A1に記載の方法は、以下を含む。
データビット幅に応じて量子化間隔を確定する。
量子化誤差は、量子化間隔、1グループの量子化後のデータ、および1グループの量子化予定のデータによって確定される。
A3、量子化間隔、1グループの量子化後のデータ、および1グループの量子化予定のデータによって量子化誤差を確定する、条項A2に記載の方法は、以下を含む。
量子化間隔によって1グループの量子化後のデータに対して逆量子化を実行して、1グループの逆量子化データを取得する。ここで、1グループの逆量子化データフォーマットは、1グループの量子化予定のデータのデータフォーマットと同じである。と同様。
1グループの逆量子化データと1グループの量子化予定のデータによって、量子化誤差を確定する。
A4、確定された量子化誤差に基づいてデータビット幅を調整する、条項A1からA3のいずれか1つに記載の方法には、以下が含まれる。
量子化誤差をプリセットしきい値と比較する。プリセットしきい値には、第1のしきい値と第2のしきい値の少なくとも1つが含まれる。
データビット幅は、比較結果に応じて調整される。
A5、比較の結果によってデータビット幅を調整することを特徴とする、条項A4による方法は、以下を含む。
量子化誤差が第1のしきい値以上であると判断した場合、データビット幅が増やす。
A6、データビット幅を増やすことを含む、条項A5に記載の方法:
データビット幅は、調整後のデータビット幅を確定するために、第1のプリセットビット幅のステップ長さによって増やす。
A7、以下をさらに含むことを特徴とする、条項A6による方法。
調整後のデータビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行し、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換し、別の1グループの量子化後のデータは調整後のデータビット幅;および
1グループの量子化予定のデータを別の1グループの量子化予定のデータと比較し、別の量子化誤差が第1のプリセットしきい値より小さくなるまで、調整後のデータビット幅に関連する別の量子化誤差を確定する。
A8、メソッドが反復的に実行されることを特徴とする、条項A7に基づくメソッド。
A9、比較の結果によってデータビット幅を調整することを特徴とする、条項A4による方法は、以下を含む。
量子化誤差が第2のしきい値以下であると判断した場合、データビット幅を減らす。
A10、データビット幅を縮小することを含む、条項A9に記載の方法:
データビット幅は、調整後のデータビット幅を確定するために、第2のプリセットビット幅のステップ長さによって減少する。
A11、A10項に基づく方法であり、以下をさらに含むことを特徴とする。
調整後のデータビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行し、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換し、別の1グループの量子化後のデータは調整後のデータビット幅;および
1グループの量子化予定のデータと別の1グループの量子化後のデータに基づいて、別の量子化誤差が第2のプリセットしきい値より大きくなるまで、調整後のデータビット幅に関連する別の量子化誤差を確定する。
A12、メソッドが反復的に実行されることを特徴とする、条項A11に基づくメソッド。
A13、比較の結果によってデータビット幅を調整することを特徴とする、条項A4による方法は、以下を含む。
量子化誤差が第1のしきい値と第2のしきい値との間にあると判断したことに応じて、データビット幅が維持される。
A14、条項A1からA13のいずれか1つに基づく方法であり、さらに以下を含むことを特徴とする。
1グループの量子化予定のデータと調整後のデータビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新する。
更新された量子化パラメータに基づいて、1グループの量子化予定のデータに対して量子化処理を実行する。
A15、条項A1に基づく方法は、以下をさらに含むことを特徴とする。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整し、目標反復間隔には少なくとも1回の反復が含まれる。
A16、量子化予定のデータのデータ変動範囲を取得することは、以下を含む、条項A15に記載の方法。
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
A17、取得小数点位置の変化の範囲が以下を含むことを特徴とする、条項A16による方法。
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第1の平均値を確定する。ここで、前の検査反復は目標反復間隔の前である。前の反復間隔に対応する検査反復。
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第2の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅に基づいている。幅と量子化予定のデータを確定する。
第1の誤差は、第1の平均値および第2の平均値に従って確定され、第1の誤差は、小数点位置の変動範囲を表すためである。
A18、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定する、条項A15に記載の方法は、以下を含む。
目標反復間隔は第1の誤差によって確定され、目標反復間隔は第1の誤差と負の相関がある。
A19、量子化予定のデータのデータ変動範囲を取得することは、以下をさらに含む、条項A15に記載の方法。
データビット幅の変化傾向を取得する。
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
A20、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、さらに以下を含むことを特徴とする、条項A19に記載の方法。
目標反復間隔は、取得した第1の誤差と第2の誤差によって確定される。第1の誤差は小数点位置の変動範囲を表すために使用され、第2の誤差はデータビット幅の変化傾向を表すためである。
A21、取得された第1の誤差および第2の誤差によって目標反復間隔を確定する、条項A20に記載の方法は、以下を含む。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
A22、第2の誤差が量子化誤差によって確定される、条項A20またはA21に記載の方法。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
A23、ニューラルネットワークのトレーニングまたは微調整に使用されることを特徴とする、A15項からA22項のいずれか1つに記載の方法であり、この方法はさらに以下を含む。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
A24、方法がさらに以下を含むことを特徴とする、条項A23による方法。
カレント反復が第1のプリセット反復以下の場合、第1のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第1のプリセット反復間隔によって調整される。
A25、条項A23またはA24に記載の方法であって、以下をさらに含む方法。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。
A26、方法がさらに以下を含むことを特徴とする、条項A25による方法。
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
A27、方法がさらに以下を含むことを特徴とする、条項A25による方法。
カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
A28、データビット幅の調整装置で、次のものが含まれる。
量子化予定のデータに対して量子化処理を実行するためのデータビット幅を取得するように構成される取得モジュール。データビット幅は、量子化予定のデータの量子化処理の後の量子化後のデータのビット幅を示す。
量子化モジュールは、データビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行して、1グループの量子化予定のデータを1グループの量子化後のデータに変換するように構成され、1グループの量子化予定のデータはデータを有するビット幅。
1グループの量子化予定のデータを1グループの量子化後のデータと比較し、データビット幅に関連する量子化誤差を確定するように構成される確定モジュール。
調整は、確定された量子化誤差に基づいてデータビット幅を調整する。
A29、比較モジュールが以下を含むことを特徴とする、条項A28による装置。
データビット幅によって量子化間隔を確定するように構成される間隔確定モジュール。
誤差確定モジュールは、量子化間隔、1グループの量子化後のデータ、および1グループの量子化予定のデータによって量子化誤差を確定するように構成される。
A30、誤差確定モジュールが以下を含む、条項A29に記載の装置。
量子化モジュールは、量子化間隔によって1グループの量子化後のデータに対して逆量子化を実行して、1グループの逆量子化データを取得するように構成され、1グループの逆量子化データフォーマットは、1グループの量子化予定のデータと同じである。同じデータフォーマットである;および
量子化誤差確定モジュールは、1グループの逆量子化データおよび1グループの量子化予定のデータによって量子化誤差を確定するように構成される。
A31、調整モジュールが以下を含む、条項A28からA30のいずれか1つに記載の装置。
量子化誤差をプリセットしきい値と比較するように構成される比較モジュール。プリセットしきい値には、第1のしきい値と第2のしきい値の少なくとも1つが含まれる。
ビット幅調整モジュールは、比較結果に応じてデータビット幅を調整するように構成される。
A32、ビット幅調整モジュールが以下を含む、条項A31に記載の装置。
増加モジュールは、量子化誤差が第1のしきい値以上であるとの確定に応答してデータビット幅を増やすように構成される。
A33、追加モジュールが以下を含むことを特徴とする、A32項に基づく装置。
ステップ長さ増加モジュールは、調整後のデータビット幅を確定するために、第1のプリセットビット幅のステップ長さによってデータビット幅を増やすように構成される。
A34、A33項に基づく装置で、次の特徴がある。
量子化モジュールはさらに、調整後のデータビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行するように構成され、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換する。1グループの量子化後のデータは、調整後のデータビット幅を持つ。
確定モジュールはさらに、1グループの量子化予定のデータを別の1グループの量子化予定のデータのと比較し、別の量子化誤差が以下になるまで、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第1のプリセットしきい値。
A35、装置が反復呼び出される、条項A34に記載の装置。
A36、調整モジュールが以下を含む、条項A31に記載の装置。
減少モジュールは、量子化誤差が第2のしきい値以下であると判断した場合にデータビット幅を縮小するように構成される。
A37、減少モジュールが以下を含む、条項A36に記載の装置。
ステップ長さ減少モジュールは、調整後のデータビット幅を確定するために、第2のプリセットビット幅のステップ長さによってデータビット幅を減少するためである。
A38、A37項に基づく装置で、次の特徴がある。
量子化モジュールはさらに、調整後のデータビット幅に基づいて1グループの量子化予定のデータに対して量子化処理を実行するように構成され、1グループの量子化予定のデータを別の1グループの量子化後のデータに変換する。1グループの量子化後のデータは、調整後のデータビット幅を持つ。
確定モジュールはさらに、別の量子化誤差がより大きくなるまで、量子化予定のデータの1つのセットおよび別の1グループの量子化後のデータに基づいて、調整後のデータビット幅に関連する別の量子化誤差を確定するように構成される。第2のプリセットしきい値。
A39、装置が反復呼び出される、条項A38に記載の装置。
A40、調整モジュールが以下を含む、条項A31に記載の装置。
維持モジュールは、量子化誤差が第1のしきい値と第2のしきい値との間にあるとの確定に応答してデータビット幅を維持するように構成される。
A41、条項A28からA40のいずれか1つに基づく装置で、さらに以下を備えている。
1グループの量子化予定のデータおよび調整後のデータビット幅に基づいて、1グループの量子化予定のデータに対して量子化処理を実行するための量子化パラメータを更新するように構成される更新モジュール。
量子化モジュールは、更新された量子化パラメータに基づいて1グループの量子化予定のデータに対して量子化処理を実行するようにさらに構成される。
A42、条項A28に準拠した装置で、さらに以下を備えていることを特徴とする。
範囲モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
間隔モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によってデータビット幅を調整するように構成され、目標反復間隔には少なくとも1回の反復が含まれる。
A43、範囲モジュールが以下を含む、条項A42に記載の装置。
小数点位置モジュールは、小数点位置の変動範囲を取得するために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲を表すために使用され、小数点位置の変動範囲は、量子化予定のデータのデータ変動と同じである。振幅は正の相関がある。
A44、小数点位置モジュールが含む、条項A43に記載の装置。
第1の平均値モジュールは、カレント検査反復の前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復の前の履歴反復に対応する小数点位置に従って第1の平均値を確定するためである。検査の反復は、目標反復間隔前の一つ前の反復間隔に対応しているか。
第2の平均モジュールは、カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって第2の平均値を確定するためである。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に基づいている。検査の反復に対応する目標データのビット幅と量子化予定のデータが確定される。
第1の誤差モジュールは、第1の平均値および第2の平均値に従って第1の誤差を確定するように構成され、第1の誤差は、小数点位置の変動範囲を表すためである。
A45、間隔モジュールが以下を含む、条項A42に記載の装置。
第1の間隔モジュールは、第1の誤差によって目標反復間隔を確定するように構成されており、目標反復間隔は第1の誤差と負の相関がある。
A46、範囲モジュールがさらに以下を含む、条項A42に記載の装置。
データビット幅の変化傾向を取得するための傾向モジュール。
データ変動範囲モジュールは、小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定するためである。
A47、間隔モジュールがさらに以下を含む、条項A46に記載の装置。
反復間隔モジュールは、取得した第1の誤差と第2の誤差によって目標反復間隔を確定するためである。第1の誤差は小数点位置の変動範囲を表すために使用され、第2の誤差はデータビット幅を表すためである。変化の傾向。
A48、反復間隔モジュールが含む、条項A47に記載の装置。
第1の誤差と第2の誤差うちの最大値を目標誤差とするように構成される目標誤差モジュール。
目標反復間隔モジュールは、目標誤差に従って目標反復間隔を確定するように構成される。ここで、目標誤差は目標反復間隔に負の相関がある。
A49、第2の誤差が量子化誤差によって確定される、条項A47またはA48による装置。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
A50、条項A42からA49のいずれか1つに記載の装置であって、ニューラルネットワークをトレーニングまたは微調整するために使用され、さらに以下を含む装置。
第1の反復モジュールは、カレント反復が第1のプリセット反復よりも大きい場合に量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整するように構成される。
A51、条項A50に記載の装置であって、装置がさらに以下を含む、装置。
第2の反復モジュールは、カレント反復が第1のプリセット反復間隔以下の場合に、第1のプリセット反復間隔を目標反復間隔として使用し、第1のプリセット反復間隔によって調整するように構成される。量子化パラメータ。
A52、条項A50またはA51に記載の装置であって、装置がさらに以下を含む、装置。
第3の反復モジュールは、カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって第2のプリセット反復間隔を調整するように構成される。
ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。
A53、装置がさらに以下を含む、条項A52に記載の装置。
コンバージェンスモジュールは、ニューラルネットワークのコンバージェンス度がプリセット条件を満たす場合に、現在の検証イテレーションが第2のプリセットイテレーション以上であると判断するように構成される。
A54、装置がさらに以下を含むことを特徴とするA52項による装置。
カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。
A55、コンピュータプログラムがその上に格納されることを特徴とするコンピュータ可読記憶媒体。これは、実行されると、条項A1〜A27のいずれか1つに従って方法を実施する。
A56、チップがA28項からA54項のいずれかに従ってデータを処理するための装置を含むことを特徴とする人工知能チップ。
A57、第56条に基づく人工知能チップを含むことを特徴とする電子機器。
A58、その特徴を有するボードカードは、以下を含む。ボードカードは、記憶装置、インターフェース装置、制御装置、および第56項による人工知能チップを含む。
ここで、人工知能チップは、記憶装置、制御装置、およびインターフェイス装置に接続されている。
記憶装置は、データを格納するためである。
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
制御装置は、人工知能チップの状態を監視するためである。
A59、A58項に基づくボードカードは、次の特徴を備えている。
記憶装置には次のものが含まれる。記憶ユニットの複数のグループ、記憶ユニットの各グループはバスを介して人工知能チップに接続され、記憶ユニットはDDRSDRAMである。
チップには各記憶ユニットのデータ伝送とデータストレージを制御するためのDDRコントローラが含まれる。
インターフェイス装置は、標準のPCIEインターフェイスである。
ニューラルネットワークの量子化の問題を解決するために、次の技術案を提案しました(201910505239.7)。具体的には、ニューラルネットワークの量子化方法と装置および関連製品が提供される。
この開示は、人工知能技術の分野、特にニューラルネットワークの量子化方法および装置、ならびに関連製品に関する。
人工知能技術の継続的な発展に伴い、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理の分野で広く適用されている。しかし、人工知能アルゴリズムの複雑さが増やすにつれて、処理する必要のあるデータの量とデータの次元は絶えず増加している。計算効率と計算結果の精度のバランスをとる方法は、人工知能の分野で緊急の問題である。
これを考慮して、本開示は、ニューラルネットワーク量子化技術案を提案する。
本開示の一態様によれば、ニューラルネットワーク量子化法が提供される。ニューラルネットワークにおいて量子化予定の任意の層について、この方法は以下を含む。
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを含む。
量子化予定のデータは、対応する量子化パラメータに従って量子化されて量子化後のデータを取得するため、ニューラルネットワークは量子化後のデータに従って操作を実行する。
本開示の別の態様によれば、ニューラルネットワークの量子化装置が提供され、装置は、ニューラルネットワークにおいて量子化予定の任意の層を量子化するために使用され、装置は、以下を含む。
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される量子化パラメータ確定モジュール。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを含む。
量子化モジュールは、対応する量子化パラメータに従って量子化予定のデータを量子化するために使用され、量子化後のデータを取得し、ニューラルネットワークが量子化後のデータに従って操作を実行するようにする。
本開示の別の態様によれば、人工知能チップが提供され、そのチップは、上記のニューラルネットワークの量子化装置を含む。
本開示の別の態様によれば、上記のような人工知能チップを含む電子装置が提供される。
本開示の別の態様によれば、ボードカードが提供され、ボードカードは、記憶装置、インターフェース装置および制御装置、ならびに上記の人工知能チップと、人工知能チップおよび記憶装置とを備える。制御装置とインターフェース装置は別々に接続されている;記憶装置はデータを記憶するためである;インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現するためである;制御装置、人工知能チップの状態を監視するためである。
本開示のこの実施形態では、ニューラルネットワークで量子化予定の任意の層について、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータが確定され、量子化予定のデータはニューロンおよび重みを含む。オフセットと勾配の少なくとも1つ。対応する量子化パラメータに従って量子化予定のデータを量子化し、量子化予定のデータを取得する。これにより、ニューラルネットワークは量子化予定のデータによって操作を実行できる。各層で量子化予定のデータとより一致する量子化パラメータを使用して、量子化する各層を量子化する。これにより、各層の計算結果の精度を確保しながら、各層の計算効率を向上させることができる。ニューラルネットワークの全体的な計算結果の精度を確保することを前提として、ニューラルネットワークの全体的な計算効率を向上させることも可能である。
添付の図面を参照する例示的な実施形態の以下の詳細な説明によれば、本開示の他の特徴および態様が明らかになるであろう。
本明細書に含まれ、本明細書とともに本明細書の一部を構成する図面は、本開示の例示的な実施形態、特徴、および態様を示し、本開示の原理を説明するためである。
図2−1は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
図2−2は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
図2−3は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。
図2−4は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−5は、本開示の一実施形態によるニューラルネットワーク量子化法の量子化パラメータがオフセットを含まない場合の、量子化前後のデータ対応の概略図を示す。
図2−6は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−7は、本開示の一実施形態によるニューラルネットワーク量子化法における量子化パラメータがオフセットを含む場合の、量子化前後のデータ対応の概略図を示す。
図2−8は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−9は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−10は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−11は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−12は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−13は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−14は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−15は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−16は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−17は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−18は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−19は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−20は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−21は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−22は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−23は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−24は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−25は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。
図2−26は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
図2−27は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
図2−28は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
図2−29は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
図2−30は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。
図2−31は、本開示の一実施形態によるボードカードのブロック図を示している。
ニューラルネットワークの量子化の問題を解決するために、次の技術案を提案しました(201910505239.7)。本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られた他のすべての実施形態は、本開示の保護範囲に含まれる。
本開示の特許請求の範囲、明細書および図面における「第1」、「第2」、「第3」および「第4」という用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書および特許請求の範囲で使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および/または構成要素の存在を示すが、1つまたは複数の他の特徴、全体を除外しない。ステップ、操作、要素、コンポーネント、および/またはそれらのコレクションの存在または追加。
この開示明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示および特許請求の範囲で使用されるように、文脈が他の状況を明確に示さない限り、単数形「一」、「1つ」および「当該」は、複数形を含むことを意図している。本開示の明細書および特許請求の範囲で使用される「および/または」という用語は、関連してリストされた1つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
ここでの「例示的」という専用の単語は、「例、実施形態、または例示として役立つ」ことを意味する。本明細書で「例示的」として記載される任意の実施形態は、他の実施形態よりも優れているまたはより優れていると解釈される必要はない。
さらに、本開示をよりよく説明するために、以下の特定の実施形態において、多数の特定の詳細が与えられる。当業者は、この開示が特定の特定の詳細なしに実施することもできることを理解すべきである。場合によっては、本開示の要点を強調するために、当業者に周知の方法、手段、要素、および回路は詳細に説明されていない。
ニューラルネットワークで計算されるデータは、通常、浮動小数点データフォーマットまたは高精度の固定点データフォーマットである。ニューラルネットワークを搭載したチップ上でニューラルネットワークを実行する場合、浮動小数点データフォーマットまたは高精度の固定小数点データフォーマットはさまざまに計算される。ニューラルネットワーク演算のデータ、計算負荷、およびメモリアクセスのオーバーヘッドは比較的大きいである。計算効率を向上させるために、ニューラルネットワークで計算されるデータを量子化することができる。量子化後のデータフォーマットは、通常、ビット幅が短く精度が低い固定小数点データフォーマットである。ニューラルネットワーク演算を実行するために低精度の量子化予定のデータを使用すると、計算とメモリアクセスの量を減らすことができる。量子化後のデータフォーマットは、ビット幅が短い固定小数点データフォーマットにすることができる。浮動小数点データフォーマットで計算されるデータは、固定点データフォーマットで計算されるデータに量子化でき、固定点形式でより高い精度で計算されるデータは、固定点形式でより低い精度で計算されるデータに量子化される。
量子化精度とは、量子化後のデータと事前に量子化後のデータとの間の誤差の大きさを指すことが理解できる。量子化の精度は、ニューラルネットワークの操作結果の精度に影響を与える可能性がある。精度が高いほど、計算結果の精度は高くなるが、計算量が多くなり、メモリアクセスのオーバーヘッドが大きくなる。ビット幅が短い量子化予定のデータと比較して、ビット幅が長い量子化予定のデータは量子化精度が高く、ニューラルネットワーク演算の実行にも使用すると精度が高くなる。ただし、ニューラルネットワーク演算に使用する場合、ビット幅が長い量子化では、データ計算量が多くなり、メモリアクセスのオーバーヘッドが大きくなり、計算効率が低下する。同様に、同じデータを量子化する場合、異なる量子化パラメータを使用して得られた量子化データは、異なる量子化精度を持ち、異なる量子化結果を生成し、計算効率と計算結果の精度にも異なる影響を及ぼする。ニューラルネットワークは、計算効率と計算結果の精度のバランスをとるために量子化され、計算されるデータのデータ特性により一致する量子化後のデータビット幅と量子化パラメータを使用できる。
ニューラルネットワークで計算されるデータには、重み、ニューロン、オフセット、勾配が含まれる場合がある。ニューラルネットワークで計算されるデータの従来の量子化では、通常、ニューラルネットワーク全体に同じ量子化パラメータが設定される。たとえば、ニューラルネットワークには4つの畳み込み層と2つの完全に接続された層があり、計算されるデータはニューロン(通常は入力ニューロン)である。ニューラルネットワークの量子化用に量子化パラメータAのセットを設定し、量子化パラメータAを使用できる。4つの畳み込み層と2つの完全に接続された層のニューロンを量子化する。ニューラルネットワークの各層のニューロンが異なるため、各層で使用されるアルゴリズムも異なる。同じ量子化パラメータを使用して各層を量子化する。量子化パラメータは各層のニューロンの特性に適応できず、ニューラルネットワークの全体的な量子化精度が低く、計算結果の精度が低い。さらに、ニューラルネットワークの量子化パラメータのセットを設定する場合、計算結果の精度を考慮して量子化の精度を向上させると、ビット幅が長い量子化ビット幅のセットを設定すると、ニューラルネットワークの計算効率が低下する。したがって、従来のニューラルネットワーク量子化法では、量子化精度の向上と計算効率の向上の効果的なバランスをとることができない。
図2−1は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。ニューラルネットワークの量子化方法は、汎用プロセッサ(中央処理ユニットCPU、グラフィックス処理ユニットGPUなど)および特殊用途プロセッサ(人工知能プロセッサ、科学計算プロセッサ、デジタル信号プロセッサなど)に適用できる。ニューラルネットワーク量子化法によって適用されるプロセッサのタイプは制限されない。
図2−1に示すように、ニューラルネットワークで量子化予定の層の場合、ニューラルネットワークの量子化方法には次のものが含まれる。
ステップS10:量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも1つが含まれる。
ニューラルネットワークで量子化予定の層は、ニューラルネットワークの任意の層にすることができる。ニューラルネットワークの一部またはすべての層は、要件に応じて量子化する層として確定できる。ニューラルネットワークに量子化される複数の層が含まれる場合、量子化される各層は連続的または非連続的であり得る。ニューラルネットワークに応じて、量子化予定の層のタイプも異なり得る。例えば、量子化予定の層は、畳み込み層、完全に接続された層などであり得る。本開示は、量子化層の数およびタイプを制限しない。
可能な実装方法では、量子化予定のデータには、ニューロン、重み、オフセット、および勾配の少なくとも1つが含まれる。
量子化予定の層の操作を実行するためである操作データには、ニューロン、重み、オフセット、および勾配が含まれ得る。量子化予定の層のニューロン、重み、オフセット、および勾配のうちの少なくとも1つは、要件に従って量子化予定のデータとして使用され得る。量子化する層に量子化予定のデータの種類が複数ある場合、本開示の量子化法を、量子化予定のデータの種類ごとに使用して、量子化予定のデータの種類ごとに対応する量子化データを取得し、様々な量子化予定のデータを使用することができる。量子化する必要のない算術データは、量子化する層の算術を実行する。さらに、要件に応じて、量子化予定の層の様々な動作データの全部または一部を、量子化予定のデータとして確定することができ、これは、本開示に限定されない。
ニューラルネットワーク演算の推論段階は、トレーニングされたニューラルネットワークが設定されたタスクを完了するために順方向演算に供される段階を含み得る。ニューラルネットワークの推論段階では、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを、量子化予定のデータとして使用することができる。本開示の実施形態の方法に従って量子化を行った後、量子化予定のデータを使用して、量子化する層を完成させる。操作。
ニューラルネットワーク演算の微調整段階には、トレーニングされたニューラルネットワークでプリセット反復回数の順方向演算と逆方向演算を実行すること、および設定されたタスクの段階に適応するようにパラメータを微調整することが含まれる。ニューラルネットワーク演算の微調整段階において、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを、本開示の実施形態の方法に従って量子化することができ、次いで、量子化予定のデータを使用して、量子化予定の層の順方向を完成させる。操作または逆操作。
ニューラルネットワーク演算のトレーニングフェーズには、次のものが含まれる。トレーニングされたニューラルネットワークを取得するための初期化されたニューラルネットワークの反復トレーニング。トレーニングされたニューラルネットワークは特定のタスクを実行できる。ニューラルネットワークのトレーニング段階において、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを、本開示の実施形態の方法に従って量子化することができ、次いで、量子化後のデータを使用して、量子化予定の層の順方向演算を完了する。または逆の操作。
量子化予定の層に対応する量子化パラメータは、1つの量子化パラメータまたは複数の量子化パラメータであり得る。
量子化パラメータは、小数点位置など、量子化予定のデータを量子化するためであるパラメータを含み得る。小数点位置は、量子化後のデータ内の小数点位置を確定するために使用できる。量子化パラメータには、スケーリング係数、オフセットなどを含めることもできる。ニューラルネットワークが量子化される複数の層を含む場合、量子化される各層は、対応する量子化パラメータを有し得、量子化される各層に対応する量子化パラメータは、異なるかまたは同じであり得るが、これは本開示に限定されない。
量子化予定の層で量子化される異なるデータは、異なる量子化パラメータに対応することができる。例えば、量子化予定の層1のニューロンは、量子化パラメータ1に対応し得、そして量子化予定の層1の重みは、量子化パラメータ2に対応し得る。量子化する層において量子化予定のデータの種類ごとに対応する量子化パラメータを確定する方法は、プリセット量子化パラメータを検索して量子化パラメータを直接確定する方法、対応関係を検索して量子化パラメータを確定する方法、または量子化予定のデータに基づく計算を含み得る。パラメータを量子化する方法。
量子化する層で量子化予定のデータの種類ごとに対応する量子化パラメータを、ニューラルネットワークで量子化する層に設定することができる。設定された量子化パラメータは、設定されたストレージスペースに格納できる。設定されたストレージスペースは、オンチップまたはオフチップのストレージスペースにすることができる。たとえば、設定された量子化パラメータは、レイヤ識別子によって区別され、設定されたストレージスペースに格納される。量子化する各層を量子化する場合、設定した記憶域に対応する量子化パラメータを抽出した後、量子化を行うことができる。量子化予定のデータの種類ごとに対応する量子化パラメータは、経験値に応じて設定できる。量子化予定のデータの種類ごとに設定した量子化パラメータも要件に応じて更新できる。たとえば、次の層の量子化パラメータを前の層の量子化パラメータに従って更新できる。
量子化パラメータは、データ特性と量子化パラメータの対応を検索するか、量子化する各層で量子化予定のデータのデータ特性または量子化する層の層特性に応じて層特性と量子化パラメータの対応を検索することで確定できる。たとえば、量子化予定のデータのデータ分布がまばらで密である場合、それぞれ異なる量子化パラメータに対応する可能性がある。量子化予定のデータのデータ分布に対応する量子化パラメータは、対応関係を検索することによって確定することができる。別の例として、量子化予定の層が畳み込み層または完全に接続された層である場合、それは異なる量子化パラメータに対応することができ、量子化予定の層が畳み込み層である場合、畳み込み層に対応する量子化パラメータを検索することができる。
設定された量子化パラメータ計算方法を用いて、量子化される各層で量子化予定のデータによって、量子化される各層に対応する量子化パラメータを計算することも可能である。たとえば、丸めアルゴリズムを使用して、量子化予定のデータの最大絶対値とプリセットされたデータビット幅によって、量子化パラメータの小数点位置を計算できる。
ステップS20:対応する量子化パラメータに従って量子化予定のデータを量子化して、量子化後のデータを取得し、それにより、ニューラルネットワークは、量子化後のデータに従って操作を実行する。
設定された量子化アルゴリズムを使用して、量子化パラメータに従って量子化予定のデータを量子化し、量子化後のデータを取得することができる。たとえば、丸めアルゴリズムを量子化アルゴリズムとして使用でき、量子化後のデータをデータのビット幅と小数点位置によって丸めて量子化して、量子化後のデータを取得できる。それらの中で、丸めアルゴリズムは、切り上げ、切り下げ、ゼロへの丸め、および5への丸めを含み得る。この開示は、量子化アルゴリズムの特定の実装を制限するものではない。
ニューラルネットワークに量子化する層が複数ある場合、量子化する各層で各タイプの量子化予定のデータは、対応する量子化パラメータを使用して量子化できる。量子化予定のデータに対応する量子化パラメータは、量子化予定のデータの特性により適しているため、量子化される各層の各タイプの量子化予定のデータの量子化精度は、層の計算要件により一致する。この層の計算結果の精度を確保することを前提として、この層の計算効率を向上させ、この層の計算効率と計算結果の精度とのバランスをとることができる。ニューラルネットワーク全体で、量子化する各層の計算結果の精度と計算効率のバランスを実現し、ニューラルネットワークの計算結果の精度と計算効率のバランスも実現する。
ニューラルネットワークの推論、トレーニング、および微調整の過程で、目標データをオフラインまたはオンラインで量子化できる。ここで、オフライン量子化は、量子化パラメータを使用して、量子化予定のデータに対してオフライン処理を実行することである。オンライン量子化は、量子化パラメータを使用して量子化予定のデータのオンライン処理である。たとえば、ニューラルネットワークが人工知能チップ上で実行されている場合、量子化予定のデータと量子化パラメータを人工知能チップの外部のコンピューティング装置に送信してオフラインで量子化したり、人工知能チップ以外のコンピューティング装置を使用して事前に量子化予定のデータを分析したりできる。そしてオフライン量子化のための量子化パラメータ。ニューラルネットワークを実行する人工知能チップのプロセスでは、人工知能チップは、量子化パラメータを使用して、量子化後のデータのオンライン量子化を実行できる。ニューラルネットワークに量子化する複数の層が含まれている場合、量子化する各層をオンラインとオフラインでそれぞれ量子化できる。この開示は、量子化される各層の量子化プロセスがオンラインであるかオフラインであるかを制限するものではない。
この実施形態では、ニューラルネットワークで量子化予定の任意の層について、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータが確定され、量子化予定のデータは、ニューロン、重み、オフセットと勾配の少なくとも1つ。量子化予定のデータは、対応する量子化パラメータに従って量子化され、量子化後のデータを取得する。これにより、ニューラルネットワークは量子化後のデータに従って操作を実行する。各層で量子化予定のデータとより一致する量子化パラメータを使用して、量子化する各層を量子化する。これにより、各層の計算結果の精度を確保しながら、各層の計算効率を向上させることができる。ニューラルネットワークの全体的な計算結果の精度を確保することを前提として、ニューラルネットワークの全体的な計算効率を向上させることも可能である。
可能な実装方法では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも1つを含み、小数点位置は、量子化後の小数点位置であり、スケーリング係数は、量子化後のデータである。量子化予定のデータの最大値と最大絶対値の比率、およびオフセットは、量子化予定のデータの中間値である。
可能な実装では、量子化パラメータは小数点位置を含み得る。次の式(1)を使用して、量子化予定のデータを量子化し、量子化後のデータIxを取得できる。
Ix=round(Fx/2s) 式(1)
ここ、sは小数点位置、Ixは量子化予定のデータ、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。式(1)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用できるなど、他の丸め演算も使用できることは理解できる。一定のデータビット幅の場合、小数点位置による量子化により得られた量子化データにおいて、小数点以下の桁数が多いほど、量子化予定のデータの量子化精度が高くなることが理解できる。
可能な実装では、量子化パラメータはスケーリング係数を含み得る。次の式(2)を使用して、量子化予定のデータを量子化し、量子化後のデータIxを取得できる。
Ix=round(Fx/f) 式(2)
ここで、fはスケーリング係数、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(2)の切り上げの代わりに、切り上げ、切り下げ、ゼロへの切り上げなどの他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
可能な実装では、量子化パラメータはオフセットを含み得る。次の式(3)を使用して、量子化予定のデータを量子化し、量子化後のデータIxを取得できる。
Ix=round(Fx−o) 式(3)
ここで、oはオフセット、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。他の丸め演算も使用できることは理解できる。たとえば、式(3)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算が使用される。データビット幅が一定の場合、異なるオフセットを使用して、量子化後のデータの値と量子化前のデータとの間のオフセットを調整できることは理解できる。
可能な実装では、量子化パラメータは、小数点位置およびスケーリング係数を含み得る。次の式(4)を使用して、量子化予定のデータを量子化し、量子化後のデータIxを取得できる。
Ix=round(Fx/2sxf) 式(4)
ここで、sは小数点位置、fはスケーリング係数、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(4)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
可能な実装では、量子化パラメータは、小数点位置およびオフセットを含み得る。次の式(5)を使用して、量子化予定のデータを量子化し、量子化予定のデータIxを取得できる。
Ix=round((Fx−o)/2s) 式(5)
ここで、sは小数点位置、oはオフセット、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(5)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
可能な実装方法では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットを含み得る。次の式(6)を使用して、量子化予定のデータを量子化し、量子化後のデータIxを取得できる。
Ix=round((Fx−o)/2sxf) 式(6)
ここで、sは小数点位置、fはスケーリング係数、oはオフセット、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(6)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
この実施形態では、量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも1つを含む。量子化パラメータのさまざまな組み合わせを使用して、量子化予定のデータを量子化すると、さまざまな精度の量子化結果を生成できる。量子化パラメータは、要件に応じて柔軟に組み合わせて、必要に応じて使用できる。
図2−2は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。図2−2に示すように、ニューラルネットワークの量子化方法のステップS10には次のものが含まれる。
ステップS11:量子化予定のデータと量子化パラメータの間の対応関係を検索することにより、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。
可能な実装方法では、量子化される各層で各タイプの量子化予定のデータに対応する量子化パラメータは、格納されたプリセット値であり得る。ニューラルネットワークでは、量子化予定のデータと量子化パラメータの対応関係を確立できる。対応関係には、各タイプの量子化予定のデータと量子化する各層の量子化パラメータの対応関係を含めることができ、共有アクセスのために各層に対応関係を格納できる。収納スペース。量子化予定のデータとニューラルネットワークの量子化パラメータとの間に複数の対応を確立することも可能であり、量子化される各層は対応の1つに対応する。各層の対応関係は、この層専用のストレージスペースに格納することも、各層の対応関係を、各層が共有およびアクセスできるストレージスペースに格納することもできる。
量子化予定のデータと量子化パラメータとの間の対応は、量子化される複数のデータとそれに対応する複数の量子化パラメータとの間の対応を含み得る。例えば、量子化予定のデータと量子化パラメータとの間の対応関係Aは、量子化される2つのデータ、すなわち、量子化予定の層1のニューロンおよび重み、ならびにニューロンの対応する小数点位置1、スケーリング係数1、およびオフセット1の3つの量子化パラメータを含み得る。重みは、小数点位置2とオフセット2の2つの量子化パラメータに対応する。この開示は、量子化後のデータと量子化パラメータとの間の対応関係の特定のフォーマットを制限するものではない。
この実施形態では、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータは、量子化予定のデータと量子化パラメータとの間の対応を検索することによって確定することができる。対応する量子化パラメータは、量子化する層ごとに事前設定でき、対応する量子化パラメータは、量子化する層を検索した後に使用するために、対応関係を介して格納できる。この実施形態における量子化パラメータを取得する方法は、単純で便利である。
図2−3は、本開示の一実施形態によるニューラルネットワークの量子化方法のフローチャートを示している。図2−3に示すように、ニューラルネットワークの量子化方法のステップS10には次のものが含まれる。
ステップS12:各タイプの量子化予定のデータと対応するデータビット幅によって、対応する量子化パラメータを計算する。
対応するデータビット幅nは、量子化予定のデータごとに事前設定できる。各タイプの量子化予定のデータに対応する量子化パラメータは、データビット幅nおよび各タイプの量子化予定のデータによって計算することができる。量子化予定のデータによって計算される量子化パラメータは、量子化予定のデータの特性とより一致している。
ニューラルネットワークの推論、トレーニング、および微調整の過程で、量子化予定のデータは、ニューロン、重み、およびオフセットの少なくとも1つである可能性がある。トレーニングおよび微調整プロセスの場合、量子化予定のデータに勾配を含めることもできる。ニューラルネットワークの推論、トレーニング、および微調整のプロセスでは、量子化予定のデータおよびオンラインで取得される対応するデータビット幅によって、量子化予定のデータに対応する量子化パラメータを計算できる。
この実施形態では、対応する量子化パラメータは、各タイプの量子化予定のデータおよび対応するデータビット幅によって計算される。量子化されるオンラインデータに基づいて計算された量子化パラメータは、量子化層となるニューラルネットワークで量子化されるさまざまなデータの量子化要件をより適切に満たすことができる。
図2−4は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−4に示すように、ニューラルネットワークの量子化方法のステップS12には次のものが含まれる。
ステップS121:量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅によって目標データの小数点位置が取得され、目標データは任意である量子化予定のデータの一種。
可能な実装では、量子化パラメータは複数のパラメータを含み得る。量子化パラメータがオフセットを含まない場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも1つを含み得る。量子化パラメータにオフセットが含まれていない場合、量子化予定の任意のデータを目標データとして使用できる。目標データは、ニューロン、重み、オフセット、および勾配のいずれかである。
目標データには、複数の要素で構成されるデータが含まれる場合がある。目標データの各要素で最大値と最小値を求めることができ、最大値の絶対値と最小値の絶対値から目標データの絶対最大値を求めることができる。また、目標データの各要素の絶対値を求め、各要素の絶対値に応じて目標データの最大絶対値を求めることも可能である。
図2−5は、本開示の一実施形態によるニューラルネットワーク量子化法の量子化パラメータがオフセットを含まない場合の、量子化前後のデータ対応の概略図を示す。図2−5に示すように、Z1は目標データの絶対最大値、目標データに対応するデータビット幅nは8、Aはデータビット幅nで目標データを量子化した後に表現できる最大値、Aは2s(2n−1−1)である。AにはZ1を含める必要があり、Z1はA/2より大きいため、式(7)で制限できる。
2s(2n−1−1)>=Z1>2s−1(2n−1−1) 式(7)
目標データの小数点位置は、目標データの最大絶対値とデータビット幅に基づいて計算できる。たとえば、次の式(8)を使用して、量子化パラメータにオフセットが含まれていない場合に、目標データの小数点位置sを計算できる。
s=ceil(ln(Z1/(2n−1−1))) 式(8)
ここで、ceilは切り上げられ、Z1は目標データの最大絶対値、sは小数点位置、nは目標データに対応するデータビット幅である。
この実施形態では、量子化パラメータがオフセットを含まない場合、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。対応する小数点位置は、目標データに基づいて計算される。目標データは、目標データ自体の特性により一致している可能性があるため、目標データの量子化精度が高くなる。
図2−6は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−6に示すように、ニューラルネットワークの量子化方法のステップS12には次のものが含まれる。
ステップS122:量子化パラメータにオフセットが含まれていない場合、目標データと目標データに対応するデータビット幅によって、目標データの量子化後のデータの最大値を取得する。当該目標データは任意の一種の量子化予定のデータである
ステップS123:目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数を取得する。
目標データの最大絶対値については、前述の実施形態の関連する説明を参照されたい。
式(9)は、量子化パラメータにオフセットが含まれていない場合に、目標データのスケーリング係数fを計算するために使用できる。
f=z1/A 式(9)
ここ、Aは、量子化パラメータにオフセットが含まれていない場合の量子化後の目標データの最大値であり、式(10)を使用してAを計算できる。
A=(2^ceil(ln(Z1/(2n−1−1))))(2n−1−1) 式(10)
この実施形態では、量子化パラメータがオフセットを含まない場合、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データに対応するスケーリング係数を計算することができる。目標データに対応するスケーリング係数が計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
図2−7は、本開示の一実施形態によるニューラルネットワーク量子化法における量子化パラメータがオフセットを含む場合の、量子化前後のデータ対応の概略図を示す。図2−7に示すように、A1とA2は、目標データをnで量子化した後に表現できる最大値と最小値、Zminは目標データ内のすべての要素の最小値、Zmaxは目標データ内のすべての要素の最大値である。Z2=(Zmax―Zmin)/2の場合、目標データはオフセットoに従って変換され、量子化される。
図2−8は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−8に示すように、ニューラルネットワークの量子化方法のステップS12には次のものが含まれる。
ステップS124:量子化パラメータがオフセットを含む場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置を取得する。前記目標データは、任意の一種の量子化予定のデータである。
可能な実装方法では、量子化パラメータがオフセットを含む場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも1つをさらに含み得る。図2−7に示すように、量子化パラメータにオフセットが含まれている場合の目標データの小数点位置sは、式(11)に従って計算できる。
s=ceil(ln(Z2/(2n−1−1))) 式(11)
ここで、ceilは切り上げられ、sは小数点位置、nは目標データに対応するデータビット幅である。
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応する最大値、最小値、および目標データに対応するデータビット幅によって、目標データに対応する小数点位置を計算することができる。対応する小数点位置は、目標データに基づいて計算される。目標データは、目標データ自体の特性により一致している可能性があるため、目標データの量子化精度が高くなる。
図2−9は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−9に示すように、ニューラルネットワークの量子化方法のステップS12には次のものが含まれる。
ステップS125で、量子化パラメータにオフセットが含まれる場合、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得し、目標データは、任意の一種の量子化予定のデータである。
ステップS126dで、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数を取得する。
可能な実装方法では、量子化パラメータがオフセットを含む場合、量子化パラメータは、小数点位置およびスケーリング係数のうちの少なくとも1つをさらに含み得る。図2−7に示すように、量子化パラメータにオフセットが含まれている場合の目標データのスケーリング係数fは、式(12)に従って計算できる。
f=z2/A 式(12)
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応するスケーリング係数は、目標データの最大値、最小値、および目標データに対応するデータビット幅によって計算することができる。目標データに対応するスケーリング係数が計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
図2−10は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−10に示すように、ニューラルネットワークの量子化方法のステップS12には次のものが含まれる。
ステップS127:目標データの最大値と最小値に従って目標データのオフセットを取得する。目標データは、任意の一種の量子化予定のデータである。
可能な実装方法では、図2−7に示すように、量子化パラメータにオフセットが含まれている場合の目標データのオフセットoは、式(13)を使用して計算できる。
o=(Zmin+Zmax)/2 式(13)
この実施形態では、量子化パラメータがオフセットを含む場合、目標データに対応するオフセットは、目標データの最大値、最小値、および目標データに対応するデータビット幅によって計算することができる。目標データに対応するオフセットが計算される。これは、目標データ自体の特性とより一致する可能性があるため、目標データの量子化精度が高くなる。
図2−11は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−11に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS30:目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
目標データの量子化誤差は、目標データに対応する量子化データと目標データとの間の誤差によって確定することができる。標準偏差計算法、二乗平均平方根誤差計算法などの設定誤差計算法を使用して、目標データの量子化誤差を計算できる。
量子化パラメータに従って目標データに対応する量子化データを逆量子化して逆量子化データを取得し、逆量子化データと目標データ間の誤差に従って目標データの量子化誤差を確定することも可能である。
量子化間隔に関連する方法を計算することができ、例えば、目標データと目標データに対応する逆量子化データとの間の誤差は、式(21)によって計算することができる。
diffbit=ln(A*2−1*p/Σi|Fx|) 式(21)
ここ、pは目標データの要素数、sは目標データの小数点位置である。Aの値は、量子化パラメータに従って確定できる。量子化パラメータに小数点位置sが含まれる場合、A=2s、量子化パラメータに小数点位置sとスケーリング係数fが含まれる場合、A=2sxfである。
ステップS40:量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得する。
誤差しきい値は経験値に基づいて確定でき、誤差しきい値は量子化誤差の期待値を示すために使用できる。量子化誤差が誤差しきい値より大きいか小さい場合、ターゲット番号に対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得することができる。データビット幅をより長いビット幅またはより短いビット幅に調整して、量子化精度を増減させることができる。
誤差しきい値は、最大許容誤差に応じて確定できる。量子化誤差が誤差しきい値よりも大きい場合は、量子化精度が期待に応えられないことを示し、データビット幅をより長いビット幅に調整する必要がある。量子化精度が高いほど、誤差しきい値を小さくすることもできる。量子化誤差が誤差しきい値よりも小さい場合は、量子化精度が高くなり、ニューラルネットワークの運用効率に影響が出ます。データビット幅を適切に調整して短くすることができる。のビット幅は、量子化精度を適切に低下させ、ニューラルネットワークの運用効率を向上させるためのものである。
データビット幅は、固定ビット長に応じて調整できる。または、データビット幅は、量子化誤差と誤差しきい値の差に応じて、可変調整ステップ長さによって調整できる。この開示はこれを制限するものではない。
ステップS50では、目標データに対応するデータビット幅が調整ビット幅に更新され、対応する調整量子化パラメータが目標データおよび調整ビット幅に従って計算されるので、ニューラルネットワークは調整に従って調整することができる。量子化パラメータが量子化される。
調整ビット幅を確定した後、目標データに対応するデータビット幅を調整ビット幅に更新することができる。たとえば、更新前の目標データのデータビット幅が8ビットで、調整後のビット幅が12ビットの場合、更新後の目標データに対応するデータビット幅は12ビットである。目標データに対応する調整済み量子化パラメータは、調整ビット幅と目標データに基づいて計算できる。目標データは、目標データに対応する調整された量子化パラメータに従って再量子化され、より高いまたはより低い量子化精度で量子化後のデータを取得できるため、量子化予定の層は、量子化精度と処理効率のバランスを実現する。
ニューラルネットワークの推論、トレーニング、微調整の過程で、層間で量子化予定のデータには一定の相関関係があると見なすことができる。たとえば、各層で量子化予定のデータの平均値の差が設定された平均しきい値よりも小さく、各層で量子化予定のデータの最大値の差も設定された差のしきい値よりも小さい場合、量子化予定の層の調整された量子化パラメータは、量子化予定の層の1つ以上の後続の層で量子化予定のデータを量子化するために、1つ以上の後続の層の調整された量子化パラメータとして使用され得る。ニューラルネットワークのトレーニングおよび微調整プロセスでは、量子化予定の層のカレント反復で取得された調整済み量子化パラメータを使用して、後続の反復で量子化予定の層を量子化することもできる。
可能な実装方法では、この方法はさらに以下を含む。
量子化予定の層の量子化パラメータは、量子化予定の層の後の1つまたは複数の層で使用される。
ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。これには、量子化予定の層でのみ調整された量子化パラメータを使用して量子化予定のデータを再量子化し、量子化予定の層の操作で再取得された量子化後のデータを使用することが含まれる。また、調整された量子化パラメータを使用して、量子化予定の層で量子化予定のデータを再量子化しないこと、および調整された量子化パラメータを使用して、量子化予定の層の1つまたは複数の後続の層で量子化すること、および/または後続の反復で量子化予定の層でそれを使用することも含まれる。量子化の量子化パラメータを調整する。また、調整された量子化パラメータを使用して、量子化予定の層で再量子化すること、および取得された量子化データを量子化予定の層の操作で使用すること、および調整された量子化パラメータを使用して、量子化予定の層に続く1つまたは複数の層で量子化すること、および/または、後続の反復での量子化のために量子化予定の層で調整された量子化パラメータを使用する。この開示はこれを制限するものではない。
この実施形態では、目標データの量子化誤差は、目標データおよび目標データに対応する量子化データによって確定され、目標データは、量子化予定の任意の種類のデータであり、量子化誤差および誤差しきい値は、目標データに対応するデータビット幅に調整される。目標データに対応する調整ビット幅を取得する。目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算し、ニューラルネットワークが調整量子化パラメータに従って量子化を実行するようにする。目標データと量子化データ間の誤差に応じてデータビット幅を調整し、調整済みデータビット幅に応じて調整済み量子化パラメータを計算する。さまざまな誤差しきい値を設定することにより、さまざまな調整済み量子化パラメータを取得して、量子化精度の向上や操作効率の向上など、さまざまな量子化要件を実現できる。目標データおよび目標データの量子化データに従って計算された調整済み量子化パラメータも、目標データ自体のデータ特性とより一致し、目標データ自体のニーズにより一致する量子化結果を達成し、より優れた量子化精度と処理効率を実現できる。残高。
図2−12は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−12に示すように、ニューラルネットワークの量子化方法のステップS40には次のものが含まれる。
ステップS41:量子化誤差が第1の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
第1の誤差しきい値は、受け入れることができる最大量子化誤差によって確定することができる。量子化誤差は、第1の誤差しきい値と比較できる。量子化誤差が第1の誤差しきい値よりも大きい場合、量子化誤差はすでに許容できないと見なすことができる。量子化精度を向上させるために、目標データに対応するデータビット幅を増やすことにより、目標データの量子化精度を向上させることができる。
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を増やすことができる。固定調整ステップ長さサイズはNビットにすることができ、Nは正の整数である。データビット幅を調整するたびに、Nビットを増やすことができる。各増加後のデータビット幅=元のデータビット幅+Nビット。
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を大きくして、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第1しきい値より大きい場合、データビット幅は調整ステップ長さM1に従って調整でき、量子化誤差と誤差しきい値の差が第1しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さM2は、データビット幅を調整する。第1のしきい値は第2のしきい値よりも大きく、M1はM2よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
調整された量子化パラメータは、調整ビット幅に従って目標データを計算することによって取得できる。調整された量子化パラメータを使用して目標データを再量子化することによって得られる量子化データは、調整前に量子化パラメータを使用して得られる量子化データよりも高い量子化精度を持っている。
図2−13は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−13に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS42:調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
ステップS43:調整ビット幅と目標データに従って計算された調整済の量子誤差が第1の誤差しきい値以下になるまで、調整済の量子化誤差と第1の誤差しきい値に従って調整ビット幅を増やし続ける。誤差しきい値。
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を1回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第1の誤差しきい値よりも大きい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第1の誤差しきい値よりも大きい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回増やする。の調整済み量子化誤差は、第1の誤差しきい値よりも小さくなっている。
複数回増やす調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さにすることができる。たとえば、最終データビット幅=元のデータビット幅+A*Nビット。ここで、Nは各増加の固定調整ステップ長さであり、Aはデータビット幅が増加した回数である。最終データビット幅=元データビット幅+M1+M2+...+Mm、ここでM1、M2...Mmは、毎回増やす可変調整ステップ長さである。
この実施形態では、量子化誤差が第1の誤差しきい値よりも大きい場合、目標データに対応するデータビット幅を大きくして、目標データに対応する調整ビット幅を得る。第1の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を増やすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。1つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第1誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟に調整し、さまざまな量子化要件に対応できるため、独自のデータ特性に応じて量子化精度を適応的に調整できる。
図2−14は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−14に示すように、ニューラルネットワークの量子化方法のステップS40には次のものが含まれる。
ステップS44:量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を減らし、第2の誤差しきい値が第1の誤差しきい値よりも小さい。
第2の誤差しきい値は、許容可能な量子化誤差とニューラルネットワークの予想される動作効率に従って確定できる。量子化誤差は、第2の誤差しきい値と比較できる。量子化誤差が第2の誤差しきい値よりも小さい場合、量子化誤差は予想を超えていると見なすことができるが、動作効率が低すぎて許容できない。量子化精度を下げてニューラルネットワークの運用効率を向上させ、目標データに対応するデータビット幅を小さくすることで目標データの量子化精度を下げることができる。
調整ビット幅を取得するために、固定調整ステップ長さによって、目標データに対応するデータビット幅を減らすことができる。固定調整ステップ長さサイズはNビットにすることができ、Nは正の整数である。データビット幅を調整するたびに、Nビットを減らすことができる。増加したデータビット幅=元のデータビット幅−Nビット。
可変調整ステップ長さに応じて、目標データに対応するデータビット幅を縮小して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差しきい値の差が第1しきい値より大きい場合、データビット幅は調整ステップ長さM1に従って調整でき、量子化誤差と誤差しきい値の差が第1しきい値より小さい場合、データは以下に従って調整することができる。ステップ長さM2は、データビット幅を調整する。第1のしきい値は第2のしきい値よりも大きく、M1はM2よりも大きくなる。可変調整ステップ長さは、要件に応じて確定できる。この開示は、データビット幅の調整ステップ長さ、および調整ステップ長さが可変であるかどうかを制限しない。
調整ビット幅に応じて目標データを計算し、調整された量子化パラメータを取得できる。調整された量子化パラメータで目標データを再量子化した後に得られた量子化データは、調整前の量子化パラメータを使用して得られた量子化データよりも量子化精度が高くなる。低。
図2−15は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−15に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS45:調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
ステップS46:調整ビット幅と目標データに従って計算して得た調整済み量子化誤差が第2の誤差しきい値以上になるまで、調整済の量子化誤差と第2の誤差しきい値に従って調整ビット幅を減らし続ける。
量子化誤差に応じて目標データに対応するデータビット幅を増やす場合は、ビット幅を1回調整して調整ビット幅を取得し、調整ビット幅に応じて調整量子化パラメータを計算し、調整済み量子化パラメータに応じて目標データを量子化して調整済み量子化データを取得する。次に、調整済み量子化データと目標データに従って、目標データの調整済み量子化誤差を計算する。調整済み量子化誤差は、第2の誤差しきい値よりも小さい場合がある。つまり、調整済みデータのビット幅が調整目的を満たさない場合がある。調整済の量子化誤差がまだ第2の誤差しきい値よりも小さい場合は、調整後のデータビット幅を調整し続けることができる。つまり、最終的な調整ビット幅と目標データが取得されるまで、目標データに対応するデータビット幅を複数回減らする。の調整済み量子化誤差は、第2の誤差しきい値よりも大きくなっている。
複数回短縮される調整ステップ長さは、固定調整ステップ長さまたは可変調整ステップ長さであり得る。たとえば、最終データビット幅=元のデータビット幅−A*Nビット。ここで、Nは各増加の固定調整ステップ長さであり、Aはデータビット幅が増加した回数である。最終データビット幅=元のデータビット幅−M1−M2−...−Mm、ここでM1、M2...Mmは、毎回減少する可変調整ステップ長さである。
この実施形態では、量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅を縮小して、目標データに対応する調整ビット幅を得る。第2の誤差しきい値を設定し、ステップ長さを調整することでデータビット幅を減らすことができるため、調整後のデータビット幅は量子化要件を満たすことができる。1つの調整で調整要件を満たせない場合は、データビット幅を複数回調整できる。第2の誤差しきい値と調整ステップ長さの設定により、量子化要件に応じて量子化パラメータを柔軟かつ適応的に調整し、さまざまな量子化要件を満たすことができるため、量子化精度を調整でき、量子化精度とニューラルネットワークの運用効率のバランスが取れる。
可能な実装方法では、この方法はさらに以下を含む。
量子化誤差が第1の誤差しきい値より大きい場合、目標データに対応するデータビット幅が増加し、量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少して、目標データに対応する調整ビット幅。
2つの誤差しきい値を同時に設定することもできる。第1の誤差しきい値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数が増える可能性がある。第2の誤差しきい値は、量子化精度が高すぎることを示すために使用され、データビット幅を減らす可能性がある。桁。第1の誤差しきい値が第2の誤差しきい値よりも大きい目標データの量子化誤差を2つの誤差しきい値と同時に比較できる。量子化誤差が第1の誤差しきい値よりも大きい場合、データビット幅のビット数が増やす。量子化誤差が2番目よりも小さい場合誤差しきい値を使用する場合は、データビット幅のビット数を減らしてください。量子化誤差が第1の誤差しきい値と第2の誤差しきい値の間にある場合、データビット幅は変更されないままになる。
この実施形態では、量子化誤差を第1の誤差しきい値および第2の誤差しきい値と同時に比較することにより、比較結果に応じてデータビット幅を増減することができ、第1の誤差しきい値および第2の誤差しきい値を使用してより柔軟な調整を行うことができる。データビット幅。これにより、データビット幅の調整結果が量子化要件にさらに一致するようになる。
図2−16は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−16に示すように、ニューラルネットワーク演算の微調整フェーズおよび/またはトレーニングフェーズでは、この方法にはさらに次のものが含まれる。
ステップS60:カレント反復および履歴反復における目標データのデータ変動範囲を取得する。履歴反復は、カレント反復の前の反復である。
ニューラルネットワーク演算の微調整フェーズおよび/またはトレーニングフェーズには、複数の反復が含まれる。ニューラルネットワークで量子化される各層は、1回の順方向演算と1回の逆方向演算を実行し、量子化された層の重みを更新した後、1回の反復が完了する。複数の反復では、量子化予定の層の目標データおよび/または目標データに対応する量子化データを使用して、異なる反復の目標データおよび/または量子化予定のデータが同じ量子化パラメータを使用できるかどうかを測定できる。量子化。カレント反復および履歴反復における目標データのデータ変動範囲が小さい場合、たとえば、設定された範囲変更しきい値よりも小さい場合、同じ量子化パラメータを、より小さなデータ変動範囲で複数の反復で使用できる。
目標データに対応する量子化パラメータは、事前に格納された量子化パラメータを抽出することで確定できる。異なる反復で目標データを量子化する場合、各反復で目標データに対応する量子化パラメータを抽出する必要がある。複数の反復の目標データおよび/または目標データに対応する量子化データのデータ変動範囲が小さい場合、データ変動が小さい複数の反復で使用されたものと同じ量子化パラメータを一時的に格納でき、各反復が進行中である。量子化中に、一時的に格納された量子化パラメータを、各反復で量子化パラメータを抽出する代わりに、量子化操作に使用できる。
量子化パラメータは、目標データとデータビット幅によって計算することもできる。目標データが異なる反復で量子化される場合、量子化パラメータは各反復で個別に計算する必要がある。複数の反復の目標データおよび/または目標データに対応する量子化データのデータ変動が小さい場合、同じ量子化パラメータをデータの変動が小さい複数の反復で使用でき、各反復を直接使用できる。1番目の反復で計算された量子化パラメータは、各反復で計算されない。
目標データが重みの場合、各反復間の重みは常に更新されることは理解できる。複数の反復の重みのデータ変化が小さい場合、または複数の反復の重みが量子化予定のデータに対応する場合データ変更の範囲は小さく、同じ量子化パラメータを使用して、複数の反復で重みを量子化できる。
ステップS70:目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。目標反復間隔は、少なくとも1回の反復を含め、目標データは任意の一種の量子化予定のデータである。
目標反復間隔は、目標データのデータ変動範囲によって確定できる。目標反復間隔には、少なくとも1つの反復が含まれる。同じ量子化パラメータを、目標反復間隔内の各反復で使用できる。つまり、目標データは、目標反復間隔内の各反復で更新されない。量子化パラメータ。ニューラルネットワークは、目標反復間隔内の反復を含む、目標反復間隔によって目標データの量子化パラメータを更新し、プリセット量子化パラメータを取得したり、量子化パラメータを計算したりしない。つまり、目標反復間隔内の反復は、量子化パラメータを更新しない。目標反復間隔外の反復では、プリセット量子化パラメータが取得または計算される。つまり、量子化パラメータは、目標反復間隔外の反復で更新される。
目標データのデータ変動範囲または複数の反復間の目標データの量子化データが小さいほど、確定された目標反復間隔に含まれる反復が多くなることが理解できる。計算されたデータ変動範囲によって、プリセットデータ変動範囲と反復間隔との対応関係を検索し、計算されたデータ変動範囲に対応する目標反復間隔を確定することができる。データ変動範囲と反復間隔の間の対応関係は、要件に応じて事前設定できる。計算されたデータ変動範囲によって設定された計算方法を使用して、目標反復間隔を計算することもできる。本開示は、データ変動範囲の計算方法および目標反復間隔の取得方法を制限するものではない。
この実施形態では、ニューラルネットワーク動作の微調整段階および/またはトレーニング段階において、カレント反復および履歴反復における目標データのデータ変動範囲が得られ、目標データに対応する標的反復が、目標データのデータ変動範囲によって確定される。間隔。これにより、ニューラルネットワークは目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔は、複数反復の目標データまたは目標データに対応する量子化データのデータ変動範囲によって確定することができる。ニューラルネットワークは、目標反復間隔によって量子化パラメータを更新するかどうかを確定できる。目標反復間隔に含まれる複数の反復のデータ変動範囲が小さいため、量子化の精度を確保するために、目標反復間隔内の反復で量子化パラメータが更新されない。ただし、量子化パラメータは、目標反復間隔内の複数の反復に対して更新されないため、量子化パラメータの抽出または計算の数が減り、ニューラルネットワークの計算効率が向上する。
図2−17は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−17に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS80:カレント反復における目標データのデータビット幅によって、目標データの目標反復間隔における反復に対応するデータビット幅を確定し、ニューラルネットワークが目標データの目標反復間隔内の反復に対応するデータビット幅によって、量子化パラメータを決める。
本開示の前述の実施形態に記載されるように、目標データの量子化パラメータは、目標データに対応するデータビット幅によって事前設定または計算することができる。量子化される異なる層の目標データに対応するデータビット幅、または異なる反復で量子化される同じ層の目標データに対応するデータビット幅は、本開示の上記実施形態の方法に従って適応的に調整することができる。
目標データのデータビット幅が適応的に調整できず、プリセットデータビット幅である場合、目標反復間隔での目標データの反復に対応するデータビットは、カレント反復での目標データのプリセットデータビット幅によって確定できる。幅。目標反復間隔内の各反復は、独自のプリセット値を使用しない場合がある。
目標データのデータビット幅を適応的に調整できる場合、目標反復間隔内の目標データの反復に対応するデータビット幅は、カレント反復における目標データに対応するデータビット幅によって確定することができる。データビット幅を適応的に調整できる場合、データビット幅は1回調整することも、複数回調整することもできる。カレント反復での適応調整後の目標データのデータビット幅は、目標反復間隔内の各反復に対応するデータビット幅と見なすことができ、データビット幅は、目標反復間隔内の各反復に対して適応調整されなくなる(更新)。カレント反復における目標データは、適応調整後のデータビット幅、または適応調整前のデータビット幅を使用することができ、これは、本開示において限定されない。
目標反復間隔以外の反復では、目標データのデータ変動範囲が設定条件を満たさないため、本開示の上記の方法に従ってデータビット幅を適応的に調整して、カレント反復の目標データにより一致するデータビット幅を得ることができる。本開示における目標反復間隔の計算方法を使用して、新しい目標反復間隔を計算および使用することも可能であり、それにより、目標反復間隔外の反復の量子化精度を保証し、ニューラルネットワークの動作効率を改善する。
目標反復間隔内の各反復のデータビット幅は同じであり、各反復は、同じデータビット幅によって対応する量子化パラメータを計算できる。量子化パラメータは、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも1つを含み得る。量子化パラメータは、目標反復間隔内の各反復で同じデータビット幅によって個別に計算できる。量子化パラメータに小数点位置、スケーリング係数、およびオフセットが含まれる場合、目標反復間隔内の各反復は、同じデータビット幅を使用して、対応する小数点位置、スケーリング係数、およびオフセットを計算できる。
カレント反復のデータビット幅によって、目標反復間隔内の各反復のデータビット幅を確定する一方で、目標反復間隔内の各反復の対応する量子化パラメータは、カレント反復の量子化パラメータに従って確定することができる。目標反復間隔内の各反復の量子化パラメータは、同じデータビット幅に基づいて再度計算されることはない。これにより、ニューラルネットワークの計算効率をさらに向上させることができる。目標反復間隔内の各反復の対応する量子化パラメータは、カレント反復の量子化パラメータのすべてまたは一部に従って確定できる。カレント反復の部分量子化パラメータに従って、目標反復間隔内の各反復の対応する量子化パラメータを確定する場合、残りの量子化パラメータは、目標反復間隔内の各反復に対して計算する必要がある。
たとえば、量子化パラメータには、小数点位置、スケーリング係数、およびオフセットが含まれる。目標反復間隔内の各反復のデータビット幅と小数点位置は、カレント反復のデータビット幅と小数点位置によって確定できる。目標反復間隔内の各反復のスケーリング係数とオフセットは、同じデータビット幅に基づいて計算する必要がある。また、カレント反復のデータビット幅、小数点位置、スケーリング係数、およびオフセットに従って、目標反復間隔内の各反復のデータビット幅、小数点位置、スケーリング係数、およびオフセットを確定することもできる。各量子化パラメータを計算する必要はない。
この実施形態では、カレント反復における目標データに対応するデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定され、その結果、ニューラルネットワークは、目標反復間隔における目標データの反復に対応する。データビット幅が量子化パラメータを確定する。目標反復間隔内の各反復のデータビット幅は、カレント反復のデータビット幅によって確定される。目標反復間隔内の各反復の目標データのデータ変動範囲は設定された条件を満たすため、同じデータビット幅を使用して計算される。量子化パラメータは、目標反復間隔内の各反復の量子化精度を保証できる。目標反復間隔内の各反復は同じデータビット幅を使用する。これにより、ニューラルネットワークの計算効率も向上する。量子化後のニューラルネットワークの計算結果の精度とニューラルネットワークの計算効率のバランスが取れている。
図2−18は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−18に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS90:カレント反復に対応する目標データの小数点位置によって、目標反復間隔での目標データの反復に対応する小数点位置を確定する。
量子化パラメータでは、スケーリング係数とオフセットに比べて、異なる小数点位置が同じ目標データの量子化結果に大きな影響を与える。目標反復間隔内の反復に対応する小数点位置は、カレント反復の目標データに対応する小数点位置によって確定できる。データビット幅を適応的に調整できない場合は、カレント反復のプリセット小数点位置の目標データを、目標反復間隔の目標データの各反復に対応する小数点位置として設定するか、プリセット小数点位置によってカレント反復の目標データを設定できる。データビット幅から計算された小数点位置は、目標反復間隔内の目標データの各反復に対応する小数点位置として使用される。データビット幅を適応的に調整できる場合、カレント反復における目標データの調整された小数点位置を、目標反復間隔における目標データの各反復に対応する小数点位置として使用できる。
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の反復に対応する目標データの小数点位置を確定する一方で、目標データは、カレント反復に対応するスケーリング係数に従って確定することもできる。目標反復間隔内の目標データの反復に対応するスケーリング係数、および/または目標反復間隔内の目標データの反復に対応するオフセットは、カレント反復の目標データに対応するオフセットに従って確定される。シフト。
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の反復に対応する目標データの小数点位置を確定する一方で、カレント反復の目標データに対応するデータビット幅も確定することができる。目標反復間隔内の目標データの反復に対応するデータビット幅を確定する。ここで、カレント反復の目標データに対応するデータビット幅は、カレント反復でプリセットされたデータビット幅または適応調整後のデータである可能性がある。ビット幅。
この実施形態では、カレント反復に対応する目標データの小数点位置に従って、目標反復間隔内の反復に対応する目標データの小数点位置が確定される。目標反復間隔内の各反復の小数点位置は、カレント反復の小数点位置に応じて確定される。目標反復間隔内の各反復の目標データのデータ変動範囲は設定された条件を満たすため、同じ小数点位置を使用して目標反復を確保できる。間隔内の各反復の量子化精度。目標反復間隔内の各反復で同じ小数点位置を使用すると、ニューラルネットワークの計算効率も向上する。量子化後のニューラルネットワークの計算結果の精度とニューラルネットワークの計算効率のバランスが取れている。
図2−19は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−19に示すように、ニューラルネットワークの量子化方法のステップS60には次のものが含まれる。
ステップS61:目標データのカレント反復における小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置のスライディング平均値を計算する。
ステップS62:目標データのカレント反復における小数点位置の第1のスライディング平均値と、1つ前の反復間隔における対応する反復に対応する小数点位置の第2のスライディング平均値に従って、第1のデータ変動範囲を取得する。
ステップS70には以下が含まれる。
ステップS71:第1のデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。
可能な実装方法では、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は、目標反復間隔を計算するための履歴反復であり得る。カレント反復と対応する目標反復間隔の間の対応には、次のものが含まれる。
目標反復間隔はカレント反復からカウントでき、目標反復間隔は、カレント反復に対応する目標反復間隔が終了した後の次の反復で再計算できる。たとえば、カレント反復は100反復、目標反復間隔は3、目標反復間隔内の反復には、第100反復、第101反復、および第102反復が含まれる。第103反復は、第103反復に対応する目標反復間隔を計算できる。および103を新しい計算として使用して、目標反復間隔内で1番目の反復を取得する。このとき、カレント反復が第103反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は100反復である。
目標反復間隔は、カレント反復の次の反復からカウントでき、目標反復間隔は、目標反復間隔内の最後の反復から再計算できる。たとえば、カレント反復は100反復、目標反復間隔は3、目標反復間隔内の反復には、第101反復、第102反復、および第103反復が含まれる。第103反復は、第103反復に対応する目標反復間隔を計算できる。および104を新しい計算として使用して、目標反復間隔内で1番目の反復を取得する。このとき、カレント反復が第103反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は100反復である。
目標反復間隔は、カレント反復の次の反復からカウントでき、目標反復間隔は、目標反復間隔の終了後の次の反復で再計算できる。たとえば、カレント反復は100反復、目標反復間隔は3、目標反復間隔内の反復には、第101反復、第102反復、および第103反復が含まれる。第104反復に対応する目標反復間隔は、第104反復で計算できる。および105を新しい計算として使用して、目標反復間隔内の1番目の反復を取得する。このとき、カレント反復が第104反復の場合、履歴反復間隔によって確定されたカレント反復に対応する履歴反復は100反復である。
カレント反復と目標反復間隔との間の他の対応は、要件に従って確定することができる。例えば、目標反復間隔は、カレント反復後のN番目の反復から数えることができ、Nは1より大きいが、これは本開示に限定されない。
計算された目標データは、カレント反復の小数点位置での目標データの第1のスライディング平均値、および前の反復間隔の小数点位置での目標データを含む、各反復間隔の小数点位置のスライディング平均値に対応することは理解できる。位置の第2のスライディング平均値。式(24)を使用して、カレント反復の対応する小数点位置の第1のスライディング平均値m(t)を計算できる。
m(t)←αxs(t)+(1−α)m(t−1) 式(24)
ここで、tはカレント反復、t−1は前の反復間隔によって確定された履歴反復、m(t−1)は、前の反復間隔によって確定された履歴反復の第2のスライディング平均値s(t)はカレント反復の小数点位置であり、αは最初のパラメータである。最初のパラメータはハイパーパラメータである可能性がある。
この実施形態では、カレント反復における目標データの小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置に従って、各反復間隔に対応する目標データの小数点位置のスライディング平均値が計算される。カレント反復の小数点位置での目標データの第1のスライディング平均値、および前の反復間隔の反復に対応する小数点位置の第2のスライディング平均値に従って、第1のデータ変動範囲が取得される。第1のデータ変動範囲によって、目標データに対応する目標反復間隔が確定され、その結果、ニューラルネットワークは、目標反復間隔によって、目標データの量子化パラメータを更新する。第1のデータ変動範囲を使用して小数点位置の変化傾向を測定できるため、目標反復間隔は目標データ小数点位置の変化傾向に従うことができ、計算された目標反復間隔は目標データ小数点位置に基づくことができる。変化傾向は変化する。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
図2−20は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−20に示すように、ニューラルネットワークの量子化方法のステップS62には次のものが含まれる。
ステップS621:第1のスライディング平均値と第2のスライディング平均値の差を計算する。
ステップS622:第1のデータ変動範囲として差の絶対値を確定する。
第1のデータ変動範囲diffupdate1は、式(25)を使用して計算できる。
diffupdate1=|m(t)−m(t−1)|=α|s(t)−m(t−1) 式(25)
I=β/diffupdate1−γ 式(26)
ここで、βは第2パラメータであり、γは第3パラメータである。第2パラメータと第3パラメータはハイパーパラメータの場合がある。
第1のデータ変動範囲を使用して、小数点位置の変化傾向を測定できることは理解できる。第1のデータ変動範囲が大きいほど、量子化予定のデータの数値範囲の変化が大きくなる。量子化パラメータを更新する場合は、より短い目標反復間隔が必要である。私。
この実施形態では、第1のスライディング平均値と第2のスライディング平均値との間の差が計算され、差値の絶対値が第1のデータ変動範囲として確定される。スライディング平均値の差に応じて、正確な第1のデータ変動範囲を取得できる。
図2−21は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−21に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS63:カレント反復において目標データと目標データに対応する量子化データに従って、第2のデータ変動範囲を取得する。
ステップS70には以下が含まれる。
ステップS72で、目標データの第1のデータ変動範囲と第2のデータ変動範囲によって、目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにする。
第2のデータ変動範囲は、カレント反復における目標データと目標データに対応する量子化データに従って取得できる。カレント反復における目標データおよび目標データに対応する逆量子化データによって、第2のデータ変動範囲を取得することも可能である。
同様に、目標データとカレント反復の目標データに対応する逆量子化データとの間の第2のデータ変動振幅diffbitは、式(23)に従って計算できる。他の誤差計算方法を使用して、目標データと逆量子化データの間の第2のデータ変動範囲diffbitを計算することもできる。この開示はこれを制限するものではない。
diffbit=ln((Σi|Zi (n)|−Σi|Zi|)/Σi|Zi|+1)式(23)
ここで、ziは目標データであり、Zi (n)は目標データに対応する逆量子化データである。第2のデータ変動範囲を使用して、目標データに対応するデータビット幅の変化傾向を測定できることは理解できる.第2のデータ変動範囲が大きいほど、目標データが対応するデータビット幅を更新する必要があり、必要な間隔が短くなる。第2のデータが更新される場合、第2のデータの変更が大きいほど、必要な目標反復間隔は短くなる。
この実施形態では、第2のデータ変動範囲は、カレント反復における目標データおよび目標データに対応する量子化後のデータに従って得られる。目標データの第1のデータ変動範囲と第2のデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。パラメータ。第2のデータ変動範囲は、データビット幅の変更要求を測定するために使用でき、1番目のデータ変動範囲と第2のデータ変動範囲によって計算された目標反復間隔は、小数点位置とデータビット幅の変更を同時に追跡でき、ターゲット反復を追跡できる。間隔は、目標データ自体のデータ量子化要件にさらに一致させることもできる。
図2−22は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−22に示すように、ニューラルネットワークの量子化方法のステップS63には次のものが含まれる。
ステップS631:目標データとカレント反復の目標データに対応する量子化データとの間の誤差を計算する。
ステップS632:誤差の2乗を第2のデータ変動範囲として確定する。
第2のデータ変動範囲diffupdate2は、式(27)を使用して計算できる。
diffupdate2=δ*diff2 bit 式(27)
ここで、δは第4パラメータであり、第4パラメータはハイパーパラメータである可能性がある。
異なるデータビット幅を使用することにより、異なる量子化予定のデータを取得し、異なる第2のデータ変動範囲を生成することにより、異なる量子化パラメータを取得できることは理解できる。第2のデータ変動範囲は、データビット幅の変化傾向を測定するために使用できる.第2のデータ変動範囲が大きいほど、データビット幅をより頻繁に更新するために必要な目標反復間隔は短くなる。つまり、目標反復間隔を小さくする必要がある。
図2−23は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−23に示すように、ステップS72には次のものが含まれる。
ステップS721:第1のデータ変動範囲と第2のデータ変動範囲うちの最大値に従って、目標データに対応する目標反復間隔を確定する。
目標反復間隔は、式(28)に従って計算できる。
I=β/max(diffupdate1,diffupdate2)−γ 式(28)
ここで、βは第2パラメータであり、γは第3パラメータである。第2パラメータと第3パラメータはハイパーパラメータの場合がある。
第1のデータ変動範囲と第2のデータ変動範囲を使用して得られる目標反復間隔は、データビット幅と小数点位置の変化傾向を同時に測定できることは理解できる。2つのうちの一方の変化傾向が大きい場合、次に、それに応じて目標反復間隔を変更できる。目標反復間隔は、データビット幅と小数点位置の変化を同時に追跡し、対応する調整を行うことができる。目標反復間隔によって更新される量子化パラメータは、目標データの変化傾向により一致する可能性があり、最終的に、量子化パラメータに従って取得される量子化予定のデータは、量子化要件により一致する可能性がある。
図2−24は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−24に示すように、ニューラルネットワークの量子化方法のステップS60には次のものが含まれる。
ステップS64:カレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、更新周期には少なくとも1つの反復が含まれる。
ニューラルネットワーク演算のトレーニングプロセスおよび/または微調整プロセスでは、トレーニングまたは微調整の開始時に、目標データが複数の反復で大きく変化する。トレーニングまたは微調整の開始時に目標反復間隔が複数の反復で計算される場合、計算された目標反復間隔はその有用性を失う可能性がある。プリセット更新周期に従って、更新周期内の各反復について、目標反復間隔は計算されず、目標反復間隔は適用されないため、複数の反復が同じデータビット幅または小数点位置を使用する。
反復が更新周期を超えて進行する場合、つまりカレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲を取得し、目標データのデータ変動範囲によって目標データに対応する目標データを確定する。ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するように、目標反復間隔。たとえば、プリセット更新周期が100反復の場合、目標反復間隔は第1反復から第100反復まで計算されない。反復が第101反復に進む場合、つまりカレント反復が第101反復の場合、カレント反復は更新サイクルの範囲外である。このとき、第101反復および第1反復から第100反復の目標データのデータ変動範囲を使用して、第101反復の目標データに対応する目標反復間隔、および計算された目標反復間隔は、第101反復、または第101間隔でプリセット反復回数で使用される。
更新サイクルは、プリセット反復番号からカウントすることができ、例えば、更新サイクルの複数の反復を第1反復からカウントすることができ、または更新サイクルの複数の反復を第N反復からカウントすることができるが、これは本開示に限定されない。
この実施形態では、目標反復間隔が計算され、反復が更新周期を超えて進行するときに使用される。ニューラルネットワーク運用のトレーニングプロセスや微調整プロセスの初期段階で目標データが大きく変動するため、目標反復間隔があまり重要ではないという問題を回避できる。目標反復間隔を使用すると、ニューラルネットワークのパフォーマンスをさらに向上させることができる。運用効率。
図2−25は、本開示の一実施形態によるニューラルネットワークの量子化方法を示すフローチャートである。図2−25に示すように、ニューラルネットワークの量子化方法にはさらに次のものが含まれる。
ステップS100は、カレント反復がプリセット周期内にあるとき、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって周期間隔を確定する。
ステップS110:カレント反復において目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定する。またはカレント反復において目標データに対応する小数点位置によって、周期間隔内の反復における目標データの小数点位置を確定する。
ニューラルネットワーク演算のトレーニングプロセスまたは微調整プロセスには、複数のサイクルを含めることができる。各サイクルには、複数の反復を含めることができる。ニューラルネットワークの計算に使用されるデータは、1サイクルに1回完全に計算される。トレーニングプロセスでは、反復が進むにつれて、ニューラルネットワークの重みが変化傾向がある。トレーニングが安定すると、量子化後のデータを待機するニューロン、重み、オフセット、および勾配が安定する傾向がある。目標データが安定した後、目標データのデータビット幅と量子化パラメータも安定する。同様に、微調整プロセスでは、微調整が安定した後、目標データのデータビット幅と量子化パラメータも安定する傾向がある。
したがって、プリセット周期は、安定したトレーニングまたは安定した微調整の周期に応じて確定できる。トレーニングが安定した周期または微調整が安定した周期の後の周期を、プリセット周期として確定することができる。たとえば、安定したトレーニング周期はM番目の周期であり、M番目の周期の後の周期をプリセット周期として使用できる。プリセット周期では、間隔ごとに目標反復間隔を計算でき、計算した目標反復間隔によってデータビット幅または量子化パラメータを1回調整することで、データビット幅または量子化パラメータの更新時間を短縮し、ニューラルネットワークのパフォーマンスを向上させることができる。運用効率。
たとえば、プリセット周期はM番目の周期の後の周期である。M+1番目のサイクルでは、M番目のサイクルのP番目の反復に従って計算された目標反復間隔は、M+1番目のサイクルのQ番目の反復で終了する。M+1番目のサイクルのQm+1番目の反復に従って、対応する目標反復間隔Im+1が計算される。M+2番目のサイクルでは、M+1番目のサイクルのQm+1番目の反復に対応する反復は、QM+第2の反復である。M+1番目のサイクルのQm+1番目の反復から、M+2番目のサイクルのQm+2+Im+1番目の反復まで、これは周期的な間隔である。周期間隔内の各反復では、M+1周期のQm+1反復によって確定されるデータビット幅や小数点位置などの量子化パラメータが使用される。
この実施形態では、周期間隔を設定することができる。ニューラルネットワーク動作のトレーニングまたは微調整が安定した後、データビット幅または小数点位置などの量子化パラメータは、周期間隔に従って周期ごとに更新される。周期間隔は、トレーニングが安定した後、または微調整が安定した後のデータビット幅または小数点位置の更新時間を短縮し、量子化の精度を確保しながら、ニューラルネットワークの運用効率を向上させることができる。
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
なお、図2−1〜2−6のフローチャートのステップは、矢印のように順番に表示されているが、必ずしも矢印の順序で実行されているとは限らない。この記事で特に明記されていない限り、これらのステップの実行は順序に厳密に制限されておらず、これらのステップは他の順序で実行できる。さらに、図2−1から2−6のステップの少なくとも一部には、複数のサブステップまたは複数のステージを含めることができる。これらのサブステップまたはステージは、必ずしも同時に実行されるとは限らないが、異なる時間に実行できる。これらのサブステップまたはステージの実行順序は、必ずしも順番に実行されるとは限らないが、他のステップまたは他のステップのサブステップまたはステージの少なくとも一部と交互にまたは交互に実行され得る。
図2−26は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図2−26に示すように、本開示は、ニューラルネットワークの量子化装置を提供し、装置は、ニューラルネットワークで量子化予定の任意の層を量子化するために使用され、装置は、以下を含む。
量子化パラメータ確定モジュール10は、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを含む。
量子化モジュール20は、対応する量子化パラメータに従って量子化予定のデータを量子化して量子化予定のデータを取得するように構成され、その結果、ニューラルネットワークは、量子化予定のデータによって動作を実行する。
可能な実装方法では、量子化パラメータには、小数点位置、スケーリング係数、およびオフセットの少なくとも1つが含まれる。
小数点位置は、量子化後の小数点位置である。
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
オフセットは、量子化予定のデータの中間値である。
図2−27は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図2−27に示すように、量子化パラメータ確定モジュール10には次のものが含まれる。
第1の量子化パラメータ確定サブモジュール11は、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって、量子化予定の層において各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。
可能な実施方法において、量子化パラメータ確定モジュール10は、以下を含む。
第2の量子化パラメータ確定サブモジュール12は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
可能な実施方法において、第2の量子化パラメータ確定サブモジュール12は、以下を含む。
第1の小数点位置計算ユニット121は、量子化パラメータがオフセットを含まない場合に、目標データの最大絶対値および目標データに対応するデータビット幅によって、目標データの小数点位置を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。
可能な実施方法において、第2の量子化パラメータ確定サブモジュール12は、以下を含む。
第1のスケーリング係数計算ユニット122は、量子化パラメータがオフセットを含まない場合の目標データおよび目標データに対応するデータビット幅、およびターゲットに従って、目標データの量子化後の最大値を取得するように構成される。データは、任意の一種の量子化予定のデータである。目標データのスケーリング係数は、目標データの最大絶対値と目標データの量子化データの最大値に従って取得される。
可能な実施方法において、第2の量子化パラメータ確定サブモジュール12は、以下を含む。
第2の小数点位置計算ユニット123は、量子化パラメータがオフセットを含む場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、次のように構成される。目標データの小数点位置が取得され、目標データは任意の一種の量子化予定のデータである。
可能な実施方法において、第2の量子化パラメータ確定サブモジュール12は、以下を含む。
第2のスケーリング係数計算ユニット124は、量子化パラメータがオフセットを含む場合、目標データおよび目標データに対応するデータビット幅、ならびに目標データに従って、目標データの量子化後の最大値を取得するように構成される。量子化予定のデータは任意である。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
可能な実施方法において、第2の量子化パラメータ確定サブモジュール12は、以下を含む。
オフセット計算ユニット125は、目標データの最大値および最小値に従って目標データのオフセットを取得するように構成され、目標データは、量子化予定の任意の種類のデータである。
図2−28は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図2−28に示すように、可能な実装方法では、装置にはさらに次のものが含まれる。
量子化誤差確定モジュール30は、目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成され、目標データは、量子化予定の任意の種類のデータである。
調整ビット幅確定モジュール40は、量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される。
調整量子化パラメータ確定モジュール50は、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データおよび調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ニューラルネットワークは、調整された量子化パラメータに従って量子化を実行する。
可能な実施方法において、調整ビット幅確定モジュール40は、以下を含む。
第1の調整ビット幅確定サブモジュール41は、量子化誤差が第1の誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
可能な実施方法において、調整ビット幅確定モジュール40はさらに以下を含む。
第1の調整量子化誤差確定サブモジュール42は、調整ビット幅および目標データに従って目標データの調整済の量子化誤差を計算するように構成される。
第1の調整ビット幅循環確定サブモジュール43は、調整ビット幅および目標データに従って計算される調整まで、調整済の量子化誤差および第1の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。後続の量子化誤差は、第1の誤差しきい値以下である。
可能な実施方法において、調整ビット幅確定モジュール40は、以下を含む。
第2の調整ビット幅確定サブモジュール44は、量子化誤差が第2の誤差しきい値未満であり、第2の誤差しきい値が第1の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
可能な実施方法において、調整ビット幅確定モジュール40はさらに以下を含む。
第2の調整量子化誤差確定サブモジュール45は、調整ビット幅および目標データに従って目標データの調整済の量子化誤差を計算するように構成される。
第2の調整ビット幅周期的確定サブモジュール46は、調整が調整ビット幅および目標データに従って計算されるまで、調整済の量子化誤差および第2の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。後続の量子化誤差は、第2の誤差しきい値以上である。
図2−29は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図2−29に示すように、可能な実装方法では、ニューラルネットワーク演算の微調整フェーズおよび/またはトレーニングフェーズで、装置にはさらに次のものが含まれる。
データ変動範囲確定モジュール60は、カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成される。ここで、履歴反復は、カレント反復の前の反復である。
目標反復間隔確定モジュール70は、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも1つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
可能な実装方法では、装置はさらに以下を含む。
第1の目標反復間隔適用モジュール80は、カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅を確定するように構成される。ニューラルネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって量子化パラメータを確定する。
可能な実装方法では、装置はさらに以下を含む。
第2の目標反復間隔適用モジュール90は、カレント反復に対応する目標データの小数点位置に従って、目標反復間隔における目標データの反復に対応する小数点位置を確定するように構成される。
可能な実施方法において、データ変動範囲確定モジュール60は、以下を含む。
スライディング平均値計算サブモジュール61は、カレント反復における目標データの小数点位置および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置に従って、各反復間隔に対応する目標データの小数点位置を計算するためである。のスライディング平均値
第1のデータ変動範囲確定サブモジュール62は、カレント反復の小数点位置での目標データの第1のスライド平均値および1つ前の反復間隔の反復に対応する小数点位置の第2のスライド平均値によって、第1のデータ変動範囲を取得するように構成される。
目標反復間隔確定モジュール70は、以下を含む。
第1の目標反復間隔確定サブモジュール71は、第1のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データ間隔を更新する。量子化パラメータ。
可能な実装方法では、サブモジュール62を確定する第1のデータ変動範囲は、以下を含む。
第1のデータ変動範囲確定ユニット621は、第1のスライディング平均値と第2のスライディング平均値との間の差を計算するように構成される;第1のデータ変動範囲として差の絶対値を確定する。
可能な実施方法において、データ変動範囲確定モジュール60はさらに以下を含む。
第2のデータ変動範囲確定サブモジュール63は、目標データおよびカレント反復における目標データに対応する量子化データに従って第2のデータ変動範囲を取得するように構成される。
目標反復間隔確定モジュール70は、以下を含む。
第2の目標反復間隔確定サブモジュール72は、目標データの第1のデータ変動範囲および第2のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成されるので、ニューラルネットワークはに基づく。目標反復間隔は、目標データの量子化パラメータを更新する。
可能な実施方法において、第2のデータ変動範囲確定モジュール63は、以下を含む。
第2のデータ変動範囲確定ユニット631は、目標データとカレント反復における目標データに対応する量子化データとの間の誤差を計算するように構成され、誤差の二乗を第2のデータ変動範囲として確定する。
可能な実施方法において、第2の目標反復間隔確定サブモジュール72は、第1のデータ変動範囲および第2のデータ変動範囲の最大値に従って目標データの対応する値を確定するように構成される。目標反復間隔。
可能な実施方法において、データ変動範囲確定モジュール60は、以下を含む。
第3のデータ変動範囲確定サブモジュール64は、カレント反復が更新周期外であり、更新周期が少なくとも1回の反復を含む場合に、カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成される。
図2−30は、本開示の一実施形態によるニューラルネットワークの量子化装置の概略図を示す。図2−30に示すように、可能な実装方法では、装置にはさらに次のものが含まれる。
周期間隔確定モジュール100は、カレント反復、プリセットサイクルの次のサイクルにおけるカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって、カレント反復がプリセットサイクル内にあるときを確定するように構成される。定期的な間隔。
第1の周期間隔適用モジュール110は、カレント反復における目標データに対応するデータビット幅によって、周期間隔内の反復における目標データのデータビット幅を確定するように構成される。
第2の周期間隔適用モジュール120は、カレント反復に対応する目標データの小数点位置に従って、周期間隔内の反復における目標データの小数点位置を確定するように構成される。
可能な実装方法では、装置はさらに以下を含む。
量子化パラメータ継承モジュール130は、量子化予定の層の後に1つまたは複数の層で量子化予定の層の量子化パラメータを採用するように構成される。
前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット/モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。
個別のコンポーネントとして説明されているユニットまたはモジュールは、物理的に分離されている場合とされていない場合がある。ユニットまたはモジュールとして記述されるコンポーネントは、物理ユニットである場合と物理ユニットではない場合がある。つまり、1つの装置に配置されている場合と、複数の装置に分散されている場合がある。本開示における実施形態の解決策は、実際の必要性に従ってユニットのいくつかまたはすべてを選択することによって実施することができる。
さらに、特に明記しない限り、本開示の様々な実施形態における機能ユニット/モジュールは、1つのユニット/モジュールに統合され得るか、または各ユニット/モジュールが物理的に単独で存在し得るか、または2つ以上のユニット/モジュールが存在し得る。モジュールは一緒に統合されている。上記の統合ユニット/モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。
統合ユニット/モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。特に指定のない限り、人工知能プロセッサは、CPU、GPU、FPGA、DSP、ASICなどの適切なハードウェアプロセッサである。特に指定のない限り、記憶ユニットは、RRAM(Resistive Random AccessMemory)、Dynamic Random AccessMemory(DRAM)などの適切な磁気ストレージメディアまたは磁気光学ストレージメディアのいずれかである。SRAM(静的ランダムアクセスメモリ)、拡張動的ランダムアクセスメモリ(EDRAM)、高帯域幅メモリ(HBM)、ハイブリッドメモリキューブ(HMC)など。待つ。
統合されたユニット/モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る)に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Uディスク、読み取り専用メモリ(ROM、読み取り専用メモリ)、ランダムアクセスメモリ(RAM、ランダムアクセスメモリ)、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
可能な実施において、本開示はまた、前述のデータ同期装置を含む人工知能チップを開示する。
可能な実施方法において、本開示はまた、記憶装置、インターフェース装置、制御装置、および前述の人工知能チップを含むボードカードを開示する。ここで、人工知能チップおよび記憶装置は、制御装置とインターフェース装置はそれぞれ接続されており、記憶装置はデータを格納するために使用され、インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現するために使用され、制御装置は人工知能チップの状態を監視する。
図2−31は、本開示の一実施形態によるボードカードの構造ブロック図を示す。図2−31を参照すると、ボードカードは、上記のチップ389に加えて他の支持構成要素を含み得る。支持構成要素は、記憶装置390、インターフェース装置391および制御装置392を含むが、これらに限定されない。
記憶装置390は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット393の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはDDRSDRAM(英語:Double Data Rate SDRAM、ダブルレート同期動的ランダムアクセスメモリ)である可能性があることが理解できる。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍にすることができる。DDRを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。DDRの速度は標準のSDRAMの2倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの4つのグループを含み得る。記憶ユニットの各グループには、複数のDDR4粒子(チップ)を含めることができる。一実施形態では、人工知能チップは、4つの72ビットDDR4コントローラを含み得る。72ビットDDR4コントローラでは、64ビットがデータ伝送に使用され、8ビットがECC検証に使用される。記憶ユニットの各グループでDDR4−3200粒子を使用すると、データ伝送の理論上の帯域幅が25600MB/秒に達する可能性があることが理解できる。
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。DDRは、1クロックサイクルで2回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、DDRを制御するためのコントローラがチップに提供されている。
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置(サーバーやコンピュータなど)との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のPCIEインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のPCIEインターフェイスを介してサーバーからチップに伝送される。送信にPCIE3.0X16インターフェイスを使用する場合、理論上の帯域幅は16000MB/sに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置(サーバーなど)に送信される。
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、SPIインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ(Micro Controller Unit、MCU)を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理、および/または複数の処理回路の動作状態の調整を実現することができる。
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および/または医療機器。
輸送手段には飛行機、船および/または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴が含まれる。B−超音波および/または心電計。
上記は、次の条項に従ってよりよく理解できる。
B1、ニューラルネットワークの量子化方法。ニューラルネットワークで量子化予定の層の場合、この方法には次のものが含まれる。
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを含む。
量子化予定のデータは、対応する量子化パラメータに従って量子化されて量子化後のデータを取得するため、ニューラルネットワークは量子化後のデータに従って操作を実行する。
B2、量子化パラメータが、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも1つを含む、B1項に記載の方法。
小数点位置は、量子化後の小数点位置である。
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
オフセットは、量子化予定のデータの中間値である。
B3、B1項またはB2項に記載の方法で、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する方法には、以下が含まれる。
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータは、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって確定される。
B4、B1項またはB2項による方法で、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定する方法には、以下が含まれる。
対応する量子化パラメータは、各タイプの量子化予定のデータと対応するデータビット幅によって計算される。
B5、第B4項による方法は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算することを述べた。
量子化パラメータにオフセットが含まれていない場合、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置が求められ、目標データは任意の種類である。量子化予定のデータ。
B6、第B4項による方法は、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算することを述べ、以下を含む。
量子化パラメータにオフセットが含まれていない場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
目標データの最大絶対値と目標データの量子化データの最大値に従って、目標データのスケーリング係数が取得される。
B7、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、B4項に記載の方法。
量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅によって、目標データの小数点位置が取得される。目標データは、任意の一種の量子化予定のデータである。
B8、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、B4項に記載の方法。
量子化パラメータにオフセットが含まれている場合は、目標データと目標データに対応するデータビット幅に応じて、目標データの量子化後の最大値を取得する。目標データは、任意の一種の量子化予定のデータである。
目標データのスケーリング係数は、目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って取得される。
B9、各タイプの量子化予定のデータおよび対応するデータビット幅に応じた対応する量子化パラメータの計算には、以下が含まれる、B4項に記載の方法。
目標データの最大値と最小値に応じて、目標データのオフセットが取得され、目標データは任意の一種の量子化予定のデータである。
B10、B1項からB9項のいずれか1つに記載の方法で、以下をさらに含む方法。
目標データおよび目標データに対応する量子化データに従って、目標データの量子化誤差を確定する。ここで、目標データは、量子化予定の任意の種類のデータである。
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整し、目標データに対応する調整ビット幅を取得する。
目標データに対応するデータビット幅が調整ビット幅に更新され、目標データと調整ビット幅に応じて対応する調整量子化パラメータが計算されるため、ニューラルネットワークは調整量子化パラメータに従って処理を実行する。量子化。
B11、目標データに対応する調整ビット幅を得るために、量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整する、条項B10に記載の方法は、以下を含む。
量子化誤差が第1の誤差しきい値より大きい場合、目標データに対応するデータビット幅を増やして、目標データに対応する調整ビット幅を取得する。
B12、B11項に基づく方法であり、以下をさらに含む方法。
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
調整ビット幅と目標データに従って計算された調整済の量子誤差が第1の誤差しきい値以下になるまで、調整済の量子化誤差と第1の誤差しきい値に従って調整ビット幅を増やし続ける。
B13、量子化誤差および誤差しきい値に従って、目標データに対応するデータビット幅を調整することを含む、B10項またはB11項に記載の方法。
量子化誤差が第2の誤差しきい値よりも小さい場合、目標データに対応するデータビット幅が減少し、第2の誤差しきい値が1番目の誤差しきい値よりも小さくなる。
B14、B13項に基づく方法であり、以下をさらに含む方法。
調整ビット幅と目標データに従って、目標データの調整済み量子化誤差を計算する。
調整ビット幅と目標データに従って計算された調整済の量子誤差が第2の誤差しきい値以上になるまで、調整済の量子化誤差と第2の誤差しきい値に従って調整ビット幅を減らし続ける。
B15、ニューラルネットワーク演算の微調整段階および/またはトレーニング段階におけるB1項からB14項のいずれか1つに記載の方法には、さらに以下が含まれる。
カレント反復および履歴反復における目標データのデータ変動範囲を取得する。ここで、履歴反復はカレント反復の前の反復である。
目標データのデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新し、目標反復間隔には少なくとも1つが含まれる。反復になるが、目標データは任意の一種の量子化予定のデータである。
B16、B15項に基づく方法であり、以下をさらに含む方法。
カレント反復における目標データのデータビット幅によって、目標反復間隔における目標データの反復に対応するデータビット幅が確定されるため、ニューラルネットワークはターゲット内の目標データに基づいている。反復間隔内の反復に対応するデータビット幅によって、量子化パラメータが決まる。
B17、B15項に基づく方法であり、以下をさらに含む方法。
カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の目標データの反復に対応する小数点位置を確定する。
B18、B15項で説明されている方法によると、カレント反復および履歴反復での目標データのデータ変動範囲の取得には次のものが含まれる。
カレント反復における目標データの小数点位置、および履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置のスライディング平均値を計算する。
カレント反復の小数点位置での目標データの最初のスライド平均値と、前の反復間隔の反復に対応する小数点位置の2番目のスライド平均値に従って、第1のデータ変動範囲を取得する。
目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにすることには、以下が含まれる。
ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するように、第1のデータ変動範囲によって目標データに対応する目標反復間隔を確定する。
B19、B18項に基づく方法で、目標データのカレント反復の小数点位置の第1のスライディング平均値と、前の反復間隔での対応する反復の小数点位置の第2のスライディング平均値を使用して、第1のデータ変動範囲を取得するのは、以下を含む:
第1のスライディング平均値と第2のスライディング平均値の差を計算する。
差の絶対値は、第1のデータ変動範囲として確定される。
B20、B18項に基づく方法で、さらに以下を含む。
カレント反復における目標データおよび目標データに対応する量子化データに従って、第2のデータ変動範囲を取得する。
目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定し、ニューラルネットワークが目標反復間隔によって目標データの量子化パラメータを更新するようにすることには、以下が含まれる。
目標データの第1のデータ変動範囲と第2のデータ変動範囲によって、目標データに対応する目標反復間隔を確定する。これにより、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。パラメータ。
B21、B20項に記載されている方法によれば、カレント反復における目標データおよび目標データに対応する量子化データに従って第2のデータ変動範囲を取得するには、次のものが含まれる。
目標データと、カレント反復における目標データに対応する量子化データとの間の誤差を計算する。
誤差の2乗は、第2のデータ変動範囲として確定される。
B22、目標データの第1のデータ変動範囲および第2のデータ変動範囲によって目標データに対応する目標反復間隔を確定することは、以下を含む、条項B20に記載の方法。
第1のデータ変動範囲と第2のデータ変動範囲の最大値に従って、目標データに対応する目標反復間隔を確定する。
B23、B15項からB22項のいずれか1つに記載の方法で、カレント反復および履歴反復における目標データのデータ変動範囲の取得には次のものが含まれる。
カレント反復が更新周期外の場合、カレント反復および履歴反復における目標データのデータ変動範囲が取得され、更新周期には少なくとも1つの反復が含まれる。
B24、B15項からB23項のいずれかに記載の方法であり、以下をさらに含む方法。
カレント反復がプリセット周期内にある場合、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復に対応する反復間隔によって周期間隔を確定する。
カレント反復の目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定する。または
カレント反復に対応する目標データの小数点位置によって、周期間隔内の反復における目標データの小数点位置を確定する。
B25、B1項からB24項のいずれか1つに記載の方法であり、以下をさらに含む方法。
量子化予定の層の量子化パラメータは、量子化予定の層の後の1つまたは複数の層で使用される。
B26、ニューラルネットワークの量子化装置。ニューラルネットワークで量子化予定の任意の層を量子化するためである装置であり、以下を含む装置。
量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される量子化パラメータ確定モジュール。ここで、量子化予定のデータは、ニューロン、重み、オフセット、および勾配のうちの少なくとも1つを含む。
量子化モジュールは、対応する量子化パラメータに従って量子化予定のデータを量子化するために使用され、量子化後のデータを取得し、ニューラルネットワークが量子化後のデータに従って操作を実行するようにする。
B27、量子化パラメータが、小数点位置、スケーリング係数、およびオフセットのうちの少なくとも1つを含む、B26項に記載の装置。
小数点位置は、量子化後の小数点位置である。
スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値の比率である。
オフセットは、量子化予定のデータの中間値である。
B28、量子化パラメータ確定モジュールが以下を含む、条項B25またはB27に記載の装置。
第1の量子化パラメータ確定サブモジュールは、量子化予定のデータと量子化パラメータとの間の対応関係を検索することによって、量子化予定の層で各タイプの量子化予定のデータに対応する量子化パラメータを確定するように構成される。
B29、量子化パラメータ確定モジュールが以下を含む、条項B26またはB27に記載の装置。
第2の量子化パラメータ確定サブモジュールは、各タイプの量子化予定のデータおよび対応するデータビット幅によって、対応する量子化パラメータを計算するように構成される。
B30、第2の量子化パラメータ確定サブモジュールが以下を含む、B29項に記載の装置。
第1小数点位置計算単位は、量子化パラメータにオフセットが含まれていない場合に、目標データの最大絶対値と目標データに対応するデータビット幅に応じて目標データの小数点位置を取得するためである。目標データは、任意の一種の量子化予定のデータである。
B31、第2の量子化パラメータ確定サブモジュールが以下を含む、B29項に記載の装置。
第1のスケーリング係数計算ユニットは、量子化パラメータがオフセット、目標データを含まない場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化後の最大値を取得するように構成される。任意の一種の量子化予定のデータであり、目標データの最大絶対値と目標データの量子化後の最大値に応じて、目標データのスケーリング係数が取得される。
B32、第2の量子化パラメータ確定サブモジュールが以下を含む、B29項に記載の装置。
第2小数点位置計算ユニットは、量子化パラメータにオフセットが含まれる場合、目標データの最大値、目標データの最小値、および目標データに対応するデータビット幅に応じて取得するように構成される。目標データの小数点位置、目標データは、任意の一種の量子化予定のデータである。
B33、第2の量子化パラメータ確定サブモジュールが以下を含む、B29項に記載の装置。
第2のスケーリング係数計算ユニットは、量子化パラメータがオフセットを含み、目標データがである場合に、目標データおよび目標データに対応するデータビット幅によって、目標データの量子化データの最大値を取得するように構成される。目標データは、任意の一種の量子化予定のデータである。目標データの最大値、目標データの最小値、および目標データの量子化後の最大値に従って、目標データのスケーリング係数が取得される。
B34、第2の量子化パラメータ確定サブモジュールが以下を含む、B29項に記載の装置。
オフセット計算ユニットは、目標データの最大値と最小値に応じて目標データのオフセットを取得するように構成されており、目標データは、任意の一種の量子化予定のデータである。
B35、条項B26からB34のいずれか1つに記載の装置であって、さらに以下を含む装置。
目標データおよび目標データに対応する量子化データに従って目標データの量子化誤差を確定するように構成される量子化誤差確定モジュール。ここで、目標データは、量子化予定の任意の種類のデータである。
量子化誤差および誤差しきい値に従って目標データに対応するデータビット幅を調整して、目標データに対応する調整ビット幅を取得するように構成される調整ビット幅確定モジュール。
調整量子化パラメータ確定モジュールは、目標データに対応するデータビット幅を調整ビット幅に更新し、目標データと調整ビット幅に従って対応する調整量子化パラメータを計算するように構成される。ネットワークは、調整された量子化パラメータに従って量子化を実行する。
B36、調整ビット幅確定モジュールが以下を含む、B35項に記載の装置。
第1調整ビット幅確定サブモジュールは、量子化誤差が第1誤差しきい値より大きい場合に目標データに対応するデータビット幅を増加させて、目標データに対応する調整ビット幅を取得するように構成される。
B37、調整ビット幅確定モジュールがさらに以下を含む、B36項に記載の装置。
第1の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
第1の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第1の誤差しきい値に従って調整ビット幅を増加し続けるように構成される。の量子化誤差は、第1の誤差しきい値以下である。
B38、調整ビット幅確定モジュールが以下を含む、B35項またはB36項に記載の装置。
第2の調整ビット幅確定サブモジュールは、量子化誤差が第2の誤差しきい値未満であり、第2の誤差しきい値が第1の誤差しきい値未満である場合に、目標データに対応するデータビット幅を減少させるように構成される。
B39、調整ビット幅確定モジュールがさらに以下を含む、条項B38に記載の装置。
第2の調整済み量子化誤差確定サブモジュールは、調整ビット幅と目標データに従って目標データの調整済み量子化誤差を計算するように構成される。
第2の調整ビット幅循環確定サブモジュールは、調整ビット幅および目標データに従って調整ビット幅が計算されるまで、調整済の量子化誤差および第2の誤差しきい値に従って調整ビット幅を減少し続けるように構成される。の量子化誤差は、第2の誤差しきい値以上である。
B40、ニューラルネットワーク演算の微調整段階および/またはトレーニング段階において、B26項からB39項のいずれか1つに記載の装置は、さらに以下を含む。
カレント反復および履歴反復における目標データのデータ変動範囲を取得するように構成されるデータ変動範囲確定モジュール。履歴反復は、カレント反復の前の反復である。
目標反復間隔確定モジュールは、目標データのデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化パラメータを更新する。目標反復間隔には少なくとも1つの反復が含まれ、目標データは量子化予定の任意のタイプのデータである。
B41、条項B40による装置であって、さらに以下を含む装置。
第1の目標反復間隔適用モジュールは、カレント反復での目標データのデータビット幅によって、目標反復間隔での目標データの反復に対応するデータビット幅を確定するように構成される。ネットワークは、目標反復間隔内の目標データの反復に対応するデータビット幅によって、量子化パラメータを確定する。
B42、条項B40による装置であって、さらに以下を含む装置。
第2の目標反復間隔適用モジュールは、カレント反復に対応する目標データの小数点位置によって、目標反復間隔内の目標データの反復に対応する小数点位置を確定するように構成される。
B43、データ変動範囲確定モジュールが以下を含む、B40項に記載の装置。
スライディング平均値計算サブモジュールは、カレント反復における目標データの小数点位置と、履歴反復間隔によって確定されたカレント反復に対応する履歴反復の小数点位置によって、各反復間隔に対応する目標データの小数点位置を計算するためである。
第1のデータ変動範囲確定サブモジュールは、カレント反復の小数点位置での目標データの最初のスライド平均値と、前の反復間隔の反復に対応する小数点位置の2番目のスライド平均値を取得するためである。
目標反復間隔確定モジュールには、次のものが含まれる。
第1の目標反復間隔確定サブモジュールは、第1のデータ変動範囲によって目標データに対応する目標反復間隔を確定するように構成され、その結果、ニューラルネットワークは、目標反復間隔によって目標データの量子化を更新する。
B44、第1のデータ変動範囲確定サブモジュールが以下を含む、B43項に記載の装置。
第1のデータ変動範囲確定ユニットは、第1のスライディング平均値と第2のスライディング平均値との間の差を計算するように構成され、第1のデータ変動範囲として差の絶対値を確定する。
B45、データ変動範囲確定モジュールが以下を含む、条項B43に記載の装置。
第2のデータ変動範囲確定サブモジュールは、目標データおよびカレント反復における目標データに対応する量子化データに従って第2のデータ変動範囲を取得するように構成される。
目標反復間隔確定モジュールには、次のものが含まれる。
第2の目標反復間隔確定サブモジュールは、目標データの第1のデータ変動範囲と第2のデータ変動範囲によって、目標データに対応する目標反復間隔を確定するためである。目標反復間隔は、目標データの量子化パラメータを更新する。
B46、B45項で説明されている装置によると、サブモジュールを確定する第2のデータ変動範囲には次のものが含まれる。
第2のデータ変動範囲確定ユニットは、目標データとカレント反復における目標データに対応する量子化データとの間の誤差を計算するように構成され、誤差の二乗を第2のデータ変動範囲として確定する。
B47、第2の目標反復間隔確定サブモジュールが、第1のデータ変動範囲および第2のデータ変動範囲の最大値に従って目標データの対応する値を確定するように構成される、条項B45に記載の装置。
B48、データ変動範囲確定モジュールが含む、条項B40からB47のいずれか1つに記載の装置。
3番目のデータ変動範囲確定サブモジュールは、カレント反復と、カレント反復が更新周期外であり、更新周期に少なくとも1つの反復が含まれる場合の履歴反復における、目標データのデータ変動範囲を取得するためである。
B49、条項B40からB48のいずれか1つに記載の装置であって、さらに以下を含む装置。
周期間隔確定モジュールは、カレント反復、プリセット周期の次の周期のカレント反復に対応する反復、およびカレント反復がプリセット周期内にある場合のカレント反復に対応する反復間隔によって周期を確定するためである。
第1の周期間隔適用モジュールは、カレント反復の目標データに対応するデータビット幅によって、周期間隔内の反復の目標データのデータビット幅を確定するように構成される。
第2の周期間隔適用モジュールは、カレント反復の目標データに対応する小数点位置によって、周期間隔内の反復の目標データの小数点位置を確定するように構成される。
B50、B26項からB49項のいずれか1つに記載の装置であり、さらに以下を含む装置。
量子化パラメータ継承モジュールは、量子化予定の層の後に1つまたは複数の層で量子化予定の層の量子化パラメータを採用するように構成される。
B51、人工知能チップ。B26〜B50項のいずれか1つに記載のニューラルネットワークの量子化装置を含むチップ。
B52、B51項に記載されている人工知能チップを含む電子機器。
B53、ボードカード。ボードカードは、記憶装置、インターフェース装置、制御装置、およびB51項に記載されている人工知能チップを含む。
ここで、人工知能チップは、それぞれ、記憶装置、制御装置、およびインターフェース装置に接続されている。
記憶装置は、データを格納するためである。
インターフェイス装置は、人工知能チップと外部装置間のデータ伝送を実装するためである。
制御装置は、人工知能チップの状態を監視するためである。
記憶装置が以下を含む、請求項B53に記載のボードカード。複数の記憶ユニットのグループ、記憶ユニットの各グループは、バスを介して人工知能チップに接続され、記憶ユニットは、以下である。
チップには次のものが含まれる。各記憶ユニットのデータ伝送とデータストレージを制御するためのDDRコントローラ。
インターフェイス装置は、標準のPCIEインターフェイスである。
本開示の実施形態は上に記載されており、上記の説明は例示的であり、網羅的ではなく、開示された実施形態に限定されない。図示された実施形態の範囲および精神から逸脱することなく、多くの修正および変更は、当技術分野の通常の技術者にとって明らかである。本明細書で使用される用語の選択は、各実施形態の市場における技術の原理、実際の適用、または改善を最もよく説明すること、または他の通常の当業者が本明細書に開示される様々な実施形態を理解できるようにすることを意図する。
ニューラルネットワークの量子化の問題を解決するために提案されたソリューション(201910505239.7)は上記のとおりである。
量子化パラメータ調整の問題を解決するために、以下の技術案(201910528537.8)を提案しました。具体的には、量子化パラメータの調整方法、装置および関連製品が提案されている。
本開示は、コンピュータ技術の分野、特に、ニューラルネットワークの量子化パラメータの調整方法、装置、および関連製品に関する。
人工知能技術の継続的な発展に伴い、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理の分野で広く適用されている。ただし、人工知能アルゴリズムの複雑さが増やすにつれて、処理されるデータのデータ量とデータ次元は絶えず増加している。データ量の増加は、コンピューティング装置のデータ処理効率、記憶装置のストレージ容量、およびメモリアクセスに影響を与える。効率などは、より大きな課題を提示する。
上記の技術的問題を解決するために、従来の技術は、固定ビット幅を使用してニューラルネットワークの動作データを量子化する、すなわち、浮動小数点動作データを固定点動作データに変換して、ニューラルネットワークの動作データの圧縮を実現する。ただし、ニューラルネットワークの操作データによって大きな違いが生じる場合がある。従来の量子化手法では、ニューラルネットワーク全体で同じ量子化パラメータ(小数点位置など)を使用して量子化するため、精度が低下し、データ操作結果に影響を与えることがよくある。
これを考慮して、本開示は、ニューラルネットワークの量子化精度を改善し、計算結果の正確性および信頼性を保証することができる、ニューラルネットワーク量子化パラメータの調整方法、装置および関連製品を提案する。
本開示は、ニューラルネットワークの量子化パラメータの調整方法を提供し、その方法は以下を含む。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
本開示はまた、メモリおよびプロセッサを含むニューラルネットワークの量子化パラメータ調整装置を提供し、メモリはコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行するとき、それは上記の方法のいずれかを実施する。ステップ。具体的には、プロセッサが上記のコンピュータプログラムを実行すると、次の操作が実行される。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
本開示はまた、コンピュータプログラムが格納されるコンピュータ可読記憶媒体を提供し、コンピュータプログラムが実行されるとき、それは、上記の方法のいずれか1つのステップを実現する。具体的には、上記のコンピュータプログラムを実行すると、以下の操作が実行される。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
本開示はまた、ニューラルネットワークの量子化パラメータ調整装置を提供し、その装置は以下を含む。
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも1回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
本開示に開示されるニューラルネットワークの量子化パラメータの調整方法、装置および関連製品は、量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するので、目標反復間隔は、目標反復間隔によって調整され得る。ニューラルネットワークの量子化パラメータ。これにより、さまざまな動作段階でのニューラルネットワークの量子化パラメータを、量子化予定のデータのデータ分布特性に従って確定できる。同じニューラルネットワークの様々な計算データに対して同じ量子化パラメータを使用する従来の技術と比較して、本開示の方法および装置は、ニューラルネットワーク量子化プロセスの精度を改善し、それによって計算結果の精度および精度を保証することができる。信頼性。さらに、目標反復間隔を確定することにより、量子化効率を向上させることができる。
本開示に含まれる図面は本明細書に含まれ、本明細書とともに本明細書の一部を構成する図面は、本開示の例示的な実施形態、特徴、および態様を示し、本開示の原理を説明するためである。
本開示の一実施形態による、量子化パラメータの調整方法の適用環境の概略図を示す。
図3−2は、本開示の一実施形態による、量子化予定のデータと量子化後のデータとの間の対応の概略図を示す。
図3−3は、本開示の実施形態に従って量子化予定のデータの変換の概略図を示す。
図3−4は、本開示の一実施形態による、量子化パラメータの調整方法のフローチャート。
図3ー5は、本開示の一実施形態の計算プロセスにおいて量子化予定のデータの変化傾向図を示す。
図3−6は、本開示の一実施形態のパラメータ調整法における目標反復間隔の確定方法のフローチャート。
図3−7は、本開示の一実施形態における小数点位置の変動範囲の確定方法のフローチャート。
図3−8は、本開示の一実施形態における第2の平均値の確定方法のフローチャート。
図3−9は、本開示の一実施形態におけるデータビット幅の調整方法のフローチャート。
図3−10は、本開示の別の実施形態におけるデータビット幅の調整方法のフローチャート。
図3−11は、本開示の別の実施形態におけるデータビット幅の調整方法のフローチャート。
図3−12は、本開示のさらに別の実施形態におけるデータビット幅の調整方法のフローチャート。
図3−13は、本開示の別の実施形態における第2の平均値の確定方法のフローチャート。
図3−14は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
図3−15は、本開示の一実施形態の量子化パラメータの調整方法における量子化パラメータの調整のフローチャートを示す。
図3−16は、本開示の別の実施形態のパラメータ調整方法における目標反復間隔の確定方法のフローチャート。
図3−17は、本開示の別の実施形態による、パラメータ調整方法における目標反復間隔の確定方法のフローチャート。
図3−18は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
図3−19は、本開示の別の実施形態による、量子化パラメータの調整方法のフローチャート。
図3−20は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
図3−21は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
図3−22は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
図3−23は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
図3−24は、本開示の一実施形態による、量子化パラメータ調整装置の構造ブロック図を示す。
図3ー25は、本開示の一実施形態によるボードカードの構造ブロック図を示している。
量子化パラメータ調整の問題を解決するために、以下の技術案(201910528537.8)を提案しました。本開示の実施形態における技術案は、本開示の実施形態における添付の図面を参照して明確かつ完全に説明される。明らかに、記載された実施形態は、本開示の実施形態の一部であるが、すべての実施形態ではない。本開示の実施形態に基づいて、創造的な作業なしに当業者によって得られた他のすべての実施形態は、本開示の保護範囲に含まれる。
本開示の特許請求の範囲、説明および図面における「第1の」および「第2の」という用語は、特定の順序を説明するのではなく、異なる対象を区別するためであることを理解されたい。本開示の明細書および特許請求の範囲で使用される「含む」および「含む」という用語は、記載された特徴、全体、ステップ、操作、要素および/または構成要素の存在を示すが、1つまたは複数の他の特徴、全体を除外しない。ステップ、操作、要素、コンポーネント、および/またはそれらのコレクションの存在または追加。
この開示明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、開示を限定することを意図するものではないことも理解されたい。本開示および特許請求の範囲で使用されるように、文脈が他の状況を明確に示さない限り、単数形「一」、「1つ」および「当該」は、複数形を含むことを意図している。本開示の明細書および特許請求の範囲で使用される「および/または」という用語は、関連してリストされた1つまたは複数の項目の任意の組み合わせおよびすべての可能な組み合わせを指し、これらの組み合わせを含むことをさらに理解されたい。
人工知能アルゴリズムの複雑さが増やすにつれて、処理されるデータのデータ量とデータ次元も増やす。従来のニューラルネットワークアルゴリズムは通常、浮動小数点データフォーマットを使用してニューラルネットワーク演算を実行する。データの量は、コンピューティング装置のデータ処理効率、ストレージ容量、および記憶装置のメモリアクセス効率に大きな課題をもたらする。上記の問題を解決するために、ニューラルネットワークの計算プロセスに関連する計算データを量子化することができる。つまり、浮動小数点で表される計算データを固定点で表される計算データに変換することで、記憶装置のストレージ容量とメモリアクセス効率を低下させ、計算装置を改善する。計算効率。ただし、従来の量子化方法では、同じデータビット幅と量子化パラメータ(小数点位置など)を使用して、ニューラルネットワークのトレーニングプロセス全体でニューラルネットワークのさまざまな操作データを量子化する。操作データが異なるため、または、トレーニングプロセスの各段階での操作データが異なるため、上記の量子化方法を量子化に使用すると、精度が不十分になり、操作結果に影響を与えることがよくある。
これに基づいて、本開示は、メモリ110およびプロセッサ120を含む量子化パラメータ調整装置に適用することができるニューラルネットワーク量子化パラメータの調整方法を提供する。図3−1は、量子化パラメータ調整装置100の構造ブロック図であり、量子化パラメータ調整装置100のプロセッサ120は、汎用プロセッサであり得、量子化パラメータ調整装置100のプロセッサ120はまた、人工知能プロセッサであり得る。量子化パラメータ調整装置100のプロセッサはまた、ここで特に限定されない、汎用プロセッサおよび人工知能プロセッサを含み得る。記憶110は、ニューラルネットワーク演算プロセスにおいて操作データを格納するために使用され得、操作データは、ニューロンデータ、重みデータ、または勾配データのうちの1つ以上であり得る。メモリ110はまた、コンピュータプログラムを格納するために使用され得る。コンピュータプログラムが前述のプロセッサ120によって実行されるとき、本開示の実施形態における量子化パラメータの調整方法を実施することができる。この方法は、ニューラルネットワークのトレーニングまたは微調整プロセスに適用でき、ニューラルネットワークのトレーニングまたは微調整プロセスのさまざまな段階でコンピューティングデータの分布特性に従ってコンピューティングデータの量子化パラメータを動的に調整し、それによってニューラルネットワークの量子化プロセスを改善することができる。精度。これにより、計算結果の精度と信頼性が保証される。
特に指定のない限り、人工知能プロセッサは、CPU、GPU、FPGA、DSP、ASICなどの適切なハードウェアプロセッサである。特に指定のない限り、メモリは、RRAM(抵抗ランダムアクセスメモリ)、動的ランダムアクセスメモリ(DRAM)、静的など、任意の適切な磁気記憶媒体または磁気光学記憶媒体であり得る。SRAM(静的ランダムアクセスメモリ)、拡張動的ランダムアクセスメモリ(EDRAM)、高帯域幅メモリ(HBM)、またはハイブリッドメモリキューブ(HMC)など。
本開示の内容をよりよく理解するために、以下は、最初に、本開示の実施形態における量子化プロセスおよび量子化プロセスに含まれる量子化パラメータを紹介する。
本開示の実施形態において、量子化は、第1のデータフォーマットの動作データを第2のデータフォーマットの動作データに変換することを指す。ここで、第1のデータフォーマットの算術データは浮動小数点算術データであり得るし、第2のデータフォーマットの算術データは固定点算術データであり得る。浮動小数点で表される計算データは、通常、大きな記憶域を占めるため、浮動小数点で表される計算データを固定点で表される計算データに変換することにより、記憶域を節約し、計算データの記憶効率と計算効率を向上させることができる。
任意選択で、量子化プロセスの量子化パラメータは、小数点位置および/またはスケーリング係数を含み得、ここで、小数点位置は、量子化された操作データにおける小数点位置を指す。スケーリング係数は、量子化後のデータの最大値と量子化予定のデータの最大絶対値との間の比率を指する。さらに、量子化パラメータは、オフセットを含み得る。オフセットは、量子化される非対称データ用であり、量子化予定のデータ内の複数の要素の中間値を指す。具体的には、オフセットは、量子化予定のデータであり得る。データ内の複数の要素の中間値。量子化予定のデータが対称的な量子化予定のデータである場合、量子化パラメータにオフセットを含めない場合がある。この場合、量子化予定のデータに応じて、小数点位置やスケーリング係数などの量子化パラメータを確定できる。
図3−2に示すように、量子化予定のデータは原点に対して対称なデータであり、量子化予定のデータの要素の最大絶対値をZ1とすると、量子化予定のデータに対応するデータビット幅はn、Aは使用するデータビットである。幅nは、量子化予定のデータを量子化した後に量子化予定のデータで表すことができる最大値である。Aは2s(2n−1−1)であり、AにはZ1を含める必要があり、Z1はA/2より大きくなければならない。式(1)には次のような制約がある。
2s(2n−1−1)>=Z1>2s−1(2n−1−1) 式(1)
プロセッサは、量子化予定のデータの最大絶対値Z1とデータビット幅nに従って、小数点位置sを計算できる。たとえば、次の式(2)を使用して、量子化予定のデータに対応する小数点位置を計算できる。
s=ceil(ln(Z1/(2n−1−1))) 式(2)
ここで、ceilは切り上げられ、Z1は量子化予定のデータの最大絶対値、sは小数点位置、nはデータビット幅である。
このとき、小数点位置sを使用して量子化予定のデータを量子化すると、量子化予定のデータの浮動小数点表現Fxは次のように表すことができる。Fx≒Ix×2sここで、Ixは量子化されたnビットのバイナリ表現の値を指する。sは小数点位置を示する。ここで、量子化予定のデータに対応する量子化後のデータは次のとおりである。
Ix=round(Fx/2s) 式(3)
ここ、sは小数点位置、Ixは量子化予定のデータ、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。小数点位置他の丸め演算も使用できることは理解できる。たとえば、式(3)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算が使用される。小数点位置一定のデータビット幅の場合、小数点位置による量子化により得られた量子化データにおいて、小数点以下の桁数が多いほど、量子化予定のデータの量子化精度が高くなることが理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round(Fx/2s)x2s 式(4)
ここ、sは上記式(2)で求めた小数点位置、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化することによって得られたデータであり、中間表現データFx1のデータ表現形式は、量子化される前述のデータFxのデータ表現形式と一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
オプションで、スケーリング係数に第1のスケーリング係数を含めることができ、第1のスケーリング係数は次のように計算できる。
f1=Z1/A=Z1/2s(2n−1−1) 式(5)
ここで、Z1は量子化予定のデータの最大絶対値、Aはデータビット幅nで量子化予定のデータの量子化予定のデータで表すことができる最大値、Aは2s(2n−1−1)である。
このとき、プロセッサは、小数点位置と第1のスケーリング係数を組み合わせて、量子化後のデータを取得することにより、量子化予定のデータFxを量子化することができる。
Ix=round(Fx/(2sxf1)) 式(6)
ここ、sは上記式(2)で求めた小数点位置、f1は第1のスケーリング係数、Ixは量子化予定のデータ、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。式(6)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round(Fx/(2sxf1))x2sxf1 式(7)
ここ、sは上記式(2)で求めた小数点位置、f1はスケーリング係数、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化することによって得られたデータであり、中間表現データFx1のデータ表現形式は、量子化される前述のデータFxのデータ表現形式と一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
オプションで、スケーリング係数に2番目のスケーリング係数を含めることもできる。2番目のスケーリング係数は次のように計算できる。
f2=Z1/(2n−1−1) 式(8)
プロセッサは、第2のスケーリング係数を個別に使用して、量子化予定のデータFxを量子化し、量子化後のデータを取得できる。
Ix=round(Fx/f2) 式(9)
ここ、f2は第2のスケーリング係数、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(9)の切り上げの代わりに、切り上げ、切り下げ、ゼロへの切り上げなどの他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round(Fx/f2)xf2 式(10)
ここで、f2は第2のスケーリング係数、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化することによって得られたデータであり、中間表現データFx1のデータ表現形式は、量子化される前述のデータFxのデータ表現形式と一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
さらに、上記の第2のスケーリング係数は、小数点位置および第1のスケーリング係数f1に従って確定することができる。つまり、第2のスケーリング係数は次の式に従って計算できる。
f2=2sf1 式(11)
ここで、sは上記の式(2)に従って確定された小数点位置であり、f1は上記の式(5)に従って計算された第1のスケーリング係数である。
任意選択で、本開示の実施形態の量子化方法は、対称データの量子化を実現できるだけでなく、非対称データの量子化も実現することができる。このとき、プロセッサは非対称データを対称データに変換して、データの「オーバーフロー」を回避できる。具体的には、量子化パラメータはオフセットも含み得、オフセットは、量子化予定のデータの中間点値であり得る。オフセットは、原点に対する量子化予定のデータの中間点値のオフセットを示すために使用され得る。図3−3に示すように、プロセッサは、量子化予定のデータのデータ分布に関する統計を実行して、量子化予定のデータのすべての要素の最小値Zminと、量子化予定のデータのすべての要素の最大値Zmaxを取得できる。上記のオフセットは、最小値Zminと最大値Zmaxに基づいて計算できる。具体的なオフセットの計算方法は次のとおりである。
o=(Zmax+Zmin)/2 式(12)
ここで、oはオフセットを表し、Zminは量子化予定のデータのすべての要素の最小値を表し、Zmaxは量子化予定のデータのすべての要素の最大値を表す。
さらに、プロセッサは、量子化予定のデータのすべての要素の最小値Zminおよび最大値Zmaxに従って、量子化予定のデータの最大絶対値Z2を確定することができる。
Z2=(Zmax−Zmin)/2 式(13)
このようにして、プロセッサは、図3−3に示すように、オフセットoに従って量子化予定のデータを変換し、量子化される非対称データを量子化される対称データに変換できる。プロセッサはさらに、量子化予定のデータの最大絶対値Z2に従って小数点位置sを確定できる。ここで、小数点位置は次の式に従って計算できる。
s=ceil(ln(Z2/(2n−1−1))) 式(14)
ここで、ceilは切り上げられ、sは小数点位置、nはデータビット幅である。
その後、プロセッサは、オフセットと対応する小数点位置によって量子化予定のデータを量子化して、量子化予定のデータを取得できる。
Ix=round((Fx−o)/2s) 式(15)
ここ、sは上記式(14)で求めた小数点位置、oはオフセット、Ixは量子化予定のデータ、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。式(15)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め計算方法も使用できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round((Fx−o)/2s)x2s+o 式(16)
ここ、sは上記式(14)で求めた小数点位置、oはオフセット、Fxは量子化予定のデータ、roundは丸めによる丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化して得られたデータであり、中間表現データFx1のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Fxと一致し、中間表現データFxは、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
さらに任意選択で、プロセッサは、量子化予定のデータの最大絶対値Z2に従って、小数点位置sおよび第1のスケーリング係数f1をさらに確定することができる。小数点位置sの特定の計算方法については、上記の式(14)を参照されたい。第1のスケーリング係数f1は、次の式に従って計算できる。
f1=Z2/A=Z2/(2s(2n−1−1)) 式(17)
プロセッサは、オフセットおよびそれに対応する第1のスケーリング係数f1および小数点位置sに従って、量子化予定のデータを量子化して、量子化後のデータを取得することができる。
Ix=round((Fx−o)/(2sxf1)) 式(18)
ここで、f1は第1のスケーリング係数、sは上記の式(14)に従って確定された小数点位置、oはオフセット、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(18)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用できるなど、他の丸め演算も使用できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round((Fx−o)/(2sxf1))x2sxf1+o 式(19)
ここ、f1は第1のスケーリング係数、sは上記の式(14)に従って確定された小数点位置、oはオフセット、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化して得られたデータであり、中間表現データFx1のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Fxと一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
オプションで、スケーリング係数に2番目のスケーリング係数を含めることもできる。2番目のスケーリング係数は次のように計算できる。
f2=Z2/(2n−1−1) 式(20)
プロセッサは、第2のスケーリング係数を個別に使用して、量子化予定のデータFxを量子化し、量子化後のデータを取得できる。
Ix=round(Fx/f2) 式(21)
ここ、f2は第2のスケーリング係数、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(21)の丸め演算の代わりに、切り上げ、切り下げ、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、さまざまなスケーリング係数を使用して、量子化後のデータの数値範囲を調整できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round(Fx/f2)xf2 式(22)
ここで、f2は第2のスケーリング係数、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化して得られたデータであり、中間表現データFx1のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Fxと一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
また、上記の第2のスケーリング係数は、小数点位置および第1のスケーリング係数f1に応じて確定することができる。つまり、第2のスケーリング係数は次の式に従って計算できる。
f2=2sxf1 式(23)
ここで、sは上記の式(14)に従って確定された小数点位置であり、f1は上記の式(17)に従って計算された第1のスケーリング係数である。
オプションで、プロセッサは、オフセットoに従って量子化予定のデータを量子化することもできる。この時点で、小数点位置sおよび/またはスケーリング係数はプリセット値である場合がある。このとき、プロセッサはオフセットに従って量子化予定のデータを量子化し、量子化予定のデータを取得する。
Ix=round(Fx−o) 式(24)
ここで、oはオフセット、Ixは量子化後のデータ、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。式(24)の丸め演算の代わりに、切り上げ、切り捨て、ゼロへの丸めなどの丸め演算を使用するなど、他の丸め演算も使用できることは理解できる。データビット幅が一定の場合、異なるオフセットを使用して、量子化後のデータの値と量子化前のデータとの間のオフセットを調整できることは理解できる。
さらに、量子化予定のデータに対応する中間表現データFx1は、以下のようになり得る。
Fx1=round(Fx−o)+o 式(25)
ここで、oはオフセット、Fxは量子化予定のデータ、roundは丸めによって実行される丸め演算である。Fx1は、前述の量子化予定のデータIxを逆量子化して得られたデータであり、中間表現データFx1のデータ表現形式は、前述の量子化予定のデータのデータ表現形式Fxと一致し、中間表現データFx1は、量子化誤差の計算に使用できる。詳細については、以下を参照してください。ここで、逆量子化は、量子化の逆プロセスを指する。
本開示の量子化操作は、上記の浮動小数点データの量子化に使用できるだけでなく、固定点データの量子化を実現するためにも使用することができる。任意選択で、第1のデータフォーマットの算術データも固定点算術データであり得、第2のデータフォーマットの算術データは固定点算術データであり得、第2のデータフォーマットの算術データは以下のデータ表現範囲を有する。第1のデータフォーマットのデータは範囲を表し、第2のデータフォーマットの小数点以下の数は第1のデータフォーマットのそれよりも大きくなる。つまり、第2のデータフォーマットの操作データは第1のデータフォーマットの操作データよりも精度が高くなる。たとえば、第1のデータフォーマットの算術データは16ビットを占める固定小数点データであり、第2のデータフォーマットは8ビットを占める固定小数点データである場合がある。本開示の実施形態において、量子化処理は、固定点計算データを使用することによって実行することができ、それにより、計算データによって占有される記憶空間をさらに減少し、計算データの記憶効率および計算効率を改善する。
本開示の一実施形態の量子化パラメータの調整方法は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算されたデータの量子化パラメータを動的に調整して、ニューラルネットワークのトレーニングまたは微調整プロセス中に改善するように、ニューラルネットワークのトレーニングまたは微調整プロセスに適用することができる。ニューラルネットワークの量子化精度。ここで、ニューラルネットワークは、ここで特に限定されない、深部ニューラルネットワークまたは畳み込みニューラルネットワークなどであり得る。
ニューラルネットワークのトレーニング(Training)は、ニューラルネットワーク(当該ニューラルネットワークの重みはランダムな数にしてもよい)に対して複数回の反復(iteration)行い、ニューラルネットワークの重みがプリセット条件を満たすようにすることを指す。ここ、1回の反復演算には、一般に、1回の順方向演算、1回の逆方向演算、および1回の重み更新演算が含まれる。順方向演算とは、ニューラルネットワークの入力データに基づいて順方向演算の結果を得るための順方向推論のプロセスを指する。逆方向演算は、順方向演算の結果とプリセットされた基準値に基づいて損失値を確定し、損失値に応じて重み勾配値および/または入力データ勾配値を確定するプロセスである。重み更新演算とは、重みの勾配に応じてニューラルネットワークの重みを調整するプロセスを指する。具体的には、ニューラルネットワークのトレーニングプロセスは次のとおりである。プロセッサは、ランダム数の重みを持つニューラルネットワークを使用して、入力データに対して順方向演算を実行し、順方向演算の結果を取得できる。次に、プロセッサは、順方向演算の結果とプリセット参照値に従って損失値を確定し、損失値に従って重み勾配値および/または入力データ勾配値を確定する。最後に、プロセッサは、重み勾配値に従ってニューラルネットワークの勾配値を更新し、新しい重みを取得して、反復演算を完了することができる。プロセッサは、ニューラルネットワークの順方向演算の結果がプリセット条件を満たすまで、ループ内で複数の反復を実行する。たとえば、ニューラルネットワークの順方向演算結果がプリセット基準値に収束すると、トレーニングは終了する。または、ニューラルネットワークの順方向演算結果とプリセット基準値によって確定される損失値がプリセット精度以下になると、トレーニングは終了する。
微調整とは、ニューラルネットワークの精度がプリセット要件を満たすことができるように、ニューラルネットワークで複数の反復演算を実行するプロセスを指する(ニューラルネットワークの重みはすでに収束状態にあり、ランダムな数値ではない)。この微調整プロセスは、基本的に上記のトレーニングプロセスと同じであり、収束状態でニューラルネットワークを再トレーニングするプロセスと見なすことができる。推論とは、重みがプリセット条件を満たすニューラルネットワークを使用して、画像認識などのニューラルネットワークの使用など、認識や分類などの機能を実現するための順方向演算を実行するプロセスを指する。
本開示の実施形態では、上記のニューラルネットワークのトレーニングまたは微調整プロセスにおいて、異なる量子化パラメータを、ニューラルネットワーク動作の異なる段階で使用して、ニューラルネットワークの動作データを量子化することができ、反復動作は、量子化後のデータに従って実行される。ニューラルネットワークの運用プロセスにおけるデータストレージスペースを減少し、データアクセスと運用の効率を向上させることができる。図3−4に示すように、上記の方法には次のものが含まれる。
S100で、量子化予定のデータのデータ変動範囲を取得する。
任意選択で、プロセッサは、量子化予定のデータのデータ変動範囲を直接読み取ることができ、量子化予定のデータのデータ変動範囲は、ユーザによって入力され得る。
オプションで、プロセッサは、カレント反復で量子化予定のデータおよび履歴反復で量子化予定のデータによって、量子化予定のデータのデータ変動範囲を計算することもできる。ここで、カレント反復は、現在実行されている反復演算を指し、履歴反復は、カレント反復の前に実行される反復演算。たとえば、プロセッサは、量子化予定のデータの要素の最大値とカレント反復の要素の平均値、および量子化予定のデータの要素の最大値と、各履歴反復で量子化予定のデータの要素の平均値を、各反復の要素の値に従って取得できる。要素の最大値と平均値によって、量子化予定のデータの変動範囲が決まる。カレント反復で量子化予定のデータの要素の最大値が、プリセット履歴反復数で量子化予定のデータの要素の最大値に近く、カレント反復で量子化予定のデータの要素の平均値が、プリセット履歴反復数である場合量子化予定のデータの要素の平均値が比較的近い場合、量子化予定のデータのデータ変動範囲が小さいと判断できる。そうでなければ、量子化予定のデータのデータ変動範囲が比較的大きいと判断することができる。別の例として、量子化予定のデータのデータ変動範囲は、量子化予定のデータのスライディング平均値または分散によって表すことができ、これはここでは特に限定されない。
本開示の実施形態では、量子化予定のデータのデータ変動範囲を使用して、量子化予定のデータの量子化パラメータを調整する必要があるかどうかを確定することができる。たとえば、量子化予定のデータのデータ変動範囲が大きい場合、量子化の精度を確保するために、量子化パラメータを時間内に調整する必要があることを示している可能性がある。量子化予定のデータのデータ変動範囲が小さい場合は、履歴反復の量子化パラメータをカレント検査反復とその後の一定数の反復に使用できるため、量子化パラメータの頻繁な調整を回避し、量子化効率を向上させることができる。
ここで、各反復は、量子化される少なくとも1つのデータを含み、量子化予定のデータは、浮動点または固定点によって表される算術データであり得る。任意選択で、各反復で量子化予定のデータは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得、勾配データはまた、ニューロン勾配データ、重み勾配データなどを含み得る。
S200、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
任意選択で、量子化パラメータは、上記の小数点位置および/またはスケーリング係数を含み得、ここで、スケーリング係数は、第1のスケーリング係数および第2のスケーリング係数を含み得る。特定の小数点位置の計算方法は上記の式(2)を参照でき、スケーリング係数の計算方法は上記の式(5)または(8)を参照できるが、ここでは繰り返しない。オプションで、量子化パラメータにオフセットを含めることもできる。オフセットの計算方法については、上記の式(12)を参照してください。さらに、プロセッサは、上記の式(14)に従って、式(14)に従って小数点位置を確定することもできる。式(17)または(20)はスケーリング係数を確定する。本開示のこの実施形態では、プロセッサは、確定された目標反復間隔によって、上記の小数点位置、スケーリング係数、またはオフセットの少なくとも1つを更新して、ニューラルネットワーク動作における量子化パラメータを調整することができる。つまり、ニューラルネットワーク運用の量子化パラメータは、ニューラルネットワーク運用で量子化予定のデータのデータ変動範囲によって更新できるため、量子化精度を保証することができる。
量子化予定のデータのデータ変化曲線は、ニューラルネットワークのトレーニングまたは微調整プロセス中に計算データの変化傾向について統計および分析を実行することによって取得できることは理解できる。図3−5に示すように、データ変化曲線によれば、ニューラルネットワークのトレーニングまたは微調整の初期段階では、さまざまな反復で量子化予定のデータのデータが大幅に変化することがわかる。トレーニングまたは微調整操作が進むにつれて、量子化予定のデータのデータ変化は徐々にフラットになる傾向がある。したがって、ニューラルネットワークのトレーニングまたは微調整の初期段階では、量子化パラメータをより頻繁に調整できる。ニューラルネットワークのトレーニングまたは微調整の中間および後期段階では、量子化パラメータを複数の反復またはトレーニングサイクルの間隔で調整できる。本開示の方法は、適切な反復間隔を確定することにより、量子化精度と量子化効率との間のバランスを達成することである。
具体的には、プロセッサは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定して、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整することができる。オプションで、量子化予定のデータのデータ変動範囲が減少するにつれて、目標反復間隔が増やす場合がある。つまり、量子化予定のデータのデータ変動範囲が大きいほど、目標反復間隔が短くなり、量子化パラメータの調整頻度が高くなる。量子化予定のデータのデータ変動範囲が小さいほど、目標反復間隔が大きくなり、量子化パラメータの調整の頻度が低くなることを示している。もちろん、他の実施形態では、上記の目標反復間隔もハイパーパラメータであり得る。例えば、目標反復間隔は、ユーザによって設定され得る。
任意選択で、前述の重みデータ、ニューロンデータ、勾配データ、および量子化される他のデータは、異なる反復間隔を有することができる。これに対応して、プロセッサは、量子化される様々なデータに対応するデータ変動振幅を取得し、各タイプの量子化予定のデータのデータ変動振幅に従って、量子化される対応するデータに対応する目標反復間隔を確定することができる。言い換えれば、量子化される様々なデータの量子化プロセスを非同期的に実行することができる。本開示の実施形態では、量子化される異なるタイプのデータ間の差異のために、量子化される異なるデータのデータ変動範囲を使用して、対応する目標反復間隔を確定することができ、対応する目標反復間隔は、対応する目標反復間隔によって確定することができる。これにより、量子化パラメータは、量子化予定のデータの量子化精度を保証し、それによってニューラルネットワークの演算結果の正確さを保証することができる。
もちろん、他の実施形態では、同じ目標反復間隔を、量子化される異なるタイプのデータについて確定して、目標反復間隔によって量子化される対応するデータに対応する量子化パラメータを調整することができる。例えば、プロセッサは、量子化される様々なデータのデータ変動範囲を取得し、量子化予定のデータの最大データ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化される様々なデータの量子化パラメータを確定し得る。さらに、量子化されるさまざまなタイプのデータでも、同じ量子化パラメータを使用できる。
さらに任意選択で、前述のニューラルネットワークは、少なくとも1つの操作層を含み得、そして量子化されるべきデータは、各操作層に含まれるニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得る。このとき、プロセッサは、現在の算術層に関連して量子化予定のデータを取得し、上記の方法に従って、現在の算術層で量子化される様々なデータのデータ変動範囲および対応する目標反復間隔を確定することができる。
任意選択で、プロセッサは、各反復演算プロセスで1回量子化予定のデータのデータ変動範囲を確定し、量子化される対応するデータのデータ変動範囲によって目標反復間隔を確定することができる。言い換えると、プロセッサは、各反復で1回目標反復間隔を計算できる。特定の目標反復間隔の計算については、以下の説明を参照してください。さらに、プロセッサは、プリセット条件に従って各反復から検査反復を選択し、各検査反復で量子化予定のデータの変動範囲を確定し、検査反復に対応する目標反復間隔によって量子化パラメータなどを更新および調整することができる。このとき、反復が選択された検査反復でない場合、プロセッサは反復に対応する目標反復間隔を無視する場合がある。
オプションで、各目標反復間隔は検証反復に対応することができ、検証反復は、目標反復間隔の1番目の反復または目標反復間隔の終了反復であり得る。プロセッサは、各目標反復間隔の検査反復でニューラルネットワークの量子化パラメータを調整して、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整することができる。ここで、検証の反復は、現在の量子化パラメータが量子化予定のデータの要件を満たしているかどうかを検証するための時点である可能性がある。調整前の量子化パラメータは、調整後の量子化パラメータと同じでも、調整後の量子化パラメータとは異なる場合もある。オプションで、隣接する検査反復の間隔は、ターゲットの反復の間隔以上にすることができる。
たとえば、目標反復間隔は、カレント検査反復からの反復数を計算する場合があり、カレント検査反復は、目標反復間隔の開始反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復であると判断できる。2回目の反復、101回目の反復、102回目の反復。プロセッサは、100回目の反復でニューラルネットワーク演算の量子化パラメータを調整できる。ここで、カレント検査の反復は、プロセッサが現在量子化パラメータの更新と調整を実行しているときの対応する反復演算である。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもでき、カレント検査反復は、カレント検査反復の前の一つ前の反復間隔の終了反復であってもよい。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復(101回目反復、第102反復、および第103反復)が含まれていると判断できる。プロセッサは、100回目の反復と103回目の反復で、ニューラルネットワーク演算の量子化パラメータを調整できる。この開示は、目標反復間隔の確定方法を特に制限するものではない。
一実施形態では、小数点位置、スケーリング係数、およびオフセットの上記の計算式から、量子化パラメータは、量子化予定のデータに関連することが多いことが分かる。したがって、上記の操作S100において、量子化予定のデータのデータ変動範囲はまた、これは、量子化パラメータの変動範囲によって間接的に確定され、量子化予定のデータのデータ変動範囲は、量子化パラメータの変動範囲によって表すことができる。具体的には、図3ー6に示されるように、前述の操作S100は、以下を含み得る。
S110、小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲に対して正である。関連。
オプションで、小数点位置の変動範囲は、量子化予定のデータの変動範囲を間接的に反映できる。小数点位置の変動範囲は、カレント検査反復の小数点位置および少なくとも1つの履歴反復の小数点位置によって確定され得る。ここで、現在の検査反復の小数点位置と各履歴反復の小数点位置は、式(2)に従って確定できる。もちろん、現在の検査反復の小数点位置と各履歴反復の小数点位置は、式(14)に従って確定することもできる。
たとえば、プロセッサは、カレント検査反復の小数点位置と履歴反復の小数点位置の分散を計算し、分散に基づいて小数点位置の変動範囲を確定することもできる。別の例として、プロセッサは、カレント検査反復の小数点位置の平均値および履歴反復の小数点位置の平均値に従って、小数点位置の変動範囲を確定することができる。具体的には、図3ー7に示されるように、前述の操作S110は、以下を含み得る。
S111、カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって、第1の平均値を確定する。ここで、前の検査反復は、量子化パラメータが最後に調整された時間に対応する反復であり、前の検査反復とカレント検査反復との間に少なくとも1つの反復間隔がある。
オプションで、少なくとも1つの履歴反復が少なくとも1つの反復間隔に属し、各反復間隔が1つの検査反復に対応し、2つの隣接する検査反復が1つの反復間隔を持つ場合がある。前述の操作S111における前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復であり得る。
オプションで、第1の平均値は次の式に従って計算できる。
M1=a1xst−1+a2xst−2+a3xst−3+...+amxs1 式(26)
ここで、a1〜amは各反復の小数点位置に対応する計算された重みを指し、st−1は前の検査反復に対応する小数点位置を指する。st−2、st−3...S1は、最後の検査反復前の履歴反復に対応する小数点位置を指し、M1は上記の第1の平均値を指する。また、データの分布特性によれば、履歴反復が前回の検査反復から遠いほど、前回の検査反復付近の反復小数点位置の分布や変動範囲への影響が小さいため、上記の計算重みはa1として計算できる。a1〜amの順序は順番に減少する。
たとえば、最後の検査反復はニューラルネットワーク演算の100回目の反復であり、履歴反復は1回目の反復から99回目の反復までであり、プロセッサは100回目の反復の小数点位置を取得できる(つまり、st−1)100回目の反復前の履歴反復の小数点位置を取得する。つまり、s1はニューラルネットワークの1番目の反復に対応する小数点位置を指してもよい...、st−3はニューラルネットワークを参照できるst−2の98回目の反復に対応する小数点位置は、ニューラルネットワークの99回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第1の平均値を計算することができる。
さらに、第1の平均値は、各反復間隔に対応する検査反復の小数点位置によって計算できる。たとえば、第1の平均値は次の式に従って計算できる。
M1=a1xst−1+a2xst−2+a3xst−3+...+amxs1
ここで、a1〜amは、各検査反復の小数点位置に対応する計算された重みを参照し、st−1は、前の検査反復に対応する小数点位置を指す。st−2、st−3...s1は、最後の検査反復前のプリセット反復間隔数の検査反復に対応する小数点位置を指し、M1は上記の第1の平均値を指する。
たとえば、最後の検査反復はニューラルネットワーク演算の100回目の反復であり、履歴反復は1回目の反復から99回目の反復までであり、99回の履歴反復は11回の反復間隔に分割できる。たとえば、1回目から9回目までは第1反復間隔、10回目から18回目は第2反復間隔、...、90回目から99回目は第11反復間隔である。次に、プロセッサは100回目の反復の小数点位置(つまりst−1)を取得し、100回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、s1はニューラルネットワークを参照できる。検査反復の1番目の反復間隔に対応する小数点位置(たとえば、s1はニューラルネットワークの1番目の反復に対応する小数点位置を指してもよい)、...、st−3はニューラルネットワークの10番目の反復間隔の検査反復に対応する小数点位置を指してもよい(たとえば、st−3はニューラルネットワークの81番目の反復に対応する小数点位置を指してもよい)、st−2はニューラルネットワークの11番目の反復を参照できるインターバルテストの反復に対応する小数点位置(たとえば、st−2は、ニューラルネットワークの90番目の反復に対応する小数点位置を指してもよい)。さらに、プロセッサは、上記の式に従って第1の平均値M1を計算することができる。
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
さらに、計算をさらに簡素化し、データが占めるストレージスペースを減少するために、上記の第1平均値M1は、次の式を使用して計算できる。
M1=αxst−1+(1−α)xM0 式(27)
ここ、αは前回の検査反復に対応する小数点位置の計算重み、s(t−1)は前回の検査反復に対応する小数点位置、M0は前回の検査反復前の検査反復に対応するスライディングを表す。平均値については、M0の具体的な計算方法は、上記のM1の計算方法を参照できるが、ここでは繰り返しない。
S112:カレント検査反復に対応する小数点位置と、カレント検査反復前の履歴反復の小数点位置によって、第2の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復の目標データビット幅および量子化予定のデータによって確定することができる。
オプションで、第2の平均値M2は、次の式に従って計算できる。
M2=b1xst+b2xst−1+b3xst−2+...+bmxs1 式(28)
ここで、b1〜bmは各反復の小数点位置に対応する計算された重みを指し、stはカレント検査反復に対応する小数点位置を指する。st−1、st−2...s1これは、カレント検査反復前の履歴反復に対応する小数点位置を指し、M2は上記の第2の平均値を指する。さらに、データの分布特性によれば、履歴反復がカレント検査反復から離れるほど、カレント検査反復に近い反復小数点位置の分布および変動範囲への影響が小さくなるため、上記の計算の重みはb1〜bmに基づくことができる。順序が減少する。
たとえば、カレント検査の反復はニューラルネットワーク演算の101回目の反復であり、カレント検査の反復前の履歴の反復は1回目の反復から100回目の反復を指する。次に、プロセッサは101番目の反復の小数点位置(つまりst)を取得し、101番目の反復の前の履歴反復の小数点位置を取得できる。つまり、s1は、ニューラルネットワークの1番目の反復の対応する小数点位置を指してもよく、...、st−2は、ニューラルネットワークの99回目の反復に対応する小数点位置を指してもよく、st−1は、ニューラルネットワークの100回目の反復に対応する小数点位置を指してもよい。さらに、プロセッサは、上記の式に従って第2の平均値M2を計算することができる。
任意選択で、第2の平均値は、各反復間隔に対応する検査反復の小数点位置に従って計算され得る。具体的には、図3−8に示すように、前述の動作S112は、以下の動作を含み得る。
S1121、中間スライディング平均値のプリセット数を取得する。中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定され、検査反復はニューラルネットワークの量子化を調整することである。プロセスのパラメータは、対応する反復である。
S1122、カレント検査反復の小数点位置と中間スライディング平均値のプリセット数に従って、第2の平均値を確定する。
たとえば、第2の平均値は、次の式に従って計算できる。
M2=b1xst+b2xst−1+b3xst−2+...+bmxs1
ここで、b1〜bmは各反復の小数点位置に対応する計算された重みを指し、stはカレント検査反復に対応する小数点位置を指する。st−1、st−2...s1これは、カレント検査反復の前の検査反復に対応する小数点位置を指し、M2は上記の第2の平均値を指する。
たとえば、カレント検査の反復は100回目の反復であり、履歴の反復は1回目の反復から99回目の反復までであり、99回の履歴の反復は11回の反復間隔に分割できる。たとえば、1回目から9回目までは第1反復間隔、10回目から18回目は第2反復間隔、...、90回目から99回目は第11反復間隔である。次に、プロセッサは100回目の反復の小数点位置(つまりst)を取得し、100回目の反復の前の反復間隔で検査反復の小数点位置を取得できる。つまり、s1はニューラルネットワークの最初の小数点位置を指してもよい。反復に対応する反復間隔検証小数点位置(たとえば、s1はニューラルネットワークの1番目の反復に対応する小数点位置を指してもよい)、...、st−2はニューラルネットワークの10番目の反復間隔の検査反復に対応する小数点位置を指してもよく(たとえば、st−2はニューラルネットワークの81回目の反復に対応する小数点位置を指してもよい)、st−1はニューラルネットワークの11回目の反復間隔の検査反復を参照できる。対応する小数点位置(たとえば、st−1は、ニューラルネットワークの90回目の反復に対応する小数点位置を指してもよい)。さらに、プロセッサは、上記の式に従って第2の平均値M2を計算することができる。
本開示の実施形態では、例示の便宜のために、反復間隔が同じ数の反復を含むと想定される。実際の使用では、反復間隔に含まれる反復回数は異なる場合がある。オプションで、反復間隔に含まれる反復数は、反復が増やすにつれて増やす。つまり、ニューラルネットワークのトレーニングまたは微調整が進むにつれて、反復間隔はますます大きくなる可能性がある。
さらに、計算を簡素化し、データが占めるストレージスペースを減少するために、プロセッサは、カレント検査反復に対応する小数点位置によって第2の平均値を確定し、第1の平均値、すなわち、第2の平均値は以下のようになり得る。式は次のように計算される。
M2=βxst+(1−β)xM1 式(29)
ここで、βはカレント検査反復に対応する小数点位置の計算重みを指し、M1は上記の第1の平均値を指する。
S113、第1の平均値と第2の平均値に従って第1の誤差を確定する。第1の誤差は、カレント検査反復と履歴反復の小数点位置の変動範囲を表すためである。
任意選択で、第1の誤差は、第2の平均値と前述の第1の平均値との間の差の絶対値に等しくてもよい。具体的には、上記の第1の誤差は、次の式に従って計算できる。
diffupdate1=|M2−M1|=β|s(t)−M1| 式(30)
オプションで、上記のカレント検査反復の小数点位置は、カレント検査反復で量子化予定のデータと、カレント検査反復に対応する目標データビット幅に基づいて確定できる。特定の小数点位置の計算方法については、上記の式(2)または式(14)を参照してください。ここで、カレント検査反復に対応する目標データビット幅はハイパーパラメータである可能性がある。さらに任意選択で、カレント検査反復に対応する目標データビット幅は、ユーザー定義の入力であり得る。オプションで、ニューラルネットワークのトレーニングまたは微調整のプロセスで量子化予定のデータに対応するデータビット幅は一定である場合がある。つまり、同じニューラルネットワークで量子化される同じタイプのデータは、たとえばニューラルネットワークの場合、同じデータビット幅で量子化される。ネットワークの各反復におけるニューロンデータは、8ビットのデータ幅で量子化される。
オプションで、ニューラルネットワークトレーニングまたは微調整プロセスで量子化予定のデータに対応するデータビット幅は、データビット幅が量子化予定のデータの量子化要件を満たすことができるように可変である。すなわち、プロセッサは、量子化予定のデータによって、量子化予定のデータに対応するデータビット幅を適応的に調整し、量子化予定のデータに対応する目標データビット幅を取得することができる。具体的には、プロセッサは、最初にカレント検査反復に対応する目標データビット幅を確定し、次にプロセッサは、カレント検査反復に対応する目標データビット幅に対応するカレント検査反復およびカレント検査反復に対応する量子化データを確定し得る。
具体的には、図3−9に示されるように、前述の操作S110は、以下を含み得る。
S114で、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定し、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって実行される。入手する。
任意選択で、前述のプロセッサは、初期データビット幅を使用して、量子化予定のデータを量子化して、前述の量子化後のデータを取得することができる。カレント検査反復の初期データビット幅はハイパーパラメータであり得、カレント検査反復の初期データビット幅はまた、カレント検査反復の前の一つ前の検査反復の量子化データに基づいて確定され得る。
具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復で量子化予定のデータによって、中間表現データを確定することができる。オプションで、中間表現データは、量子化予定のデータの前述の表現形式と一致する。たとえば、プロセッサは、上記の量子化後のデータを逆量子化して、量子化予定のデータの表現形式と一致する中間表現データを取得することができる。ここで、逆量子化は、量子化の逆プロセスを指す。たとえば、量子化予定のデータは上記の式(3)を使用して取得でき、プロセッサは上記の式(4)に従って量子化予定のデータを逆量子化して対応する中間表現データを取得し、量子化予定のデータと中間表現データに従って量子化誤差を確定することもできる。
さらに、プロセッサは、量子化予定のデータおよび対応する中間表現データに従って、量子化誤差を計算することができる。カレント検査反復で量子化予定のデータがFx=[Z1,Z2...,Zm]であるとすると、量子化予定のデータに対応する中間表現データはFx1=[Z1 (n),Z2 (n)...,Zm (n)]。プロセッサは、量子化予定のデータFxおよびそれに対応する中間表現データFx1に従って誤差項を確定し、誤差項に従って量子化誤差を確定することができる。
任意選択で、プロセッサは、中間表現データFx1の要素の合計および量子化予定のデータFxの要素の合計に従って、前述の誤差項を確定することができる。誤差項は、中間表現データFx1の要素の合計および量子化後のデータFxの各要素の合計の差。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
diffbit=ln((Σi|Zi (n)|−Σi|Zi|)/Σi|Zi|+1) 式(31)
ここで、ziは量子化予定のデータの要素であり、Zi (n)はデータFx1を表す中央の要素である。
オプションで、プロセッサは、量子化予定のデータの各要素と中間表現データFx1の対応する要素との間の差をそれぞれ計算して、m個の差の値を取得し、m個の差の値の合計を誤差項として使用することができる。その後、プロセッサは誤差項に従って量子化誤差を確定できる。特定の量子化誤差は、次の式に従って確定できる。
diffbit=ln(Σi|Zi (n)−Zi|/Σi|Zi|+1) 式(32)
ここで、ziは量子化予定のデータの要素であり、Zi (n)はデータFx1を表す中央の要素である。
オプションで、量子化予定のデータの各要素と中間表現データFx1の対応する要素との差は、ほぼ2(s−1)に等しい場合がある。したがって、量子化誤差は、次の式に従って確定することもできる。
diffbit=ln(2s−1*m/Σi|Zi|) 式(33)
ここ、mは目標データに対応する中間表現データFx1の数、sは小数点位置、ziは量子化予定のデータの要素である。
オプションで、中間表現データは、前述の量子化予定のデータのデータ表現形式と一致させることもでき、量子化誤差は、中間表現データおよび量子化予定のデータに基づいて確定される。たとえば、量子化予定のデータは次のように表すことができる。Fx≒Ix×2s、次に中間表現データIx1≒Fx/2sを確定でき、中間表現データIx1は前述の量子化予定のデータと同じデータ表現形式を持つことができる。このとき、プロセッサは、上記の式(3)で計算された中間表現データIx1およびIx=round(Fx/2s)に従って、量子化誤差を確定できる。特定の量子化誤差の確定方法は、上記の式(31)から式(33)を参照することができる。
S115、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定する。
具体的には、プロセッサは、量子化誤差に従ってカレント検査反復に対応するデータビット幅を適応的に調整し、カレント検査反復によって調整された目標データビット幅を確定することができる。量子化誤差がプリセット条件を満たす場合、カレント検査反復に対応するデータビット幅を変更しないでおくことができる。つまり、カレント検査反復の目標データビット幅を初期データビット幅と等しくすることができる。量子化誤差がプリセット条件を満たさない場合、プロセッサは、カレント検査反復で量子化予定のデータに対応するデータビット幅を調整して、カレント検査反復に対応する目標データビット幅を取得できる。プロセッサが目標データのビット幅を使用して、カレント検査反復で量子化予定のデータを量子化する場合、量子化誤差は前述のプリセット条件を満たす。オプションで、前述のプリセット条件は、ユーザーが設定したプリセットしきい値にすることができる。
任意選択で、図3−10に示されるように、前述の操作S115は、以下を含み得る。
S1150で、プロセッサは、前述の量子化誤差が第1のプリセットしきい値以上であるかどうかを判断できる。
量子化誤差が第1のプリセットしきい値以上である場合、動作S1151を実行して、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第1のプリセットしきい値よりも小さい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
さらに任意選択で、プロセッサは、1回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは1回の調整後に目標データビット幅n2=n1+tを確定できる。ここで、tはデータビット幅の調整値である。ここで、目標データビット幅n2を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第1のプリセットしきい値よりも小さい可能性がある。
さらに任意選択で、プロセッサは、量子化誤差が第1のプリセットしきい値未満になるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第1のプリセットしきい値未満の場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第1のプリセットしきい値以上の場合、第1の中間データビット幅は第1のプリセットビット幅のステップ長さに従って確定され、プロセッサは第1の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに応じて、量子化誤差が第1のプリセットしきい値を下回るまで量子化誤差を確定する。プロセッサは、量子化誤差が第1のプリセットしきい値よりも小さい場合に対応するデータビット幅を目標データビット幅として使用することができる。
たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは初期データビット幅n1を使用して、カレント検査反復の量子化データAを量子化して、量子化後のデータB1を取得し、次に、量子化予定のデータAおよび量子化後のデータに従ってB1は、量子化誤差C1を取得するために計算される。量子化誤差C1が第1のプリセットしきい値以上の場合、プロセッサは第1の中間データビット幅n2=n1+t1を確定する。ここで、t1は第1のプリセットビット幅のステップ長さである。その後、プロセッサは、第1の中間データビット幅n2に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データB2を取得し、量子化予定のデータAおよび量子化後のデータB2に従って量子化誤差C2を計算できる。量子化誤差C2が第1のプリセットしきい値以上の場合、プロセッサは第1の中間データビット幅n2=n1+t1+t1を確定し、新しい第1の中間データビット幅によってカレント検査反復の量子化を実行する。データAが量子化され、対応する量子化誤差が、量子化誤差が第1のプリセットしきい値より小さくなるまで計算される。量子化誤差C1が第1のプリセットしきい値よりも小さい場合、初期データビット幅n1を変更しないでおくことができる。
さらに、前述の第1のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第1のプリセットしきい値よりも大きいときはいつでも、プロセッサはカレント検査反復に対応するデータビット幅を同じ値だけ増やすことができる。ビット幅の値。オプションで、前述の第1のプリセットビット幅のステップ長さも可変値であり得る。例えば、量子化誤差が第1のプリセットしきい値より大きい場合、プロセッサは、量子化誤差と第1のプリセットしきい値との間の差を計算し得る。差が小さいほど、第1のプリセットビット幅のステップ長さの値は小さくなる。
任意選択で、図3−11に示されるように、前述の操作S115はさらに以下を含み得る。
S1152で、プロセッサは、前述の量子化誤差が第2のプリセットしきい値以下であるかどうかを判断できる。
量子化誤差が第2のプリセットしきい値以下である場合、操作S1153を実行して、カレント検査反復に対応するデータビット幅を減らして、カレント検査反復の目標データビット幅を取得することができる。量子化誤差が第2のプリセットしきい値よりも大きい場合、カレント検査反復のデータビット幅を変更せずに維持できる。
さらに任意選択で、プロセッサは、1回の調整後に前述の目標データビット幅を取得することができる。たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは1回の調整後に目標データビット幅n2=n1−tを確定できる。ここで、tはデータビット幅の調整値である。ここで、目標データビット幅n2を使用して、カレント検査反復で量子化予定のデータを量子化する場合、取得される量子化誤差は、第2のプリセットしきい値よりも大きくなる可能性がある。
さらに任意選択で、プロセッサは、量子化誤差が第2のプリセットしきい値より大きくなるまで複数の調整を通じて目標データビット幅を取得し、量子化誤差が第2のプリセットしきい値よりも大きい場合のデータビット幅を目標データビット幅として使用することができる。具体的には、量子化誤差が第1のプリセットしきい値以下の場合、第2の中間データビット幅は第2のプリセットビット幅のステップ長さによって確定され、プロセッサは第2の中間データビット幅によって現在のチェックをチェックできる。量子化する反復データを量子化して量子化予定のデータを取得し、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第2のプリセットしきい値より大きくなるまで量子化誤差を確定する。プロセッサは、量子化誤差が第2のプリセットしきい値よりも大きい場合、対応するデータビット幅を目標データビット幅として使用できる。
たとえば、カレント検査反復の初期データビット幅はn1であり、プロセッサは初期データビット幅n1を使用して、カレント検査反復の量子化データAを量子化して、量子化後のデータB1を取得し、次に、量子化予定のデータAおよび量子化後のデータに従ってB1は、量子化誤差C1を取得するために計算される。量子化誤差C1が第2のプリセットしきい値以下の場合、プロセッサは第2の中間データビット幅n2=n1−t2を確定する。ここで、t2は第2のプリセットビット幅のステップ長さである。その後、プロセッサは、第2の中間データビット幅n2に従ってカレント検査反復で量子化予定のデータを量子化して、カレント検査反復の量子化データB2を取得し、量子化予定のデータAおよび量子化予定のデータB2に従って量子化誤差C2を計算することができる。量子化誤差C2が第2のプリセットしきい値以下の場合、プロセッサは第2の中間データビット幅n2=n1−t2−t2を確定し、新しい第2の中間データビット幅によってカレント検査反復の量子化を実行する。データAが量子化され、対応する量子化誤差が、量子化誤差が第2のプリセットしきい値より大きくなるまで計算される。量子化誤差C1が第2のプリセットしきい値よりも大きい場合、初期データビット幅n1を変更しないでおくことができる。
さらに、前述の第2のプリセットビット幅のステップ長さは一定値であり得る。例えば、量子化誤差が第2のプリセットしきい値よりも小さいときはいつでも、プロセッサは、カレント検査反復に対応するデータビット幅を同じ値だけ減らすことができる。ビット幅の値。オプションで、前述の第2のプリセットビット幅のステップ長さも可変値にすることができる。たとえば、量子化誤差が第2のプリセットしきい値より大きい場合、プロセッサは量子化誤差と第2のプリセットしきい値の差を計算できる。差が小さいほど、第2のプリセットビット幅のステップ長さの値は小さくなる。
オプションで、図3−12に示すように、量子化誤差が第1のプリセットしきい値より小さく、量子化誤差が第2のプリセットしきい値より大きいとプロセッサが判断した場合、カレント検査反復のデータビット幅を変更しないでおくことができる。第1のプリセットしきい値が第2のプリセットしきい値よりも大きい。つまり、カレント検査反復の目標データビット幅は、初期データビット幅と等しくすることができる。ここで、図3ー12は、例として、本開示の実施形態のデータビット幅を確定する方法を示すだけであり、図3ー12の各操作のシーケンスは、ここで特に限定されないが、適応的に調整することができる。
本開示の実施形態では、カレント検査反復のデータビット幅が変化すると、それに応じて小数点位置が変化する。ただし、この時点での小数点位置の変化は、量子化予定のデータのデータ変化によるものではなく、上記式(30)による第1の誤差計算で得られる目標反復間隔が不正確であり、量子化の精度に影響を与える可能性がある。したがって、カレント検査反復のデータビット幅が変化した場合、それに応じて上記の第2の平均値を調整して、第1の誤差が小数点位置の変動範囲を正確に反映できるようにし、それによって目標反復間隔の精度と信頼性を確保できる。具体的には、図3−13に示すように、上記の方法にはさらに次のものが含まれる。
S116、目標データビット幅によって、カレント検査反復のデータビット幅調整値を確定する。
具体的には、プロセッサは、カレント検査反復の目標データビット幅および初期データビット幅によって、カレント検査反復のデータビット幅調整値を確定することができる。ここで、データビット幅調整値=目標データビット幅−初期データビット幅。もちろん、プロセッサは、カレント検査反復のデータビット幅調整値を直接取得することもできる。
S117、カレント検査反復のデータビット幅調整値に従って、上記の第2の平均値を更新する。
具体的には、データビット幅調整値がプリセットパラメータより大きい場合(たとえば、プリセットパラメータがゼロに等しい場合)、つまり、カレント検査反復のデータビット幅が増やすと、プロセッサはそれに応じて第2の平均値を減らすことができる。データビット幅調整値がプリセットパラメータよりも小さい場合(たとえば、プリセットパラメータがゼロに等しい場合)、つまり、カレント検査反復のデータビット幅を減らすと、プロセッサはそれに応じて第2の平均値を増やすことができる。データビット幅調整値がプリセットパラメータと等しい場合、つまりデータビット幅調整値が0の場合、この時点でカレント反復に対応する量子化データは変更されておらず、更新された第2の平均値は更新前の第2の平均値と等しくなる。更新前の第2の平均値は、上記の式(29)に従って計算される。オプションで、データビット幅調整値がプリセットパラメータに等しい場合、つまりデータビット幅調整値が0に等しい場合、プロセッサは第2の平均値を更新しない場合がある。つまり、プロセッサは上記の操作S117を実行しない場合がある。
たとえば、更新前の第2の平均値M2=β×st+(1−β)×M1;現在の検査反復に対応する目標データビット幅n2=初期データビット幅n1+Δnの場合、ここでΔnはデータビットを表す。幅調整値。このとき、更新された第2の平均値M2=β×(st−Δn)+(1−β)×(M1−Δn)。カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1−Δn(ここで、Δnはデータビット幅調整値を表す)の場合、この時点で、更新された第2の平均値M2=β×(st−Δn)+(1−β)×(M1+Δn)。ここで、stは、目標データのビット幅に応じてカレント検査反復によって確定される小数点位置を指する。
別の例として、更新前の第2の平均値M2=β×st+(1−β)×M1;カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1+Δnの場合、ここでΔnはデータを表すビット幅調整値。このとき、更新された第2の平均値M2=β×st+(1−β)×M1−Δn。別の例として、カレント検査反復に対応する目標データビット幅n2=初期データビット幅n1−Δn(ここで、Δnはデータビット幅調整値を表す)の場合、この時点で、更新された第2の平均値M2=β×st+(1−β)×M1+Δn、ここでstは、カレント検査反復で目標データビット幅によって確定された小数点位置を指する。
さらに、図3−6に示されるように、前述の操作S200は、以下を含み得る。
S210で、小数点位置の変動範囲によって、目標反復間隔を確定する。ここで、目標反復間隔は、前述の小数点位置の変動範囲と負の相関がある。つまり、前述の小数点位置の変動範囲が大きいほど、目標反復間隔は短くなる。上記の小数点位置の変動範囲が小さいほど、目標反復間隔は大きくなる。
上記のように、上記の第1の誤差は、小数点位置の変化の大きさを表すことができる。したがって、図3ー7に示すように、上記の動作S210は、以下を含み得る。
S211で、プロセッサは、第1の誤差によって目標反復間隔を確定する場合がある。ここで、目標反復間隔は、第1の誤差と負の相関がある。つまり、第1の誤差が大きいほど、小数点位置の変動範囲が大きくなり、量子化予定のデータのデータ変動範囲が大きくなることを示する。このとき、目標反復間隔は小さくなる。
具体的には、プロセッサは、次の式に従って目標反復間隔Iを計算できる。
I=δ/diffupdate1-γ 式(31)
ここで、Iは目標反復間隔、diffupdate1は上記の第1の誤差を表し、δとγはハイパーパラメータにすることができる。
第1の誤差を使用して小数点位置の変動範囲を測定できることは理解できる。第1の誤差が大きいほど、小数点位置の変動範囲が大きくなる。これは、量子化予定のデータの変動範囲が大きく、目標反復間隔を設定する必要があることを示している。小さいである。つまり、第1の誤差が大きいほど、量子化パラメータの調整が頻繁に行われる。
この実施形態では、小数点位置の変動範囲(第1の誤差)が計算され、小数点位置の変動範囲によって目標反復間隔が確定される。量子化パラメータは目標反復間隔によって確定されるため、量子化パラメータに基づく量子化によって得られる量子化データは、目標データの小数点位置の変化傾向により一致し、量子化精度を確保しながらニューラルネットワークの運用効率を向上させることができる。
オプションで、プロセッサは、カレント検査反復での目標反復間隔を確定した後、カレント検査反復での目標反復間隔に対応する量子化パラメータおよびデータビット幅をさらに確定して、目標反復間隔によって量子化パラメータを更新することができる。ここで、量子化パラメータは、小数点位置および/またはスケーリング係数を含み得る。さらに、量子化パラメータはまた、オフセットを含み得る。量子化パラメータの具体的な計算方法については、上記を参照してください。図3−14に示すように、上記の方法には次のものも含まれる。
S300で、プロセッサは、目標反復間隔によって、ニューラルネットワーク演算の量子化パラメータを調整する。
具体的には、プロセッサは、目標反復間隔によって検査反復を確定し、各検査反復で目標反復間隔を更新し得、また、各検査反復で量子化パラメータを更新し得る。たとえば、ニューラルネットワーク演算のデータビット幅は変更されない。このとき、プロセッサは、各検査反復で量子化予定のデータに応じて、小数点位置などの量子化パラメータを直接調整できる。別の例として、ニューラルネットワーク演算のデータビット幅は可変である。このとき、プロセッサは各検査反復でデータビット幅を更新し、更新されたデータビット幅と検査反復で量子化予定のデータによって小数点位置を調整できる。およびその他の量子化パラメータ。
本開示のこの実施形態では、プロセッサは、各検査反復で量子化パラメータを更新して、現在の量子化パラメータが、量子化予定のデータの量子化要件を確実に満たすようにする。ここで、更新前の目標反復間隔と更新後の目標反復間隔は同じでも異なっていてもかまいません。更新前のデータビット幅と更新後のデータビット幅は同じでも異なっていてもかまいません。つまり、異なる反復間隔のデータビット幅は同じでも異なっていてもかまいません。更新前の量子化パラメータと更新後の量子化パラメータは同じでも異なっていてもよい。つまり、異なる反復間隔の量子化パラメータは同じでも異なっていてもよい。
任意選択で、前述の操作S300において、プロセッサは、ニューラルネットワーク演算における量子化パラメータを調整するために、検証反復において、目標反復間隔における量子化パラメータを確定することができる。
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅は変化しない。つまり、ニューラルネットワーク演算の各反復に対応するデータビット幅は同じである。この時点で、プロセッサは次のことを確定できる。目標反復間隔内の小数点位置などの量子化パラメータは、目標反復間隔によってニューラルネットワーク演算の量子化パラメータを調整するという目的を達成できる。ここで、目標反復間隔の反復に対応する量子化パラメータは一致している可能性がある。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、確定された小数点位置などの量子化パラメータのみが各検査反復で更新されるため、各反復での量子化パラメータの更新と調整を回避できるため、減少できる。量子化プロセスでの計算量により、量子化操作の効率が向上する。
オプションで、データビット幅が変更されていない上記の場合、目標反復間隔の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。カレント検査反復に対応する小数点位置は、上記の式(2)または式(14)を参照して計算できる。
ある場合には、ニューラルネットワーク演算の各反復に対応するデータビット幅が変化する可能性がある。つまり、異なる目標反復間隔に対応するデータビット幅に一致性がない可能性があるが、目標反復間隔の各反復のデータビット幅は残る。絶え間ない。ここで、目標反復間隔の反復に対応するデータビット幅は、ハイパーパラメータであり得る。例えば、目標反復間隔の反復に対応するデータビット幅は、ユーザ定義の入力であり得る。ある場合には、目標反復間隔の反復に対応するデータビット幅もプロセッサによって計算され得る。例えば、プロセッサは、カレント検査反復で量子化予定のデータによって、カレント検査反復に対応する目標データビット幅を確定し得る。およびカレント検査反復に対応する目標データビット幅を、目標反復間隔に対応するデータビット幅として使用する。
このとき、量子化プロセスでの計算量を単純化するために、目標反復間隔内の対応する小数点位置などの量子化パラメータも変更しないでおくことができる。つまり、目標反復間隔の各反復は同じ小数点位置を使用し、各反復での量子化パラメータの更新と調整を回避するために、確定された小数点位置やデータビット幅などの量子化パラメータのみが各検査反復で更新される。これにより、量子化プロセスでの計算量が減少され、量子化操作の効率が向上する。
オプションで、目標反復間隔に対応するデータビット幅が変更されない状況を考慮して、目標反復間隔内の反復に対応する小数点位置を一定に保つことができる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によって、カレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を目標反復間隔として使用することができる。対応する小数点位置については、カレント検査反復に対応する小数点位置が、目標反復間隔の反復に使用される。オプションで、カレント検査反復に対応する目標データビット幅をハイパーパラメータにすることができる。たとえば、カレント検査反復に対応する目標データのビット幅は、ユーザーがカスタマイズする。カレント検査反復に対応する小数点位置は、上記の式(2)または式(14)を参照して計算できる。
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復、101回目の反復、102回目の反復であると判断できる。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。100回目の反復、101回目の反復、および102回目の反復が量子化される。このように、プロセッサは、101回目の反復や102回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が3であると判断する。次に、プロセッサは、目標反復間隔に3つの反復が含まれていると判断する場合がある。これらは、それぞれ101回目の反復、102回目の反復、および103回目の反復である。さらに、プロセッサは、量子化予定のデータに応じて100回目の反復に対応する小数点位置や100回目の反復に対応する目標データビット幅などの量子化パラメータを確定でき、100回目の反復に対応する小数点位置などの量子化パラメータ対を使用できる。101回目の反復、102回目の反復、および103回目の反復が量子化される。このように、プロセッサは、102回目の反復や103回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
別のケースでは、ニューラルネットワーク演算の各反復に対応するデータビット幅は変更される可能性があるが、目標反復間隔の各反復のデータビット幅は変更されない。このとき、目標反復間隔での反復に対応する小数点位置などの量子化パラメータも不整合である可能性がある。プロセッサはまた、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することができ、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。任意選択で、図3−15に示されるように、前述の操作S300はさらに以下を含み得る。
S310、カレント検査反復の量子化データに従って、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。言い換えると、ニューラルネットワーク演算中のデータビット幅は、1つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作S114およびS115を参照してください。これらは、ここでは繰り返されない。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査の反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が6であると判断し、プロセッサは、目標反復間隔にそれぞれ100回目の反復〜105回目の反復である6回の反復が含まれると判断できる。この時点で、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から105回目の反復まで使用され、101回目から105回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が6であると判断する。次に、プロセッサは、目標反復間隔に6つの反復が含まれていると判断する場合がある。これらは、それぞれ101番目の反復から106番目の反復である。このとき、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から106回目の反復まで使用され、101回目から106回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
S320、プロセッサは、取得した小数点位置の反復間隔と目標反復間隔に対応するデータビット幅に応じて、目標反復間隔の反復に対応する小数点位置を調整し、ニューラルネットワーク演算の小数点位置などの量子化パラメータを調整する。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができ、小数点位置確定方法は、上記の式(2)を参照することができる。または式(14)。ここでは繰り返さない。
たとえば、カレント検査の反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には100回目の反復から105番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、100回目の反復を前述のサブ検査反復として使用し、100回目の反復に対応する小数点位置s1を計算することができる。小数点位置s1は、100回目の反復、101回目の反復、および102回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として103番目の反復を使用でき、プロセッサは、103番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅nに従って103番目の反復を確定することもできる。2つの小数点位置の反復間隔に対応する小数点位置s2は、前述の小数点位置s2を103回目の反復から105回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
別の例では、カレント検査反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には、101回目の反復から106回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅n1に従って、第1の小数点位置反復間隔に対応する小数点位置がs1であると確定し得る。小数点位置s1は、101回目の反復、102回目の反復、および103回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として104番目の反復を使用でき、プロセッサは、104番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅n1に従って、4番目の反復を確定することもできる。上記の小数点位置s2を104回目の反復から106回目の反復まで共有することにより、2つの小数点位置の反復間隔に対応する小数点位置s2を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、106回の反復で再び量子化予定のデータのデータ変動範囲によって、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを確定し得る。
オプションで、小数点位置の反復間隔は1に等しくてもかまいません。つまり、小数点位置は反復ごとに1回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも1つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新され得る、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくあり得る。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
別の実施形態では、プロセッサは、小数点位置の変動範囲および量子化予定のデータのデータビット幅によって、量子化予定のデータのデータ変動範囲を包括的に確定し、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定することができる。目標反復間隔を使用して、確定されたデータビット幅を更新できる。つまり、プロセッサは、目標反復間隔の検証反復ごとに、確定されたデータビット幅を更新できる。小数点位置は固定点データの精度を反映でき、データビット幅は固定点データのデータ表現範囲を反映できるため、小数点位置の変動範囲と量子化目標データのデータビット幅変化を統合することで、量子化予定のデータの精度を考慮できるようになる。データ表現範囲を満たすこともできる。任意選択で、小数点位置の変動範囲は、前述の第1の誤差によって表すことができ、データビット幅の変化は、前述の量子化誤差によって確定することができる。具体的には、図3−16に示すように、上記の方法には次のものが含まれる。
S400、第1の誤差を取得する。第1の誤差は小数点位置の変動範囲を表すことができ、小数点位置の変動範囲は量子化予定のデータのデータ変動範囲を表すことができる。具体的には、第1の誤差の計算方法は上記の操作S110を参照できる。ここでは説明を反復ない。
S500、第2の誤差を取得する。ここで、第2の誤差は、データビット幅の変化を表すためである。
任意選択で、前述の第2の誤差は、量子化誤差によって確定され得、第2の誤差は、前述の量子化誤差と正の相関がある。具体的には、図3−16に示されるように、前述の操作S500は、以下を含み得る。
S510で、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って量子化誤差を確定する。カレント検査反復の量子化データは、初期データビット幅によってカレント検査反復の量子化データを比較する。データは量子化される。具体的な量子化誤差の確定方法については、上記の操作S114の説明を参照してください。ここでは繰り返さないことにする。
S520、量子化誤差に従って第2の誤差を確定する。ここで、第2の誤差は量子化誤差と正の相関がある。
diffupdate2=θ*diff2 bit 式(44)
ここで、diffupdate2は上記の第2の誤差を表し、diffbitは上記の量子化誤差を表し、θはハイパーパラメータにすることができる。
S600で、第2の誤差と第1の誤差によって、目標反復間隔を確定する。
具体的には、プロセッサは、第1の誤差および第2の誤差によって目標誤差を計算し、目標誤差に従って目標反復間隔を確定することができる。オプションで、第1の誤差と第2の誤差に対して加重平均計算を実行することにより、目標誤差を取得できる。たとえば、target error=K*first error+(1−K)*second error、ここで、Kはハイパーパラメータである。その後、プロセッサは、目標誤差に従って目標反復間隔を確定することができ、目標反復間隔は、目標誤差と負の相関がある。つまり、目標誤差が大きいほど、目標反復間隔は短くなる。
オプションで、第1の誤差と第2の誤差の最大値に従って目標誤差を確定することもでき、第1の誤差または第2の誤差の重みは0である。具体的には、図3−17に示されるように、前述の操作S600は、以下を含み得る。
S610、第1の誤差と第2の誤差うちの最大値を目標誤差とする。
具体的には、プロセッサは、第1の誤差diffupdate1と第2の誤差diffupdate2の大きさを比較し、第1の誤差diffupdate1が第2の誤差diffupdate2より大きい場合、目標誤差は第1の誤差diffupdate1と等しくなる。第1の誤差diffupdate1が第2の誤差よりも小さい場合、目標誤差は第2の誤差diffupdate2と等しくなる。第1の誤差diffupdate1が第2の誤差と等しい場合、目標誤差は第1の誤差diffupdate1または第2の誤差diffupdate2である可能性がある。つまり、目標誤差diffupdateは、次の式に従って確定できる。
diffupdate=max(diffupdate1,diffupdate2) 式(45)
ここで、diffupdateは目標誤差を参照し、diffupdate1は第1の誤差を参照し、diffupdate2は第2の誤差を指す。
S620、目標誤差に従って目標反復間隔を確定する。ここで、目標誤差は目標反復間隔と負の相関がある。具体的には、目標反復間隔は次のように確定できる。
目標反復間隔は、次の式に従って計算できる。
I=β/diffupdate−γ 式(46)
ここで、Iは目標反復間隔を表し、diffupdateは上記の目標誤差を表し、δとγはハイパーパラメータにすることができる。
任意選択で、前述の実施形態では、データビット幅は、ニューラルネットワーク演算において可変であり、データビット幅の変化傾向は、第2の誤差によって測定することができる。この場合、図3−17に示すように、目標反復間隔を確定した後、プロセッサは操作S630を実行して、目標反復間隔の反復に対応するデータビット幅を確定できる。ここで、データは目標反復間隔の反復に対応する。ビット幅は同じである。具体的には、プロセッサは、カレント検査反復で量子化予定のデータによって、目標反復間隔に対応するデータビット幅を確定することができる。言い換えると、ニューラルネットワーク演算中のデータビット幅は、1つおきの目標反復間隔で更新される。オプションで、目標反復間隔に対応するデータビット幅は、カレント検査反復の目標データビット幅である場合がある。カレント検査反復の目標データビット幅については、上記の操作S114およびS115を参照してください。これらは、ここでは繰り返されない。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査の反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が6であると判断し、プロセッサは、目標反復間隔にそれぞれ100回目の反復〜105回目の反復である6回の反復が含まれると判断できる。。この時点で、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から105回目の反復まで使用され、101回目から105回目の反復の必要はない。目標データのビット幅を計算することにより、計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が6であると判断する。次に、プロセッサは、目標反復間隔に6つの反復が含まれていると判断する場合がある。これらは、それぞれ101番目の反復から106番目の反復である。このとき、プロセッサは100回目の反復の目標データビット幅を確定でき、100回目の反復の目標データビット幅は101回目から106回目の反復まで使用され、101回目から106回目の反復までのターゲットを計算する必要はない。データビット幅は計算量を減らし、量子化効率と計算効率を向上させる。その後、106回目の反復をカレント検査反復として使用でき、目標反復間隔の確定とデータビット幅の更新という上記の操作が繰り返される。
さらに、プロセッサは、検査反復時に目標反復間隔の量子化パラメータを確定して、目標反復間隔によってニューラルネットワーク動作の量子化パラメータを調整することもできる。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータをデータビット幅と同期して更新することができる。
ある場合には、目標反復間隔の反復に対応する量子化パラメータが一致している可能性がある。任意選択で、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅によってカレント検査反復に対応する小数点位置を確定し、カレント検査反復に対応する小数点位置を標的反復として使用することができる。間隔に対応する小数点位置。目標反復間隔の反復に対応する小数点位置は同じである。つまり、目標反復間隔の各反復は、カレント検査反復の小数点位置などの量子化パラメータを使用し、各反復での量子化パラメータの更新と調整を回避することで、量子化プロセスでの計算量を減らし、量子化を改善する。運用効率。
オプションで、目標反復間隔の反復に対応するスケーリング係数は一致している場合がある。プロセッサは、現在の検査反復の量子化予定のデータによって、現在の検査反復に対応するスケーリング係数を確定し、現在の検査反復に対応するスケーリング係数を、目標反復間隔の各反復のスケーリング係数として使用することができる。ここで、目標反復間隔の反復に対応するスケーリング係数は一致している。
オプションで、目標反復間隔の反復に対応するオフセットは一致している。プロセッサは、カレント検査反復の量子化データに従ってカレント検査反復に対応するオフセットを確定し、カレント検査反復に対応するオフセットを、目標反復間隔における各反復のオフセットとして使用することができる。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。目標反復間隔の反復に対応するオフセットは一致している。
たとえば、目標反復間隔は、カレント検査反復から反復の数量を計算できる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の1番目の反復である場合がある。たとえば、カレント検査反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復、101回目の反復、102回目の反復であると判断できる。さらに、プロセッサは、100回目の反復に対応する量子化予定のデータや目標データビット幅によって、100回目の反復に対応する小数点位置などの量子化パラメータを確定でき、当該100回目の反復に対応する小数点位置などの量子化パラメータを使用して、100回目の反復、101回目の反復、および102回目の反復を量子する。このように、プロセッサは、101回目の反復や102回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
オプションで、目標反復間隔は、カレント検査反復の次の反復から計算することもできる。つまり、目標反復間隔に対応する検査反復は、目標反復間隔の終了反復でもある。たとえば、カレント検査反復は100回目の反復であり、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔の反復間隔が3であると判断する。次に、プロセッサは、目標反復間隔に3つの反復が含まれていると判断する場合がある。これらは、それぞれ101回目の反復、102回目の反復、および103回目の反復である。さらに、プロセッサは、100回目の反復に対応する量子化予定のデータや目標データビット幅によって、100回目の反復に対応する小数点位置などの量子化パラメータを確定でき、当該100回目の反復に対応する小数点位置などの量子化パラメータを使用して、100回目の反復、101回目の反復、および102回目の反復を量子する。このように、プロセッサは、102回目の反復や103回目の反復で小数点位置などの量子化パラメータを計算する必要がないため、量子化プロセスでの計算量が減り、量子化操作の効率が向上する。
本開示の実施形態において、同じ目標反復間隔における各反復に対応するデータビット幅および量子化パラメータは同じである、すなわち、同じ目標反復間隔における各反復に対応するデータビット幅、小数点位置、スケーリング係数、およびオフセットはすべてである。ニューラルネットワークのトレーニングまたは微調整プロセス中に、量子化予定のデータの量子化パラメータの頻繁な調整を回避でき、量子化プロセスでの計算量を減らすことができるため、量子化効率が向上する。さらに、データ変更の範囲に応じてトレーニングまたは微調整のさまざまな段階で量子化パラメータを動的に調整することにより、量子化の精度を保証できる。
別の場合において、プロセッサはまた、ニューラルネットワーク操作における量子化パラメータを調整するために、小数点位置などの量子化パラメータに対応する小数点位置反復間隔によって、目標反復間隔における量子化パラメータを確定し得る。つまり、ニューラルネットワーク演算の小数点位置などの量子化パラメータは、データビット幅と非同期に更新できる。プロセッサは、目標反復間隔の検査反復で、データビット幅や小数点位置などの量子化パラメータを更新できる。また、プロセッサは、小数点位置によって反復することもできる。間隔は、目標反復間隔の反復に対応する小数点位置を個別に更新する。
具体的には、プロセッサは、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定することもでき、ここで、目標反復間隔の反復に対応するデータビット幅は一致している。その後、プロセッサは、データビット幅および目標反復間隔に対応する小数点位置反復間隔によって、ニューラルネットワーク演算プロセスの小数点位置などの量子化パラメータを調整できる。すなわち、図3−17に示すように、目標反復間隔に対応するデータビット幅を確定した後、プロセッサは、動作S640を実行して、取得された小数点位置反復間隔および目標反復間隔に対応するデータビット幅を調整することもできる。目標反復間隔で対応する小数点位置を反復して、ニューラルネットワーク演算で小数点位置を調整する。ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。オプションで、小数点位置の反復間隔はハイパーパラメータにすることができる。たとえば、小数点位置の反復間隔はユーザー定義の入力にすることができる。
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。小数点位置の反復間隔が上記の目標反復間隔と同じである場合、プロセッサは、データビット幅やカレント検査反復での小数点位置などの量子化パラメータを同期的に更新できる。さらに任意選択で、目標反復間隔の反復に対応するスケーリング係数は一致していてもよい。さらに、目標反復間隔の反復に対応するオフセットは一致している。このとき、目標反復間隔の反復に対応するデータビット幅や小数点位置などの量子化パラメータがすべて同じであるため、計算量を減少し、量子化効率と計算効率を向上させることができる。特定の実装プロセスは、基本的に前述の実施形態と同じであり、上記の説明を参照することができるが、ここでは繰り返さない。
小数点位置の反復間隔が上記の目標反復間隔よりも小さい場合、プロセッサは、目標反復間隔に対応する検査反復でデータビット幅と小数点位置およびその他の量子化パラメータを更新し、小数点位置反復間隔によって確定されるサブ検査反復で更新できる。小数点位置などの量子化パラメータ。データビット幅を変更しない場合は、量子化予定のデータに応じて小数点位置などの量子化パラメータを微調整できるため、同じ目標反復間隔内で小数点位置などの量子化パラメータを調整して、量子化精度をさらに向上させることができる。
具体的には、プロセッサは、カレント検査反復および小数点位置反復間隔によって副検査反復を確定することができ、副検査反復は、小数点位置を調整するために使用され、副検査反復は、目標反復間隔における反復であり得る。さらに、プロセッサは、サブ検査反復で量子化予定のデータおよび目標反復間隔に対応するデータビット幅によって、目標反復間隔での反復に対応する小数点位置を調整することができ、小数点位置確定方法は、上記の式(2)を参照することができる。または式(14)。ここでは繰り返さない。
たとえば、カレント検査の反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には100回目の反復から105番目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、前述のサブ検査反復として100回目の反復を使用し、100回目の反復に対応する小数点位置s1を計算することができる。小数点位置s1は、100回目の反復、101回目の反復、および102回目の反復の間で共有されて、量子化が実行される。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として103番目の反復を使用でき、プロセッサは、103番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅nに従って103番目の反復を確定することもできる。2つの小数点位置の反復間隔に対応する小数点位置s2は、前述の小数点位置s2を103回目の反復から105回目の反復まで共有することによって量子化できる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
別の例では、カレント検査反復は100回目の反復であり、目標反復間隔は6であり、目標反復間隔には、101回目の反復から106回目の反復までの反復が含まれる。プロセッサによって取得される小数点位置の反復間隔はIs1=3であり、小数点位置は、カレント検査の反復から3回の反復で1回調整できる。具体的には、プロセッサは、カレント検査反復で量子化予定のデータおよびカレント検査反復に対応する目標データビット幅n1に従って、第1の小数点位置反復間隔に対応する小数点位置がs1であると確定し得る。100回目の反復、102回目の反復と103回目の反復は、量子化のために前述の小数点位置s1を共有する。その後、プロセッサは、小数点位置反復間隔Is1に従って、前述のサブ検査反復として104番目の反復を使用でき、プロセッサは、104番目の反復に対応する量子化データおよび目標反復間隔に対応するデータビット幅n1に従って、4番目の反復を確定することもできる。上記の小数点位置s2を104回目の反復から106回目の反復まで共有することにより、2つの小数点位置の反復間隔に対応する小数点位置s2を量子化することができる。本開示の実施形態において、更新前の前述の小数点位置s1および更新後の小数点位置s2の値は、同じであっても異なっていてもよい。さらに、プロセッサは、次の目標反復間隔、および次の目標反復間隔に対応するデータビット幅および小数点位置などの量子化パラメータを、106回目の反復で再び量子化予定のデータのデータ変動範囲によって確定することができる。
オプションで、小数点位置の反復間隔は1に等しくてもかまいません。つまり、小数点位置は反復ごとに1回更新される。オプションで、小数点位置の反復間隔は同じでも異なっていてもかまいません。たとえば、目標反復間隔に含まれる少なくとも1つの小数点位置反復間隔は、順次増やす場合がある。ここでは、一例のみを使用して、この実施形態の実施方法を説明し、開示を限定するために使用しない。
オプションで、目標反復間隔の反復に対応するスケーリング係数も一致していない場合がある。さらに任意選択で、スケーリング係数は、前述の小数点位置と同期して更新することができ、すなわち、スケーリング係数に対応する反復間隔は、前述の小数点位置反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたスケーリング係数を更新する。
オプションで、目標反復間隔の反復に対応するオフセットも不整合になる場合がある。さらに、オフセットは、前述の小数点位置と同期して更新することができる。つまり、オフセットに対応する反復間隔は、前述の小数点位置の反復間隔に等しくすることができる。つまり、プロセッサが確定された小数点位置を更新するたびに、それに応じて確定されたオフセットを更新する。もちろん、オフセットは前述の位置位置またはデータビット幅と非同期に更新することもできるが、ここでは特に制限されていない。さらに、プロセッサは、量子化予定のデータのすべての要素の中から最小値と最大値を確定し、小数点位置やスケーリング係数などの量子化パラメータをさらに確定する場合がある。詳細については、上記の説明を参照してください。
他の任意選択の実施形態では、小数点位置、スケーリング係数、およびオフセットの3つの量子化パラメータも非同期であり得る、すなわち、小数点位置反復間隔、スケーリング係数反復間隔、およびオフセット反復間隔のうちの1つ、または3つすべてが異なる。ここで、小数点位置の反復間隔とスケーリング係数の反復間隔は、両方とも目標反復間隔以下である。オフセット反復間隔は、目標反復間隔よりも小さくすることができる。オフセットは、量子化予定のデータの分布にのみ関連するため、代替の実施形態では、オフセットは、目標反復間隔と完全に非同期にすることもでき、すなわち、オフセット反復間隔は、目標反復間隔よりも大きくすることもできる。
任意の実施形態において、上記の方法は、ニューラルネットワークのトレーニングまたは微調整プロセスにおいて使用され得、ニューラルネットワークの微調整またはトレーニングプロセスに含まれる操作データの量子化パラメータの調整を実現し、ニューラルネットワークの演算プロセスを改善する。に含まれる算術データの量子化精度と効率。動作データは、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つであり得る。図3−5に示すように、量子化予定のデータのデータ変化曲線によれば、トレーニングや微調整の初期段階では、各反復で量子化予定のデータの差が比較的大きく、量子化予定のデータのデータ変動範囲が比較的鋭い。このとき、目標反復間隔の値を小さくすることができ、目標反復間隔の量子化パラメータを時間内に更新して、量子化の精度を確保することができる。トレーニングや微調整の中間段階では、量子化予定のデータのデータ変動範囲が徐々にフラットになる傾向があるが、このとき、目標反復間隔の値を大きくして、量子化パラメータの頻繁な更新を回避し、量子化効率と計算効率を向上させることができる。トレーニングまたは微調整の後の段階では、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある(つまり、ニューラルネットワークの正の演算結果がプリセット参照値に近づくと、ニューラルネットワークのトレーニングまたは微調整は安定する傾向がある)、このとき、目標反復間隔の値を増やし続けて、量子化効率と計算効率をさらに向上させることができる。上記のデータ変化の傾向に基づいて、さまざまな方法を使用して、ニューラルネットワークのトレーニングまたは微調整のさまざまな段階で目標反復間隔を確定し、量子化の精度を確保することに基づいて量子化効率と計算効率を向上させることができる。
具体的には、図3−18に示すように、この方法をニューラルネットワークのトレーニングまたは微調整プロセスで使用する場合、この方法には次のものも含まれる。
S710、プロセッサは、カレント反復が第1のプリセット反復より大きいかどうかを判断する。
ここで、カレント反復は、プロセッサによって現在実行されている反復演算を指する。オプションで、第1のプリセット反復はハイパーパラメータであり得、第1のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定され得、そして第1のプリセット反復はまた、ユーザー定義設定であり得る。オプションで、第1のプリセット反復は、1つのトレーニング周期(エポック)に含まれる反復の総数より少なくてもかまいません。1つのトレーニング周期は、データ集合内で量子化されるすべてのデータが1つの順方向演算と1つの逆方向演算を完了することを意味する。
カレント反復が第1のプリセット反復以下である場合、プロセッサは操作S711を実行して、第1のプリセット反復間隔を目標反復間隔として設定し、第1のプリセット反復間隔によって調整することができる。量子化パラメータ。
オプションで、プロセッサは、ユーザーによって入力された第1のプリセット反復間隔を読み取り、第1のプリセット反復間隔と第1のプリセット反復間隔との間の対応に従って、第1のプリセット反復間隔を確定することができる。オプションで、第1のプリセット反復間隔をハイパーパラメータにすることができ、第1のプリセット反復間隔をユーザーが設定することもできる。このとき、プロセッサは、ユーザーが入力した第1のプリセット反復と第1のプリセット反復間隔を直接読み取り、第1のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。本開示の実施形態では、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔を確定する必要はない。
たとえば、ユーザーが入力した第1のプリセット反復が100回目の反復で、第1のプリセット反復間隔が5の場合、カレント反復が100回目の反復以下の場合、量子化パラメータは第1のプリセット反復間隔によって更新できる。つまり、プロセッサは、1番目の反復から100回目の反復までのニューラルネットワークのトレーニングまたは微調整中に、量子化パラメータが5回の反復ごとに更新されることを確定できる。具体的には、プロセッサは、1番目の反復に対応するデータビット幅n1および小数点位置s1などの量子化パラメータを確定し、データビット幅n1および小数点位置s1を使用して、第1の反復から第5の反復までのデータを分析し得る。量子化予定のデータは量子化される。つまり、1番目の反復から5番目の反復まで同じ量子化パラメータを使用できる。その後、プロセッサは、6回目の反復に対応するデータビット幅n2や小数点位置s2などの量子化パラメータを確定し、6回目の反復から10回目の反復までの待機時間にデータビット幅n2や小数点位置s2などの量子化パラメータを使用できる。量子化後のデータは量子化される。つまり、6番目の反復から10番目の反復まで同じ量子化パラメータを使用できる。同様に、プロセッサは、100回目の反復が完了するまで、上記の量子化方法に従うことができる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
別の例として、ユーザーが入力した第1のプリセット反復が100回目の反復であり、第1のプリセット反復間隔が1の場合、カレント反復が100回目の反復以下の場合、量子化パラメータは第1のプリセット反復間隔によって更新できる。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の1番目の反復から100回目の反復までの各反復で量子化パラメータが更新されることを確定できる。具体的には、プロセッサは、1番目の反復に対応するデータビット幅n1および小数点位置s1などの量子化パラメータを確定し、データビット幅n1および小数点位置s1を使用して、1番目の反復で量子化予定のデータを量子化することができる。その後、プロセッサは、2回目の反復に対応するデータビット幅n2や小数点位置s2などの量子化パラメータを確定し、データビット幅n2と小数点位置s2を使用して、2回目の反復で量子化予定のデータを量子化する、……。同様に、プロセッサは、データビット幅n100や100回目の反復の小数点位置s100などの量子化パラメータを確定し、データビット幅n100と小数点位置s100を使用して、100回目の反復で量子化予定のデータを量子化できる。各反復間隔でのデータビット幅や小数点位置などの量子化パラメータを確定する方法は、上記の説明を参照することができ、ここでは繰り返さない。
上記は、データビット幅と量子化パラメータの同期更新の一例にすぎない。他のオプションの実施形態では、各目標反復間隔において、プロセッサは、小数点位置の変動範囲によって、小数点位置の反復間隔を確定することもできる。および小数点位置の反復間隔によって、小数点位置などの量子化パラメータを更新する。
オプションで、カレント反復が第1のプリセット反復よりも大きい場合、ニューラルネットワークのトレーニングまたは微調整が中期段階にあることを示すことができる。この時点で、履歴反復で量子化予定のデータのデータ変動範囲を取得し、量子化予定のデータのデータを取得できる。変動の範囲によって目標反復間隔が決まり、目標反復間隔は上記の第1のプリセット反復間隔よりも大きくなる可能性があるため、量子化パラメータの更新回数が減り、量子化効率と計算効率が向上する。具体的には、カレント反復が第1のプリセット反復よりも大きい場合、プロセッサは操作S713を実行して、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔によって量子化パラメータを調整することができる。
上記の例を続けると、ユーザーが入力した第1のプリセット反復は100回目の反復であり、第1のプリセット反復間隔は1である。カレント反復が100回目の反復以下の場合、第1のプリセット反復間隔によって量子化を更新できる。パラメータ。つまり、プロセッサは、ニューラルネットワークのトレーニングまたは微調整の1番目の反復から100回目の反復までの各反復で量子化パラメータが更新されることを確定でき、特定の実装は上記の説明を参照できる。カレント反復が100回目の反復より大きい場合、プロセッサは、カレント反復で量子化予定のデータと前の履歴反復で量子化予定のデータ、および量子化予定のデータのデータ変動範囲によって、量子化予定のデータのデータ変動範囲を確定できる。目標反復間隔を確定する。具体的には、カレント反復が100回目の反復より大きい場合、プロセッサは、カレント反復に対応するデータビット幅を適応的に調整し、カレント反復に対応する目標データビット幅を取得し、カレント反復に対応する目標データビット幅を変更できる。目標反復間隔のデータビット幅として、目標反復間隔の反復に対応するデータビット幅は一致している。同時に、プロセッサは、カレント反復に対応する目標データビット幅および量子化予定のデータによってカレント反復に対応する小数点位置を確定し、カレント反復に対応する小数点位置に従って第1の誤差を確定し得る。プロセッサはまた、カレント反復に対応して量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第2の誤差を確定することができる。その後、プロセッサは、第1の誤差および第2の誤差によって目標反復間隔を確定することができ、目標反復間隔は、前述の第1のプリセット反復間隔よりも大きくてもよい。さらに、プロセッサは、目標反復間隔における小数点位置またはスケーリング係数などの量子化パラメータを確定することができ、特定の確定方法は、上記の説明を参照することができる。
たとえば、カレント反復が100回目の反復である場合、プロセッサは、量子化予定のデータのデータ変動範囲によって、目標反復間隔が3であると判断し、プロセッサは、目標反復間隔に3回の反復が含まれ、それぞれが100回目の反復、101回目の反復、および102回目の反復であると判断できる。プロセッサはまた、100回目の反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って100回目の反復に対応する第2の誤差および目標データビット幅を確定し、目標反復間隔に対応するデータとして目標データビット幅を使用し得る。ビット幅。100回目の反復、101回目の反復、および102回目の反復に対応するデータビット幅はすべて、100回目の反復に対応する目標データビット幅である。プロセッサはまた、100回目の反復で量子化予定のデータおよび100回目の反復に対応する目標データビット幅によって、100回目の反復に対応する小数点位置およびスケーリング係数などの量子化パラメータを確定し得る。その後、100回目の反復に対応する量子化パラメータを使用して、100回目の反復、101回目の反復、および102回目の反復を量子化する。
さらに、図3−19に示すように、上記の方法には次のものも含まれる。
カレント反復が第1のプリセット反復よりも大きい場合、プロセッサはさらに操作S712を実行することができる。すなわち、プロセッサは、カレント反復が第2のプリセット反復よりも大きいかどうかをさらに確定することができる。ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。オプションで、前述の第2のプリセット反復はハイパーパラメータであり、第2のプリセット反復は少なくとも1つのトレーニング周期の反復の総数より大きくてもよい。オプションで、第2のプリセット反復は、量子化予定のデータのデータ変動曲線に従って確定できる。オプションで、第2のプリセット反復もユーザーがカスタマイズできる。
カレント反復が第2のプリセット反復以上である場合、プロセッサは操作S714を実行し、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって第2のプリセット反復間隔を調整することができる。ニューラルネットワークの量子化プロセスのパラメータ。カレント反復が第1のプリセット反復よりも大きく、カレント反復が第2のプリセット反復よりも小さい場合、プロセッサは上記の操作S713を実行し、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、そして目標反復間隔は、量子化パラメータを調整する。
オプションで、プロセッサは、ユーザーが設定した第2のプリセット反復を読み取り、第2のプリセット反復と第2のプリセット反復間隔(第2のプリセット反復)の間の対応関係に従って、第2のプリセット反復間隔を確定できる。間隔は、最初にプリセット反復間隔よりも大きくなっている。オプションで、ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント反復が第2のプリセット反復以上であると判断される。例えば、カレント反復の順方向演算結果がプリセット基準値に近づくと、ニューラルネットワークの収束度がプリセット条件を満たしていると判断できる。このとき、カレント反復が2回目のプリセット反復以上であると判断できる。または、カレント反復に対応する損失値がプリセットしきい値以下の場合、ニューラルネットワークの収束度がプリセット条件を満たすと判断できる。
任意選択で、前述の第2のプリセット反復間隔はハイパーパラメータであり得、第2のプリセット反復間隔は、少なくとも1つのトレーニング周期の反復の総数以上であり得る。オプションで、第2のプリセット反復間隔はユーザーがカスタマイズできる。プロセッサは、ユーザーが入力した第2のプリセット反復と第2のプリセット反復間隔を直接読み取り、第2のプリセット反復間隔によってニューラルネットワーク演算の量子化パラメータを更新できる。たとえば、第2のプリセット反復間隔は、1つのトレーニング周期の反復の総数に等しくなる場合がある。つまり、量子化パラメータは、トレーニング周期(エポック)ごとに1回更新される。
さらに、上記の方法には以下も含まれる。
カレント反復が第2のプリセット反復以上である場合、プロセッサは、各検査反復で現在のデータビット幅を調整する必要があるかどうかを判断することもできる。現在のデータビット幅を調整する必要がある場合、プロセッサは上記の操作S714から操作S713に切り替えてデータビット幅を再確定し、データビット幅が量子化予定のデータの要件を満たすことができるようにすることができる。
具体的には、プロセッサは、前述の第2の誤差によってデータビット幅を調整する必要があるかどうかを確定することができる。プロセッサはまた、前述の操作S715を実行して、第2の誤差がプリセット誤差値より大きいかどうかを確定し得、カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、スイッチして操作を実行する。S713:量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、反復間隔によってデータビット幅を再確定する。カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値以下の場合、操作S714の実行を続行し、第2のプリセット反復間隔を目標反復間隔として使用し、プリセット反復間隔によって、ニューラルネットワークの量子化プロセスのパラメータを調整する。ここで、プリセット誤差値は、量子化誤差に対応するプリセットしきい値に従って確定される場合がある.第2の誤差がプリセット誤差値よりも大きい場合は、データビット幅をさらに調整する必要がある可能性がある。プロセッサは、量子化予定のデータに基づいている場合がある。のデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
たとえば、2番目にプリセット反復間隔は、1つのトレーニング周期の反復の総数である。カレント反復が第2のプリセット反復以上の場合、プロセッサは第2のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期(エポック)ごとに1回量子化パラメータを更新する。このとき、各トレーニング周期の1番目の反復は検査反復と見なされる。各トレーニング周期の1番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定し、量子化誤差に従って第2の誤差を確定できる。そして、次の式に従って、第2の誤差がプリセット誤差値より大きいかどうかを判別する。
ここで、diffupdate2は第2の誤差を表し、diffbitは量子化誤差を表し、θはハイパーパラメータを表し、Tはプリセット誤差値を表す。オプションで、プリセット誤差値は、第1のプリセットしきい値をハイパーパラメータで割った値に等しくなる。もちろん、プリセット誤差値もハイパーパラメータである可能性がある。たとえば、プリセット誤差値は次の式に従って計算できる。T=th/10、ここでthは第1のプリセットしきい値を表し、ハイパーパラメータの値は10である。
第2の誤差diffupdate2がプリセット誤差値Tより大きい場合は、データビット幅がプリセット要件を満たしていない可能性があることを意味する。この時点で、第2のプリセット反復間隔は量子化パラメータの更新に使用できなくなり、プロセッサは量子化予定のデータを追跡する可能性がある。変動範囲によって、データビット幅がプリセット要件を確実に満たすように、目標反復間隔が決まる。つまり、第2の誤差diffupdate2がプリセット誤差値Tより大きい場合、プロセッサは前述の操作S714から前述の操作S713に切り替わる。
もちろん、他の実施形態では、プロセッサは、前述の量子化誤差に従ってデータビット幅を調整する必要があるかどうかを確定することができる。たとえば、2番目にプリセット反復間隔は、1つのトレーニング周期の反復の総数である。カレント反復が第2のプリセット反復以上の場合、プロセッサは第2のプリセット反復間隔によって量子化パラメータを更新できる。つまり、トレーニング周期(エポック)ごとに1回量子化パラメータを更新する。ここで、各トレーニングサイクルの1番目の反復が検査反復として使用される。各トレーニングサイクルの1番目の反復で、プロセッサは検査反復で量子化予定のデータによって量子化誤差を確定できる。量子化誤差が第1のプリセットしきい値以上の場合、データビット幅がプリセットしきい値を満たさない可能性がある。プロセッサが上記の動作S714から上記の動作S713に切り替わると想定される。
オプションの実施形態では、小数点位置、スケーリング係数、およびオフセットなどの前述の量子化パラメータを表示装置に表示することができる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの量子化パラメータを学習でき、プロセッサーによって確定された量子化パラメータを適応的に変更することもできる。同様に、前述のデータビット幅と目標反復間隔も表示装置で表示できる。このとき、ユーザーはディスプレイ装置を介してニューラルネットワーク演算プロセスの目標反復間隔やデータビット幅などのパラメータを学習でき、プロセッサーによって確定された目標反復間隔やデータビット幅を適応的に変更することもできる。
前述の方法の実施形態について、簡単な説明のために、それらはすべて一連の作用の組み合わせとして表されるが、当技術分野の当業者は、本開示が記載された一連の作用によって限定されないことを理解すべきであることに留意されたい。この開示によれば、特定のステップは、他の順序でまたは同時に実行することができるからである。第二に、当技術分野の当業者はまた、本明細書に記載の実施形態が任意の実施形態であり、関連するアクションおよびモジュールが本開示によって必ずしも必要とされないことを認識すべきである。
本開示の一実施形態はまた、ニューラルネットワークの量子化パラメータ調整装置200を提供する。量子化パラメータ調整装置200は、プロセッサに設置され得る。例えば、量子化パラメータ調整装置200は、汎用プロセッサに配置することができ、別の例では、量子化パラメータ調整装置を、人工知能プロセッサに配置することもできる。図3−20に示すように、装置200には次のものが含まれる。
取得モジュール210は、量子化予定のデータのデータ変動範囲を取得するためである。
反復間隔確定モジュール220は、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク動作における量子化パラメータを調整する。少なくとも1回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装する。
オプションで、量子化パラメータにはドット位置が含まれ、ドット位置は、量子化予定のデータに対応する量子化データ内の小数点位置である。図3−21に示すように、装置にはさらに次のものが含まれる。
量子化パラメータ確定モジュール230は、ニューラルネットワーク動作を調整するために、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔における反復に対応する小数点位置を確定するように構成される。
小数点位置;
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
任意選択で、量子化パラメータは、量子化予定のデータに対応する量子化データ内の小数点位置である小数点位置を含む;図3−23または図3−24に示されるように、装置はさらに以下を含む。
データビット幅確定モジュール240は、カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成される。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
量子化パラメータ確定モジュール230は、取得された小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔における反復に対応する小数点位置を調整して、ニューラルネットワーク動作における点を調整するように構成される。ポジション;
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
オプションで、小数点位置の反復間隔は、目標反復間隔以下である。
オプションで、量子化パラメータにはさらにスケーリング係数が含まれ、スケーリング係数は小数点位置と同期して更新される。
オプションで、量子化パラメータにはさらにオフセットが含まれ、オフセットは小数点位置と同期して更新される。
任意選択で、図3ー24に示されるように、データビット幅確定モジュール240は、以下を含む。
量子化誤差確定ユニット241は、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成される。ここで、カレント検査反復の量子化データは、カレント検査反復に対するものである。量子化予定のデータは、量子化によって取得される。
データビット幅確定ユニット242は、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
オプションとして、データビット幅確定ユニット242は、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
量子化誤差が第1のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第2のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
任意選択で、データビット幅確定ユニット242は、量子化誤差が第1のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて、カレント検査反復に対応するデータを取得するように構成される。目標データのビット幅は、特に次の目的で使用される。
量子化誤差が第1のプリセットしきい値以上の場合、第1のプリセットビット幅のステップ長さによって第1の中間データビット幅を確定する。
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第1のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第1の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
任意選択で、データビット幅確定ユニット242は、量子化誤差が第2のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させて、対応するカレント検査反復を取得するように構成される。の目標データビット幅が特に次の目的で使用される場合:
量子化誤差が第2のプリセットしきい値以下の場合、第2のプリセットビット幅のステップ長さによって第2の中間データビット幅を確定する。
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第2のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第2の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
オプションで、取得モジュール210は、以下を含む。
第1の取得モジュール211は、小数点位置の変動範囲を取得するように構成され、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、小数点位置の変動範囲と同じである。データの変化の大きさは正の相関がある。
任意選択で、図3−23または図3−24に示されるように、第1の取得モジュール211は、以下を含む。
第1の平均値確定ユニット2110は、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第1の平均値を確定するように構成される。一つ前の検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
第2の平均値確定ユニット2111は、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定するように構成される;ここで、カレント検査反復に対応する小数点位置は、に基づく。カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
第1の誤差確定ユニット2112は、第1の平均値および第2の平均値に従って第1の誤差を確定するように構成され、第1の誤差は、小数点位置の変動範囲を表すためである。
オプションとして、第2の平均値確定ユニット2111は、特に以下のように構成される。
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
第2の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
任意選択で、第2の平均値確定ユニット2111は、カレント検査反復に対応する小数点位置および第1の平均値に従って第2の平均値を確定するように特別に構成される。
任意選択で、第2の平均値確定ユニット2111は、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新するようにさらに構成される。
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
任意選択で、第2の平均値確定ユニット2111は、カレント検査反復の取得されたデータビット幅調整値に従って、特に以下に第2の平均値を更新するように構成される。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
任意選択で、反復間隔確定モジュール220は、第1の誤差によって目標反復間隔を確定するように構成され、目標反復間隔は、第1の誤差と負の相関がある。
オプションとして、取得モジュール210はさらに以下を含む。
第2の取得モジュール212は、データビット幅の変化傾向を取得するように構成される;小数点位置の変動範囲およびデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
任意選択で、反復間隔確定モジュール220は、取得された第1の誤差および第2の誤差によって目標反復間隔を確定するように構成される;ここで、第1の誤差は、小数点位置の変化の範囲を表すために使用され、第2の誤差は、データビット幅の変化傾向を特徴づけるためである。
オプションとして、ルート反復間隔確定モジュール220は、特に以下について、取得された第1の誤差および第2の誤差によって目標反復間隔を確定するように構成される。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
任意選択で、第2の誤差は、量子化誤差によって確定される;ここで、量子化誤差は、カレント検査反復で量子化予定のデータおよびカレント検査反復の量子化データによって確定され、第2の誤差は、量子化誤差とは異なる。誤差は正の相関がある。
オプションで、装置は、ニューラルネットワークのトレーニングまたは微調整を実装するためである。反復間隔確定モジュール220は、以下の目的にも使用される。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
オプションで、反復間隔確定モジュール220は、以下のようにさらに構成される:カレント反復が第1のプリセット反復以下である場合、第1のプリセット反復間隔を目標反復間隔として使用し、に従って計算を実行する。第1のプリセット反復間隔で量子化パラメータを調整する。
オプションで、反復間隔確定モジュール220はさらに以下のように構成される。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなっている。
オプションで、反復間隔確定モジュール220は、以下のようにさらに構成される:カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、量子化予定のデータのデータに従って変化する。振幅は反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
本開示の実施形態の各モジュールまたはユニットの動作原理は、基本的に、前述の方法における各操作の実施プロセスと同じであることは明らかである。詳細については、ここでは繰り返さない上記の説明を参照されたい。前述の装置の実施形態は例示にすぎず、本開示の装置は他の方法でも実施できることを理解されたい。例えば、上記の実施形態におけるユニット/モジュールの分割は、論理的機能分割にすぎず、実際の実施において他の分割方法があり得る。たとえば、複数のユニット、モジュール、またはコンポーネントを組み合わせたり、別のシステムに統合したり、一部の機能を省略したり、実装しなかったりする場合がある。上記の統合ユニット/モジュールは、ハードウェアまたはソフトウェアプログラムモジュールの形式で実装できる。統合ユニット/モジュールがハードウェアの形で実装されている場合、ハードウェアはデジタル回路、アナログ回路などである可能性がある。ハードウェア構造の物理的な実現には、トランジスタ、メモリスタなどが含まれるが、これらに限定されない。
統合されたユニット/モジュールがソフトウェアプログラムモジュールの形式で実装され、独立した製品として販売または使用される場合、コンピュータで読み取り可能なメモリに格納できる。この理解に基づいて、本開示の技術案は、本質的に、または既存の技術に寄与する部分、または技術案の全部または一部をソフトウェア製品の形で具体化することができ、コンピュータソフトウェア製品はメモリに格納され、これは、コンピュータ装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであり得る)に、本開示の様々な実施形態に記載された方法のステップの全部または一部を実行させるためのいくつかの命令を含む。前述のメモリには、Uディスク、読み取り専用メモリ(ROM、読み取り専用メモリ)、ランダムアクセスメモリ(RAM、ランダムアクセスメモリ)、モバイルハードディスク、磁気ディスク、または光ディスク、およびプログラムコードを格納できるその他のメディアが含まれる。
一実施形態では、本開示はまた、コンピュータプログラムが格納されるコンピュータ可読記憶媒体を提供する。コンピュータプログラムがプロセッサまたは装置によって実行される場合、上記の実施形態のいずれかと同様の方法が実施される。具体的には、コンピュータプログラムがプロセッサまたは装置によって実行される場合、次のメソッドが実装される。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
本開示の実施形態における各操作の実施は、基本的に、前述の方法における各操作の実施プロセスと同じであることは明らかである。詳細については、上記の説明を参照し、ここでは繰り返さない。
上記の実施形態では、各実施形態の説明は、それ自体の強調を有する。一実施形態で詳細に説明されていない部分については、他の実施形態の関連する説明を参照することができる。上記の実施形態の技術的特徴は任意に組み合わせることができる。説明を簡潔にするために、上記の実施形態における技術的特徴のすべての可能な組み合わせは記載されていないが、これらの技術的特徴の組み合わせに矛盾がない限り、それらはすべきである。この明細書で説明されている範囲と見なされる。
可能な実施方法において、前述の量子化パラメータ調整装置を含む人工知能チップも開示される。
可能な実施方法において、記憶装置、インターフェース装置、制御装置、および上記の人工知能チップを含むボードカードも開示され、ここで、人工知能チップと記憶装置および制御装置は、そして、インターフェース装置はそれぞれ接続されている;記憶装置はデータを格納するためである;インターフェース装置は人工知能チップと外部装置の間のデータ伝送を実現するためである;制御装置は人工知能チップの状態を監視する。
図3−25は、本開示の一実施形態によるボードカードのブロック図を示す。図3−25を参照すると、ボードカードは、上記のチップ389に加えて他の支持構成要素を含み得る。支持構成要素は、記憶装置390、インターフェース装置391および制御装置392を含むが、これらに限定されない。
記憶装置390は、データを記憶するためのバスを介して人工知能チップに接続されている。記憶装置は、記憶ユニット393の複数のグループを含み得る。記憶ユニットと人工知能チップの各グループは、バスを介して接続されている。記憶ユニットの各グループはDDRSDRAM(英語:Double Data Rate SDRAM、ダブルレート同期動的ランダムアクセスメモリ)である可能性があることが理解できる。
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍にすることができる。DDRを使用すると、クロックパルスの立ち上がりエッジと立ち下がりエッジでデータを読み取ることができる。DDRの速度は標準のSDRAMの2倍である。一実施形態では、貯蔵装置は、貯蔵ユニットの4つのグループを含み得る。記憶ユニットの各グループには、複数のDDR4粒子(チップ)を含めることができる。一実施形態では、人工知能チップは、4つの72ビットDDR4コントローラを含み得る。72ビットDDR4コントローラでは、64ビットがデータ伝送に使用され、8ビットがECC検証に使用される。記憶ユニットの各グループでDDR4−3200粒子を使用すると、データ伝送の理論上の帯域幅が25600MB/秒に達する可能性があることが理解できる。
一実施形態では、記憶ユニットの各グループは、並列に配置された複数のダブルレート同期動的ランダムアクセスメモリを含む。DDRは、1クロックサイクルで2回データを送信できる。各記憶ユニットのデータ伝送とデータストレージを制御するために、DDRを制御するためのコントローラがチップに提供されている。
インターフェース装置は、人工知能チップに電気的に接続されている。インターフェイス装置は、人工知能チップと外部装置(サーバーやコンピュータなど)との間のデータ伝送を実装するためである。例えば、一実施形態では、インターフェース装置は、標準のPCIEインターフェースであり得る。たとえば、処理されるデータは、データ伝送を実現するために、標準のPCIEインターフェイスを介してサーバーからチップに伝送される。送信にPCIE3.0X16インターフェイスを使用する場合、理論上の帯域幅は16000MB/sに達することが好ましい。別の実施形態において、インターフェース装置はまた、他のインターフェースであり得る。本開示は、インターフェースユニットがスイッチング機能を実現できる限り、上記の他のインターフェースの特定の症状を限定しない。さらに、人工知能チップの計算結果は、インターフェース装置によって外部装置(サーバーなど)に送信される。
制御装置は人工知能チップに電気的に接続されている。制御装置は、人工知能チップの状態を監視するためである。具体的には、人工知能チップと制御装置は、SPIインターフェースを介して電気的に接続され得る。制御装置は、シングルチップマイクロコンピュータ(マイクロコントローラユニット、MCU)を含み得る。たとえば、人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含み得、複数の負荷を駆動することができる。したがって、人工知能チップは、複数の負荷や軽負荷など、さまざまな動作状態になる可能性がある。制御装置は、人工知能チップ内の複数の処理チップ、複数の処理および/または複数の処理回路の動作状態の調整および制御を実現することができる。
可能な実施方法において、前述の人工知能チップを含む電子装置が開示される。電子機器には、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレット、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、カメラ、サーバー、クラウドサーバー、カメラ、カメラ、プロジェクター、時計、ヘッドセットが含まれる、モバイルストレージ、ウェアラブル装置、車両、家電製品、および/または医療機器。
輸送手段には飛行機、船および/または車両が含まれ、家庭用電化製品にはテレビ、エアコン、電子レンジオーブン、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。医療機器には核磁気共鳴、B−超音波および/または心電計が含まれる。
この開示の内容は、以下の用語に従ってよりよく理解することができる。
C1、ニューラルネットワークの量子化パラメータの調整方法。この方法は以下を含む。
量子化予定のデータのデータ変動範囲を取得する。
量子化予定のデータのデータ変動範囲によって目標反復間隔を確定し、目標反復間隔に少なくとも1回の反復を含むニューラルネットワーク操作の量子化パラメータと、ニューラルネットワークを調整する。量子化パラメータは、ニューラルネットワーク演算で量子化予定のデータに量子化操作を実装するためである。
C2、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項C1に記載の方法;この方法は、以下をさらに含む。
カレント検査反復に対応する目標データビット幅と、カレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定し、ニューラルネットワーク演算の小数点位置を調整する。
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
C3、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項C1に記載の方法;この方法は、以下をさらに含む。
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定する。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
取得した小数点位置反復間隔および目標反復間隔に対応するデータビット幅によって、目標反復間隔の反復に対応する小数点位置を調整して、ニューラルネットワーク演算の小数点位置を調整する。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
C4、小数点位置の反復間隔が目標反復間隔以下である、C2項またはC3項に記載の方法。
C5、量子化パラメータがさらにスケーリング係数を含み、スケーリング係数が小数点位置と同期して更新される、条項C1〜C4のいずれか1つに記載の方法。
C6、量子化パラメータがさらにオフセットを含み、オフセットが小数点位置と同期して更新される、条項C1〜C5のいずれか1つに記載の方法。
C7、条項C1〜C6のいずれか1つに記載の方法であって、以下をさらに含む方法。
カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定する。ここで、カレント検査反復の量子化データは、カレント検査反復の量子化データを量子化することによって得られる。
量子化誤差に応じて、カレント検査反復に対応する目標データビット幅が確定される。
C8、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定することは、以下を含む、条項C1〜C7に記載の方法。
量子化誤差が第1のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第2のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
C9、C8項の方法によれば、量子化誤差が第1のプリセットしきい値以上の場合、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。
量子化誤差が第1のプリセットしきい値以上の場合、第1のプリセットビット幅のステップ長さによって第1の中間データビット幅を確定する。
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第1のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第1の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
C10、量子化誤差が第2のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させることを含む、条項C8による方法。
量子化誤差が第2のプリセットしきい値以下の場合、第2のプリセットビット幅のステップ長さによって第2の中間データビット幅を確定する。
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第2のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第2の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
C11、量子化予定のデータのデータ変動範囲を取得することは、以下を含む、条項C1〜C10のいずれか1つに記載の方法。
小数点位置の変動範囲を取得する。ここで、小数点位置の変動範囲を使用して、量子化予定のデータのデータ変動範囲を表すことができ、小数点位置の変動範囲は、量子化予定のデータのデータ変動範囲と正の相関がある。
C12、C1〜C11項に記載されている方法によると、取得小数点位置変動範囲には次のものが含まれる。
カレント検査反復前の一つ前の検査反復に対応する小数点位置と、一つ前の検査反復前の履歴反復に対応する小数点位置によって第1の平均値を確定する。ここで、前の検査反復は目標反復間隔である。前の反復間隔に対応する検査反復。
カレント検査反復に対応する小数点位置とカレント検査反復前の履歴反復の小数点位置によって第2の平均値を確定する。ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データに基づいている。量子化するビット幅とデータが確定される。
第1の誤差は、第1の平均値および第2の平均値に従って確定され、第1の誤差は、小数点位置の変動範囲を表すためである。
C13、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定することは、以下を含む、条項C12による方法。
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
第2の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
C14、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定する、条項C12に記載の方法には、以下が含まれる。
第2の平均値は、カレント検査反復に対応する小数点位置と第1の平均値に従って確定される。
C15、条項C12による方法であって、以下をさらに含む方法。
第2の平均値は、カレント検査反復の取得データビット幅調整値に従って更新される。カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅と初期データビットに基づいて確認される。
C16、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新する、条項C15に記載の方法は、以下を含む。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
C17、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定することは、以下を含む、条項C12に記載の方法。
目標反復間隔は第1の誤差によって確定され、目標反復間隔は第1の誤差と負の相関がある。
C18、量子化予定のデータのデータ変動範囲を取得する、条項C11〜C17のいずれか1つによる方法は、さらに以下を含む。
データビット幅の変化傾向を取得する。
小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
C19、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定する、条項C18による方法は、さらに以下を含む。
取得した第1誤差と第2誤差に応じて、目標反復間隔を確定する。ここで、第1誤差は小数点位置の変動範囲を表すために使用され、第2誤差はデータビット幅の変化傾向を表すためである。
C20、取得された第2の誤差および第1の誤差によって目標反復間隔を確定することは、以下を含む、条項C19に記載の方法。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
C21、第2の誤差が量子化誤差によって確定される、条項C19またはC20に記載の方法。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
C22、ニューラルネットワークのトレーニングまたは微調整に使用される、C1〜C21項のいずれか1つに基づく方法。この方法には、以下が含まれる。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
C23、C22項に基づく方法であり、以下をさらに含む方法。
カレント反復が第1のプリセット反復以下の場合、第1のプリセット反復間隔が目標反復間隔として採用され、量子化パラメータは第1のプリセット反復間隔によって調整される。
C24、条項C22またはC23に基づく方法であり、以下をさらに含む方法。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなる。
C25、C24項に基づく方法で、さらに以下を含む。
ニューラルネットワークの収束度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
C26、C24項に基づく方法で、さらに以下を含む。
カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合、反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、反復間隔によって反復間隔が再確定される。データビット幅。
C27、量子化予定のデータが、ニューロンデータ、重みデータ、または勾配データのうちの少なくとも1つである、条項C1〜C26のいずれか1つに記載の方法。
C28、メモリとプロセッサを備えたニューラルネットワークの量子化パラメータ調整装置。メモリはコンピュータプログラムを格納し、プロセッサがコンピュータプログラムを実行すると、C1〜C27項のいずれかに記載の方法が実行される。のステップ。
C29、コンピュータプログラムが格納され、コンピュータプログラムが実行されると、C1〜C27項のいずれかに記載されている方法のステップを実装するコンピュータ可読記憶媒体。
C30、ニューラルネットワークの量子化パラメータ調整装置。
取得モジュールは、量子化予定のデータのデータ変動範囲を取得するためである。
反復間隔確定モジュールは、量子化予定のデータのデータ変動範囲によって目標反復間隔を確定するように構成され、目標反復間隔によってニューラルネットワーク操作における量子化パラメータを調整し、ここで、目標反復間隔は、少なくとも1回の反復では、ニューラルネットワークの量子化パラメータを使用して、ニューラルネットワーク演算で量子化予定のデータの量子化操作を実装する。
C31、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項C30に記載の装置;装置はさらに以下を含む。
量子化パラメータ確定モジュールは、カレント検査反復に対応する目標データビット幅およびカレント検査反復で量子化予定のデータによって、目標反復間隔の反復に対応する小数点位置を確定するように構成され、ニューラルネットワーク動作を調整する。
ここで、目標反復間隔の反復に対応する小数点位置は一致している。
C32、量子化パラメータが小数点位置を含み、小数点位置が、量子化予定のデータに対応する量子化データ内の小数点位置である、条項C30に記載の装置;装置は、さらに以下を含む。
カレント検査反復に対応する目標データビット幅によって、目標反復間隔に対応するデータビット幅を確定するように構成されるデータビット幅確定モジュール。ここで、目標反復間隔の反復に対応するデータビット幅は一致している。
量子化パラメータ確定モジュールは、取得した小数点位置反復間隔によって目標反復間隔の反復に対応する小数点位置を調整し、目標反復間隔に対応するデータビット幅を調整してニューラルネットワーク動作の小数点位置を調整するように構成される。
ここで、小数点位置反復間隔には少なくとも1つの反復が含まれ、小数点位置反復間隔内の反復小数点位置は一致している。
C33、小数点位置の反復間隔が目標反復間隔以下である、C32項に記載の装置。
C34、C31からC33のいずれか1つに記載の装置で、量子化パラメータにはさらにスケーリング係数が含まれ、スケーリング係数は小数点位置と同期して更新される。
C35、C31からC33のいずれか1つに記載の装置。ここで、量子化パラメータにはさらにオフセットが含まれ、オフセットは小数点位置と同期して更新される。
C36、データビット幅確定モジュールが以下を含む、C31項からC33項のいずれか1つに記載の装置。
量子化誤差確定ユニットは、カレント検査反復の量子化データおよびカレント検査反復の量子化データに従って量子化誤差を確定するように構成され、カレント検査反復の量子化データは、カレント検査反復の量子化データを比較する。データは量子化に取得される。
データビット幅確定ユニットは、量子化誤差に従って、カレント検査反復に対応する目標データビット幅を確定するように構成される。
C37、データビット幅確定ユニットが、量子化誤差に従ってカレント検査反復に対応する目標データビット幅を確定するように構成される、条項C36に記載の装置。
量子化誤差が第1のプリセットしきい値以上の場合は、カレント検査反復に対応するデータビット幅を増やして、カレント検査反復に対応する目標データビット幅を取得する。または、
量子化誤差が第2のプリセットしきい値以下の場合、カレント検査反復に対応するデータビット幅が縮小され、カレント検査反復に対応する目標データビット幅が取得される。
C38、データビット幅確定ユニットが、量子化誤差が第1のプリセットしきい値以上である場合、カレント検査反復に対応するデータビット幅を増加させて得られるように構成される、条項C37に記載の装置。カレント検査反復に対応する目標データのビット幅を記述する場合、特に次の目的で使用される。
量子化誤差が第1のプリセットしきい値以上の場合、第1のプリセットビット幅のステップ長さによって第1の中間データビット幅を確定する。
戻って、カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに従って、量子化誤差が第1のプリセットしきい値より小さくなるまで、量子化誤差を確定する。ここで、カレント検査反復の量子化データは第1の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータが量子化され、取得される。
C39、データビット幅確定ユニットは、量子化誤差が取得するための第2のプリセットしきい値以下である場合、カレント検査反復に対応するデータビット幅を減少させるように構成される、条項C37に記載の装置。カレント検査反復に対応する目標データビット幅が特に次の目的で使用される場合:
量子化誤差が第2のプリセットしきい値以下の場合、第2のプリセットビット幅のステップ長さによって第2の中間データビット幅を確定する。
カレント検査反復で量子化予定のデータとカレント検査反復の量子化データに基づいて、量子化誤差が第2のプリセットしきい値より大きくなるまで、量子化誤差を確定するために戻る。ここで、カレント検査反復の量子化データは第2の中間データのビット幅に応じて、カレント検査反復で量子化予定のデータは、量子化によって取得される。
C40、取得モジュールが以下を含むC30−C39項のいずれか1つに記載の装置。
最初の取得モジュールは、小数点位置の変動範囲を取得するためである。小数点位置の変動範囲は、量子化予定のデータのデータ変化の範囲を表すために使用でき、小数点位置の変動範囲は、量子化予定のデータに対応する。データの変化には正の相関関係がある。
C41、第1の取得モジュールが以下を含む、C40項に記載の方法。
第1の平均値確定ユニットは、カレント検査反復前の一つ前の検査反復に対応する小数点位置および前の検査反復前の履歴反復に対応する小数点位置に従って第1の平均値を確定するように構成される。検査反復は、目標反復間隔前の一つ前の反復間隔に対応する検査反復である。
第2の平均値確定ユニットは、カレント検査反復に対応する小数点位置およびカレント検査反復前の履歴反復の小数点位置に従って第2の平均値を確定するように構成される;ここで、カレント検査反復に対応する小数点位置は、カレント検査反復に対応する目標データビット幅と量子化予定のデータが確定される。
第1の誤差確定ユニットは、第1の平均値および第2の平均値に従って第1の誤差を確定するように構成され、第1の誤差は、小数点位置の変動範囲を表すためである。
C42、第2の平均値確定ユニットが特に以下のように構成される、条項C41に記載の装置。
中間スライディング平均値のプリセット数を取得する。ここで、中間スライディング平均値のそれぞれは、カレント検査反復の前の検査反復のプリセット数に従って確定される。
第2の平均値は、カレント検査反復の小数点位置と、プリセット中間スライド平均値の数に従って確定される。
C43、第2の平均値確定ユニットは、カレント検査反復および第1の平均値に対応する小数点位置に従って第2の平均値を確定するように特に構成される、条項C41に記載の装置。
C44、第2の平均値確定ユニットは、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新するようにさらに構成される、条項C41に記載の装置。
ここで、カレント検査反復のデータビット幅調整値は、カレント検査反復の目標データビット幅および初期データビット幅によって確定される。
C45、第2の平均値確定ユニットが、カレント検査反復の取得されたデータビット幅調整値に従って第2の平均値を更新するようにさらに構成される、条項C44に記載の装置。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも大きい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って減少する。
カレント検査反復のデータビット幅調整値がプリセットパラメータよりも小さい場合、第2の平均値は、カレント検査反復のデータビット幅調整値に従って増やす。
C46、反復間隔確定モジュールが、第1の誤差によって目標反復間隔を確定するように構成され、目標反復間隔が第1の誤差と負に相関する、条項C41に記載の装置。
C47、取得モジュールがさらに以下を含む、C40項に記載の装置。
第2の取得モジュールは、データビット幅の変化傾向を取得するように構成される。小数点位置の変動範囲とデータビット幅の変化傾向によって、量子化予定のデータのデータ変動範囲を確定する。
C48、反復間隔確定モジュールが、取得された第1の誤差および第2の誤差によって目標反復間隔を確定するようにさらに構成される、条項C47に記載の装置。ここで、第1の誤差は、点を表すためである。位置変動範囲、および第2の誤差は、データビット幅の変化傾向を表すためである。
C49、ルート反復間隔確定モジュールが、取得された第1の誤差および第2の誤差によって、特に以下について、目標反復間隔を確定するように構成される、条項C48に記載の装置。
第1の誤差と第2の誤差の最大値を目標誤差とする。
目標反復間隔は、目標誤差によって確定される。ここで、目標誤差は、目標反復間隔と負の相関がある。
C50、第2の誤差が量子化誤差によって確定される、条項C48またはC49に記載の装置。
量子化誤差は、カレント検査反復で量子化予定のデータとカレント検査反復の量子化後のデータによって確定され、第2の誤差は量子化誤差と正の相関がある。
C51、条項C30からC50のいずれかによる装置。装置は、ニューラルネットワークのトレーニングまたは微調整を実装するためである。反復間隔確定モジュールは、さらに次の目的で使用される。
カレント反復が第1のプリセット反復よりも大きい場合、目標反復間隔は、量子化予定のデータのデータ変動範囲によって確定され、量子化パラメータは、目標反復間隔によって調整される。
C52、反復間隔確定モジュールは、次のようにさらに構成される、条項C51に記載の装置。カレント反復が第1のプリセット反復以下の場合、第1のプリセット反復間隔を反復間隔をターゲットにし、最初にプリセット反復間隔によって量子化パラメータを調整する。
C53、反復間隔確定モジュールがさらに以下のように構成される、条項C51またはC52に記載の装置。
カレント反復が第2のプリセット反復以上の場合、第2のプリセット反復間隔を目標反復間隔として使用し、第2のプリセット反復間隔によって量子化パラメータを調整する。
ここで、ニューラルネットワークの収束の程度がプリセット条件を満たす場合、カレント検査反復が第2のプリセット反復以上であると判断される。
第2のプリセット反復は第1のプリセット反復よりも大きく、第2のプリセット反復間隔は第1のプリセット反復間隔よりも大きくなっている。
C54、反復間隔確定モジュールは、次のようにさらに構成される、C53項に記載の装置。カレント反復が第2のプリセット反復以上であり、第2の誤差がプリセット誤差値より大きい場合。量子化予定のデータのデータ変動範囲が反復間隔を確定し、反復間隔によってデータビット幅を再確定する。
本開示の実施形態は上に記載されており、上記の説明は例示的であり、網羅的ではなく、開示された実施形態に限定されない。図示された実施形態の範囲および精神から逸脱することなく、多くの修正および変更は、当技術分野の通常の技術者にとって明らかである。本明細書で使用される用語の選択は、各実施形態の市場における技術の原理、実際の適用、または改善を最もよく説明すること、または他の通常の当業者が本明細書に開示される様々な実施形態を理解できるようにすることを意図する。
量子化パラメータ調整の問題を解決するために提案された解決策(201910528537.8)は上記のとおりである。