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