以下、本発明の実施例の中の図面を参照しながら本発明の実施例の中の技術案を明確かつ完全に説明し、説明する実施例は、本発明の一部の実施例に過ぎず、全ての実施例ではないことが明らかである。当業者にとって本発明中の実施例に基づいて創造的な作業なしに得られたすべての他の実施例は、いずれも本発明の保護しようとする範囲に属する。
本発明の請求の範囲、明細書、および、図面での「第1」、「第2」などという用語は、異なる対象を区別するために使用されるものであり、特定順序を定義するために使用されないことを理解すべきである。本発明の明細書および請求の範囲で使用される「含む」および「備える」という用語は、説明する特徴、全体、ステップ、操作、要素、および/または、アセンブリの存在を表し、一つまたは複数の他の特徴、全体、ステップ、操作、要素、アセンブリ、および/または、そのセットの存在または追加を除外しない。
ここで本発明の明細書で使用される用語は、ただ、特定実施例を説明する目的に使用され、本発明を限定しようとするものではないことをさらに理解すべきである。本発明の明細書および請求の範囲で使用されるように、文脈で他の場合を明確に示されていない限り、「一」、「一つの」、および、「当該」の単数形態は、複数形態を含むことを意図する。さらに、本発明の明細書および請求の範囲で使用される「および/または」という用語は、関連してリストされた項目の中の一つまたは複数のいかなる組み合わせおよびすべての可能な組み合わせを表し、これら組み合わせを含むことをさらに理解すべきである。
本明細書および請求の範囲で使用されるように、「…場合」という用語は、文脈によって、「…とき」、「…と」、「決定されたことに応答して」、または、「検出されたことに応答して」と解釈されてもよい。同様に、「決定された場合」または「『記述された条件または事件』が検出された場合」という句は、文脈によって、「決定されると」、「決定されたことに応答して」、「『記述された条件または事件』が検出されると」、または、「『記述された条件または事件』が検出されたことに応答して」と解釈されてもよい。
ニューラルネットワーク演算の複雑度の増加につれて、データのデータ量およびデータ次元も継続的に増加しているが、従来のニューラルネットワークアルゴリズムは、一般的に、浮動小数点データフォーマットを使用してニューラルネットワーク演算を実行し、このようにすると、継続的に増加しているデータ量などは、演算装置のデータ処理効率、記憶装置の記憶容量、及びアクセス効率などに対してより大きい挑戦を提出している。上述した問題を解決するために、関連技術においては、ニューラルネットワーク演算過程に関するすべてのデータを、いずれも浮動小数点数から固定小数点数に変換するが、異なるデータ間に差異があったり、同一のデータが異なる段階で差異を有したりするで、ただ「浮動小数点数から固定小数点数に変換する」場合、往々にして精度が足りないため、演算結果に影響を及ぼすことになる。
ニューラルネットワークの中の演算待ちデータは、一般的に、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットであり、ニューラルネットワークを搭載する装置でニューラルネットワークを運行する場合、浮動小数点データフォーマットまたは精度がより高い固定点データフォーマットのいろんな演算待ちデータは、ニューラルネットワーク運行のための演算量およびアクセスのオーバーヘッドがいずれもより大きくなる。演算効率を高めるために、本発明の実施例によって提供されるニューラルネットワーク量子化方法、装置、コンピュータデバイス、及び記憶媒体は、異なるタイプの演算待ちデータに基づいてニューラルネットワーク中の演算待ちデータの部分的量子化を実行でき、量子化後のデータフォーマットは、一般的に、ビット幅がより短いし、精度がより低い固定点データフォーマットである。精度がより低い量子化後のデータを利用してニューラルネットワークの演算を実行すると、演算量およびアクセス量を低減できる。量子化後のデータフォーマットは、ビット幅がより短い固定点データフォーマットであり得る。浮動小数点データフォーマットの演算待ちデータを固定点データフォーマットの演算待ちデータに量子化することができ、さらに、精度がより高い固定点フォーマットの演算待ちデータを精度がより低い固定点フォーマットの演算待ちデータに量子化することもできる。対応する量子化パラメータを利用してデータに対して部分的量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを運行させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
量子化精度が量子化後のデータと量子化前のデータとの間の誤差の大きさであることを理解できる。量子化精度は、ニューラルネットワーク演算結果の正確度に影響を及ぼすことができる。量子化精度が高いほど、演算結果の正確率も高いが、演算量がもっと大きく、アクセスのオーバーヘッドももっと大きくなる。ビット幅がより短い量子化後のデータと比較すると、ビット幅がより長い量子化後のデータの量子化精度がもっと高く、ニューラルネットワークの演算を実行するときの正確率ももっと高い。しかしながら、ニューラルネットワークの演算を実行する場合、ビット幅がより長い量子化後のデータの演算量がもっと大きく、アクセスのオーバーヘッドもより大きくて、演算効率がより低い。同様に、同一の量子化待ちデータの場合、異なる量子化パラメータを利用して得た量子化後のデータは、異なる量子化精度を有し、異なる量子化結果を発生することになり、演算効率および演算結果の正確率にも異なる影響をもたらすことになる。ニューラルネットワークに対して量子化を実行し、演算効率と演算結果の正確率との間でバランスをとるために、演算待ちデータのデータ特徴にもっと符合される量子化後のデータビット幅および量子化パラメータを利用できる。
ニューラルネットワーク中の演算待ちデータは、重み値、ニューロン、バイアス、勾配の中の少なくとも一種を含んでもよい。演算待ちデータは、複数の要素を含むマトリックスである。従来のニューラルネットワーク量子化において、一般的に、演算待ちデータ全体を量子化した後に演算を実行する。量子化後の演算待ちデータを利用して演算を実行するときには、一般的に、量子化後の演算待ちデータ全体の中の一部のデータを利用して演算を実行する。例えば、コンボルーション層において量子化後の入力ニューロン全体を利用してコンボルーション演算を実行する場合、コンボルーションカーネルの次元およびステップ長に基づいて、量子化後の入力ニューロン全体の中からコンボルーションカーネルの次元に相当する量子化後のニューロンをそれぞれ抽出してコンボルーション演算を実行する。完全接続層(fully connected layer)において量子化後の入力ニューロン全体を利用してマトリックス乗算演算を実行する場合、量子化後の入力ニューロン全体の中からそれぞれ行ごとに量子化後のニューロンを抽出してマトリックス乘算演算を実行する。このため、従来のニューラルネットワーク量子化方法において、演算待ちデータ全体に対して量子化を実行した後に一部の量子化後のデータを利用して演算を実行し、全体の演算効率がより低い。さらに、演算待ちデータ全体を量子化した後に演算を実行するには、量子化後の演算待ちデータ全体を記憶する必要があり、占用する記憶空間がより大きい。
本発明の実施例に係るニューラルネットワーク量子化方法は、プロセッサに適用でき、当該プロセッサは、例えばCPU(Central Processing Unit、中央プロセッサ)などの汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ(IPU)であってもよい。人工知能演算は、機械学習演算、脳と類似な演算などを含んでもよい。ここで、機械学習演算は、ニューラルネットワーク演算、k-means演算、ベクトル機械サポート演算などを含む。当該人工知能プロセッサは、例えば、GPU(Graphics Processing Unit、グラフィックス処理ユニット)、NPU(Neural-Network Processing Unit、ニューラルネットワーク処理ユニット)、DSP(Digital Signal Process、デジタル信号処理ユニット)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)チップの中の一つまたは組み合わせを含む。本発明は、プロセッサの具体的な種類に対して限制しない。
可能な一実現形態において、本発明で言及されるプロセッサは、複数の処理ユニットを含んでもよく、各々の処理ユニットは、例えばコンボルーション演算タスク、プーリングタスク、完全接続タスクなどの、割り当てられたいろんなタスクを独立的に運行できる。本発明は、処理ユニットおよび処理ユニットが運行するタスクに対して限定しない。
図1は、本発明の実施例に係るニューラルネットワーク量子化方法のプロセッサを示す模式図である。図1に示すように、プロセッサ100は、複数の処理ユニット101と、記憶ユニット102と、を備え、複数の処理ユニット101は、命令シーケンスを実行し、記憶ユニット102は、データを記憶し、ランダムメモリ(RAM、Random Access Memory)およびレジスタファイルを含んでもよい。プロセッサ100の中の複数の処理ユニット101は、一部の記憶空間を共有してもよく、例えば、一部のRAM記憶空間およびレジスタファイルを共有してもよく、また、同時にそれら自身の記憶空間を有してもよい。
図2は、本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。図2に示すように、当該方法は、ニューラルネットワーク中の任意の層に適用でき、当該方法は、ステップS11からステップS13を含む。当該方法は、図1に示すプロセッサ100に適用できる。ここで、処理ユニット101は、ステップS11からステップS13を実行する。記憶ユニット102は、量子化待ちデータ、量子化パラメータ、データビット幅などの、ステップS11からステップS13の処理過程に関連するデータを記憶する。
ステップS11において、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定し、そのうち、前記各量子化待ちデータが、いずれも前記目標データのサブセットであり、前記目標データが、前記量子化待ち層の任意の1種の量子化待ちの演算待ちデータであり、前記演算待ちデータが、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。
ニューラルネットワーク中の量子化待ち層は、ニューラルネットワーク中の任意の層であり得る。要件に応じて、量子化待ち層としてニューラルネットワーク中の一部の層または全ての層を決定できる。ニューラルネットワーク中に複数の量子化待ち層が含まれている場合、各量子化待ち層は、連続されてもよいし、連続なれなくてもよい。異なるニューラルネットワークによって、量子化待ち層の種類も異なってもよく、例えば、量子化待ち層は、コンボルーション層、完全接続層(fully connected layer)などであってもよく、本発明は、量子化待ち層の数および種類に対して限定しない。
可能な一実現形態において、前記演算待ちデータは、ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含む。要件に応じて、量子化待ち層の中のニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して量子化を実行できる。目標データは、任意の1種の量子化待ちの演算待ちデータであり得る。例えば、演算待ちデータがニューロン、重み値、および、バイアスであり、ニューロンおよび重み値に対して量子化を実行する必要があると、ニューロンは目標データ1であり、重み値は目標データ2である。
量子化待ち層の中に複数種類の目標データがある場合、各種類の目標データに対して本発明の中の量子化方法を使用し、量子化を実行した後、各目標データに対応する量子化データを得てからいろんな目標データの量子化データ、および、量子化を実行する必要がない演算待ちデータを利用して量子化待ち層の演算を実行できる。
ニューラルネットワーク演算の推論段階は、トレーニングされたニューラルネットワークに対して順方向演算を実行することでタスクの設定を完成する段階を含んでもよい。ニューラルネットワークの推論段階において、ニューロン、重み値、バイアス、および、勾配の中の少なくとも一つを量子化待ちデータとして、本発明の実施例の中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の演算を完成できる。
ニューラルネットワーク演算の微調整段階は、トレーニングされたニューラルネットワークに対して所定の数の反復の順方向演算および逆方向演算を実行し、パラメータの微調整を実行することによって、所定タスクに適応する段階を含んでもよい。ニューラルネットワーク演算の微調整段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例の中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
ニューラルネットワーク演算のトレーニング段階は、初期化されたニューラルネットワークに対して反復トレーニングを実行し、特定タスクを実行できる、トレーニングされたニューラルネットワークを、得る段階を含んでもよい。ニューラルネットワークのトレーニング段階において、ニューロン、重み値、バイアス、勾配の中の少なくとも一種に対して、本発明の実施例の中の方法によって量子化を実行した後、量子化後のデータを利用して量子化待ち層の順方向演算または逆方向演算を完成できる。
一つの目標データの中のサブセットを量子化待ちデータとして、異なる方式によって目標データを複数のサブセットに分割し、各々のサブセットを一つの量子化待ちデータとすることができる。一つの目標データを複数の量子化待ちデータに分割する。目標データに対して実行しようとする演算種類に基づいて、目標データを複数の量子化待ちデータに分割できる。例えば、目標データに対してコンボルーション演算を実行する必要がある場合、コンボルーションカーネルの高さおよび幅に基づいて、目標データをコンボルーションカーネルに対応する複数の量子化待ちデータに分割できる。目標データに対してマトリックス乗算演算の左マトリックス(left matrix)を実行する必要がある場合、目標データを行ごとに複数の量子化待ちデータに分割できる。目標データを複数の量子化待ちデータに一回に分割してもよく、演算の順序に基づいて、目標データを順次に複数の量子化待ちデータに分割してもよい。
予め設定されたデータ分割方式に基づいて、目標データを複数の量子化待ちデータに分割できる。例えば、予め設定されたデータ分割方式は、固定されたデータ大きさに基づいて分割を実行する方式、または、固定されたデータ形状に基づいて分割を実行する方式であり得る。
目標データを複数の量子化待ちデータに分割した後、各量子化待ちデータに対してそれぞれ量子化を実行し、各量子化待ちデータの量子化後のデータに基づいて演算を実行できる。一つの量子化待ちデータに必要な量子化時間は、目標データ全体の量子化時間よりも短く、そのうちの一つの量子化待ちデータの量子化が完了された後に、量子化後のデータを利用して後続の演算を実行することができ、目標データの中のすべての量子化待ちデータの量子化がすべて完成されるまで待った後に演算を実行する必要がない。そのため、本発明中の目標データの量子化方法は、目標データの演算効率を向上させることができる。
ステップS12において、前記各量子化待ちデータを対応する量子化パラメータに基づいてそれぞれ量子化を実行し、前記各量子化待ちデータに対応する量子化データを得る。
量子化待ちデータに対応する量子化パラメータは、一つの量子化パラメータであってもよいし、複数の量子化パラメータであってもよい。量子化パラメータは、ポイント位置などの、量子化待ちデータに対して量子化を実行するためのパラメータを含んでもよい。ポイント位置は、量子化後のデータの中の小数点の位置を決定するために使用できる。量子化パラメータは、スケーリング係数、オフセット量などをさらに含んでもよい。
量子化待ちデータに対応する量子化パラメータを決定する方式は、目標データに対応する量子化パラメータを決定した後、目標データに対応する量子化パラメータを量子化待ちデータの量子化パラメータとして決定する方式を含んでもよい。量子化待ち層が複数の目標データを含む場合、各目標データは、いずれも自分に対応する量子化パラメータを有してもよく、各目標データに対応する量子化パラメータは、異なってもよいし、同一であってもよく、本発明は、これに対して限定しない。目標データを複数の量子化待ちデータに分割した後、目標データに対応する量子化パラメータを各量子化待ちデータに対応する量子化パラメータとして決定でき、この場合、各量子化待ちデータに対応する量子化パラメータは同一である。
量子化待ちデータに対応する量子化パラメータを決定する方式は、各量子化待ちデータに対応する量子化パラメータを直接決定する方式を含んでもよい。目標データは、自分に対応する量子化パラメータを有さなくてもよいし、あるいは、目標データは、自分に対応する量子化パラメータを有するが、量子化待ちデータによって使用されなくてもよい。各量子化待ちデータに対して対応する量子化パラメータを直接設定できる。量子化待ちデータに基づいて対応する量子化パラメータを計算して得てもよい。この場合、各量子化待ちデータに対応する量子化パラメータは、同一であってもよいし、異なってもよい。例えば、量子化待ち層がコンボルーション層であり、目標データが重みである場合、重みをチャネルに基づいて複数の量子化待ち重みデータに分割でき、異なるチャネルの量子化待ち重みデータは、異なる量子化パラメータに対応されることができる。各量子化待ちデータに対応する量子化パラメータが異なる場合、各量子化待ちデータに対応する量子化パラメータを利用して量子化を実行した後に得られた量子化結果は、目標データの演算に影響を及ぼさない必要がある。
目標データに対応する量子化パラメータを決定する方式、または、量子化待ちデータに対応する量子化パラメータを決定する方式は、所定の量子化パラメータを検索して量子化パラメータを直接決定する方式、対応関係を検索して量子化パラメータを決定する方式、または、量子化待ちデータに基づいて量子化パラメータを計算して得る方式を含んでもよい。以下、量子化待ちデータに対応する量子化パラメータを決定する方式を例として、説明する。
量子化待ちデータに対応する量子化パラメータを直接設定できる。設定された量子化パラメータを所定の記憶空間に記憶できる。所定の記憶空間は、オンチップまたはオフチップの記憶空間であり得る。例えば、設定された量子化パラメータを所定の記憶空間に記憶できる。各量子化待ちデータに対して量子化を実行する場合、所定の記憶空間から対応する量子化パラメータを抽出してから量子化を実行できる。経験値に基づいて各種類の量子化待ちデータに対応する量子化パラメータを設定できる。要件に応じて記憶された、各種類の量子化待ちデータに対応する量子化パラメータを更新できる。
各量子化待ちデータのデータ特徴に基づいて、データ特徴と量子化パラメータとの対応関係を検索し、量子化パラメータを決定できる。例えば、量子化待ちデータのデータ分布が疏らおよび稠密である場合、異なる量子化パラメータにそれぞれ対応されることができる。対応関係を検索することで、量子化待ちデータのデータ分布に対応する量子化パラメータを決定できる。
各量子化待ちデータに基づいて、所定の量子化パラメータ計算方法を利用して、各量子化待ち層に対応する量子化パラメータを計算し得ることができる。例えば、量子化待ちデータの絶対値の最大値および所定のデータビット幅に基づいて、丸めアルゴリズムを利用して量子化パラメータの中のポイント位置を計算し得ることができる。
ステップS13において、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得る。
所定の量子化アルゴリズムを利用して、量子化パラメータに基づいて量子化待ちデータに対して量子化を実行して、量子化データを得ることができる。例えば、量子化アルゴリズムとして丸めアルゴリズムを利用して、データビット幅およびポイント位置に基づいて量子化待ちデータに対して丸め量子化を実行して量子化データを得ることができる。ここで、丸めアルゴリズムは、切り上げ丸め、切り下げ丸め、ゼロへの丸め、および、最も近い整数への丸めを含むことができる。本発明は、量子化アルゴリズムの具体的な実現形態に対して限定しない。
各量子化待ちデータを対応する量子化パラメータをそれぞれ使用して量子化を実行できる。各量子化待ちデータに対応する量子化パラメータが各量子化待ちデータ自身の特徴にもっと適しているため、各量子化待ち層の各種類の量子化データの量子化精度が目標データの演算要件にもっと符合されるようにし、量子化待ち層の演算要件にもっと符合されるようにする。量子化待ち層の演算結果の正確率を保証することを前提として、量子化待ち層の演算効率を向上させ、量子化待ち層の演算効率と演算結果正確率との間のバランスをとることができる。さらに、目標データを複数の量子化待ちデータに分割してそれぞれ量子化し、一つの量子化待ちデータの量子化が完了した後に、量子化して得られた量子化結果に基づいて演算を実行する同時に、2番目的量子化待ちデータの量子化を実行できることによって、目標データの演算効率を全体的に向上させ、量子化待ち層の計算効率を向上させた。
各量子化待ちデータの量子化データに対して合併を実行した後に目標データの量子化結果を得ることができる。各量子化待ちデータの量子化データに対して所定の演算を実行した後に目標データの量子化結果を得ることができる。例えば各量子化待ちデータの量子化データに対して所定の重みに基づいて重み付け演算を実行した後に目標データの量子化結果を得ることができる。本発明は、これに対して限定しない。
ニューラルネットワークの推論、トレーニング、および、微調整過程において、量子化待ちデータに対してオフライン量子化またはオンライン量子化を実行できる。ここで、オフライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオフライン処理を実行することであり得る。オンライン量子化は、量子化パラメータを利用して量子化待ちデータに対してオンライン処理を実行することであり得る。例えば、ニューラルネットワークが人工知能チップを運行する場合、量子化待ちデータおよび量子化パラメータを人工知能チップ以外の演算装置に送信してオフライン量子化を実行することができ、または、人工知能チップ以外の演算装置を利用して事前に得られた量子化待ちデータおよび量子化パラメータに対してオフライン量子化を実行できる。人工知能チップがニューラルネットワークを運行する過程においては、人工知能チップは、量子化待ちデータに対して量子化パラメータを利用してオンライン量子化を実行できる。本発明は、各量子化待ちデータの量子化過程がオンラインであるかまたはオフラインであるかに対して限定しない。
本実施例によって提供されるニューラルネットワーク量子化方法において、ニューラルネットワーク中の任意の量子化待ち層に対して、前記方法は、量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップであって、各量子化待ちデータが、いずれも目標データのサブセットであり、目標データが、量子化待ち層の任意の1種の量子化待ちの演算待ちデータであり、演算待ちデータが、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含むステップと、各量子化待ちデータをそれぞれ対応する量子化パラメータに基づいて量子化を実行して、各量子化待ちデータに対応する量子化データを得るステップと、量子化待ち層が目標データの量子化データに基づいて演算を実行するように、各量子化待ちデータに対応する量子化データに基づいて目標データの量子化データを得るステップと、含む。目標データを複数の量子化待ちデータに分割した後、各量子化待ちデータの量子化過程を演算過程と並行して実行できることによって、目標データの量子化効率および演算効率を向上させることができ、量子化待ち層からニューラルネットワーク全体までの量子化効率および演算効率も向上させることができる。
可能な一実現形態において、前記量子化待ち層は、コンボルーション層であり、前記目標データは、入力ニューロンである。ここで、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記コンボルーション層の入力ニューロンの中から、コンボルーションカーネルの次元およびステップ長に基づいてコンボルーションカーネルに対応する複数の量子化待ちデータを決定するステップを含み、前記コンボルーションカーネルの次元が、高さ、幅、および、チャネル数を含む。
コンボルーション層入力ニューロンの次元が、バッチ(batch、B)、チャネル(channel、C)、高さ(height、H)、および、幅(width、W)を含んでもよい。入力ニューロンのバッチが複数である場合、各バッチの入力ニューロンを、次元が、チャネル、高さ、および、幅である3次元データとして見なすことができる。各バッチの入力ニューロンは、複数のコンボルーションカーネルに対応されることができ、各バッチの入力ニューロンのチャネル数は、自分に対応する各コンボルーションカーネルのチャネル数と一致する。
任意の1バッチの入力ニューロン、および、当該バッチの入力ニューロンに対応する複数のコンボルーションカーネルの中の任意の1コンボルーションカーネルに対して、当該コンボルーションカーネルの高さ、幅、および、ステップ長に基づいて、当該バッチの入力ニューロン中の当該コンボルーションカーネルに対応する一部のデータ(サブセット)を、当該バッチの入力ニューロン中の当該コンボルーションカーネルに対応する複数の量子化待ちデータとして決定できる。
可能な一実現形態において、入力ニューロン中から決定された各量子化待ちデータの次元は、コンボルーションカーネルの次元と一致する。図3は、本発明の実施例に係る入力ニューロンをコンボルーションカーネルに基づいて量子化待ちデータを決定することを示す模式図である。図3に示すように、入力ニューロンの次元は、5×5×3(H×W×C)であり、自分に対応する一つのコンボルーションカーネル(図示せず)の次元は、3×3×3(H×W×C)である。図3ではコンボルーションカーネルに基づいて決定された量子化待ちデータ1を示し、図3において、量子化待ちデータ1の色が入力ニューロンの色よりもわずかに薄く、量子化待ちデータ1の次元が、3×3×3(H×W×C)である。図4は、本発明の実施例に係る入力ニューロンをコンボルーションカーネルに基づいて量子化待ちデータを決定することを示す模式図である。図4ではコンボルーションカーネルに基づいて決定された量子化待ちデータ2を示し、図4において、量子化待ちデータ2の色が入力ニューロンの色よりもわずかに深く、量子化待ちデータ2の次元が、3×3×3(H×W×C)である。量子化待ちデータ1と比較すると、量子化待ちデータ2は、W次元方向において右にステップ長と一致する1グリッドだけ移動した。量子化待ちデータ1と量子化待ちデータ2の次元は、コンボルーションカーネルの次元と一致する。
図3および図4に示す量子化待ちデータ1と量子化待ちデータ2の決定方法によると、入力ニューロンの他の量子化待ちデータは、コンボルーションカーネルの次元およびステップ長に基づいて順次に得ることができることを理解できる。ここでは繰り返して説明しない。
コンボルーションカーネルの次元およびステップ長に基づいて、入力ニューロンを分割して全ての量子化待ちデータを得た後、各量子化待ちデータに対して並行して量子化過程を実行できる。量子化待ちデータのデータ量が入力ニューロンよりも小さいため、一つの量子化待ちデータに対して量子化を実行する計算量は、入力ニューロン全体に対して量子化を実行する計算量よりも小さく、このため、本実施例の中の量子化方法は、入力ニューロンの量子化速度を向上させ、量子化効率を向上させることができる。さらに、入力ニューロンに対してコンボルーションカーネルの次元およびステップ長に基づいて分割を実行して、各量子化待ちデータを順次に得た後、得られた各量子化待ちデータをそれぞれコンボルーションカーネルとコンボルーション演算を実行できる。各量子化待ちデータの量子化過程とコンボルーション演算過程とは並行して実行でき、本実施例の中の量子化方法は、入力ニューロンの量子化効率および演算効率を向上させることができる。
可能な一実現形態において、入力ニューロン中から決定された各量子化待ちデータの次元は、コンボルーションカーネルの次元と一致しなくてもよい。各量子化待ちデータの次元は、コンボルーションカーネルの次元よりも小さく、コンボルーションカーネルの少なくとも一つの次元は、量子化待ちデータに対応する次元の倍数であってもよい。各量子化待ちデータの次元も、コンボルーションカーネルの次元よりも大きく、量子化待ちデータの少なくとも一つの次元は、コンボルーションカーネルに対応する次元の倍数であってもよい。
各量子化待ちデータの次元は、コンボルーションカーネルの次元よりも小さくてもよく、例えば、コンボルーションカーネルAの次元が8×8×3である場合、量子化待ちデータA1の次元は4×8×3であり、量子化待ちデータA2の次元は4×8×3であり、量子化待ちデータA1と量子化待ちデータA2とから構成されたサブセットはコンボルーションカーネルAとコンボルーション演算を実行するデータであってもよい。すると、量子化待ちデータA1と量子化待ちデータA2の量子化結果を接合し、接合結果に基づいてコンボルーションカーネルAとコンボルーション演算を実行できる。
各量子化待ちデータの次元は、コンボルーションカーネルの次元よりも大きくてもよく、例えば、コンボルーションカーネルAの次元が8×8×3である場合、量子化待ちデータA1の次元は16×8×3であってもよい。すると、量子化待ちデータA1の量子化結果を分割した後、分割結果に基づいてコンボルーションカーネルAとコンボルーション演算を実行する。
可能な一実現形態において、目標データに対して量子化を実行する過程において、目標データに対応する量子化パラメータを使用して量子化を実行できる。目標データを複数の量子化待ちデータに分割した後には、各量子化待ちデータに対応する量子化パラメータを使用して量子化を実行できる。各量子化待ちデータに対応する量子化パラメータは、所定の方式または量子化待ちデータに基づいて計算する方式を使用でき、どのような方式を使用して各量子化待ちデータに対応する量子化パラメータを決定しても、いずれも、各量子化待ちデータの量子化パラメータが量子化待ちデータ自身の量子化要件にもっと符合されるようにすることができる。例えば、目標データに基づいて対応する量子化パラメータを計算して得る場合、目標データの中の各要素の最大値および最小値を利用して量子化パラメータを計算して得ることができる。量子化待ちデータに基づいて対応する量子化パラメータを計算して得る場合には、量子化待ちデータ中の各要素の最大値および最小値を利用して量子化パラメータを計算して得ることができて、量子化待ちデータの量子化パラメータが目標データの量子化パラメータよりも量子化待ちデータのデータ特徴にもっと適することができ、量子化待ちデータの量子化結果がもっと正確になり、量子化精度がもっと向上させることができる。
本実施例において、前記コンボルーション層の入力ニューロンの中から、コンボルーションカーネルの次元およびステップ長に基づいてコンボルーションカーネルに対応する複数の量子化待ちデータを決定し、前記コンボルーションカーネルの次元は、高さ、幅、および、チャネル数を含む。コンボルーションカーネルの次元およびステップ長に基づいて量子化待ちデータを決定した後、各量子化待ちデータに対して量子化を実行する計算量は、目標データに対して量子化を実行する計算量よりも小さく、目標データの量子化効率を向上させることができる。各量子化待ちデータに対する量子化過程および演算過程を並行して実行ことによって、目標データの量子化効率および演算効率を向上させることができる。各量子化待ちデータを対応する量子化パラメータに基づいて量子化を実行することによって、量子化パラメータは量子化待ちデータ自身の量子化要件にもっと適するようにして、量子化待ちデータの量子化結果がもっと正確にすることができる。
可能な一実現形態において、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップを含み、前記目標データの次元が、バッチ、チャネル、高さ、および、幅を含む。
目標データの一つまたは複数の次元に基づいて、目標データに対して分割を実行した後、複数の量子化待ちデータを得ることができる。
目標データの一つの次元に基づいて目標データに対して分割を実行でき、例えば、前記量子化待ち層の目標データの中一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定できる。目標データB1が3個のバッチのデータを有すると想定し、目標データの中の一つのバッチのデータを一つの量子化待ちデータとして決定すると、当該目標データBは3個の量子化待ちデータに分割されることができる。さらに、前記量子化待ち層の目標データの中一つまたは複数のチャネルのデータを、一つの量子化待ちデータとして決定できる。目標データB2が4個のチャネルに対応されると想定し、目標データの中二つのチャネルのデータを一つの量子化待ちデータとして決定すると、当該目標データB2は2個の量子化待ちデータに分割されることができ、各々の量子化待ちデータは二つのチャネルを含むデータに対応される。高さおよび幅に基づいて目標データに対して分割を実行でき、例えば、目標データが、入力ニューロンの次元4×8×3であると想定し、入力ニューロンの幅の半分を分割条件として、入力ニューロンを2個の量子化待ちデータに分割でき、各々の量子化待ちデータの次元は4×4×3である。さらに、入力ニューロンの高さの半分を分割条件として、入力ニューロンを2個の量子化待ちデータに分割でき、各々の量子化待ちデータの次元は2×8×3である。
さらに、目標データの複数の次元に基づいて目標データに対して分割を実行でき、例えば、目標データの高さおよび幅に基づいて、目標データに対して分割を実行できる。例えば、目標データが、入力ニューロンの次元4×8×3であると想定し、入力ニューロン幅の半分および高さの半分を分割条件として、入力ニューロンを8個の量子化待ちデータに分割でき、各々の量子化待ちデータの次元は2×4×3である。
可能な一実現形態において、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記ニューラルネットワークを運行させる装置のリアルタイム処理能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、各前記量子化待ちデータのサイズが、前記リアルタイム処理能力と正の関連関係を有する。
ニューラルネットワークを運行する装置のリアルタイム処理能力は、装置が目標データに対して量子化を実行する速度、量子化後のデータに対して演算を実行する速度、目標データに対して量子化および演算を実行するときの装置の処理できるデータ量などの、装置の目標データを処理する処理能力を示す関連する情報を含んでもよい。例えば、量子化待ちデータに対して量子化を実行する時間と量子化後のデータに対して演算を実行する速度とが同一になるように、目標データに対して量子化を実行する速度および量子化後のデータに対して演算を実行する速度に基づいて、量子化待ちデータのサイズを決定することは、量子化および演算を同期に実行して、目標データの演算効率を向上させることができる。ニューラルネットワークを運行する装置のリアルタイム処理能力が強いほど、量子化待ちデータのサイズも大きい。
可能な一実現形態において、当該方法は、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップをさらに含む。
当該実現形態において、量子化待ちデータを統計して、統計結果およびデータビット幅に基づいて量子化待ちデータに対応する量子化パラメータを決定できる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量の中の一つまたは複数を含んでもよい。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値Z1および対応するデータビット幅に基づいて、前記各量子化待ちデータの第1タイプのポイント位置を得るステップを含む。ここで、当該絶対値の最大値Z1は、量子化待ちデータの中のデータに対して絶対値を取った後に得られた最大値である。
当該実現形態において、量子化待ちデータが原点に対して対称的なデータである場合、量子化パラメータはオフセット量を含まないでもよく、Z
1が量子化待ちデータ中の要素の絶対値の最大値であり、量子化待ちデータに対応するデータビット幅がnであり、
プロセッサは、量子化待ちデータの中の絶対値の最大値Z
1およびデータビット幅nに基づいて、第1タイプのポイント位置s
1を計算し得ることができる。例えば、以下の式(2)を利用して量子化待ちデータに対応する第1タイプのポイント位置s
1
を計算し得ることができる。
ここで、ceilは、切り上げ丸めであり、Z1は、量子化待ちデータの中の絶対値の最大値であり、s1は、第1タイプのポイント位置であり、nは、データビット幅である。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算し得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第2タイプのポイント位置s2を得るステップを含んでもよい。
当該実現形態において、まず、量子化待ちデータの中の最大値Z
maxおよび最小値Z
minを取得してから、さらに、最大値Z
maxおよび最小値Z
minに基づいて以下の式(3)を利用して計算できる。
さらに、計算して得たZ
2および対応するデータビット幅に基づいて以下の式(4)を利用して第2タイプのポイント位置s
2を計算できる
当該実現形態において、量子化するとき、通常の場合には量子化待ちデータの中の最大値および最小値を保存し、保存された量子化待ちデータの中の最大値および最小値に基づいて絶対値の最大値を直接取得するため、もっと多いリソースを消費して量子化待ちデータに対して絶対値を求める必要がなくなり、統計結果を決定する時間を節約する。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対応する量子化パラメータを計算して得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後データの最大値を得るステップと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第1タイプのスケーリング係数f’を得るステップと、を含む。ここで、第1タイプのスケーリング係数f’は、第1スケーリング係数f
1および第2スケーリング係数f
2を含んでもよい。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む。
当該実現形態において、図5は、本発明の実施例に係る対称的な固定小数点数表現を示す模式図である。図5に示す量子化待ちデータの数値フィールドは、「0」を対称中心として分布される。Z
1は、量子化待ちデータの数値フィールド中のすべての浮動小数点数の絶対値の最大値であり、図5において、A
1は、nビットの固定小数点数が表現できる浮動小数点数の最大値であり、浮動小数点数A
1を固定小数点数に変換すると(2
(n-1)-1)である。オーバーフローを回避するために、A
1はZ
1を含む必要がある。実際演算において、ニューラルネットワーク演算過程での浮動小数点データは、ある決定区間の正規分布になる傾向があるが、「0」を対称中心とする分布を必ずとして満たすとは限らなく、このとき、固定小数点数で表現すると、オーバーフロー状況が発生し易い。このような状況を改善するために、量子化パラメータ中にオフセット量を導入する。図6は、本発明の実施例に係るオフセット量を導入した固定小数点数表現を示す模式図である。図6に示すように、量子化待ちデータの数値フィールドは、「0」を対称中心として分布されていなく、Z
minは、量子化待ちデータの数値フィールド中のすべての浮動小数点数の最小値であり、Z
maxは、量子化待ちデータの数値フィールド中のすべての浮動小数点数の最大値であり、A
2は、nビットの固定小数点数で表現する平行移動後の浮動小数点数の最大値であり、
ここで、oは、オフセット量を示し、Zminは、量子化待ちデータすべての要素中の最小値であり、Zmaxは、量子化待ちデータすべての要素中の最大値を示す。
可能な一実現形態において、前記各量子化待ちデータおよび対応するデータビット幅に基づいて対計算して応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第2タイプのスケーリング係数f”を得るステップと、を含む。ここで、第2タイプのスケーリング係数f”は、第3のスケーリング係数f3および第4のスケーリング係数f4を含んでもよい。
当該実現形態において、量子化パラメータがオフセット量を含む場合、A
2は、データビット幅nを用いて平行移動後の量子化待ちデータに対して量子化を実行した後の量子化データが表現できる最大値であり
さらに、第4のスケーリング係数f4は、以下の式(9)に基づいて計算できる。
量子化待ちデータに対して量子化を実行する場合、使用される量子化パラメータが異なると、量子化の実行に使用されるデータが異なる。
可能な一実現形態において、量子化パラメータは、第1タイプのポイント位置s
1を含んでもよい。以下の式(10)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
ここで、I
xは、量子化データであり、F
xは、量子化待ちデータであり、roundは、最も近い整数への丸め演算を実行する。
量子化パラメータが第1タイプのポイント位置s1を含む場合、式(11)に基づいて目標データの量子化データに対して逆量子化を実行して、目標データの逆量子化
可能な一実現形態において、量子化パラメータは、第1タイプのポイント位置および第1のスケーリング係数を含んでもよい。以下の式(12)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
可能な一実現形態において、量子化パラメータは、第2のスケーリング係数を含んでもよい。以下の式(14)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
量子化パラメータが第2のスケーリング係数を含む場合、式(15)に基づいて目標データの量子化データに対して逆量子化を実行して、目標データの逆量子化データ
可能な一実現形態において、量子化パラメータは、オフセット量を含んでもよい。以下の式(16)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
可能な一実現形態において、量子化パラメータは、第2タイプのポイント位置およびオフセット量を含んでもよい。以下の式(18)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
可能な一実現形態において、量子化パラメータは、第2タイプのスケーリング係数f”およびオフセット量oを含んでもよい。以下の式(20)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
可能な一実現形態において、量子化パラメータは、第2タイプのポイント位置、第2タイプのスケーリング係数、および、オフセット量を含んでもよい。以下の式(22)を利用して量子化待ちデータに対して量子化を実行して、量子化データI
xを得ることができる。
上述した式中の最も近い整数への丸め演算roundの代わりに、例えば、切り上げ丸め、切り下げ丸め、ゼロへの丸めなど丸め演算のような、他の丸め演算方法を使用できることを理解できる。データビット幅が一定である場合、ポイント位置に基づいて量子化して得られた量子化データにおいて、小数点後のビット数が多いほど、量子化データの量子化精度も大きいことを理解できる。
可能な一実現形態において、上述したステップS11は、
量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層中の各種類の量子化待ちデータに対応する量子化パラメータを決定するステップを含んでもよい。
可能な一実現形態において、各量子化待ち層中の各種類の量子化待ちデータに対応する量子化パラメータは、保存された所定の値であり得る。ニューラルネットワークのために、一つの、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、当該対応関係は、各量子化待ち層の各種類の量子化待ちデータと量子化パラメータとの対応関係を含んでもよく、対応関係を各層が共有してアクセスできる記憶空間に保存する。ニューラルネットワークのために、複数の、量子化待ちデータと量子化パラメータとの間の対応関係を構築でき、各量子化待ち層にそれぞれそのうちの一つの対応関係が対応される。各層の対応関係を本層専用の記憶空間に保存してもよいし、各層の対応関係を各層が共有してアクセスできる記憶空間に保存してもよい。
量子化待ちデータと量子化パラメータとの対応関係は、複数の量子化待ちデータと自分に対応する複数の量子化パラメータとの間の対応関係を含んでもよい。例えば、量子化待ちデータと量子化パラメータとの対応関係Aは、量子化待ち層1のニューロンおよび重み値の二つの量子化待ちデータと、ニューロンに対応するポイント位置1、スケーリング係数1、および、オフセット量1の三つの量子化パラメータと、重み値に対応するポイント位置2およびオフセット量2の二つの量子化パラメータと、を含んでもよい。本発明は、量子化待ちデータと量子化パラメータとの対応関係の具体的なフォーマットに対して限定しない。
本実施例において、量子化待ちデータと量子化パラメータとの対応関係を検索することによって、前記量子化待ち層中の各種類の量子化待ちデータに対応する量子化パラメータを決定できる。各量子化待ち層のために対応する量子化パラメータを予め設定し、対応関係によって記憶した後、量子化待ち層が検索してから使用するようにすることができる。本実施例中の量子化パラメータの取得方式は、簡単かつ便利である。
図7は、本発明の実施例に係るニューラルネットワーク量子化方法を示すフローチャートである。可能な一実現形態において、図7に示すように、当該方法は、ステップS14からステップS16をさらに含んでもよい。
ステップS14において、前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定する。
量子化待ちデータに対応する量子化データと量子化待ちデータとの間の誤差に基づいて、量子化待ちデータの量子化誤差を決定できる。例えば、標準差計算方法、ルート平均二乗誤差計算方法などの、所定の誤差計算方法を利用して、量子化待ちデータの量子化誤差を計算できる。
ここで、Fiは、量子化待ちに対応する浮動小数点値であり、iは、量子化待ちデータ集合中データの下付き文字である。Fiは、浮動小数点値に対応する逆量子化データである。
ステップS15において、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整して、前記各量子化待ちデータに対応する調整ビット幅を得る。
経験値に基づいて誤差閾値を決定でき、誤差閾値は、量子化誤差に対する期待値を示すために使用できる。量子化誤差が誤差閾値よりも大きいか小さい場合、量子化待ちデータに対応するデータビット幅を調整して、量子化待ちデータに対応する調整ビット幅を得ることができる。データビット幅をもっと長いビット幅またはもっと短いビット幅に調整することによって、量子化精度を増加または減少することができる。
受け入れることができる最大誤差に基づいて誤差閾値を決定でき、量子化誤差が誤差閾値よりも大きい場合は、量子化精度が期待に応えられないことを意味し、データビット幅をもっと長いビット幅に調整する必要がある。さらに、より高い量子化精度に基づいて一つのより小さい誤差閾値を決定でき、量子化誤差が誤差閾値未満である場合は、量子化精度がより高いことを意味し、ニューラルネットワークの運行効率が影響を及ぼすことになり、データビット幅をもっと短いビット幅に適当に調整ことによって、量子化精度を適当に低下して、ニューラルネットワークの運行効率を向上させることができる。
データビット幅を固定されたビット数のステップ長に基づいて調整してもよいし、量子化誤差と誤差閾値との間の差分値が異なることに基づいて、可変の調整ステップ長に基づいてデータビット幅を調整してもよい。本発明は、これに対して限定しない。
ステップS16において、前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得る。
調整ビット幅を決定した後に、量子化待ちデータに対応するデータビット幅を調整ビット幅に更新できる。例えば、量子化待ちデータの更新前のデータビット幅が8ビットであり、調整ビット幅が12ビットであると、更新後の量子化待ちデータに対応するデータビット幅は12ビットである。調整ビット幅および量子化待ちデータに基づいて計算して量子化待ちデータに対応する調整量子化パラメータ得ることができる。量子化待ちデータに対応する調整量子化パラメータに基づいて量子化待ちデータに対して量子化を再度実行することによって、量子化精度もっと高いまたはもっと低い量子化データを得ることで、量子化待ち層が量子化精度と処理効率との間のバランスをとることができる。
ニューラルネットワークの推論、トレーニング、および、微調整過程において、各層間の量子化待ちデータは一定の関連性を有すると見なすことができる。例えば、各層の量子化待ちデータ間の平均値間の差が所定の平均値閾値未満であり、且つ、各層の量子化待ちデータ間の最大値間の差分値も所定の差分値閾値未満である場合、量子化待ち層の調整量子化パラメータを後続の一つまたは複数の層の調整量子化パラメータとして、量子化待ち層の後続の一つまたは複数の層の量子化待ちデータに対する量子化の実行に用いることができる。さらに、ニューラルネットワークのトレーニングおよび微調整過程において、量子化待ち層の現在反復中で得られた調整量子化パラメータを、後続の反復中の量子化待ち層に対する量子化の実行に用いることができる。
可能な一実現形態において、前記方法は、
前記量子化待ち層の後の一層または多層において、前記量子化待ち層の量子化パラメータを使用するステップをさらに含む。
ニューラルネットワークが調整量子化パラメータに基づいて量子化を実行することは、量子化待ち層のみにおいて調整量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行し、再度得られた量子化データを量子化待ち層の演算に用いることを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用せずに量子化待ちデータに対して量子化を再度実行し、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および/または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。さらに、量子化待ち層において調整量子化パラメータを使用して量子化再度を実行し、再度得られた量子化データを量子化待ち層の演算に用い、量子化待ち層の後続の一つまたは複数の層において調整量子化パラメータを使用して量子化を実行すること、および/または、後続の反復中で量子化待ち層において調整量子化パラメータを使用して量子化を実行することを含んでもよい。本発明は、これに対して限定しない。
本実施例において、量子化待ちデータと量子化待ちデータに対応する量子化データとの間の誤差に基づいてデータビット幅を調整し、調整後のデータビット幅に基づいて計算して調整量子化パラメータを得る。異なる誤差閾値を設定して異なる調整量子化パラメータを得ることで、量子化精度の向上または運行効率の向上など、異なる量子化要件に達することができる。量子化待ちデータおよび量子化待ちデータの量子化データに基づいて計算して得た調整量子化パラメータは、さらに、量子化待ちデータ自身のデータ特徴にもっと符合でき、量子化待ちデータ自身の要件にもっと符合される量子化結果に達して、量子化精度と処理効率との間でもっとよいバランスをとることができる。
可能な一実現形態において、ステップS15は、
前記量子化誤差が第1の誤差閾値よりも大きいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るステップを含んでもよい。
受け入れることができる最大の量子化誤差に基づいて、第1の誤差閾値を決定できる。量子化誤差と第1の誤差閾値とを比較できる。量子化誤差が第1誤差閾値よりも大きい場合、量子化誤差が既に受け入れることができないと見なすことができる。量子化精度を向上する必要があり、量子化待ちデータに対応するデータビット幅を増加する方式によって、量子化待ちデータの量子化精度を向上させることができる。
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて増加して、調整ビット幅を得ることができる。固定された調整ステップ長は、Nビットであり得、Nは、正の整数である。毎回データビット幅を調整するときにNビットを増加できる。毎回増加した後のデータビット幅=原データビット幅+Nビットである。
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて増加して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第1の閾値よりも大きい場合、調整ステップ長M1に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第1の閾値未満である場合、調整ステップ長M2に基づいてデータビット幅を調整でき、ここで、第1閾値は第2閾値よりも大きく、M1はM2よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明は、データビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
量子化待ちデータを調整ビット幅に基づいて計算して調整後の量子化パラメータを得ることができる。調整後の量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行した後に得られた量子化データは、調整前の量子化パラメータで量子化して得られた量子化データよりも、量子化精度がもっと高い。
可能な一実現形態において、当該方法は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第1の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第1の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて調整後の量子化パラメータを計算して得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて計算して量子化待ちデータの調整後の量子化誤差を得、調整後の量子化誤差は依然として第1誤差閾値よりも大きい可能性があり、すなわち、データビット幅を一回調整しては調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第1誤差閾値よりも大きい場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第1の誤差閾値未満になるまでに、量子化待ちデータに対応するデータビット幅を複数回増加できる。
複数回増加する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅=原データビット幅+B*Nビットであり、ここで、Nは、毎回増加する固定された調整ステップ長であり、Bは、データビット幅の増加回数である。最終のデータビット幅=原データビット幅+M1+M2+…+Mmであり、ここで、M1、M2…Mmは、毎回増加する可変の調整ステップ長である。
本実施例において、量子化誤差が第1の誤差閾値よりも大きい場合、前記量子化待ちデータに対応するデータビット幅を増加して、前記量子化待ちデータに対応する調整ビット幅を得る。第1の誤差閾値および調整ステップ長を設定してデータビット幅を増加することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第1の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に調整することによって、異なる量子化要件を満たして、量子化精度を自身データ特徴に基づいて自己適応調整できるようにする。
可能な一実現形態において、ステップS15は、
前記量子化誤差が前記第1の誤差閾値よりも小さい第2の誤差閾値よりも小さいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るステップを含む
受け入れることができる量子化誤差および所望のニューラルネットワークの運行効率に基づいて、第2の誤差閾値を決定できる。量子化誤差と第2の誤差閾値とを比較できる。量子化誤差が第2の誤差閾値未満である場合、量子化誤差が予想を超えていると見なすことができるが、運行効率が低すぎることは既に受け入れることができない。量子化精度を低下してニューラルネットワークの運行効率を向上させることができ、量子化待ちデータに対応するデータビット幅を減少する方式によって、量子化待ちデータの量子化精度を低下させることができる。
量子化待ちデータに対応するデータビット幅を固定された調整ステップ長に基づいて減少して、調整ビット幅を得ることができる。固定された調整ステップ長は、Nビットであり得、Nは、正の整数である。毎回データビット幅を調整するときにNビットを減少できる。増加後のデータビット幅=原データビット幅-Nビットである。
量子化待ちデータに対応するデータビット幅を可変の調整ステップ長に基づいて減少して、調整ビット幅を得ることができる。例えば、量子化誤差と誤差閾値との間の差分値が第1の閾値よりも大きい場合、調整ステップ長M1に基づいてデータビット幅を調整でき、量子化誤差と誤差閾値との間の差分値が第1の閾値未満である場合、調整ステップ長M2に基づいてデータビット幅を調整でき、ここで、第1の閾値は第2の閾値よりも大きく、M1はM2よりも大きい。要件に応じて各可変の調整ステップ長を決定できる。本発明はデータビット幅の調整ステップ長および調整ステップ長が可変であるか否かに対して限定しない。
量子化待ちデータを調整ビット幅に基づいて計算して調整後の量子化パラメータを得ることができる、調整後の量子化パラメータを利用して量子化待ちデータに対して量子化を再度実行した後に得られた量子化データは、調整前の量子化パラメータを利用して量子化して得られた量子化データよりも、量子化精度はより低い。
可能な一実現形態において、当該方法は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第2の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第2の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含んでもよい。
量子化誤差に基づいて量子化待ちデータに対応するデータビット幅を増加する場合、ビット幅を一回調整した後に調整ビット幅を得、調整ビット幅に基づいて計算して調整後の量子化パラメータを得、調整後の量子化パラメータに基づいて量子化待ちデータを量子化して調整後の量子化データを得、さらに、調整後の量子化データおよび量子化待ちデータに基づいて計算して量子化待ちデータの調整後の量子化誤差を得、調整後の量子化誤差が依然として第2の誤差閾値未満、すなわち、データビット幅を一回調整しては調整目的を満たすことができない可能性がある。調整後の量子化誤差が依然として第2の誤差閾値未満である場合、調整後のデータビット幅を調整し続けることができ、すなわち、最終に得られた調整ビット幅および量子化待ちデータに基づいて得られた調整後の量子化誤差が第2誤差閾値よりも大きくなるまでに、量子化待ちデータに対応するデータビット幅を複数回減少できる。
複数回減少する調整ステップ長は、固定された調整ステップ長であってもよいし、可変の調整ステップ長であってもよい。例えば、最終のデータビット幅=原データビット幅-B*Nビット、ここで、Nは、毎回増加する固定された調整ステップ長であり、Bは、データビット幅の増加回数である。最終のデータビット幅=原データビット幅-M1-M2-…-Mmであり、ここで、M1、M2…Mmは、毎回減少する可変の調整ステップ長である。
本実施例において、量子化誤差が第2の誤差閾値未満である場合、前記量子化待ちデータに対応するデータビット幅を減少して、前記量子化待ちデータに対応する調整ビット幅を得る。第2の差閾値および調整ステップ長を設定してデータビット幅を減少することによって、調整後のデータビット幅が量子化の要件を満たすようにすることができる。一回調整で調整要件を満たすことができない場合、さらに、データビット幅を複数回調整することができる。第2の誤差閾値および調整ステップ長の設定は、量子化パラメータを量子化要件に基づいて柔軟に自己適応調整できるようにして、異なる量子化要件を満たして、量子化精度を調整できるようにし、量子化精度とニューラルネットワークの運行効率との間でバランスをとることができる。
可能な一実現形態において、前記方法は、
前記量子化誤差が第1の誤差閾値よりも大きいと、前記量子化待ちデータに対応するデータビット幅を増加し、前記量子化誤差が第2の誤差閾値よりも小さいと、前記量子化待ちデータに対応するデータビット幅を減少して、前記量子化待ちデータに対応する調整ビット幅を得るステップをさらに含む。
さらに、二つの誤差閾値を同時に設置でき、ここで、第1の誤差閾値は、量子化精度が低すぎることを示すために使用され、データビット幅のビット数を増加でき、第2の誤差閾値は、量子化精度が高すぎることを示すために使用され、データビット幅のビット数を減少できる。第1の誤差閾値は第2の誤差閾値よりも大きく、量子化待ちデータの量子化誤差を二つの誤差閾値と同時に比較でき、量子化誤差が第1の誤差閾値よりも大きい場合、データビット幅のビット数を増加し、量子化誤差が第2の誤差閾値未満である場合、データビット幅のビット数を減少する。量子化誤差が第1の誤差閾値と第2の誤差閾値との間に位置すると、データビット幅をそのまま維持することができる。
本実施例において、量子化誤差を第1の誤差閾値および第2の誤差閾値と同時に比較することによって、比較結果に基づいてデータビット幅を増加または減少でき、第1の誤差閾値および第2の誤差閾値を利用してデータビット幅をもっと柔軟に調整できる。データビット幅の調整結果が量子化要件にもっと符合されるようにする。
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および/または、トレーニング段階において、当該方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップをさらに含み、前記目標反復間隔は、少なくとも一回の反復を含む。
ニューラルネットワーク演算の微調整段階、および/または、トレーニング段階は、複数回の反復を含む。ニューラルネットワーク中の各量子化待ち層において、一回の順方向演算および一回の逆方向演算を実行し、量子化待ち層の重み値を更新した後、一回の反復が完成される。複数回の反復中で、量子化待ち層中の量子化待ちデータ、および/または、量子化待ちデータに対応する量子化データのデータ変動幅は、異なる反復中の量子化待ちデータおよび/または量子化データに対して同一の量子化パラメータを使用して量子化を実行できるか否かを推し量ることに利用できる。現在反復および履歴反復中の量子化待ちデータのデータの変動幅がより小さいと、例えば所定の幅度変動閾値未満であると、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用できる。
予め記憶した量子化パラメータを抽出する方式によって、量子化待ちデータに対応する量子化パラメータを決定できる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化待ちデータに対応する量子化パラメータを抽出する必要がある。複数の反復中の量子化待ちデータおよび/または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で使用された同一の量子化パラメータを一時記憶でき、各反復中で量子化を実行するときに一時記憶された量子化パラメータを利用して量子化演算を実行すればよく、毎回の反復中で量子化パラメータを抽出する必要がない。
さらに、量子化待ちデータおよびデータビット幅に基づいて計算して量子化パラメータを得ることができる。異なる反復中で量子化待ちデータに対して量子化を実行する場合、各反復中で量子化パラメータをそれぞれ計算する必要がある。複数の反復中の量子化待ちデータおよび/または量子化待ちデータに対応する量子化データのデータ変動幅がより小さい場合、データ変動幅がより小さい複数の反復中で同一の量子化パラメータを使用すると、各反復中でいずれもそのうちの1番目の反復中で計算して得た量子化パラメータを直接使用すればよく、毎回の反復中で量子化パラメータを計算しない。
量子化待ちデータが重み値である場合、各反復間の重み値が継続的に更新され、複数の反復中の重み値のデータ変動幅がより小いか、または、複数の反復中の重み値に対応する量子化データのデータ変動幅がより小いと、複数の反復中で同一の量子化パラメータを利用して重み値に対して量子化を実行できることを理解できる。
量子化待ちデータのデータ変動幅に基づいて目標反復間隔を決定でき、目標反復間隔は少なくとも一回の反復を含み、目標反復間隔内の各反復中で同一の量子化パラメータを使用でき、すなわち、目標反復間隔内の各反復中で量子化待ちデータの量子化パラメータをこれ以上更新しない。ニューラルネットワークは、目標反復間隔によって量子化待ちデータの量子化パラメータを更新し、目標反復間隔内に含まれる反復に対しては、所定の量子化パラメータを取得しないか、または、量子化パラメータを計算しなく、すなわち、目標反復間隔内の反復中では量子化パラメータを更新しない。目標反復間隔以外の反復中では、再度、所定の量子化パラメータを取得するか、または、量子化パラメータを計算するか、すなわち、目標反復間隔以外の反復中では量子化パラメータを更新する。
複数の反復間の量子化待ちデータまたは量子化待ちデータの量子化データのデータ変動幅が小さいほど、決定された目標反復間隔に含まれる反復回数が多いことを理解できる。計算して得たデータ変動幅に基づいて、所定のデータ変動幅と反復間隔との対応関係を検索して、計算して得たデータ変動幅に対応する目標反復間隔を決定できる。要件に応じてデータ変動幅と反復間隔との対応関係を設定できる。計算して得たデータ変動幅に基づいて、所定の計算方法を利用して目標反復間隔を計算して得ることができる。本発明は、データ変動幅の計算方式および目標反復間隔の取得方式に対して限定しない。
本実施例において、ニューラルネットワーク演算の微調整段階、および/または、トレーニング段階において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。複数の反復中の量子化待ちデータまたは量子化待ちデータに対応する量子化データのデータ変動幅に基づいて、目標反復間隔を決定できる。ニューラルネットワークは、目標反復間隔に基づいて量子化パラメータを更新するか否かを決定できる。目標反復間隔に含まれる複数の反復中のデータ変動幅がより小さいため、目標反復間隔内の反復中で量子化パラメータを更新しないでも量子化精度を保証できる。目標反復間隔内の複数の反復中で量子化パラメータを更新しないと、量子化パラメータの抽出回数または計算回数を削減して、ニューラルネットワークの演算効率を向上させることができる。
可能な一実現形態において、当該方法は、
前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定することによって、前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにするステップをさらに含む。
本発明の上述した実施例に記載されたように、量子化待ちデータの量子化パラメータは、予め設定してもよいし、量子化待ちデータに対応するデータビット幅に基づいて計算して得てもよい。異なる量子化待ち層の中の量子化待ちデータに対応するデータビット幅、または、同一の量子化待ち層の中の量子化待ちデータの異なる反復中の対応するデータビット幅は、本発明上述した実施例中の方式によって自己適応調整できる。
量子化待ちデータのデータビット幅を自己適応調整できなく、所定のデータビット幅である場合、量子化待ちデータの現在反復中の所定のデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。目標反復間隔内の各反復中では、自身の所定の値を使用できない。
量子化待ちデータのデータビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定できる。データビット幅を自己適応調整できる場合、データビット幅に対して一回の調整または複数回の調整を実行できる。量子化待ちデータの現在反復中で自己適応調整を実行した後のデータビット幅を、目標反復間隔内の各反復中の対応するデータビット幅として、目標反復間隔内の各反復中でこれ以上データビット幅を自己適応調整(更新)しない。量子化待ちデータは、現在反復中で自己適応調整後のデータビット幅を使用してもよいし、自己適応調整前のデータビット幅を使用してもよく、本発明は、これに対して限定しない。
目標反復間隔以外の他の反復中では、量子化待ちデータのデータ変動幅が所定の条件を満たさないため、本発明の上述した方法によってデータビット幅を自己適応調整して、現在反復にもっと符合される量子化待ちデータのデータビット幅を得てもよいし、本発明中の目標反復間隔の計算方法を使用して新たな目標反復間隔を計算して得て使用してもよいし、このようにして、目標反復間隔以外の反復の量子化精度を保証する同時に、ニューラルネットワークの運行効率を向上させることができる。
目標反復間隔内の各反復中のデータビット幅が同一であると、各反復中では同一のデータビット幅に基づいて計算して別々に対応する量子化パラメータを得ることができる。量子化パラメータは、ポイント位置、スケーリング係数、および、オフセット量中の少なくとも一つを含んでもよい。目標反復間隔内の各反復中で、同一のデータビット幅に基づいて計算して量子化パラメータをそれぞれ得ることができる。量子化パラメータが、ポイント位置(第1タイプのポイント位置および第2タイプのポイント位置を含む)、スケーリング係数(第1タイプのスケーリング係数および第2タイプのスケーリング係数を含む)、および、オフセット量を含む場合、目標反復間隔内の各反復中で、同一のデータビット幅を利用して、それぞれに対応するポイント位置、スケーリング係数、および、オフセット量をそれぞれ計算できる。
現在反復中のデータビット幅に基づいて目標反復間隔内の各反復中のデータビット幅を決定する同時に、現在反復中の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。目標反復間隔内の各反復中の量子化パラメータも、これ以上再度同一のデータビット幅に基づいて計算して得なく、ニューラルネットワークの演算効率をさらに向上させることができる。現在反復中のすべての量子化パラメータまたは一部の量子化パラメータに基づいて、目標反復間隔内の各反復中の対応する量子化パラメータを決定できる。現在反復中の一部の量子化パラメータに基づいて目標反復間隔内の各反復中の対応する量子化パラメータを決定する場合、残りの部分の量子化パラメータは、目標反復間隔内の各反復中で依然として計算する必要がある。
例えば、量子化パラメータは、第2タイプのポイント位置、第2タイプのスケーリング係数、および、オフセット量を含む。現在反復中のデータビット幅および第2タイプのポイント位置に基づいて、目標反復間隔内の各反復中のデータビット幅および第2タイプのポイント位置を決定できる。すると、目標反復間隔内の各反復中の第2タイプのスケーリング係数およびオフセット量は、同一のデータビット幅に基づいて計算して得る必要がある。さらに、現在反復中のデータビット幅、第2タイプのポイント位置、第2タイプのスケーリング係数、および、オフセット量に基づいて、目標反復間隔内の各反復中のデータビット幅、第2タイプのポイント位置、第2タイプのスケーリング係数、および、オフセット量を決定でき、すると、目標反復間隔内の各反復中の各量子化パラメータはいずれも計算して得る必要がない。
本実施例において、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅を決定することによって、ニューラルネットワークが量子化待ちデータの目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するようにする。目標反復間隔内の各反復中のデータビット幅は、現在反復中のデータビット幅に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のデータビット幅を利用して量子化パラメータを計算して得ることによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のデータビット幅を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
可能な一実現形態において、当該方法は、前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含んでもよく、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含む。
ここで、前記量子化待ちデータの前記現在反復中の対応する第1タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第1タイプのポイント位置を決定する。前記量子化待ちデータの前記現在反復中の対応する第2タイプのポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応する第2タイプのポイント位置を決定する。
量子化パラメータの中で、スケーリング係数およびオフセット量と比較すると、異なるポイント位置が同一の量子化待ちデータの量子化結果に対して発生する影響がより大きい。量子化待ちデータの現在反復中の対応するポイント位置に基づいて、目標反復間隔内の反復中の対応するポイント位置を決定できる。データビット幅を自己適応調整できない場合、量子化待ちデータの現在反復中の所定のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよく、量子化待ちデータの現在反復中で所定のデータビット幅に基づいて計算して得たポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。データビット幅を自己適応調整できる場合、量子化待ちデータの現在反復中で調整した後のポイント位置を、量子化待ちデータの目標反復間隔内の各反復中の対応するポイント位置としてもよい。
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するスケーリング係数に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するスケーリング係数を決定してもよいし、および/または、量子化待ちデータの現在反復中の対応するオフセット量に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するオフセット量を決定してもよい。
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定する同時に、量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定してもよく、ここで、量子化待ちデータの現在反復中の対応するデータビット幅は、現在反復中の所定のデータビット幅または自己適応調整後のデータビット幅であってもよい。
本実施例において、量子化待ちデータの現在反復中の対応するポイント位置に基づいて、量子化待ちデータの目標反復間隔内の反復中の対応するポイント位置を決定する。目標反復間隔内の各反復中のポイント位置は、現在反復中のポイント位置に基づいて決定され、目標反復間隔内の各反復中の量子化待ちデータのデータ変動幅が所定の条件を満たすため、同一のポイント位置を利用することによって、目標反復間隔内の各反復中の量子化精度を保証できる。目標反復間隔内の各反復中で同一のポイント位置を使用すると、ニューラルネットワークの演算効率も向上させることができる。ニューラルネットワークに対して量子化を実行した後、演算結果の正確率とニューラルネットワークの演算効率との間でバランスがとられる。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1データ変動幅を得るステップと、を含んでもよく、
ここで、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップは、
前記第1データ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップを含んでもよい。
ここで、量子化待ちデータの現在反復中の第1タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第1タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第1タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第1タイプのポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中の第1タイプのポイント位置の第2の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。あるいは、量子化待ちデータの現在反復中の第2タイプのポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中の第2タイプのポイント位置に基づいて、量子化待ちデータの各反復間隔に対応する第2タイプのポイント位置の移動平均値を計算し、前記量子化待ちデータの現在反復中の第2タイプのポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中の第2タイプのポイント位置の第2の移動平均値に基づいて、前記量子化待ちデータ変動幅を得る。
可能な一実現形態において、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、計算目標反復間隔の履歴反復であり得る。現在反復と、対応する目標反復間隔との間の対応関係は、以下のケースを含んでもよい。
現在反復から目標反復間隔をカウントし始めて、現在反復に対応する目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が100番目の反復中であり、目標反復間隔が3であり、目標反復間隔内の反復は、100番目の反復、101番目の反復、および、102番目の反復を含み、103番目の反復中で103番目の反復に対応する目標反復間隔を計算して、103番目の反復を、新たに計算して得た現在目標反復間隔内の1番目の反復とすることができる。この場合、現在反復が103番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、100番目の反復である。
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔内の最後の一つの反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が100番目の反復中であり、目標反復間隔が3であり、目標反復間隔内の反復が、101番目の反復、102番目の反復、および、103番目の反復を含み、103番目の反復中で103番目の反復に対応する目標反復間隔を計算して、104番目の反復を、新たに計算して得た目標反復間隔内の1番目の反復とすることができる。この場合、現在反復が103番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、100番目の反復である。
現在反復中の次の反復から目標反復間隔をカウントし始めて、目標反復間隔が終了された後の次の反復中で、目標反復間隔を再度計算し始めることができる。例えば、現在反復が100番目の反復中であり、目標反復間隔が3であり、目標反復間隔内の反復が、101番目の反復、102番目の反復、および、103番目の反復を含み、104番目の反復中で104番目の反復に対応する目標反復間隔を計算し、105番目の反復を、新たに計算して得た当目標反復間隔内の1番目の反復とすることができる。この場合、現在反復が104番目の反復である場合、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復は、100番目の反復である。
要件に応じて現在反復と目標反復間隔との間の他の対応関係を決定でき、例えば現在反復中の後のN番目の反復から目標反復間隔をカウントし始めることができ、Nは1よりも大きく、本発明は、これに対して限定しない。
計算して得た量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値は、包括量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、量子化待ちデータの一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値を含むことを理解できる。式(27)を利用して現在反復中の対応するポイント位置の第1の移動平均値m(t)を計算できる。
m(t)←α×s(t)+(1-α)×m(t-1) 式(27)
ここで、tは、現在反復であり、t-1は、一つ前の反復間隔に基づいて決定した履歴反復であり、m(t-1)は、一つ前の反復間隔に基づいて決定した履歴反復中の第2の移動平均値である。s(t)は、現在反復中のポイント位置であり、第1タイプのポイント位置または第2タイプのポイント位置であり得る。αは、第1のパラメータであり、第1パラメータは、ハイパーパラメータであり得る。
本実施例において、量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算し、量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1データ変動幅を得る。第1のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第1のデータ変動幅はポイント位置の変化傾向の推し量りに用いることができるため、目標反復間隔が量子化待ちデータポイント位置の変化傾向に基づいて変化されるようにすることができ、さらに、計算して得た各目標反復間隔の大きさが量子化待ちデータのポイント位置の変化傾向に基づいて変化されるようにすることができる。量子化パラメータが目標反復間隔に基づいて決定されるため、量子化パラメータに基づいて量子化を実行して得られた量子化データは、量子化待ちデータのポイント位置の変動傾向にもっと符合されるようにすることができ、量子化精度を保証する同時に、ニューラルネットワークの運行効率を向上させることができる。
可能な一実現形態において、前記量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2移動平均値に基づいて、第1のデータ変動幅を得るステップは、
前記第1の移動平均値と前記第2の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第1のデータ変動幅として決定するステップと、を含んでもよい。
第1のデータ変動幅に基づいて、量子化待ちデータに対応する目標反復間隔を決定できることによって、ニューラルネットワークが目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。式(29)に基づいて目標反復間隔Iを計算して得ることができる
ここで、βは、第2のパラメータであり、γは、第3のパラメータである。第2のパラメータおよび第3のパラメータは、ハイパーパラメータであり得る。
第1のデータ変動幅はポイント位置の変化傾向の推し量に用いることができ、第1のデータ変動幅が大きいほど、量子化データの数値範囲変化が激烈になることを意味し、量子化パラメータを更新するときに間隔がもっと短い目標反復間隔Iが必要であることを理解できる。
本実施例において、前記第1の移動平均値と前記第2の移動平均値との差分値を計算し、差分値の絶対値を第1のデータ変動幅として決定する。移動平均値間の差分値に基づいて精確な第1のデータ変動幅を得ることができる。
可能な一実現形態において、当該方法は、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得るステップをさらに含んでもよく、
ここで、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップは、
前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにするステップを含んでもよい。
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得ることができる。さらに、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する逆量子化データに基づいて第2データ変動幅を得ることができる。
本実施例において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得る。前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。第2のデータ変動幅は、データビット幅の変動要件の推し量りに用いることができ、すると、第1のデータ変動幅および第2のデータ変動幅に基づいて計算して得た目標反復間隔は、ポイント位置およびデータビット幅の変動を同時に追跡でき、目標反復間隔も量子化待ちデータ自身のデータ量子化要件にもっと符合されることができる。
可能な一実現形態において、現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の2乗を前記第2のデータ変動幅として決定するステップと、を含んでもよい。
ここで、δは、第4のパラメータであり、第4のパラメータは、ハイパーパラメータであり得る。
異なるデータビット幅を利用して異なる量子化パラメータを得ることができ、さらに、異なる量子化データを得、異なる第2のデータ変動幅が発生されることを理解できる。第2のデータ変動幅は、データビット幅の変化傾向の推し量りに用いることができ、第2のデータ変動幅が大きいほど、もっと短い目標反復間隔でデータビット幅をもっと頻繁に更新する必要があることを意味し、すなわち、もっと小さい目標反復間隔を必要とする。
可能な一実現形態において、前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第1のデータ変動幅および前記第2のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含んでもよい。
ここで、βは、第2のパラメータであり、γは、第3のパラメータである。第2のパラメータおよび第3のパラメータは、ハイパーパラメータであり得る。
第1のデータ変動幅および第2のデータ変動幅を利用して得られた目標反復間隔は、データビット幅およびポイント位置の変化傾向を同時推し量ることができ、両者中の一つの変化傾向がより大きければ、目標反復間隔に該当する変化が発生されるようにすることができることを理解できる。目標反復間隔は、データビット幅およびポイント位置の変化を同時に追踪し、該当する調整を実行できる。目標反復間隔に基づいて更新された量子化パラメータが目標データの変動傾向にもっと符合されるようにすることができ、最終に、量子化パラメータに基づいて得られた量子化データが量子化要件にもっと符合されるようにすることができる。
可能な一実現形態において、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップを含んでもよく、前記更新周期は、少なくとも一つの反復を含む。
ニューラルネットワーク演算のトレーニング過程、および/または、微調整過程において、トレーニングが開始されるかまたは微調整が開始される複数の反復中で、量子化待ちデータの変動幅がより大きい。トレーニングが開始されるかまたは微調整が開始される複数の反復中で目標反復間隔を計算すると、計算して得た目標反復間隔は、その有用性を失う可能性がある。所定の更新周期に基づいて、更新周期以内の各反復中で、目標反復間隔を計算しないし、目標反復間隔も適用しないし、複数の反復中で同一のデータビット幅またはポイント位置を使用するようにすることができる。
反復を更新周期以外まで実行したとき、すなわち、現在反復が更新周期以外に位置するとき、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得し、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定することによって、前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するようにする。例えば、所定の更新周期が100番目の反復であると、1番目の反復から100番目までの反復の反復中では、目標反復間隔を計算しない。反復を101番目の反復まで実行すると、すなわち、現在反復が101番目の反復であると、現在反復が更新周期以外に位置され、この場合、101番目の反復および1番目の反復から100番目の反復の反復中の量子化待ちデータのデータ変動幅に基づいて、101番目の反復中の量子化待ちデータに対応する目標反復間隔を決定し、101番目の反復または101番目の反復と所定の反復の数を隔てている反復中で、計算して得た目標反復間隔を使用できる。
所定の反復の数から更新周期をカウントし始めることができ、例えば、1番目の反復から更新周期中の複数の反復をカウントし始めることもできるし、N番目の反復から更新周期中の複数の反復をカウントし始めることもでき、本発明は、これに対して限定しない。
本実施例において、反復を更新周期以外まで実行したときに、目標反復間隔を計算して使用する。ニューラルネットワーク演算のトレーニング過程または微調整過程の初期段階で、量子化待ちデータの変動幅がより大きいことによって発生する目標反復間隔の有用性が大きくない問題を回避でき、目標反復間隔を使用する場合には、ニューラルネットワークの運行効率をさらに向上させることができる。
可能な一実現形態において、当該方法は、
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含んでもよい。
ニューラルネットワーク演算のトレーニング過程または微調整過程は、複数の周期を含んでもよい。各周期は、複数の反復を含んでもよい。ニューラルネットワーク演算に用いられるデータが完全に一回演算されるのが、一つの周期である。トレーニング過程において、反復の実行につれて、ニューラルネットワークの重み値の変化は安定される傾向があり、トレーニングが安定された後、ニューロン、重み値、バイアス、勾配などの量子化待ちデータはいずれも安定される傾向がある。量子化待ちデータが安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。同様に、微調整過程において、微調整は安定された後、量子化待ちデータのデータビット幅および量子化パラメータも安定される。
このため、トレーニングが安定される周期または微調整が安定される周期に基づいて所定の周期を決定できる。トレーニングが安定された周期または微調整が安定された周期以後の周期を、所定の周期として決定できる。例えば、トレーニングが安定された周期がM番目の周期であると、M番目の周期以後の周期を所定の周期とすることができる。所定の周期内で、一つの周期を隔てて一つの目標反復間隔を計算し、計算して得た目標反復間隔に基づいてデータビット幅または量子化パラメータを一回調整することによって、データビット幅または量子化パラメータの更新回数を減少して、ニューラルネットワークの運行効率を向上させることができる。
例えば、所定の周期は、M番目の周期以後の周期である。M+1番目の周期において、M番目の周期中のP番目の反復に基づいて計算して得た目標反復間隔は、M+1番目の周期中のQ番目の反復まで終了する。M+1番目の周期中のQm+1番目の反復に基づいて自分に対応する目標反復間隔Im+1を計算して得る。M+2番目の周期において、M+1番目の周期中のQm+1番目の反復に対応する反復は、Qm+2番目の反復である。M+1番目の周期中のQm+1番目の反復からM+2番目の周期中のQm+2+Im+1番目の反復までが、周期間隔である。周期間隔内の各反復中で、いずれも、M+1番目の周期中のQm+1番目の反復中で決定したデータビット幅またはポイント位置などの量子化パラメータを使用する。
本実施例において、周期間隔を設定でき、ニューラルネットワーク演算のトレーニングまたは微調整が安定された後、周期間隔に基づいて、周期ごとにデータビット幅またはポイント位置などの量子化パラメータを一回更新する。周期間隔は、トレーニングが安定されたかまたは微調整が安定された後、データビット幅またはポイント位置の更新回数を減少して、量子化精度を保証する同時に、ニューラルネットワークの運行効率を向上させることができる。
前述の各方法の実施例において、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明に説明された動作の順序に限定されないし、なぜなら、本発明によるといくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきであることを説明する必要がある。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
図2および図7のフローチャートでの各ステップは矢印に基づいて順に示したが、これらステップは必ずとして矢印が示す順序に基づいて順に実行する必要がないことをさらに説明する必要がある。本明細書に明確な説明がない限り、これらステップの実行に対して厳密の順序を限定しなく、これらステップを他の順序に基づいて実行してもよい。さらに、図2および図7での少なくとも一部ステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
本発明の実施例は、コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体をさらに提供し、コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワークのデータ量子化処理方法が実現される。
図8は、本発明の一実施例に係るニューラルネットワーク量子化装置を示すブロック図である。図8に示すように、当該装置は、図1に示すプロセッサ100に適用され、当該装置は、データ決定モジュール61と、データ量子化モジュール62と、データ演算モジュール63と、を備える。ここで、ある一つの処理ユニット101中に、データ決定モジュール61と、データ量子化モジュール62と、データ演算モジュール63と、が設置されている。あるいは、データ決定モジュール61、データ量子化モジュール62および、データ演算モジュール63は、異なる処理ユニット101中にそれぞれ設置されている。記憶ユニット102は、量子化待ちデータ、量子化パラメータ、データビット幅などの、データ決定モジュール61、データ量子化モジュール62、および、データ演算モジュール63の運行に関連されるデータを記憶する。
データ決定モジュール61は、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定し、そのうち、各前記量子化待ちデータが、いずれも前記目標データのサブセットであり、前記目標データが、前記量子化待ち層の任意の種類の量子化待ちの演算待ちデータであり、前記演算待ちデータが、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含み、
データ量子化モジュール62は、前記各量子化待ちデータに対して対応する量子化パラメータに基づいてそれぞれ量子化を実行して、前記各量子化待ちデータに対応する量子化データを得、
データ演算モジュール63は、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得ることによって、前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するようにする。
可能な一実現形態において、前記量子化待ち層は、コンボルーション層であり、前記目標データは、入力ニューロンであり、前記データ決定モジュールは、
前記コンボルーション層の入力ニューロンの中から、コンボルーションカーネルの次元およびステップ長に基づいてコンボルーションカーネルに対応する複数の量子化待ちデータを決定するための第1の決定サブモジュールを備えてもよく、前記コンボルーションカーネルの次元は、高さ、幅、および、チャネル数を含む。
可能な一実現形態において、前記データ決定モジュールは、
前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するための第2決定サブモジュールを備え、前記目標データの次元は、バッチ、チャネル、高さ、および、幅を含む。
可能な一実現形態において、前記第2の決定サブモジュールは、
前記量子化待ち層の目標データの中一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定するためのバッチに基づく決定サブモジュールを備える。
可能な一実現形態において、前記第2の決定サブモジュールは、
前記量子化待ち層の目標データの中一つまたは複数のチャネルのデータを、一つの量子化待ちデータとして決定するためのチャネルに基づく決定サブモジュールを備える。
可能な一実現形態において、前記データ決定モジュールは、
前記ニューラルネットワークを運行させる装置のリアルタイム処理能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するための第3の決定サブモジュールを備え、前記各量子化待ちデータのサイズは、前記リアルタイム処理能力と正の関連関係を有する。
可能な一実現形態において、前記装置は、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るためのパラメータ決定サブモジュールをさらに備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第1タイプのポイント位置を得るための第1のポイント位置決定サブモジュールを備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後データの最大値を得るための第1の最大値決定サブモジュールと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第1タイプのスケーリング係数を得るための第1のスケーリング係数決定サブモジュールと、を備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第2タイプのポイント位置を得るための第2のポイント位置決定サブモジュールを備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第2の最大値決定サブモジュールと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第2タイプのスケーリング係数を得るための第1のスケーリング係数決定サブモジュールと、を備える。
可能な一実現形態において、前記パラメータ決定サブモジュールは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える。
可能な一実現形態において、前記装置は、
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第1の量子化誤差決定モジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整して、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記量各子化待ちデータおよび対応する調整ビット幅に基づいて対応する調整量子化パラメータを計算して得ることによって、前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するようにするための調整量子化パラメータ決定モジュールと、をさらに備える。
可能な一実現形態において、前記調整ビット幅決定モジュールは、
前記量子化誤差が第1の誤差閾値よりも大きいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るための第1の調整ビット幅決定サブモジュールを備える。
可能な一実現形態において、前記装置は、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第1の調整後量子化誤差モジュールと、
前記調整後の量子化誤差が前記第1の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第1の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第1の調整ビット幅循環決定モジュールと、をさらに備える。
可能な一実現形態において、前記調整ビット幅決定モジュールは、
前記量子化誤差が前記第1誤差閾値よりも小さい第2誤差閾値よりも小さいと、前記対応するデータビット幅を増加して、前記対応する調整ビット幅を得るための第2の調整ビット幅決定サブモジュールを備える。
可能な一実現形態において、前記装置は、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第2の調整後量子化誤差モジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第2の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第2の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第2の調整ビット幅循環決定モジュールと、をさらに備える。
可能な一実現形態において、前記ニューラルネットワークによって演算される微調整段階、および/または、トレーニング段階において、前記装置は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するための第1のデータ変動幅決定モジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定モジュールをさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む。
可能な一実現形態において、前記装置は、
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するための第1目標反復間隔適用モジュールをさらに備える。
可能な一実現形態において、前記装置は、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第2の目標反復間隔適用モジュールをさらに備え、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含む。
可能な一実現形態において、前記第1のデータ変動幅決定モジュールは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールでと、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第1移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1のデータ変動幅を得るための第1のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第1データ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第1の目標反復間隔決定サブモジュールを備える。
可能な一実現形態において、前記第1のデータ変動幅決定サブモジュールは、
前記第1の移動平均値と前記第2の移動平均値との差分値を計算するための第1の幅度決定サブモジュールと、前記差分値の絶対値を第1のデータ変動幅として決定する第1の幅度決定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて、第2のデータ変動幅を得るための第2のデータ変動幅決定モジュールをさらに備え、
ここで、目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第2の目標反復間隔決定サブモジュールを備える。
可能な一実現形態において、前記第2のデータ変動幅決定モジュールは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するための第2幅度決定サブモジュールを備え、前記誤差の2乗を前記第2データ変動幅として決定する。
可能な一実現形態において、前記第2の目標反復間隔決定サブモジュールは、
前記第1のデータ変動幅および前記第2のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
可能な一実現形態において、前記第1のデータ変動幅決定モジュールは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するための第2のデータ変動幅決定サブモジュールを備え、前記更新周期は、少なくとも一つの反復を含む。
可能な一実現形態において、前記装置は、
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定モジュールと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第1の周期間隔適用モジュール、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第2の周期間隔適用モジュールと、をさらに備える。
本発明の実施例によって提供されるニューラルネットワーク量子化装置によると、対応する量子化パラメータを利用して目標データの中の複数の量子化待ちデータに対してそれぞれ量子化を実行することによって、精度を保証する同時に、記憶データが占める記憶空間を削減し、演算結果の正確性と信頼性を保証し、演算の効率を向上させることができ、また、量子化はニューラルネットワークモデルの大きさも同様に縮小し、当該ニューラルネットワークモデルを運行させる端末に対する性能要件を軽減させて、ニューラルネットワークモデルが計算能力、体積、消費電力が比較的限られている携帯電話などの端末に適用できるようにした。
上述した装置の実施例は、ただ模式的なものであり、本発明の装置は、さらに他の方式によって実現されてもよいことを理解すべきである。例えば、上述した実施例中前記ユニット/モジュールの分割は、ただ論理的機能分割であり、実際に実現において他の分割方式があり得る。例えば、複数のユニット、モジュール、または、アセンブリは、組み合わせてもよいし、もう一つのシステムに統合されてもよく、あるいは、幾つかの特徴は、省略されてもよいし、実行されなくてもよい。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールは、一つのユニット/モジュール中に統合されてもよいし、各ユニット/モジュールが単独的に物理的に存在してもよいし、二つ以上ユニット/モジュールが一つに統合されてもよい。上述した統合されたユニット/モジュールは、ハードウェアの形式を利用して実現されてもよいし、ソフトウェアプログラムモジュールの形式を利用して実現されてもよい。
前記統合されたユニット/モジュールがハードウェアの形式で実現される場合、当該ハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構成の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えばCPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであり得る。特に説明しない限り、前記記憶ユニットは、例えば、抵抗メモリRRAM(Resistive Random Access Memory)、動的ランダムアクセスメモリDRAM(Dynamic Random Access Memory)、静的ランダムアクセスメモリSRAM(Static Random-Access Memory)、拡張動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、 高帯域幅メモリHBM(High-Bandwidth Memory)、ハイブリッドメモリキューブHMC(Hybrid Memory Cube)などの、いかなる適当な磁気記憶媒体あるいは光磁気記憶媒体であり得る。
前記統合されたユニット/モジュールは、ソフトウェアプログラムモジュールの形式で実現され、独立的にした製品として販売または使用される場合、一つのコンピュータ可読取メモリに記憶されてもよい。このような理解に基づいて、本発明の技術案は、本質上、あるいは、先行技術に寄与する部分、あるいは、当該技術案のすべてのまたは一部は、ソフトウェア製品の形式で体現されてもよく、当該コンピュータソフトウェア製品は一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る)に本発明の各実施例に記載の方法のすべてのまたは一部のステップを実行させるためのいくつかの命令を含む。前述したメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、モバイルハードディスク、磁気ディスク、光ディスクなどの、いろんなプログラムコードを記憶できる媒体を含む。
可能な一実現形態において、コンピュータプログラム命令が記憶されている、不揮発性のコンピュータ可読記憶媒体をさらに開示し、前記コンピュータプログラム命令がプロセッサによって実行されると、上述したニューラルネットワーク量子化方法が実現される。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは、上述したニューラルネットワーク量子化装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、上述した人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、前記記憶部品は、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、前記制御部品は、前記人工知能チップの状態を監視制御する。
図9は、本発明の実施例に係るボードカードを示す構成ブロック図である。図9を参照すると、上述したボードカードは、上述したチップ389に加えて、他のサポート部件をさらに備えてもよく、当該サポート部件は、記憶部品390と、インターフェース装置391と、制御部品392と、を含むが、これらに限定されない。
前記記憶部品390は、前記人工知能チップにバスを介して接続され、データを記憶する。前記記憶部品は、複数グループの記憶ユニット393を含んでもよい。各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続される。各グループの前記記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM、ダブルレート同期ダイナミックランダムアクセスメモリ)であってもよいことを理解できる。
上述したプロセッサ100中の記憶ユニット102は、1グループまたは複数グループの記憶ユニット393を含んでもよい。記憶ユニット102が1グループの記憶ユニット393を含む場合、複数の処理ユニット101は、データを記憶するために記憶ユニット393を共有する。記憶ユニット102が複数グループの記憶ユニット393を含む場合、各処理ユニット101に対して専用の1グループの記憶ユニット393を配置し、複数の処理ユニット101中の一部または全部に対して共有の1グループの記憶ユニット393を配置してもよい。
DDRは、クロック周波数を上げずにSDRAMの速度を2倍にすることができる。DDRは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。DDRの速度は、標準SDRAMの2倍である。一つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備えてもよい。一つの実施例において、前記ニューラルネットワークチップの内部は、4個の72ビットDDR4コントローラを備えてもよく、上記の72ビットDDR4コントローラ中の64bitは、データ伝送に使用され、8bitは、ECC検証に使用される。各グループの前記記憶ユニットでDDR4-3200粒子を使用する場合、データ伝送する理論上の帯域幅が25600MB/sに達することを理解できる。
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、一つのクロックサイクルでデータを2回伝送することができる。前記チップ中にDDRを制御ためのコントローラを配置して、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
前記インターフェース装置は、前記人工知能チップに電気的に接続される。前記インターフェース装置は、前記人工知能チップと外部デバイス(例えば、サーバまたはコンピュータ)との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準PCIEインターフェースであってもよい。例えば、処理待ちのデータは、サーバから標準PCIEインターフェースを介して前記チップに伝送されて、データ移送が実現される。好ましくは、PCIE 3.0 X 16インターフェースを使用して伝送する場合、理論上の帯域幅が16000MB/sに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが中継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記人工知能チップの計算結果は、依然としてとして、前記インターフェース装置によって外部デバイス(例えば、サーバ)に伝送し返す。
前記制御デバイスは、前記ク人工知能チップに電気的に接続される。前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。具体的に、前記人工知能チップは、前記制御デバイスとSPIインターフェースを介して電気的に接続されてもよい。前記制御デバイスは、シングルチップマイクロコンピュータ(Micro Controller Unit、MCU)を含んでもよい。前記人工知能チップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。したがって、前記人工知能チップは、複数の負荷や軽負荷などの異なる作業状態にいることができる。前記制御装置によって、前記人工知能チップ中の複数の処理チップ、複数の処理、または、複数の処理回路の作業状態に対する調整制御を実現できる。
可能な一実現形態において、電子デバイスを開示し、当該電子デバイスは上記人工知能チップを備える。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、Webカメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び/又は、医療機器を含む。前記交通ツールは、飛行機、船、及び/又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、B超音波装置、及び/又は、心電計を含む。
上述した実施例において、各実施例に対する説明はそれぞれ重点を置き、ある実施例には詳細な説明がない場合、他の実施例の中の関連説明を参照することができる。上記の実施例の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施例の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が発生されない限り、いずれも本明細書に記載の範囲であると見なされるべきである。
以下の条項によって前述した内容をよりよく理解できる。
条項A1.ニューラルネットワーク量子化方法であって、
前記ニューラルネットワーク中の任意の量子化待ち層に対して、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップと、前記各量子化待ちデータが、いずれも前記目標データのサブセットであり、前記目標データが、前記量子化待ち層の任意の1種の量子化待ちの演算待ちデータであり、前記演算待ちデータが、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含み、
前記各量子化待ちデータを対応する量子化パラメータに基づいてそれぞれ量子化を実行し、前記各量子化待ちデータに対応する量子化データを得るステップと、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るステップと、を含む。
条項A2.条項A1に記載の方法であって、前記量子化待ち層が、コンボルーション層であり、前記目標データが、入力ニューロンであり、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記コンボルーション層の入力ニューロンの中から、コンボルーションカーネルの次元およびステップ長に基づいてコンボルーションカーネルに対応する複数の量子化待ちデータを決定するステップを含み、前記コンボルーションカーネルの次元が、高さ、幅、および、チャネル数を含む。
条項A3.条項A1に記載の方法であって、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップを含み、前記目標データの次元が、バッチ、チャネル、高さ、および、幅を含むステップを含む。
条項A4.条項A3に記載の方法であって、前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記量子化待ち層の目標データの中一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定するステップを含む。
条項A5.条項A3または条項A4に記載の方法であって、前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記量子化待ち層の目標データの中一つまたは複数のチャネルのデータを、一つの量子化待ちデータとして決定するステップを含む。
条項A6.条項A1から条項A5のいずれか1項に記載の方法であって、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップは、
前記ニューラルネットワークを運行させる装置のリアルタイム処理能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するステップを含み、前記各量子化待ちデータのサイズが、前記リアルタイム処理能力と正の関連関係を有する。
条項A7.条項A1から条項A6のいずれか1項に記載の方法であって、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップをさらに含む。
条項A8.条項A7に記載の方法であって、前記各前記量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第1タイプのポイント位置を得るステップを含む。
条項A9.条項A7に記載の方法であって、前記各前記量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第1タイプのスケーリング係数を得るステップと、を含む。
条項A10.条項A7に記載の方法であって、前記各前記量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第2タイプのポイント位置を得るステップを含む。
条項A11.条項A7に記載の方法であって、前記各前記量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るステップと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第2タイプのスケーリング係数を得るステップと、を含む。
条項A12.条項A7に記載の方法であって、前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るステップは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るステップを含む。
条項A13.条項A1から条項A12のいずれか1項に記載の方法であって、
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するステップと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整して、前記各量子化待ちデータに対応する調整ビット幅を得るステップと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算し、対応する調整量子化パラメータを得るステップと、をさらに含む。
条項A14.条項A13に記載の方法であって、前記各前記量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が第1の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項A15.条項A13または条項A14に記載の方法であって、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するステップと、
前記調整後の量子化誤差が前記第1の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第1の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるステップと、をさらに含む。
条項A16.条項A13または条項A14に記載の方法であって、前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るステップは、
前記量子化誤差が前記第1の誤差閾値よりも小さい第2の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るステップを含む。
条項A17.条項A16に記載の方法であって、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するステップと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第2の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第2の誤差閾値に基づいて前記調整ビット幅を減少し続けるステップと、をさらに含む。
条項A18.条項A1から条項A17のいずれか1項に記載の方法であって、前記ニューラルネットワークによって演算される微調整段階、および/または、トレーニング段階において、前記方法は、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するステップと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップと、をさらに含み、前記目標反復間隔が、少なくとも一回の反復を含む。
条項A19.条項A18に記載の方法であって、
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するステップをさらに含む。
条項A20.条項A19に記載の方法であって、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するステップをさらに含み、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含む。
条項A21.条項A18に記載の方法であって、前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するステップと、前記ポイント位置が、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1のデータ変動幅を得るステップと、を含み、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第1のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
条項A22.条項A21に記載の方法であって、前記量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1のデータ変動幅を得るステップは、
前記第1の移動平均値と前記第2の移動平均値との差分値を計算するステップと、
前記差分値の絶対値を第1のデータ変動幅として決定するステップと、を含む。
条項A23.条項A22に記載の方法であって、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得るステップをさらに含み、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
条項A24.条項A23に記載の方法であって、前記現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得るステップは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するステップと、
前記誤差の2乗を前記第2のデータ変動幅として決定するステップと、を含む。
条項A25.条項A23に記載の方法であって、前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップは、
前記第1のデータ変動幅および前記第2のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するステップを含む。
条項A26.条項A18から条項A25のいずれか1項に記載の方法であって、前記現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するステップを含み、前記更新周期は、少なくとも一つの反復を含むステップを含む。
条項A27.条項A18から条項A26のいずれか1項に記載の方法であって、
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するステップと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するステップ、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するステップと、をさらに含む。
条項A28.ニューラルネットワーク量子化装置であって、
前記ニューラルネットワーク中の任意の量子化待ち層に対して、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するためのデータ決定モジュールと、前記各量子化待ちデータが、いずれも前記目標データのサブセットであり、前記目標データが、前記量子化待ち層の任意の1種の量子化待ちの演算待ちデータであり、前記演算待ちデータが、入力ニューロン、重み値、バイアス、勾配の中の少なくとも一種を含み、
前記各量子化待ちデータを対応する量子化パラメータに基づいてそれぞれ量子化を実行し、前記各量子化待ちデータに対応する量子化データを得るためのデータ量子化モジュールと、
前記量子化待ち層が前記目標データの量子化結果に基づいて演算を実行するように、前記各量子化待ちデータに対応する量子化データに基づいて前記目標データの量子化結果を得るためのデータ演算モジュールと、を備える。
条項A29.条項A28に記載の装置であって、前記量子化待ち層が、コンボルーション層であり、前記目標データが、入力ニューロンであり、前記データ決定モジュールは、
前記コンボルーション層の入力ニューロンの中から、コンボルーションカーネルの次元およびステップ長に基づいてコンボルーションカーネルに対応する複数の量子化待ちデータを決定するための第1の決定サブモジュールを備え、前記コンボルーションカーネルの次元が、高さ、幅、および、チャネル数を含む。
条項A30.条項A28に記載の装置であって、前記データ決定モジュールは、
前記目標データの次元に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するための第2の決定サブモジュールを備え、前記目標データの次元が、バッチ、チャネル、高さ、および、幅を含む。
条項A31.条項A30に記載の装置であって、前記第2の決定サブモジュールは、
前記量子化待ち層の目標データの中一つまたは複数のバッチのデータを、一つの量子化待ちデータとして決定するためのバッチに基づく決定サブモジュールを備える。
条項A32.条項A30に記載の装置であって、前記第2の決定サブモジュールは、
前記量子化待ち層の目標データの中一つまたは複数のチャネルのデータを、一つの量子化待ちデータとして決定するためのチャネルに基づく決定サブモジュールを備える。
条項A33.条項A28から条項A32のいずれか1項に記載の装置であって、前記データ決定モジュールは、
前記ニューラルネットワークを運行させる装置のリアルタイム処理能力に基づいて、前記量子化待ち層の目標データの中から複数の量子化待ちデータを決定するための第3の決定サブモジュールを備え、前記各量子化待ちデータのサイズは、前記リアルタイム処理能力と正の関連関係を有する。
条項A34.条項A28から条項A33のいずれか1項に記載の装置であって、
前記各量子化待ちデータおよび対応するデータビット幅に基づいて計算して対応する量子化パラメータを得るためのパラメータ決定サブモジュールをさらに備える。
条項A35.条項A34に記載の装置であって、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータの中の絶対値の最大値および対応するデータビット幅に基づいて、前記各量子化待ちデータの第1タイプのポイント位置を得るための第1のポイント位置決定サブモジュールを備える。
条項A36.条項A34に記載の装置であって、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含まないと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第1の最大値決定サブモジュールと、
前記各量子化待ちデータの中の絶対値の最大値および前記量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第1タイプのスケーリング係数を得るための第1のスケーリング係数決定サブモジュールと、を備える。
条項A37.条項A34に記載の装置であって、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータの中の最大値、最小値、および、対応するデータビット幅に基づいて、前記各量子化待ちデータの第2タイプのポイント位置を得るための第2のポイント位置決定サブモジュールを備える。
条項A38.条項A34に記載の装置であって、前記パラメータ決定サブモジュールは、
前記量子化パラメータがオフセット量を含むと、前記各量子化待ちデータおよび対応するデータビット幅に基づいて量子化後のデータの最大値を得るための第2の最大値決定サブモジュールと、
前記各量子化待ちデータの中の最大値、最小値、および、量子化後のデータの最大値に基づいて、前記各量子化待ちデータの第2タイプのスケーリング係数を得るための第1のスケーリング係数決定サブモジュールと、を備える。
条項A39.条項A34に記載の装置であって、前記パラメータ決定サブモジュールは、
前記各量子化待ちデータの中の最大値および最小値に基づいて、前記各量子化待ちデータのオフセット量を得るためのオフセット量決定サブモジュールを備える。
条項A40.条項A28至39のいずれか1項に記載の装置であって、
前記各量子化待ちデータおよび前記各量子化待ちデータに対応する量子化データに基づいて、前記各量子化待ちデータに対応する量子化誤差を決定するための第1の量子化誤差決定モジュールと、
前記各量子化待ちデータに対応する量子化誤差および誤差閾値に基づいて、前記各量子化待ちデータに対応するデータビット幅を調整し、前記各量子化待ちデータに対応する調整ビット幅を得るための調整ビット幅決定モジュールと、
前記各量子化待ちデータが前記対応する調整量子化パラメータに基づいて量子化を実行するように、前記各量子化待ちデータに対応するデータビット幅を対応する調整ビット幅に更新し、前記各量子化待ちデータおよび対応する調整ビット幅に基づいて計算して対応する調整量子化パラメータを得るための調整量子化パラメータ決定モジュールと、をさらに備える。
条項A41.条項A40に記載の装置であって、前記調整ビット幅決定モジュールは、
前記量子化誤差が第1の誤差閾値よりも大きいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第1の調整ビット幅決定サブモジュールを備える。
条項A42.条項A40または41に記載の装置であって、
前記各量子化待ちデータおよび対応する調整ビット幅に基づいて前記各量子化待ちデータの調整後の量子化誤差を計算するための第1の調整後量子化誤差モジュールと、
前記調整後の量子化誤差が前記第1の誤差閾値以下になるまで、前記調整後の量子化誤差および前記第1の誤差閾値に基づいて前記対応する調整ビット幅を増加し続けるための第1調の整ビット幅循環決定モジュールと、をさらに備える。
条項A43.条項A40または41に記載の装置であって、前記調整ビット幅決定モジュールは、
前記量子化誤差が前記第1の誤差閾値よりも小さい第2の誤差閾値よりも小さいと、前記対応するデータビット幅を増加し、前記対応する調整ビット幅を得るための第2の調整ビット幅決定サブモジュールを備える。
条項A44.条項A43に記載の装置であって、
前記調整ビット幅および前記量子化待ちデータに基づいて前記量子化待ちデータの調整後の量子化誤差を計算するための第2の調整後の量子化誤差モジュールと、
調整ビット幅および前記量子化待ちデータに基づいて計算して得た調整後の量子化誤差が前記第2の誤差閾値以上になるまで、前記調整後の量子化誤差および前記第2の誤差閾値に基づいて前記調整ビット幅を減少し続けるための第2の調整ビット幅循環決定モジュールと、をさらに備える。
条項A45.条項A28から条項A44のいずれか1項に記載の装置であって、前記ニューラルネットワークによって演算される微調整段階、および/または、トレーニング段階において、
現在反復および前記現在反復中の前の反復である履歴反復中の量子化待ちデータのデータ変動幅を取得するための第1のデータ変動幅決定モジュールと、
前記量子化待ち層が前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータのデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための目標反復間隔決定モジュールと、をさらに備え、前記目標反復間隔は、少なくとも一回の反復を含む。
条項A46.条項A45に記載の装置であって、
前記ニューラルネットワークが前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅に基づいて量子化パラメータを決定するように、前記量子化待ちデータの前記現在反復中のデータビット幅に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するデータビット幅を決定するための第1の目標反復間隔適用モジュールをさらに備える。
条項A47.条項A46に記載の装置であって、
前記量子化待ちデータの前記現在反復中の対応するポイント位置に基づいて、前記量子化待ちデータの前記目標反復間隔内の反復中の対応するポイント位置を決定するための第2の目標反復間隔適用モジュールをさらに備え、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含む。
条項A48.条項A45に記載の装置であって、前記第1のデータ変動幅決定モジュールは、
量子化待ちデータの現在反復中のポイント位置、および、履歴反復間隔に基づいて決定した、前記現在反復に対応する履歴反復中のポイント位置に基づいて、量子化待ちデータの各反復間隔に対応するポイント位置の移動平均値を計算するための移動平均値計算サブモジュールと、前記ポイント位置は、第1タイプのポイント位置、および/または、第2タイプのポイント位置を含み、
前記量子化待ちデータの現在反復中のポイント位置の第1の移動平均値、および、一つ前の反復間隔に対応する反復中のポイント位置の第2の移動平均値に基づいて、第1のデータ変動幅を得るための第1のデータ変動幅決定サブモジュールと、を備え、
ここで、前記目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記第1のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第1の目標反復間隔決定サブモジュールを備える。
条項A49.条項A48に記載の装置であって、前記第1のデータ変動幅決定サブモジュールは、
前記第1の移動平均値と前記第2の移動平均値との差分値を計算するための第1の幅度決定サブモジュールを備え、前記差分値の絶対値を第1のデータ変動幅として決定する。
条項A50.条項A49に記載の装置であって、
現在反復中の前記量子化待ちデータおよび前記量子化待ちデータに対応する量子化データに基づいて第2のデータ変動幅を得るための第2のデータ変動幅決定モジュールをさらに備え、
ここで、目標反復間隔決定モジュールは、
前記ニューラルネットワークが前記目標反復間隔に基づいて前記量子化待ちデータの量子化パラメータを更新するように、前記量子化待ちデータの第1のデータ変動幅および前記第2のデータ変動幅に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための第2の目標反復間隔決定サブモジュールを備える。
条項A51.条項A50に記載の装置であって、前記第2のデータ変動幅決定モジュールは、
現在反復中の前記量子化待ちデータと前記量子化待ちデータに対応する量子化データとの間の誤差を計算するための第2の幅度決定サブモジュールを備え、前記誤差の2乗を前記第2のデータ変動幅として決定する。
条項A52.条項A50に記載の装置であって、前記第2の目標反復間隔決定サブモジュールは、
前記第1のデータ変動幅および前記第2のデータ変動幅の中の最大値に基づいて、前記量子化待ちデータに対応する目標反復間隔を決定するための間隔決定サブモジュールを備える。
条項A53.条項A45から条項A52のいずれか1項に記載の装置であって、前記第1のデータ変動幅決定モジュールは、
現在反復が更新周期以外に位置すると、現在反復および履歴反復中の量子化待ちデータのデータ変動幅を取得するための第2のデータ変動幅決定サブモジュールを備え、前記更新周期が、少なくとも一つの反復を含む。
条項A54.条項A45から条項A53のいずれか1項に記載の装置であって、
現在反復が所定の周期内に位置すると、現在反復、前記所定の周期の次の周期中の前記現在反復中の対応する反復、および、現在反復中の対応する反復間隔に基づいて、周期間隔を決定するための周期間隔決定モジュールと、
前記量子化待ちデータの現在反復中の対応するデータビット幅に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのデータビット幅を決定するための第1の周期間隔適用モジュール、または
前記量子化待ちデータの現在反復中の対応するポイント位置に基づいて、前記周期間隔内の反復中の前記量子化待ちデータのポイント位置を決定するための第2の周期間隔適用モジュールと、をさらに備える。
条項A55.人工知能チップであって、前記人工知能チップは、条項A28から条項A54の何れか1項に記載の前記ニューラルネットワーク量子化装置を備える。
条項A56.電子デバイスであって、前記電子デバイスは、条項A55に記載の人工知能チップを備える。
条項A57.ボードカードであって、前記ボードカードは、記憶部品と、インターフェース装置と、制御部品と、条項A56に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶部品、前記制御部品、および、前記インターフェース装置にそれぞれ接続され、
前記記憶部品は、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現し、
前記制御部品は、前記人工知能チップの状態を監視制御する。
条項A58.条項A57記載のボードカードであって、
前記記憶部品は、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップにバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備え、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に用いられ、
前記インターフェース装置は、標準PCIEインターフェースである。
条項A59.コンピュータプログラム命令が記憶されている不揮発性のコンピュータ可読記憶媒体であって、前記コンピュータプログラム命令がプロセッサによって実行されると、実現条項A1から条項A27の何れか1項に記載のニューラルネットワーク量子化方法。
以上、本発明の実施例を詳細に説明し、本明細書では具体的な例を適用して本発明の原理および実施形態を説明した。以上の実施例の説明は、本発明の方法およびその本旨の理解を助けるためにのみ使用される。同時に、当業者によって本発明の旨に依存して本発明の具体的な実施形態および適用範囲に基づいて行われた変更または修正は、いずれも本発明の保護しようとする範囲に属する。上記のように、本明細書の内容を本発明に対する制限として理解してはいけない。