IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

特許71191078ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置
<>
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図1
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図2
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図3
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図4
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図5
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図6
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図7
  • 特許-8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-05
(45)【発行日】2022-08-16
(54)【発明の名称】8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置
(51)【国際特許分類】
   G06N 3/02 20060101AFI20220808BHJP
   G06F 17/16 20060101ALI20220808BHJP
【FI】
G06N3/02
G06F17/16 Z
【請求項の数】 21
(21)【出願番号】P 2020547395
(86)(22)【出願日】2018-07-30
(65)【公表番号】
(43)【公表日】2022-01-06
(86)【国際出願番号】 CN2018097730
(87)【国際公開番号】W WO2020024093
(87)【国際公開日】2020-02-06
【審査請求日】2021-07-27
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ゴーン,ジオーン
(72)【発明者】
【氏名】シェン,ハイハオ
(72)【発明者】
【氏名】リン,シヤオ ドーン
(72)【発明者】
【氏名】リウ,シヤオリー
【審査官】松崎 孝大
(56)【参考文献】
【文献】特開2018-10618(JP,A)
【文献】特開2018-110440(JP,A)
【文献】米国特許出願公開第2018/0189237(US,A1)
【文献】長沼 大樹 ほか,深層学習における低精度演算を用いた高速化及びアクセラレーターの性能評価,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2017年10月05日,Vol.117, No.238,pp.101-107
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
装置であって、
プロセッサと、
命令を記憶したメモリと、を含み、前記命令は、前記プロセッサにより実行されたときに前記プロセッサに、
較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成し、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成し、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成し、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算し、
前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む8ビットCNNモデルを生成する
ことをさせる、装置。
【請求項2】
複数の画像を含む入力データセットを受信し、
前記8ビットCNNモデル及び前記入力データセットを使用して8ビットコッパースミス‐ウィノグラード畳み込み演算を実行して前記複数の画像の各々を分類する
ように構成されたハードウェアアクセラレータ、をさらに含む請求項1に記載の装置。
【請求項3】
前記メモリは、(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行する、1つ以上の量子化関数の命令を記憶する、請求項1に記載の装置。
【請求項4】
32ビット浮動小数点重み値を8ビット整数に量子化する前記量子化関数は、
【数1】
を含み、Qは、前記量子化関数を含み、rは、n次元有理テンソルを含み、zは、スケールファクタq及びビット精度pを有するn次元有理テンソルを含む、請求項3に記載の装置。
【請求項5】
8ビット整数を32ビット浮動小数点重み値に逆量子化する前記量子化関数は、
【数2】
を含む、請求項4に記載の装置。
【請求項6】
行列加算演算を実行する前記量子化関数は、
【数3】
を含む、請求項5に記載の装置。
【請求項7】
行列乗算演算を実行する前記量子化関数は、
【数4】
を含む、請求項6に記載の装置。
【請求項8】
前記量子化関数は、以下の式:
【数5】
を使用して直接コッパースミス‐ウィノグラード(CW)畳み込みのスケールファクタを定義する関数をさらに含み、前記重みテンソルについてp=7であり、前記活性化テンソルについてp=8であり、maxは、各々のそれぞれのテンソルにおける最大値を含む、請求項6に記載の装置。
【請求項9】
前記変換された入力活性化テンソルは、以下の式:
=B
に基づいて計算され、xは、変換された入力活性化テンソルの値を含み、前記入力行列は、Bを含み、xは、前記入力活性化テンソルの値を含む、請求項1に記載の装置。
【請求項10】
前記変換された入力活性化テンソルの前記スケールファクタは、以下の式:
【数6】
に基づいて計算され、qxaは、前記変換された入力活性化テンソルの前記スケールファクタを含み、qxbは、前記入力活性化テンソルの量子化値を含む、請求項9に記載の装置。
【請求項11】
前記変換された重みテンソルは、以下の式:
=Gw
に基づいて計算され、wは、前記変換された重みテンソルの値を含み、前記重み行列は、Gを含み、wは、前記重みテンソルの値を含む、請求項1に記載の装置。
【請求項12】
前記変換された重みテンソルの前記スケールファクタは、以下の式:
【数7】
に基づいて計算され、qwaは、前記変換された重みテンソルの前記スケールファクタを含み、qwbは、前記重みテンソルの量子化値を含む、請求項11に記載の装置。
【請求項13】
較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成するステップと、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成するステップと、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成するステップと、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算するステップと、
コンピュータプロセッサの演算により、前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む8ビットCNNモデルを生成するステップと、
を含む方法。
【請求項14】
複数の画像を含む入力データセットを受信するステップと、
プロセッサを含むハードウェアアクセラレータにより、前記8ビットCNNモデル及び前記入力データセットを使用して8ビットコッパースミス‐ウィノグラード(CW)畳み込み演算を実行して前記複数の画像の各々を分類するステップと、
をさらに含む請求項13に記載の方法。
【請求項15】
(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行する、1つ以上の量子化関数をさらに含む請求項13に記載の方法。
【請求項16】
前記変換された入力活性化テンソルは、以下の式:
=B
に基づいて計算され、xは、変換された入力活性化テンソルの値を含み、前記入力行列は、Bを含み、xは、前記入力活性化テンソルの値を含み、前記変換された入力活性化テンソルの前記スケールファクタは、以下の式:
【数8】
に基づいて計算され、qxaは、前記変換された入力活性化テンソルの前記スケールファクタを含み、qxbは、前記入力活性化テンソルの量子化値を含む、請求項13に記載の方法。
【請求項17】
前記変換された重みテンソルは、以下の式:
=Gw
に基づいて計算され、wは、前記変換された重みテンソルの値を含み、前記重み行列は、Gを含み、wは、前記重みテンソルの値を含み、前記変換された重みテンソルの前記スケールファクタは、以下の式:
【数9】
に基づいて計算され、qwaは、前記変換された重みテンソルの前記スケールファクタを含み、qwbは、前記重みテンソルの量子化値を含む、請求項16に記載の方法。
【請求項18】
コンピューティングデバイスに、
較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成することと、
前記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成することと、
前記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成することと、
前記変換された入力活性化テンソルのスケールファクタと、前記変換された重みテンソルのスケールファクタを計算することと、
コンピュータプロセッサの演算により、前記変換された入力活性化テンソル及び前記変換された重みテンソルの前記スケールファクタを含む8ビットCNNモデルを生成することと、
をさせるコンピュータプログラム。
【請求項19】
前記コンピューティングデバイスに、
複数の画像を含む入力データセットを受信することと、
ハードウェアアクセラレータにより、前記8ビットCNNモデル及び前記入力データセットを使用して8ビットコッパースミス‐ウィノグラード(CW)畳み込み演算を実行して前記複数の画像の各々を分類することと、
をさらにさせる請求項18に記載のコンピュータプログラム。
【請求項20】
前記コンピューティングデバイスに、
(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行することをさらにさせる請求項18に記載のコンピュータプログラム。
【請求項21】
請求項18乃至20のうちいずれか1項記載のコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載される実施形態は、ニューラルネットワークの分野に関する。より具体的には、実施形態は、8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置に関する。
【背景技術】
【0002】
ディープニューラルネットワーク(DNN)は、コンピュータビジョン、画像認識、発話処理、自然言語処理、言語翻訳、及び自律車両などの広範なドメインにわたる複雑な問題を解決するツールである。DNNの一例は、畳み込みニューラルネットワーク(CNN)である。しかしながら、DNNにより実行される計算演算の複雑さに起因して、DNNの産業上の展開には課題が残っている。低精度推論を可能にすることは、DNNの計算複雑性を低減するための1つのアプローチである。低精度は一般に、32ビット浮動小数点値(又はFP32)などのより大きいビット幅を有するデータ型よりも、8ビット整数(又はINT8)などのより小さいビット幅を有するデータ型を使用することを指す。ハードウェアアクセラレーションでは、低精度(例えば、INT8)推論演算は、1秒当たりにより多くの演算を計算し、メモリアクセス圧を低減し、メモリキャッシュをより良く利用し、より高いスループットとより低いレイテンシをもたらすことができる。これは、ディープラーニングのニーズに具体的に合わせられた数値表現及び演算の革新を必要とする。
【0003】
畳み込みは、DNNモデルの計算集約的な演算である。近年、INT8推論は、FP32ベースの演算と比較して有意な確度損失なく畳み込みに対して実装されている。コッパースミス‐ウィノグラード(「CW」、「ウィノグラード」とも呼ばれる)アルゴリズムは、必要な計算を減らすようにメモリを活用することにより、より高速な畳み込み計算を提供する。しかしながら、CWアルゴリズムは32ビット浮動小数点訓練及び推論演算に限定され、INT8設定では成功裏に適用されていない。CWアルゴリズムとINT8計算を成功裏にマージすることは、畳み込み計算演算において改善されたシステム性能を提供することになる。
【図面の簡単な説明】
【0004】
図1】システムの一実施形態を示す。
図2】例示的な処理フローの一実施形態を示す。
図3】第1の論理フローの一実施形態を示す。
図4】第2の論理フローの一実施形態を示す。
図5】第3の論理フローの一実施形態を示す。
図6】第4の論理フローの一実施形態を示す。
図7】記憶媒体の一実施形態を示す。
図8】システムの一実施形態を示す。
【発明を実施するための形態】
【0005】
本明細書に開示される実施形態は、8ビット整数(integer)(又は「INT8」)データ型を使用してコッパースミス‐ウィノグラード(Coppersmith-Winograd)畳み込みを実行するフレームワークを提供する。従来、CWアルゴリズムのバージョンは、FP32データ型の処理に限定されていた。一般に、CWアルゴリズムは、定数行列を使用した活性化テンソル(activation tensor)(特徴テンソルとも呼ばれる)及び重みテンソルの変換を必要とする。しかしながら、このような変換は、テンソルのデータ分布を変える。したがって、INT8畳み込みに対する既存のアプローチは、CWアルゴリズムで使用される1つ以上のスケールファクタ(scale factors)がINT8演算に使用できないため、CWアルゴリズムに適用できない。さらに、FP32からINT8へのコンバージョンは、FP32実装により提供される確度の有意な損失を結果としてもたらす可能性がある。例えば、符号なしINT8値は、0~255(利用可能な小数点の精度がない)におよび得る一方で、FP32値は、3.4×10-38~3.4×1038(最大7の小数点の精度を有する)におよび得る。有利には、実施形態は、FP32実装に対して有意な確度損失なくINT8設定にCWアルゴリズムを適用できるようにスケールファクタを決定する較正アプローチを提供する。
【0006】
一般に、本明細書に開示される実施形態は、FP32値及びFP32較正データセットで予め訓練されたCNNをサンプリングして、入力活性化テンソルと重みテンソルを生成する。入力活性化テンソルと重みテンソルは、それぞれ、変換された入力活性化テンソルと変換された重みテンソルを生成するように修正され得る。変換された入力活性化テンソルと変換された重みテンソルは、次いで、変換された入力活性化テンソルと変換された重みテンソルのそれぞれのスケールファクタを生成するために使用され得る。次いで、スケールファクタを含む8ビット(又はINT8)最適化CNNモデルが生成され得る。次いで、8ビット最適化CNNモデルは、FP32実装に対して有意な確度損失なく1つ以上の量子化(quantization)及び/又は逆量子化(dequantization)関数を使用してINT8CW畳み込みを実行するために使用され得る。
【0007】
有利には、8ビット最適化CNNモデルは、8ビット最適化CNNモデルをファインチューニング又は再訓練する必要なくFP32CNNモデルに基づいて生成される。少なくとも1つの実施形態において、ハードウェアアクセラレータが、INT8CW畳み込みを実行してもよい。INT8設定でCWアルゴリズムを使用するデータの処理は、ハードウェアフットプリント、消費電力、速度、及びメモリ要件の実質的な改善を提供する。同様に、ハードウェアアクセラレータがINT8CW畳み込みを実行したとき、従来のハードウェア及び/又はソフトウェアの実装に対して処理性能が改善される。
【0008】
本明細書で用いられる表記法及び命名法を一般に参照し、以下に続く詳細な説明の1つ以上の部分は、コンピュータ又はコンピュータのネットワーク上で実行されるプログラム手順の観点から提示されることがある。これらの手続き的説明及び表現は、当業者がその作用の実体を他の当業者に最も効果的に伝達するために用いられる。手順はここで、及び一般に、所望の結果を導く自己矛盾のない動作シーケンスであると考えられる。これらの動作は、物理数量の物理操作を必要とするものである。必ずではないが通常、これらの数量は、記憶、転送、結合、比較、及びその他の方法で操作することが可能な電気的、磁気的、又は光学的信号の形態をとる。これらの信号をビット、値、要素、シンボル、文字、用語、数字などとして参照することは、主として一般的な用法という理由で、時に便利であることがわかる。しかしながら、これら及び同様の用語は適切な物理数量に関連づけられるべきであり、これら数量に適用される便利なラベルに過ぎないことに留意されたい。
【0009】
さらに、これらの操作は、人間のオペレータにより実行される知能的オペレーションに通常関連づけられる追加又は比較などの用語でしばしば参照される。しかしながら、人間のオペレータのこのような能力は、1つ以上の実施形態の一部を形成する本明細書に記載される動作のいずれにおいても必要でなく、あるいはほとんどの場合に望まれない。むしろ、これらの動作はマシン動作である。様々な実施形態の動作を実行するための有用なマシンは、本明細書の教示に従って書かれた内部に記憶されたコンピュータプログラムにより選択的に活性化又は構成される汎用デジタルコンピュータを含み、かつ/あるいは必要な目的のために特別に構築された装置を含む。さらに、様々な実施形態が、これらの動作を実行する装置又はシステムに関する。これらの装置は、必要な目的のために特別に構築されてもよく、あるいは汎用コンピュータを含んでもよい。様々なこれらのマシンの必要な構造は、与えられる説明から明らかであろう。
【0010】
次に、図面を参照し、ここで、同様の参照番号は全体を通して同様の要素を参照するために使用される。以下の記載では、説明のため、多くの特定の詳細が、それらの十分な理解を提供するために記載されている。しかしながら、新規の実施形態はこれらの特定の詳細なしに実施できることが明らかであり得る。他の例では、良く知られた構造及びデバイスは、その説明を容易にするようにブロック図形式で示される。その意図は、特許請求の範囲内の全ての修正、同等物、及び代替をカバーすることである。
【0011】
図1は、コンピューティングシステム100の一実施形態を示す。システム100は、サーバ、ワークステーション、ラップトップ、又は仮想化コンピューティングシステムなどの、任意の数及びタイプのコンピューティングシステムを表す。例えば、システム100は、ディープラーニングアクセラレータカード、ディープラーニングアクセラレーションを有するプロセッサ、ニューラルコンピュートスティック(neural compute stick)などの組み込みシステムでもよい。いくつかの例において、システム100は、システムオンチップ(SoC)を含み、他の実施形態において、システム100は、2つ以上のディスクリートコンポーネントを有するプリント回路板又はチップパッケージを含む。図示のように、コンピューティングシステム100は、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、INT8較正論理105、及び8ビットハードウェアアクセラレータ106を含む。
【0012】
ニューラルネットワーク論理101は、ハードウェア、ソフトウェア、及び/又はこれらの組み合わせを表し、これは、近似値関数について決定して解くためのダイナミックプログラミングを実現するニューラルネットワーク(例えば、DNN、CNN等)を含み得る。少なくとも1つの実施形態において、ニューラルネットワーク論理101は、特徴抽出及び変換のための非線形処理ユニットの複数層のカスケードから形成されるCNNを備える。CNNの各連続層は、前の層からの出力を入力として使用する。CNNは、入力層、出力層、及び複数の隠れ層を一般に含み得る。CNNの隠れ層は、畳み込み層、プーリング層、全結合層(fully connected layers)、及び/又は正規化層を含み得る。
【0013】
一般に、ニューラルネットワークは、2つの処理フェーズ、訓練フェーズ及び推論フェーズを含む。訓練の間、ディープラーニングエキスパートは、典型的には、ネットワークを設計し、ニューラルネットワーク内の層の数、各層により実行される演算、及び層間の接続性を確立する。多くの層は、層により実行される正確な計算を決定するパラメータ、典型的にはフィルタ重みを有する。訓練プロセスの目的は、通常、重みの空間を通る確率的勾配降下に基づく移動を介して、フィルタ重みを学習することである。訓練フェーズは、活性化テンソルとも呼ばれる出力特徴マップを生成する。活性化テンソルは、ニューラルネットワーク論理101のCNNの各畳み込み層に対して生成され得る。所与の畳み込み層の出力特徴マップは、次の畳み込み層への入力でもよい。ひとたび訓練プロセスが完了すると、訓練されたニューラルネットワーク(例えば、FP32CNNモデル107、及び/又はINT8CNNモデル108)に基づく推論は、典型的には、入力データに対して順方向伝搬計算を採用して、出力データを生成する。
【0014】
例えば、コンピューティングシステム100は、顔検出、文字認識、発話認識などのためのカスケードされた段階を有するニューラルネットワーク論理101に提供してもよい。次いで、ニューラルネットワーク論理101は、テンソルデータの形式である入力データセット(例えば、顔の画像、筆跡、印刷された情報など)に基づいて訓練を実行し得る。テンソルは、幾何ベクトル、スカラ、及び他のテンソルの間の線形関係を記述する幾何学的オブジェクトである。数値の編成された多次元配列、又はテンソルデータは、テンソルを表し得る。訓練は、ニューラルネットワーク論理101のための精緻化された重みを生成し得る。例えば、精緻化された重みは、数字及び/又は英語のアルファベットにおける各文字の特性である特徴を指定してもよい。推論フェーズの間、ニューラルネットワーク論理101は、入力として画像を受信し、入力画像に対して所望の処理を実行し得る。例えば、入力画像は、筆跡を示してもよく、訓練されたニューラルネットワーク論理101は、筆跡に含まれる数字及び/又は英語アルファベットの文字を識別してもよい。少なくとも1つの実施形態において、ハードウェアアクセラレータ106は、INT8推論演算を実行する。
【0015】
CWアルゴリズム論理102は、CWアルゴリズムの1つ以上のバージョンを実現するハードウェア、ソフトウェア、及び/又はこれらの組み合わせである。CWアルゴリズムは、従来のアルゴリズムより速く行列乗算(したがって、CNN畳み込み)を実行し得る算術投影(arithmetic projections)を使用する行列乗算アルゴリズムである。一般に、CWアルゴリズムは入力画像の小さいタイル上で動作し、入力タイルと重みフィルタは変換され、変換の出力は要素ごとに一緒に乗算され、その結果は畳み込みの出力を得るために逆変換される。しかしながら、従来、CWアルゴリズム論理102は、ニューラルネットワーク論理101のFP32モデル107及び関連データなどの32ビット浮動小数点(floating point)値で動作することに限定されている。
【0016】
しかしながら、有利には、本明細書に開示される実施形態は、CWアルゴリズム論理102が、ニューラルネットワーク論理101のINT8CNNモデル108及び関連データなどの8ビット整数値を処理することを可能にする。そうするために、本明細書に開示される実施形態は、量子化論理103の量子化関数104とINT8較正論理を活用する。量子化論理103は一般に、量子化関数104を適用してFP32値をINT8値に変換し、INT8値をFP32値に変換するように構成される。以下の式1は、n次元(nは正の整数である)有理テンソル(rational tensor)r(例えば、FP32テンソル)を、スケールファクタq及びビット精度pを有するn次元有理テンソルz(例えば、INT8テンソル)に変換するための、一例示的な量子化関数104 Q:R×R×N→Z×Rを示す。
【数1】
【0017】
式1において、関数Roundは、有理テンソル(例えば、FP32テンソル)を整数テンソル(例えば、INT8テンソル)で近似する丸め関数である。量子化関数104は、INT8値をFP32値に変換するための1つ以上の逆量子化関数をさらに含む。以下の式2は、一例示的な逆量子化関数104 D:Z×R→Rである。
【数2】
【0018】
示されるように、式2は、有理テンソルrをその量子化形式zで近似する。量子化関数104は、テンソルr及びzの加算及び乗算演算を含む、(z,q)に対する算術演算を実行する関数をさらに含んでもよい。式3は、(z,q)の一例示的な加算演算を示す。
【数3】
【0019】
示されるように、式3の加算演算は、式1を活用してテンソルzにおけるINT8整数をFP32に逆量子化し、加算演算は、逆量子化されたFP32値に対して実行される。次いで、FP32加算演算の結果は、式2を使用して量子化される。最小関数を実装することにより、式3はビットオーバーフローがないことを保証する。式4は、(z,q)の一例示的な乗算演算を示す。
【数4】
【0020】
式4で定義された乗算関数を適用する(例えば、テンソルとスケールファクタを乗算する)とき、データ範囲が変わる可能性がある。したがって、変換を説明するために、スケールファクタが必要とされる。一実施形態において、INT8較正論理105は、CWアルゴリズム論理102によりINT8データの処理を実行するために必要な、活性化テンソルのための必要なスケールファクタと、重みテンソルのスケールファクタを生成する。
【0021】
一実施形態において、量子化関数104は、最大較正ストラテジを実装して8ビットCW畳み込みのスケールファクタを決定する。しかしながら、最小較正ストラテジなどの他の較正ストラテジが使用されてもよい。一般に、最大較正ストラテジでは、活性化テンソルの最大値が識別され、重みテンソルの最大値が識別される。次いで、量子化関数104は、以下の式5を使用して、精度pを有するスケールファクタを定義し得る。
【数5】
【0022】
一実施形態において、活性化テンソルが非負の値を含むとき、活性化テンソルについてp=8である。したがって、活性化テンソルについて、スケールファクタは255/maxとして定義され得、maxは、活性化テンソルに格納された最大値である。一実施形態において、重みテンソル(これは、負の値を含むことも含まないこともあり、したがって、符号を示すためにビットが予約される必要がある)についてp=7である。したがって、重みテンソルについて、スケールファクタは127/maxとして定義され得、maxは、所与の重みテンソルにおける最大値である。INT8較正論理105はさらに、量子化関数104(例えば、上記式1~5)を適用して、CWアルゴリズム論理102がFP32からINT8値へのコンバージョンに起因して精度及び/又は確度を損なうことなくINT8値の畳み込み(例えば、INT8CNNモデル108)を計算できるように構成される。次に、図2を参照してさらなる詳細が説明され、図2は、INT8CW畳み込みを較正する一例示的な処理フロー200を示す。
【0023】
図示のように、処理フロー200は、較正データセット201と、予め訓練されたFP32重みを有する1つ以上のCNNモデル202を含む。較正データセット201は、画像のデータセットなど、任意のタイプのデータセットでもよい。予め訓練されたFP32重みを有するCNNモデル202は、FP32データに基づいてCNN(例えば、ニューラルネットワーク論理101、又は異なるCNN)により生成されたFP32CNNモデル107を表し、FP32重み値を含む。したがって、予め訓練されたFP32重みを有するCNNモデル202は、FP32重みテンソル値、FP32活性化テンソル値、FP32バイアステンソル値、及び他のタイプのFP32データを含み得る。
【0024】
処理フロー200において、INT8較正論理105は、次いで、サンプリングブロック203を開始し得る。一般に、サンプリング203は、較正データセット201及び予め訓練されたFP32重みを有するCNNモデル202に対してニューラルネットワーク論理101により実行される推論演算のシミュレーションである。シミュレーション203は、予め訓練されたFP32重みを有するCNNモデル202の各畳み込み層に対してテンソルを生成する。生成されたテンソルは、各畳み込み層についての入力活性化テンソル205及び重みテンソル206を含み得る。一般に、較正データセット201内の所与の画像のサンプリング203は、畳み込み層の第1のデータ範囲(例えば、入力活性化テンソル205及び重みテンソル206のデータ範囲)を生成し得る。しかしながら、異なる画像のサンプリング203は、異なるデータ範囲を生成し得る。したがって、較正データセット201内の全ての画像のサンプリング203は、較正データセット201の全てのデータ範囲をマージする。
【0025】
処理フロー200は、INT8CW畳み込み較正フェーズ204をさらに含む。較正フェーズ204において、INT8較正論理105(又は、別の指定されたシステムコンポーネント)は、入力活性化テンソル205及び入力行列207の行列乗算を実行し得る。入力行列207は、定数値を格納した行列でもよい。入力活性化テンソル205と入力行列207とにおける乗算演算の出力は、変換された入力活性化テンソル209である。同様に、較正フェーズ204において、INT8較正論理105は、重みテンソル206及び重み行列208に対して行列乗算を実行し得る。重み行列208は、定数値を格納してもよい。重みテンソル206と重み行列208とにおける乗算演算の出力は、変換された重みテンソル210である。
【0026】
一例示的なCWアルゴリズムF(2,3)について、一例示的な入力行列207は、式6において行列B(及び、対応する転置行列B)として与えられる。
【数6】
【0027】
F(2,3) CWアルゴリズムが本明細書で一例として用いられているが、本開示の手法はCWアルゴリズムの全ての実装に等しく適用される。一例示的な重み行列208が、式7において行列G(及び、対応する転置行列G)として与えられる。
【数7】
【0028】
次いで、変換された入力活性化テンソル209及び変換された重みテンソル210は、以下の式8~11を使用して較正され得る。
【数8】
【0029】
一般に、式8~11において、xは、(例えば、変換前の)入力活性化テンソル205に対応し、maxxbは、入力活性化テンソル205における最大値に対応し、wは、(変換前の)重みテンソル206に対応し、maxwbは、重みテンソル206における最大値に対応する。さらに、式8~11において、xは、変換された入力活性化テンソル209に対応し、qxaは、変換された入力活性化テンソル209のスケールファクタに対応し、wは、変換された重みテンソル210に対応し、qwaは、変換された重みテンソル210のスケールファクタに対応する。したがって、式8において、変換された入力活性化テンソル209は、入力活性化テンソル205(例えば、x)、入力行列207の転置行列(例えば、B)、及び入力行列207(例えば、B)に基づいて決定される。式9において、変換された入力活性化テンソル209のスケールファクタqxaは、入力活性化テンソルのスケールファクタ(例えば、qxb)、変換された入力活性化テンソル209の最大値(例えば、maxxa)、及び入力活性化テンソル205の最大値(例えば、maxxb)に基づいて決定される。
【0030】
同様に、式10において、変換された重みテンソル210(例えば、w)は、重み行列208(例えば、G)、重み行列208の転置行列(例えば、G)、及び重みテンソル206(例えば、w)に基づいて決定される。式11において、変換された重みテンソル210のスケールファクタ(例えば、qwa)は、重みテンソル206のスケールファクタ(例えば、qwb)、変換された重みテンソル210の最大値(例えば、maxwa)、及び重みテンソル206の最大値(例えば、maxwb)に基づいて決定される。較正204の出力は、スケールファクタを有する8ビット最適化CNNモデル211であり、これは、図1のINT8CNNモデル108に対応し得る。8ビット最適化CNNモデル211は、較正フェーズ204の間に決定されるスケールファクタを含む。
【0031】
次いで、スケールファクタを有する8ビット最適化CNNモデル211は、CWアルゴリズム論理102を使用してINT8CW畳み込みを実行するために、CWアルゴリズム論理102により使用され得る。例えば、スケールファクタを有する8ビット最適化CNNモデル211は、CWアルゴリズム論理102を使用して画像のデータセットを分類するために畳み込みにおいて使用されてもよい。そうすることで、FP32ベースの畳み込みに対して確度の有意な損失なく、従来の手法に対してより高速な畳み込み処理を提供し得る。
【0032】
図3は、論理フロー300の一実施形態を示す。論理フロー300は、本明細書に記載される1つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム100(又は、そのコンポーネント)は、論理フロー300の動作を実行して、INT8データ実装においてCWアルゴリズム論理102を使用してもよい。
【0033】
図3に示す例示の実施形態において、論理フロー300はブロック310で始まり得る。ブロック310「較正データセット及び予め訓練されたFP32CNNモデルを受信する」において、システム100は、較正データセット201と、予め訓練されたFP32重みを有するCNNモデル202を受信し得る。較正データセット201は、画像認識動作のために、予め訓練されたFP32重みを有するCNNモデル202を訓練するために使用される画像のデータセットなど、任意のデータセットでもよい。CNNモデル202は、較正データセット201に基づいてニューラルネットワーク論理102により生成されてもよく、かつ/あるいは記憶場所から受信されてもよい。上述のように、CNNモデル202は、例えばカーネル重み、畳み込み等のための、32ビット浮動小数点(FP32)値を含む。FP32カーネル重みは、入力チャンネル、出力チャンネル、カーネルサイズ入力チャンネル、カーネルサイズ出力チャンネルのための重みを含んでもよい。上述のように、FP32重みは、各畳み込み層についてCNNモデル202に規定される。
【0034】
ブロック320「量子化関数を受信する」において、システム100は、量子化関数104を受信し得る。量子化関数104は、例えば、FP32値をINT8値に量子化する、INT8値をFP32値に逆量子化する、行列加算関数、行列乗算関数、及びスケールファクタ関数である、上記の式1~5を含んでもよい。ブロック330「較正データセット及び予め訓練されたFP32CNNモデルのシミュレートされた推論に基づいて入力活性化テンソル及び重みテンソルを生成する」において、コンピューティングシステム100は、較正データセット201及び予め訓練されたFP32重みを有するCNNモデル202をサンプリングすることにより、入力活性化テンソル205及び重みテンソル206を生成する。例えば、ニューラルネットワーク論理102は、較正データセット201及び予め訓練されたFP32重みを有するCNNモデル202を使用して推論演算をシミュレートし、入力活性化テンソル205及び重みテンソル206を生成してもよい。上述のように、入力活性化テンソル205は、CNNモデル202の各畳み込み層についてのFP32値を有する入力活性化テンソル(及び、出力活性化テンソル)を含む。同様に、重みテンソル206は、CNNモデル202の各畳み込み層についてのFP32重みの重みテンソルを含む。
【0035】
ブロック340「INT8CW畳み込み較正を実行してスケールファクタを生成する」において、システム100は、例えば、上記の式6~12に少なくとも部分的に基づいて、INT8CW畳み込み較正204を実行する。INT8CW畳み込み較正204は、入力行列207と入力活性化テンソル205とのFP32行列乗算に基づいて変換された入力活性化テンソル209を生成することを含む。INT8CW畳み込み較正204は、重み行列208と重みテンソル206とのFP32行列乗算に基づいて変換された重みテンソル210を生成することをさらに含む。INT8CW畳み込み較正204は、変換された入力活性化テンソル209の1つ以上のスケールファクタと変換された重みテンソル210の1つ以上のスケールファクタを生成することをさらに含む。
【0036】
ブロック350「スケールファクタを含む8ビットCNNモデルを生成する」において、システム100は、ブロック340において生成されたスケールファクタを有する8ビット(又は、INT8)CNNモデル211を生成する。8ビットCNNモデル211は、入力活性化テンソル、出力活性化テンソル、及び重みテンソルをさらに含む。ブロック360「8ビットCNNモデル及びCWアルゴリズムを使用して推論を実行する」において、推論演算が、8ビットCNNモデル211、CWアルゴリズム論理102、及び入力データセットを使用して実行され得る。例えば、入力データセットは、筆跡を示す画像を含んでもよく、推論演算は、示された筆跡を分類してもよい。別の例として、入力データセットは、顔を示す画像を含んでもよく、推論演算は、顔を分類して(例えば、顔認識を実行して)もよい。少なくとも1つの実施形態において、8ビットハードウェアアクセラレータ106が推論演算を実行する。
【0037】
図4は、論理フロー400の一実施形態を示す。論理フロー400は、本明細書に記載される1つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム100(又は、そのコンポーネント)は、論理フロー400を実行して、推論演算をシミュレートして入力活性化テンソル205及び重みテンソル206を生成してもよい。
【0038】
図4に示す例示の実施形態において、論理フロー400はブロック410で始まり得る。ブロック410「訓練画像の較正データセット及びFP32CNNモデルを受信する」において、システム100は、較正データセット201と、予め訓練されたFP32重みを有するCNNモデル202を受信し得る。上述のように、較正データセット201は、訓練画像を含んでもよい。ブロック410「較正データセット内の訓練画像及びFP32CNNモデルにおける推論演算をシミュレートする」において、システム100のニューラルネットワーク論理101は、較正データセット201と予め訓練されたFP32重みを有するCNNモデル202とを使用して推論演算をシミュレートし得る。ブロック430「シミュレートされた推論演算に基づいて、入力活性化テンソル及び重みテンソルを生成する」において、ニューラルネットワーク論理101は、シミュレートされた推論演算に基づいて、入力活性化テンソル205及び重みテンソル206を生成し得る。上述のように、入力活性化テンソル205及び重みテンソル206は、FP32値を含む。
【0039】
図5は、論理フロー500の一実施形態を示す。論理フロー500は、本明細書に記載される1つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム100(又は、そのコンポーネント)は、論理フロー500を実行して、INT8WC畳み込み演算における使用のためのスケールファクタを有する8ビットCNNモデル211を生成してもよい。
【0040】
図5に示す例示の実施形態において、論理フロー500は、ブロック510で始まり得る。ブロック510「入力行列、重み行列、入力活性化テンソル、及び重みテンソルを受信する」において、システム100は、入力行列207、重み行列208、入力活性化テンソル205、及び重みテンソル206を受信し得る。上述のように、入力行列207及び/又は重み行列208は、定数値を含んでもよい。ブロック520「入力行列と入力活性化テンソルとの行列乗算を実行して変換された活性化テンソルを生成する」において、システム100は、入力行列207及び入力活性化テンソル205に対して行列乗算演算を実行して変換された入力活性化テンソル209を生成し得る。少なくとも1つの実施形態において、システム100は、式6及び8を使用して、行列乗算演算を実行して変換された入力活性化テンソル209を生成する。ブロック530「重み行列と重みテンソルとの行列乗算を実行して変換された活性化テンソルを生成する」において、システム100は、重み行列208及び重みテンソル206に対して行列乗算演算を実行して変換された重みテンソル210を生成し得る。少なくとも1つの実施形態において、システム100は、式7及び10を使用して、行列乗算演算を実行して変換された重みテンソル210を生成する。
【0041】
ブロック540「変換された入力活性化テンソル及び変換された重みテンソルのスケールファクタを計算する」において、システム100は、変換された入力活性化テンソル209のスケールファクタと、変換された重みテンソル210のスケールファクタを計算する。少なくとも1つの実施形態において、システムは、式9を使用して、変換された入力活性化テンソル209のスケールファクタを計算する。少なくとも1つの実施形態において、システムは、式11を使用して、変換された重みテンソル210のスケールファクタを計算する。ブロック550「変換された入力活性化テンソル及び変換された重みテンソルのスケールファクタを含む8ビットCNNモデルを生成し、記憶する」において、システム100は、スケールファクタを有する8ビット最適化CNNモデル211を生成し、これを将来の使用のために記憶媒体に記憶する。そうすることで、システム100(例えば、ハードウェアアクセラレータ106)がINT8CW畳み込み演算を実行することができ、それにより、システム性能を改善する。
【0042】
図6は、論理フロー600の一実施形態を示す。論理フロー600は、本明細書に記載される1つ以上の実施形態により実行される動作の一部又は全部を表し得る。実施形態はこの文脈で限定されない。例えば、システム100は、論理フロー600を実行して、ハードウェアアクセラレータ106上でINT8CW畳み込みを実行してもよい。
【0043】
図6に示す例示の実施形態において、論理フロー600はブロック610で始まり得る。ブロック610「入力データセットとスケールファクタを有する8ビットCNNモデルを受信する」において、ハードウェアアクセラレータ106は、入力データセット(又は、その一部)と、スケールファクタを有する8ビット最適化CNNモデル211を受信し得る。入力データセットは、分類のための画像を含んでもよい。ブロック620「量子化関数、ニューラルネットワーク論理、及びCWアルゴリズムを受信する」において、ハードウェアアクセラレータ106は、量子化関数104、ニューラルネットワーク論理101、及びCWアルゴリズム論理103を実行するように構成され得る。ブロック630「CWアルゴリズム、量子化関数、入力データセット、及びスケールファクタを有する8ビットCNNモデルを使用してハードウェアアクセラレータ上でint8CW畳み込みを実行する」において、ハードウェアアクセラレータ106上で実行されるニューラルネットワーク論理101は、入力データセットとスケールファクタを有する8ビット最適化CNNモデル211とについてのINT8CW畳み込み演算を実行し得る。上述のように、推論演算は、式1~5に少なくとも部分的に基づいてもよい。ブロック640「生成された出力を記憶する」において、推論演算の出力(例えば、分類された画像)は、記憶媒体に記憶され得る。同様に、出力は、ディスプレイを介してユーザに提示されてもよい。
【0044】
図7は、記憶媒体700の一実施形態を示す。記憶媒体700は、光学、磁気、又は半導体記憶媒体などの、任意の非一時的コンピュータ読取可能記憶媒体又はマシン読取可能記憶媒体を含んでもよい。様々な実施形態において、記憶媒体700は、製造品を含んでもよい。いくつかの実施形態において、記憶媒体700は、図3図6の300、400、500、600に関してなどで本明細書に記載される論理フロー又は動作のうち1つ以上を実現するためのコンピュータ実行可能命令などの、コンピュータ実行可能命令を記憶してもよい。記憶媒体700は、ニューラルネットワーク論理101、CWアルゴリズム201、量子化論理103、及びINT8較正論理105のためのコンピュータ実行可能命令をさらに記憶してもよい。コンピュータ読取可能記憶媒体又はマシン読取可能記憶媒体の例は、揮発性メモリ又は不揮発性メモリ、取外し可能又は取外し不能メモリ、消去可能又は消去不能メモリ、書込可能又は再書込可能メモリなどを含む、電子データを記憶することができる任意の有形媒体を含んでもよい。コンピュータ実行可能命令の例は、ソースコード、コンパイル型コード、解釈型コード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、ビジュアルコードなどの任意の適切なタイプのコードを含んでもよい。実施形態はこの文脈で限定されない。
【0045】
図8は、システム8000の一実施形態を示す。システム8000は、分散コンピューティングシステム、スーパーコンピュータ、高性能コンピューティングシステム、コンピューティングクラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアント‐サーバシステム、パーソナルコンピュータ(PC)、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント(PDA)などのハンドヘルドデバイス、又は情報を処理、表示、又は送信する他のデバイスなどの、複数のプロセッサコアを有するコンピュータシステムである。同様の実施形態が、例えば、ポータブル音楽プレーヤ又はポータブルビデオプレーヤ、スマートフォン又は他の携帯電話、電話、デジタルビデオカメラ、デジタルスチルカメラ、外部記憶デバイスなどのエンタテインメントデバイスを含んでもよい。さらなる実施形態は、より大規模のサーバ構成を実現する。他の実施形態において、システム8000は、1つのコアを有する単一のプロセッサ、又は複数のプロセッサを有してもよい。用語「プロセッサ」は、単一のコアを有するプロセッサ、又は複数のプロセッサコアを有するプロセッサパッケージを指すことに留意する。少なくとも1つの実施形態において、コンピューティングシステム8000は、システム100を表す。より一般的には、コンピューティングシステム8000は、本明細書で図1図7を参照して記載される全ての論理、システム、論理フロー、方法、装置、及び機能を実現するように構成される。
【0046】
本出願で用いられるとき、用語「システム」及び「コンポーネント」及び「モジュール」は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すことが意図され、その例が、例示的なシステム8000により提供されている。例えば、コンポーネントは、これらに限られないが、プロセッサで実行されているプロセス、プロセッサ、ハードディスクドライブ、複数の記憶ドライブ(光学及び/又は磁気記憶媒体のもの)、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又はコンピュータでもよい。例として、サーバで実行されているアプリケーションとサーバとの双方がコンポーネントであり得る。1つ以上のコンポーネントが、プロセス及び/又は実行スレッド内に存在することができ、コンポーネントは、1つのコンピュータ上に局所化し、かつ/あるいは2つ以上のコンピュータ間で分散することができる。さらに、コンポーネントは、動作を協調するために、様々なタイプの通信媒体により互いに通信上結合されてもよい。協調は、一方向又は双方向の情報交換を含んでもよい。例えば、コンポーネントは、通信媒体を介して通信される信号の形式で情報を通信してもよい。この情報は、様々な信号線に割り当てられた信号として実装することができる。このような割り当てにおいて、各メッセージは信号である。しかしながら、さらなる実施形態が、代替的にデータメッセージを採用してもよい。そのようなデータメッセージは、様々な接続を通して送信されてもよい。例示的な接続は、パラレルインターフェース、シリアルインターフェース、及びバスインターフェースを含む。
【0047】
図8に示すように、システム8000は、プラットフォームコンポーネントを取り付けるためのマザーボード8005を備える。マザーボード8005は、ポイントツーポイントインターコネクトプラットフォームであり、該プラットフォームは、ウルトラパスインターコネクト(Ultra Path Interconnect、UPI)などのポイントツーポイントインターコネクト8056を介して結合される第1のプロセッサ8010と第2のプロセッサ8030を含む。他の実施形態において、システム8000は、マルチドロップバスなどの別のバスアーキテクチャのものでもよい。さらに、プロセッサ8010及び8030の各々は、プロセッサコア8020及び8040をそれぞれ含む複数のプロセッサコアを備えたプロセッサパッケージでもよい。システム8000は、2ソケット(2S)プラットフォームの一例であるが、他の実施形態が、2つより多くのソケット又は1つのソケットを含んでもよい。例えば、いくつかの実施形態が、4ソケット(4S)プラットフォーム又は8ソケット(8S)プラットフォームを含んでもよい。各ソケットは、プロセッサのマウントであり、ソケット識別子を有し得る。用語のプラットフォームは、プロセッサ8010及びチップセット8060などの特定のコンポーネントが取り付けられたマザーボードを指すことに留意する。いくつかのプラットフォームが、さらなるコンポーネントを含んでもよく、いくつかのプラットフォームが、プロセッサ及び/又はチップセットを取り付けるためのソケットのみを含んでもよい。
【0048】
プロセッサ8010、8020は、Intel(登録商標) Celeron(登録商標)、Core(登録商標)、Core(2)Duo(登録商標)、Itanium(登録商標)、Pentium(登録商標)、Xeon(登録商標)、及びXScale(登録商標)プロセッサ、AMD(登録商標) Athlon(登録商標)、Duron(登録商標)、及びOpteron(登録商標)プロセッサ、ARM(登録商標)アプリケーション、組み込み及びセキュアプロセッサ、IBM(登録商標)及びMotorola(登録商標) DragonBall(登録商標)及びPowerPC(登録商標)プロセッサ、IBM及びSony(登録商標) Cellプロセッサ、及び同様のプロセッサを限定なく含む、様々な市販のプロセッサのいずれかでもよい。デュアルマイクロプロセッサ、マルチコアプロセッサ、及び他のマルチプロセッサアーキテクチャも、プロセッサ8010、8020として採用されてもよい。
【0049】
第1のプロセッサ8010は、統合メモリコントローラ(integrated memory controller、IMC)8014と、ポイントツーポイント(point-to-point、P‐P)インターフェース8018及び8052を含む。同様に、第2のプロセッサ8030は、IMC8034と、P‐Pインターフェース8038及び8054を含む。IMC8014及び8034は、プロセッサ8010及び8030をそれぞれ、それぞれのメモリ、メモリ8012及びメモリ8032に結合する。メモリ8012及び8032は、ダブルデータレートタイプ3(DDR3)又はタイプ4(DDR4)同期DRAM(SDRAM)などの、プラットフォームのメインメモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM))の一部でもよい。本実施形態において、メモリ8012及び8032は、それぞれのプロセッサ8010及び8030にローカルにアタッチする。他の実施形態において、メインメモリは、バス及び共有メモリハブを介してプロセッサと結合してもよい。
【0050】
プロセッサ8010及び8030は、それぞれ、プロセッサコア8020及び8040の各々に結合されたキャッシュを含む。本実施形態において、プロセッサ8010のプロセッサコア8020とプロセッサ830のプロセッサコア8040は、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105を含む。プロセッサコア8020、840は、メモリ管理論理回路網(図示せず)をさらに含んでもよく、これは、プロセッサコア8020、8040内のニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能を実現するように構成された回路網を表してもよく、あるいは、プロセッサ内の回路網と、キャッシュ、メモリ8012、バッファ、レジスタなどのメモリ内のニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能の全部又は一部を記憶する媒体との組み合わせを表してもよい。いくつかの実施形態において、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能は、チップセット8060を介してプロセッサ8010、830にアタッチされた記憶媒体700などのメモリにコードとして全体的に又は部分的に存在する。ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能はまた、メモリ8012及び/又はプロセッサのキャッシュなどのメモリに全体的に又は部分的に存在してもよい。さらに、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能はまた、プロセッサ8010内の回路網として全体的に又は部分的に存在してもよく、例えば、プロセッサ8010、8030内のレジスタ8016などのレジスタ又はバッファ内で、又はプロセッサ8010、8030の命令パイプライン内で演算を実行してもよい。さらに、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能は、8ビット最適化CNNモデル211を生成し、それに基づいて推論演算を実行するために、ハードウェアアクセラレータ106のプロセッサと統合されてもよい。
【0051】
上述のように、プロセッサ8030、及び/又はインターフェース(I/F)8066を介してチップセット8060と結合されるハードウェアアクセラレータ106内のプロセッサなど、プロセッサ8010及び8030のうち1つより多くが、ニューラルネットワーク論理101、CWアルゴリズム論理102、量子化論理103、及びINT8較正論理105の機能を含んでもよい。I/F8066は、例えば、ペリフェラルコンポーネントインターコネクト拡張(Peripheral Component Interconnect-enhanced、PCI‐e)でもよい。
【0052】
第1のプロセッサ8010は、P‐Pインターコネクト8052及び8062を介してチップセット8060に結合し、第2のプロセッサ8030は、P‐Pインターコネクト8054及び8064を介してチップセット8060に結合する。ダイレクトメディアインターフェース(Direct Media Interface、DMI)8057及び8058は、それぞれ、P‐Pインターコネクト8052及び8062と、P‐Pインターコネクト8054及び8064を結合し得る。DMIは、例えば、DMI3.0などの8ギガトランスファー毎秒(Giga Transfers per second、GT/s)を容易にする高速インターコネクトでもよい。他の実施形態において、プロセッサ8010及び8030は、バスを介して相互接続してもよい。
【0053】
チップセット8060は、プラットフォームコントローラハブ(platform controller hub、PCH)などのコントローラハブを含んでもよい。チップセット8060は、クロック機能を実行するためのシステムクロックを含んでもよく、プラットフォーム上の周辺デバイスの接続を容易にするためのユニバーサルシリアルバス(USB)、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect、PCI)、シリアルペリフェラルインターコネクト(serial peripheral interconnect、SPI)、統合インターコネクト(integrated interconnect、I2C)などのI/Oバスのインターフェースを含んでもよい。他の実施形態において、チップセット8060は、メモリコントローラハブ、グラフィックスコントローラハブ、及び入出力(I/O)コントローラハブを有するチップセットなどの複数のコントローラハブを含んでもよい。
【0054】
本実施形態において、チップセット8060は、トラステッドプラットフォームモジュール(trusted platform module、TPM)8072とUEFI、BIOS、フラッシュコンポーネント8074にインターフェース8070を介して結合する。TPM8072は、デバイスに暗号キーを統合することによりハードウェアを安全にするように設計された専用のマイクロコントローラである。UEFI、BIOS、フラッシュコンポーネント8074は、プリブートコードを提供してもよい。
【0055】
さらに、チップセット8060は、チップセット8060を高性能グラフィックスエンジン、グラフィックスカード8065と結合するI/F8066を含む。他の実施形態において、システム8000は、プロセッサ8010及び8030とチップセット8060との間にフレキシブルディスプレイインターフェース(flexible display interface、FDI)を含んでもよい。FDIは、プロセッサ内のグラフィックスプロセッサコアをチップセット8060と相互接続する。
【0056】
様々なI/Oデバイス8092は、バス8081を第2のバス8091に結合するバスブリッジ8080と、バス8081をチップセット8060に接続するI/F8068と共に、バス8081に結合する。一実施形態において、第2のバス8091は、ローピンカウント(low pin count、LPC)バスでもよい。様々なデバイスが第2のバス8091に結合してもよく、例えば、キーボード8082、マウス8084、通信デバイス8086、及び本明細書で前に説明されたコンピュータ実行可能コードを記憶し得る記憶媒体700が含まれる。さらに、オーディオI/O8090が、第2のバス8091に結合してもよい。I/Oデバイス8092、通信デバイス8086、及び記憶媒体700の多くがマザーボード8005上に存在してもよく、一方で、キーボード8082及びマウス8084はアドオン周辺機器でもよい。他の実施形態において、一部又は全部のI/Oデバイス8092、通信デバイス8086、及び記憶媒体700がアドオン周辺機器であり、マザーボード8005上に存在しない。
【0057】
少なくとも1つの例の1つ以上の態様は、プロセッサ内の様々な論理を表す少なくとも1つのマシン読取可能媒体上に記憶された代表的な命令により実現されてもよく、これは、マシン、コンピューティングデバイス、又はシステムにより読み出されたときにマシン、コンピューティングデバイス、又はシステムに、本明細書に記載の手法を実行する論理を製作させる。「IPコア」として知られるこのような表現は、有形のマシン読取可能媒体に記憶され、論理又はプロセッサを作成する製作マシンにロードするために様々な顧客又は製造施設に供給されてもよい。
【0058】
様々な例は、ハードウェア要素、ソフトウェア要素、又は双方の組み合わせを使用して実現されてもよい。いくつかの例において、ハードウェア要素は、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含んでもよい。いくつかの例において、ソフトウェア要素は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらの任意の組合せを含んでもよい。例がハードウェア要素を使用して実現されるか、及び/又はソフトウェア要素を使用して実現されるかの決定は、所与の実装のために所望される所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、及び他の設計又は性能制約などの、任意の数のファクタに従って変わってもよい。
【0059】
いくつかの例は、製造品又は少なくとも1つのコンピュータ読取可能媒体を含んでもよい。コンピュータ読取可能媒体は、論理を記憶するための非一時的記憶媒体を含んでもよい。いくつかの例において、非一時的記憶媒体は、揮発性メモリ又は不揮発性メモリ、取外し可能又は取外し不能メモリ、消去可能又は消去不能メモリ、書込可能又は再書込可能メモリなどを含む、電子データを記憶することができる1つ以上のタイプのコンピュータ読取可能記憶媒体を含んでもよい。いくつかの例において、論理は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらの任意の組合せなどの様々なソフトウェア要素を含んでもよい。
【0060】
いくつかの実施形態によれば、コンピュータ読取可能媒体は、マシン、コンピューティングデバイス、又はシステムにより実行されたときにマシン、コンピューティングデバイス、又はシステムに、記載の例に従って方法及び/又は動作を実行させる命令を記憶又は維持するための非一時的記憶媒体を含んでもよい。命令は、ソースコード、コンパイル型コード、解釈型コード、実行可能コード、静的コード、動的コードなどの任意の適切なタイプのコードを含んでもよい。命令は、特定の機能を実行するようにマシン、コンピューティングデバイス、又はシステムに指示するために、予め定義されたコンピュータ言語、方法、又は構文に従って実装されてもよい。命令は、任意の適切な高水準、低水準、オブジェクト指向、ビジュアル、コンパイル型、及び/又は解釈型プログラミング言語を使用して実装されてもよい。
【0061】
いくつかの例は、表現「1つの例において」又は「一例」をその派生語と共に用いて説明されている場合がある。これらの用語は、例に関連して説明された特定の特徴、構造、又は特性が少なくとも1つの例に含まれることを意味する。本明細書の様々な箇所におけるフレーズ「一例において」の出現は、必ずしも全て同じ実施形態を参照するものではない。
【0062】
いくつかの例は、表現「結合された」及び「接続された」をその派生語と共に用いて説明されている場合がある。これらの用語は、必ずしも互いの同義語として意図されているものではない。例えば、用語「接続された」及び/又は「結合された」を用いた説明は、2つ以上の要素が互いに直接物理的又は電気的に接触していることを示し得る。しかしながら、用語「結合された」は、2つ以上の要素が互いに直接接触しておらず、しかし依然として互いに協同又は相互作用することも意味し得る。
【0063】
さらに、上述の詳細な説明では、開示を合理化するために、様々な特徴が単一の例にまとめられている。この開示方法は、請求される例が各請求項に明示的に記載されているより多くの特徴を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明対象事項は、単一の開示された例の全ての特徴より少ない特徴に存する。したがって、以下の特許請求の範囲はここで本詳細な説明に組み込まれ、各請求項は別個の例として独立している。別記の特許請求の範囲において、用語「including」及び「in which」は、それぞれ、それぞれの用語「comprising」及び「wherein」の平易な英語の同等物として用いられる。さらに、用語「第1の」、「第2の」、「第3の」などは、ラベルとして用いられているに過ぎず、それらの対象に数値的要件を課すことは意図されない。
【0064】
対象事項は、構造的特徴及び/又は方法論的動作に特有の言語で記載されているが、別記の特許請求の範囲に定義される対象事項は、必ずしも上記の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上記の特定の特徴及び動作は、特許請求の範囲を実現する例示的な形態として開示されている。
【0065】
プログラムコードの記憶及び/又は実行に適したデータ処理システムは、システムバスを介してメモリ要素に直接又は間接的に結合された、少なくとも1つのプロセッサを含むであろう。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリ、バルクストレージ、及びキャッシュメモリを含むことができ、キャッシュメモリは、コードが実行中にバルクストレージから取り出されなければならない回数を減らすように少なくとも一部のプログラムコードの一時的なストレージを提供する。用語「コード」は、アプリケーション、ドライバ、プロセス、ルーチン、メソッド、モジュール、ファームウェア、マイクロコード、及びサブプログラムを含む広範囲のソフトウェアコンポーネント及び構成をカバーする。ゆえに、用語「コード」は、処理システムにより実行されたときに所望の1つ又は複数の動作を実行する命令の集合を指すために使用され得る。
【0066】
本明細書に記載される論理回路網、デバイス、及びインターフェースは、ハードウェアで実現され、1つ以上のプロセッサで実行されるコードで実現される機能を実行し得る。論理回路網は、1つ以上の論理機能を実現するハードウェア又はハードウェア及びコードを指す。回路網はハードウェアであり、1つ以上の回路を指し得る。各回路は、特定の機能を実行し得る。回路網の回路は、1つ以上のコンダクタ、集積回路、チップパッケージ、チップセット、メモリなどと相互接続されたディスクリート電気コンポーネントを含んでもよい。集積回路は、シリコンウェハなどのサブストレート上に作成された回路を含み、コンポーネントを含んでもよい。また、集積回路、プロセッサパッケージ、チップパッケージ、及びチップセットは、1つ以上のプロセッサを含んでもよい。
【0067】
プロセッサは、入力において命令及び/又はデータなどの信号を受信し、信号を処理して少なくとも1つの出力を生成してもよい。コードを実行する間、コードは、プロセッサパイプラインを構成するトランジスタの物理的状態及び特性を変更する。トランジスタの物理的状態は、プロセッサ内のレジスタに格納される1及び0の論理ビットに翻訳される。プロセッサは、トランジスタの物理的状態をレジスタに転送し、トランジスタの物理的状態を別の記憶媒体に転送することができる。
【0068】
プロセッサは、プロセッサの全体的な機能を実行するために実装された1つ以上のサブ機能を実行するための回路を含んでもよい。プロセッサの一例は、状態機械、又は少なくとも1つの入力及び少なくとも1つの出力を含む特定用途向け集積回路(ASIC)である。状態機械は、少なくとも1つの入力に対して所定の一連のシリアル及び/又はパラレルの操作又は変換を実行することにより、少なくとも1つの入力を操作して少なくとも1つの出力を生成し得る。
【0069】
上記の論理は、集積回路チップのための設計の一部でもよい。チップ設計は、グラフィカルコンピュータプログラミング言語で作成され、コンピュータ記憶媒体又はデータ記憶媒体(ディスク、テープ、物理的ハードドライブ、又は、ストレージアクセスネットワークなどにおける仮想ハードドライブなど)に記憶される。設計者が、チップ、又はチップを製作するために使用されるフォトリソグラフィマスクを製作しない場合、設計者は、結果として生じた設計を物理的手段により(例えば、設計を記憶した記憶媒体のコピーを提供することにより)又は電子的に(例えば、インターネットを通じて)、そのようなエンティティに直接又は間接的に送信する。次いで、記憶された設計は、製作のための適切なフォーマット(例えば、GDSII)にコンバートされる。
【0070】
結果として生じた集積回路チップは、未加工ウェハ形態で(すなわち、複数のパッケージ化されていないチップを有する単一のウェハとして)、裸のダイとして、又はパッケージ化された形態で製作者により配布することができる。後者の場合、チップは、単一のチップパッケージ(プラスチックキャリアなどであり、マザーボードに添付されたリードを有するか、又は他のより高水準のキャリア)に、又はマルチチップパッケージ(表面相互接続又は埋め込み相互接続のいずれか又は双方を有するセラミックキャリアなど)に取り付けられる。いずれの場合も、チップは、次いで、(a)プロセッサボード、サーバプラットフォーム、又はマザーボードなどの中間製品、又は(b)最終製品のいずれかの一部として、他のチップ、ディスクリート回路素子、及び/又は他の信号処理デバイスと一体化される。
【0071】
以下の例はさらなる実施形態に関し、該実施形態から多くの組み合わせ及び構成が明らかであろう。
【0072】
例1は、装置であって、プロセッサと、命令を記憶したメモリと、を含み、上記命令は、上記プロセッサにより実行されたときに上記プロセッサに、較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成し、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成し、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成し、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算し、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む8ビットCNNモデルを生成することをさせる。
【0073】
例2は、例1に記載の対象事項を含み、当該装置は、複数の画像を含む入力データセットを受信し、上記8ビットCNNモデル及び上記入力データセットを使用して8ビットコッパースミス‐ウィノグラード畳み込み演算を実行して上記複数の画像の各々を分類するように構成されたハードウェアアクセラレータ、をさらに含む。
【0074】
例3は、例1~2に記載の対象事項を含み、上記メモリは、(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行する、1つ以上の量子化関数の命令を記憶する。
【0075】
例4は、例3に記載の対象事項を含み、32ビット浮動小数点重み値を8ビット整数に量子化する上記量子化関数は、
【数9】
を含み、Qは、上記量子化関数を含み、rは、n次元有理テンソルを含み、zは、スケールファクタq及びビット精度pを有するn次元有理テンソルを含む。
【0076】
例5は、例4に記載の対象事項を含み、8ビット整数を32ビット浮動小数点重み値に逆量子化する上記量子化関数は、
【数10】
を含む。
【0077】
例6は、例5に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数11】
を含む。
【0078】
例7は、例6に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数12】
を含む。
【0079】
例8は、例7に記載の対象事項を含み、上記量子化関数は、以下の式:
【数13】
を使用して直接CW畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてp=7であり、上記活性化テンソルについてp=8であり、maxは、各々のそれぞれのテンソルにおける最大値を含む。
【0080】
例9は、例1~8に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式:
=B
に基づいて計算され、xは、変換された入力活性化テンソルの値を含み、上記入力行列は、Bを含み、xは、上記入力活性化テンソルの値を含む。
【0081】
例10は、例9に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式:
【数14】
に基づいて計算され、qxaは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、qxbは、上記入力活性化テンソルの量子化値を含む。
【0082】
例11は、例1~10に記載の対象事項を含み、上記変換された重みテンソルは、以下の式:
=Gw
に基づいて計算され、wは、上記変換された重みテンソルの値を含み、上記重み行列は、Gを含み、wは、上記重みテンソルの値を含む。
【0083】
例12は、例11に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式:
【数15】
に基づいて計算され、qwaは、上記スケールファクタ又は上記変換された重みテンソルを含み、qwbは、上記重みテンソルの量子化値を含む。
【0084】
例13は、方法であって、較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成するステップと、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成するステップと、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成するステップと、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算するステップと、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む8ビットCNNモデルを生成するステップと、を含む。
【0085】
例14は、例13に記載の対象事項を含み、複数の画像を含む入力データセットを受信するステップと、プロセッサを含むハードウェアアクセラレータにより、上記8ビットCNNモデル及び上記入力データセットを使用して8ビットコッパースミス‐ウィノグラード(CW)畳み込み演算を実行して上記複数の画像の各々を分類するステップと、をさらに含む。
【0086】
例15は、例13~14に記載の対象事項を含み、(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行する、1つ以上の量子化関数をさらに含む。
【0087】
例16は、例15に記載の対象事項を含み、32ビット浮動小数点重み値を8ビット整数に量子化する上記量子化関数は、
【数16】
を含み、Qは、上記量子化関数を含み、rは、n次元有理テンソルを含み、zは、スケールファクタq及びビット精度pを有するn次元有理テンソルを含む。
【0088】
例17は、例16に記載の対象事項を含み、32ビット浮動小数点重み値を8ビット整数に逆量子化する上記量子化関数は、
【数17】
を含む。
【0089】
例18は、例17に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数18】
を含む。
【0090】
例19は、例18に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数19】
を含む。
【0091】
例20は、例19に記載の対象事項を含み、上記量子化関数は、以下の式:
【数20】
を使用して直接CW畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてp=7であり、上記活性化テンソルについてp=8であり、maxは、各々のそれぞれのテンソルにおける最大値を含む。
【0092】
例21は、例1~20に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式:
=B
に基づいて計算され、xは、変換された入力活性化テンソルの値を含み、上記入力行列は、Bを含み、xは、上記入力活性化テンソルの値を含む。
【0093】
例22は、例21に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式:
【数21】
に基づいて計算され、qxaは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、qxbは、上記入力活性化テンソルの量子化値を含む。
【0094】
例23は、例22に記載の対象事項を含み、上記変換された重みテンソルは、以下の式:
=Gw
に基づいて計算され、wは、上記変換された重みテンソルの値を含み、上記重み行列は、Gを含み、wは、上記重みテンソルの値を含む。
【0095】
例24は、例23に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式:
【数22】
に基づいて計算され、qwaは、上記スケールファクタ又は上記変換された重みテンソルを含み、qwbは、上記重みテンソルの量子化値を含む。
【0096】
例25は、命令を含む非一時的コンピュータ読取可能記憶媒体であって、上記命令は、コンピューティングデバイスにより実行されたときに上記コンピューティングデバイスに、較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成することと、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成することと、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成することと、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算することと、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む8ビットCNNモデルを生成することと、をさせる。
【0097】
例26は、例25に記載の対象事項を含み、上記コンピューティングデバイスに、複数の画像を含む入力データセットを受信することと、ハードウェアアクセラレータにより、上記8ビットCNNモデル及び上記入力データセットを使用して8ビットコッパースミス‐ウィノグラード(CW)畳み込み演算を実行して上記複数の画像の各々を分類することと、をさせるように上記コンピューティングデバイスにより実行可能な命令をさらに含む。
【0098】
例27は、例25~26に記載の対象事項を含み、上記コンピューティングデバイスに、(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行することをさせるように上記コンピューティングデバイスにより実行可能な命令をさらに含む。
【0099】
例28は、例27に記載の対象事項を含み、32ビット浮動小数点重み値を8ビット整数に量子化する上記量子化関数は、
【数23】
を含み、Qは、上記量子化関数を含み、rは、n次元有理テンソルを含み、zは、スケールファクタq及びビット精度pを有するn次元有理テンソルを含む。
【0100】
例29は、例28に記載の対象事項を含み、8ビット整数を32ビット浮動小数点重み値に逆量子化する上記量子化関数は、
【数24】
を含む。
【0101】
例30は、例29に記載の対象事項を含み、行列加算演算を実行する上記量子化関数は、
【数25】
を含む。
【0102】
例31は、例30に記載の対象事項を含み、行列乗算演算を実行する上記量子化関数は、
【数26】
を含む。
【0103】
例32は、例31に記載の対象事項を含み、上記量子化関数は、以下の式:
【数27】
を使用して直接CW畳み込みのスケールファクタを定義する関数をさらに含み、上記重みテンソルについてp=7であり、上記活性化テンソルについてp=8であり、maxは、各々のそれぞれのテンソルにおける最大値を含む。
【0104】
例33は、例25~31に記載の対象事項を含み、上記変換された入力活性化テンソルは、以下の式:
=B
に基づいて計算され、xは、変換された入力活性化テンソルの値を含み、上記入力行列は、Bを含み、xは、上記入力活性化テンソルの値を含む。
【0105】
例34は、例33に記載の対象事項を含み、上記変換された入力活性化テンソルの上記スケールファクタは、以下の式:
【数28】
に基づいて計算され、qxaは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、qxbは、上記入力活性化テンソルの量子化値を含む。
【0106】
例35は、例25~34に記載の対象事項を含み、上記変換された重みテンソルは、以下の式:
=Gw
に基づいて計算され、wは、上記変換された重みテンソルの値を含み、上記重み行列は、Gを含み、wは、上記重みテンソルの値を含む。
【0107】
例36は、例35に記載の対象事項を含み、上記変換された重みテンソルの上記スケールファクタは、以下の式:
【数29】
に基づいて計算され、qwaは、上記スケールファクタ又は上記変換された重みテンソルを含み、qwbは、上記重みテンソルの量子化値を含む。
【0108】
例37は、装置であって、較正データセットと、32ビット浮動小数点重み値を含む予め訓練された畳み込みニューラルネットワーク(CNN)とをサンプリングして、入力活性化テンソル及び重みテンソルを生成する手段と、上記入力活性化テンソルと入力行列とを乗算することに部分的に基づいて変換された入力活性化テンソルを生成する手段と、上記重みテンソルと重み行列とを乗算することに部分的に基づいて変換された重みテンソル生成する手段と、上記変換された入力活性化テンソルのスケールファクタと、上記変換された重みテンソルのスケールファクタを計算する手段と、コンピュータプロセッサの演算により、上記変換された入力活性化テンソル及び上記変換された重みテンソルの上記スケールファクタを含む8ビットCNNモデルを生成する手段と、を含む。
【0109】
例38は、例37に記載の対象事項を含み、ハードウェアアクセラレータの手段と、複数の画像を含む入力データセットを受信する手段と、上記ハードウェアアクセラレータにより、上記8ビットCNNモデル及び上記入力データセットを使用して8ビットコッパースミス‐ウィノグラード(CW)畳み込み演算を実行して上記複数の画像の各々を分類する手段と、をさらに含む。
【0110】
例39は、例37~38に記載の対象事項を含み、(i)32ビット浮動小数点重み値を8ビット整数に量子化し、(ii)8ビット整数を32ビット浮動小数点重み値に逆量子化し、(iii)行列加算演算を実行し、(iv)行列乗算演算を実行する、量子化関数の手段をさらに含む。
【0111】
例40は、例39に記載の対象事項を含み、以下の式:
【数30】
に従って32ビット浮動小数点重み値を8ビット整数に量子化する手段をさらに含み、Qは、上記量子化関数を含み、rは、n次元有理テンソルを含み、zは、スケールファクタq及びビット精度pを有するn次元有理テンソルを含む。
【0112】
例41は、例40に記載の対象事項を含み、以下の式:
【数31】
に従って8ビット整数を32ビット浮動小数点値に逆量子化する手段をさらに含む。
【0113】
例42は、例41に記載の対象事項を含み、以下の式:
【数32】
に従って行列加算演算を実行する手段をさらに含む。
【0114】
例43は、例42に記載の対象事項を含み、以下の式:
【数33】
に従って行列乗算演算を実行する手段をさらに含む。
【0115】
例44は、例43に記載の対象事項を含み、以下の式:
【数34】
に従って直接CW畳み込みのスケールファクタを定義する手段をさらに含み、上記重みテンソルについてp=7であり、上記活性化テンソルについてp=8であり、maxは、各々のそれぞれのテンソルにおける最大値を含む。
【0116】
例45は、例37~43に記載の対象事項を含み、以下の式:
=B
に従って上記変換された入力活性化テンソルを計算する手段をさらに含み、xは、変換された入力活性化テンソルの値を含み、上記入力行列は、Bを含み、xは、上記入力活性化テンソルの値を含む。
【0117】
例46は、例45に記載の対象事項を含み、以下の式:
【数35】
に従って上記変換された入力活性化テンソルの上記スケールファクタを計算する手段をさらに含み、qxaは、上記スケールファクタ又は上記変換された入力活性化テンソルを含み、qxbは、上記入力活性化テンソルの量子化値を含む。
【0118】
例47は、例37~46に記載の対象事項を含み、以下の式:
=Gw
に従って上記変換された重みテンソルを計算する手段をさらに含み、wは、上記変換された重みテンソルの値を含み、上記重み行列は、Gを含み、wは、上記重みテンソルの値を含む。
【0119】
例48は、例47に記載の対象事項を含み、以下の式:
【数36】
に従って上記変換された重みテンソルの上記スケールファクタを計算する手段をさらに含み、qwaは、上記スケールファクタ又は上記変換された重みテンソルを含み、qwbは、上記重みテンソルの量子化値を含む。
【0120】
前述の例示的な実施形態の説明は、例示及び説明を目的として提示されている。これは、網羅的であること、又は本開示を開示された正確な形態に限定することを意図するものではない。本開示に照らして、多くの修正及び変形が可能である。本開示の範囲は、この詳細な説明によってではなく、別記の特許請求の範囲により限定されることが意図される。本出願に対して優先権を主張する将来申請される出願は、開示の対象主題を異なる方法で請求する可能性があり、一般に、本明細書において様々に開示され又はその他の方法で論証された1つ以上の限定の任意のセットを含み得る。
図1
図2
図3
図4
図5
図6
図7
図8