(57)【要約】  本発明は、データ処理方法、装置、コンピュータデバイス、及び記憶媒体に関する。本発明によって開示されるボードカードは、記憶部品と、インターフェース装置と、制御部品と、データ処理装置を含む人工知能チップと、を備え、ここで、人工知能チップは、記憶部品、制御部品、および、インターフェース装置にそれぞれ接続され、記憶部品は、データを記憶し、インターフェース装置は、人工知能チップと外部デバイスとの間のデータ伝送を実現し、制御部品は、人工知能チップの状態を監視制御するためである。本発明の実施例によって提供されるデータ処理方法、装置、コンピュータデバイス、及び記憶媒体は、対応する量子化パラメータを利用して量子化待ちデータに対して量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができる。【選択図】図７
2022501678.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワーク量子化方法であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む
ことを特徴とするニューラルネットワーク量子化方法。
【請求項２】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するステップと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るステップと、
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップと、
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するステップと、を含む
ことを特徴とする請求項１に記載のニューラルネットワーク量子化方法。
【請求項３】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するステップをさらに含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項４】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するステップをさらに含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項５】
現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップは、
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方式と、
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方式を含む
ことを特徴とする請求項２から４のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項６】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記量子化パラメータがオフセット量を含むと、前記更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記現在量子化待ちデータの第２タイプのポイント位置を得るステップを含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項７】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記量子化パラメータがオフセット量を含むと、現在量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、現在量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項８】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記更新統計結果の中の最大値および最小値に基づいて、現在量子化待ちデータのオフセット量を得るステップを含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項９】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るステップと、をさらに含む
ことを特徴とする請求項１から８のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項１０】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む
ことを特徴とする請求項９に記載のニューラルネットワーク量子化方法。
【請求項１１】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む
ことを特徴とする請求項９または１０に記載のニューラルネットワーク量子化方法。
【請求項１２】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む
ことを特徴とする請求項９または１０に記載のニューラルネットワーク量子化方法。
【請求項１３】
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む
ことを特徴とする請求項１２に記載のニューラルネットワーク量子化方法。
【請求項１４】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るステップと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１から１３のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項１５】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む
ことを特徴とする請求項１４に記載のニューラルネットワーク量子化方法。
【請求項１６】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第２タイプのポイント位置を含む
ことを特徴とする請求項１５に記載のニューラルネットワーク量子化方法。
【請求項１７】
前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項１４に記載のニューラルネットワーク量子化方法。
【請求項１８】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含む
ことを特徴とする請求項１７に記載のニューラルネットワーク量子化方法。
【請求項１９】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含み、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項１８に記載のニューラルネットワーク量子化方法。
【請求項２０】
前記現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含む
ことを特徴とする請求項１９に記載のニューラルネットワーク量子化方法。
【請求項２１】
前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項１９に記載のニューラルネットワーク量子化方法。
【請求項２２】
前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップを含み、前記更新周期は、少なくとも一つの反復を含む
ことを特徴とする請求項１４から２１のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項２３】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む
ことを特徴とする請求項１４から２２のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項２４】
ニューラルネットワーク量子化装置であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するためのデータ決定モジュールと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るためのデータ量子化モジュールと、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るための結果決定モジュールと、を備える
ことを特徴とするニューラルネットワーク量子化装置。
【請求項２５】
前記データ量子化モジュールは、
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するための量子化待ちデータ決定サブモジュールと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るための比較サブモジュールと、
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するための統計結果決定サブモジュールと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するための第１の量子化パラメータ決定サブモジュールと、
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するための量子化処理サブモジュールと、を備える
ことを特徴とする請求項２４に記載のニューラルネットワーク量子化装置。
【請求項２６】
前記データ量子化モジュールは、
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するための参考データ更新モジュールをさらに備える
ことを特徴とする請求項２５に記載のニューラルネットワーク量子化装置。
【請求項２７】
前記データ量子化モジュールは、
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するための第２の量子化パラメータ決定サブモジュールをさらに備える
ことを特徴とする請求項２５に記載のニューラルネットワーク量子化装置。
【請求項２８】
現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定することは、
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方式と、
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方式を含む
ことを特徴とする請求項２５から２７のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項２９】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記量子化パラメータがオフセット量を含むと、前記各更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得ることを含む
ことを特徴とする請求項２５に記載のニューラルネットワーク量子化装置。
【請求項３０】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得ることと、
前記各更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む
ことを特徴とする請求項２５に記載のニューラルネットワーク量子化装置。
【請求項３１】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記各更新統計結果の中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得ることを含む
ことを特徴とする請求項２５に記載のニューラルネットワーク量子化装置。
【請求項３２】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定モジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るための調整量子化パラメータ決定モジュールと、をさらに備える
ことを特徴とする請求項２４から３１のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項３３】
前記調整ビット幅決定モジュールは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備える
ことを特徴とする請求項３２に記載のニューラルネットワーク量子化装置。
【請求項３４】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差モジュールと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備える
ことを特徴とする請求項３２または３３に記載のニューラルネットワーク量子化装置。
【請求項３５】
前記調整ビット幅決定モジュールは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備える
ことを特徴とする請求項３２または３３に記載のニューラルネットワーク量子化装置。
【請求項３６】
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差モジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定モジュールと、をさらに備える
ことを特徴とする請求項３５に記載のニューラルネットワーク量子化装置。
【請求項３７】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記装置は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るための第１のデータ変動幅決定モジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定モジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項２４から３６のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項３８】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するための第１の目標反復間隔適用モジュールをさらに備える
ことを特徴とする請求項３７に記載のニューラルネットワーク量子化装置。
【請求項３９】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２の目標反復間隔適用モジュールをさらに備え、前記ポイント位置は、第２タイプのポイント位置を含む
ことを特徴とする請求項３８に記載のニューラルネットワーク量子化装置。
【請求項４０】
前記第１のデータ変動幅決定モジュールは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第１の目標反復間隔決定サブモジュールを備える
ことを特徴とする請求項３７に記載のニューラルネットワーク量子化装置。
【請求項４１】
前記第１のデータ変動幅決定サブモジュールは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するための第１の幅度決定サブモジュールを備え、前記差分値の絶対値を第１のデータ変動幅として決定する
ことを特徴とする請求項４０に記載のニューラルネットワーク量子化装置。
【請求項４２】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るための第２のデータ変動幅決定モジュールをさらに備え、
ここで、目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第２の目標反復間隔決定サブモジュールを備える
ことを特徴とする請求項４１に記載のニューラルネットワーク量子化装置。
【請求項４３】
前記第２のデータ変動幅決定モジュールは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するための第２の幅度決定サブモジュールを備え、前記誤差の２乗を前記第２のデータ変動幅として決定する
ことを特徴とする請求項４２に記載のニューラルネットワーク量子化装置。
【請求項４４】
前記第２の目標反復間隔決定サブモジュールは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える
ことを特徴とする請求項４２に記載のニューラルネットワーク量子化装置。
【請求項４５】
前記第１のデータ変動幅決定モジュールは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るための第２のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む
ことを特徴とする請求項３７から４４のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項４６】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定モジュールと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第１の周期間隔適用モジュール、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第２の周期間隔適用モジュールと、をさらに備える
ことを特徴とする請求項３７から４５のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項４７】
人工知能チップであって、
前記人工知能チップは、請求項２４至４６の何れか１項に記載のニューラルネットワーク量子化装置を備える
ことを特徴とする人工知能チップ。
【請求項４８】
電子デバイスであって
前記電子デバイスは、請求項４７に記載の人工知能チップを備える
ことを特徴とする電子デバイス。
【請求項４９】
ボードカードであって、
前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、請求項４７に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
【請求項５０】
前記記憶部品は、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットが、前記人工知能チップにバスを介して接続され、前記記憶ユニットが、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである
ことを特徴とする請求項４９に記載のボードカード。
【請求項５１】
コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、
前記コンピュータプログラム命令がプロセッサによって実行されると、請求項１から２３の何れか１項に記載のニューラルネットワーク量子化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特に、ニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体に関する。
【背景技術】
【０００２】
ニューラルネットワーク（ｎｅｕｒａｌ ｎｅｔｗｏｒｋ、ＮＮ）は、生物学的ニューラルネットワークの構成と機能を模倣する数学モデルまたは計算モデルである。ニューラルネットワークは、サンプルデータのトレーニングを通じて、ネットワーク重み値と閾値を継続的に修正し、誤差関数を負の勾配の方向に落とし、期待される出力に近づけるようにする。ニューラルネットワークは、より広く使用されている認識分類モデルであり、関数接近、モデル認識分類、データ圧縮、及び時系列予測などに多く使用される。ニューラルネットワークは、画像認識、音声認識、自然言語処理などの分野で適用されているが、ニューラルネットワークの複雑度の増加につれて、データのデータ量とデータ次元とがいずれも継続的に増加され、継続的に増加しているデータ量などは、演算装置のデータ処理効率、記憶装置の記憶容量、アクセス効率などに対してより大きい挑戦を提出している。関連技術において、固定ビット幅を使用してニューラルネットワークの演算データに対して量子化を実行し、すなわち、浮動小数点タイプの演算データを固定点タイプの演算データに変換することで、ニューラルネットワークの演算データの圧縮を実現する。しかしながら、関連技術では、ニューラルネットワーク全体で同じ量子化方式を採用しているが、ニューラルネットワークの異なる演算データ同士の間にはより大きい差異が存在する可能性があり、往々にして精度の低下をもたらし、データ演算結果に影響を及ぼす。
【発明の概要】
【０００３】
これに鑑みて、上述した技術的問題に対して、ニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体を提供する必要がある。
本発明の一態様によると、ニューラルネットワーク量子化方法を提供し、前記方法は、
前記ニューラルネットワークの中の任意の量子化待ち層に対して、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
【０００４】
循環処理の方式を使用して、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップと、
【０００５】
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む。
本発明のもう一態様によると、ニューラルネットワーク量子化装置を提供し、前記装置は、
【０００６】
前記ニューラルネットワークの中の任意の量子化待ち層に対して、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するためのデータ決定モジュールと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
【０００７】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るためのデータ量子化モジュールと、
【０００８】
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るための結果決定モジュールと、を備える。
本発明のもう一態様によると、人工知能チップを提供し、前記人工知能チップは、上述したニューラルネットワーク量子化装置を備える。
本発明のもう一態様によると、電子デバイスを提供し、前記電子デバイスは、上述した人工知能チップを備える。
【０００９】
本発明のもう一態様によると、ボードカードを提供し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する。
【００１０】
本発明のもう一態様によると、コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体を提供し、前記コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワーク量子化方法が実現される。
【００１１】
本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体によると、当該方法は、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップと、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む。本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体によると、ニューラルネットワークを稼働させる端末の記憶能力に基づいて、量子化待ち層の目標データの中から複数の量子化待ちデータを決定し、対応する量子化パラメータを利用して複数の量子化待ちデータに対してそれぞれ量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させた。
【００１２】
請求の範囲の中の技術的特徴を導き出すことにより、背景技術中の技術的問題に対応する有益な効果を収めることができる。以下の図面を参照した例示的な実施例の詳細な説明によれば、本発明の他の特徴および態様が明らかになる。
【図面の簡単な説明】
【００１３】
明細書に含まれて明細書の一部を構成する図面は、明細書と一緒に本発明の例示的な実施例、特徴、および、態様を示し、本発明の原理を解釈するために使用される。
【図１】本発明の実施例に係るニューラルネットワーク量子化方法のプロセッサを示す模式図である。
【図２】本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。
【図３】本発明の実施例に係る対称的な固定小数点数表現を示す模式図である。
【図４】本発明の実施例に係るオフセット量を導入した固定小数点数表現を示す模式図である。
【図５】本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。
【図６】本発明の実施例に係るニューラルネットワーク量子化装置を示すブロック図である。
【図７】本発明の実施例に係るボードカードを示す構成ブロック図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例の中の図面を参照しながら本発明の実施例の中の技術案を明確かつ完全に説明し、説明する実施例は、本発明の一部の実施例に過ぎず、全ての実施例ではないことが明らかである。当業者にとって本発明中の実施例に基づいて創造的な作業なしに得られたすべての他の実施例は、いずれも本発明の保護しようとする範囲に属する。
【００１５】
本発明の請求の範囲、明細書、および、図面での「第１」、「第２」などという用語は、異なる対象を区別するために使用されるものであり、特定順序を定義するために使用されないことを理解すべきである。本発明の明細書および請求の範囲で使用される「含む」および「備える」という用語は、説明する特徴、全体、ステップ、操作、要素、および／または、アセンブリの存在を表し、一つまたは複数の他の特徴、全体、ステップ、操作、要素、アセンブリ、および／または、そのセットの存在または追加を除外しない。
【００１６】
ここで本発明の明細書で使用される用語は、ただ、特定実施例を説明する目的に使用され、本発明を限定しようとするものではないことをさらに理解すべきである。本発明の明細書および請求の範囲で使用されるように、文脈で他の場合を明確に示されていない限り、「一」、「一つの」、および、「当該」の単数形態は、複数形態を含むことを意図する。さらに、本発明の明細書および請求の範囲で使用される「および／または」という用語は、関連してリストされた項目の中の一つまたは複数のいかなる組み合わせおよびすべての可能な組み合わせを表し、これら組み合わせを含むことをさらに理解すべきである。
【００１７】
本明細書および請求の範囲で使用されるように、「…場合」という用語は、文脈によって、「…とき」、「…と」、「決定されたことに応答して」、または、「検出されたことに応答して」と解釈されてもよい。同様に、「決定された場合」または「『記述された条件または事件』が検出された場合」という句は、文脈によって、「決定されると」、「決定されたことに応答して」、「『記述された条件または事件』が検出されると」、または、「『記述された条件または事件』が検出されたことに応答して」と解釈されてもよい。
【００１８】
ニューラルネットワーク演算の複雑度の増加につれて、データのデータ量およびデータ次元も継続的に増加しているが、従来のニューラルネットワークアルゴリズムは、一般的に、浮動小数点データフォーマットを使用してニューラルネットワーク演算を実行し、このようにすると、継続的に増加しているデータ量などは、演算装置のデータ処理効率、記憶装置の記憶容量、及びアクセス効率などに対してより大きい挑戦を提出している。上述した問題を解決するために、関連技術においては、ニューラルネットワーク演算過程に関するすべてのデータを、いずれも浮動小数点数から固定小数点数に変換するが、異なるデータ間に差異があったり、同一のデータが異なる段階で差異を有したりするで、ただ「浮動小数点数から固定小数点数に変換する」場合、往々にして精度が足りないため、演算結果に影響を及ぼすことになる。
【００１９】
ニューラルネットワークの中の演算待ちデータは、一般的に、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットであり、ニューラルネットワークを搭載する装置でニューラルネットワークを稼働する場合、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットのいろんな演算待ちデータは、ニューラルネットワーク稼働のための演算量およびアクセスのオーバーヘッドがいずれもより大きくなる。演算効率を高めるために、本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体においては、入力ニューロンおよび勾配の場合、バッチ（ｂａｔｃｈ）を単位にして、各バッチの入力ニューロンおよび／または勾配を分割して複数の量子化待ちデータを得、さらに、量子化を実行でき、量子化後のデータフォーマットは、一般的に、ビット幅がより短いし、精度がより低い固定点データフォーマットである。精度がより低い量子化後データを利用してニューラルネットワークの演算を実行すると、演算量およびアクセス量を低減できる。量子化後のデータフォーマットは、ビット幅がより短い固定点データフォーマットであり得る。浮動小数点データフォーマットの演算待ちデータを固定点データフォーマットの演算待ちデータに量子化することができ、さらに、精度がより高い固定点フォーマットの演算待ちデータを精度がより低い固定点フォーマットの演算待ちデータに量子化することもできる。対応する量子化パラメータを利用して量子化待ちデータに対して量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
【００２０】
量子化精度が量子化後のデータと量子化前データとの間の誤差の大きさであることを理解できる。量子化精度は、ニューラルネットワーク演算結果の正確度に影響を及ぼすことができる。量子化精度が高いほど、演算結果の正確率も高いが、演算量がもっと大きく、アクセスのオーバーヘッドももっと大きくなる。ビット幅がより短い量子化後のデータと比較すると、ビット幅がより長い量子化後のデータの量子化精度がもっと高く、ニューラルネットワークの演算を実行するときの正確率ももっと高い。しかしながら、ニューラルネットワークの演算を実行する場合、ビット幅がより長い量子化後データの演算量がもっと大きく、アクセスのオーバーヘッドもより大きくて、演算効率がより低い。同様に、同一の量子化待ちデータの場合、異なる量子化パラメータを利用して得た量子化後のデータは、異なる量子化精度を有し、異なる量子化結果を発生することになり、演算効率および演算結果の正確率にも異なる影響をもたらすことになる。ニューラルネットワークに対して量子化を実行すし、演算効率と演算結果の正確率との間でバランスをとるために、演算待ちデータのデータ特徴にもっと符合される量子化後のデータビット幅および量子化パラメータを利用できる。
【００２１】
ニューラルネットワーク中の演算待ちデータは、重み値、ニューロン、バイアス、勾配の中の少なくとも一種を含んでもよい。演算待ちデータは、複数の要素を含むマトリックスである。従来のニューラルネットワーク量子化において、一般的に、演算待ちデータ全体を量子化した後に演算を実行する。量子化後の演算待ちデータを利用して演算を実行するときには、一般的に、量子化後の演算待ちデータ全体の中の一部のデータを利用して演算を実行する。例えば、コンボルーション層において量子化後の入力ニューロン全体を利用してコンボルーション演算を実行する場合、コンボルーションカーネルの次元およびステップ長に基づいて、量子化後の入力ニューロン全体の中からコンボルーションカーネルの次元に相当する量子化後のニューロンをそれぞれ抽出してコンボルーション演算を実行する。完全接続層（ｆｕｌｌｙ ｃｏｎｎｅｃｔｅｄ ｌａｙｅｒ）において量子化後の入力ニューロン全体を利用してマトリックス乗算演算を実行する場合、量子化後の入力ニューロン全体の中からそれぞれ行ごとに量子化後のニューロンを抽出してマトリックス乘算演算を実行する。このため、従来のニューラルネットワーク量子化方法において、演算待ちデータ全体に対して量子化を実行した後に一部の量子化後のデータを利用して演算を実行し、全体の演算効率がより低い。さらに、演算待ちデータ全体を量子化した後に演算を実行するには、量子化後の演算待ちデータ全体を記憶する必要があり、占用する記憶空間がより大きく、特に、全体を量子化する場合、演算ニューラルネットワークの端末の記憶能力に対する要件がより高く、性能がより低い端末の使用要件を満たすことができない。
【００２２】
本発明の実施例に係るニューラルネットワーク量子化方法は、プロセッサに適用でき、当該プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａl Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、中央プロセッサ）などの汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ（ＩＰＵ）であってもよい。人工知能演算は、機械学習演算、脳と類似な演算などを含んでもよい。ここで、機械学習演算は、ニューラルネットワーク演算、ｋ−ｍｅａｎｓ演算、ベクトル機械サポート演算などを含む。当該人工知能プロセッサは、例えば、ＧＰＵ(Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、グラフィックス処理ユニット)、ＮＰＵ（Ｎｅｕｒａl−Ｎｅｔｗｏｒｋ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、ニューラルネットワーク処理ユニット）、ＤＳＰ（Ｄｉｇｉｔａl Ｓｉｇｎａl Ｐｒｏｃｅｓｓ、デジタル信号処理ユニット）、フィールドプログラマブルゲートアレイ（Ｆｉｅlｄ−Ｐｒｏｇｒａｍｍａｂlｅ Ｇａｔｅ Ａｒｒａｙ、ＦＰＧＡ）チップの中の一つまたは組み合わせを含む。本発明は、プロセッサの具体的な種類に対して限制しない。
【００２３】
可能な一実現形態において、本発明で言及されるプロセッサは、複数の処理ユニットを含んでもよく、各々の処理ユニットは、例えばコンボルーション演算タスク、プーリングタスク、完全接続タスクなどの、割り当てられたいろんなタスクを独立的に稼働できる。本発明は、処理ユニットおよび処理ユニットが稼働するタスクに対して限定しない。
【００２４】
図１は、本発明の実施例に係るニューラルネットワーク量子化方法のプロセッサを示す模式図である。図１に示すように、プロセッサ１００は、複数の処理ユニット１０１と、記憶ユニット１０２と、を備え、複数の処理ユニット１０１は、命令シーケンスを実行し、記憶ユニット１０２は、データを記憶し、は、ランダムメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）およびレジスタファイルを含んでもよい。プロセッサ１００中の複数の処理ユニット１０１は、一部の記憶空間を共有してもよく、例えば、一部のＲＡＭ記憶空間およびレジスタファイルを共有してもよく、また、同時にそれら自身の記憶空間を有してもよい。
【００２５】
図２は、本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。図２に示すように、当該方法は、ニューラルネットワーク中の任意の層に適用でき、当該方法は、ステップＳ１１からステップＳ１３を含む。当該方法は、図１に示すプロセッサ１００に適用できる。ここで、処理ユニット１０１は、ステップＳ１１からステップＳ１３を実行する。記憶ユニット１０２は、量子化待ちデータ、量子化パラメータ、データビット幅などの、ステップＳ１１からステップＳ１３の処理過程に関連するデータを記憶する。
【００２６】
ステップＳ１１において、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定し、前記目標データは、前記量子化待ち層中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、勾配の中の少なくとも一つを含む。
【００２７】
ニューラルネットワーク中の量子化待ち層は、ニューラルネットワーク中の任意の層であり得る。要件に応じて、量子化待ち層としてニューラルネットワーク中の一部の層または全ての層を決定できる。ニューラルネットワーク中に複数の量子化待ち層が含まれている場合、各量子化待ち層は、連続されてもよいし、連続なれなくてもよい。異なるニューラルネットワークによって、量子化待ち層の種類も異なってもよく、例えば、量子化待ち層は、コンボルーション層、完全接続層（ｆｕｌｌｙ ｃｏｎｎｅｃｔｅｄ ｌａｙｅｒ）などであってもよく、本発明は、量子化待ち層の数および種類に対して限定しない。
【００２８】
前記演算待ちデータの場合、重み値およびバイアスをさらに含んでもよい。要件に応じて、量子化待ち層の中の重み値、勾配の中の少なくとも一つに対して量子化を実行できる。量子化パラメータは、ポイント位置（以下の、前記の第１タイプのポイント位置および第２タイプのポイント位置を含む）、スケーリング係数（以下の、前記の第１タイプのスケーリング係数、および、第２タイプのスケーリング係数を含む）およびオフセット量の中の一つまたは複数を含んでもよい。上述したステップＳ１１からステップＳ１３によって提供される量子化方式は、スケーリングパラメータが、オフセット量を含み、且つ、第２タイプのポイント位置および／または第２タイプのスケーリング係数を含む入力ニューロンおよび勾配に適用される。量子化パラメータがステップＳ１１からステップＳ１３に適用されるパラメータとは異なる他のパラメータ組み合わせ（たとえば、第１タイプのポイント位置、および／または、第１タイプのスケーリング係数を含む）を含む演算待ちデータ場合、他の方式を使用して量子化待ちデータを選択し、選択された量子化待ちデータおよび自分に対応するデータビット幅に基づいて、対応する量子化パラメータを決定し、さらに、対応する量子化パラメータに基づいて量子化を実現できる。例えば、量子化待ち層の中の重み値を量子化待ちデータとして量子化を実行できるし、あるいは、量子化待ち層の中のバイアスに対して量子化を実行できる。異なる量子化パラメータの決定方式は、以下の説明を参照できる。
【００２９】
量子化待ち層中に複数種類の目標データがある場合、各種類の目標データに対して本発明中の量子化方法を使用して量子化を実行した後、各目標データに対応する量子化データを得てから、いろんな目標データの量子化データ、および、量子化を実行する必要がない演算待ちデータを利用して量子化待ち層の演算を実行できる。
【００３０】
ニューラルネットワーク演算の推論段階は、トレーニングされたニューラルネットワークに対して順方向演算を実行することでタスクの設定を完成する段階を含んでもよい。ニューラルネットワークの推論段階において、ニューロン、重み値、バイアス、および、勾配の中の少なくとも一つを量子化待ちデータとして、本発明の実施例中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の演算を完成できる。
【００３１】
ニューラルネットワーク演算の微調整段階は、トレーニングされたニューラルネットワークに対して所定の数反復する順方向演算および逆方向演算を実行して、パラメータの微調整を実行することによって、所定タスクに適応する段階を含んでもよい。ニューラルネットワーク演算の微調整段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
【００３２】
ニューラルネットワーク演算のトレーニング段階は、初期化されたニューラルネットワークに対して反復トレーニングを実行して、特定タスクを実行できる、トレーニングされたニューラルネットワークを、得る段階を含んでもよい。ニューラルネットワークのトレーニング段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
【００３３】
予め設定されたデータ分割方式に基づいて、目標データを複数の量子化待ちデータに分割できる。例えば、予め設定されたデータ分割方式は、固定されたデータ大きさに基づいて分割を実行する方式、または、固定されたデータ形状に基づいて分割を実行する方式であり得る。
【００３４】
目標データを複数の量子化待ちデータに分割した後、各量子化待ちデータに対してそれぞれ量子化を実行し、各量子化待ちデータの量子化後のデータに基づいて演算を実行できる。一つの量子化待ちデータに必要な量子化時間は、目標データ全体の量子化時間よりも短く、そのうちの一つの量子化待ちデータの量子化が完了された後に、量子化後のデータを利用して後続の演算を実行することができ、目標データの中のすべての量子化待ちデータの量子化がすべて完成されるまで待った後に演算を実行する必要がない。そのため、本発明中の目標データの量子化方法は、目標データの演算効率を向上させることができる。
【００３５】
ステップＳ１２において、循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得る。
循環処理の方式を使用し、同一のバッチの演算待ちデータに対して量子化を複数回実行し、当該バッチの演算待ちデータの量子化を完成できる。
可能な一実現形態において、ステップＳ１２は、
【００３６】
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するステップと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るステップと、
【００３７】
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップと、
【００３８】
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するステップと、を含んでもよい。
【００３９】
可能な一実現形態において、ステップＳ１２は、前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するステップをさらに含んでもよい。
【００４０】
可能な一実現形態において、ステップＳ１２は、前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するステップをさらに含んでもよい。
【００４１】
可能な一実現形態において、現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
【００４２】
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップは、
【００４３】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
【００４４】
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方法と、
【００４５】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方法を含んでもよい。
【００４６】
当該実現形態において、あるバッチの演算待ちデータの複数の量子化待ちデータに対して量子化を実行する場合、１番目の量子化待ちデータの統計結果および対応する量子化パラメータをそれぞれ参考統計結果および参考量子化パラメータとして決定できる。
【００４７】
ステップＳ１３において、各前記量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得ることによって、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するようにする。
【００４８】
所定の量子化アルゴリズムを利用して、量子化パラメータに基づいて量子化待ちデータに対して量子化を実行して、量子化データを得ることができる。例えば、量子化アルゴリズムとして丸めアルゴリズムを利用して、データビット幅およびポイント位置に基づいて量子化待ちデータに対して丸め量子化を実行して量子化データを得ることができる。ここで、丸めアルゴリズムは、切り上げ丸め、切り下げ丸め、ゼロへの丸め、および、最も近い整数への丸めを含むことができる。本発明は、量子化アルゴリズムの具体的な実現形態に対して限定しない。
【００４９】
各量子化待ちデータに対して対応する量子化パラメータをそれぞれ使用して量子化を実行できる。各量子化待ちデータに対応する量子化パラメータが各量子化待ちデータ自身の特徴にもっと適しているため、各量子化待ち層の各種類の量子化データの量子化精度が目標データの演算要件にもっと符合されるようにし、量子化待ち層の演算要件にもっと符合されるようにする。量子化待ち層の演算結果の正確率を保証することを前提として、量子化待ち層の演算効率を向上させ、量子化待ち層の演算効率と演算結果正確率との間のバランスをとることができる。さらに、目標データを複数の量子化待ちデータに分割してそれぞれ量子化し、一つの量子化待ちデータの量子化が完了した後に、量子化して得られた量子化結果に基づいて演算を実行する同時に、２番目の量子化待ちデータの量子化を実行でき、目標データの演算効率を全体的に向上させ、量子化待ち層の計算効率を向上させた。
【００５０】
各量子化待ちデータの量子化データに対して合併を実行した後に目標データの量子化結果を得ることができる。各量子化待ちデータの量子化データに対して所定の演算を実行した後に目標データの量子化結果を得ることができる。例えば各量子化待ちデータの量子化データに対して所定の重みに基づいて重み付け演算を実行した後に目標データの量子化結果を得ることができる。本発明は、これに対して限定しない。
【００５１】
ニューラルネットワークの推論、トレーニング、および、微調整過程において、量子化待ちデータに対してオフライン量子化またはオンライン量子化を実行できる。ここで、オフライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオフライン処理を実行することであり得る。オンライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオンライン処理を実行することであり得る。例えば、ニューラルネットワークが人工知能チップで稼働される場合、量子化待ちデータおよび量子化パラメータを人工知能チップ以外の演算装置に送信してオフライン量子化を実行することができ、または、人工知能チップ以外の演算装置を利用して事前に得られた量子化待ちデータおよび量子化パラメータに対してオフライン量子化を実行できる。人工知能チップでニューラルネットワークを稼働する過程においては、人工知能チップは、量子化待ちデータに対して量子化パラメータを利用してオンライン量子化を実行できる。本発明は、各量子化待ちデータの量子化過程がオンラインであるかまたはオフラインであるかに対して限定しない。
【００５２】
本実施例によって提供されるニューラルネットワーク量子化方法は、前記ニューラルネットワークの中の任意の量子化待ち層に対して、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含むステップと、循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップと、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む。同一のバッチの演算待ちデータを複数の量子化待ちデータに分割した後、循環処理の方式を使用して順次に複数の量子化待ちデータに対して量子化を実行することによって、目標データの量子化効率および演算効率を向上させることができ、量子化待ち層からニューラルネットワーク全体までの量子化効率および演算効率も向上させることができる。
【００５３】
可能な一実現形態において、上述したステップＳ１１からステップＳ１３までによって提供される方法に適用される量子化待ちデータ以外の他の量子化待ちデータの場合、量子化待ちデータに対応する量子化パラメータを決定する方式は、方式１〜方式３を含んでもよい。方式１：目標データに対応する量子化パラメータを決定した後、目標データに対応する量子化パラメータを量子化待ちデータの量子化パラメータとして決定する。量子化待ち層が複数の目標データを含む場合、各目標データが、いずれも自分に対応する量子化パラメータを有してもよく、各目標データに対応する量子化パラメータが、異なってもよいし、同一であってもよく、本発明は、これに対して限定しない。目標データを複数の量子化待ちデータに分割した後、目標データに対応する量子化パラメータを各量子化待ちデータに対応する量子化パラメータとして決定でき、この場合、各量子化待ちデータに対応する量子化パラメータは同一であり、その後に、順次に対複数の量子化待ちデータ量子化を実行する。
【００５４】
方法２：各量子化待ちデータに対応する量子化パラメータを直接決定する方式。目標データは、自分に対応する量子化パラメータを有さなくてもよいし、あるいは、目標データは、自分に対応する量子化パラメータを有するが、量子化待ちデータによって使用されなくてもよい。各量子化待ちデータに対して対応する量子化パラメータを直接設定できる。量子化待ちデータに基づいて対応する量子化パラメータを計算して得てもよい。この場合、各量子化待ちデータに対応する量子化パラメータは、同一であってもよいし、異なってもよい。例えば、量子化待ち層がコンボルーション層であり、目標データが重みである場合、重みをチャネルに基づいて複数の量子化待ち重みデータに分割でき、異なるチャネルの量子化待ち重みデータは、異なる量子化パラメータに対応されることができる。各量子化待ちデータに対応する量子化パラメータが異なる場合、各量子化待ちデータに対応する量子化パラメータを利用して量子化を実行した後に得られた量子化結果は、目標データの演算に影響を及ぼさない必要がある。
【００５５】
方法３、所定の量子化パラメータを検索して量子化パラメータを直接決定する方式と、対応関係を検索して量子化パラメータを決定する方式、または、量子化待ちデータに基づいて量子化パラメータを計算して得る方式を含んでもよい。以下、量子化待ちデータに対応する量子化パラメータを決定する方式を例として、説明する。
【００５６】
量子化待ちデータに対応する量子化パラメータを直接設定できる。設定された量子化パラメータを所定の記憶空間に記憶できる。所定の記憶空間は、オンチップまたはオフチップの記憶空間であり得る。例えば、設定された量子化パラメータを所定の記憶空間に記憶できる。各量子化待ちデータに対して量子化を実行する場合、所定の記憶空間から対応する量子化パラメータを抽出してから量子化を実行できる。経験値に基づいて各種類の量子化待ちデータに対応する量子化パラメータを設定できる。要件に応じて記憶された各種類の量子化待ちデータに対応する量子化パラメータを更新できる。
【００５７】
各量子化待ちデータのデータ特徴に基づいて、データ特徴と量子化パラメータとの対応関係を検索し、量子化パラメータを決定できる。例えば、量子化待ちデータのデータ分布が疏らおよび稠密である場合、異なる量子化パラメータにそれぞれ対応されることができる。対応関係を検索することで、量子化待ちデータのデータ分布に対応する量子化パラメータを決定できる。
【００５８】
各量子化待ちデータに基づいて、所定の量子化パラメータ計算方法を利用し、各量子化待ち層に対応する量子化パラメータを計算して得ることができる。例えば、量子化待ちデータの絶対値の最大値および所定のデータビット幅に基づいて、丸めアルゴリズムを利用して量子化パラメータの中のポイント位置を計算して得ることができる。
【００５９】
可能な一実現形態において、当該方法は、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップをさらに含んでもよい。
【００６０】
当該実現形態において、量子化待ちデータを統計し、統計結果およびデータビット幅に基づいて量子化待ちデータに対応する量子化パラメータを決定できる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量の中の一つまたは複数を含んでもよい。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
【００６１】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値Ｚ１および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るステップを含む。ここで、当該絶対値の最大値Ｚ１は、量子化待ちデータの中のデータに対して絶対値を取った後に得られた最大値である。
【００６２】
当該実現形態において、量子化待ちデータが原点に対して対称的なデータである場合、量子化パラメータはオフセット量を含まないでもよく、Ｚ１が量子化待ちデータの中の要素の絶対値の最大値であり、量子化待ちデータに対応するデータビット幅がｎであり、Ａ１がデータビット幅ｎで量子化待ちデータに対して量子化を実行した後の量子化データが表現できる最大値であり、A1が2s1(2n-1-1)であると仮定すると、Ａ１は、Ｚ１を含む必要があり、且つ、Ｚ１は、Ａ１／２よりも大きい必要があり、そのため、式（１）の制約がある。
2022501678.tif 000003
【００６３】
プロセッサは、量子化待ちデータの中の絶対値の最大値Ｚ１およびデータビット幅ｎに基づいて、第１タイプのポイント位置ｓ１を計算して得ることができる。例えば、以下の式（２）を利用して量子化待ちデータに対応する第１タイプのポイント位置ｓ１
を計算して得ることができる。
2022501678.tif 000004
【００６４】
ここで、ｃｅｉlは、切り上げ丸めであり、Ｚ１は、量子化待ちデータの中の絶対値の最大値であり、ｓ１は、第１タイプのポイント位置であり、ｎは、データビット幅である。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【００６５】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置ｓ２を得るステップを含む。あるいは、前記量子化パラメータがオフセット量を含むと、前記更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記現在量子化待ちデータの第２タイプのポイント位置ｓ２を得る。
【００６６】
当該実現形態において、まず、量子化待ちデータ（あるいは更新統計結果）の中の最大値Ｚｍａxおよび最小値Ｚｍｉｎを取得してから、さらに、最大値Ｚｍａxおよび最小値Ｚｍｉｎに基づいて以下の式（３）を利用して計算できる。
2022501678.tif 000005
さらに、計算して得たＺ２および対応するデータビット幅に基づいて以下の式（４）を利用して第２タイプのポイント位置ｓ２を計算できる
2022501678.tif 000006
【００６７】
当該実現形態において、量子化するとき、通常の場合には量子化待ちデータの中の最大値および最小値を保存し、保存された量子化待ちデータの中の最大値および最小値に基づいて絶対値の最大値を直接取得するため、もっと多いリソースを消費して量子化待ちデータに対して絶対値を求める必要がなくなり、統計結果を決定する時間を節約する。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
【００６８】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【００６９】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数ｆ’を得るステップと、を含む。ここで、第１タイプのスケーリング係数ｆ’は、第１のスケーリング係数ｆ１および第２のスケーリング係数ｆ２を含んでもよい。
ここで、当該第１のスケーリング係数ｆ１は、以下の式（５）に基づいて計算できる。
2022501678.tif 000007
ここで、第２のスケーリング係数ｆ２は、以下の式（６）に基づいて計算できる。
2022501678.tif 000008
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
【００７０】
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む。あるいは、前記更新統計結果の中の最大値および最小値に基づいて、現在量子化待ちデータのオフセット量を得る。
【００７１】
当該実現形態において、図３は、本発明の実施例に係る対称的な固定小数点数表現を示す模式図である。図３に示す量子化待ちデータの数値フィールドは、「０」を対称中心として分布される。Ｚ１は、量子化待ちデータの数値フィールド中のすべての浮動小数点数の絶対値の最大値であり、図３において、Ａ１は、ｎビットの固定小数点数が表現できる浮動小数点数の最大値であり、浮動小数点数Ａ１を固定小数点数に変換すると2(n-1)-1である。オーバーフローを回避するために、Ａ１はＺ１を含む必要がある。実際演算において、ニューラルネットワーク演算過程での浮動小数点データは、ある決定区間の正規分布になる傾向があるが、「０」を対称中心とする分布を必ずとして満たすとは限らなく、このとき、固定小数点数で表現すると、オーバーフロー状況が発生し易い。このような状況を改善するために、量子化パラメータの中にオフセット量を導入する。図４は、本発明の実施例に係るオフセット量を導入した固定小数点数表現を示す模式図である。図４に示すように、量子化待ちデータの数値フィールドは、「０」を対称中心として分布されていなく、Ｚｍｉｎは、量子化待ちデータの数値フィールドの中のすべての浮動小数点数の最小値であり、Ｚｍａxは、量子化待ちデータの数値フィールドの中のすべての浮動小数点数の最大値であり、Ａ２は、ｎビットの固定小数点数で表現する平行移動後の浮動小数点数の最大値であり、Ａ２は、2s2(2n-1-1)である。Ｐは、Ｚｍｉｎ〜Ｚｍａxの間の中心点であり、量子化待ちデータの数値フィールド全体をずれ移動させて、平行移動後の量子化待ちデータの数値フィールドが「０」を対称中心として分布されるようにすることで、データの「オーバーフロー」を回避する。平行移動後の量子化待ちデータの数値フィールドの中の絶対値の最大値は、Ｚ２である。図４から分かるように、オフセット量は、「０」点と「Ｐ」点との間の水平距離であり、当該距離をオフセット量ｏと呼ぶ。
当該最小値Ｚｍｉｎおよび最大値Ｚｍａxに基づいて以下の式（７）に基づいてオフセット量を計算して得ることができる。
2022501678.tif 000009
【００７２】
ここで、ｏは、オフセット量を示し、Ｚｍｉｎは、量子化待ちデータすべての要素中（あるいは更新統計結果中）の最小値であり、Ｚｍａxは、量子化待ちデータすべての要素中（あるいは更新統計結果中）の最大値を示す。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
【００７３】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【００７４】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数f”を得るステップと、を含む。ここで、第２タイプのスケーリング係数f”は、第３のスケーリング係数ｆ３および第４のスケーリング係数ｆ４を含んでもよい。あるいは、前記更新統計結果中の最大値、最小値、および、量子化後のデータの最大値に基づいて、現在量子化待ちデータの第２タイプのスケーリング係数を得る。
【００７５】
当該実現形態において、量子化パラメータがオフセット量を含む場合、Ａ２は、データビット幅ｎを用いて平行移動後の量子化待ちデータに対して量子化を実行した後の量子化データが表現できる最大値であり、Ａ２は、2s2(2n-1-1)であり、量子化待ちデータの中（あるいは更新統計結果中）のＺｍａxおよび最小値Ｚｍｉｎに基づいて平行移動後の量子化待ちデータの数値フィールドの中の絶対値の最大値Ｚ２を計算して得ることができ、さらに、以下の式（８）に基づいて第３のスケーリング係数ｆ３を計算できる。
2022501678.tif 000010
さらに、第４のスケーリング係数ｆ４は、以下の式（９）に基づいて計算できる。
2022501678.tif 000011
量子化待ちデータに対して量子化を実行する場合、使用される量子化パラメータが異なると、量子化の実行に使用されるデータが異なる。
【００７６】
可能な一実現形態において、量子化パラメータは、第１タイプのポイント位置ｓ１を含んでもよい。以下の式（１０）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000012
ここで、Ｉxは、量子化データであり、Ｆxは、量子化待ちデータであり、ｒｏｕｎｄは、最も近い整数への丸め演算を実行する。
【００７７】
量子化パラメータが第１タイプのポイント位置ｓ１を含む場合、式（１１）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000013
【００７８】
可能な一実現形態において、量子化パラメータは、第１タイプのポイント位置および第１のスケーリング係数を含んでもよい。以下の式（１２）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000014
【００７９】
量子化パラメータが第１タイプのポイント位置および第１のスケーリング係数を含む場合、式（１３）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000015
【００８０】
可能な一実現形態において、量子化パラメータは、第２のスケーリング係数を含んでもよい。以下の式（１４）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000016
【００８１】
量子化パラメータが第２のスケーリング係数を含む場合、式（１５）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000017
【００８２】
可能な一実現形態において、量子化パラメータは、オフセット量を含んでもよい。以下の式（１６）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000018
【００８３】
量子化パラメータがオフセット量を含む場合、式（１７）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000019
【００８４】
可能な一実現形態において、量子化パラメータは、第２タイプのポイント位置およびオフセット量を含んでもよい。以下の式（１８）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000020
【００８５】
量子化パラメータが第２タイプのポイント位置およびオフセット量を含む場合、式（１９）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000021
【００８６】
可能な一実現形態において、量子化パラメータは、第２タイプのスケーリング係数f”およびオフセット量ｏを含んでもよい。以下の式（２０）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000022
【００８７】
量子化パラメータが第２タイプのスケーリング係数およびオフセット量を含む場合、式（２１）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000023
【００８８】
可能な一実現形態において、量子化パラメータは、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含んでもよい。以下の式（２２）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501678.tif 000024
【００８９】
量子化パラメータが第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含む場合、式（２３）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Ｆxを得ることができる。
2022501678.tif 000025
【００９０】
上述した式の中の最も近い整数への丸め演算ｒｏｕｎｄの代わりに、例えば、切り上げ丸め、切り下げ丸め、ゼロへの丸めなど丸め演算のような、他の丸め演算方法を使用できることを理解できる。データビット幅が一定である場合、ポイント位置に基づいて量子化して得られた量子化データにおいて、小数点の後のビット数が多いほど、量子化データの量子化精度も大きいことを理解できる。
可能な一実現形態において、上述したステップＳ１１は、
【００９１】
量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層の中の各種類の量子化待ちデータに対応する量子化パラメータを決定するステップを含んでもよい。
【００９２】
可能な一実現形態において、各量子化待ち層の中の各種類の量子化待ちデータに対応する量子化パラメータは、保存された所定の値であり得る。ニューラルネットワークのために、一つの、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、当該対応関係は、各量子化待ち層の各種類の量子化待ちデータと量子化パラメータとの対応関係を含んでもよく、対応関係を各層が共有してアクセスできる記憶空間に保存する。ニューラルネットワークのために、複数の、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、各量子化待ち層にそれぞれそのうちの一つの対応関係が対応される。各層の対応関係を本層専用の記憶空間に保存してもよいし、各層の対応関係を各層が共有してアクセスできる記憶空間に保存してもよい。
【００９３】
量子化待ちデータと量子化パラメータとの対応関係は、複数の量子化待ちデータと自分に対応する複数の量子化パラメータとの間の対応関係を含んでもよい。例えば、量子化待ちデータと量子化パラメータとの対応関係Ａは、量子化待ち層１のニューロンおよび重み値の二つの量子化待ちデータと、ニューロンに対応するポイント位置１、スケーリング係数１、および、オフセット量１の三つの量子化パラメータと、重み値に対応するポイント位置２およびオフセット量２の二つの量子化パラメータと、を含んでもよい。本発明は、量子化待ちデータと量子化パラメータとの対応関係の具体的なフォーマットに対して限定しない。
【００９４】
本実施例において、量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層の中の各種類の量子化待ちデータに対応する量子化パラメータを決定できる。各量子化待ち層のために対応する量子化パラメータを予め設定し、対応関係によって記憶した後、量子化待ち層が検索してから使用するようにすることができる。本実施例の中の量子化パラメータの取得方式は、簡単かつ便利である。
【００９５】
図５は、本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。可能な一実現形態において、図５に示すように、当該方法は、ステップＳ１４からステップＳ１６をさらに含んでもよい。
【００９６】
ステップＳ１４において、前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定する。
【００９７】
量子化待ちデータに対応する量子化データと量子化待ちデータとの間の誤差に基づいて、量子化待ちデータの量子化誤差を決定できる。例えば、標準差計算方法、ルート平均二乗誤差計算方法などの、所定の誤差計算方法を利用し、量子化待ちデータの量子化誤差を計算できる。
2022501678.tif 000026
さらに、量子化間隔、量子化後のデータの数、および、対応する量子化前のデータに基づいて式（２５）に基づいて量子化誤差diffbitを決定できる。
2022501678.tif 000027
さらに、量子化後のデータおよび対応する逆量子化データに基づいて式（２６）に基づいて量子化誤差diffbitを決定できる。
2022501678.tif 000028
【００９８】
ステップＳ１５において、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得る。
【００９９】
経験値に基づいて誤差閾値を決定でき、誤差閾値は、量子化誤差に対する期待値を示すために使用できる。量子化誤差が誤差閾値よりも大きいか小さい場合、量子化待ちデータに対応するデータビット幅を調整し、量子化待ちデータに対応する調整ビット幅を得ることができる。データビット幅をもっと長いビット幅またはもっと短いビット幅に調整することによって、量子化精度を増加または減少することができる。
【０１００】
受け入れることができる最大誤差に基づいて誤差閾値を決定でき、量子化誤差が誤差閾値よりも大きい場合は、量子化精度が期待に応えられないことを意味し、データビット幅をもっと長いビット幅に調整する必要がある。さらに、より高い量子化精度に基づいて一つのより小さい誤差閾値を決定でき、量子化誤差が誤差閾値未満である場合は、量子化精度がより高いことを意味し、ニューラルネットワークの稼働効率が影響を受けることになり、データビット幅をもっと短いビット幅に適当に調整ことによって、量子化精度を適当に低下し、ニューラルネットワークの稼働効率を向上させることができる。
【０１０１】
データビット幅を固定されたビット数のステップ長に基づいて調整してもよいし、量子化誤差と誤差閾値との間の差分値が異なることに基づいて、可変の調整ステップ長に基づいてデータビット幅を調整してもよい。本発明は、これに対して限定しない。
【０１０２】
ステップＳ１６において、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得ることによって、前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するようにする。
【０１０３】
調整ビット幅を決定した後に、量子化待ちデータに対応するデータビット幅を調整ビット幅に更新できる。例えば、量子化待ちデータの更新前のデータビット幅が８ビットであり、調整ビット幅が１２ビットであると、更新後の量子化待ちデータに対応するデータビット幅は１２ビットである。調整ビット幅および量子化待ちデータに基づいて量子化待ちデータに対応する調整量子化パラメータ計算して得ることができる。量子化待ちデータに対応する調整量子化パラメータに基づいて量子化待ちデータに対して量子化を再度実行することによって、量子化精度がもっと高いまたはもっと低い量子化データを得ることで、量子化待ち層は量子化精度と処理効率との間のバランスをとることができる。
【０１０４】
ニューラルネットワークの推論、トレーニング、および、微調整過程において、各層間の量子化待ちデータは一定の関連性を有すると見なすことができる。例えば、各層の量子化待ちデータ間の平均値間の差が所定の平均値閾値未満であり、且つ、各層の量子化待ちデータ間の最大値間の差分値が所定の差分値閾値未満である場合、量子化待ち層の調整量子化パラメータを後続の一つまたは複数の層の調整量子化パラメータとして、量子化待ち層の後続の一つまたは複数の層の量子化待ちデータに対する量子化の実行に用いることができる。さらに、ニューラルネットワークのトレーニングおよび微調整過程において、量子化待ち層の現在反復中で得られた調整量子化パラメータを、後続の反復中の量子化待ち層に対する量子化の実行に用いることができる。
可能な一実現形態において、前記方法は、
前記量子化待ち層の後の一層または多層において、前記量子化待ち層の量子化パラメータを使用するステップをさらに含む。
【０１０５】
ニューラルネットワークが調整量子化パラメータに基づいて量子化を実行することは、量子化待ち層のみにおいて調整量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行し、再度得られた量子化データを量子化待ち層の演算に用いることを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用せずに量子化待ちデータに対して量子化を再度実行し、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および／または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用して量子化を再度実行し、再度得られた量子化データを量子化待ち層の演算に用い、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および／または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。本発明は、これに対して限定しない。
【０１０６】
本実施例において、量子化待ちデータと量子化待ちデータに対応する量子化データとの間の誤差に基づいてデータビット幅を調整し、調整後のデータビット幅に基づいて調整量子化パラメータを計算して得る。異なる誤差閾値を設定して異なる調整量子化パラメータを得ることで、量子化精度の向上または稼働効率の向上など、異なる量子化要件に達することができる。量子化待ちデータおよび量子化待ちデータの量子化データに基づいて計算して得た調整量子化パラメータは、さらに、量子化待ちデータ自身のデータ特徴にもっと符合でき、量子化待ちデータ自身の要件にもっと符合される量子化結果に達し、量子化精度と処理効率との間でもっとよいバランスをとることができる。
可能な一実現形態において、ステップＳ１５は、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含んでもよい。
【０１０７】
受け入れることができる最大の量子化誤差に基づいて、第１の誤差閾値を決定できる。量子化誤差と第１の誤差閾値を比較できる。量子化誤差が第１の誤差閾値よりも大きい場合、量子化誤差が既に受け入れることができないと見なすことができる。量子化精度を向上する必要があり、量子化待ちデータに対応するデータビット幅を増加する方式によって、量子化待ちデータの量子化精度を向上させることができる。
【０１０８】
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて増加し、調整ビット幅を得ることができる。固定された調整ステップ長は、Ｎビットであり得、Ｎは、正の整数である。毎回、データビット幅を調整するときにＮビットを増加できる。毎回、増加した後のデータビット幅＝原データビット幅＋Ｎビットである。
【０１０９】
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて増加し、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第１の閾値よりも大きい場合、調整ステップ長Ｍ１に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第１の閾値未満である場合、調整ステップ長Ｍ２に基づいてデータビット幅を調整でき、ここで、第１の閾値は第２の閾値よりも大きく、Ｍ１はＭ２よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明は、データビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
【０１１０】
量子化待ちデータを調整ビット幅に基づいて計算して調整後の量子化パラメータを得ることができる。調整後の量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行した後に得られた量子化データは、調整前の量子化パラメータを利用して量子化して得られた量子化データよりも、量子化精度がもっと高い。
可能な一実現形態において、当該方法は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０１１１】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
【０１１２】
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて調整後の量子化パラメータを計算して得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて量子化待ちデータの調整後の量子化誤差を計算して得、調整後の量子化誤差は依然として第１の誤差閾値よりも大きい可能性があり、すなわち、データビット幅を一回調整で調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第１の誤差閾値よりも大きい場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第１の誤差閾値未満になるまでに、量子化待ちデータに対応するデータビット幅を複数回増加できる。
【０１１３】
複数回増加する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅＝原データビット幅＋Ｂ*Ｎビットであり、ここで、Ｎは、毎回増加する、固定された調整ステップ長であり、Ｂは、データビット幅の増加回数である。最終のデータビット幅＝原データビット幅＋Ｍ１＋Ｍ２＋…＋Ｍｍであり、ここで、Ｍ１、Ｍ２…Ｍｍは、毎回増加する可変の調整ステップ長である。
【０１１４】
本実施例において、量子化誤差が第１の誤差閾値よりも大きい場合、前記量子化待ちデータに対応するデータビット幅を増加し、前記量子化待ちデータに対応する調整ビット幅を得る。第１の誤差閾値および調整ステップ長を設定してデータビット幅を増加することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第１の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に調整することによって、異なる量子化要件を満たし、量子化精度を自身データ特徴に基づいて自己適応調整できるようにする。
可能な一実現形態において、ステップＳ１５は、
【０１１５】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む
【０１１６】
受け入れることができる量子化誤差および所望のニューラルネットワークの稼働効率に基づいて、第２の誤差閾値を決定できる。量子化誤差と第２の誤差閾値を比較できる。量子化誤差が第２の誤差閾値未満である場合、量子化誤差が予想を超えていると見なすことができるが、稼働効率が低すぎることは既に受け入れることができない。量子化精度を低下してニューラルネットワークの稼働効率を向上させることができ、量子化待ちデータに対応するデータビット幅を減少する方式によって、量子化待ちデータの量子化精度を低下させることができる。
【０１１７】
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて減少し、調整ビット幅を得ることができる。固定された調整ステップ長は、Ｎビットであり得、Ｎは、正の整数である。毎回、データビット幅を調整するときにＮビットを減少できる。増加後のデータビット幅＝原データビット幅−Ｎビットである。
【０１１８】
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて減少し、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第１の閾値よりも大きい場合、調整ステップ長Ｍ１に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第１の閾値未満である場合、調整ステップ長Ｍ２に基づいてデータビット幅を調整でき、ここで、第１の閾値は第２閾値よりも大きく、Ｍ１はＭ２よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明はデータビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
【０１１９】
量子化待ちデータを調整ビット幅に基づいて、調整後の量子化パラメータを計算して得ることができ、調整後の量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行した後に得られた量子化データは、調整前の量子化パラメータを利用して量子化して得られた量子化データよりも、量子化精度はより低い。
可能な一実現形態において、当該方法は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０１２０】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含んでもよい。
【０１２１】
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて調整後の量子化パラメータを計算して得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて量子化待ちデータの調整後の量子化誤差を計算して得、調整後の量子化誤差が依然として第２の誤差閾値よりも小さい、すなわち、データビット幅を一回調整で調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第２の誤差閾値未満である場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第２の誤差閾値よりも大きくなるまでに、量子化待ちデータに対応するデータビット幅を複数回減少できる。
【０１２２】
複数回で減少する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅＝原データビット幅−Ｂ*Ｎビット、ここで、Ｎは、毎回、増加する固定された調整ステップ長であり、Ｂは、データビット幅の増加回数である。最終のデータビット幅＝原データビット幅−Ｍ１−Ｍ２−…−Ｍｍであり、ここで、Ｍ１、Ｍ２…Ｍｍは、毎回、減少する可変の調整ステップ長である。
【０１２３】
本実施例において、量子化誤差が第２の誤差閾値未満である場合、前記量子化待ちデータに対応するデータビット幅を減少し、前記量子化待ちデータに対応する調整ビット幅を得る。第２の誤差閾値および調整ステップ長を設定してデータビット幅を減少することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第２の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に自己適応調整できるようにし、異なる量子化要件を満たし、量子化精度を調整できるようにし、量子化精度とニューラルネットワークの稼働効率との間でバランスをとることができる。
可能な一実現形態において、前記方法は、
【０１２４】
前記量子化誤差が第１の誤差閾値よりも大きいと、前記量子化待ちデータに対応するデータビット幅を増加し、前記量子化誤差が第２の誤差閾値よりも小さいと、前記量子化待ちデータに対応するデータビット幅を減少し、前記量子化待ちデータに対応する調整ビット幅を得るステップをさらに含む。
【０１２５】
さらに、二つの誤差閾値を同時に設置でき、ここで、第１の誤差閾値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数を増加でき、第２の誤差閾値は、量子化精度が高すぎることを示すために使用され、データビット幅のビット数を減少できる。第１の誤差閾値は第２誤差閾値よりも大きく、量子化待ちデータの量子化誤差を二つの誤差閾値と同時に比較でき、量子化誤差が第１の誤差閾値よりも大きい場合、データビット幅のビット数を増加し、量子化誤差が第２の誤差閾値未満である場合、データビット幅のビット数を減少する。量子化誤差が第１の誤差閾値と第２の誤差閾値との間に位置すると、データビット幅をそのまま維持することができる。
【０１２６】
本実施例において、量子化誤差と第１の誤差閾値および第２の誤差閾値を同時に比較することによって、比較結果に基づいてデータビット幅を増加または減少でき、第１の誤差閾値および第２の誤差閾値を利用してデータビット幅をもっと柔軟に調整できる。データビット幅の調整結果が量子化要件にもっと符合されるようにする。
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、当該方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るステップと、
【０１２７】
前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む。
【０１２８】
ニューラルネットワーク演算の微調整段階、および／または、トレーニング段階は、複数回の反復を含む。ニューラルネットワークの中の各量子化待ち層において、一回の順方向演算および一回の逆方向演算を実行し、量子化待ち層の重み値を更新した後、一回の反復が完成される。複数回の反復中で、量子化待ち層中の量子化待ちデータ、および／または、量子化待ちデータに対応する量子化データのデータ変動幅は、異なる反復中の量子化待ちデータおよび／または量子化データに対して同一の量子化パラメータを使用して量子化を実行できるか否かを推し量ることに利用できる。現在反復および履歴反復中の量子化待ちデータのデータの変動幅がより小さいと、例えば所定の幅度変動閾値未満であると、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用できる。
【０１２９】
予め記憶した量子化パラメータを抽出する方式によって、量子化待ちデータに対応する量子化パラメータを決定できる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化待ちデータに対応する量子化パラメータを抽出する必要がある。複数の反復中の量子化待ちデータおよび／または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で使用された同一の量子化パラメータを一時記憶でき、各反復中で量子化を実行するときに一時記憶された量子化パラメータを利用して量子化演算を実行すればよく、毎回の反復中で量子化パラメータを抽出する必要がない。
【０１３０】
さらに、量子化待ちデータおよびデータビット幅に基づいて量子化パラメータを計算して得ることができる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化パラメータをそれぞれ計算する必要がある。複数の反復中の量子化待ちデータおよび／または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用すると、各反復中でいずれもそのうちの１番目の反復中で計算して得た量子化パラメータを直接使用すればよく、毎回の反復中で量子化パラメータを計算しない。
【０１３１】
量子化待ちデータが重み値である場合、各反復間の重み値が継続的に更新され、複数の反復中の重み値のデータ変動幅がより小さいか、または、複数の反復中の重み値に対応する量子化データのデータ変動幅がより小さいと、複数の反復中で同一の量子化パラメータを利用して重み値に対して量子化を実行できることを理解できる。
【０１３２】
量子化待ちデータのデータ変動幅に基づいて目標反復間隔を決定でき、目標反復間隔は少なくとも一回の反復を含み、目標反復間隔内の各反復中で同一の量子化パラメータを使用でき、すなわち、目標反復間隔内の各反復中で量子化待ちデータの量子化パラメータをこれ以上更新しない。ニューラルネットワークは、目標反復間隔によって量子化待ちデータの量子化パラメータを更新し、目標反復間隔内に含まれる反復に対しては、所定の量子化パラメータを取得しないか、または、量子化パラメータを計算しなく、すなわち、目標反復間隔内の反復中で量子化パラメータを更新しない。目標反復間隔以外の反復中では、再度、所定の量子化パラメータを取得するか、または、量子化パラメータを計算し、すなわち、目標反復間隔以外の反復中で量子化パラメータを更新する。
【０１３３】
複数の反復間の量子化待ちデータまたは量子化待ちデータの量子化データのデータ変動幅が小さいほど、決定される目標反復間隔に含まれる反復回数が多いことを理解できる。計算して得たデータ変動幅に基づいて、所定のデータ変動幅と反復間隔との対応関係を検索し、計算して得たデータ変動幅に対応する目標反復間隔を決定できる。要件に応じてデータ変動幅と反復間隔との対応関係を設定できる。計算して得たデータ変動幅に基づいて、所定の計算方法を利用して目標反復間隔を計算して得ることができる。本発明は、データ変動幅の計算方式および目標反復間隔の取得方式に対して限定しない。
【０１３４】
本実施例において、ニューラルネットワーク演算の微調整段階、および／または、トレーニング段階において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。複数の反復中の量子化待ちデータまたは量子化待ちデータに対応する量子化データのデータ変動幅に基づいて、目標反復間隔を決定できる。ニューラルネットワークは、目標反復間隔に基づいて量子化パラメータを更新するか否かを決定できる。目標反復間隔に含まれる複数の反復中のデータ変動幅がより小さいため、目標反復間隔内の反復中で量子化パラメータを更新しないでも量子化精度を保証できる。目標反復間隔内の複数の反復中で量子化パラメータを更新しないと、量子化パラメータの抽出回数または計算回数を削減し、ニューラルネットワークの演算効率を向上させることができる。
可能な一実現形態において、当該方法は、
【０１３５】
前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにするステップをさらに含む。
【０１３６】
本発明の上述した実施例に記載されたように、量子化待ちデータの量子化パラメータは、予め設定してもよいし、量子化待ちデータに対応するデータビット幅に基づいて計算して得てもよい。異なる量子化待ち層の中の量子化待ちデータに対応するデータビット幅、または、同一の量子化待ち層の中の量子化待ちデータの異なる反復中の対応するデータビット幅は、本発明の上述した実施例の中の方式によって自己適応調整できる。
【０１３７】
量子化待ちデータのデータビット幅を自己適応調整できなく、所定のデータビット幅である場合、量子化待ちデータの現在反復中の所定のデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。目標反復間隔内の各反復中では、自身の所定の値を使用できない。
【０１３８】
量子化待ちデータのデータビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。データビット幅を自己適応調整できる場合、データビット幅に対して一回の調整または複数回の調整を実行できる。量子化待ちデータの現在反復中で自己適応調整を実行した後のデータビット幅を、目標反復間隔内の各反復中の対応するデータビット幅として、目標反復間隔内の各反復中でこれ以上データビット幅を自己適応調整（更新）しない。量子化待ちデータは、現在反復中で自己適応調整後のデータビット幅を使用してもよいし、自己適応調整前のデータビット幅を使用してもよく、本発明は、これに対して限定しない。
【０１３９】
目標反復間隔以外の他の反復中では、量子化待ちデータのデータ変動幅が所定の条件を満たさないため、本発明の上述した方法によってデータビット幅を自己適応調整し、現在反復にもっと符合される量子化待ちデータのデータビット幅を得てもよいし、本発明の中の目標反復間隔の計算方法を使用して新たな目標反復間隔を計算して得て使用してもよいし、このようにして、目標反復間隔以外の反復の量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０１４０】
目標反復間隔内の各反復中のデータビット幅が同一であると、各反復中では同一のデータビット幅に基づいて別々に対応する量子化パラメータを計算して得ることができる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量の中の少なくとも一つを含んでもよい。目標反復間隔内の各反復中で、同一のデータビット幅に基づいて量子化パラメータをそれぞれ計算して得ることができる。量子化パラメータが、ポイント位置（第１タイプのポイント位置および第２タイプのポイント位置を含む）、スケーリング係数（第１タイプのスケーリング係数および第２タイプのスケーリング係数を含む）、および、オフセット量を含む場合、目標反復間隔内の各反復中で、同一のデータビット幅を利用し、それぞれに対応するポイント位置、スケーリング係数、および、オフセット量をそれぞれ計算できる。
【０１４１】
現在反復中のデータビット幅に基づいて目標反復間隔内の各反復中のデータビット幅を決定する同時に、現在反復中の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。目標反復間隔内の各反復中の量子化パラメータも、これ以上再度同一のデータビット幅に基づいて計算して得なく、ニューラルネットワークの演算効率をさらに向上させることができる。現在反復中のすべての量子化パラメータまたは一部の量子化パラメータに基づいて、目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。現在反復中の一部の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定する場合、残りの部分の量子化パラメータは、目標反復間隔内の各反復中で依然として計算する必要がある。
【０１４２】
例えば、量子化パラメータは、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含む。現在反復中のデータビット幅および第２タイプのポイント位置に基づいて、目標反復間隔内の各反復中のデータビット幅および第２タイプのポイント位置を決定できる。すると、目標反復間隔内の各反復中の第２タイプのスケーリング係数およびオフセット量は、同一のデータビット幅に基づいて計算して得る必要がある。さらに、現在反復中のデータビット幅、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量に基づいて、目標反復間隔内の各反復中のデータビット幅、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を決定でき、すると、目標反復間隔内の各反復中の各量子化パラメータはいずれも計算して得る必要がない。
【０１４３】
本実施例において、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定することによって、ニューラルネットワークが量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにする。目標反復間隔内の各反復中のデータビット幅は、現在反復中のデータビット幅に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のデータビット幅を利用して量子化パラメータを計算して得ることによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のデータビット幅を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
【０１４４】
可能な一実現形態において、当該方法は、前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
【０１４５】
ここで、前記量子化待ちデータの前記現在反復中の対応する第１タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第１タイプのポイント位置を決定する。前記量子化待ちデータの前記現在反復中の対応する第２タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第２タイプのポイント位置を決定する。
【０１４６】
量子化パラメータの中で、スケーリング係数およびオフセット量と比較すると、異なるポイント位置が同一の量子化待ちデータの量子化結果に対して発生する影響がより大きい。量子化待ちデータの現在反復中の対応するポイント位置に基づいて、目標反復間隔内の反復中の対応するポイント位置を決定できる。データビット幅を自己適応調整できない場合、量子化待ちデータの現在反復中の所定のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよく、量子化待ちデータの現在反復中で所定のデータビット幅に基づいて計算して得たポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。データビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中で調整した後のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。
【０１４７】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するスケーリング係数に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するスケーリング係数を決定してもよいし、および／または、量子化待ちデータの現在反復中の対応するオフセット量に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するオフセット量を決定してもよい。
【０１４８】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定してもよく、ここで、量子化待ちデータの現在反復中の対応するデータビット幅は、現在反復中の所定のデータビット幅または自己適応調整後のデータビット幅であってもよい。
【０１４９】
本実施例において、量子化待ちデータの現在反復中の対応するポイント位置に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するポイント位置を決定する。目標反復間隔内の各反復中のポイント位置は、現在反復中のポイント位置に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のポイント位置を利用することによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のポイント位置を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０１５０】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップを含み、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０１５１】
前記量子化待ちデータの現在反復中のポイント位置の第１の‘移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含んでもよく、
【０１５２】
ここで、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップは、
【０１５３】
前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップを含んでもよい。
【０１５４】
ここで、量子化待ちデータの現在反復中の第１タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第１タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第１タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第１タイプのポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中の第１タイプのポイント位置の第２の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。あるいは、量子化待ちデータの現在反復中の第２タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第２タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第２タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第２タイプのポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中の第２タイプのポイント位置の第２の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。
【０１５５】
可能な一実現形態において、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、計算目標反復間隔の履歴反復であり得る。現在反復と、対応する目標反復間隔との間の対応関係は、以下のケースを含んでもよい。
【０１５６】
現在反復から目標反復間隔をカウントし始めて、現在反復に対応する目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復は、１００番目の反復、１０１番目の反復、および、１０２番目の反復を含み、１０３番目の反復中で１０３番目の反復に対応する目標反復間隔を計算し、１０３番目の反復を、新たに計算して得た現在目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０３番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１５７】
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔内の最後の一つの反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復が、１０１番目の反復、１０２番目の反復、および、１０３番目の反復を含み、１０３番目の反復中で１０３番目の反復に対応する目標反復間隔を計算し、１０４番目の反復を、新たに計算して得た当目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０３番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１５８】
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復が、１０１番目の反復、１０２番目の反復、および、１０３番目の反復を含み、１０４番目の反復中で１０４番目の反復に対応する目標反復間隔を計算し、１０５番目の反復を、新たに計算して得た当目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０４番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１５９】
要件に応じて現在反復と目標反復間隔との間の他の対応関係を決定でき、例えば現在反復中の後のＮ番目の反復から目標反復間隔をカウントし始めることができ、Ｎは１よりも大きく、本発明は、これに対して限定しない。
【０１６０】
計算して得た量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値は、量子化待ちデータの現在反復中のポイント位置の第１移動平均値、および、量子化待ちデータの一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値を含むことを理解できる。式（２７）を利用して現在反復中の対応するポイント位置の第１の移動平均値m(t)を計算できる。
2022501678.tif 000029
【０１６１】
本実施例において、量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算し、量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得る。第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第１データ変動幅はポイント位置の変化傾向の推し量りに用いることができるため、目標反復間隔が量子化待ちデータポイント位置の変化傾向に基づいて変化されるようにすることができ、さらに、計算して得た各目標反復間隔の大きさが量子化待ちデータのポイント位置の変化傾向に基づいて変化されるようにすることができる。量子化パラメータは目標反復間隔に基づいて決定されるため、量子化パラメータに基づいて量子化を実行して得られた量子化データが、量子化待ちデータのポイント位置の変動傾向にもっと符合されるようにすることができ、量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０１６２】
可能な一実現形態において、前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含んでもよい。
式（２８）を利用して第１データ変動幅diffupdate1を計算できる
2022501678.tif 000030
【０１６３】
第１のデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定できることによって、ニューラルネットワークが目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。式（２９）に基づいて目標反復間隔Ｉを計算して得ることができる
2022501678.tif 000031
ここで、βは、第２のパラメータであり、γは、第３のパラメータである。第２のパラメータおよび第３のパラメータは、ハイパーパラメータであり得る。
【０１６４】
第１のデータ変動幅はポイント位置の変化傾向の推し量に用いることができ、第１のデータ変動幅が大きいほど、量子化データの数値範囲変化が激烈になることを意味し、量子化パラメータを更新するときに間隔がもっと短い目標反復間隔Ｉが必要であることを理解できる。
【０１６５】
本実施例において、前記第１の移動平均値と前記第２の移動平均値との差分値を計算し、差分値の絶対値を第１のデータ変動幅として決定する。移動平均値間の差分値に基づいて精確な第１のデータ変動幅を得ることができる。
【０１６６】
可能な一実現形態において、当該方法は、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含んでもよく、
【０１６７】
ここで、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップは、
【０１６８】
前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップを含んでもよい。
【０１６９】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得ることができる。さらに、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する逆量子化データに基づいて第２のデータ変動幅を得ることができる。
2022501678.tif 000032
【０１７０】
本実施例において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得る。前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第２のデータ変動幅は、データビット幅の変動要件の推し量りに用いることができ、すると、第１のデータ変動幅および第２のデータ変動幅に基づいて計算して得た目標反復間隔は、ポイント位置およびデータビット幅の変動を同時に追跡でき、目標反復間隔の量子化待ちデータ自身のデータ量子化要件にもっと符合されることができる。
【０１７１】
可能な一実現形態において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含んでもよい。
式（３１）を利用して第２データ変動幅diffupdate2を計算して得ることができる。
2022501678.tif 000033
ここで、δは、第４のパラメータであり、第４のパラメータは、ハイパーパラメータであり得る。
【０１７２】
異なるデータビット幅を利用して異なる量子化パラメータを得ることができ、さらに、異なる量子化データを得、異なる第２のデータ変動幅が発生されることを理解できる。第２のデータ変動幅は、データビット幅の変化傾向の推し量りに用いることができ、第２のデータ変動幅が大きいほど、もっと短い目標反復間隔でデータビット幅をもっと頻繁に更新する必要があることを意味し、すなわち、もっと小さい目標反復間隔を必要とする。
【０１７３】
可能な一実現形態において、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０１７４】
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含んでもよい。
式（３２）に基づいて目標反復間隔を計算して得ることができる
2022501678.tif 000034
ここで、βは、第２のパラメータであり、γは、第３のパラメータである。第２のパラメータおよび第３のパラメータは、ハイパーパラメータであり得る。
【０１７５】
第１のデータ変動幅および第２のデータ変動幅を利用して得られた目標反復間隔は、データビット幅およびポイント位置の変化傾向を同時推し量ることができ、両者中の一つの変化傾向がより大きければ、目標反復間隔に該当する変化が発生されるようにすることができることを理解できる。目標反復間隔は、データビット幅およびポイント位置の変化を同時に追踪し、該当する調整を実行できる。目標反復間隔に基づいて更新された量子化パラメータが目標データの変動傾向にもっと符合されるようにすることができ、最終に、量子化パラメータに基づいて得られた量子化データが量子化要件にもっと符合されるようにすることができる。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０１７６】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップを含み、前記更新周期は、少なくとも一つの反復を含む。
【０１７７】
ニューラルネットワーク演算のトレーニング過程、および／または、微調整過程において、トレーニングが開始されるかまたは微調整が開始される複数の反復中で、量子化待ちデータの変動幅がより大きい。トレーニングが開始されるかまたは微調整が開始される複数の反復中で目標反復間隔を計算すると、計算して得た目標反復間隔は、その有用性を失う可能性がある。所定の更新周期に基づいて、更新周期以内の各反復中で、目標反復間隔を計算しないし、目標反復間隔も適用しないし、複数の反復中で同一のデータビット幅またはポイント位置を使用するようにすることができる。
【０１７８】
反復を更新周期以外まで実行したとき、すなわち、現在反復が更新周期以外に位置するとき、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。例えば、所定の更新周期が１００番目の反復であると、１番目の反復から１００番目までの反復の反復中では、目標反復間隔を計算しない。反復を１０１番目の反復まで実行すると、すなわち、現在反復が１０１番目の反復であると、現在反復が更新周期以外に位置され、この場合、１０１番目の反復および１番目の反復から１００番目の反復の反復中の量子化待ちデータのデータ変動幅に基づいて、１０１番目の反復中の量子化待ちデータに対応する目標反復間隔を決定し、１０１番目の反復または１０１番目の反復と所定の反復の数を隔てている反復中で、計算して得た目標反復間隔を使用できる。
【０１７９】
所定の反復の数から更新周期をカウントし始めることができ、例えば、１番目の反復から更新周期中の複数の反復をカウントし始めることもできるし、Ｎ番目の反復から更新周期中の複数の反復をカウントし始めることもでき、本発明は、これに対して限定しない。
【０１８０】
本実施例において、反復を更新周期以外まで実行したときに、目標反復間隔を計算して使用する。ニューラルネットワーク演算のトレーニング過程または微調整過程の初期段階で、量子化待ちデータの変動幅がより大きいことによって発生する目標反復間隔の有用性が大きくない問題を回避でき、目標反復間隔を使用する場合には、ニューラルネットワークの稼働効率をさらに向上させることができる。
可能な一実現形態において、当該方法は、
【０１８１】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
【０１８２】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
【０１８３】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含んでもよい。
【０１８４】
ニューラルネットワーク演算のトレーニング過程または微調整過程は、複数の周期を含んでもよい。各周期は、複数の反復を含んでもよい。ニューラルネットワーク演算に用いられるデータが完全に一回演算されると、一つの周期である。トレーニング過程において、反復の実行につれて、ニューラルネットワークの重み値の変化は安定される傾向があり、トレーニングが安定された後、ニューロン、重み値、バイアス、勾配などの量子化待ちデータはいずれも安定される傾向がある。量子化待ちデータが安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。同様に、微調整過程において、微調整は安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。
【０１８５】
このため、トレーニングが安定される周期または微調整が安定される周期に基づいて所定の周期を決定できる。トレーニングが安定された周期または微調整が安定された周期以後の周期を、所定の周期として決定できる。例えば、トレーニングが安定された周期がＭ番目の周期であると、Ｍ番目の周期以後の周期を所定の周期とすることができる。所定の周期内で、一つの周期を隔てて一つの目標反復間隔を計算し、計算して得た目標反復間隔に基づいてデータビット幅または量子化パラメータを一回調整することによって、データビット幅または量子化パラメータの更新回数を減少し、ニューラルネットワークの稼働効率を向上させることができる。
【０１８６】
例えば、所定の周期は、Ｍ番目の周期以後の周期である。Ｍ＋１番目の周期において、Ｍ番目の周期中のＰ番目の反復に基づいて計算して得た目標反復間隔は、Ｍ＋１番目の周期中のＱ番目の反復で終了する。Ｍ＋１番目の周期中のＱｍ＋１番目の反復に基づいて自分に対応する目標反復間隔Ｉｍ＋１を計算して得る。Ｍ＋２番目の周期において、Ｍ＋１番目の周期中のＱｍ＋１番目の反復に対応する反復は、Ｑｍ＋２番目の反復である。Ｍ＋１番目の周期中のＱｍ＋１番目の反復からＭ＋２番目の周期中のＱｍ＋２＋Ｉｍ＋１番目の反復までが、周期間隔である。周期間隔内の各反復中で、いずれも、Ｍ＋１番目の周期中のＱｍ＋１番目の反復中で決定したデータビット幅またはポイント位置などの量子化パラメータを使用する。
【０１８７】
本実施例において、周期間隔を設定でき、ニューラルネットワーク演算のトレーニングまたは微調整が安定された後、周期間隔に基づいて、周期ごとにデータビット幅またはポイント位置などの量子化パラメータを一回更新する。周期間隔は、トレーニングが安定されたかまたは微調整が安定された後、データビット幅またはポイント位置の更新回数を減少し、量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０１８８】
前述の各方法の実施例において、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明が説明された動作の順序に限定されないし、なぜなら、本発明によると、いくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきであることを説明する必要がある。次に、当業者は、明細書に説明された実施例が、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
【０１８９】
図２、図５のフローチャートでの各ステップは矢印に基づいて順に示したが、これらのステップは必ずとして矢印が示す順序に基づいて順に実行する必要がないことをさらに説明する必要がある。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に基づいて実行してもよい。さらに、図２、図５での少なくとも一部ステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
【０１９０】
本発明の実施例は、コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体をさらに提供し、コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワークのデータ量子化処理方法が実現される。
【０１９１】
図６は、本発明の一実施例に係るニューラルネットワーク量子化装置を示すブロック図である。図６に示すように、当該装置は、図１に示すプロセッサ１００に適用され、当該装置は、データ決定モジュール６１と、データ量子化モジュール６２と、結果決定モジュール６３と、を備える。ここで、ある一つの処理ユニット１０１中に、データ決定モジュール６１と、データ量子化モジュール６２と、結果決定モジュール６３とが、設置されている。あるいは、データ決定モジュール６１と、データ量子化モジュール６２と、結果決定モジュール６３とが、それぞれ異なる処理ユニット１０１中に設置されている。記憶ユニット１０２は、量子化待ちデータ、量子化パラメータ、データビット幅などの、データ決定モジュール６１、データ量子化モジュール６２、および、結果決定モジュール６３の稼働に関連されるデータを記憶する。
【０１９２】
データ決定モジュール６１は、前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定し、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配中の少なくとも一つを含む。
【０１９３】
データ量子化モジュール６２は、循環処理の方式を使用して、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得る。
【０１９４】
結果決定モジュール６３は、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得ることによって、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するようにする。
可能な一実現形態において、前記データ量子化モジュールは、
【０１９５】
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するための量子化待ちデータ決定サブモジュールと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るための比較サブモジュールと、
【０１９６】
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するための統計結果決定サブモジュールと、
【０１９７】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するための第１の量子化パラメータ決定サブモジュールと、
【０１９８】
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するための量子化処理サブモジュールと、を備える。
可能な一実現形態において、前記データ量子化モジュールは、
【０１９９】
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するための参考データ更新モジュールをさらに備える。
可能な一実現形態において、前記データ量子化モジュールは、
【０２００】
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するための第２の量子化パラメータ決定サブモジュールをさらに備える。
【０２０１】
可能な一実現形態において、現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
【０２０２】
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定することは、
【０２０３】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
【０２０４】
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方式と、
【０２０５】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方式を含む。
【０２０６】
可能な一実現形態において、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
【０２０７】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るステップを含む。
可能な一実現形態において、前記装置は、
【０２０８】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るためのパラメータ決定サブモジュールをさらに備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【０２０９】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るための第１のポイント位置決定サブモジュールを備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【０２１０】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第１の最大値決定サブモジュールと、
【０２１１】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【０２１２】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るための第２のポイント位置決定サブモジュールを備える。あるいは、前記量子化パラメータがオフセット量を含むと、前記各更新統計結果中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得る。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【０２１３】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第２の最大値決定サブモジュールと、
【０２１４】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える。あるいは、前記各更新統計結果中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得る。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【０２１５】
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える。あるいは、前記各更新統計結果中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得る。
可能な一実現形態において、前記装置は、
【０２１６】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定モジュールと、
【０２１７】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
【０２１８】
前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得ることによって、前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するようにするための調整量子化パラメータ決定モジュールと、をさらに備える。
可能な一実現形態において、前記調整ビット幅決定モジュールは、
【０２１９】
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備える。
可能な一実現形態において、前記装置は、
【０２２０】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後量子化誤差モジュールと、
【０２２１】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備える。
可能な一実現形態において、前記調整ビット幅決定モジュールは、
【０２２２】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備える。
可能な一実現形態において、前記装置は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後量子化誤差モジュールと、
【０２２３】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定モジュールと、をさらに備える。
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記装置は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るための第１のデータ変動幅決定モジュールと、
【０２２４】
前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするための目標反復間隔決定モジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む。
可能な一実現形態において、前記装置は、
【０２２５】
前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにするための第１の目標反復間隔適用モジュールをさらに備える。
可能な一実現形態において、前記装置は、
【０２２６】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２の目標反復間隔適用モジュールをさらに備え、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
可能な一実現形態において、前記第１のデータ変動幅決定モジュールは、
【０２２７】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０２２８】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
【０２２９】
前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするための第１の目標反復間隔決定サブモジュールを備える。
可能な一実現形態において、前記第１のデータ変動幅決定サブモジュールは、
【０２３０】
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するための第１の幅度決定サブモジュールと、前記差分値の絶対値を第１データ変動幅として決定する第１の幅度決定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
【０２３１】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るための第２のデータ変動幅決定モジュールをさらに備え、
ここで、目標反復間隔決定モジュールは、
【０２３２】
前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするための第２の目標反復間隔決定サブモジュールを備える。
可能な一実現形態において、前記第２のデータ変動幅決定モジュールは、
【０２３３】
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するための第２の幅度決定サブモジュールと、前記誤差の２乗を前記第２のデータ変動幅として決定する第２の幅度決定サブモジュールと、を備える。
可能な一実現形態において、前記第２の目標反復間隔決定サブモジュールは、
【０２３４】
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
可能な一実現形態において、前記第１のデータ変動幅決定モジュールは、
【０２３５】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るための第２のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む。
可能な一実現形態において、前記装置は、
【０２３６】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定モジュールと、
【０２３７】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第１の周期間隔適用モジュール、または
【０２３８】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第２の周期間隔適用モジュールと、をさらに備える。
【０２３９】
本発明の実施例によって提供されるニューラルネットワーク量子化装置によると、対応する量子化パラメータを利用して目標データの中の複数の量子化待ちデータに対してそれぞれ量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
【０２４０】
上述した装置の実施例は、ただ模式的なものであり、本発明の装置は、さらに他の方式によって実現されてもよいことを理解すべきである。例えば、上述した実施例の中の前記ユニット／モジュールの分割は、ただ論理的機能分割であり、実際に実現において他の分割方式があり得る。例えば、複数のユニット、モジュール、または、アセンブリは、組み合わせてもよいし、もう一つのシステムに統合されてもよく、あるいは、幾つかの特徴は、省略されてもよいし、実行されなくてもよい。
【０２４１】
また、特に説明しない限り、本発明の各実施例の中の各機能ユニット／モジュールは、一つのユニット／モジュール中に統合されてもよいし、各ユニット／モジュールが単独的に物理的に存在してもよいし、二つ以上のユニット／モジュールが一つに統合されてもよい。上述した統合されたユニット／モジュールは、ハードウェアの形式を利用して実現されてもよいし、ソフトウェアプログラムモジュールの形式を利用して実現されてもよい。
【０２４２】
前記統合されたユニット／モジュールがハードウェアの形式で実現される場合、当該ハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構成の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えばＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの、いかなる適当なハードウェアプロセッサであり得る。特に説明しない限り、前記記憶ユニットは、例えば、抵抗メモリＲＲＡＭ（Ｒｅｓｉｓｔｉｖｅ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、動的ランダムアクセスメモリＤＲＡＭ（Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、静的ランダムアクセスメモリＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ−Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、拡張動的ランダムアクセスメモリＥＤＲＡＭ（Ｅｎｈａｎｃｅｄ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、 高帯域幅メモリＨＢＭ（Ｈｉｇｈ−Ｂａｎｄｗｉｄｔｈ Ｍｅｍｏｒｙ）、ハイブリッドメモリキューブＨＭＣ（Ｈｙｂｒｉｄ Ｍｅｍｏｒｙ Ｃｕｂｅ）などの、いかなる適当な磁気記憶媒体あるいは光磁気記憶媒体であり得る。
【０２４３】
前記統合されたユニット／モジュールは、ソフトウェアプログラムモジュールの形式で実現され、独立的にした製品として販売または使用される場合、一つのコンピュータ可読取メモリに記憶されてもよい。このような理解に基づいて、本発明の技術案は、本質上、あるいは、先行技術に寄与する部分、あるいは、当該技術案のすべてのまたは一部は、ソフトウェア製品の形式で体現されてもよく、当該コンピュータソフトウェア製品は一つのメモリに記憶され、一つのコンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る）に本発明の各実施例に記載の方法のすべてのまたは一部のステップを実行させるためのいくつかの命令を含む。前述したメモリは、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎlｙ Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、モバイルハードディスク、磁気ディスク、光ディスクなどの、いろんなプログラムコードを記憶できる媒体を含む。
【０２４４】
可能な一実現形態において、コンピュータプログラム命令が記憶されている、不揮発性のコンピュータ可読記憶媒体をさらに開示し、前記コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワーク量子化方法が実現される。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは、上述したニューラルネットワーク量子化装置を備える。
【０２４５】
可能な一実現形態において、ボードカードをさらに開示し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、前記記憶部品は、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、前記制御部品は、前記人工知能チップの状態を監視制御する。
【０２４６】
図７は、本発明の実施例に係るボードカードを示す構成ブロック図である。図７を参照すると、上述したボードカードは、上述したチップ３８９に加えて、他のサポート部件をさらに備えてもよく、当該サポート部件は、記憶部品３９０と、インターフェース装置３９１と、制御部品３９２と、を含むが、これらに限定されない。
【０２４７】
前記記憶部品３９０は、前記人工知能チップにバスを介して接続され、データを記憶する。前記記憶部品は、複数グループの記憶ユニット３９３を含んでもよい。各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続され。各グループの前記記憶ユニットは、ＤＤＲ ＳＤＲＡＭ（英語：Ｄｏｕｂlｅ Ｄａｔａ Ｒａｔｅ ＳＤＲＡＭ、ダブルレート同期ダイナミックランダムアクセスメモリ）であってもよいことを理解できる。
【０２４８】
上述したプロセッサ１００中の記憶ユニット１０２は、１グループまたは複数グループの記憶ユニット３９３を含んでもよい。記憶ユニット１０２が１グループの記憶ユニット３９３を含む場合、複数の処理ユニット１０１は、データを記憶するために記憶ユニット３９３を共有する。記憶ユニット１０２が複数グループの記憶ユニット３９３を含む場合、各処理ユニット１０１に対して専用の１グループの記憶ユニット３９３を配置し、複数の処理ユニット１０１中の一部または全部に対して共有の１グループの記憶ユニット３９３を配置してもよい。
【０２４９】
ＤＤＲは、クロック周波数を上げずにＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。ＤＤＲの速度は、標準ＳＤＲＡＭの２倍である。一つの実施例において、前記記憶装置は、４グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のＤＤＲ４粒子（チップ）を備えてもよい。一つの実施例において、前記人工知恵チップの内部は、４個の７２ビットＤＤＲ４コントローラを備えてもよく、上記の７２ビットＤＤＲ４コントローラ中の６４ｂｉｔは、データ伝送に使用され、８ｂｉｔは、ＥＣＣ検証に使用される。各グループの前記記憶ユニットでＤＤＲ４-３２００粒子を使用する場合、データ伝送する理論上の帯域幅が２５６００ＭＢ／ｓに達することを理解できる。
【０２５０】
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。ＤＤＲは、一つのクロックサイクルでデータを２回伝送することができる。前記チップ中にＤＤＲを制御ためのコントローラを配置し、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
【０２５１】
前記インターフェース装置は、前記人工知恵チップに電気的に接続される。前記インターフェース装置は、前記人工知恵チップと外部デバイス（例えば、サーバまたはコンピュータ）との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準ＰＣＩＥインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準ＰＣＩＥインターフェースを介して前記チップに伝送され、データ移送が実現される。好ましくは、ＰＣＩＥ ３.０ Ｘ １６インターフェースを使用して伝送する場合、理論上の帯域幅が１６０００ＭＢ／ｓに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが中継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記人工知恵チップの計算結果は、依然としてとして、前記インターフェース装置によって外部デバイス（例えば、サーバ）に伝送し返す。
【０２５２】
前記制御デバイスは、前記人工知恵チップに電気的に接続される。前記制御デバイスは、前記人工知恵チップの状態を監視制御するために使用される。具体的に、前記人工知恵チップは、前記制御デバイスとＳＰＩインターフェースを介して電気的に接続されてもよい。前記制御デバイスは、シングルチップマイクロコンピュータ（Ｍｉｃｒｏ Ｃｏｎｔｒｏｌｌｅｒ Ｕｎｉｔ、ＭＣＵ）を含んでもよい。前記人工知恵チップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。したがって、前記人工知恵チップは、複数の負荷や軽負荷などの異なる作業状態にいることができる。前記制御装置によって、前記人工知恵チップ中の複数の処理チップ、複数の処理、または、複数の処理回路の作業状態に対する調整制御を実現できる。
【０２５３】
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記の人工知恵チップを備える。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、Ｗｅｂカメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び／又は、医療機器を含む。前記交通ツールは、飛行機、船、及び／又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Ｂ超音波装置、及び／又は、心電計を含む。
【０２５４】
上述した実施例において、各実施例に対する説明はそれぞれ重点を置き、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が発生されない限り、いずれも本明細書に記載の範囲であると見なされるべきである。
以下の条項によって前述した内容をよりよく理解できる。
条項Ａ１.ニューラルネットワーク量子化方法であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
【０２５５】
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
【０２５６】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得、
【０２５７】
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む。
【０２５８】
条項Ａ２.条項Ａ１に記載の方法であって、循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
【０２５９】
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するステップと、
現在量子化待ちデータの統計結果と記憶された参考統計結果とを比較し、比較結果を得るステップと、
【０２６０】
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップと、
【０２６１】
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するステップと、を含む。
【０２６２】
条項Ａ３.条項Ａ２に記載の方法であって、循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
【０２６３】
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するステップをさらに含む。
【０２６４】
条項Ａ４.条項Ａ２に記載の方法であって、循環処理の方式を使用して、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
【０２６５】
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するステップをさらに含む。
【０２６６】
条項Ａ５.条項Ａ２から条項Ａ４のいずれか１項に記載の方法であって、現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
【０２６７】
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップは、
【０２６８】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
【０２６９】
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合将前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方式と、
【０２７０】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方式を含む。
【０２７１】
条項Ａ６.条項Ａ２に記載の方法であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
【０２７２】
前記量子化パラメータがオフセット量を含むと、前記更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記現在量子化待ちデータの第２タイプのポイント位置を得るステップを含む。
【０２７３】
条項Ａ７.条項Ａ２に記載の方法であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記量子化パラメータがオフセット量を含むと、現在量子化待ちデータおよび対応するデータビット幅に基づいて量子化後データの最大値を得るステップと、
【０２７４】
前記更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、現在量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む。
【０２７５】
条項Ａ８.条項Ａ２に記載の方法であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記更新統計結果の中の最大値および最小値に基づいて、現在量子化待ちデータのオフセット量を得るステップを含む。
条項Ａ９.条項Ａ１から条項Ａ８のいずれか１項に記載の方法であって、
【０２７６】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
【０２７７】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
【０２７８】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るステップと、をさらに含む。
【０２７９】
条項Ａ１０.条項Ａ９に記載の方法であって、前記各前記量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項Ａ１１.条項Ａ９または条項Ａ１０に記載の方法であって、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０２８０】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
【０２８１】
条項Ａ１２.条項Ａ９または条項Ａ１０に記載の方法であって、前記各前記量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
【０２８２】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項Ａ１３.条項Ａ１２に記載の方法であって、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０２８３】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む。
【０２８４】
条項Ａ１４.条項Ａ１から条項Ａ１３のいずれか１項に記載の方法であって、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
【０２８５】
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップでと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む。
条項Ａ１５.条項Ａ１４に記載の方法であって、
【０２８６】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む。
条項Ａ１６.条項Ａ１５に記載の方法であって、
【０２８７】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第２タイプのポイント位置を含む。
条項Ａ１７.条項Ａ１４に記載の方法であって、前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０２８８】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第２タイプのポイント位置を含み、
【０２８９】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
【０２９０】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０２９１】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
【０２９２】
条項Ａ１８.条項Ａ１７に記載の方法であって、前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含む。
条項Ａ１９.条項Ａ１８に記載の方法であって、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含み、
【０２９３】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０２９４】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
【０２９５】
条項Ａ２０.条項Ａ１９に記載の方法であって、前記現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含む。
【０２９６】
条項Ａ２１.条項Ａ１９に記載の方法であって、前記量子化待ちデータの第１のデータ変動幅および前記第２データ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
【０２９７】
条項Ａ２２.条項Ａ１４から条項Ａ２１のいずれか１項に記載の方法であって、前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０２９８】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップを含み、前記更新周期は、少なくとも一つの反復を含む。
条項Ａ２３.条項Ａ１４から条項Ａ２２のいずれか１項に記載の方法であって、
【０２９９】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
【０３００】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
【０３０１】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む。
条項Ａ２４.ニューラルネットワーク量子化装置であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
【０３０２】
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するためのデータ決定モジュールと、前記目標データは、前記量子化待ち層中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
【０３０３】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るためのデータ量子化モジュールと、
【０３０４】
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るための結果決定モジュールと、を備える。
条項Ａ２５.条項Ａ２４に記載の装置であって、前記データ量子化モジュールは、
【０３０５】
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するための量子化待ちデータ決定サブモジュールと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るための比較サブモジュールと、
【０３０６】
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するための統計結果決定サブモジュールと、
【０３０７】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するための第１量子化パラメータ決定サブモジュールと、
【０３０８】
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するための量子化処理サブモジュールと、を備える。
条項Ａ２６.条項Ａ２５に記載の装置であって、前記データ量子化モジュールは、
【０３０９】
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するための参考データ更新モジュールをさらに備える。
条項Ａ２７.条項Ａ２５に記載の装置であって、前記データ量子化モジュールは、
【０３１０】
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するための第２の量子化パラメータ決定サブモジュールをさらに備える。
【０３１１】
条項Ａ２８.条項Ａ２５から条項Ａ２７のいずれか１項に記載の装置であって、現在量子化待ちデータの統計結果は、前記現在量子化待ちデータの中の最大値および最小値を含み、前記参考統計結果は、参考最大値および参考最小値を含み、
【０３１２】
ここで、前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定することは、
【０３１３】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの統計結果を更新統計結果として決定する方式と、
【０３１４】
前記現在量子化待ちデータの中の最大値が前記参考最大値以下であり、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合将前記参考最大値および前記現在量子化待ちデータの中の最小値を更新統計結果として決定する方式と、
【０３１５】
前記現在量子化待ちデータの中の最大値が前記参考最大値よりも大きく、且つ、前記現在量子化待ちデータの中の最小値が前記参考最小値未満である場合、前記現在量子化待ちデータの中の最大値および前記参考最小値を更新統計結果として決定する方式と、の中の任意の一つの方式を含む。
【０３１６】
条項Ａ２９.条項Ａ２５に記載の装置であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
【０３１７】
前記量子化パラメータがオフセット量を含むと、前記各更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得る。
【０３１８】
条項Ａ３０.条項Ａ２５に記載の装置であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
【０３１９】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【０３２０】
前記各更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む。
【０３２１】
条項Ａ３１.条項Ａ２５に記載の装置であって、前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記各更新統計結果の中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得ることを含む。
条項Ａ３２.条項Ａ２４から条項Ａ３１のいずれか１項に記載の装置であって、
【０３２２】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定モジュールと、
【０３２３】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
【０３２４】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るための調整量子化パラメータ決定モジュールと、をさらに備える。
条項Ａ３３.条項Ａ３２に記載の装置であって、前記調整ビット幅決定モジュールは、
【０３２５】
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備える。
条項Ａ３４.条項Ａ３２または条項Ａ３３に記載の装置であって、
【０３２６】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差モジュールと、
【０３２７】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備える。
条項Ａ３５.条項Ａ３２または条項Ａ３３に記載の装置であって、前記調整ビット幅決定モジュールは、
【０３２８】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備える。
条項Ａ３６.条項Ａ３５に記載の装置であって、
【０３２９】
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差モジュールと、
【０３３０】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定モジュールと、をさらに備える。
【０３３１】
条項Ａ３７.条項Ａ２４から条項Ａ３６のいずれか１項に記載の装置であって、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するための第１のデータ変動幅決定モジュールと、
【０３３２】
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定モジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む。
条項Ａ３８.条項Ａ３７に記載の装置であって、
【０３３３】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、するための第１の目標反復間隔適用モジュールをさらに備える。
条項Ａ３９.条項Ａ３８に記載の装置であって、
【０３３４】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２の目標反復間隔適用モジュールをさらに備え、前記ポイント位置は、第２タイプのポイント位置を含む。
条項Ａ４０.条項Ａ３７に記載の装置であって、前記第１のデータ変動幅決定モジュールは、
【０３３５】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第２タイプのポイント位置を含み、
【０３３６】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
【０３３７】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１データ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第１の目標反復間隔決定サブモジュールを備える。
条項Ａ４１.条項Ａ４０に記載の装置であって、前記第１のデータ変動幅決定サブモジュールは、
【０３３８】
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するための第１幅度決定サブモジュールを備え、前記差分値の絶対値を第１のデータ変動幅として決定する。
条項Ａ４２.条項Ａ４１に記載の装置であって、
【０３３９】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るための第２のデータ変動幅決定モジュールをさらに備え、
ここで、目標反復間隔決定モジュールは、
【０３４０】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、するための第２の目標反復間隔決定サブモジュールを備える。
条項Ａ４３.条項Ａ４２に記載の装置であって、前記第２のデータ変動幅決定モジュールは、
【０３４１】
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するための第２の幅度決定サブモジュールを備え、前記誤差の２乗を前記第２のデータ変動幅として決定する。
条項Ａ４４.条項Ａ４２に記載の装置であって、前記第２の目標反復間隔決定サブモジュールは、
【０３４２】
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
条項Ａ４５.条項Ａ３７から条項Ａ４４のいずれか１項に記載の装置であって、前記第１のデータ変動幅決定モジュールは、
【０３４３】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るための第２のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む。
条項Ａ４６.条項Ａ３７から条項Ａ４５のいずれか１項に記載の装置であって、
【０３４４】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定モジュールと、
【０３４５】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第１の周期間隔適用モジュール、または
【０３４６】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第２の周期間隔適用モジュールと、をさらに備える。
条項Ａ４７.人工知能チップであって、前記人工知能チップは、条項Ａ２４から条項Ａ４６の何れか１項に記載のニューラルネットワーク量子化装置を備える
ことを特徴とする人工知能チップ。
条項Ａ４８.電子デバイスであって、前記電子デバイスは、条項Ａ４７に記載の人工知能チップを備える
ことを特徴とする電子デバイス。
【０３４７】
条項Ａ４９.ボードカードであって、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、条項Ａ４７に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
条項Ａ５０.条項Ａ４９記載のボードカードであって、
【０３４８】
前記記憶部品は、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットが、前記人工知能チップにバスを介して接続され、前記記憶ユニットが、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである
ことを特徴とする請求項に記載のボードカード。
【０３４９】
条項Ａ５１.コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令がプロセッサによって実行されると、実現条項Ａ１から条項Ａ２３の何れか１項に記載のニューラルネットワーク量子化方法。
【０３５０】
以上、本発明の実施例を詳細に説明し、本明細書では具体的な例を適用して本発明の原理および実施形態を説明した。以上の実施例の説明は、本発明の方法およびその本旨の理解を助けるためにのみ使用される。同時に、当業者にとって本発明の旨に依存して本発明の具体的な実施形態および適用範囲に基づいて行われた変更または修正は、いずれも本発明の保護しようとする範囲に属する。上記のように、本明細書の内容を本発明に対する制限として理解してはいけない。
【図１】
2022501678.tif 000035
【図２】
2022501678.tif 000036
【図３】
2022501678.tif 000037
【図４】
2022501678.tif 000038
【図５】
2022501678.tif 000039
【図６】
2022501678.tif 000040
【図７】
2022501678.tif 000041
【手続補正書】
【提出日】令和2年11月30日(2020.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラルネットワーク量子化方法であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む
ことを特徴とするニューラルネットワーク量子化方法。
【請求項２】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するステップと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るステップと、
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するステップと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップと、
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するステップと、を含む
ことを特徴とする請求項１に記載のニューラルネットワーク量子化方法。
【請求項３】
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るステップは、
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するステップ、または、  前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するステップをさらに含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項４】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するステップは、
前記量子化パラメータがオフセット量を含むと、前記更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記現在量子化待ちデータの第２タイプのポイント位置を得るステップを含むか、または、
前記量子化パラメータがオフセット量を含むと、現在量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、現在量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含むか、または、
前記更新統計結果の中の最大値および最小値に基づいて、現在量子化待ちデータのオフセット量を得るステップを含む
ことを特徴とする請求項２に記載のニューラルネットワーク量子化方法。
【請求項５】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るステップと、をさらに含む
ことを特徴とする請求項１から４のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項６】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含み、
前記ニューラルネットワーク量子化方法は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含み、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含み、
前記ニューラルネットワーク量子化方法は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む
ことを特徴とする請求項6に記載のニューラルネットワーク量子化方法。
【請求項７】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るステップと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１から６のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項８】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップと、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップと、をさらに含み、前記ポイント位置は、第２タイプのポイント位置を含む
ことを特徴とする請求項7に記載のニューラルネットワーク量子化方法。
【請求項９】
前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項７に記載のニューラルネットワーク量子化方法。
【請求項１０】
ニューラルネットワーク量子化装置であって、前記ニューラルネットワークの中の任意の量子化待ち層に対して、
前記ニューラルネットワークを稼働させる端末の記憶能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するためのデータ決定モジュールと、前記目標データは、前記量子化待ち層の中の任意の１バッチの演算待ちデータであり、前記演算待ちデータは、入力ニューロンおよび／または勾配の中の少なくとも一つを含み、
循環処理の方式を使用し、順次に、各々の量子化待ちデータに対応する量子化パラメータに基づいて量子化を実行し、各々の量子化待ちデータに対応する量子化データを得るためのデータ量子化モジュールと、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るための結果決定モジュールと、を備える
ことを特徴とするニューラルネットワーク量子化装置。
【請求項１１】
前記データ量子化モジュールは、
一回前の循環処理過程が終了された後に現在循環処理過程を開始し、一回前の循環処理過程で量子化した量子化待ちデータの後の次の量子化待ちデータを、現在循環処理過程で量子化する必要がある現在量子化待ちデータとして決定するための量子化待ちデータ決定サブモジュールと、
現在量子化待ちデータの統計結果と記憶された参考統計結果を比較し、比較結果を得るための比較サブモジュールと、
前記比較結果が量子化パラメータの計算条件を満たす場合、現在量子化待ちデータの統計結果および前記参考統計結果に基づいて、更新統計結果を決定するための統計結果決定サブモジュールと、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定するための第１の量子化パラメータ決定サブモジュールと、
対応する量子化パラメータに基づいて現在量子化待ちデータに対して量子化を実行し、現在量子化待ちデータに対応する量子化データを得、現在循環処理過程を終了するための量子化処理サブモジュールと、を備える
ことを特徴とする請求項１０に記載のニューラルネットワーク量子化装置。
【請求項１２】
前記データ量子化モジュールは、
前記更新統計結果および前記更新統計結果に対応する量子化パラメータを、それぞれ、新たな参考統計結果および新たな参考量子化パラメータとして記憶するための参考データ更新モジュール、または、
前記比較結果が前記量子化パラメータの計算条件を満たさない場合、前記参考統計結果に対応する参考量子化パラメータを現在量子化待ちデータに対応する量子化パラメータとして決定するための第２の量子化パラメータ決定サブモジュールをさらに備える
ことを特徴とする請求項１１に記載のニューラルネットワーク量子化装置。
【請求項１３】
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記量子化パラメータがオフセット量を含むと、前記各更新統計結果の中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得ることを含み、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得ることと、
前記各更新統計結果の中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含み、
前記更新統計結果および対応するデータビット幅に基づいて、現在量子化待ちデータに対応する量子化パラメータを決定することは、
前記各更新統計結果の中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得ることを含む
ことを特徴とする請求項１１に記載のニューラルネットワーク量子化装置。
【請求項１４】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定モジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るための調整量子化パラメータ決定モジュールと、をさらに備える
ことを特徴とする請求項１０から１３のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項１５】
前記調整ビット幅決定モジュールは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備え、
前記ニューラルネットワーク量子化装置は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差モジュールと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備え、
前記調整ビット幅決定モジュールは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備え、
前記ニューラルネットワーク量子化装置は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差モジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定モジュールと、をさらに備える
ことを特徴とする請求項１４に記載のニューラルネットワーク量子化装置。
【請求項１６】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記装置は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るための第１のデータ変動幅決定モジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定モジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１０から１５のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項１７】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するための第１の目標反復間隔適用モジュールと、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２の目標反復間隔適用モジュールと、をさらに備え、前記ポイント位置は、第２タイプのポイント位置を含む
ことを特徴とする請求項１６に記載のニューラルネットワーク量子化装置。
【請求項１８】
前記第１のデータ変動幅決定モジュールは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第１の目標反復間隔決定サブモジュールを備える
ことを特徴とする請求項１６に記載のニューラルネットワーク量子化装置。
【請求項１９】
人工知能チップであって、
前記人工知能チップは、請求項１０至１８の何れか１項に記載のニューラルネットワーク量子化装置を備える
ことを特徴とする人工知能チップ。
【請求項２０】
コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、
前記コンピュータプログラム命令がプロセッサによって実行されると、請求項１から９の何れか１項に記載のニューラルネットワーク量子化方法。
【国際調査報告】
2022501678.tif 000042
2022501678.tif 000043
2022501678.tif 000044
2022501678.tif 000045