(57)【要約】  本発明は、データ処理方法、装置、コンピュータデバイス、及び記憶媒体に関する。本発明によって開示されるボードカードは、記憶部品と、インターフェース装置と、制御部品と、データ処理装置を含む人工知能チップと、を備え、ここで、人工知能チップは、記憶部品、制御部品、および、インターフェース装置にそれぞれ接続され、記憶部品は、データを記憶し、インターフェース装置は、人工知能チップと外部デバイスとの間のデータ伝送を実現し、制御部品は、人工知能チップの状態を監視制御するためである。本発明の実施例によって提供されるデータ処理方法、装置、コンピュータデバイス、及び記憶媒体は、対応する量子化パラメータを利用して量子化待ちデータに対して量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができる。【選択図】図５
2022501676.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワーク量子化装置であって、
制御モジュールと、処理モジュールと、を備え、そのうち前記処理モジュールは、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
前記制御モジュールは、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含み、
前記第１の演算サブモジュールは、前記量子化結果に関連する演算を実行し、演算結果を得、
ここで、前記メイン演算サブモジュールが第１のデータを前記スレーブ演算サブモジュールまでに送信し、前記第１のデータが、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールが、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得、
前記メイン演算サブモジュールが、さらに、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る
ことを特徴とするニューラルネットワーク量子化装置。
【請求項２】
前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータが、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１のデータは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む
ことを特徴とする請求項１に記載のニューラルネットワーク量子化装置。
【請求項３】
前記処理モジュールは、
変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るためのデータ変換サブモジュールをさらに備え、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータの中の第１部分をさらに含み、
前記メイン演算サブモジュールが、さらに、前記中間結果、前記量子化結果の中の前記第１のデータ以外のデータ、および、前記変換後のデータの中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る
ことを特徴とする請求項１に記載のニューラルネットワーク量子化装置。
【請求項４】
前記データ変換サブモジュールは、さらに、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得る
ことを特徴とする請求項３に記載のニューラルネットワーク量子化装置。
【請求項５】
前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む
ことを特徴とする請求項１から４のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項６】
前記制御モジュールは、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を使用して複数の量子化待ちデータを決定する
ことを特徴とする請求項５に記載のニューラルネットワーク量子化装置。
【請求項７】
前記処理モジュールは、
前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行するための第２の演算サブモジュールをさらに備える
ことを特徴とする請求項１に記載のニューラルネットワーク量子化装置。
【請求項８】
前記制御モジュールは、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るためのパラメータ決定サブモジュールをさらに備える
ことを特徴とする請求項１または２に記載のニューラルネットワーク量子化装置。
【請求項９】
前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るための第１のポイント位置決定サブモジュールを備える
ことを特徴とする請求項８に記載のニューラルネットワーク量子化装置。
【請求項１０】
前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第１の最大値決定サブモジュールと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える
ことを特徴とする請求項８に記載のニューラルネットワーク量子化装置。
【請求項１１】
前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るための第２のポイント位置決定サブモジュールを備える
ことを特徴とする請求項８に記載のニューラルネットワーク量子化装置。
【請求項１２】
前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第２の最大値決定サブモジュールと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える
ことを特徴とする請求項８に記載のニューラルネットワーク量子化装置。
【請求項１３】
前記パラメータ決定サブモジュールは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える
ことを特徴とする請求項８に記載のニューラルネットワーク量子化装置。
【請求項１４】
前記制御モジュールは、
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定サブモジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定サブモジュールと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得るための調整量子化パラメータ決定サブモジュールと、をさらに備える
ことを特徴とする請求項１から１３中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項１５】
前記調整ビット幅決定サブモジュールは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備える
ことを特徴とする請求項１４に記載のニューラルネットワーク量子化装置。
【請求項１６】
前記制御モジュールは、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差サブモジュールと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備える
ことを特徴とする請求項１４または１５に記載のニューラルネットワーク量子化装置。
【請求項１７】
前記調整ビット幅決定サブモジュールは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備える
ことを特徴とする請求項１４または１５に記載のニューラルネットワーク量子化装置。
【請求項１８】
前記制御モジュールは、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差サブモジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定サブモジュールと、をさらに備える
ことを特徴とする請求項１７に記載のニューラルネットワーク量子化装置。
【請求項１９】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記制御モジュールは、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定サブモジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１から１８中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項２０】
前記制御モジュールは、
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するための第１の目標反復間隔適用サブモジュールをさらに備える
ことを特徴とする請求項１９に記載のニューラルネットワーク量子化装置。
【請求項２１】
前記制御モジュールは、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２の目標反復間隔適用サブモジュールをさらに備え、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む
ことを特徴とする請求項２０に記載のニューラルネットワーク量子化装置。
【請求項２２】
前記第１のデータ変動幅決定サブモジュールは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定サブモジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第１の目標反復間隔決定サブモジュールを備える
ことを特徴とする請求項１９に記載のニューラルネットワーク量子化装置。
【請求項２３】
前記第１のデータ変動幅決定サブモジュールは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算し、前記差分値の絶対値を第１のデータ変動幅として決定するための第１の幅度決定サブモジュールと、を備える
ことを特徴とする請求項２２に記載のニューラルネットワーク量子化装置。
【請求項２４】
前記制御モジュールは、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るための第２のデータ変動幅決定サブモジュールをさらに備え、
ここで、目標反復間隔決定サブモジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第２の目標反復間隔決定サブモジュールを備える
ことを特徴とする請求項２３に記載のニューラルネットワーク量子化装置。
【請求項２５】
前記第２のデータ変動幅決定サブモジュールは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算し、前記誤差の２乗を前記第２のデータ変動幅として決定するための第２の幅度決定サブモジュールを備える
ことを特徴とする請求項２４に記載のニューラルネットワーク量子化装置。
【請求項２６】
前記第２の目標反復間隔決定サブモジュールは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える
ことを特徴とする請求項２４に記載のニューラルネットワーク量子化装置。
【請求項２７】
前記第１のデータ変動幅決定サブモジュールは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るための第２のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む
ことを特徴とする請求項１９から２６中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項２８】
前記制御モジュールは、
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定サブモジュールと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第１の周期間隔適用サブモジュール、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第２の周期間隔適用サブモジュールと、をさらに備える
ことを特徴とする請求項１９から２７中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項２９】
ニューラルネットワーク量子化方法であって、
前記ニューラルネットワーク量子化方法は、ニューラルネットワーク量子化装置に適用され、前記ニューラルネットワーク量子化装置は、制御モジュールと、処理モジュールと、を備え、前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
前記ニューラルネットワーク量子化方法は、
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、前記各量子化待ちデータの量子化データは、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータは、ポイント位置を含み、
前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップと、を含み、
ここで、前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップは、
前記メイン演算サブモジュールを利用し、第１のデータを前記スレーブ演算サブモジュールまでに送信するステップと、前記第１のデータは、前記量子化結果中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得るステップと、
前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップと、を含む
ことを特徴とするニューラルネットワーク量子化方法。
【請求項３０】
前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータは、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１データは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む
ことを特徴とする請求項２９に記載のニューラルネットワーク量子化方法。
【請求項３１】
前記処理モジュールは、データ変換サブモジュールをさらに備え、
前記ニューラルネットワーク量子化方法は、
前記データ変換サブモジュールを利用し、変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るステップを含み、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータの中の第１部分をさらに含み、
ここで、前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップは、
前記メイン演算サブモジュールを利用し、前記中間結果に対して、前記量子化結果の中の前記第１のデータ以外のデータおよび前記変換後のデータの中の前記第１のデータ以外のデータ演算を実行し、演算結果を得るステップを含む
ことを特徴とする請求項２９に記載のニューラルネットワーク量子化方法。
【請求項３２】
前記データ変換サブモジュールを利用し、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得るステップをさらに含む
ことを特徴とする請求項３１に記載のニューラルネットワーク量子化方法。
【請求項３３】
前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む
ことを特徴とする請求項２９から３２のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項３４】
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定する方式は、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を含む
ことを特徴とする請求項３３に記載のニューラルネットワーク量子化方法。
【請求項３５】
前記処理モジュールは、第２の演算サブモジュールをさらに備え、
前記ニューラルネットワーク量子化方法は、
前記第２の演算サブモジュールを利用し、前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行するステップをさらに含む
ことを特徴とする請求項２９に記載のニューラルネットワーク量子化方法。
【請求項３６】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップをさらに含む
ことを特徴とする請求項２９または３０に記載のニューラルネットワーク量子化方法。
【請求項３７】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るステップを含む
ことを特徴とする請求項３６に記載のニューラルネットワーク量子化方法。
【請求項３８】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るステップと、を含む
ことを特徴とする請求項３６に記載のニューラルネットワーク量子化方法。
【請求項３９】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るステップを含む
ことを特徴とする請求項３６に記載のニューラルネットワーク量子化方法。
【請求項４０】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む
ことを特徴とする請求項３６に記載のニューラルネットワーク量子化方法。
【請求項４１】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む
ことを特徴とする請求項３６に記載のニューラルネットワーク量子化方法。
【請求項４２】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得るステップと、をさらに含む
ことを特徴とする請求項２９から４１のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項４３】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む
ことを特徴とする請求項４２に記載のニューラルネットワーク量子化方法。
【請求項４４】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む
ことを特徴とする請求項４２または４３に記載のニューラルネットワーク量子化方法。
【請求項４５】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が前記第１誤差閾値よりも小さい第２誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む
ことを特徴とする請求項４２または４３に記載のニューラルネットワーク量子化方法。
【請求項４６】
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む
ことを特徴とする請求項４５に記載のニューラルネットワーク量子化方法。
【請求項４７】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記ニューラルネットワーク量子化方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項２９から４４のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項４８】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む
ことを特徴とする請求項４７に記載のニューラルネットワーク量子化方法。
【請求項４９】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む
ことを特徴とする請求項４８に記載のニューラルネットワーク量子化方法。
【請求項５０】
現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項４７に記載のニューラルネットワーク量子化方法。
【請求項５１】
現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含む
ことを特徴とする請求項５０に記載のニューラルネットワーク量子化方法。
【請求項５２】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含み、
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項５１に記載のニューラルネットワーク量子化方法。
【請求項５３】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含む
ことを特徴とする請求項５２に記載のニューラルネットワーク量子化方法。
【請求項５４】
前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む
ことを特徴とする請求項５２に記載のニューラルネットワーク量子化方法。
【請求項５５】
現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップを含み、前記更新周期は、少なくとも一つの反復を含む
ことを特徴とする請求項４７から５４のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項５６】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む
ことを特徴とする請求項４７から５５のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項５７】
人工知能チップであって、
前記人工知能チップは、請求項１から２８の何れか１項に記載のニューラルネットワーク量子化装置を備える
ことを特徴とする人工知能チップ。
【請求項５８】
電子デバイスであって
前記電子デバイスは、請求項５７に記載の人工知能チップを備える
ことを特徴とする電子デバイス。
【請求項５９】
ボードカードであって、
前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、請求項５８に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
【請求項６０】
前記記憶部品は、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットが、前記人工知能チップにバスを介して接続され、前記記憶ユニットが、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである
ことを特徴とする請求項５９に記載のボードカード。
【請求項６１】
コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、
前記コンピュータプログラム命令がプロセッサによって実行されると、請求項２９から５６の何れか１項に記載のニューラルネットワーク量子化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特に、ニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体に関する。
【背景技術】
【０００２】
ニューラルネットワーク（ｎｅｕｒａｌ ｎｅｔｗｏｒｋ、ＮＮ）は、生物学的ニューラルネットワークの構成と機能を模倣する数学モデルまたは計算モデルである。ニューラルネットワークは、サンプルデータのトレーニングを通じて、ネットワーク重み値と閾値を継続的に修正し、誤差関数を負の勾配の方向に落とし、期待される出力に近づけるようにする。ニューラルネットワークは、より広く使用されている認識分類モデルであり、関数接近、モデル認識分類、データ圧縮、及び時系列予測などに多く使用される。ニューラルネットワークは、画像認識、音声認識、自然言語処理などの分野で適用されているが、ニューラルネットワークの複雑度の増加につれて、データのデータ量とデータ次元とがいずれも継続的に増加され、継続的に増加しているデータ量などは、演算装置のデータ処理効率、記憶装置の記憶容量、アクセス効率などに対してより大きい挑戦を提出している。関連技術において、固定ビット幅を使用してニューラルネットワークの演算データに対して量子化を実行し、すなわち、浮動小数点タイプの演算データを固定点タイプの演算データに変換することで、ニューラルネットワークの演算データの圧縮を実現する。しかしながら、関連技術では、ニューラルネットワーク全体で同じ量子化方式を採用しているが、ニューラルネットワークの異なる演算データ同士の間にはより大きい差異が存在する可能性があり、往々にして精度の低下をもたらし、データ演算結果に影響を及ぼす。
【発明の概要】
【０００３】
これに鑑みて、上述した技術的問題に対して、ニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体を提供する必要がある。
本発明の一態様によると、ニューラルネットワーク量子化装置を提供し、前記装置は、制御モジュールと、処理モジュールと、を備え、そのうち前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
【０００４】
前記制御モジュールは、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含み、
前記第１の演算サブモジュールが、前記量子化結果に関連する演算を実行し、演算結果を得、
【０００５】
ここで、前記メイン演算サブモジュールが、第１のデータを前記スレーブ演算サブモジュールまでに送信し、前記第１のデータが、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールが、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得、
前記メイン演算サブモジュールが、さらに、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る。
【０００６】
本発明のもう一態様によると、ニューラルネットワーク量子化方法を提供し、前記方法は、ニューラルネットワーク量子化装置に適用され、前記装置は、制御モジュールと、処理モジュールと、を備え、そのうち前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、前記方法は、
【０００７】
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含み、
前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップと、を含み、
ここで、前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップは、
【０００８】
前記メイン演算サブモジュールを利用し、第１のデータを前記スレーブ演算サブモジュールまでに送信するステップと、前記第１のデータが、前記量子化結果中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含むステップと、
前記スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得るステップと、
【０００９】
前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップと、を含む。
本発明のもう一態様によると、人工知能チップを提供し、前記人工知能チップは、上述したニューラルネットワーク量子化装置を備える。
本発明のもう一態様によると、電子デバイスを提供し、前記電子デバイスは、上述した人工知能チップを備える。
【００１０】
本発明のもう一態様によると、ボードカードを提供し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する。
【００１１】
本発明のもう一態様によると、コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体を提供し、前記コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワーク量子化方法が実現される。
【００１２】
本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体によると、当該装置は、制御モジュールと、処理モジュールと、を備え、そのうち処理モジュールが、第１の演算サブモジュールを備え、第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールとを備え、制御モジュールが、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、各量子化待ちデータに対応する量子化データに基づいて目標データの量子化結果を得ることができ、各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化を実行して得られたものであり、量子化パラメータが、ポイント位置を含み、第１の演算サブモジュールが、量子化結果に関連する演算を実行し、演算結果を得、ここで、メイン演算サブモジュールが、第１のデータをスレーブ演算サブモジュールまでに送信し、第１のデータが、量子化結果中の、ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、スレーブ演算サブモジュールが、受信した第１のデータに対して乗算演算を実行し、中間結果を得、メイン演算サブモジュールが、さらに、中間結果および量子化結果中の第１のデータ以外のデータ演算を実行し、演算結果を得る。本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体によると、対応する量子化パラメータを利用して目標データの中の複数の量子化待ちデータに対してそれぞれ量子化を実行し、第１の演算サブモジュールを利用して量子化結果に関連する演算を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させた。
【００１３】
請求の範囲の中の技術的特徴を導き出すことにより、背景技術中の技術的問題に対応する有益な効果を収めることができる。以下の図面を参照した例示的な実施例の詳細な説明によれば、本発明の他の特徴および態様が明らかになる。
【図面の簡単な説明】
【００１４】
明細書に含まれて明細書の一部を構成する図面は、明細書と一緒に本発明の例示的な実施例、特徴、および、態様を示し、本発明の原理を解釈するために使用される。
【図１】本発明の実施例に係るニューラルネットワーク量子化装置を示すブロック図である。
【図２】本発明の実施例に係る対称的な固定小数点数表現を示す模式図である。
【図３】本発明の実施例に係るオフセット量を導入した固定小数点数表現を示す模式図である。
【図４】本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。
【図５】本発明の実施例に係るボードカードを示す構成ブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例の中の図面を参照しながら本発明の実施例の中の技術案を明確かつ完全に説明し、説明する実施例は、本発明の一部の実施例に過ぎず、全ての実施例ではないことが明らかである。当業者にとって本発明中の実施例に基づいて創造的な作業なしに得られたすべての他の実施例は、いずれも本発明の保護しようとする範囲に属する。
【００１６】
本発明の請求の範囲、明細書、および、図面での「第１」、「第２」などという用語は、異なる対象を区別するために使用されるものであり、特定順序を定義するために使用されないことを理解すべきである。本発明の明細書および請求の範囲で使用される「含む」および「備える」という用語は、説明する特徴、全体、ステップ、操作、要素、および／または、アセンブリの存在を表し、一つまたは複数の他の特徴、全体、ステップ、操作、要素、アセンブリ、および／または、そのセットの存在または追加を除外しない。
【００１７】
ここで本発明の明細書で使用される用語は、ただ、特定実施例を説明する目的に使用され、本発明を限定しようとするものではないことをさらに理解すべきである。本発明の明細書および請求の範囲で使用されるように、文脈で他の場合を明確に示されていない限り、「一」、「一つの」、および、「当該」の単数形態は、複数形態を含むことを意図する。さらに、本発明の明細書および請求の範囲で使用される「および／または」という用語は、関連してリストされた項目の中の一つまたは複数のいかなる組み合わせおよびすべての可能な組み合わせを表し、これら組み合わせを含むことをさらに理解すべきである。
【００１８】
本明細書および請求の範囲で使用されるように、「…場合」という用語は、文脈によって、「…とき」、「…と」、「決定されたことに応答して」、または、「検出されたことに応答して」と解釈されてもよい。同様に、「決定された場合」または「『記述された条件または事件』が検出された場合」という句は、文脈によって、「決定されると」、「決定されたことに応答して」、「『記述された条件または事件』が検出されると」、または、「『記述された条件または事件』が検出されたことに応答して」と解釈されてもよい。
【００１９】
ニューラルネットワーク演算の複雑度の増加につれて、データのデータ量およびデータ次元も継続的に増加しているが、従来のニューラルネットワークアルゴリズムは、一般的に、浮動小数点データフォーマットを使用してニューラルネットワーク演算を実行し、このようにすると、継続的に増加しているデータ量などは、演算装置のデータ処理効率、記憶装置の記憶容量、及びアクセス効率などに対してより大きい挑戦を提出している。上述した問題を解決するために、関連技術においては、ニューラルネットワーク演算過程に関するすべてのデータを、いずれも浮動小数点数から固定小数点数に変換するが、異なるデータ間に差異があったり、同一のデータが異なる段階で差異を有したりするで、ただ「浮動小数点数から固定小数点数に変換する」場合、往々にして精度が足りないため、演算結果に影響を及ぼすことになる。
【００２０】
ニューラルネットワークの中の演算待ちデータは、一般的に、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットであり、ニューラルネットワークを搭載する装置でニューラルネットワークを稼働する場合、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットのいろんな演算待ちデータは、ニューラルネットワーク稼働のための演算量およびアクセスのオーバーヘッドがいずれもより大きくなる。演算効率を高めるために、本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体は、異なるタイプの演算待ちデータに基づいてニューラルネットワーク中の演算待ちデータの部分的量子化を実行でき、量子化後のデータフォーマットは、一般的に、ビット幅がより短いし、精度がより低い固定点データフォーマットである。精度がより低い量子化後のデータを利用してニューラルネットワークの演算を実行すると、演算量およびアクセス量を低減できる。量子化後のデータフォーマットは、ビット幅がより短い固定点データフォーマットであり得る。浮動小数点データフォーマットの演算待ちデータを固定点データフォーマットの演算待ちデータに量子化することができ、さらに、精度がより高い固定点フォーマットの演算待ちデータを精度がより低い固定点フォーマットの演算待ちデータに量子化することもできる。対応する量子化パラメータを利用してデータに対して部分的量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
【００２１】
量子化精度が量子化後のデータと量子化前データとの間の誤差の大きさであることを理解できる。量子化精度は、ニューラルネットワーク演算結果の正確度に影響を及ぼすことができる。量子化精度が高いほど、演算結果の正確率も高いが、演算量がもっと大きく、アクセスのオーバーヘッドももっと大きくなる。ビット幅がより短い量子化後のデータと比較すると、ビット幅がより長い量子化後のデータの量子化精度がもっと高く、ニューラルネットワークの演算を実行するときの正確率ももっと高い。しかしながら、ニューラルネットワークの演算を実行する場合、ビット幅がより長い量子化後データの演算量がもっと大きく、アクセスのオーバーヘッドもより大きくて、演算効率がより低い。同様に、同一の量子化待ちデータの場合、異なる量子化パラメータを利用して得た量子化後のデータは、異なる量子化精度を有し、異なる量子化結果を発生することになり、演算効率および演算結果の正確率にも異なる影響をもたらすことになる。ニューラルネットワークに対して量子化を実行すし、演算効率と演算結果の正確率との間でバランスをとるために、演算待ちデータのデータ特徴にもっと符合される量子化後のデータビット幅および量子化パラメータを利用できる。
【００２２】
ニューラルネットワーク中の演算待ちデータは、重み値、ニューロン、バイアス、勾配の中の少なくとも一種を含んでもよい。演算待ちデータは、複数の要素を含むマトリックスである。従来のニューラルネットワーク量子化において、一般的に、演算待ちデータ全体を量子化した後に演算を実行する。量子化後の演算待ちデータを利用して演算を実行するときには、一般的に、量子化後の演算待ちデータ全体の中の一部のデータを利用して演算を実行する。例えば、コンボルーション層において量子化後の入力ニューロン全体を利用してコンボルーション演算を実行する場合、コンボルーションカーネルの次元およびステップ長に基づいて、量子化後の入力ニューロン全体の中からコンボルーションカーネルの次元に相当する量子化後のニューロンをそれぞれ抽出してコンボルーション演算を実行する。完全接続層（ｆｕｌｌｙ ｃｏｎｎｅｃｔｅｄ ｌａｙｅｒ）において量子化後の入力ニューロン全体を利用してマトリックス乗算演算を実行する場合、量子化後の入力ニューロン全体の中からそれぞれ行ごとに量子化後のニューロンを抽出してマトリックス乘算演算を実行する。このため、従来のニューラルネットワーク量子化方法において、演算待ちデータ全体に対して量子化を実行した後に一部の量子化後のデータを利用して演算を実行し、全体の演算効率がより低い。さらに、演算待ちデータ全体を量子化した後に演算を実行するには、量子化後の演算待ちデータ全体を記憶する必要があり、占用する記憶空間がより大きい。
【００２３】
本発明の実施例に係るニューラルネットワーク量子化方法は、プロセッサに適用でき、当該プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａl Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、中央プロセッサ）などの汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ（ＩＰＵ）であってもよい。人工知能演算は、機械学習演算、脳と類似な演算などを含んでもよい。ここで、機械学習演算は、ニューラルネットワーク演算、ｋ−ｍｅａｎｓ演算、ベクトル機械サポート演算などを含む。当該人工知能プロセッサは、例えば、ＧＰＵ(Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、グラフィックス処理ユニット)、ＮＰＵ（Ｎｅｕｒａl−Ｎｅｔｗｏｒｋ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ、ニューラルネットワーク処理ユニット）、ＤＳＰ（Ｄｉｇｉｔａl Ｓｉｇｎａl Ｐｒｏｃｅｓｓ、デジタル信号処理ユニット）、フィールドプログラマブルゲートアレイ（Ｆｉｅlｄ−Ｐｒｏｇｒａｍｍａｂlｅ Ｇａｔｅ Ａｒｒａｙ、ＦＰＧＡ）チップの中の一つまたは組み合わせを含む。本発明は、プロセッサの具体的な種類に対して限制しない。
【００２４】
可能な一実現形態において、本発明で言及されるプロセッサは、複数の処理ユニットを含んでもよく、各々の処理ユニットは、例えばコンボルーション演算タスク、プーリングタスク、完全接続タスクなどの、割り当てられたいろんなタスクを独立的に稼働できる。本発明は、処理ユニットおよび処理ユニットが稼働するタスクに対して限定しない。
【００２５】
図１は、本発明の実施例に係るニューラルネットワーク量子化装置を示すブロック図である。図１に示すように、当該装置は、制御モジュール１１と、処理モジュール１２と、を備えてもよい。処理モジュール１２は、第１の演算サブモジュール１２１を備えてもよく、第１の演算サブモジュール１２１が、メイン演算サブモジュール１２１０と、スレーブ演算サブモジュール１２１１と、を備える。
【００２６】
前記制御モジュール１１は、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含む。
前記第１の演算サブモジュール１２１は、前記量子化結果に関連する演算を実行し、演算結果を得、ここで、
【００２７】
前記メイン演算サブモジュール１２１０が、第１のデータを前記スレーブ演算サブモジュールまでに送信し、前記第１のデータが、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１のタイプのデータを含む。
前記スレーブ演算サブモジュール１２１１が、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得る。
【００２８】
前記メイン演算サブモジュール１２１０が、さらに、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る。
【００２９】
目標タスクのタスク種類、使用する必要がある演算待ちデータの数、および、各々の演算待ちデータのデータ量に基づいて、端末の計算精度、現在処理能力、記憶能力などの決定された精度要件、演算待ちデータが参加する演算種類などに基づいて、目標データの中から複数の量子化待ちデータを決定する方式を決定できる。
【００３０】
ニューラルネットワーク中の量子化待ち層は、ニューラルネットワーク中の任意の層であり得る。要件に応じて、量子化待ち層としてニューラルネットワーク中の一部の層または全ての層を決定できる。ニューラルネットワーク中に複数の量子化待ち層が含まれている場合、各量子化待ち層は、連続されてもよいし、連続なれなくてもよい。異なるニューラルネットワークによって、量子化待ち層の種類も異なってもよく、例えば、量子化待ち層は、コンボルーション層、完全接続層（ｆｕｌｌｙ ｃｏｎｎｅｃｔｅｄ ｌａｙｅｒ）などであってもよく、本発明は、量子化待ち層の数および種類に対して限定しない。
【００３１】
可能な一実現形態において、前記演算待ちデータは、ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。要件に応じて、量子化待ち層の中のニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して量子化を実行できる。目標データは、任意の１種の量子化待ちの演算待ちデータであり得る。例えば、演算待ちデータがニューロン、重み値、および、バイアスであり、ニューロンおよび重み値に対して量子化を実行する必要があると、ニューロンが目標データ１であり、重み値が目標データ２である。
【００３２】
量子化待ち層の中に複数種類の目標データがある場合、各種類の目標データに対して本発明の中の量子化方法を使用して量子化を実行した後、各目標データに対応する量子化データを得てからいろんな目標データの量子化データ、および、量子化を実行する必要がない演算待ちデータを利用して量子化待ち層の演算を実行できる。
【００３３】
可能な一実現形態において、前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含んでもよく、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータが、ポイント位置を用いて表す第１の部分、および、オフセット量および／またはスケーリング係数を用いて表す第２の部分のデータを含み、前記第１のデータが、前記量子化結果中の第２タイプのデータの第１の部分をさらに含んでもよい。
当該実現形態において、量子化結果は、固定小数点数であり、下述したデータフォーマットを使用して表すことができる。
第１タイプのデータは、Fixed_Style1=I×2Sであり、
第２タイプのデータは、Fixed_Style2=I×2S×f+Oで表す。
【００３４】
ここで、Ｉは、固定小数点数であり、量子化データ（または量子化結果）のｎはバイナリ表現値であり、ｓは、ポイント位置であり（以下の、前記の第１タイプのポイント位置および第２タイプのポイント位置を含む）、ｆは、スケーリング係数であり（以下の、前記の第１タイプのスケーリング係数および第２タイプのスケーリング係数を含む）、ｏは、オフセット量である。
ここで、第２タイプのデータの第１の部分は、I×2Sであり、第２タイプのデータの第２の部分は、ｆおよびｏである。
【００３５】
ニューラルネットワーク演算の推論段階は、トレーニングされたニューラルネットワークに対して順方向演算を実行することでタスクの設定を完成する段階を含んでもよい。ニューラルネットワークの推論段階において、ニューロン、重み値、バイアス、および、勾配の中の少なくとも一つを量子化待ちデータとして、本発明の実施例中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の演算を完成できる。
【００３６】
ニューラルネットワーク演算の微調整段階は、トレーニングされたニューラルネットワークに対して所定の数の反復の順方向演算および逆方向演算を実行して、パラメータの微調整を実行することによって、所定タスクに適応する段階を含んでもよい。ニューラルネットワーク演算の微調整段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例の中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
【００３７】
ニューラルネットワーク演算のトレーニング段階は、初期化されたニューラルネットワークに対して反復トレーニングを実行し、特定タスクを実行できる、トレーニングされたニューラルネットワークを、得る段階を含んでもよい。ニューラルネットワークのトレーニング段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例の中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
【００３８】
一つの目標データの中のサブセットを量子化待ちデータとして、異なる方式によって目標データを複数のサブセットに分割し、各々のサブセットを一つの量子化待ちデータとすることができる。一つの目標データを複数の量子化待ちデータに分割する。目標データに対して実行しようとする演算種類に基づいて、目標データを複数の量子化待ちデータに分割できる。例えば、目標データに対してコンボルーション演算を実行する必要がある場合、コンボルーションカーネルの高さおよび幅に基づいて、目標データをコンボルーションカーネルに対応する複数の量子化待ちデータに分割できる。目標データに対してマトリックス乗算演算の左マトリックス（ｌｅｆｔ ｍａｔｒｉｘ）を実行する必要がある場合、目標データを行ごとに複数の量子化待ちデータに分割できる。目標データを複数の量子化待ちデータに一回に分割してもよく、演算の順序に基づいて、目標データを順次に複数の量子化待ちデータに分割してもよい。
【００３９】
予め設定されたデータ分割方式に基づいて、目標データを複数の量子化待ちデータに分割できる。例えば、予め設定されたデータ分割方式は、固定されたデータ大きさに基づいて分割を実行する方式、または、固定されたデータ形状に基づいて分割を実行する方式であり得る。
【００４０】
目標データを複数の量子化待ちデータに分割した後、各量子化待ちデータに対してそれぞれ量子化を実行し、各量子化待ちデータの量子化後のデータに基づいて演算を実行できる。一つの量子化待ちデータに必要な量子化時間は、目標データ全体の量子化時間よりも短く、そのうちの一つの量子化待ちデータの量子化が完了された後に、量子化後のデータを利用して後続の演算を実行することができ、目標データの中のすべての量子化待ちデータの量子化がすべて完成されるまで待った後に演算を実行する必要がない。そのため、本発明中の目標データの量子化方法は、目標データの演算効率を向上させることができる。
【００４１】
量子化待ちデータに対応する量子化パラメータは、一つの量子化パラメータであってもよいし、複数の量子化パラメータであってもよい。量子化パラメータは、ポイント位置などの、量子化待ちデータに対して量子化を実行するためのパラメータを含んでもよい。ポイント位置は、量子化後のデータの中の小数点の位置を決定するために使用できる。量子化パラメータは、スケーリング係数、オフセット量などをさらに含んでもよい。
【００４２】
量子化待ちデータに対応する量子化パラメータを決定する方式は、目標データに対応する量子化パラメータを決定した後、目標データに対応する量子化パラメータを量子化待ちデータの量子化パラメータとして決定する方式を含んでもよい。量子化待ち層が複数の目標データを含む場合、各目標データは、いずれも自分に対応する量子化パラメータを有してもよく、各目標データに対応する量子化パラメータは、異なってもよいし、同一であってもよく、本発明は、これに対して限定しない。目標データを複数の量子化待ちデータに分割した後、目標データに対応する量子化パラメータを各量子化待ちデータに対応する量子化パラメータとして決定でき、この場合、各量子化待ちデータに対応する量子化パラメータは同一である。
【００４３】
量子化待ちデータに対応する量子化パラメータを決定する方式は、各量子化待ちデータに対応する量子化パラメータを直接決定する方式を含んでもよい。目標データは、自分に対応する量子化パラメータを有さなくてもよいし、あるいは、目標データは、自分に対応する量子化パラメータを有するが、量子化待ちデータによって使用されなくてもよい。各量子化待ちデータに対して対応する量子化パラメータを直接設定できる。量子化待ちデータに基づいて対応する量子化パラメータを計算して得てもよい。この場合、各量子化待ちデータに対応する量子化パラメータは、同一であってもよいし、異なってもよい。例えば、量子化待ち層がコンボルーション層であり、目標データが重みである場合、重みをチャネルに基づいて複数の量子化待ち重みデータに分割でき、異なるチャネルの量子化待ち重みデータは、異なる量子化パラメータに対応されることができる。各量子化待ちデータに対応する量子化パラメータが異なる場合、各量子化待ちデータに対応する量子化パラメータを利用して量子化を実行した後に得られた量子化結果は、目標データの演算に影響を及ぼさない必要がある。
【００４４】
目標データに対応する量子化パラメータを決定する方式、または、量子化待ちデータに対応する量子化パラメータを決定する方式は、所定の量子化パラメータを検索して量子化パラメータを直接決定する方式、対応関係を検索して量子化パラメータを決定する方式、または、量子化待ちデータに基づいて量子化パラメータを計算して得る方式を含んでもよい。以下、量子化待ちデータに対応する量子化パラメータを決定する方式を例として、説明する。
【００４５】
量子化待ちデータに対応する量子化パラメータを直接設定できる。設定された量子化パラメータを所定の記憶空間に記憶できる。所定の記憶空間は、オンチップまたはオフチップの記憶空間であり得る。例えば、設定された量子化パラメータを所定の記憶空間に記憶できる。各量子化待ちデータに対して量子化を実行する場合、所定の記憶空間から対応する量子化パラメータを抽出してから量子化を実行できる。経験値に基づいて各種類の量子化待ちデータに対応する量子化パラメータを設定できる。要件に応じて記憶された各種類の量子化待ちデータに対応する量子化パラメータを更新できる。
【００４６】
各量子化待ちデータのデータ特徴に基づいて、データ特徴と量子化パラメータとの対応関係を検索し、量子化パラメータを決定できる。例えば、量子化待ちデータのデータ分布が疏らおよび稠密である場合、異なる量子化パラメータにそれぞれ対応されることができる。対応関係を検索することで、量子化待ちデータのデータ分布に対応する量子化パラメータを決定できる。
【００４７】
各量子化待ちデータに基づいて、所定の量子化パラメータ計算方法を利用して、各量子化待ち層に対応する量子化パラメータを計算して得ることができる。例えば、量子化待ちデータの絶対値の最大値および所定のデータビット幅に基づいて、丸めアルゴリズムを利用して量子化パラメータの中のポイント位置を計算して得ることができる。
【００４８】
所定の量子化アルゴリズムを利用して、量子化パラメータに基づいて量子化待ちデータに対して量子化を実行して、量子化データを得ることができる。例えば、量子化アルゴリズムとして丸めアルゴリズムを利用して、データビット幅およびポイント位置に基づいて量子化待ちデータに対して丸め量子化を実行して量子化データを得ることができる。ここで、丸めアルゴリズムは、切り上げ丸め、切り下げ丸め、ゼロへの丸め、および、最も近い整数への丸めを含むことができる。本発明は、量子化アルゴリズムの具体的な実現形態に対して限定しない。
【００４９】
各量子化待ちデータを対応する量子化パラメータをそれぞれ使用して量子化を実行できる。各量子化待ちデータに対応する量子化パラメータが各量子化待ちデータ自身の特徴にもっと適しているため、各量子化待ち層の各種類の量子化データの量子化精度が目標データの演算要件にもっと符合されるようにし、量子化待ち層の演算要件にもっと符合されるようにする。量子化待ち層の演算結果の正確率を保証することを前提として、量子化待ち層の演算効率を向上させ、量子化待ち層の演算効率と演算結果正確率との間のバランスをとることができる。さらに、目標データを複数の量子化待ちデータに分割してそれぞれ量子化し、一つの量子化待ちデータの量子化が完了した後に、量子化して得られた量子化結果に基づいて演算を実行する同時に、２番目の量子化待ちデータの量子化を実行でき、目標データの演算効率を全体的に向上させ、量子化待ち層の計算効率を向上させた。
【００５０】
各量子化待ちデータの量子化データに対して合併を実行した後に目標データの量子化結果を得ることができる。各量子化待ちデータの量子化データに対して所定の演算を実行した後に目標データの量子化結果を得ることができる。例えば各量子化待ちデータの量子化データに対して所定の重みに基づいて重み付け演算を実行した後に目標データの量子化結果を得ることができる。本発明は、これに対して限定しない。
【００５１】
ニューラルネットワークの推論、トレーニング、および、微調整過程において、量子化待ちデータに対してオフライン量子化またはオンライン量子化を実行できる。ここで、オフライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオフライン処理を実行することであり得る。オンライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオンライン処理を実行することであり得る。例えば、ニューラルネットワークが人工知能チップを稼働する場合、量子化待ちデータおよび量子化パラメータを人工知能チップ以外の演算装置に送信してオフライン量子化を実行することができ、または、人工知能チップ以外の演算装置を利用して事前に得られた量子化待ちデータおよび量子化パラメータに対してオフライン量子化を実行できる。人工知能チップでニューラルネットワークを稼働する過程においては、人工知能チップは、量子化待ちデータに対して量子化パラメータを利用してオンライン量子化を実行できる。本発明は、各量子化待ちデータの量子化過程がオンラインであるかまたはオフラインであるかに対して限定しない。
【００５２】
本実施例によって提供されるニューラルネットワーク量子化方法において、制御モジュールは、目標データを複数の量子化待ちデータに分割した後、各量子化待ちデータに対応する量子化データに基づいて目標データの量子化結果を得、第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得る。ここで、メイン演算サブモジュールを利用し、スレーブ演算サブモジュールに第１のデータを送信し、スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行して中間結果を得、前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る。各量子化待ちデータの量子化過程と、メイン演算サブモジュールおよびスレーブ演算サブモジュールの演算過程と、を並行して実行でき、目標データの量子化効率および演算効率を向上させることができ、量子化待ち層からニューラルネットワーク全体までの量子化効率および演算効率も向上させることができる。
【００５３】
可能な一実現形態において、目標データに対して量子化を実行する過程において、目標データに対応する量子化パラメータを使用して量子化を実行できる。目標データを複数の量子化待ちデータに分割した後には、各量子化待ちデータに対応する量子化パラメータを使用して量子化を実行できる。各量子化待ちデータに対応する量子化パラメータは、所定の方式または量子化待ちデータに基づいて計算する方式を使用でき、どのような方式を使用して各量子化待ちデータに対応する量子化パラメータを決定しても、いずれも、各量子化待ちデータの量子化パラメータが量子化待ちデータ自身の量子化要件にもっと符合されるようにすることができる。例えば、目標データに基づいて対応する量子化パラメータを計算して得る場合、目標データの中の各要素の最大値および最小値を利用して量子化パラメータを計算して得ることができる。量子化待ちデータに基づいて対応する量子化パラメータを計算して得る場合には、量子化待ちデータの中の各要素の最大値および最小値を利用して量子化パラメータを計算して得ることができ、量子化待ちデータの量子化パラメータが目標データの量子化パラメータよりも量子化待ちデータのデータ特徴にもっと適することができ、量子化待ちデータの量子化結果がもっと正確になり、量子化精度がもっと向上させることができる。
可能な一実現形態において、図１に示すように、処理モジュール１２は、データ変換サブモジュール１２２をさらに備えてもよい。
【００５４】
データ変換サブモジュール１２２は、変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得、前記変換後のデータのフォーマットタイプは、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータは、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１データは、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータ中の第１部分をさらに含み、
【００５５】
前記メイン演算サブモジュール１２１０は、さらに、前記中間結果、前記量子化結果の中の前記第１データ以外のデータ、および、前記変換後のデータの中の前記第１データ以外のデータに対して演算を実行し、演算結果を得る。
【００５６】
当該実現形態において、変換待ちデータは、その他の、データフォーマットが第１タイプおよび第２タイプといずれも異なり、且つ、量子化結果と共同で乗算演算を実行する必要があるデータをさらに含んでもよく、本発明は、これに対して限定しない。
2022501676.tif 000003
2022501676.tif 000004
2022501676.tif 000005
【００５７】
可能な一実現形態において、量子化結果は、第１タイプまたは第２タイプのフォーマットで表すことができ、第１の演算サブモジュールは、直接量子化結果に対して演算を実行する。量子化結果は、第１タイプまたは第２タイプに変換されなかった変換待ち量子化結果に対してフォーマット変換を実行した後に得られたものであってもよく、ここで、前記データ変換サブモジュール１２２は、さらに、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得る。
可能な一実現形態において、制御モジュールは、以下の少なくとも一つの方式（すなわち、方式１〜方式５）を使用し、複数の量子化待ちデータを決定する。
方式１：一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する。
【００５８】
ニューラルネットワークが複数の量子化待ち層を含む場合、目標タスクおよび端末の精度要件に基づいて端末の毎回量子化できるデータの量子化データ量を決定し、さらに、異なる量子化層の中の目標データのデータ量および量子化データ量に基づいて、一つまたは複数の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定できる。例えば、一つの量子化待ち層中の入力ニューロンを一つの量子化待ちデータとして決定する。
方式２：一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する。
【００５９】
ニューラルネットワークが複数の量子化待ち層を含む場合、目標タスクおよび端末の精度要件に基づいて端末の毎回量子化できるデータの量子化データ量を決定し、さらに、異なる量子化層の中の目標データのデータ量および量子化データ量に基づいて、一つまたは複数の量子化待ち層の中のある一つの種類の目標データを一つの量子化待ちデータとして決定できる。例えば、すべての量子化待ち層の中の入力ニューロンを一つの量子化待ちデータとして決定する。
方式３：量子化待ち層の目標データに対応する一つまたは複数のチャネル中のデータを、一つの量子化待ちデータとして決定する。
【００６０】
量子化待ち層がコンボルーション層である場合、量子化待ち層の中には、チャネルが含まれており、チャネル、および、目標タスクおよび端末の精度要件に基づいて決定された端末の毎回量子化できるデータの量子化データ量に基づいて、一つまたは複数のチャネルの中のデータを一つの量子化待ちデータとして決定できる。例えば、あるコンボルーション層に対して、二つのチャネルの中の目標データを一つの量子化待ちデータとして決定できる。あるいは、全てのチャネルの中の目標データを一つの量子化待ちデータとして決定できる。
方式４：量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する。
【００６１】
量子化待ち層がコンボルーション層である場合、コンボルーション層の入力ニューロンの次元は、バッチ（ｂａｔｃｈ、Ｂ）、チャネル（ｃｈａｎｎｅl、Ｃ）、高さ（ｈｅｉｇｈｔ、Ｈ）、および、幅（ｗｉｄｔｈ、Ｗ）を含んでもよい。入力ニューロンのバッチが複数である場合、各バッチの入力ニューロンを、次元が、チャネル、高さ、および、幅である３次元データとして見なすことができる。各バッチの入力ニューロンは、複数のコンボルーションカーネルに対応されることができ、各バッチの入力ニューロンのチャネル数は、自分に対応する各コンボルーションカーネルのチャネル数と一致する。
【００６２】
任意のバッチの入力ニューロン、および、当該バッチの入力ニューロンに対応する複数のコンボルーションカーネルの中の任意のコンボルーションカーネルに対して、量子化データ量および当該バッチの入力ニューロンのデータ量に基づいて、当該バッチの入力ニューロンの中の当該コンボルーションカーネルに対応する一部のデータ（サブセット）を、当該バッチの入力ニューロンの中の当該コンボルーションカーネルに対応する複数の量子化待ちデータとして決定できる。例えば、目標データＢ１が３個のバッチのデータを有すると想定し、目標データの中の一つのバッチのデータを一つの量子化待ちデータとして決定すると、当該目標データＢは３個の量子化待ちデータに分割されることができる。
【００６３】
コンボルーションカーネルの次元およびステップ長に基づいて、入力ニューロンを分割して全ての量子化待ちデータを得た後、各量子化待ちデータに対して並行して量子化過程を実行できる。量子化待ちデータのデータ量が入力ニューロンよりも小さいため、一つの量子化待ちデータに対して量子化を実行する計算量は、入力ニューロン全体に対して量子化を実行する計算量よりも小さく、このため、本実施例の中の量子化方法は、入力ニューロンの量子化速度を向上させ、量子化効率を向上させることができる。さらに、入力ニューロンに対してコンボルーションカーネルの次元およびステップ長に基づいて分割を実行して、各量子化待ちデータを順次に得た後、得られた各量子化待ちデータをそれぞれコンボルーションカーネルとコンボルーション演算を実行できる。各量子化待ちデータの量子化過程とコンボルーション演算過程とは並行して実行でき、本実施例中の量子化方法は、入力ニューロンの量子化効率および演算効率を向上させることができる。
方式５：量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する。
【００６４】
目標タスクおよび端末の精度要件に基づいて端末のリアルタイム処理能力を決定でき、端末のリアルタイム処理能力は、端末の、目標データに対して量子化を実行する速度、量子化後のデータに対して演算を実行する速度、及び目標データに対して量子化および演算を実行するとき、端末が処理できるデータ量などの、端末が目標データを処理する処理能力に関連する情報を含んでもよい。例えば、量子化待ちデータに対して量子化を実行する時間と量子化後のデータに対して演算を実行する速度とが同一になるように、目標データに対して量子化を実行する速度および量子化後のデータに対して演算を実行する速度に基づいて、量子化待ちデータのサイズを決定することができる。このようにして量子化および演算を同期に実行することで目標データの演算効率を向上させることができる。端末のリアルタイム処理能力が強いほど、量子化待ちデータのサイズも大きい。
【００６５】
本実施例において、要件に基づいて量子化待ちデータを決定する方式を設定でき、量子化待ちデータは、例えば入力ニューロン（重み値、バイアス、勾配であってもよく、以下、入力ニューロンを例として説明する）のような、一種の演算待ちデータを含んでもよく、当該演算待ちデータは、ある一つの量子化待ち層の中の一部または全部の入力ニューロンであってもよいし、複数の量子化待ち層の中の、各々の量子化待ち層の中の全部または一部の入力ニューロンであってもよい。量子化待ちデータは、さらに、量子化待ち層にある一つのチャネルに対応する全部のまたは一部の入力ニューロン、または、量子化待ち層のいくつかのチャネルに対応するすべての入力ニューロンであってもよい。量子化待ちデータは、さらに、ある一つの入力ニューロンの一部または全部であってもよい。つまり、任意の方式に基づいて目標データに対して分割を実行できる。本発明は、これに対して限定しない。
【００６６】
可能な一実現形態において、図１に示すように、処理モジュール１２は、第２の演算サブモジュール１２３をさらに備えてもよい。第２の演算サブモジュール１２３は、前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行する。
【００６７】
上述した方式によって、第１の演算サブモジュールを利用し、上述した第１タイプおよび第２タイプの固定点データとの間の乗算演算を実行し、第２の演算サブモジュールを利用し、他の演算処理を実行することによって、装置のデータ演算を実行する演算効率および速度を改善することができる。
【００６８】
可能な一実現形態において、図１に示すように、制御モジュール１１は、命令記憶サブモジュール１１１と、命令処理サブモジュール１１２と、行列記憶サブモジュール１１３と、をさらに備えてもよい。
命令記憶サブモジュール１１１は、前記ニューラルネットワークに対応する命令を記憶する。
命令処理サブモジュール１１２は、前記命令を解析し、前記命令の操作コードおよび操作ドメインを得る。
【００６９】
行列記憶サブモジュール１１３は、命令行列を記憶し、命令行列は、実行順序に基づいて順次に配列された複数の実行待ち命令を含み、複数の実行待ち命令は、前記ニューラルネットワークに対応する命令を含んでもよい。
【００７０】
当該実現形態において、実行待ち命令の受信時間、優先レベルなどに応じて、複数の実行待ち命令の実行順序を配列して命令行列を得ることによって、命令行列に基づいて複数の実行待ち命令を順次に実行できる。
可能な一実現形態において、図１に示すように、制御モジュール１１は、依存関係処理サブモジュール１１４を備えてもよい。
【００７１】
依存関係処理サブモジュール１１４は、複数の実行待ち命令の中の第１の実行待ち命令と第１の実行待ち命令の前の第０の実行待ち命令の間に関連関係が存在すると決定された場合、第１の実行待ち命令を命令記憶サブモジュール１１１にキャッシュし、第０の実行待ち命令の実行が完了された後、命令記憶サブモジュール１１１から第１の実行待ち命令を抽出して処理モジュール１２までに送信する。ここで、第１の実行待ち命令および第０の実行待ち命令は、複数の実行待ち命令の中の命令である。
【００７２】
ここで、第１の実行待ち命令と第１の実行待ち命令の前の第０の実行待ち命令との間に関連関係が存在することは、第１の実行待ち命令が必要とするデータの第１の記憶アドレス区間と第０の実行待ち命令が必要とするデータを記憶する第０の記憶アドレス区間とが重なる領域を有することを含む。逆に、第１の実行待ち命令と第０の実行待ち命令との間に関連関係がないことは、第１の記憶アドレス区間と第０の記憶アドレス区間との間に重なる領域ないことであってもよい。
【００７３】
このような方式によって、実行待ち命令間の依存関係に基づいて、前に位置する実行待ち命令の実行が完了された後に、後に位置する実行待ち命令を実行するようにし、演算結果の正確性を保証できる。
【００７４】
可能な一実現形態において、図１に示すように、当該装置は、記憶モジュール１０をさらに備えてもよい。記憶モジュール１０は、量子化パラメータ、演算待ちデータ、量子化結果などの、ニューラルネットワーク演算に関連する計算データを記憶する。
【００７５】
当該実現形態において、記憶モジュールは、キャッシュ２０２およびレジスタ２０１中の一つまたは複数を含んでもよく、キャッシュ２０２は、高速一時記憶キャッシュを含んでもよいし、さらに、少なくとも一つのＮＲＡＭ（Ｎｅｕｒｏｎ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ、ニューロンランダムアクセスメモリ）を含んでもよい。キャッシュ２０２は、計算データを記憶でき、レジスタ２０１は、計算データの中のスカラーを記憶できる。
【００７６】
可能な一実現形態において、キャッシュは、ニューロンキャッシュを含んでもよい。ニューロンキャッシュすなわち上述したニューロンランダムアクセスメモリは、計算データの中のニューロンデータを記憶でき、ニューロンデータは、ニューロンベクトルデータを含んでもよい。
可能な一実現形態において、記憶モジュール１０は、計算データの入力および出力を制御するためのデータＩ／Ｏユニット２０３を備えてもよい。
【００７７】
可能な一実現形態において、当該装置は、記憶モジュールからデーダを読み取ったり記憶モジュールにデータを記憶したりし、外部デバイス／他の部件からデーダを読み取ったり外部デバイス／他の部件にデータを記憶したりし、記憶モジュールと外部デバイス／他の部件との間のデータ伝送を実現するためのメモリ直接アクセスモジュール５０をさらに備えてもよい。
【００７８】
可能な一実現形態において、制御モジュールは、パラメータ決定サブモジュールを備えてもよい。パラメータ決定サブモジュールは、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得る。
【００７９】
当該実現形態において、量子化待ちデータを統計し、統計結果およびデータビット幅に基づいて量子化待ちデータに対応する量子化パラメータを決定できる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量の中の一つまたは複数を含んでもよい。
可能な一実現形態において、パラメータ決定サブモジュールは、
【００８０】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値Ｚ１および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るための第１のポイント位置決定サブモジュールを備えてもよい。ここで、当該絶対値の最大値Ｚ１は、量子化待ちデータの中のデータに対して絶対値を取った後に得られた最大値である。
【００８１】
当該実現形態において、量子化待ちデータが原点に対して対称的なデータである場合、量子化パラメータはオフセット量を含まないでもよく、Ｚ１が量子化待ちデータの中の要素の絶対値の最大値であり、量子化待ちデータに対応するデータビット幅がｎであり、Ａ１がデータビット幅ｎの量子化待ちデータに対して量子化を実行した後の量子化データが表現できる最大値であり、
2022501676.tif 000006
【００８２】
プロセッサは、量子化待ちデータの中の絶対値の最大値Ｚ１およびデータビット幅ｎに基づいて、第１タイプのポイント位置ｓ１を計算して得ることができる。例えば、以下の式（２）を利用して量子化待ちデータに対応する第１タイプのポイント位置ｓ１
を計算して得ることができる。
2022501676.tif 000007
【００８３】
ここで、ｃｅｉlは、切り上げ丸めであり、Ｚ１は、量子化待ちデータの中の絶対値の最大値であり、ｓ１は、第１タイプのポイント位置であり、ｎは、データビット幅である。
可能な一実現形態において、パラメータ決定サブモジュールは、
【００８４】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置ｓ２を得るための第２ポイント位置決定サブモジュールを備えてもよい。
【００８５】
当該実現形態において、まず、量子化待ちデータの中の最大値Ｚｍａxおよび最小値Ｚｍｉｎを取得してから、さらに、最大値Ｚｍａxおよび最小値Ｚｍｉｎに基づいて以下の式（３）を利用して計算できる。
2022501676.tif 000008
さらに、計算して得たＺ２および対応するデータビット幅に基づいて以下の式（４）を利用して第２タイプのポイント位置ｓ２を計算できる
2022501676.tif 000009
【００８６】
当該実現形態において、量子化するとき、通常の場合には量子化待ちデータの中の最大値および最小値を保存し、保存された量子化待ちデータの中の最大値および最小値に基づいて絶対値の最大値を直接取得するため、もっと多いリソースを消費して量子化待ちデータに対して絶対値を求める必要がなくなり、統計結果を決定する時間を節約する。
可能な一実現形態において、パラメータ決定サブモジュールは、
【００８７】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第１の最大値決定サブモジュールと、
【００８８】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数ｆ’を得るためのと、を備えてもよい。ここで、第１タイプのスケーリング係数ｆ’は、第１のスケーリング係数ｆ１および第２スケーリング係数ｆ２を含んでもよい。
ここで、当該第１スケーリング係数ｆ１は、以下の式（５）に基づいて計算できる。
2022501676.tif 000010
ここで、第２スケーリング係数ｆ２は、以下の式（６）に基づいて計算できる。
2022501676.tif 000011
可能な一実現形態において、、前記パラメータ決定サブモジュールは、
【００８９】
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備えてもよい。
【００９０】
当該実現形態において、図２は、本発明の実施例に係る対称的な固定小数点数表現を示す模式図である。図２に示す量子化待ちデータの数値フィールドは、「０」を対称中心として分布される。Ｚ１は、量子化待ちデータの数値フィールド中のすべての浮動小数点数の絶対値の最大値であり、図２において、Ａ１は、ｎビットの固定小数点数が表現できる浮動小数点数の最大値であり、浮動小数点数Ａ１を固定小数点数に変換すると(2n-1-1)である。オーバーフローを回避するために、Ａ１はＺ１を含む必要がある。実際演算において、ニューラルネットワーク演算過程での浮動小数点データは、ある決定区間の正規分布になる傾向があるが、「０」を対称中心とする分布を必ずとして満たすとは限らなく、このとき固定小数点数で表現すると、オーバーフロー状況が発生し易い。このような状況を改善するために、量子化パラメータ中にオフセット量を導入する。図３は、本発明の実施例に係るオフセット量を導入した固定小数点数表現を示す模式図である。図３に示すように、量子化待ちデータの数値フィールドは、「０」を対称中心として分布されていなく、Ｚｍｉｎは、量子化待ちデータの数値フィールド中のすべての浮動小数点数の最小値であり、Ｚｍａxは、量子化待ちデータの数値フィールド中のすべての浮動小数点数の最大値であり、Ａ２は、ｎビットの固定小数点数で表現する平行移動後の浮動小数点数の最大値であり、Ａ２は、2S2(2n-1-1)である。Ｐは、Ｚｍｉｎ〜Ｚｍａxの間の中心点であり、量子化待ちデータの数値フィールド全体をずれ移動させて、平行移動後の量子化待ちデータの数値フィールドが「０」を対称中心として分布されるようにすることで、データの「オーバーフロー」を回避する。平行移動後の量子化待ちデータの数値フィールド中の絶対値の最大値は、Ｚ２である。図６から分かるように、オフセット量は、「０」点と「Ｐ」点との間の水平距離であり、当該距離をオフセット量ｏと呼ぶ。
当該最小値Ｚｍｉｎおよび最大値Ｚｍａxに基づいて以下の式（７）に基づいてオフセット量を計算して得ることができる。
2022501676.tif 000012
【００９１】
ここで、ｏは、オフセット量を示し、Ｚｍｉｎは、量子化待ちデータすべての要素中の最小値であり、Ｚｍａxは、量子化待ちデータすべての要素中の最大値を示す。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
【００９２】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第２の最大値決定サブモジュールと、
【００９３】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数f”を得るためのと、を備えてもよい。ここで、第２タイプのスケーリング係数f”は、第３のスケーリング係数ｆ３および第４のスケーリング係数ｆ４を含んでもよい。
【００９４】
当該実現形態において、量子化パラメータがオフセット量を含む場合、Ａ２は、データビット幅ｎを用いて平行移動後の量子化待ちデータに対して量子化を実行した後の量子化データが表現できる最大値であり、Ａ２は、2S2(2n-1-1)であり、量子化待ちデータの中のＺｍａxおよび最小値Ｚｍｉｎに基づいて計算して平行移動後の量子化待ちデータの数値フィールド中の絶対値の最大値Ｚ２を得ることができ、さらに、以下の式（８）に基づいて第３のスケーリング係数ｆ３を計算できる。
2022501676.tif 000013
さらに、第４のスケーリング係数ｆ４は、以下の式（９）に基づいて計算できる。
2022501676.tif 000014
量子化待ちデータに対して量子化を実行する場合、使用される量子化パラメータが異なると、量子化の実行に使用されるデータが異なる。
【００９５】
可能な一実現形態において、量子化パラメータは、第１タイプのポイント位置ｓ１を含んでもよい。以下の式（１０）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000015
ここで、Ｉxは、量子化データが第１タイプに属するデーダであり、Ｆxは、量子化待ちデータであり、ｒｏｕｎｄは、最も近い整数への丸め演算を実行する。
【００９６】
量子化パラメータが第１タイプのポイント位置ｓ１を含む場合、式（１１）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000016
【００９７】
可能な一実現形態において、量子化パラメータは、第１タイプのポイント位置および第１のスケーリング係数を含んでもよい。以下の式（１２）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000017
【００９８】
量子化パラメータが第１タイプのポイント位置および第１スケーリング係数を含む場合、式（１３）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000018
【００９９】
可能な一実現形態において、量子化パラメータは、第２のスケーリング係数を含んでもよい。以下の式（１４）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000019
【０１００】
量子化パラメータが第２のスケーリング係数を含む場合、式（１５）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000020
【０１０１】
可能な一実現形態において、量子化パラメータは、オフセット量を含んでもよい。以下の式（１６）を利用して量子化待ちデータに対して量子化を実行して、量子化データＩxを得ることができる。
2022501676.tif 000021
【０１０２】
量子化パラメータがオフセット量を含む場合、式（１７）に基づいて目標データの量子化データに対して逆量子化を実行して、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000022
【０１０３】
可能な一実現形態において、量子化パラメータは、第２タイプのポイント位置およびオフセット量を含んでもよい。以下の式（１８）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000023
【０１０４】
量子化パラメータが第２タイプのポイント位置およびオフセット量を含む場合、式（１９）に基づいて目標データの量子化データに対して逆量子化を実行して、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000024
【０１０５】
可能な一実現形態において、量子化パラメータは、第２タイプのスケーリング係数f”およびオフセット量ｏを含んでもよい。以下の式（２０）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000025
【０１０６】
量子化パラメータが第２タイプのスケーリング係数およびオフセット量を含む場合、式（２１）に基づいて目標データの量子化データに対して逆量子化を実行し、目標データの逆量子化データ^Fxを得ることができる。
2022501676.tif 000026
【０１０７】
可能な一実現形態において、量子化パラメータは、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含んでもよい。以下の式（２２）を利用して量子化待ちデータに対して量子化を実行し、量子化データＩxを得ることができる。
2022501676.tif 000027
【０１０８】
量子化パラメータが第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含む場合、式（２３）に基づいて目標データの量子化データに対して逆量子化を実行して、目標データの逆量子化データ^Fxを得ることができる。^Fx
2022501676.tif 000028
【０１０９】
上述した式中の最も近い整数への丸め演算ｒｏｕｎｄの代わりに、例えば、切り上げ丸め、切り下げ丸め、ゼロへの丸めなど丸め演算のような、他の丸め演算方法を使用できることを理解できる。データビット幅が一定である場合、ポイント位置に基づいて量子化して得られた量子化データにおいて、小数点後のビット数が多いほど、量子化データの量子化精度も大きいことを理解できる。
【０１１０】
可能な一実現形態において、制御モジュールは、さらに、量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層の中の各種類の量子化待ちデータに対応する量子化パラメータを決定できる。
【０１１１】
可能な一実現形態において、各量子化待ち層中の各種類の量子化待ちデータに対応する量子化パラメータは、保存された所定の値であり得る。ニューラルネットワークのために、一つの、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、当該対応関係は、各量子化待ち層の各種類の量子化待ちデータと量子化パラメータとの対応関係を含んでもよく、対応関係を各層が共有してアクセスできる記憶空間に保存する。ニューラルネットワークのために、複数の、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、各量子化待ち層にそれぞれそのうちの一つの対応関係が対応される。各層の対応関係を本層専用の記憶空間に保存してもよいし、各層の対応関係を各層が共有してアクセスできる記憶空間に保存してもよい。
【０１１２】
量子化待ちデータと量子化パラメータとの対応関係は、複数の量子化待ちデータと自分に対応する複数の量子化パラメータとの間の対応関係を含んでもよい。例えば、量子化待ちデータと量子化パラメータとの対応関係Ａは、量子化待ち層１のニューロンおよび重み値の二つの量子化待ちデータと、ニューロンに対応するポイント位置１、スケーリング係数１、および、オフセット量１の三個の量子化パラメータと、重み値に対応ポイント位置２およびオフセット量２の二つ量子化パラメータと、を含んでも良い。本発明は、量子化待ちデータと量子化パラメータとの対応関係の具体的なフォーマットに対して限定しない。
【０１１３】
本実施例において、量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層中の各種類の量子化待ちデータに対応する量子化パラメータを決定できる。各量子化待ち層のために対応する量子化パラメータを予め設定し、対応関係によって記憶した後、量子化待ち層が検索してから使用するようにすることができる。本実施例中の量子化パラメータの取得方式は、簡単かつ便利である。
【０１１４】
可能な一実現形態において、制御モジュールは、第１の量子化誤差決定サブモジュールと、調整ビット幅決定サブモジュールと、調整量子化パラメータ決定サブモジュールと、をさらに備えてもよい。
【０１１５】
第１量子化誤差決定サブモジュールは、前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定する。
【０１１６】
量子化待ちデータに対応する量子化データと量子化待ちデータとの間の誤差に基づいて、量子化待ちデータの量子化誤差を決定できる。例えば、標準差計算方法、ルート平均二乗誤差計算方法などの、所定の誤差計算方法を利用して、量子化待ちデータの量子化誤差を計算できる。
【０１１７】
さらに、量子化パラメータに基づいて、量子化待ちデータに対応する量子化データに対して逆量子化を実行してから逆量子化データを得、逆量子化データと量子化待ちデータとの間の誤差に基づいて、式（２４）に基づいて量子化待ちデータの量子化誤差diffbitを決定できる。
2022501676.tif 000029
【０１１８】
ここで、Fiは、量子化待ち対応する浮動小数点値であり、iは、量子化待ちデータ中のデータの下付き文字である。^Fiは、浮動小数点値に対応する逆量子化データである。
さらに、量子化間隔、量子化後のデータの数、および、対応する量子化前のデータに基づいて式（２５）に基づいて量子化誤差diffbitを決定できる。
2022501676.tif 000030
2022501676.tif 000031
【０１１９】
調整ビット幅決定サブモジュールは、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得る。
【０１２０】
経験値に基づいて誤差閾値を決定でき、誤差閾値は、量子化誤差に対する期待値を示すために使用できる。量子化誤差が誤差閾値よりも大きいか小さい場合、量子化待ちデータに対応するデータビット幅を調整して、量子化待ちデータに対応する調整ビット幅を得ることができる。データビット幅をもっと長いビット幅またはもっと短いビット幅に調整することによって、量子化精度を増加または減少することができる。
【０１２１】
受け入れることができる最大誤差に基づいて誤差閾値を決定でき、量子化誤差が誤差閾値よりも大きい場合は、量子化精度が期待に応えられないことを意味し、データビット幅をもっと長いビット幅に調整する必要がある。さらに、より高い量子化精度に基づいて一つのより小さい誤差閾値を決定でき、量子化誤差が誤差閾値未満である場合は、量子化精度がより高いことを意味し、ニューラルネットワークの稼働効率が影響を及ぼすことになり、データビット幅をもっと短いビット幅に適当に調整ことによって、量子化精度を適当に低下して、ニューラルネットワークの稼働効率を向上させることができる。
【０１２２】
データビット幅を固定されたビット数のステップ長に基づいて調整してもよいし、量子化誤差と誤差閾値との間の差分値が異なることに基づいて、可変の調整ステップ長に基づいてデータビット幅を調整してもよい。本発明は、これに対して限定しない。
【０１２３】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、調整量子化パラメータ決定サブモジュールは、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得る。
【０１２４】
調整ビット幅を決定した後に、量子化待ちデータに対応するデータビット幅を調整ビット幅に更新できる。例えば、量子化待ちデータの更新前のデータビット幅が８ビットであり、調整ビット幅が１２ビットであると、更新後の量子化待ちデータに対応するデータビット幅は１２ビットである。調整ビット幅および量子化待ちデータに基づいて計算して量子化待ちデータに対応する調整量子化パラメータ得ることができる。量子化待ちデータに対応する調整量子化パラメータに基づいて量子化待ちデータに対して量子化を再度実行することによって、量子化精度もっと高いまたはもっと低い量子化データを得ることで、量子化待ち層が量子化精度と処理効率との間のバランスをとることができる。
【０１２５】
ニューラルネットワークの推論、トレーニング、および、微調整過程において、各層間の量子化待ちデータは一定の関連性を有すると見なすことができる。例えば、各層の量子化待ちデータ間の平均値間の差が所定の平均値閾値未満であり、且つ、各層の量子化待ちデータ間の最大値間の差分値も所定の差分値閾値未満である場合、量子化待ち層の調整量子化パラメータを後続の一つまたは複数の層の調整量子化パラメータとして、量子化待ち層後続の一つまたは複数の層の量子化待ちデータに対する量子化の実行に用いることができる。さらに、ニューラルネットワークのトレーニングおよび微調整過程において、量子化待ち層の現在反復中で得られた調整量子化パラメータを、後続の反復中の量子化待ち層に対する量子化の実行に用いることができる。
【０１２６】
可能な一実現形態において、前記制御モジュールは、さらに、前記量子化待ち層の後の一層または多層において、前記量子化待ち層の量子化パラメータを使用する。
【０１２７】
ニューラルネットワークが調整量子化パラメータに基づいて量子化を実行することは、量子化待ち層のみにおいて調整量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行し、再度得られた量子化データを量子化待ち層の演算に用いることを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用せずに量子化待ちデータに対して量子化を再度実行し、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および／または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用して量子化を再度実行し、再度得られた量子化データを量子化待ち層の演算に用い、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および／または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。本発明は、これに対して限定しない。
【０１２８】
本実施例において、量子化待ちデータと量子化待ちデータに対応する量子化データとの間の誤差に基づいてデータビット幅を調整し、調整後のデータビット幅に基づいて計算して調整量子化パラメータを得る。異なる誤差閾値を設定して異なる調整量子化パラメータを得ることで、量子化精度の向上または稼働効率の向上など、異なる量子化要件に達することができる。量子化待ちデータおよび量子化待ちデータの量子化データに基づいて計算して得た調整量子化パラメータは、さらに、量子化待ちデータ自身のデータ特徴にもっと符合でき、量子化待ちデータ自身の要件にもっと符合される量子化結果に達して、量子化精度と処理効率との間でもっとよいバランスをとることができる。
【０１２９】
可能な一実現形態において、前記調整ビット幅決定サブモジュールは、第１の調整ビット幅決定サブモジュールを備えてもよい。第１の調整ビット幅決定サブモジュールは、前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得る。
【０１３０】
受け入れることができる最大の量子化誤差に基づいて、第１の誤差閾値を決定できる。量子化誤差と第１の誤差閾値とを比較できる。量子化誤差が第１の誤差閾値よりも大きい場合、量子化誤差が既に受け入れることができないと見なすことができる。量子化精度を向上する必要があり、量子化待ちデータに対応するデータビット幅を増加する方式によって、量子化待ちデータの量子化精度を向上させることができる。
【０１３１】
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて増加して、調整ビット幅を得ることができる。固定された調整ステップ長は、Ｎビットであり得、Ｎは、正の整数である。毎回データビット幅を調整するときにＮビットを増加できる。毎回増加した後のデータビット幅＝原データビット幅＋Ｎビットである。
【０１３２】
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて増加して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第１の閾値よりも大きい場合、調整ステップ長Ｍ１に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第１の閾値未満である場合、調整ステップ長Ｍ２に基づいてデータビット幅を調整でき、ここで、第１閾値は第２閾値よりも大きく、Ｍ１はＭ２よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明は、データビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
【０１３３】
量子化待ちデータを調整ビット幅に基づいて計算して調整後の量子化パラメータを得ることができる。調整後の量子化パラメータを利用して量子化待ちデータに対して再度量子化を実行した後に得られた量子化データは、調整前の量子化パラメータを利用して量子化して得られた量子化データよりも、量子化精度がもっと高い。
【０１３４】
可能な一実現形態において、制御モジュールは、第１の調整後の量子化誤差サブモジュールと、第１の調整ビット幅循環決定モジュールと、をさらに備えてもよい。
【０１３５】
第１の調整後の量子化誤差サブモジュールは、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算し、
【０１３６】
第１の調整ビット幅循環決定モジュールは、前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続ける。
【０１３７】
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて調整後の量子化パラメータを計算して得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて計算して量子化待ちデータの調整後の量子化誤差を得、調整後の量子化誤差は依然として第１の誤差閾値よりも大きい可能性があり、すなわち、データビット幅を一回調整しては調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第１の誤差閾値よりも大きい場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第１の誤差閾値未満になるまでに、量子化待ちデータに対応するデータビット幅を複数回増加できる。
【０１３８】
複数回増加する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅＝原データビット幅＋Ｂ*Ｎビットであり、ここで、Ｎは、毎回増加する固定された調整ステップ長であり、Ｂは、データビット幅の増加回数である。最終のデータビット幅＝原データビット幅＋Ｍ１＋Ｍ２＋…＋Ｍｍであり、ここで、Ｍ１、Ｍ２…Ｍｍは、毎回増加する可変の調整ステップ長である。
【０１３９】
本実施例において、量子化誤差が第１の誤差閾値よりも大きい場合、前記量子化待ちデータに対応するデータビット幅を増加し、前記量子化待ちデータに対応する調整ビット幅を得る。第１の誤差閾値および調整ステップ長を設定してデータビット幅を増加することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第１の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に調整することによって、異なる量子化要件を満たして、量子化精度を自身データ特徴に基づいて自己適応調整できるようにする。
可能な一実現形態において、前記調整ビット幅決定サブモジュールは、第２の調整ビット幅決定サブモジュールをさらに備えてもよい。
【０１４０】
第２の調整ビット幅決定サブモジュールは、前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得る。
【０１４１】
受け入れることができる量子化誤差および所望のニューラルネットワークの稼働効率に基づいて、第２の誤差閾値を決定できる。量子化誤差と第２の誤差閾値とを比較できる。量子化誤差が第２の誤差閾値未満である場合、量子化誤差が予想を超えていると見なすことができるが、稼働効率が低すぎることは既に受け入れることができない。量子化精度を低下してニューラルネットワークの稼働効率を向上させることができ、量子化待ちデータに対応するデータビット幅を減少する方式によって、量子化待ちデータの量子化精度を低下させることができる。
【０１４２】
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて減少して、調整ビット幅を得ることができる。固定された調整ステップ長は、Ｎビットであり得、Ｎは、正の整数である。毎回データビット幅を調整するときにＮビットを減少できる。増加後のデータビット幅＝原データビット幅−Ｎビットである。
【０１４３】
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて減少して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第１の閾値よりも大きい場合、調整ステップ長Ｍ１に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第１の閾値未満である場合、調整ステップ長Ｍ２に基づいてデータビット幅を調整でき、ここで、第１の閾値は第２の閾値よりも大きく、Ｍ１はＭ２よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明はデータビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
【０１４４】
量子化待ちデータを調整ビット幅に基づいて計算して調整後の量子化パラメータを得ることができる、調整後の量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行した後に得られた量子化データは、調整前の量子化パラメータを利用して量子化して得られた量子化データよりも、量子化精度はより低い。
【０１４５】
可能な一実現形態において、制御モジュールは、第２の調整後の量子化誤差サブモジュールと、第２の調整ビット幅循環決定サブモジュールと、をさらに備えてもよい。
第２の調整後の量子化誤差サブモジュールは、前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算し、
【０１４６】
第２の調整ビット幅循環決定サブモジュールは、調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続ける。
【０１４７】
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて計算して調整後の量子化パラメータを得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて計算して量子化待ちデータの調整後の量子化誤差を得、調整後の量子化誤差が依然として小于第２の誤差閾値、すなわち、データビット幅を一回調整しては調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第２の誤差閾値未満である場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第２の誤差閾値よりも大きくなるまでに、量子化待ちデータに対応するデータビット幅を複数回減少できる。
【０１４８】
複数回減少する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅＝原データビット幅−Ｂ*Ｎビット、ここで、Ｎは、毎回増加する固定された調整ステップ長であり、Ｂは、データビット幅の増加回数である。最終のデータビット幅＝原データビット幅−Ｍ１−Ｍ２−…−Ｍｍであり、ここで、Ｍ１、Ｍ２…Ｍｍは、毎回減少する可変の調整ステップ長である。
【０１４９】
本実施例において、量子化誤差が第２の誤差閾値未満である場合、前記量子化待ちデータに対応するデータビット幅を減少して、前記量子化待ちデータに対応する調整ビット幅を得る。第２の誤差閾値および調整ステップ長を設定してデータビット幅を減少することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第２の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に自己適応調整できるようにして、異なる量子化要件を満たして、量子化精度を調整できるようにし、量子化精度とニューラルネットワークの稼働効率との間でバランスをとることができる。
【０１５０】
可能な一実現形態において、前記制御モジュールは、さらに、前記量子化誤差が第１の誤差閾値よりも大きいと、前記量子化待ちデータに対応するデータビット幅を増加し、前記量子化誤差が第２の誤差閾値よりも小さいと、前記量子化待ちデータに対応するデータビット幅を減少し、前記量子化待ちデータに対応する調整ビット幅を得る。
【０１５１】
さらに、二つの誤差閾値を同時に設置でき、ここで、第１の誤差閾値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数を増加でき、第２の誤差閾値は、量子化精度が高すぎることを示すために使用され、データビット幅のビット数を減少できる。第１の誤差閾値は第２の誤差閾値よりも大きく、量子化待ちデータの量子化誤差を二つ誤差閾値と同時に比較でき、量子化誤差が第１の誤差閾値よりも大きい場合、データビット幅のビット数を増加し、量子化誤差が第２の誤差閾値未満である場合、データビット幅のビット数を減少する。量子化誤差が第１の誤差閾値と第２の誤差閾値との間に位置すると、データビット幅をそのまま維持することができる。
【０１５２】
本実施例において、量子化誤差を第１の誤差閾値および第２の誤差閾値と同時に比較することによって、比較結果に基づいてデータビット幅を増加または減少でき、第１の誤差閾値および第２の誤差閾値を利用してデータビット幅をもっと柔軟に調整できる。データビット幅の調整結果が量子化要件にもっと符合されるようにする。
【０１５３】
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、制御モジュールは、第１のデータ変動幅決定サブモジュールと、目標反復間隔決定サブモジュールと、をさらに備えてもよい。
第１のデータ変動幅決定サブモジュールは、現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得する。
【０１５４】
目標反復間隔決定サブモジュールは、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにし、前記目標反復間隔は、少なくとも一回の反復を含む。
【０１５５】
ニューラルネットワーク演算の微調整段階、および／または、トレーニング段階は、複数回の反復を含む。ニューラルネットワーク中の各量子化待ち層において、一回の順方向演算および一回の逆方向演算を実行し、量子化待ち層の重み値を更新した後、一回の反復が完成される。複数回の反復中で、量子化待ち層中の量子化待ちデータ、および／または、量子化待ちデータに対応する量子化データのデータ変動幅は、異なる反復中の量子化待ちデータおよび／または量子化データに対して同一の量子化パラメータを使用して量子化を実行できるか否かを推し量ることに利用できる。現在反復および履歴反復中の量子化待ちデータのデータの変動幅がより小さいと、例えば所定の幅度変動閾値未満であると、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用できる。
【０１５６】
予め記憶した量子化パラメータを抽出する方式によって、量子化待ちデータに対応する量子化パラメータを決定できる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化待ちデータに対応する量子化パラメータを抽出する必要がある。複数の反復中の量子化待ちデータおよび／または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で使用された同一の量子化パラメータを一時記憶でき、各反復中で量子化を実行するときに一時記憶された量子化パラメータを利用して量子化演算を実行すればよく、毎回の反復中で量子化パラメータを抽出する必要がない。
【０１５７】
さらに、量子化待ちデータおよびデータビット幅に基づいて計算して量子化パラメータを得ることができる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化パラメータをそれぞれ計算する必要がある。複数の反復中の量子化待ちデータおよび／または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用すると、各反復中でいずれもそのうちの１番目の反復中で計算して得た量子化パラメータを直接使用すればよく、毎回の反復中で量子化パラメータを計算しない。
【０１５８】
量子化待ちデータが重み値である場合、各反復間の重み値が継続的に更新され、複数の反復中の重み値のデータ変動幅がより小いか、または、複数の反復中の重み値に対応する量子化データのデータ変動幅がより小いと、複数の反復中で同一の量子化パラメータを利用して重み値に対して量子化を実行できることを理解できる。
【０１５９】
量子化待ちデータのデータ変動幅に基づいて目標反復間隔を決定でき、目標反復間隔は少なくとも一回の反復を含み、目標反復間隔内の各反復中で同一の量子化パラメータを使用でき、すなわち、目標反復間隔内の各反復中で量子化待ちデータの量子化パラメータをこれ以上更新しない。ニューラルネットワークは、目標反復間隔によって量子化待ちデータの量子化パラメータを更新し、目標反復間隔内に含まれる反復に対しては、所定の量子化パラメータを取得しないか、または、量子化パラメータを計算しなく、すなわち、目標反復間隔内の反復中では量子化パラメータを更新しない。目標反復間隔以外の反復中では、再度、所定の量子化パラメータを取得するか、または、量子化パラメータを計算するか、すなわち、目標反復間隔以外の反復中では量子化パラメータを更新する。
【０１６０】
複数の反復間の量子化待ちデータまたは量子化待ちデータの量子化データのデータ変動幅が小さいほど、決定される目標反復間隔に含まれる反復回数が多いことを理解できる。計算して得たデータ変動幅に基づいて、所定のデータ変動幅と反復間隔との対応関係を検索して、計算して得たデータ変動幅に対応する目標反復間隔を決定できる。要件に応じてデータ変動幅と反復間隔との対応関係を設定できる。計算して得たデータ変動幅に基づいて、所定の計算方法を利用して目標反復間隔を計算して得ることができる。本発明は、データ変動幅の計算方式および目標反復間隔の取得方式に対して限定しない。
【０１６１】
本実施例において、ニューラルネットワーク演算の微調整段階、および／または、トレーニング段階において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。複数の反復中の量子化待ちデータまたは量子化待ちデータに対応する量子化データのデータ変動幅に基づいて、目標反復間隔を決定できる。ニューラルネットワークは、目標反復間隔に基づいて量子化パラメータを更新するか否かを決定できる。目標反復間隔に含まれる複数の反復中のデータ変動幅がより小さいため、目標反復間隔内の反復中で量子化パラメータを更新しないでも量子化精度を保証できる。目標反復間隔内の複数の反復中で量子化パラメータを更新しないと、量子化パラメータの抽出回数または計算回数を削減して、ニューラルネットワークの演算効率を向上させることができる。
可能な一実現形態において、制御モジュールは、第１目標反復間隔適用サブモジュールをさらに備えてもよい。
【０１６２】
前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにするための第１目標反復間隔適用サブモジュールをさらに備える。
【０１６３】
本発明の上述した実施例に記載されたように、量子化待ちデータの量子化パラメータは、予め設定してもよいし、量子化待ちデータに対応するデータビット幅に基づいて計算して得てもよい。異なる量子化待ち層の中の量子化待ちデータに対応するデータビット幅、または、同一の量子化待ち層の中の量子化待ちデータの異なる反復中の対応するデータビット幅は、本発明上述した実施例中の方式によって自己適応調整できる。
【０１６４】
量子化待ちデータのデータビット幅を自己適応調整できなく、所定のデータビット幅である場合、量子化待ちデータの現在反復中の所定のデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。目標反復間隔内の各反復中では、自身の所定の値を使用できない。
【０１６５】
量子化待ちデータのデータビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。データビット幅を自己適応調整できる場合、データビット幅に対して一回の調整または複数回の調整を実行できる。量子化待ちデータの現在反復中で自己適応調整を実行した後のデータビット幅を、目標反復間隔内の各反復中の対応するデータビット幅として、目標反復間隔内の各反復中でこれ以上データビット幅を自己適応調整（更新）しない。量子化待ちデータは、現在反復中で自己適応調整後のデータビット幅を使用してもよいし、自己適応調整前のデータビット幅を使用してもよく、本発明は、これに対して限定しない。
【０１６６】
目標反復間隔以外の他の反復中では、量子化待ちデータのデータ変動幅が所定の条件を満たさないため、本発明の上述した方法によってデータビット幅を自己適応調整して、現在反復にもっと符合される量子化待ちデータのデータビット幅を得てもよいし、本発明中の目標反復間隔の計算方法を使用して新たな目標反復間隔を計算して得て使用してもよいし、このようにして、目標反復間隔以外の反復の量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０１６７】
目標反復間隔内の各反復中のデータビット幅が同一であると、各反復中では同一のデータビット幅に基づいて計算して別々に対応する量子化パラメータを得ることができる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量中の少なくとも一つを含んでもよい。目標反復間隔内の各反復中で、同一のデータビット幅に基づいて計算して量子化パラメータをそれぞれ得ることができる。量子化パラメータが、ポイント位置（第１タイプのポイント位置および第２タイプのポイント位置を含む）、スケーリング係数（第１タイプのスケーリング係数および第２タイプのスケーリング係数を含む）、および、オフセット量を含む場合、目標反復間隔内の各反復中で、同一のデータビット幅を利用して、それぞれに対応するポイント位置、スケーリング係数、および、オフセット量をそれぞれ計算できる。
【０１６８】
現在反復中のデータビット幅に基づいて目標反復間隔内の各反復中のデータビット幅を決定する同時に、現在反復中の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。目標反復間隔内の各反復中の量子化パラメータも、これ以上再度同一のデータビット幅に基づいて計算して得なく、ニューラルネットワークの演算効率をさらに向上させることができる。現在反復中のすべての量子化パラメータまたは一部の量子化パラメータに基づいて、目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。現在反復中の一部の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定する場合、残りの部分の量子化パラメータは、目標反復間隔内の各反復中で依然として計算する必要がある。
【０１６９】
例えば、量子化パラメータは、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を含む。現在反復中のデータビット幅および第２タイプのポイント位置に基づいて、目標反復間隔内の各反復中のデータビット幅および第２タイプのポイント位置を決定できる。すると、目標反復間隔内の各反復中の第２タイプのスケーリング係数およびオフセット量は、同一のデータビット幅に基づいて計算して得る必要がある。さらに、現在反復中のデータビット幅、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量に基づいて、目標反復間隔内の各反復中のデータビット幅、第２タイプのポイント位置、第２タイプのスケーリング係数、および、オフセット量を決定でき、すると、目標反復間隔内の各反復中の各量子化パラメータはいずれも計算して得る必要がない。
【０１７０】
本実施例において、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定することによって、ニューラルネットワークが量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにする。目標反復間隔内の各反復中のデータビット幅は、現在反復中のデータビット幅に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のデータビット幅を利用して量子化パラメータを計算して得ることによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のデータビット幅を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
【０１７１】
可能な一実現形態において、制御モジュールは、第２の目標反復間隔適用サブモジュールをさらに備えてもよい。第２の目標反復間隔適用サブモジュールは、前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定し、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
【０１７２】
ここで、前記量子化待ちデータの前記現在反復中の対応する第１タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第１タイプのポイント位置を決定する。前記量子化待ちデータの前記現在反復中の対応する第２タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第２タイプのポイント位置を決定する。
【０１７３】
量子化パラメータの中で、スケーリング係数およびオフセット量と比較すると、異なるポイント位置が同一の量子化待ちデータの量子化結果に対して発生する影響がより大きい。量子化待ちデータの現在反復中の対応するポイント位置に基づいて、目標反復間隔内の反復中の対応するポイント位置を決定できる。データビット幅を自己適応調整できない場合、量子化待ちデータの現在反復中の所定のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよく、量子化待ちデータの現在反復中で所定のデータビット幅に基づいて計算して得たポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。データビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中で調整した後のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。
【０１７４】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するスケーリング係数に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するスケーリング係数を決定してもよいし、および／または、量子化待ちデータの現在反復中の対応するオフセット量に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するオフセット量を決定してもよい。
【０１７５】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定してもよく、ここで、量子化待ちデータの現在反復中の対応するデータビット幅は、現在反復中の所定のデータビット幅または自己適応調整後のデータビット幅であってもよい。
【０１７６】
本実施例において、量子化待ちデータの現在反復中の対応するポイント位置に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するポイント位置を決定する。目標反復間隔内の各反復中のポイント位置は、現在反復中のポイント位置に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のポイント位置を利用することによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のポイント位置を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
【０１７７】
可能な一実現形態において、前記第１のデータ変動幅決定サブモジュールは、移動平均値計算サブモジュールと第１のデータ変動幅決定サブモジュールと、を備えてもよい。前記目標反復間隔決定サブモジュールは、第１の目標反復間隔決定サブモジュールを備えてもよい。
【０１７８】
移動平均値計算サブモジュールは、量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算し、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０１７９】
第１のデータ変動幅決定サブモジュールは、前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得、
【０１８０】
第１目標反復間隔決定サブモジュールは、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。
【０１８１】
ここで、量子化待ちデータの現在反復中の第１タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第１タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第１タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第１タイプのポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中の第１タイプのポイント位置の第２の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。あるいは、量子化待ちデータの現在反復中の第２タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第２タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第２タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第２タイプのポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中の第２タイプのポイント位置の第２の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。
【０１８２】
可能な一実現形態において、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、計算目標反復間隔の履歴反復であり得る。現在反復と、対応する目標反復間隔との間の対応関係は、以下のケースを含んでもよい。
【０１８３】
現在反復から目標反復間隔をカウントし始めて、現在反復に対応する目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復は、１００番目の反復、１０１番目の反復、および、１０２番目の反復を含み、１０３番目の反復中で１０３番目の反復に対応する目標反復間隔を計算して、１０３番目の反復を、新たに計算して得た現在目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０３番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１８４】
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔内の最後の一つの反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復が、１０１番目の反復、１０２番目の反復、および、１０３番目の反復を含み、１０３番目の反復中で１０３番目の反復に対応する目標反復間隔を計算して、１０４番目の反復を、新たに計算して得た当目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０３番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１８５】
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が１００番目の反復中であり、目標反復間隔が３であり、目標反復間隔内の反復が、１０１番目の反復、１０２番目の反復、および、１０３番目の反復を含み、１０４番目の反復中で１０４番目の反復に対応する目標反復間隔を計算し、１０５番目の反復を、新たに計算して得た目標反復間隔内の１番目の反復とすることができる。この場合、現在反復が１０４番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、１００番目の反復である。
【０１８６】
要件に応じて現在反復と目標反復間隔との間の他の対応関係を決定でき、例えば現在反復中の後のＮ番目の反復から目標反復間隔をカウントし始めることができ、Ｎは１よりも大きく、本発明は、これに対して限定しない。
【０１８７】
計算して得た量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値は、包括量子化待ちデータの現在反復中のポイント位置の第１移動平均値、および、量子化待ちデータの一つ前の反復間隔に対応する反復中のポイント位置の第２移動平均値を含むことを理解できる。式（２７）を利用して現在反復中の対応するポイント位置の第１移動平均値m(t)を計算できる。
2022501676.tif 000032
【０１８８】
ここで、ｔは、現在反復であり、ｔ−１は、一つ前の反復間隔に基づいて決定した履歴反復であり、m(t-1)は、一つ前の反復間隔に基づいて決定した履歴反復中の第２の移動平均値である。s(t)は、現在反復中のポイント位置であり、第１タイプのポイント位置または第２タイプのポイント位置であり得る。αは、第１のパラメータであり、第１パラメータは、ハイパーパラメータであり得る。
【０１８９】
本実施例において、量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算し、量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得る。第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第１のデータ変動幅はポイント位置の変化傾向の推し量りに用いることができるため、目標反復間隔が量子化待ちデータポイント位置の変化傾向に基づいて変化されるようにすることができ、さらに、計算して得た各目標反復間隔の大きさが量子化待ちデータのポイント位置の変化傾向に基づいて変化されるようにすることができる。量子化パラメータが目標反復間隔に基づいて決定されるため、量子化パラメータに基づいて量子化を実行して得られた量子化データは、量子化待ちデータのポイント位置の変動傾向にもっと符合されるようにすることができ、量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０１９０】
可能な一実現形態において、前記第１のデータ変動幅決定サブモジュールは、第１の幅度決定サブモジュールを備えてもよい。第１の幅度決定サブモジュールは、前記第１の移動平均値と前記第２の移動平均値との差分値を計算し、前記差分値の絶対値を第１データ変動幅として決定する。
式（２８）を利用して第１のデータ変動幅diffupdate1を計算できる。
2022501676.tif 000033
【０１９１】
第１のデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定できることによって、ニューラルネットワークが目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。式（２９）に基づいて目標反復間隔Ｉを計算して得ることができる
2022501676.tif 000034
ここで、βは、第２のパラメータであり、γは、第３のパラメータである。第２のパラメータおよび第３のパラメータは、ハイパーパラメータであり得る。
【０１９２】
第１のデータ変動幅はポイント位置の変化傾向の推し量に用いることができ、第１のデータ変動幅が大きいほど、量子化データの数値範囲変化が激烈になることを意味し、量子化パラメータを更新するときに間隔がもっと短い目標反復間隔Ｉが必要であることを理解できる。
【０１９３】
本実施例において、前記第１の移動平均値と前記第２の移動平均値との差分値を計算し、差分値の絶対値を第１のデータ変動幅として決定する。移動平均値間の差分値に基づいて精確な第１のデータ変動幅を得ることができる。
【０１９４】
可能な一実現形態において、制御モジュールは、第２のデータ変動幅決定サブモジュールをさらに備えてもよく、目標反復間隔決定サブモジュールは、第２の目標反復間隔決定サブモジュールを備えてもよい。
【０１９５】
第２のデータ変動幅決定サブモジュールは、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得る。
【０１９６】
前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするための第２の目標反復間隔決定サブモジュールを備える。
【０１９７】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得ることができる。さらに、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する逆量子化データに基づいて第２のデータ変動幅を得ることができる。
【０１９８】
同様に、式（３０）に基づいて、現在反復中の、前記量子化待ちデータと前記量子化待ちデータに対応する逆量子化データとの間の第２のデータ変動幅diffbitを計算して得ることができる。さらに、他の誤差の計算方法を利用して、量子化待ちデータと逆量子化データとの間の第２のデータ変動幅diffbitを計算できる。本発明は、これに対して限定しない。
2022501676.tif 000035
【０１９９】
ここで、ziは、量子化待ちデータであり、zi(n)は、量子化待ちデータに対応する逆量子化データである。第２のデータ変動幅は、量子化待ちデータに対応するデータビット幅の変化傾向の推し量りに用いることができ、第２のデータ変動幅が大きいほど、量子化待ちデータに対して対応するデータビット幅を更新する必要がある可能性が高く、間隔がもっと短い反復を更新する必要があり、すると、第２のデータ変動幅が大きいほど、もっと小さい目標反復間隔が必要であることを理解できる。
【０２００】
本実施例において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得る。前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第２のデータ変動幅は、データビット幅の変動要件の推し量りに用いることができ、すると、第１のデータ変動幅および第２のデータ変動幅に基づいて計算して得た目標反復間隔は、ポイント位置およびデータビット幅の変動を同時に追跡でき、目標反復間隔も量子化待ちデータ自身のデータ量子化要件にもっと符合されることができる。
【０２０１】
可能な一実現形態において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２データ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含んでもよい。
式（３１）を利用して第２のデータ変動幅diffupdate2を計算して得ることができる。
2022501676.tif 000036
ここで、δは、第４のパラメータであり、第４のパラメータは、ハイパーパラメータであり得る。
【０２０２】
異なるデータビット幅を利用して異なる量子化パラメータを得ることができ、さらに、異なる量子化データを得、異なる第２のデータ変動幅が発生されることを理解できる。第２のデータ変動幅は、データビット幅の変化傾向の推し量りに用いることができ、第２のデータ変動幅が大きいほど、もっと短い目標反復間隔でデータビット幅をもっと頻繁に更新する必要があることを意味し、すなわち、もっと小さい目標反復間隔を必要とする。
可能な一実現形態において、前記第２の目標反復間隔決定サブモジュールは、間隔決定サブモジュールを備えてもよい。
【０２０３】
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
式（３２）に基づいて目標反復間隔を計算して得ることができる
2022501676.tif 000037
ここで、βは、第２のパラメータであり、γは、第３のパラメータである。第２のパラメータおよび第３のパラメータは、ハイパーパラメータであり得る。
【０２０４】
第１のデータ変動幅および第２のデータ変動幅を利用して得られた目標反復間隔は、データビット幅およびポイント位置の変化傾向を同時推し量ることができ、両者中の一つの変化傾向がより大きければ、目標反復間隔に該当する変化が発生されるようにすることができることを理解できる。目標反復間隔は、データビット幅およびポイント位置の変化を同時に追踪し、該当する調整を実行できる。目標反復間隔に基づいて更新された量子化パラメータが目標データの変動傾向にもっと符合されるようにすることができ、最終に、量子化パラメータに基づいて得られた量子化データが量子化要件にもっと符合されるようにすることができる。
【０２０５】
可能な一実現形態において、前記第１のデータ変動幅決定サブモジュールは、第２のデータ変動幅決定サブモジュールを備えてもよい。第２のデータ変動幅決定サブモジュールは、現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記更新周期は、少なくとも一つの反復を含む。
【０２０６】
ニューラルネットワーク演算のトレーニング過程、および／または、微調整過程において、トレーニングが開始されるかまたは微調整が開始される複数の反復中で、量子化待ちデータの変動幅がより大きい。トレーニングが開始されるかまたは微調整が開始される複数の反復中で目標反復間隔を計算すると、計算して得た目標反復間隔は、その有用性を失う可能性がある。所定の更新周期に基づいて、更新周期以内の各反復中で、目標反復間隔を計算しないし、目標反復間隔も適用しないし、複数の反復中で同一のデータビット幅またはポイント位置を使用するようにすることができる。
【０２０７】
反復を更新周期以外まで実行したとき、すなわち、現在反復が更新周期以外に位置するとき、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。例えば、所定の更新周期が１００番目の反復であると、１番目の反復から１００番目までの反復の反復中では、目標反復間隔を計算しない。反復を１０１番目の反復まで実行すると、すなわち、現在反復が１０１番目の反復であると、現在反復が更新周期以外に位置され、この場合、１０１番目の反復および１番目の反復から１００番目の反復の反復中の量子化待ちデータのデータ変動幅に基づいて、１０１番目の反復中の量子化待ちデータに対応する目標反復間隔を決定し、１０１番目の反復または１０１番目の反復と所定の反復の数を隔てている反復中で、計算して得た目標反復間隔を使用できる。
【０２０８】
所定の反復の数から更新周期をカウントし始めることができ、例えば、自１番目の反復から更新周期中の複数の反復をカウントし始めることもできるし、Ｎ番目の反復から更新周期中の複数の反復をカウントし始めることもでき、本発明は、これに対して限定しない。
【０２０９】
本実施例において、反復を更新周期以外まで実行したときに、目標反復間隔を計算して使用する。ニューラルネットワーク演算のトレーニング過程または微調整過程の初期段階で、量子化待ちデータの変動幅がより大きいことによって発生する目標反復間隔の有用性が大きくない問題を回避でき、目標反復間隔を使用する場合には、ニューラルネットワークの稼働効率をさらに向上させることができる。
【０２１０】
可能な一実現形態において、制御モジュールは、周期間隔決定サブモジュールと、第１の周期間隔適用サブモジュールと、第２の周期間隔適用サブモジュールと、さらに備えてもよい。
【０２１１】
周期間隔決定サブモジュールは、現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定し、
【０２１２】
第１の周期間隔適用サブモジュールは、前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定し、または
【０２１３】
第２の周期間隔適用サブモジュールは、前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定する。
【０２１４】
ニューラルネットワーク演算のトレーニング過程または微調整過程は、複数の周期を含んでもよい。各周期は、複数の反復を含んでもよい。ニューラルネットワーク演算に用いられるデータが完全に一回演算されるのが、一つの周期である。トレーニング過程において、反復の実行につれて、ニューラルネットワークの重み値の変化は安定される傾向があり、トレーニングが安定された後、ニューロン、重み値、バイアス、勾配などの量子化待ちデータはいずれも安定される傾向がある。量子化待ちデータが安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。同様に、微調整過程において、微調整は安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。
【０２１５】
このため、トレーニングが安定される周期または微調整が安定される周期に基づいて所定の周期を決定できる。トレーニングが安定された周期または微調整が安定された周期以後の周期を、所定の周期として決定できる。例えば、トレーニングが安定された周期がＭ番目の周期であると、Ｍ番目の周期以後の周期を所定の周期とすることができる。所定の周期内で、一つの周期を隔てて一つの目標反復間隔を計算し、計算して得た目標反復間隔に基づいてデータビット幅または量子化パラメータを一回調整することによって、データビット幅または量子化パラメータの更新回数を減少し、ニューラルネットワークの稼働効率を向上させることができる。
【０２１６】
例えば、所定の周期は、Ｍ番目の周期以後の周期である。Ｍ＋１番目の周期において、Ｍ番目の周期中のＰ番目の反復に基づいて計算して得た目標反復間隔は、Ｍ＋１番目の周期中のＱ番目の反復までに終了する。Ｍ＋１番目の周期中のＱｍ＋１番目の反復に基づいて自分に対応する目標反復間隔Ｉｍ＋１を計算して得る。Ｍ＋２番目の周期において、Ｍ＋１番目の周期中のＱｍ＋１番目の反復に対応する反復は、Ｑｍ＋２番目の反復である。Ｍ＋１番目の周期中のＱｍ＋１番目の反復からＭ＋２番目の周期中のＱｍ＋２＋Ｉｍ＋１番目の反復までが、周期間隔である。周期間隔内の各反復中で、いずれも、Ｍ＋１番目の周期中のＱｍ＋１番目の反復中で決定したデータビット幅またはポイント位置などの量子化パラメータを使用する。
【０２１７】
本実施例において、周期間隔を設定でき、ニューラルネットワーク演算のトレーニングまたは微調整が安定された後、周期間隔に基づいて、周期ごとにデータビット幅またはポイント位置などの量子化パラメータを一回更新する。周期間隔は、トレーニングが安定されたかまたは微調整が安定された後、データビット幅またはポイント位置の更新回数を減少し、量子化精度を保証する同時に、ニューラルネットワークの稼働効率を向上させることができる。
【０２１８】
上述した装置の実施例は、ただ模式的なものであり、本発明の装置は、さらに他の方式によって実現されてもよいことを理解すべきである。例えば、上述した実施例中の前記ユニット／モジュールの分割は、ただ論理的機能分割であり、実際に実現において他の分割方式があり得る。例えば、複数のユニット、モジュール、または、アセンブリは、組み合わせてもよいし、もう一つのシステムに統合されてもよく、あるいは、幾つかの特徴は、省略されてもよいし、実行されなくてもよい。
【０２１９】
また、特に説明しない限り、本発明の各実施例中の各機能ユニット／モジュールは、一つのユニット／モジュール中に統合されてもよいし、各ユニット／モジュールが単独的に物理的に存在してもよいし、二つ以上ユニット／モジュールが一つに統合されてもよい。上述した統合されたユニット／モジュールは、ハードウェアの形式を利用して実現されてもよいし、ソフトウェアプログラムモジュールの形式を利用して実現されてもよい。
【０２２０】
前記統合されたユニット／モジュールがハードウェアの形式で実現される場合、当該ハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構成の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えばＣＰＵ、ＧＰＵ、ＦＰＧＡ、ＤＳＰ、ＡＳＩＣなどの、いかなる適当なハードウェアプロセッサであり得る。特に説明しない限り、前記記憶ユニットは、例えば、抵抗メモリＲＲＡＭ（Ｒｅｓｉｓｔｉｖｅ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、動的ランダムアクセスメモリＤＲＡＭ（Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、静的ランダムアクセスメモリＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ−Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、拡張動的ランダムアクセスメモリＥＤＲＡＭ（Ｅｎｈａｎｃｅｄ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、 高帯域幅メモリＨＢＭ（Ｈｉｇｈ−Ｂａｎｄｗｉｄｔｈ Ｍｅｍｏｒｙ）、ハイブリッドメモリキューブＨＭＣ（Ｈｙｂｒｉｄ Ｍｅｍｏｒｙ Ｃｕｂｅ）などの、いかなる適当な磁気記憶媒体あるいは光磁気記憶媒体であり得る。
【０２２１】
前記統合されたユニット／モジュールは、ソフトウェアプログラムモジュールの形式で実現され、独立的にした製品として販売または使用される場合、一つのコンピュータ可読取メモリに記憶されてもよい。このような理解に基づいて、本発明の技術案は、本質上、あるいは、先行技術に寄与する部分、あるいは、当該技術案のすべてのまたは一部は、ソフトウェア製品の形式で体現されてもよく、当該コンピュータソフトウェア製品は一つのメモリに記憶され、一つのコンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る）に本発明の各実施例に記載の方法のすべてのまたは一部のステップを実行させるためのいくつかの命令を含む。前述したメモリは、Ｕディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎlｙ Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、モバイルハードディスク、磁気ディスク、光ディスクなどの、いろんなプログラムコードを記憶できる媒体を含む。
【０２２２】
図４は、本発明の一実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。図４に示すように、当該方法はニューラルネットワーク量子化装置に適用され、前記ニューラルネットワーク量子化装置は、制御モジュールと、処理モジュールと、を備え、前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、前記方法は、ステップＳ１１とステップＳ１２と含む。
【０２２３】
ステップＳ１１において、前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データは、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータは、ポイント位置を含む。
ステップＳ１２において、前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得、ここで、ステップＳ１２は、
【０２２４】
前記メイン演算サブモジュールを利用し、第１のデータを前記スレーブ演算サブモジュールまでに送信するステップと、前記第１のデータは、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１のタイプのデータを含み、
前記スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得るステップと、
【０２２５】
前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップと、を含む。
【０２２６】
可能な一実現形態において、前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータが、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１のデータは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む。
可能な一実現形態において、前記処理モジュールは、データ変換サブモジュールをさらに備え、前記方法は、
【０２２７】
前記データ変換サブモジュールを利用し、変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るステップをさらに含み、前記変換後のデータのフォーマットタイプは、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータは、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータは、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータ中の第１部分を含み、
【０２２８】
ここで、前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップは、
【０２２９】
前記メイン演算サブモジュールを利用し、前記中間結果に対して、前記量子化結果の中の前記第１のデータ以外のデータおよび前記変換後のデータの中の前記第１のデータ以外のデータ演算を実行し、演算結果を得るステップを含む。
可能な一実現形態において、前記方法は、
【０２３０】
前記データ変換サブモジュールを利用し、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得るステップをさらに含む。
【０２３１】
可能な一実現形態において、前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。
可能な一実現形態において、前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定する方式は、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
【０２３２】
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を含む。
可能な一実現形態において、前記処理モジュールは、第２の演算サブモジュールをさらに備え、前記方法は、
【０２３３】
前記第２の演算サブモジュールを利用し、前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行するステップをさらに含む。
可能な一実現形態において、前記方法は、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップをさらに含む。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０２３４】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るステップを含む。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０２３５】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【０２３６】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るステップと、を含む。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０２３７】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るステップを含む。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０２３８】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【０２３９】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む。
可能な一実現形態において、前記方法は、
【０２４０】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
【０２４１】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
【０２４２】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るステップと、をさらに含む。
【０２４３】
可能な一実現形態において、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
可能な一実現形態において、前記方法は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０２４４】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
【０２４５】
可能な一実現形態において、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
【０２４６】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
可能な一実現形態において、前記方法は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０２４７】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む。
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るステップと、
【０２４８】
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップをさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む。
可能な一実現形態において、前記方法は、
【０２４９】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む。
可能な一実現形態において、前記方法は、
【０２５０】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０２５１】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０２５２】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
【０２５３】
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０２５４】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含む。
可能な一実現形態において、前記方法は、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含み、
【０２５５】
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０２５６】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
【０２５７】
可能な一実現形態において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含む。
【０２５８】
可能な一実現形態において、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０２５９】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップを含み、前記更新周期は、少なくとも一つの反復を含む。
可能な一実現形態において、前記方法は、
【０２６０】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
【０２６１】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
【０２６２】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む。
【０２６３】
本発明の実施例によって提供されるニューラルネットワーク量子化方法、対応する量子化パラメータを利用して目標データの中の複数の量子化待ちデータに対してそれぞれ量子化を実行し、第１の演算サブモジュールを利用して量子化結果に関連する演算を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを稼働させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
【０２６４】
前述の各方法の実施例において、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明が説明された動作の順序に限定されないし、なぜなら、本発明によるといくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきであることを説明する必要がある。次に、当業者は、明細書に説明された実施例が、いずれもオプションとする実施例に属し、関わる動作およびモジュールが必ずとして本発明にとって必須なものではないことも理解すべきである。
【０２６５】
図４のフローチャートでの各ステップは矢印に基づいて順に示したが、これらステップは必ずとして矢印が示す順序に基づいて順に実行する必要がないことをさらに説明する必要がある。本明細書に明確な説明がない限り、これらステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に基づいて実行してもよい。さらに、図４での少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
【０２６６】
本発明の実施例は、コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体をさらに提供し、コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワークのデータ量子化処理方法が実現される。
可能な一実現形態において、をさらに人工知能チップを開示し、前記人工知能チップは、上述したデータ処理装置を備える。
【０２６７】
可能な一実現形態において、ボードカードをさらに開示し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、前記記憶部品は、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、前記制御部品は、前記人工知能チップの状態を監視制御する
ことを特徴とするボードカード。
【０２６８】
図５本発明の実施例に係るボードカードを示す構成ブロック図である。図５を参照すると、上述したボードカードは、上述したチップ３８９に加えて、他のサポート部件をさらに備えてもよく、当該サポート部件は、記憶部品３９０と、インターフェース装置３９１と、制御部品３９２と、を含むが、これらに限定されなく、
【０２６９】
前記記憶部品３９０は、前記人工知能チップにバスを介して接続され、データを記憶する。前記記憶部品は、複数グループの記憶ユニット３９３を含んでもよい。各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続される。各グループの前記記憶ユニットは、ＤＤＲ ＳＤＲＡＭ（英語：Ｄｏｕｂlｅ Ｄａｔａ Ｒａｔｅ ＳＤＲＡＭ、ダブルレート同期ダイナミックランダムアクセスメモリ）であってもよいことを理解できる。
【０２７０】
上述したプロセッサ１００の中の記憶ユニット１０２は、１グループまたは複数グループの記憶ユニット３９３を含んでもよい。記憶ユニット１０２が１グループの記憶ユニット３９３を含む場合、複数の処理ユニット１０１は、データを記憶するために記憶ユニット３９３を共有する。記憶ユニット１０２が複数グループの記憶ユニット３９３を含む場合、各処理ユニット１０１に対して専用の１グループの記憶ユニット３９３を配置し、複数の処理ユニット１０１の中の一部または全部に対して共有の１グループの記憶ユニット３９３を配置してもよい。
【０２７１】
ＤＤＲは、クロック周波数を上げずにＳＤＲＡＭの速度を２倍にすることができる。ＤＤＲは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。ＤＤＲの速度は、標準ＳＤＲＡＭの２倍である。一つの実施例において、前記記憶装置は、４グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のＤＤＲ４粒子（チップ）を備えてもよい。一つの実施例において、前記人工知恵チップの内部は、４個の７２ビットＤＤＲ４コントローラを備えてもよく、上記の７２ビットＤＤＲ４コントローラの中の６４ｂｉｔは、データ伝送に使用され、８ｂｉｔは、ＥＣＣ検証に使用される。各グループの前記記憶ユニットでＤＤＲ４-３２００粒子を使用する場合、データ伝送する理論上の帯域幅が２５６００ＭＢ／ｓに達することを理解できる。
【０２７２】
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。ＤＤＲは、一つのクロックサイクルでデータを２回伝送することができる。前記チップの中にＤＤＲを制御ためのコントローラを配置して、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
【０２７３】
前記インターフェース装置は、前記人工知恵チップと電気的に接続される。前記インターフェース装置は、前記人工知恵チップと外部デバイス（例えば、サーバまたはコンピュータ）との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準ＰＣＩＥインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準ＰＣＩＥインターフェースを介して前記チップに伝送されて、データ移送が実現される。好ましくは、ＰＣＩＥ ３.０ Ｘ １６インターフェースを使用して伝送する場合、理論上の帯域幅が１６０００ＭＢ／ｓに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが中継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記人工知恵チップの計算結果は、依然としてとして、前記インターフェース装置によって外部デバイス（例えば、サーバ）に伝送し返す。
【０２７４】
前記制御デバイスは、前記人工知恵チップに電気的に接続される。前記制御デバイスは、前記人工知恵チップの状態を監視制御するために使用される。具体的に、前記人工知恵チップは、前記制御デバイスとＳＰＩインターフェースを介して電気的に接続されてもよい。前記制御デバイスは、シングルチップマイクロコンピュータ（Ｍｉｃｒｏ Ｃｏｎｔｒｏｌｌｅｒ Ｕｎｉｔ、ＭＣＵ）を含んでもよい。前記人工知恵チップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。このため、前記人工知能チップは、複数の多負荷および軽負荷などの異なる工作状態になることができる。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理、および／または、複数の処理回路の工作状態に対する調整制御を実現できる。
【０２７５】
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記の人工知能チップを備える。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、Ｗｅｂカメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び／又は、医療機器を含む。前記交通ツールは、飛行機、船、及び／又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Ｂ超音波装置、及び／又は、心電計を含む。
【０２７６】
上述した実施例において、各実施例に対する説明はそれぞれ重点を置き、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が発生されない限り、いずれも本明細書に記載の範囲であると見なされるべきである。
以下の条項によって前述した内容をよりよく理解できる。
【０２７７】
条項Ａ.ニューラルネットワーク量子化装置であって、前記ニューラルネットワーク量子化装置は、制御モジュールと、処理モジュールと、を備え、そのうち前記処理モジュールは、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
【０２７８】
前記制御モジュールは、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含み、
前記第１の演算サブモジュールは、前記量子化結果に関連する演算を実行して、演算結果を得、
【０２７９】
ここで、前記メイン演算サブモジュールが、第１のデータを前記スレーブ演算サブモジュールまでに送信し、前記第１のデータが、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールが、受信した前記第１のデータに対して乗算演算を実行して、中間結果を得、
前記メイン演算サブモジュールが、さらに、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る。
【０２８０】
条項Ａ２.条項Ａ１に記載の装置であって、前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータが、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１のデータは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む。
条項Ａ３.条項Ａ１に記載の装置であって、前記処理モジュールは、
【０２８１】
変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るためのデータ変換サブモジュールをさらに備え、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータ中の第１部分をさらに含み、
【０２８２】
前記メイン演算サブモジュールが、さらに、前記中間結果、前記量子化結果の中の前記第１のデータ以外のデータ、および、前記変換後のデータの中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る。
条項Ａ４.条項Ａ３に記載の装置であって、
【０２８３】
前記データ変換サブモジュールは、さらに、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得る。
【０２８４】
条項Ａ５.条項Ａ１から条項Ａ４のいずれか１項に記載の装置であって、前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。
条項Ａ６.条項Ａ５に記載の装置であって、前記制御モジュールは、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
対応する量子化待ち層の目標データに対応する一つまたは複数のチャネル中のデータを、一つの量子化待ちデータとして決定する方式と、
対応する量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
【０２８５】
対応する量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を使用して複数の量子化待ちデータを決定する。
条項Ａ７.条項Ａ１に記載の装置であって、前記処理モジュールは、
前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行するための第２の演算サブモジュールをさらに備える。
条項Ａ８.条項１または条項Ａ２に記載の装置であって、前記制御モジュールは、
【０２８６】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るためのパラメータ決定サブモジュールをさらに備える。
条項Ａ９.条項Ａ８に記載の装置であって、前記パラメータ決定サブモジュールは、
【０２８７】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るための第１のポイント位置決定サブモジュールを備える。
条項Ａ１０.条項Ａ８に記載の装置であって、前記パラメータ決定サブモジュールは、
【０２８８】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第１の最大値決定サブモジュールと、
【０２８９】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える。
条項Ａ１１.条項Ａ８に記載の装置であって、前記パラメータ決定サブモジュールは、
【０２９０】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るための第２のポイント位置決定サブモジュールを備える。
条項Ａ１２.条項Ａ８に記載の装置であって、前記パラメータ決定サブモジュールは、
【０２９１】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第２の最大値決定サブモジュールと、
【０２９２】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備える。
条項Ａ１３.条項Ａ８に記載の装置であって、前記パラメータ決定サブモジュールは、
【０２９３】
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える。
条項Ａ１４.条項Ａ１から条項Ａ１３中のいずれか１項に記載の装置であって、前記制御モジュールは、
【０２９４】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定サブモジュールと、
【０２９５】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定サブモジュールと、
【０２９６】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得るための調整量子化パラメータ決定サブモジュールと、をさらに備える。
条項Ａ１５.条項Ａ１４に記載の装置であって、前記調整ビット幅決定サブモジュールは、
【０２９７】
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備える。
条項Ａ１６.条項Ａ１４または条項Ａ１５に記載の装置であって、前記制御モジュールは、
【０２９８】
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差サブモジュールと、
【０２９９】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備える。
条項Ａ１７.条項Ａ１４または条項Ａ１５に記載の装置であって、前記調整ビット幅決定サブモジュールは、
【０３００】
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備える。
条項Ａ１８.条項Ａ１７に記載の装置であって、前記制御モジュールは、
【０３０１】
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差サブモジュールと、
【０３０２】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定サブモジュールと、をさらに備える。
【０３０３】
条項Ａ１９.条項Ａ１から条項Ａ１８中のいずれか１項に記載の装置であって、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記制御モジュールは、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するための第１のデータ変動幅決定サブモジュールと、
【０３０４】
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定サブモジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む。
条項Ａ２０.条項Ａ１９に記載の装置であって、前記制御モジュールは、
【０３０５】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、するための第１目標反復間隔適用サブモジュールをさらに備える。
条項Ａ２１.条項Ａ２０に記載の装置であって、前記制御モジュールは、
【０３０６】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第２目標反復間隔適用サブモジュールをさらに備え、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
条項Ａ２２.条項Ａ１９に記載の装置であって、前記第１のデータ変動幅決定サブモジュールは、
【０３０７】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０３０８】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定サブモジュールは、
【０３０９】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第１の目標反復間隔決定サブモジュールを備える。
条項Ａ２３.条項Ａ２２に記載の装置であって、前記第１のデータ変動幅決定サブモジュールは、
【０３１０】
前記第１の移動平均値と前記第２の移動平均値との差分値を計算し、前記差分値の絶対値を第１のデータ変動幅として決定するための第１の幅度決定サブモジュールと、を備える。
条項Ａ２４.条項Ａ２３に記載の装置であって、前記制御モジュールは、
【０３１１】
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るための第２のデータ変動幅決定サブモジュールをさらに備え、
ここで、目標反復間隔決定サブモジュールは、
【０３１２】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第２の目標反復間隔決定サブモジュールを備える。
条項Ａ２５.条項Ａ２４に記載の装置であって、前記第２のデータ変動幅決定サブモジュールは、
【０３１３】
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算し、前記誤差の２乗を前記第２のデータ変動幅として決定するための第２の幅度決定サブモジュールを備える。
条項Ａ２６.条項Ａ２４に記載の装置であって、前記第２の目標反復間隔決定サブモジュールは、
【０３１４】
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
条項Ａ２７.条項Ａ１９から条項Ａ２６中のいずれか１項に記載の装置であって、前記第１のデータ変動幅決定サブモジュールは、
【０３１５】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するための第２のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む。
条項Ａ２８.条項Ａ１９から条項Ａ２７中のいずれか１項に記載の装置であって、前記制御モジュールは、
【０３１６】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定サブモジュールと、
【０３１７】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第１の周期間隔適用サブモジュール、または
【０３１８】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第２の周期間隔適用サブモジュールと、をさらに備える。
【０３１９】
条項Ａ２９. ニューラルネットワーク量子化方法であって、前記ニューラルネットワーク量子化方法は、ニューラルネットワーク量子化装置に適用され、前記ニューラルネットワーク量子化装置は、制御モジュールと、処理モジュールと、を備え、前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、前記方法は、
【０３２０】
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、前記各量子化待ちデータの量子化データは、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータは、ポイント位置を含み、
前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップと、を含み、
ここで、前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行して、演算結果を得るステップは、
【０３２１】
前記メイン演算サブモジュールを利用し、第１のデータを前記スレーブ演算サブモジュールまでに送信するステップと、前記第１のデータは、前記量子化結果中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得るステップと、
【０３２２】
前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップと、を含む。
【０３２３】
条項Ａ３０.条項Ａ２９に記載の方法であって、前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータは、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１データは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む。
条項Ａ３１.条項Ａ２９に記載の方法であって、前記処理モジュールは、データ変換サブモジュールをさらに備え、前記方法は、
【０３２４】
前記データ変換サブモジュールを利用し、変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るステップをさらに含み、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータの中の第１部分をさらに含み、
【０３２５】
ここで、前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップは、
【０３２６】
前記メイン演算サブモジュールを利用し、前記中間結果に対して、前記量子化結果の中の前記第１のデータ以外のデータおよび前記変換後のデータの中の前記第１のデータ以外のデータ演算を実行し、演算結果を得るステップを含む。
条項Ａ３２.条項Ａ３１に記載の方法であって、
【０３２７】
前記データ変換サブモジュールを利用し、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得るステップをさらに含む。
【０３２８】
条項Ａ３３.条項Ａ２９から条項Ａ３２のいずれか１項に記載の方法であって、前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。
【０３２９】
条項Ａ３４.条項Ａ３３に記載の方法であって、前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定する方式は、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
【０３３０】
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を含む。
条項Ａ３５.条項Ａ２９に記載の方法であって、前記処理モジュールは、第２の演算サブモジュールをさらに備え、前記方法は、
【０３３１】
前記第２の演算サブモジュールを利用して、前記装置中の、前記第１の演算サブモジュールによって実行される演算処理以外の演算処理を実行するステップをさらに含む。
条項Ａ３６.条項Ａ２９または条項Ａ３０に記載の方法であって、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップをさらに含む。
【０３３２】
条項Ａ３７.条項Ａ３６に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０３３３】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るステップを含む。
【０３３４】
条項Ａ３８.条項Ａ３６に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０３３５】
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【０３３６】
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１のタイプのスケーリング係数を得るステップと、を含む。
【０３３７】
条項Ａ３９.条項Ａ３６に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０３３８】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るステップを含む。
【０３３９】
条項Ａ４０.条項Ａ３６に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
【０３４０】
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
【０３４１】
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含む。
【０３４２】
条項Ａ４１.条項Ａ３６に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む。
条項Ａ４２.条項Ａ２９から条項Ａ４１のいずれか１項に記載の方法であって、
【０３４３】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
【０３４４】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整して、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
【０３４５】
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るためのステップと、をさらに含む。
【０３４６】
条項Ａ４３.条項Ａ４２に記載の方法であって、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項Ａ４４.条項Ａ４２または条項Ａ４３に記載の方法であって、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０３４７】
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
【０３４８】
条項Ａ４５.条項Ａ４２または条項Ａ４３に記載の方法であって、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整して、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
【０３４９】
前記量子化誤差が前記第１誤差閾値よりも小さい第２誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項Ａ４６.条項Ａ４５に記載の方法であって、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
【０３５０】
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む。
【０３５１】
条項Ａ４７.条項Ａ２９から条項Ａ４４のいずれか１項に記載の方法であって、前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
【０３５２】
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、するステップであって、前記目標反復間隔は、少なくとも一回の反復を含むステップと、をさらに含む。
条項Ａ４８.条項Ａ４７に記載の方法であって、
【０３５３】
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む。
条項Ａ４９.条項Ａ４８に記載の方法であって、
【０３５４】
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含む。
条項Ａ５０.条項Ａ４７に記載の方法であって、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を得るステップは、
【０３５５】
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第１タイプのポイント位置、および／または、第２タイプのポイント位置を含み、
【０３５６】
前記量子化待ちデータの現在反復中のポイント位置の第１の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第２の移動平均値に基づいて、第１のデータ変動幅を得るステップと、を含み、
【０３５７】
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０３５８】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第１のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定する、するステップを含む。
条項Ａ５１.条項Ａ５０に記載の方法であって、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
前記第１の移動平均値と前記第２の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第１のデータ変動幅として決定するステップと、を含む。
条項Ａ５２.条項Ａ５１に記載の方法であって、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップをさらに含み、
【０３５９】
ここで、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
【０３６０】
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するするステップを含む。
【０３６１】
条項Ａ５３.条項Ａ５２に記載の方法であって、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第２のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の２乗を前記第２のデータ変動幅として決定するステップと、を含む。
【０３６２】
条項Ａ５４.条項Ａ５２に記載の方法であって、前記量子化待ちデータの第１のデータ変動幅および前記第２のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第１のデータ変動幅および前記第２のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
【０３６３】
条項Ａ５５.条項Ａ４７から条項Ａ５４のいずれか１項に記載の方法であって、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
【０３６４】
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップを含み、前記更新周期は、少なくとも一つの反復を含むステップむ。
条項Ａ５６.条項Ａ４７から条項Ａ５５のいずれか１項に記載の方法であって、
【０３６５】
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
【０３６６】
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
【０３６７】
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む。
条項Ａ５７.人工知能チップであって、前記人工知能チップは、条項Ａ１から条項Ａ２８の何れか１項に記載のニューラルネットワーク量子化装置を備える。
条項Ａ５８.電子デバイスであって、前記電子デバイスは、条項Ａ５７に記載の人工知能チップを備える。
【０３６８】
条項Ａ５９.ボードカードであって、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、条項Ａ５８に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する。
条項Ａ６０.条項Ａ５９記載のボードカードであって、
【０３６９】
前記記憶部品は、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットが、前記人工知能チップにバスを介して接続され、前記記憶ユニットが、ＤＤＲ ＳＤＲＡＭであり、
前記チップは、ＤＤＲコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準ＰＣＩＥインターフェースである。
【０３７０】
条項Ａ６１.コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令がプロセッサによって実行されると、条項Ａ２９から条項Ａ５６の何れか１項に記載のニューラルネットワーク量子化方法が実現される。
【０３７１】
以上、本発明の実施例を詳細に説明し、本明細書では具体的な例を適用して本発明の原理および実施形態を説明した。以上の実施例の説明は、本発明の方法およびその本旨の理解を助けるためにのみ使用される。同時に、当業者にとって本発明の旨に依存して本発明の具体的な実施形態および適用範囲に基づいて行われた変更または修正は、いずれも本発明の保護しようとする範囲に属する。上記のように、本明細書の内容を本発明に対する制限として理解してはいけない。
【図１】
2022501676.tif 000038
【図２】
2022501676.tif 000039
【図３】
2022501676.tif 000040
【図４】
2022501676.tif 000041
【図５】
2022501676.tif 000042
【手続補正書】
【提出日】令和2年11月30日(2020.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラルネットワーク量子化装置であって、
制御モジュールと、処理モジュールと、を備え、そのうち前記処理モジュールは、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
前記制御モジュールは、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得、前記各量子化待ちデータの量子化データが、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータが、ポイント位置を含み、
前記第１の演算サブモジュールは、前記量子化結果に関連する演算を実行し、演算結果を得、
ここで、前記メイン演算サブモジュールが第１のデータを前記スレーブ演算サブモジュールまでに送信し、前記第１のデータが、前記量子化結果の中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールが、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得、
前記メイン演算サブモジュールが、さらに、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得る
ことを特徴とするニューラルネットワーク量子化装置。
【請求項２】
前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータが、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１のデータは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む
ことを特徴とする請求項１に記載のニューラルネットワーク量子化装置。
【請求項３】
前記処理モジュールは、
変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るためのデータ変換サブモジュールをさらに備え、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータの中の第１部分をさらに含み、
前記メイン演算サブモジュールが、さらに、前記中間結果、前記量子化結果の中の前記第１のデータ以外のデータ、および、前記変換後のデータの中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得、
前記データ変換サブモジュールは、さらに、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得る
ことを特徴とする請求項１に記載のニューラルネットワーク量子化装置。
【請求項４】
前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含み、
前記制御モジュールは、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を使用して複数の量子化待ちデータを決定する
ことを特徴とする請求項１から３のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項５】
前記制御モジュールは、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るためのパラメータ決定サブモジュールをさらに備える
ことを特徴とする請求項１または２に記載のニューラルネットワーク量子化装置。
【請求項６】
前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るための第１のポイント位置決定サブモジュールを備えるか、または、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第１の最大値決定サブモジュールと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備えるか、または、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るための第２のポイント位置決定サブモジュールを備えるか、または、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第２の最大値決定サブモジュールと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るための第１のスケーリング係数決定サブモジュールと、を備えるか、または、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える
ことを特徴とする請求項５に記載のニューラルネットワーク量子化装置。
【請求項７】
前記制御モジュールは、
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第１の量子化誤差決定サブモジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定サブモジュールと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得るための調整量子化パラメータ決定サブモジュールと、をさらに備える
ことを特徴とする請求項１から６中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項８】
前記調整ビット幅決定サブモジュールは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第１の調整ビット幅決定サブモジュールを備え、
前記制御モジュールは、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第１の調整後の量子化誤差サブモジュールと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第１の調整ビット幅循環決定モジュールと、をさらに備え、
前記調整ビット幅決定サブモジュールは、
前記量子化誤差が前記第１の誤差閾値よりも小さい第２の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第２の調整ビット幅決定サブモジュールを備え、
前記制御モジュールは、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第２の調整後の量子化誤差サブモジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第２の調整ビット幅循環決定サブモジュールと、をさらに備える
ことを特徴とする請求項７に記載のニューラルネットワーク量子化装置。
【請求項９】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、前記制御モジュールは、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を得るための第１のデータ変動幅決定サブモジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定サブモジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１から８中のいずれか１項に記載のニューラルネットワーク量子化装置。
【請求項１０】
ニューラルネットワーク量子化方法であって、
前記ニューラルネットワーク量子化方法は、ニューラルネットワーク量子化装置に適用され、前記ニューラルネットワーク量子化装置は、制御モジュールと、処理モジュールと、を備え、前記処理モジュールが、第１の演算サブモジュールを備え、前記第１の演算サブモジュールが、メイン演算サブモジュールと、スレーブ演算サブモジュールと、を備え、
前記ニューラルネットワーク量子化方法は、
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定し、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、前記各量子化待ちデータの量子化データは、対応する量子化パラメータを利用して量子化して得られたものであり、前記量子化パラメータは、ポイント位置を含み、
前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップと、を含み、
ここで、前記第１の演算サブモジュールを利用し、前記量子化結果に関連する演算を実行し、演算結果を得るステップは、
前記メイン演算サブモジュールを利用し、第１のデータを前記スレーブ演算サブモジュールまでに送信するステップと、前記第１のデータは、前記量子化結果中の、前記ポイント位置に基づいて量子化して得られた第１タイプのデータを含み、
前記スレーブ演算サブモジュールを利用し、受信した前記第１のデータに対して乗算演算を実行し、中間結果を得るステップと、
前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップと、を含む
ことを特徴とするニューラルネットワーク量子化方法。
【請求項１１】
前記量子化パラメータは、オフセット量および／またはスケーリング係数をさらに含み、前記量子化結果は、第２タイプのデータをさらに含み、前記第２タイプのデータは、ポイント位置を用いて表す第１部分、および、オフセット量および／またはスケーリング係数を用いて表す第２部分のデータを含み、
前記第１データは、前記量子化結果の中の第２タイプのデータの第１部分をさらに含む
ことを特徴とする請求項１０に記載のニューラルネットワーク量子化方法。
【請求項１２】
前記処理モジュールは、データ変換サブモジュールをさらに備え、
前記ニューラルネットワーク量子化方法は、
前記データ変換サブモジュールを利用し、変換待ちデータに対してフォーマット変換を実行し、変換後のデータを得るステップを含み、前記変換後のデータのフォーマットタイプが、第１タイプおよび第２タイプの中の任意のタイプを含み、ここで、前記変換待ちデータが、前記目標データの中の量子化処理を実行したことがないデータを含み、前記第１のデータが、第１タイプの変換後のデータおよび／または第２タイプの変換後のデータの中の第１部分をさらに含み、
ここで、前記メイン演算サブモジュールを利用し、前記中間結果および前記量子化結果の中の前記第１のデータ以外のデータに対して演算を実行し、演算結果を得るステップは、
前記メイン演算サブモジュールを利用し、前記中間結果に対して、前記量子化結果の中の前記第１のデータ以外のデータおよび前記変換後のデータの中の前記第１のデータ以外のデータ演算を実行し、演算結果を得るステップを含み、
ニューラルネットワーク量子化方法は、
前記データ変換サブモジュールを利用し、前記各量子化待ちデータに対応する量子化データに基づいて得られた前記目標データの変換待ち量子化結果に対してフォーマット変換を実行し、前記量子化結果を得るステップをさらに含む
ことを特徴とする請求項１０に記載のニューラルネットワーク量子化方法。
【請求項１３】
前記各量子化待ちデータは、いずれも前記目標データのサブセットであり、前記目標データは、前記ニューラルネットワークの量子化待ち層の任意の１種の量子化待ちの演算待ちデータであり、前記演算待ちデータは、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含み、
前記制御モジュールを利用し、ニューラルネットワークの目標データの中から複数の量子化待ちデータを決定する方式は、
一層または多層の量子化待ち層の中の目標データを一つの量子化待ちデータとして決定する方式と、
一層または多層の量子化待ち層の中の同一の種類の演算待ちデータを一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のチャネルの中のデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層の目標データに対応する一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定する方式と、
量子化待ち層に対応する目標データを決定された分割サイズに基づいて一つまたは複数の量子化待ちデータに分割する方式と、の中の少なくとも一つの方式を含む
ことを特徴とする請求項１０から１２のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項１４】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップをさらに含む
ことを特徴とする請求項１０または１１に記載のニューラルネットワーク量子化方法。
【請求項１５】
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第１タイプのポイント位置を得るステップを含むか、または、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第１タイプのスケーリング係数を得るステップと、を含むか、または、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第２タイプのポイント位置を得るステップを含むか、または、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第２タイプのスケーリング係数を得るステップと、を含むか、または、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む
ことを特徴とする請求項１４に記載のニューラルネットワーク量子化方法。
【請求項１６】
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得るステップと、をさらに含む
ことを特徴とする請求項１０から１５のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項１７】
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第１の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含み、
前記ニューラルネットワーク量子化方法は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第１の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第１の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含み、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が前記第１誤差閾値よりも小さい第２誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含み、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第２の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第２の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む
ことを特徴とする請求項１６に記載のニューラルネットワーク量子化方法。
【請求項１８】
前記ニューラルネットワークによって演算される微調整段階、および／または、トレーニング段階において、
前記ニューラルネットワーク量子化方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップと、をさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む
ことを特徴とする請求項１０から１７のいずれか１項に記載のニューラルネットワーク量子化方法。
【請求項１９】
人工知能チップであって、
前記人工知能チップは、請求項１から９の何れか１項に記載のニューラルネットワーク量子化装置を備える
ことを特徴とする人工知能チップ。
【請求項２０】
コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、
前記コンピュータプログラム命令がプロセッサによって実行されると、請求項１０から１８の何れか１項に記載のニューラルネットワーク量子化方法。
【国際調査報告】
2022501676.tif 000043
2022501676.tif 000044
2022501676.tif 000045
2022501676.tif 000046