(57)【要約】  方法及び装置が、８ビットウィノグラード畳み込みで統計推論確度を維持する。較正データセットと、３２ビット浮動小数点重み値を含む予め訓練されたＣＮＮがサンプリングされて、入力活性化テンソル及び重みテンソルを生成し得る。入力活性化テンソルと入力行列とを乗算して変換された入力活性化テンソルを生成することにより、変換された入力活性化テンソルが生成され得る。重みテンソルと重み行列とを乗算することにより、変換された重みテンソルが生成され得る。各々の変換されたテンソルについて、スケールファクタが計算され得る。スケールファクタを含む８ビットＣＮＮモデルが生成され得る。
2022501665.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
プロセッサと、
命令を記憶したメモリと、を含み、前記命令は、前記プロセッサにより実行されたときに前記プロセッサに、
較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成し、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成し、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成し、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算し、
前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む８ビットＣＮＮモデルを生成する
ことをさせる、装置。
【請求項２】
複数の画像を含む入力データセットを受信し、
前記８ビットＣＮＮモデル及び前記入力データセットを使用して８ビットコッパースミス‐ウィノグラード畳み込み演算を実行して前記複数の画像の各々を分類する
ように構成されたハードウェアアクセラレータ、をさらに含む請求項１に記載の装置。
【請求項３】
前記メモリは、（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行する、１つ以上の量子化関数の命令を記憶する、請求項１に記載の装置。
【請求項４】
３２ビット浮動小数点重み値を８ビット整数に量子化する前記量子化関数は、
【数１】
2022501665.tif 000039
を含み、Ｑは、前記量子化関数を含み、ｒは、ｎ次元有理テンソルを含み、ｚは、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルを含む、請求項３に記載の装置。
【請求項５】
８ビット整数を３２ビット浮動小数点重み値に逆量子化する前記量子化関数は、
【数２】
2022501665.tif 000040
を含む、請求項４に記載の装置。
【請求項６】
行列加算演算を実行する前記量子化関数は、
【数３】
2022501665.tif 000041
を含む、請求項５に記載の装置。
【請求項７】
行列乗算演算を実行する前記量子化関数は、
【数４】
2022501665.tif 000042
を含む、請求項６に記載の装置。
【請求項８】
前記量子化関数は、以下の式：
【数５】
2022501665.tif 000043
を使用して直接コッパースミス‐ウィノグラード（ＣＷ）畳み込みのスケールファクタを定義する関数をさらに含み、前記重みテンソルについてｐ＝７であり、前記活性化テンソルについてｐ＝８であり、ｍａｘは、各々のそれぞれのテンソルにおける最大値を含む、請求項６に記載の装置。
【請求項９】
前記変換された入力活性化テンソルは、以下の式：
ｘａ＝ＢＴｘｂ
に基づいて計算され、ｘａは、変換された入力活性化テンソルの値を含み、前記入力行列は、ＢＴを含み、ｘｂは、前記入力活性化テンソルの値を含む、請求項１に記載の装置。
【請求項１０】
前記変換された入力活性化テンソルの前記スケールファクタは、以下の式：
【数６】
2022501665.tif 000044
に基づいて計算され、ｑｘａは、前記変換された入力活性化テンソルの前記スケールファクタを含み、ｑｘｂは、前記入力活性化テンソルの量子化値を含む、請求項９に記載の装置。
【請求項１１】
前記変換された重みテンソルは、以下の式：
ｗａ＝ＧｗｂＧＴ
に基づいて計算され、ｗａは、前記変換された重みテンソルの値を含み、前記重み行列は、Ｇを含み、ｗｂは、前記重みテンソルの値を含む、請求項１に記載の装置。
【請求項１２】
前記変換された重みテンソルの前記スケールファクタは、以下の式：
【数７】
2022501665.tif 000045
に基づいて計算され、ｑｗａは、前記変換された重みテンソルの前記スケールファクタを含み、ｑｗｂは、前記重みテンソルの量子化値を含む、請求項１１に記載の装置。
【請求項１３】
較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成するステップと、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成するステップと、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成するステップと、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算するステップと、
コンピュータプロセッサの演算により、前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む８ビットＣＮＮモデルを生成するステップと、
を含む方法。
【請求項１４】
複数の画像を含む入力データセットを受信するステップと、
プロセッサを含むハードウェアアクセラレータにより、前記８ビットＣＮＮモデル及び前記入力データセットを使用して８ビットコッパースミス‐ウィノグラード（ＣＷ）畳み込み演算を実行して前記複数の画像の各々を分類するステップと、
をさらに含む請求項１３に記載の方法。
【請求項１５】
（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行する、１つ以上の量子化関数をさらに含む請求項１３に記載の方法。
【請求項１６】
前記変換された入力活性化テンソルは、以下の式：
ｘａ＝ＢＴｘｂ
に基づいて計算され、ｘａは、変換された入力活性化テンソルの値を含み、前記入力行列は、ＢＴを含み、ｘｂは、前記入力活性化テンソルの値を含み、前記変換された入力活性化テンソルの前記スケールファクタは、以下の式：
【数８】
2022501665.tif 000046
に基づいて計算され、ｑｘａは、前記変換された入力活性化テンソルの前記スケールファクタを含み、ｑｘｂは、前記入力活性化テンソルの量子化値を含む、請求項１３に記載の方法。
【請求項１７】
前記変換された重みテンソルは、以下の式：
ｗａ＝ＧｗｂＧＴ
に基づいて計算され、ｗａは、前記変換された重みテンソルの値を含み、前記重み行列は、Ｇを含み、ｗｂは、前記重みテンソルの値を含み、前記変換された重みテンソルの前記スケールファクタは、以下の式：
【数９】
2022501665.tif 000047
に基づいて計算され、ｑｗａは、前記変換された重みテンソルの前記スケールファクタを含み、ｑｗｂは、前記重みテンソルの量子化値を含む、請求項１６に記載の方法。
【請求項１８】
コンピューティングデバイスに、
較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成することと、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成することと、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成することと、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算することと、
コンピュータプロセッサの演算により、前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む８ビットＣＮＮモデルを生成することと、
をさせるコンピュータプログラム。
【請求項１９】
前記コンピューティングデバイスに、
複数の画像を含む入力データセットを受信することと、
ハードウェアアクセラレータにより、前記８ビットＣＮＮモデル及び前記入力データセットを使用して８ビットコッパースミス‐ウィノグラード（ＣＷ）畳み込み演算を実行して前記複数の画像の各々を分類することと、
をさらにさせる請求項１８に記載のコンピュータプログラム。
【請求項２０】
前記コンピューティングデバイスに、
（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行することをさらにさせる請求項１８に記載のコンピュータプログラム。
【請求項２１】
請求項１８乃至２０のうちいずれか１項記載のコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される実施形態は、ニューラルネットワークの分野に関する。より具体的には、実施形態は、８ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置に関する。
【背景技術】
【０００２】
ディープニューラルネットワーク（ＤＮＮ）は、コンピュータビジョン、画像認識、発話処理、自然言語処理、言語翻訳、及び自律車両などの広範なドメインにわたる複雑な問題を解決するツールである。ＤＮＮの一例は、畳み込みニューラルネットワーク（ＣＮＮ）である。しかしながら、ＤＮＮにより実行される計算演算の複雑さに起因して、ＤＮＮの産業上の展開には課題が残っている。低精度推論を可能にすることは、ＤＮＮの計算複雑性を低減するための１つのアプローチである。低精度は一般に、３２ビット浮動小数点値（又はＦＰ３２）などのより大きいビット幅を有するデータ型よりも、８ビット整数（又はＩＮＴ８）などのより小さいビット幅を有するデータ型を使用することを指す。ハードウェアアクセラレーションでは、低精度（例えば、ＩＮＴ８）推論演算は、１秒当たりにより多くの演算を計算し、メモリアクセス圧を低減し、メモリキャッシュをより良く利用し、より高いスループットとより低いレイテンシをもたらすことができる。これは、ディープラーニングのニーズに具体的に合わせられた数値表現及び演算の革新を必要とする。
【０００３】
畳み込みは、ＤＮＮモデルの計算集約的な演算である。近年、ＩＮＴ８推論は、ＦＰ３２ベースの演算と比較して有意な確度損失なく畳み込みに対して実装されている。コッパースミス‐ウィノグラード（「ＣＷ」、「ウィノグラード」とも呼ばれる）アルゴリズムは、必要な計算を減らすようにメモリを活用することにより、より高速な畳み込み計算を提供する。しかしながら、ＣＷアルゴリズムは３２ビット浮動小数点訓練及び推論演算に限定され、ＩＮＴ８設定では成功裏に適用されていない。ＣＷアルゴリズムとＩＮＴ８計算を成功裏にマージすることは、畳み込み計算演算において改善されたシステム性能を提供することになる。
【図面の簡単な説明】
【０００４】
【図１】システムの一実施形態を示す。
【図２】例示的な処理フローの一実施形態を示す。
【図３】第１の論理フローの一実施形態を示す。
【図４】第２の論理フローの一実施形態を示す。
【図５】第３の論理フローの一実施形態を示す。
【図６】第４の論理フローの一実施形態を示す。
【図７】記憶媒体の一実施形態を示す。
【図８】システムの一実施形態を示す。
【発明を実施するための形態】
【０００５】
本明細書に開示される実施形態は、８ビット整数（integer）（又は「ＩＮＴ８」）データ型を使用してコッパースミス‐ウィノグラード（Coppersmith-Winograd）畳み込みを実行するフレームワークを提供する。従来、ＣＷアルゴリズムのバージョンは、ＦＰ３２データ型の処理に限定されていた。一般に、ＣＷアルゴリズムは、定数行列を使用した活性化テンソル（activation  tensor）（特徴テンソルとも呼ばれる）及び重みテンソルの変換を必要とする。しかしながら、このような変換は、テンソルのデータ分布を変える。したがって、ＩＮＴ８畳み込みに対する既存のアプローチは、ＣＷアルゴリズムで使用される１つ以上のスケールファクタ（scale  factors）がＩＮＴ８演算に使用できないため、ＣＷアルゴリズムに適用できない。さらに、ＦＰ３２からＩＮＴ８へのコンバージョンは、ＦＰ３２実装により提供される確度の有意な損失を結果としてもたらす可能性がある。例えば、符号なしＩＮＴ８値は、０〜２５５（利用可能な小数点の精度がない）におよび得る一方で、ＦＰ３２値は、３．４×１０−３８〜３．４×１０３８（最大７の小数点の精度を有する）におよび得る。有利には、実施形態は、ＦＰ３２実装に対して有意な確度損失なくＩＮＴ８設定にＣＷアルゴリズムを適用できるようにスケールファクタを決定する較正アプローチを提供する。
【０００６】
一般に、本明細書に開示される実施形態は、ＦＰ３２値及びＦＰ３２較正データセットで予め訓練されたＣＮＮをサンプリングして、入力活性化テンソルと重みテンソルを生成する。入力活性化テンソルと重みテンソルは、それぞれ、変換された入力活性化テンソルと変換された重みテンソルを生成するように修正され得る。変換された入力活性化テンソルと変換された重みテンソルは、次いで、変換された入力活性化テンソルと変換された重みテンソルのそれぞれのスケールファクタを生成するために使用され得る。次いで、スケールファクタを含む８ビット（又はＩＮＴ８）最適化ＣＮＮモデルが生成され得る。次いで、８ビット最適化ＣＮＮモデルは、ＦＰ３２実装に対して有意な確度損失なく１つ以上の量子化（quantization）及び／又は逆量子化（dequantization）関数を使用してＩＮＴ８ＣＷ畳み込みを実行するために使用され得る。
【０００７】
有利には、８ビット最適化ＣＮＮモデルは、８ビット最適化ＣＮＮモデルをファインチューニング又は再訓練する必要なくＦＰ３２ＣＮＮモデルに基づいて生成される。少なくとも１つの実施形態において、ハードウェアアクセラレータが、ＩＮＴ８ＣＷ畳み込みを実行してもよい。ＩＮＴ８設定でＣＷアルゴリズムを使用するデータの処理は、ハードウェアフットプリント、消費電力、速度、及びメモリ要件の実質的な改善を提供する。同様に、ハードウェアアクセラレータがＩＮＴ８ＣＷ畳み込みを実行したとき、従来のハードウェア及び／又はソフトウェアの実装に対して処理性能が改善される。
【０００８】
本明細書で用いられる表記法及び命名法を一般に参照し、以下に続く詳細な説明の１つ以上の部分は、コンピュータ又はコンピュータのネットワーク上で実行されるプログラム手順の観点から提示されることがある。これらの手続き的説明及び表現は、当業者がその作用の実体を他の当業者に最も効果的に伝達するために用いられる。手順はここで、及び一般に、所望の結果を導く自己矛盾のない動作シーケンスであると考えられる。これらの動作は、物理数量の物理操作を必要とするものである。必ずではないが通常、これらの数量は、記憶、転送、結合、比較、及びその他の方法で操作することが可能な電気的、磁気的、又は光学的信号の形態をとる。これらの信号をビット、値、要素、シンボル、文字、用語、数字などとして参照することは、主として一般的な用法という理由で、時に便利であることがわかる。しかしながら、これら及び同様の用語は適切な物理数量に関連づけられるべきであり、これら数量に適用される便利なラベルに過ぎないことに留意されたい。
【０００９】
さらに、これらの操作は、人間のオペレータにより実行される知能的オペレーションに通常関連づけられる追加又は比較などの用語でしばしば参照される。しかしながら、人間のオペレータのこのような能力は、１つ以上の実施形態の一部を形成する本明細書に記載される動作のいずれにおいても必要でなく、あるいはほとんどの場合に望まれない。むしろ、これらの動作はマシン動作である。様々な実施形態の動作を実行するための有用なマシンは、本明細書の教示に従って書かれた内部に記憶されたコンピュータプログラムにより選択的に活性化又は構成される汎用デジタルコンピュータを含み、かつ／あるいは必要な目的のために特別に構築された装置を含む。さらに、様々な実施形態が、これらの動作を実行する装置又はシステムに関する。これらの装置は、必要な目的のために特別に構築されてもよく、あるいは汎用コンピュータを含んでもよい。様々なこれらのマシンの必要な構造は、与えられる説明から明らかであろう。
【００１０】
次に、図面を参照し、ここで、同様の参照番号は全体を通して同様の要素を参照するために使用される。以下の記載では、説明のため、多くの特定の詳細が、それらの十分な理解を提供するために記載されている。しかしながら、新規の実施形態はこれらの特定の詳細なしに実施できることが明らかであり得る。他の例では、良く知られた構造及びデバイスは、その説明を容易にするようにブロック図形式で示される。その意図は、特許請求の範囲内の全ての修正、同等物、及び代替をカバーすることである。
【００１１】
図１は、コンピューティングシステム１００の一実施形態を示す。システム１００は、サーバ、ワークステーション、ラップトップ、又は仮想化コンピューティングシステムなどの、任意の数及びタイプのコンピューティングシステムを表す。例えば、システム１００は、ディープラーニングアクセラレータカード、ディープラーニングアクセラレーションを有するプロセッサ、ニューラルコンピュートスティック（neural  compute  stick）などの組み込みシステムでもよい。いくつかの例において、システム１００は、システムオンチップ（ＳｏＣ）を含み、他の実施形態において、システム１００は、２つ以上のディスクリートコンポーネントを有するプリント回路板又はチップパッケージを含む。図示のように、コンピューティングシステム１００は、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、ＩＮＴ８較正論理１０５、及び８ビットハードウェアアクセラレータ１０６を含む。
【００１２】
ニューラルネットワーク論理１０１は、ハードウェア、ソフトウェア、及び／又はこれらの組み合わせを表し、これは、近似値関数について決定して解くためのダイナミックプログラミングを実現するニューラルネットワーク（例えば、ＤＮＮ、ＣＮＮ等）を含み得る。少なくとも１つの実施形態において、ニューラルネットワーク論理１０１は、特徴抽出及び変換のための非線形処理ユニットの複数層のカスケードから形成されるＣＮＮを備える。ＣＮＮの各連続層は、前の層からの出力を入力として使用する。ＣＮＮは、入力層、出力層、及び複数の隠れ層を一般に含み得る。ＣＮＮの隠れ層は、畳み込み層、プーリング層、全結合層（fully  connected  layers）、及び／又は正規化層を含み得る。
【００１３】
一般に、ニューラルネットワークは、２つの処理フェーズ、訓練フェーズ及び推論フェーズを含む。訓練の間、ディープラーニングエキスパートは、典型的には、ネットワークを設計し、ニューラルネットワーク内の層の数、各層により実行される演算、及び層間の接続性を確立する。多くの層は、層により実行される正確な計算を決定するパラメータ、典型的にはフィルタ重みを有する。訓練プロセスの目的は、通常、重みの空間を通る確率的勾配降下に基づく移動を介して、フィルタ重みを学習することである。訓練フェーズは、活性化テンソルとも呼ばれる出力特徴マップを生成する。活性化テンソルは、ニューラルネットワーク論理１０１のＣＮＮの各畳み込み層に対して生成され得る。所与の畳み込み層の出力特徴マップは、次の畳み込み層への入力でもよい。ひとたび訓練プロセスが完了すると、訓練されたニューラルネットワーク（例えば、ＦＰ３２ＣＮＮモデル１０７、及び／又はＩＮＴ８ＣＮＮモデル１０８）に基づく推論は、典型的には、入力データに対して順方向伝搬計算を採用して、出力データを生成する。
【００１４】
例えば、コンピューティングシステム１００は、顔検出、文字認識、発話認識などのためのカスケードされた段階を有するニューラルネットワーク論理１０１に提供してもよい。次いで、ニューラルネットワーク論理１０１は、テンソルデータの形式である入力データセット（例えば、顔の画像、筆跡、印刷された情報など）に基づいて訓練を実行し得る。テンソルは、幾何ベクトル、スカラ、及び他のテンソルの間の線形関係を記述する幾何学的オブジェクトである。数値の編成された多次元配列、又はテンソルデータは、テンソルを表し得る。訓練は、ニューラルネットワーク論理１０１のための精緻化された重みを生成し得る。例えば、精緻化された重みは、数字及び／又は英語のアルファベットにおける各文字の特性である特徴を指定してもよい。推論フェーズの間、ニューラルネットワーク論理１０１は、入力として画像を受信し、入力画像に対して所望の処理を実行し得る。例えば、入力画像は、筆跡を示してもよく、訓練されたニューラルネットワーク論理１０１は、筆跡に含まれる数字及び／又は英語アルファベットの文字を識別してもよい。少なくとも１つの実施形態において、ハードウェアアクセラレータ１０６は、ＩＮＴ８推論演算を実行する。
【００１５】
ＣＷアルゴリズム論理１０２は、ＣＷアルゴリズムの１つ以上のバージョンを実現するハードウェア、ソフトウェア、及び／又はこれらの組み合わせである。ＣＷアルゴリズムは、従来のアルゴリズムより速く行列乗算（したがって、ＣＮＮ畳み込み）を実行し得る算術投影（arithmetic  projections）を使用する行列乗算アルゴリズムである。一般に、ＣＷアルゴリズムは入力画像の小さいタイル上で動作し、入力タイルと重みフィルタは変換され、変換の出力は要素ごとに一緒に乗算され、その結果は畳み込みの出力を得るために逆変換される。しかしながら、従来、ＣＷアルゴリズム論理１０２は、ニューラルネットワーク論理１０１のＦＰ３２モデル１０７及び関連データなどの３２ビット浮動小数点（floating  point）値で動作することに限定されている。
【００１６】
しかしながら、有利には、本明細書に開示される実施形態は、ＣＷアルゴリズム論理１０２が、ニューラルネットワーク論理１０１のＩＮＴ８ＣＮＮモデル１０８及び関連データなどの８ビット整数値を処理することを可能にする。そうするために、本明細書に開示される実施形態は、量子化論理１０３の量子化関数１０４とＩＮＴ８較正論理を活用する。量子化論理１０３は一般に、量子化関数１０４を適用してＦＰ３２値をＩＮＴ８値に変換し、ＩＮＴ８値をＦＰ３２値に変換するように構成される。以下の式１は、ｎ次元（ｎは正の整数である）有理テンソル（rational  tensor）ｒ（例えば、ＦＰ３２テンソル）を、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルｚ（例えば、ＩＮＴ８テンソル）に変換するための、一例示的な量子化関数１０４  Ｑ：Ｒｎ×Ｒ×Ｎ→Ｚｎ×Ｒを示す。
【数１】
2022501665.tif 000003
【００１７】
式１において、関数Ｒｏｕｎｄは、有理テンソル（例えば、ＦＰ３２テンソル）を整数テンソル（例えば、ＩＮＴ８テンソル）で近似する丸め関数である。量子化関数１０４は、ＩＮＴ８値をＦＰ３２値に変換するための１つ以上の逆量子化関数をさらに含む。以下の式２は、一例示的な逆量子化関数１０４  Ｄ：Ｚｎ×Ｒ→Ｒｎである。
【数２】
2022501665.tif 000004
【００１８】
示されるように、式２は、有理テンソルｒをその量子化形式ｚで近似する。量子化関数１０４は、テンソルｒ及びｚの加算及び乗算演算を含む、（ｚ，ｑ）に対する算術演算を実行する関数をさらに含んでもよい。式３は、（ｚ，ｑ）の一例示的な加算演算を示す。
【数３】
2022501665.tif 000005
【００１９】
示されるように、式３の加算演算は、式１を活用してテンソルｚにおけるＩＮＴ８整数をＦＰ３２に逆量子化し、加算演算は、逆量子化されたＦＰ３２値に対して実行される。次いで、ＦＰ３２加算演算の結果は、式２を使用して量子化される。最小関数を実装することにより、式３はビットオーバーフローがないことを保証する。式４は、（ｚ，ｑ）の一例示的な乗算演算を示す。
【数４】
2022501665.tif 000006
【００２０】
式４で定義された乗算関数を適用する（例えば、テンソルとスケールファクタを乗算する）とき、データ範囲が変わる可能性がある。したがって、変換を説明するために、スケールファクタが必要とされる。一実施形態において、ＩＮＴ８較正論理１０５は、ＣＷアルゴリズム論理１０２によりＩＮＴ８データの処理を実行するために必要な、活性化テンソルのための必要なスケールファクタと、重みテンソルのスケールファクタを生成する。
【００２１】
一実施形態において、量子化関数１０４は、最大較正ストラテジを実装して８ビットＣＷ畳み込みのスケールファクタを決定する。しかしながら、最小較正ストラテジなどの他の較正ストラテジが使用されてもよい。一般に、最大較正ストラテジでは、活性化テンソルの最大値が識別され、重みテンソルの最大値が識別される。次いで、量子化関数１０４は、以下の式５を使用して、精度ｐを有するスケールファクタを定義し得る。
【数５】
2022501665.tif 000007
【００２２】
一実施形態において、活性化テンソルが非負の値を含むとき、活性化テンソルについてｐ＝８である。したがって、活性化テンソルについて、スケールファクタは２５５／ｍａｘとして定義され得、ｍａｘは、活性化テンソルに格納された最大値である。一実施形態において、重みテンソル（これは、負の値を含むことも含まないこともあり、したがって、符号を示すためにビットが予約される必要がある）についてｐ＝７である。したがって、重みテンソルについて、スケールファクタは１２７／ｍａｘとして定義され得、ｍａｘは、所与の重みテンソルにおける最大値である。ＩＮＴ８較正論理１０５はさらに、量子化関数１０４（例えば、上記式１〜５）を適用して、ＣＷアルゴリズム論理１０２がＦＰ３２からＩＮＴ８値へのコンバージョンに起因して精度及び／又は確度を損なうことなくＩＮＴ８値の畳み込み（例えば、ＩＮＴ８ＣＮＮモデル１０８）を計算できるように構成される。次に、図２を参照してさらなる詳細が説明され、図２は、ＩＮＴ８ＣＷ畳み込みを較正する一例示的な処理フロー２００を示す。
【００２３】
図示のように、処理フロー２００は、較正データセット２０１と、予め訓練されたＦＰ３２重みを有する１つ以上のＣＮＮモデル２０２を含む。較正データセット２０１は、画像のデータセットなど、任意のタイプのデータセットでもよい。予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２は、ＦＰ３２データに基づいてＣＮＮ（例えば、ニューラルネットワーク論理１０１、又は異なるＣＮＮ）により生成されたＦＰ３２ＣＮＮモデル１０７を表し、ＦＰ３２重み値を含む。したがって、予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２は、ＦＰ３２重みテンソル値、ＦＰ３２活性化テンソル値、ＦＰ３２バイアステンソル値、及び他のタイプのＦＰ３２データを含み得る。
【００２４】
処理フロー２００において、ＩＮＴ８較正論理１０５は、次いで、サンプリングブロック２０３を開始し得る。一般に、サンプリング２０３は、較正データセット２０１及び予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２に対してニューラルネットワーク論理１０１により実行される推論演算のシミュレーションである。シミュレーション２０３は、予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２の各畳み込み層に対してテンソルを生成する。生成されたテンソルは、各畳み込み層についての入力活性化テンソル２０５及び重みテンソル２０６を含み得る。一般に、較正データセット２０１内の所与の画像のサンプリング２０３は、畳み込み層の第１のデータ範囲（例えば、入力活性化テンソル２０５及び重みテンソル２０６のデータ範囲）を生成し得る。しかしながら、異なる画像のサンプリング２０３は、異なるデータ範囲を生成し得る。したがって、較正データセット２０１内の全ての画像のサンプリング２０３は、較正データセット２０１の全てのデータ範囲をマージする。
【００２５】
処理フロー２００は、ＩＮＴ８ＣＷ畳み込み較正フェーズ２０４をさらに含む。較正フェーズ２０４において、ＩＮＴ８較正論理１０５（又は、別の指定されたシステムコンポーネント）は、入力活性化テンソル２０５及び入力行列２０７の行列乗算を実行し得る。入力行列２０７は、定数値を格納した行列でもよい。入力活性化テンソル２０５と入力行列２０７とにおける乗算演算の出力は、変換された入力活性化テンソル２０９である。同様に、較正フェーズ２０４において、ＩＮＴ８較正論理１０５は、重みテンソル２０６及び重み行列２０８に対して行列乗算を実行し得る。重み行列２０８は、定数値を格納してもよい。重みテンソル２０６と重み行列２０８とにおける乗算演算の出力は、変換された重みテンソル２１０である。
【００２６】
一例示的なＣＷアルゴリズムＦ（２，３）について、一例示的な入力行列２０７は、式６において行列Ｂ（及び、対応する転置行列ＢＴ）として与えられる。
【数６】
2022501665.tif 000008
【００２７】
Ｆ（２，３）  ＣＷアルゴリズムが本明細書で一例として用いられているが、本開示の手法はＣＷアルゴリズムの全ての実装に等しく適用される。一例示的な重み行列２０８が、式７において行列Ｇ（及び、対応する転置行列ＧＴ）として与えられる。
【数７】
2022501665.tif 000009
【００２８】
次いで、変換された入力活性化テンソル２０９及び変換された重みテンソル２１０は、以下の式８〜１１を使用して較正され得る。
【数８】
2022501665.tif 000010
【００２９】
一般に、式８〜１１において、ｘｂは、（例えば、変換前の）入力活性化テンソル２０５に対応し、ｍａｘｘｂは、入力活性化テンソル２０５における最大値に対応し、ｗｂは、（変換前の）重みテンソル２０６に対応し、ｍａｘｗｂは、重みテンソル２０６における最大値に対応する。さらに、式８〜１１において、ｘａは、変換された入力活性化テンソル２０９に対応し、ｑｘａは、変換された入力活性化テンソル２０９のスケールファクタに対応し、ｗａは、変換された重みテンソル２１０に対応し、ｑｗａは、変換された重みテンソル２１０のスケールファクタに対応する。したがって、式８において、変換された入力活性化テンソル２０９は、入力活性化テンソル２０５（例えば、ｘｂ）、入力行列２０７の転置行列（例えば、ＢＴ）、及び入力行列２０７（例えば、Ｂ）に基づいて決定される。式９において、変換された入力活性化テンソル２０９のスケールファクタｑｘａは、入力活性化テンソルのスケールファクタ（例えば、ｑｘｂ）、変換された入力活性化テンソル２０９の最大値（例えば、ｍａｘｘａ）、及び入力活性化テンソル２０５の最大値（例えば、ｍａｘｘｂ）に基づいて決定される。
【００３０】
同様に、式１０において、変換された重みテンソル２１０（例えば、ｗａ）は、重み行列２０８（例えば、Ｇ）、重み行列２０８の転置行列（例えば、ＧＴ）、及び重みテンソル２０６（例えば、ｗｂ）に基づいて決定される。式１１において、変換された重みテンソル２１０のスケールファクタ（例えば、ｑｗａ）は、重みテンソル２０６のスケールファクタ（例えば、ｑｗｂ）、変換された重みテンソル２１０の最大値（例えば、ｍａｘｗａ）、及び重みテンソル２０６の最大値（例えば、ｍａｘｗｂ）に基づいて決定される。較正２０４の出力は、スケールファクタを有する８ビット最適化ＣＮＮモデル２１１であり、これは、図１のＩＮＴ８ＣＮＮモデル１０８に対応し得る。８ビット最適化ＣＮＮモデル２１１は、較正フェーズ２０４の間に決定されるスケールファクタを含む。
【００３１】
次いで、スケールファクタを有する８ビット最適化ＣＮＮモデル２１１は、ＣＷアルゴリズム論理１０２を使用してＩＮＴ８ＣＷ畳み込みを実行するために、ＣＷアルゴリズム論理１０２により使用され得る。例えば、スケールファクタを有する８ビット最適化ＣＮＮモデル２１１は、ＣＷアルゴリズム論理１０２を使用して画像のデータセットを分類するために畳み込みにおいて使用されてもよい。そうすることで、ＦＰ３２ベースの畳み込みに対して確度の有意な損失なく、従来の手法に対してより高速な畳み込み処理を提供し得る。
【００３２】
図３は、論理フロー３００の一実施形態を示す。論理フロー３００は、本明細書に記載される１つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム１００（又は、そのコンポーネント）は、論理フロー３００の動作を実行して、ＩＮＴ８データ実装においてＣＷアルゴリズム論理１０２を使用してもよい。
【００３３】
図３に示す例示の実施形態において、論理フロー３００はブロック３１０で始まり得る。ブロック３１０「較正データセット及び予め訓練されたＦＰ３２ＣＮＮモデルを受信する」において、システム１００は、較正データセット２０１と、予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２を受信し得る。較正データセット２０１は、画像認識動作のために、予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２を訓練するために使用される画像のデータセットなど、任意のデータセットでもよい。ＣＮＮモデル２０２は、較正データセット２０１に基づいてニューラルネットワーク論理１０２により生成されてもよく、かつ／あるいは記憶場所から受信されてもよい。上述のように、ＣＮＮモデル２０２は、例えばカーネル重み、畳み込み等のための、３２ビット浮動小数点（ＦＰ３２）値を含む。ＦＰ３２カーネル重みは、入力チャンネル、出力チャンネル、カーネルサイズ入力チャンネル、カーネルサイズ出力チャンネルのための重みを含んでもよい。上述のように、ＦＰ３２重みは、各畳み込み層についてＣＮＮモデル２０２に規定される。
【００３４】
ブロック３２０「量子化関数を受信する」において、システム１００は、量子化関数１０４を受信し得る。量子化関数１０４は、例えば、ＦＰ３２値をＩＮＴ８値に量子化する、ＩＮＴ８値をＦＰ３２値に逆量子化する、行列加算関数、行列乗算関数、及びスケールファクタ関数である、上記の式１〜５を含んでもよい。ブロック３３０「較正データセット及び予め訓練されたＦＰ３２ＣＮＮモデルのシミュレートされた推論に基づいて入力活性化テンソル及び重みテンソルを生成する」において、コンピューティングシステム１００は、較正データセット２０１及び予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２をサンプリングすることにより、入力活性化テンソル２０５及び重みテンソル２０６を生成する。例えば、ニューラルネットワーク論理１０２は、較正データセット２０１及び予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２を使用して推論演算をシミュレートし、入力活性化テンソル２０５及び重みテンソル２０６を生成してもよい。上述のように、入力活性化テンソル２０５は、ＣＮＮモデル２０２の各畳み込み層についてのＦＰ３２値を有する入力活性化テンソル（及び、出力活性化テンソル）を含む。同様に、重みテンソル２０６は、ＣＮＮモデル２０２の各畳み込み層についてのＦＰ３２重みの重みテンソルを含む。
【００３５】
ブロック３４０「ＩＮＴ８ＣＷ畳み込み較正を実行してスケールファクタを生成する」において、システム１００は、例えば、上記の式６〜１２に少なくとも部分的に基づいて、ＩＮＴ８ＣＷ畳み込み較正２０４を実行する。ＩＮＴ８ＣＷ畳み込み較正２０４は、入力行列２０７と入力活性化テンソル２０５とのＦＰ３２行列乗算に基づいて変換された入力活性化テンソル２０９を生成することを含む。ＩＮＴ８ＣＷ畳み込み較正２０４は、重み行列２０８と重みテンソル２０６とのＦＰ３２行列乗算に基づいて変換された重みテンソル２１０を生成することをさらに含む。ＩＮＴ８ＣＷ畳み込み較正２０４は、変換された入力活性化テンソル２０９の１つ以上のスケールファクタと変換された重みテンソル２１０の１つ以上のスケールファクタを生成することをさらに含む。
【００３６】
ブロック３５０「スケールファクタを含む８ビットＣＮＮモデルを生成する」において、システム１００は、ブロック３４０において生成されたスケールファクタを有する８ビット（又は、ＩＮＴ８）ＣＮＮモデル２１１を生成する。８ビットＣＮＮモデル２１１は、入力活性化テンソル、出力活性化テンソル、及び重みテンソルをさらに含む。ブロック３６０「８ビットＣＮＮモデル及びＣＷアルゴリズムを使用して推論を実行する」において、推論演算が、８ビットＣＮＮモデル２１１、ＣＷアルゴリズム論理１０２、及び入力データセットを使用して実行され得る。例えば、入力データセットは、筆跡を示す画像を含んでもよく、推論演算は、示された筆跡を分類してもよい。別の例として、入力データセットは、顔を示す画像を含んでもよく、推論演算は、顔を分類して（例えば、顔認識を実行して）もよい。少なくとも１つの実施形態において、８ビットハードウェアアクセラレータ１０６が推論演算を実行する。
【００３７】
図４は、論理フロー４００の一実施形態を示す。論理フロー４００は、本明細書に記載される１つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム１００（又は、そのコンポーネント）は、論理フロー４００を実行して、推論演算をシミュレートして入力活性化テンソル２０５及び重みテンソル２０６を生成してもよい。
【００３８】
図４に示す例示の実施形態において、論理フロー４００はブロック４１０で始まり得る。ブロック４１０「訓練画像の較正データセット及びＦＰ３２ＣＮＮモデルを受信する」において、システム１００は、較正データセット２０１と、予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２を受信し得る。上述のように、較正データセット２０１は、訓練画像を含んでもよい。ブロック４１０「較正データセット内の訓練画像及びＦＰ３２ＣＮＮモデルにおける推論演算をシミュレートする」において、システム１００のニューラルネットワーク論理１０１は、較正データセット２０１と予め訓練されたＦＰ３２重みを有するＣＮＮモデル２０２とを使用して推論演算をシミュレートし得る。ブロック４３０「シミュレートされた推論演算に基づいて、入力活性化テンソル及び重みテンソルを生成する」において、ニューラルネットワーク論理１０１は、シミュレートされた推論演算に基づいて、入力活性化テンソル２０５及び重みテンソル２０６を生成し得る。上述のように、入力活性化テンソル２０５及び重みテンソル２０６は、ＦＰ３２値を含む。
【００３９】
図５は、論理フロー５００の一実施形態を示す。論理フロー５００は、本明細書に記載される１つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム１００（又は、そのコンポーネント）は、論理フロー５００を実行して、ＩＮＴ８ＷＣ畳み込み演算における使用のためのスケールファクタを有する８ビットＣＮＮモデル２１１を生成してもよい。
【００４０】
図５に示す例示の実施形態において、論理フロー５００は、ブロック５１０で始まり得る。ブロック５１０「入力行列、重み行列、入力活性化テンソル、及び重みテンソルを受信する」において、システム１００は、入力行列２０７、重み行列２０８、入力活性化テンソル２０５、及び重みテンソル２０６を受信し得る。上述のように、入力行列２０７及び／又は重み行列２０８は、定数値を含んでもよい。ブロック５２０「入力行列と入力活性化テンソルとの行列乗算を実行して変換された活性化テンソルを生成する」において、システム１００は、入力行列２０７及び入力活性化テンソル２０５に対して行列乗算演算を実行して変換された入力活性化テンソル２０９を生成し得る。少なくとも１つの実施形態において、システム１００は、式６及び８を使用して、行列乗算演算を実行して変換された入力活性化テンソル２０９を生成する。ブロック５３０「重み行列と重みテンソルとの行列乗算を実行して変換された活性化テンソルを生成する」において、システム１００は、重み行列２０８及び重みテンソル２０６に対して行列乗算演算を実行して変換された重みテンソル２１０を生成し得る。少なくとも１つの実施形態において、システム１００は、式７及び１０を使用して、行列乗算演算を実行して変換された重みテンソル２１０を生成する。
【００４１】
ブロック５４０「変換された入力活性化テンソル及び変換された重みテンソルのスケールファクタを計算する」において、システム１００は、変換された入力活性化テンソル２０９のスケールファクタと、変換された重みテンソル２１０のスケールファクタを計算する。少なくとも１つの実施形態において、システムは、式９を使用して、変換された入力活性化テンソル２０９のスケールファクタを計算する。少なくとも１つの実施形態において、システムは、式１１を使用して、変換された重みテンソル２１０のスケールファクタを計算する。ブロック５５０「変換された入力活性化テンソル及び変換された重みテンソルのスケールファクタを含む８ビットＣＮＮモデルを生成し、記憶する」において、システム１００は、スケールファクタを有する８ビット最適化ＣＮＮモデル２１１を生成し、これを将来の使用のために記憶媒体に記憶する。そうすることで、システム１００（例えば、ハードウェアアクセラレータ１０６）がＩＮＴ８ＣＷ畳み込み演算を実行することができ、それにより、システム性能を改善する。
【００４２】
図６は、論理フロー６００の一実施形態を示す。論理フロー６００は、本明細書に記載される１つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム１００は、論理フロー６００を実行して、ハードウェアアクセラレータ１０６上でＩＮＴ８ＣＷ畳み込みを実行してもよい。
【００４３】
図６に示す例示の実施形態において、論理フロー６００はブロック６１０で始まり得る。ブロック６１０「入力データセットとスケールファクタを有する８ビットＣＮＮモデルを受信する」において、ハードウェアアクセラレータ１０６は、入力データセット（又は、その一部）と、スケールファクタを有する８ビット最適化ＣＮＮモデル２１１を受信し得る。入力データセットは、分類のための画像を含んでもよい。ブロック６２０「量子化関数、ニューラルネットワーク論理、及びＣＷアルゴリズムを受信する」において、ハードウェアアクセラレータ１０６は、量子化関数１０４、ニューラルネットワーク論理１０１、及びＣＷアルゴリズム論理１０３を実行するように構成され得る。ブロック６３０「ＣＷアルゴリズム、量子化関数、入力データセット、及びスケールファクタを有する８ビットＣＮＮモデルを使用してハードウェアアクセラレータ上でｉｎｔ８ＣＷ畳み込みを実行する」において、ハードウェアアクセラレータ１０６上で実行されるニューラルネットワーク論理１０１は、入力データセットとスケールファクタを有する８ビット最適化ＣＮＮモデル２１１とについてのＩＮＴ８ＣＷ畳み込み演算を実行し得る。上述のように、推論演算は、式１〜５に少なくとも部分的に基づいてもよい。ブロック６４０「生成された出力を記憶する」において、推論演算の出力（例えば、分類された画像）は、記憶媒体に記憶され得る。同様に、出力は、ディスプレイを介してユーザに提示されてもよい。
【００４４】
図７は、記憶媒体７００の一実施形態を示す。記憶媒体７００は、光学、磁気、又は半導体記憶媒体などの、任意の非一時的コンピュータ読取可能記憶媒体又はマシン読取可能記憶媒体を含んでもよい。様々な実施形態において、記憶媒体７００は、製造品を含んでもよい。いくつかの実施形態において、記憶媒体７００は、図３〜図６の３００、４００、５００、６００に関してなどで本明細書に記載される論理フロー又は動作のうち１つ以上を実現するためのコンピュータ実行可能命令などの、コンピュータ実行可能命令を記憶してもよい。記憶媒体７００は、ニューラルネットワーク論理１０１、ＣＷアルゴリズム２０１、量子化論理１０３、及びＩＮＴ８較正論理１０５のためのコンピュータ実行可能命令をさらに記憶してもよい。コンピュータ読取可能記憶媒体又はマシン読取可能記憶媒体の例は、揮発性メモリ又は不揮発性メモリ、取外し可能又は取外し不能メモリ、消去可能又は消去不能メモリ、書込可能又は再書込可能メモリなどを含む、電子データを記憶することができる任意の有形媒体を含んでもよい。コンピュータ実行可能命令の例は、ソースコード、コンパイル型コード、解釈型コード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、ビジュアルコードなどの任意の適切なタイプのコードを含んでもよい。実施形態はこの文脈で限定されない。
【００４５】
図８は、システム８０００の一実施形態を示す。システム８０００は、分散コンピューティングシステム、スーパーコンピュータ、高性能コンピューティングシステム、コンピューティングクラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアント‐サーバシステム、パーソナルコンピュータ（ＰＣ）、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）などのハンドヘルドデバイス、又は情報を処理、表示、又は送信する他のデバイスなどの、複数のプロセッサコアを有するコンピュータシステムである。同様の実施形態が、例えば、ポータブル音楽プレーヤ又はポータブルビデオプレーヤ、スマートフォン又は他の携帯電話、電話、デジタルビデオカメラ、デジタルスチルカメラ、外部記憶デバイスなどのエンタテインメントデバイスを含んでもよい。さらなる実施形態は、より大規模のサーバ構成を実現する。他の実施形態において、システム８０００は、１つのコアを有する単一のプロセッサ、又は複数のプロセッサを有してもよい。用語「プロセッサ」は、単一のコアを有するプロセッサ、又は複数のプロセッサコアを有するプロセッサパッケージを指すことに留意する。少なくとも１つの実施形態において、コンピューティングシステム８０００は、システム１００を表す。より一般的には、コンピューティングシステム８０００は、本明細書で図１〜図７を参照して記載される全ての論理、システム、論理フロー、方法、装置、及び機能を実現するように構成される。
【００４６】
本出願で用いられるとき、用語「システム」及び「コンポーネント」及び「モジュール」は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すことが意図され、その例が、例示的なシステム８０００により提供されている。例えば、コンポーネントは、これらに限られないが、プロセッサで実行されているプロセス、プロセッサ、ハードディスクドライブ、複数の記憶ドライブ（光学及び／又は磁気記憶媒体のもの）、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び／又はコンピュータでもよい。例として、サーバで実行されているアプリケーションとサーバとの双方がコンポーネントであり得る。１つ以上のコンポーネントが、プロセス及び／又は実行スレッド内に存在することができ、コンポーネントは、１つのコンピュータ上に局所化し、かつ／あるいは２つ以上のコンピュータ間で分散することができる。さらに、コンポーネントは、動作を協調するために、様々なタイプの通信媒体により互いに通信上結合されてもよい。協調は、一方向又は双方向の情報交換を含んでもよい。例えば、コンポーネントは、通信媒体を介して通信される信号の形式で情報を通信してもよい。この情報は、様々な信号線に割り当てられた信号として実装することができる。このような割り当てにおいて、各メッセージは信号である。しかしながら、さらなる実施形態が、代替的にデータメッセージを採用してもよい。そのようなデータメッセージは、様々な接続を通して送信されてもよい。例示的な接続は、パラレルインターフェース、シリアルインターフェース、及びバスインターフェースを含む。
【００４７】
図８に示すように、システム８０００は、プラットフォームコンポーネントを取り付けるためのマザーボード８００５を備える。マザーボード８００５は、ポイントツーポイントインターコネクトプラットフォームであり、該プラットフォームは、ウルトラパスインターコネクト（Ultra  Path  Interconnect、ＵＰＩ）などのポイントツーポイントインターコネクト８０５６を介して結合される第１のプロセッサ８０１０と第２のプロセッサ８０３０を含む。他の実施形態において、システム８０００は、マルチドロップバスなどの別のバスアーキテクチャのものでもよい。さらに、プロセッサ８０１０及び８０３０の各々は、プロセッサコア８０２０及び８０４０をそれぞれ含む複数のプロセッサコアを備えたプロセッサパッケージでもよい。システム８０００は、２ソケット（２Ｓ）プラットフォームの一例であるが、他の実施形態が、２つより多くのソケット又は１つのソケットを含んでもよい。例えば、いくつかの実施形態が、４ソケット（４Ｓ）プラットフォーム又は８ソケット（８Ｓ）プラットフォームを含んでもよい。各ソケットは、プロセッサのマウントであり、ソケット識別子を有し得る。用語のプラットフォームは、プロセッサ８０１０及びチップセット８０６０などの特定のコンポーネントが取り付けられたマザーボードを指すことに留意する。いくつかのプラットフォームが、さらなるコンポーネントを含んでもよく、いくつかのプラットフォームが、プロセッサ及び／又はチップセットを取り付けるためのソケットのみを含んでもよい。
【００４８】
プロセッサ８０１０、８０２０は、Ｉｎｔｅｌ（登録商標）  Ｃｅｌｅｒｏｎ（登録商標）、Ｃｏｒｅ（登録商標）、Ｃｏｒｅ（２）Ｄｕｏ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）、Ｘｅｏｎ（登録商標）、及びＸＳｃａｌｅ（登録商標）プロセッサ、ＡＭＤ（登録商標）  Ａｔｈｌｏｎ（登録商標）、Ｄｕｒｏｎ（登録商標）、及びＯｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭ（登録商標）アプリケーション、組み込み及びセキュアプロセッサ、ＩＢＭ（登録商標）及びＭｏｔｏｒｏｌａ（登録商標）  ＤｒａｇｏｎＢａｌｌ（登録商標）及びＰｏｗｅｒＰＣ（登録商標）プロセッサ、ＩＢＭ及びＳｏｎｙ（登録商標）  Ｃｅｌｌプロセッサ、及び同様のプロセッサを限定なく含む、様々な市販のプロセッサのいずれかでもよい。デュアルマイクロプロセッサ、マルチコアプロセッサ、及び他のマルチプロセッサアーキテクチャも、プロセッサ８０１０、８０２０として採用されてもよい。
【００４９】
第１のプロセッサ８０１０は、統合メモリコントローラ（integrated  memory  controller、ＩＭＣ）８０１４と、ポイントツーポイント（point-to-point、Ｐ‐Ｐ）インターフェース８０１８及び８０５２を含む。同様に、第２のプロセッサ８０３０は、ＩＭＣ８０３４と、Ｐ‐Ｐインターフェース８０３８及び８０５４を含む。ＩＭＣ８０１４及び８０３４は、プロセッサ８０１０及び８０３０をそれぞれ、それぞれのメモリ、メモリ８０１２及びメモリ８０３２に結合する。メモリ８０１２及び８０３２は、ダブルデータレートタイプ３（ＤＤＲ３）又はタイプ４（ＤＤＲ４）同期ＤＲＡＭ（ＳＤＲＡＭ）などの、プラットフォームのメインメモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））の一部でもよい。本実施形態において、メモリ８０１２及び８０３２は、それぞれのプロセッサ８０１０及び８０３０にローカルにアタッチする。他の実施形態において、メインメモリは、バス及び共有メモリハブを介してプロセッサと結合してもよい。
【００５０】
プロセッサ８０１０及び８０３０は、それぞれ、プロセッサコア８０２０及び８０４０の各々に結合されたキャッシュを含む。本実施形態において、プロセッサ８０１０のプロセッサコア８０２０とプロセッサ８３０のプロセッサコア８０４０は、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５を含む。プロセッサコア８０２０、８４０は、メモリ管理論理回路網（図示せず）をさらに含んでもよく、これは、プロセッサコア８０２０、８０４０内のニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能を実現するように構成された回路網を表してもよく、あるいは、プロセッサ内の回路網と、キャッシュ、メモリ８０１２、バッファ、レジスタなどのメモリ内のニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能の全部又は一部を記憶する媒体との組み合わせを表してもよい。いくつかの実施形態において、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能は、チップセット８０６０を介してプロセッサ８０１０、８３０にアタッチされた記憶媒体７００などのメモリにコードとして全体的に又は部分的に存在する。ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能はまた、メモリ８０１２及び／又はプロセッサのキャッシュなどのメモリに全体的に又は部分的に存在してもよい。さらに、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能はまた、プロセッサ８０１０内の回路網として全体的に又は部分的に存在してもよく、例えば、プロセッサ８０１０、８０３０内のレジスタ８０１６などのレジスタ又はバッファ内で、又はプロセッサ８０１０、８０３０の命令パイプライン内で演算を実行してもよい。さらに、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能は、８ビット最適化ＣＮＮモデル２１１を生成し、それに基づいて推論演算を実行するために、ハードウェアアクセラレータ１０６のプロセッサと統合されてもよい。
【００５１】
上述のように、プロセッサ８０３０、及び／又はインターフェース（Ｉ／Ｆ）８０６６を介してチップセット８０６０と結合されるハードウェアアクセラレータ１０６内のプロセッサなど、プロセッサ８０１０及び８０３０のうち１つより多くが、ニューラルネットワーク論理１０１、ＣＷアルゴリズム論理１０２、量子化論理１０３、及びＩＮＴ８較正論理１０５の機能を含んでもよい。Ｉ／Ｆ８０６６は、例えば、ペリフェラルコンポーネントインターコネクト拡張（Peripheral  Component  Interconnect-enhanced、ＰＣＩ‐ｅ）でもよい。
【００５２】
第１のプロセッサ８０１０は、Ｐ‐Ｐインターコネクト８０５２及び８０６２を介してチップセット８０６０に結合し、第２のプロセッサ８０３０は、Ｐ‐Ｐインターコネクト８０５４及び８０６４を介してチップセット８０６０に結合する。ダイレクトメディアインターフェース（Direct  Media  Interface、ＤＭＩ）８０５７及び８０５８は、それぞれ、Ｐ‐Ｐインターコネクト８０５２及び８０６２と、Ｐ‐Ｐインターコネクト８０５４及び８０６４を結合し得る。ＤＭＩは、例えば、ＤＭＩ３．０などの８ギガトランスファー毎秒（Giga  Transfers  per  second、ＧＴ／ｓ）を容易にする高速インターコネクトでもよい。他の実施形態において、プロセッサ８０１０及び８０３０は、バスを介して相互接続してもよい。
【００５３】
チップセット８０６０は、プラットフォームコントローラハブ（platform  controller  hub、ＰＣＨ）などのコントローラハブを含んでもよい。チップセット８０６０は、クロック機能を実行するためのシステムクロックを含んでもよく、プラットフォーム上の周辺デバイスの接続を容易にするためのユニバーサルシリアルバス（ＵＳＢ）、ペリフェラルコンポーネントインターコネクト（peripheral  component  interconnect、ＰＣＩ）、シリアルペリフェラルインターコネクト（serial  peripheral  interconnect、ＳＰＩ）、統合インターコネクト（integrated  interconnect、Ｉ２Ｃ）などのＩ／Ｏバスのインターフェースを含んでもよい。他の実施形態において、チップセット８０６０は、メモリコントローラハブ、グラフィックスコントローラハブ、及び入出力（Ｉ／Ｏ）コントローラハブを有するチップセットなどの複数のコントローラハブを含んでもよい。
【００５４】
本実施形態において、チップセット８０６０は、トラステッドプラットフォームモジュール（trusted  platform  module、ＴＰＭ）８０７２とＵＥＦＩ、ＢＩＯＳ、フラッシュコンポーネント８０７４にインターフェース８０７０を介して結合する。ＴＰＭ８０７２は、デバイスに暗号キーを統合することによりハードウェアを安全にするように設計された専用のマイクロコントローラである。ＵＥＦＩ、ＢＩＯＳ、フラッシュコンポーネント８０７４は、プリブートコードを提供してもよい。
【００５５】
さらに、チップセット８０６０は、チップセット８０６０を高性能グラフィックスエンジン、グラフィックスカード８０６５と結合するＩ／Ｆ８０６６を含む。他の実施形態において、システム８０００は、プロセッサ８０１０及び８０３０とチップセット８０６０との間にフレキシブルディスプレイインターフェース（flexible  display  interface、ＦＤＩ）を含んでもよい。ＦＤＩは、プロセッサ内のグラフィックスプロセッサコアをチップセット８０６０と相互接続する。
【００５６】
様々なＩ／Ｏデバイス８０９２は、バス８０８１を第２のバス８０９１に結合するバスブリッジ８０８０と、バス８０８１をチップセット８０６０に接続するＩ／Ｆ８０６８と共に、バス８０８１に結合する。一実施形態において、第２のバス８０９１は、ローピンカウント（low  pin  count、ＬＰＣ）バスでもよい。様々なデバイスが第２のバス８０９１に結合してもよく、例えば、キーボード８０８２、マウス８０８４、通信デバイス８０８６、及び本明細書で前に説明されたコンピュータ実行可能コードを記憶し得る記憶媒体７００が含まれる。さらに、オーディオＩ／Ｏ８０９０が、第２のバス８０９１に結合してもよい。Ｉ／Ｏデバイス８０９２、通信デバイス８０８６、及び記憶媒体７００の多くがマザーボード８００５上に存在してもよく、一方で、キーボード８０８２及びマウス８０８４はアドオン周辺機器でもよい。他の実施形態において、一部又は全部のＩ／Ｏデバイス８０９２、通信デバイス８０８６、及び記憶媒体７００がアドオン周辺機器であり、マザーボード８００５上に存在しない。
【００５７】
少なくとも１つの例の１つ以上の態様は、プロセッサ内の様々な論理を表す少なくとも１つのマシン読取可能媒体上に記憶された代表的な命令により実現されてもよく、これは、マシン、コンピューティングデバイス、又はシステムにより読み出されたときにマシン、コンピューティングデバイス、又はシステムに、本明細書に記載の手法を実行する論理を製作させる。「ＩＰコア」として知られるこのような表現は、有形のマシン読取可能媒体に記憶され、論理又はプロセッサを作成する製作マシンにロードするために様々な顧客又は製造施設に供給されてもよい。
【００５８】
様々な例は、ハードウェア要素、ソフトウェア要素、又は双方の組み合わせを使用して実現されてもよい。いくつかの例において、ハードウェア要素は、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含んでもよい。いくつかの例において、ソフトウェア要素は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらの任意の組合せを含んでもよい。例がハードウェア要素を使用して実現されるか、及び／又はソフトウェア要素を使用して実現されるかの決定は、所与の実装のために所望される所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、及び他の設計又は性能制約などの、任意の数のファクタに従って変わってもよい。
【００５９】
いくつかの例は、製造品又は少なくとも１つのコンピュータ読取可能媒体を含んでもよい。コンピュータ読取可能媒体は、論理を記憶するための非一時的記憶媒体を含んでもよい。いくつかの例において、非一時的記憶媒体は、揮発性メモリ又は不揮発性メモリ、取外し可能又は取外し不能メモリ、消去可能又は消去不能メモリ、書込可能又は再書込可能メモリなどを含む、電子データを記憶することができる１つ以上のタイプのコンピュータ読取可能記憶媒体を含んでもよい。いくつかの例において、論理は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、ＡＰＩ、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらの任意の組合せなどの様々なソフトウェア要素を含んでもよい。
【００６０】
いくつかの実施形態によれば、コンピュータ読取可能媒体は、マシン、コンピューティングデバイス、又はシステムにより実行されたときにマシン、コンピューティングデバイス、又はシステムに、記載の例に従って方法及び／又は動作を実行させる命令を記憶又は維持するための非一時的記憶媒体を含んでもよい。命令は、ソースコード、コンパイル型コード、解釈型コード、実行可能コード、静的コード、動的コードなどの任意の適切なタイプのコードを含んでもよい。命令は、特定の機能を実行するようにマシン、コンピューティングデバイス、又はシステムに指示するために、予め定義されたコンピュータ言語、方法、又は構文に従って実装されてもよい。命令は、任意の適切な高水準、低水準、オブジェクト指向、ビジュアル、コンパイル型、及び／又は解釈型プログラミング言語を使用して実装されてもよい。
【００６１】
いくつかの例は、表現「１つの例において」又は「一例」をその派生語と共に用いて説明されている場合がある。これらの用語は、例に関連して説明された特定の特徴、構造、又は特性が少なくとも１つの例に含まれることを意味する。本明細書の様々な箇所におけるフレーズ「一例において」の出現は、必ずしも全て同じ実施形態を参照するものではない。
【００６２】
いくつかの例は、表現「結合された」及び「接続された」をその派生語と共に用いて説明されている場合がある。これらの用語は、必ずしも互いの同義語として意図されているものではない。例えば、用語「接続された」及び／又は「結合された」を用いた説明は、２つ以上の要素が互いに直接物理的又は電気的に接触していることを示し得る。しかしながら、用語「結合された」は、２つ以上の要素が互いに直接接触しておらず、しかし依然として互いに協同又は相互作用することも意味し得る。
【００６３】
さらに、上述の詳細な説明では、開示を合理化するために、様々な特徴が単一の例にまとめられている。この開示方法は、請求される例が各請求項に明示的に記載されているより多くの特徴を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明対象事項は、単一の開示された例の全ての特徴より少ない特徴に存する。したがって、以下の特許請求の範囲はここで本詳細な説明に組み込まれ、各請求項は別個の例として独立している。別記の特許請求の範囲において、用語「including」及び「in  which」は、それぞれ、それぞれの用語「comprising」及び「wherein」の平易な英語の同等物として用いられる。さらに、用語「第１の」、「第２の」、「第３の」などは、ラベルとして用いられているに過ぎず、それらの対象に数値的要件を課すことは意図されない。
【００６４】
対象事項は、構造的特徴及び／又は方法論的動作に特有の言語で記載されているが、別記の特許請求の範囲に定義される対象事項は、必ずしも上記の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上記の特定の特徴及び動作は、特許請求の範囲を実現する例示的な形態として開示されている。
【００６５】
プログラムコードの記憶及び／又は実行に適したデータ処理システムは、システムバスを介してメモリ要素に直接又は間接的に結合された、少なくとも１つのプロセッサを含むであろう。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリ、バルクストレージ、及びキャッシュメモリを含むことができ、キャッシュメモリは、コードが実行中にバルクストレージから取り出されなければならない回数を減らすように少なくとも一部のプログラムコードの一時的なストレージを提供する。用語「コード」は、アプリケーション、ドライバ、プロセス、ルーチン、メソッド、モジュール、ファームウェア、マイクロコード、及びサブプログラムを含む広範囲のソフトウェアコンポーネント及び構成をカバーする。ゆえに、用語「コード」は、処理システムにより実行されたときに所望の１つ又は複数の動作を実行する命令の集合を指すために使用され得る。
【００６６】
本明細書に記載される論理回路網、デバイス、及びインターフェースは、ハードウェアで実現され、１つ以上のプロセッサで実行されるコードで実現される機能を実行し得る。論理回路網は、１つ以上の論理機能を実現するハードウェア又はハードウェア及びコードを指す。回路網はハードウェアであり、１つ以上の回路を指し得る。各回路は、特定の機能を実行し得る。回路網の回路は、１つ以上のコンダクタ、集積回路、チップパッケージ、チップセット、メモリなどと相互接続されたディスクリート電気コンポーネントを含んでもよい。集積回路は、シリコンウェハなどのサブストレート上に作成された回路を含み、コンポーネントを含んでもよい。また、集積回路、プロセッサパッケージ、チップパッケージ、及びチップセットは、１つ以上のプロセッサを含んでもよい。
【００６７】
プロセッサは、入力において命令及び／又はデータなどの信号を受信し、信号を処理して少なくとも１つの出力を生成してもよい。コードを実行する間、コードは、プロセッサパイプラインを構成するトランジスタの物理的状態及び特性を変更する。トランジスタの物理的状態は、プロセッサ内のレジスタに格納される１及び０の論理ビットに翻訳される。プロセッサは、トランジスタの物理的状態をレジスタに転送し、トランジスタの物理的状態を別の記憶媒体に転送することができる。
【００６８】
プロセッサは、プロセッサの全体的な機能を実行するために実装された１つ以上のサブ機能を実行するための回路を含んでもよい。プロセッサの一例は、状態機械、又は少なくとも１つの入力及び少なくとも１つの出力を含む特定用途向け集積回路（ＡＳＩＣ）である。状態機械は、少なくとも１つの入力に対して所定の一連のシリアル及び／又はパラレルの操作又は変換を実行することにより、少なくとも１つの入力を操作して少なくとも１つの出力を生成し得る。
【００６９】
上記の論理は、集積回路チップのための設計の一部でもよい。チップ設計は、グラフィカルコンピュータプログラミング言語で作成され、コンピュータ記憶媒体又はデータ記憶媒体（ディスク、テープ、物理的ハードドライブ、又は、ストレージアクセスネットワークなどにおける仮想ハードドライブなど）に記憶される。設計者が、チップ、又はチップを製作するために使用されるフォトリソグラフィマスクを製作しない場合、設計者は、結果として生じた設計を物理的手段により（例えば、設計を記憶した記憶媒体のコピーを提供することにより）又は電子的に（例えば、インターネットを通じて）、そのようなエンティティに直接又は間接的に送信する。次いで、記憶された設計は、製作のための適切なフォーマット（例えば、ＧＤＳＩＩ）にコンバートされる。
【００７０】
結果として生じた集積回路チップは、未加工ウェハ形態で（すなわち、複数のパッケージ化されていないチップを有する単一のウェハとして）、裸のダイとして、又はパッケージ化された形態で製作者により配布することができる。後者の場合、チップは、単一のチップパッケージ（プラスチックキャリアなどであり、マザーボードに添付されたリードを有するか、又は他のより高水準のキャリア）に、又はマルチチップパッケージ（表面相互接続又は埋め込み相互接続のいずれか又は双方を有するセラミックキャリアなど）に取り付けられる。いずれの場合も、チップは、次いで、（ａ）プロセッサボード、サーバプラットフォーム、又はマザーボードなどの中間製品、又は（ｂ）最終製品のいずれかの一部として、他のチップ、ディスクリート回路素子、及び／又は他の信号処理デバイスと一体化される。
【００７１】
以下の例はさらなる実施形態に関し、該実施形態から多くの組み合わせ及び構成が明らかであろう。
【００７２】
例１は、装置であって、プロセッサと、命令を記憶したメモリと、を含み、上記命令は、上記プロセッサにより実行されたときに上記プロセッサに、較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成し、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成し、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成し、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算し、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む８ビットＣＮＮモデルを生成することをさせる。
【００７３】
例２は、例１に記載の対象事項を含み、当該装置は、複数の画像を含む入力データセットを受信し、上記８ビットＣＮＮモデル及び上記入力データセットを使用して８ビットコッパースミス‐ウィノグラード畳み込み演算を実行して上記複数の画像の各々を分類するように構成されたハードウェアアクセラレータ、をさらに含む。
【００７４】
例３は、例１〜２に記載の対象事項を含み、上記メモリは、（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行する、１つ以上の量子化関数の命令を記憶する。
【００７５】
例４は、例３に記載の対象事項を含み、３２ビット浮動小数点重み値を８ビット整数に量子化する上記量子化関数は、
【数９】
2022501665.tif 000011
を含み、Ｑは、上記量子化関数を含み、ｒは、ｎ次元有理テンソルを含み、ｚは、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルを含む。
【００７６】
例５は、例４に記載の対象事項を含み、８ビット整数を３２ビット浮動小数点重み値に逆量子化する上記量子化関数は、
【数１０】
2022501665.tif 000012
を含む。
【００７７】
例６は、例５に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数１１】
2022501665.tif 000013
を含む。
【００７８】
例７は、例６に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数１２】
2022501665.tif 000014
を含む。
【００７９】
例８は、例７に記載の対象事項を含み、上記量子化関数は、以下の式：
【数１３】
2022501665.tif 000015
を使用して直接ＣＷ畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてｐ＝７であり、上記活性化テンソルについてｐ＝８であり、ｍａｘは、各々のそれぞれのテンソルにおける最大値を含む。
【００８０】
例９は、例１〜８に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式：
ｘａ＝ＢＴｘｂ
に基づいて計算され、ｘａは、変換された入力活性化テンソルの値を含み、上記入力行列は、ＢＴを含み、ｘｂは、上記入力活性化テンソルの値を含む。
【００８１】
例１０は、例９に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式：
【数１４】
2022501665.tif 000016
に基づいて計算され、ｑｘａは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、ｑｘｂは、上記入力活性化テンソルの量子化値を含む。
【００８２】
例１１は、例１〜１０に記載の対象事項を含み、上記変換された重みテンソルは、以下の式：
ｗａ＝ＧｗｂＧＴ
に基づいて計算され、ｗａは、上記変換された重みテンソルの値を含み、上記重み行列は、Ｇを含み、ｗｂは、上記重みテンソルの値を含む。
【００８３】
例１２は、例１１に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式：
【数１５】
2022501665.tif 000017
に基づいて計算され、ｑｗａは、上記スケールファクタ又は上記変換された重みテンソルを含み、ｑｗｂは、上記重みテンソルの量子化値を含む。
【００８４】
例１３は、方法であって、較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成するステップと、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成するステップと、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成するステップと、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算するステップと、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む８ビットＣＮＮモデルを生成するステップと、を含む。
【００８５】
例１４は、例１３に記載の対象事項を含み、複数の画像を含む入力データセットを受信するステップと、プロセッサを含むハードウェアアクセラレータにより、上記８ビットＣＮＮモデル及び上記入力データセットを使用して８ビットコッパースミス‐ウィノグラード（ＣＷ）畳み込み演算を実行して上記複数の画像の各々を分類するステップと、をさらに含む。
【００８６】
例１５は、例１３〜１４に記載の対象事項を含み、（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行する、１つ以上の量子化関数をさらに含む。
【００８７】
例１６は、例１５に記載の対象事項を含み、３２ビット浮動小数点重み値を８ビット整数に量子化する上記量子化関数は、
【数１６】
2022501665.tif 000018
を含み、Ｑは、上記量子化関数を含み、ｒは、ｎ次元有理テンソルを含み、ｚは、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルを含む。
【００８８】
例１７は、例１６に記載の対象事項を含み、３２ビット浮動小数点重み値を８ビット整数に逆量子化する上記量子化関数は、
【数１７】
2022501665.tif 000019
を含む。
【００８９】
例１８は、例１７に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数１８】
2022501665.tif 000020
を含む。
【００９０】
例１９は、例１８に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数１９】
2022501665.tif 000021
を含む。
【００９１】
例２０は、例１９に記載の対象事項を含み、上記量子化関数は、以下の式：
【数２０】
2022501665.tif 000022
を使用して直接ＣＷ畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてｐ＝７であり、上記活性化テンソルについてｐ＝８であり、ｍａｘは、各々のそれぞれのテンソルにおける最大値を含む。
【００９２】
例２１は、例１〜２０に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式：
ｘａ＝ＢＴｘｂ
に基づいて計算され、ｘａは、変換された入力活性化テンソルの値を含み、上記入力行列は、ＢＴを含み、ｘｂは、上記入力活性化テンソルの値を含む。
【００９３】
例２２は、例２１に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式：
【数２１】
2022501665.tif 000023
に基づいて計算され、ｑｘａは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、ｑｘｂは、上記入力活性化テンソルの量子化値を含む。
【００９４】
例２３は、例２２に記載の対象事項を含み、上記変換された重みテンソルは、以下の式：
ｗａ＝ＧｗｂＧＴ
に基づいて計算され、ｗａは、上記変換された重みテンソルの値を含み、上記重み行列は、Ｇを含み、ｗｂは、上記重みテンソルの値を含む。
【００９５】
例２４は、例２３に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式：
【数２２】
2022501665.tif 000024
に基づいて計算され、ｑｗａは、上記スケールファクタ又は上記変換された重みテンソルを含み、ｑｗｂは、上記重みテンソルの量子化値を含む。
【００９６】
例２５は、命令を含む非一時的コンピュータ読取可能記憶媒体であって、上記命令は、コンピューティングデバイスにより実行されたときに上記コンピューティングデバイスに、較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成することと、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成することと、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成することと、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算することと、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む８ビットＣＮＮモデルを生成することと、をさせる。
【００９７】
例２６は、例２５に記載の対象事項を含み、上記コンピューティングデバイスに、複数の画像を含む入力データセットを受信することと、ハードウェアアクセラレータにより、上記８ビットＣＮＮモデル及び上記入力データセットを使用して８ビットコッパースミス‐ウィノグラード（ＣＷ）畳み込み演算を実行して上記複数の画像の各々を分類することと、をさせるように上記コンピューティングデバイスにより実行可能な命令をさらに含む。
【００９８】
例２７は、例２５〜２６に記載の対象事項を含み、上記コンピューティングデバイスに、（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行することをさせるように上記コンピューティングデバイスにより実行可能な命令をさらに含む。
【００９９】
例２８は、例２７に記載の対象事項を含み、３２ビット浮動小数点重み値を８ビット整数に量子化する上記量子化関数は、
【数２３】
2022501665.tif 000025
を含み、Ｑは、上記量子化関数を含み、ｒは、ｎ次元有理テンソルを含み、ｚは、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルを含む。
【０１００】
例２９は、例２８に記載の対象事項を含み、８ビット整数を３２ビット浮動小数点重み値に逆量子化する上記量子化関数は、
【数２４】
2022501665.tif 000026
を含む。
【０１０１】
例３０は、例２９に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数２５】
2022501665.tif 000027
を含む。
【０１０２】
例３１は、例３０に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数２６】
2022501665.tif 000028
を含む。
【０１０３】
例３２は、例３１に記載の対象事項を含み、上記量子化関数は、以下の式：
【数２７】
2022501665.tif 000029
を使用して直接ＣＷ畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてｐ＝７であり、上記活性化テンソルについてｐ＝８であり、ｍａｘは、各々のそれぞれのテンソルにおける最大値を含む。
【０１０４】
例３３は、例２５〜３１に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式：
ｘａ＝ＢＴｘｂ
に基づいて計算され、ｘａは、変換された入力活性化テンソルの値を含み、上記入力行列は、ＢＴを含み、ｘｂは、上記入力活性化テンソルの値を含む。
【０１０５】
例３４は、例３３に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式：
【数２８】
2022501665.tif 000030
に基づいて計算され、ｑｘａは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、ｑｘｂは、上記入力活性化テンソルの量子化値を含む。
【０１０６】
例３５は、例２５〜３４に記載の対象事項を含み、上記変換された重みテンソルは、以下の式：
ｗａ＝ＧｗｂＧＴ
に基づいて計算され、ｗａは、上記変換された重みテンソルの値を含み、上記重み行列は、Ｇを含み、ｗｂは、上記重みテンソルの値を含む。
【０１０７】
例３６は、例３５に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式：
【数２９】
2022501665.tif 000031
に基づいて計算され、ｑｗａは、上記スケールファクタ又は上記変換された重みテンソルを含み、ｑｗｂは、上記重みテンソルの量子化値を含む。
【０１０８】
例３７は、装置であって、較正データセットと、３２ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク（ＣＮＮ）とをサンプリングして、入力活性化テンソル及び重みテンソルを生成する手段と、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成する手段と、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成する手段と、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算する手段と、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む８ビットＣＮＮモデルを生成する手段と、を含む。
【０１０９】
例３８は、例３７に記載の対象事項を含み、ハードウェアアクセラレータの手段と、複数の画像を含む入力データセットを受信する手段と、上記ハードウェアアクセラレータにより、上記８ビットＣＮＮモデル及び上記入力データセットを使用して８ビットコッパースミス‐ウィノグラード（ＣＷ）畳み込み演算を実行して上記複数の画像の各々を分類する手段と、をさらに含む。
【０１１０】
例３９は、例３７〜３８に記載の対象事項を含み、（ｉ）３２ビット浮動小数点重み値を８ビット整数に量子化し、（ｉｉ）８ビット整数を３２ビット浮動小数点重み値に逆量子化し、（ｉｉｉ）行列加算演算を実行し、（ｉｖ）行列乗算演算を実行する、量子化関数の手段をさらに含む。
【０１１１】
例４０は、例３９に記載の対象事項を含み、以下の式：
【数３０】
2022501665.tif 000032
に従って３２ビット浮動小数点重み値を８ビット整数に量子化する手段をさらに含み、Ｑは、上記量子化関数を含み、ｒは、ｎ次元有理テンソルを含み、ｚは、スケールファクタｑ及びビット精度ｐを有するｎ次元有理テンソルを含む。
【０１１２】
例４１は、例４０に記載の対象事項を含み、以下の式：
【数３１】
2022501665.tif 000033
に従って８ビット整数を３２ビット浮動小数点値に逆量子化する手段をさらに含む。
【０１１３】
例４２は、例４１に記載の対象事項を含み、以下の式：
【数３２】
2022501665.tif 000034
に従って行列加算演算を実行する手段をさらに含む。
【０１１４】
例４３は、例４２に記載の対象事項を含み、以下の式：
【数３３】
2022501665.tif 000035
に従って行列乗算演算を実行する手段をさらに含む。
【０１１５】
例４４は、例４３に記載の対象事項を含み、以下の式：
【数３４】
2022501665.tif 000036
に従って直接ＣＷ畳み込みのスケールファクタを定義する手段をさらに含み、上記重みテンソルについてｐ＝７であり、上記活性化テンソルについてｐ＝８であり、ｍａｘは、各々のそれぞれのテンソルにおける最大値を含む。
【０１１６】
例４５は、例３７〜４３に記載の対象事項を含み、以下の式：
ｘａ＝ＢＴｘｂ
に従って上記変換された入力活性化テンソルを計算する手段をさらに含み、ｘａは、変換された入力活性化テンソルの値を含み、上記入力行列は、ＢＴを含み、ｘｂは、上記入力活性化テンソルの値を含む。
【０１１７】
例４６は、例４５に記載の対象事項を含み、以下の式：
【数３５】
2022501665.tif 000037
に従って上記変換された入力活性化テンソルの上記スケールファクタを計算する手段をさらに含み、ｑｘａは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、ｑｘｂは、上記入力活性化テンソルの量子化値を含む。
【０１１８】
例４７は、例３７〜４６に記載の対象事項を含み、以下の式：
ｗａ＝ＧｗｂＧＴ
に従って上記変換された重みテンソルを計算する手段をさらに含み、ｗａは、上記変換された重みテンソルの値を含み、上記重み行列は、Ｇを含み、ｗｂは、上記重みテンソルの値を含む。
【０１１９】
例４８は、例４７に記載の対象事項を含み、以下の式：
【数３６】
2022501665.tif 000038
に従って上記変換された重みテンソルの上記スケールファクタを計算する手段をさらに含み、ｑｗａは、上記スケールファクタ又は上記変換された重みテンソルを含み、ｑｗｂは、上記重みテンソルの量子化値を含む。
【０１２０】
前述の例示的な実施形態の説明は、例示及び説明を目的として提示されている。これは、網羅的であること、又は本開示を開示された正確な形態に限定することを意図するものではない。本開示に照らして、多くの修正及び変形が可能である。本開示の範囲は、この詳細な説明によってではなく、別記の特許請求の範囲により限定されることが意図される。本出願に対して優先権を主張する将来申請される出願は、開示の対象主題を異なる方法で請求する可能性があり、一般に、本明細書において様々に開示され又はその他の方法で論証された１つ以上の限定の任意のセットを含み得る。
【図１】
2022501665.tif 000048
【図２】
2022501665.tif 000049
【図３】
2022501665.tif 000050
【図４】
2022501665.tif 000051
【図５】
2022501665.tif 000052
【図６】
2022501665.tif 000053
【図７】
2022501665.tif 000054
【図８】
2022501665.tif 000055
【国際調査報告】
2022501665.tif 000056
2022501665.tif 000057