(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-12
(54)【発明の名称】負および正の値に対する非対称スケーリングファクタをサポートするシステムおよび方法
(51)【国際特許分類】
G06N 3/063 20060101AFI20220905BHJP
G06F 17/10 20060101ALI20220905BHJP
【FI】
G06N3/063
G06F17/10 S
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021571015
(86)(22)【出願日】2020-07-09
(85)【翻訳文提出日】2022-01-26
(86)【国際出願番号】 US2020041467
(87)【国際公開番号】W WO2021011320
(87)【国際公開日】2021-01-21
(32)【優先日】2019-07-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】ヴェンカテーシュ, ガネシュ
(72)【発明者】
【氏名】チャン, ピアス イ-ジェン
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056FF01
5B056FF08
(57)【要約】
本明細書の開示は、負および正の値に対する非対称スケーリングファクタをサポートするシステム、方法、およびデバイスを含む。デバイスは、シフト回路類および乗算回路類を有する回路を含むことができる。回路は、乗算回路類を介して、第1の値および第2の値を乗算することを含む、ニューラルネットワークに対する計算を実施するように構成することができる。回路は、シフト回路類を介して、乗算の結果を決定されたビット数分シフトすることを含む、ニューラルネットワークに対する計算を実施するように構成することができる。回路は、第1の値の符号ビットが負の場合は乗算の結果を、第1の値の符号ビットが正の場合はシフトの結果を出力することを含む、ニューラルネットワークに対する計算を実施するように構成することができる。
【選択図】
図1B
【特許請求の範囲】
【請求項1】
シフト回路類および乗算回路類を備え、ニューラルネットワークに対する計算を実施するように構成された、回路を備え、
前記乗算回路類を介して、第1の値および第2の値を乗算することと、
前記シフト回路類を介して、前記乗算の結果を決定されたビット数分シフトすることと、
前記第1の値の符号ビットが負の場合は前記乗算の前記結果を、前記第1の値の前記符号ビットが正の場合は前記シフトの結果を出力することと、を含む、デバイス。
【請求項2】
前記回路がマルチプレクサを更に備え、
前記回路が、前記第1の値の前記符号ビットにしたがって前記マルチプレクサを介して、前記乗算の前記結果および前記シフトの前記結果を出力するように構成された、請求項1に記載のデバイス。
【請求項3】
前記第1の値が前記ニューラルネットワークの第1の層に対する活性化を含み、好ましくは、前記決定されたビット数が、前記ニューラルネットワークの前記第1の層に対する、活性化関数のスケーリングファクタの2進数の指数に対応し、また好ましくは、前記活性化関数が漏れのある正規化線形ユニット(ReLu)関数を含む、請求項1または2に記載のデバイス。
【請求項4】
前記決定されたビット数がmであり、mが1よりも大きい整数であり、好ましくは前記決定されたビット数が2である、請求項1から3のいずれか一項に記載のデバイス。
【請求項5】
前記回路が更に、前記第1の値の前記符号ビットが負または正のどちらであるかを決定するように構成された比較器回路類を含む、請求項1から4のいずれか一項に記載のデバイス。
【請求項6】
前記回路が、累算器回路類を備える乗累算器(MAC)回路類を含み、
前記回路が更に、前記出力の結果を前記MAC回路類の前記累算器回路類に提供するように構成された、請求項1から5のいずれか一項に記載のデバイス。
【請求項7】
前記ニューラルネットワークに対する前記計算が更に、
前記乗算回路類を介して、第3の値および第4の値の第2の乗算を行うことと、
前記シフト回路類を介して、前記第2の乗算の結果に対して前記決定されたビット数分の第2のシフトを行うことと、
前記第3の値の符号ビットが負の場合は前記第2の乗算の前記結果の、前記第3の値の前記符号ビットが正の場合は前記第2のシフトの結果の、第2の出力を行うことと、
前記第2の出力の結果を前記MAC回路類の前記累算器回路類に提供することと、を含む、請求項6に記載のデバイス。
【請求項8】
回路の乗算回路類によって、ニューラルネットワークに対する第1の値および第2の値を乗算することと、
前記回路のシフト回路類によって、前記乗算の結果を決定されたビット数分シフトすることと、
前記回路によって、前記第1の値の符号ビットが負の場合は前記乗算の前記結果を、前記第1の値の前記符号ビットが正の場合は前記シフトの結果を出力することと、を含む、方法。
【請求項9】
前記回路のマルチプレクサを介して、前記第1の値の前記符号ビットに基づいて、前記乗算の前記結果または前記シフトの前記結果を出力することを含む、請求項8に記載の方法。
【請求項10】
前記第1の値が前記ニューラルネットワークの第1の層に対する活性化を含み、好ましくは、前記決定されたビット数が、前記ニューラルネットワークの前記第1の層に対する、活性化関数のスケーリングファクタの2進数の指数に対応し、また好ましくは、前記活性化関数が漏れのある正規化線形ユニット(ReLu)関数を含む、請求項8または9に記載の方法。
【請求項11】
所定のビット数がmであり、mが1を超える整数である、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記決定されたビット数が2である、請求項11に記載の方法。
【請求項13】
前記回路の比較器回路類によって、前記第1の値の前記符号ビットが負または正のどちらであるかを決定することを更に含む、請求項8から12のいずれか一項に記載の方法。
【請求項14】
前記出力の結果を前記回路の累算器回路類に提供することを更に含む、請求項8から13のいずれか一項に記載の方法。
【請求項15】
前記乗算回路類を介して、第3の値および第4の値の第2の乗算を行うことと、
前記シフト回路類を介して、前記第2の乗算の結果に対して、所定のビット数分の第2のシフトを行うことと、
前記第3の値の符号ビットが負の場合は前記第2の乗算の前記結果の、前記第3の値の前記符号ビットが正の場合は前記第2のシフトの結果の、第2の出力を行うことと、
前記第2の出力の結果を前記回路の前記累算器回路類に提供することと、を更に含む、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、全体として、ニューラルネットワークにおける計算に関し、ニューラルネットワークの値に対する非対称スケーリングファクタをサポートするシステムおよび方法を含むがそれらに限定されない。
【背景技術】
【0002】
人工知能(AI)処理は、異なる形態の活性化関数を使用することができる。活性化関数は、1セットの入力を所与として、ノードの出力をニューラルネットワークに生成することができる。活性化関数は、入力のセットに基づいて、正または負どちらかの値を出力することができる。活性化関数は、正の値を有するニューラルネットワークの1つまたは複数のニューロン、および負の値を有するニューラルネットワークの1つまたは複数のニューロンを活性化させることができる。
【発明の概要】
【0003】
負および正の値に対する非対称スケーリングファクタをサポートするデバイス、システム、および方法が本明細書において提供される。回路は、例えば乗累算器回路類(MAC)において、正の値および負の値に対して非対称スケーリングファクタを提供するように、ハードウェア構成要素を有して設計され構成されてもよい。一例では、回路は、複数の値(例えば、重み値、活性化値)を受信する乗算器構成要素を含んでもよい。回路は、乗算器構成要素に提供される少なくとも1つの値の符号を決定する、比較器構成要素を含んでもよい。例えば、比較器構成要素は、乗算器構成要素に提供される活性化値の符号を決定してもよい。値の符号に応答して、回路は、正の値対負の値に対して異なるスケーリングを提供してもよい。例えば、正の値に応答して、回路は、乗算器の結果をシフト構成要素または回路に提供して、結果を所定のビット数分シフトしてもよい。回路は、シフト構成要素または回路の結果をマルチプレクサ構成要素に提供して、回路に対する出力を生成してもよい。負の値に応答して、回路は、乗算器の結果をマルチプレクサ構成要素(例えば、シフト演算を有さない)に提供して、回路に対する出力を生成してもよい。したがって、回路は、正の値対負の値に対して異なるスケーリングファクタを提供してもよい。
【0004】
本発明の第1の態様によれば、シフト回路類および乗算回路類を備え、ニューラルネットワークに対する計算を実施するように構成された、回路を備え、乗算回路類を介して、第1の値および第2の値を乗算することと、シフト回路類を介して、乗算の結果を決定されたビット数分シフトすることと、第1の値の符号ビットが負の場合は乗算の結果を、第1の値の符号ビットが正の場合はシフトの結果を出力することと、を含む、デバイスが提供される。
【0005】
回路は、ニューラルネットワークの現在または特定の層に対する計算を実施するように構成されてもよい。
【0006】
回路はマルチプレクサを含んでもよい。回路は、マルチプレクサを介して、第1の値の符号ビットにしたがって、乗算の結果またはシフトの結果を出力するように構成されてもよい。第1の値は、ニューラルネットワークの第1の層(例えば、前もしくは以前の層)に対する活性化を含んでもよい。決定されたビット数は、ニューラルネットワークの第1の層に対する、活性化関数のスケーリングファクタの2進数の指数に対応してもよい。活性化関数は、漏れのある正規化線形ユニット(ReLu)関数を含んでもよい。決定されたビット数はmであってもよく、mは1以上の整数であってもよい。決定されたビット数は2であってもよい。
【0007】
回路は更に、第1の値の符号ビットが負または正のどちらであるかを決定するように構成された、比較器回路類を含んでもよい。回路は、累算器回路類を備える乗累算器(MAC)回路類を含んでもよい。回路は更に、出力の結果をMAC回路類の累算器回路類に提供するように構成されてもよい。ニューラルネットワークに対する計算は更に、乗算回路類を介して、第3の値および第4の値の第2の乗算を行うことを含んでもよい。ニューラルネットワークに対する計算は更に、シフト回路類を介して、第2の乗算の結果に対して、決定されたビット数分の第2のシフトを行うことを含んでもよい。ニューラルネットワークに対する計算は更に、第3の値の符号ビットが負の場合は第2の乗算の結果の、第3の値の符号ビットが正の場合は第2のシフトの結果の、第2の出力を行うことを含んでもよい。ニューラルネットワークに対する計算は更に、第2の出力の結果をMAC回路類の累算器回路類に提供することを含んでもよい。
【0008】
本発明の第2の態様によれば、回路の乗算回路類によって、ニューラルネットワークに対する第1の値および第2の値を乗算することと、回路のシフト回路類によって、乗算の結果を決定されたビット数分シフトすることと、回路によって、第1の値の符号ビットが負の場合は乗算の結果を、第1の値の符号ビットが正の場合はシフトの結果を出力することと、を含む、方法が提供される。
【0009】
方法は、回路のマルチプレクサを介して、第1の値の符号ビットに基づいて、乗算の結果またはシフトの結果を出力することを含んでもよい。第1の値は、ニューラルネットワークの第1のまたは前の層に対する活性化を含んでもよい。決定されたビット数は、ニューラルネットワークの第1の層に対する、活性化関数のスケーリングファクタの2進数の指数に対応してもよい。活性化関数は、漏れのある正規化線形ユニット(ReLu)関数を含んでもよい。所定のビット数はmであってもよく、mは1以上の整数であってもよい。決定されたビット数は2であってもよい。
【0010】
方法は更に、回路の比較器回路類によって、第1の値の符号ビットが負または正のどちらであるかを決定することを含んでもよい。方法は更に、出力の結果を回路の累算器回路類に提供することを含んでもよい。方法は更に、乗算回路類を介して、第3の値および第4の値に対して第2の乗算を行うことを含んでもよい。方法は更に、シフト回路類を介して、第2の乗算の結果に対して、決定されたビット数分の第2のシフトを行うことを含んでもよい。方法は更に、第3の値の符号ビットが負の場合は第2の乗算の結果の、第3の値の符号ビットが正の場合は第2のシフトの結果の、第2の出力を行うことを含んでもよい。方法は更に、第2の出力の結果を回路の累算器回路類に提供することを含んでもよい。
【0011】
例示の実現例について以下で詳細に考察する。以下で詳述する説明は、様々な例示の実現例の実例を含み、特許請求する態様および実現例の性質ならびに特徴を理解するための概観または枠組みを提供する。図面は、様々な態様および実現例の例示ならびに更なる理解を提供し、本明細書に組み込まれるとともに本明細書の一部を構成する。
【0012】
添付図面は縮尺通りに描かれることを意図しない。様々な図面における同様の参照番号および記号は同様の要素を示す。明瞭にするため、全ての図面において全ての構成要素に符号が付されるわけではない。
【図面の簡単な説明】
【0013】
【
図1A】本開示の例示の一実現例による、人工知能(AI)に関連する処理を実施するシステムの一実施形態を示すブロック図である。
【
図1B】本開示の例示の一実現例による、AIに関連する処理を実施するデバイスの一実施形態を示すブロック図である。
【
図1C】本開示の例示の一実現例による、AIに関連する処理を実施するデバイスの一実施形態を示すブロック図である。
【
図1D】本開示の例示の一実現例によるコンピューティング環境を示すブロック図である。
【
図2A】本開示の例示の一実現例による、負および正の値に対する非対称スケーリングファクタに関するシステムを示すブロック図である。
【
図2B】本開示の例示の一実現例による活性化関数を示すグラフである。
【
図2C】本開示の例示の一実現例による、負および正の値に対する非対称スケーリングファクタに関するプロセスまたは方法を示すフローチャートである。
【発明を実施するための形態】
【0014】
特定の実施形態を詳細に示す図面に移る前に、本開示は、明細書に記載されるかまたは図面に例示される、詳細もしくは方法論に限定されないことが理解されるべきである。また、本明細書で使用する専門用語は、単に説明のためのものであって限定とみなされるべきでないことが理解されるべきである。
【0015】
以下の本発明の様々な実施形態についての説明を読むために、本明細書のセクションおよびそれらそれぞれの内容について、次の説明が有用であり得る。
【0016】
セクションAは、本発明のシステム、方法、およびデバイスの一実施形態を実践または実現するのに有用な、環境、システム、構成、および/または他の態様について記載する。
【0017】
セクションBは、負および正の値に対する非対称スケーリングファクタをサポートするデバイス、システム、および方法の実施形態について記載する。
【0018】
セクションA.人工知能に関連する処理のための環境
【0019】
システム、デバイス、および/または方法の実施形態の詳細についてセクションBで考察する前に、システム、デバイス、および/または方法の特定の実施形態を実践もしくは実現するのに有用な、環境、システム、構成、および/または他の態様について考察するのが有用であり得る。ここで
図1Aを参照すると、人工知能(AI)に関連する処理を実施するためのシステムの一実施形態が示される。概要では、システムは、入力データ110を使用してAIに関連する処理を実施することができる、1つまたは複数のAIアクセラレータ108を含む。AIアクセラレータ108として参照しているが、場合によっては、ニューラルネットワークアクセラレータ(NNA)、ニューラルネットワークチップもしくはハードウェア、AIプロセッサ、AIチップなどと呼ばれる。AIアクセラレータ108は、入力データ110および/またはパラメータ128(例えば、重みおよび/またはバイアス情報)にしたがって、AIに関連する処理を実施して、出力データ112を出力または提供することができる。AIアクセラレータ108は、1つもしくは複数のニューラルネットワーク114(例えば、人工ニューラルネットワーク)、1つもしくは複数のプロセッサ、および/または1つもしくは複数の記憶デバイス12を含むことができ、ならびに/あるいは実装することができる。
【0020】
上述の要素または構成要素はそれぞれ、ハードウェア、またはハードウェアとソフトウェアの組み合わせの形で実装される。例えば、これらの要素または構成要素はそれぞれ、任意のアプリケーション、プログラム、ライブラリ、スクリプト、タスク、サービス、プロセス、あるいはデジタルおよび/またはアナログ要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子)を含むことができる回路類などのハードウェア上で実行する、任意のタイプおよび形態の実行可能命令を含むことができる。
【0021】
入力データ110は、AIアクセラレータ108のニューラルネットワーク114を構成、調整、訓練、および/または活性化するための、ならびに/あるいはプロセッサ124によって処理するための、任意のタイプもしくは形態のデータを含むことができる。ニューラルネットワーク114は、場合によっては、人工ニューラルネットワーク(ANN)と呼ばれる。ニューラルネットワークの構成、調整、および/または訓練は、履歴データなど、(例えば、入力データ110としての)訓練データセットがニューラルネットワークに提供されて処理される、機械学習のプロセスを指すかあるいは含むことができる。調整または構成は、ニューラルネットワーク114を訓練または処理して、ニューラルネットワークが精度を改善するのを可能にすることを指すかまたは含むことができる。ニューラルネットワーク114の調整または構成は、例えば、ニューラルネットワーク114に関する問題のタイプもしくは所望の目標に対して成功することが証明されているアーキテクチャを使用した、ニューラルネットワークの設計を含むことができる。場合によっては、1つまたは複数のニューラルネットワーク114は、同じもしくは類似のベースラインモデルで開始してもよいが、調整、訓練、または学習プロセスの間、ニューラルネットワーク114の結果は、ベースラインモデルであるかあるいは異なる目標もしくは目的のために調整または訓練された異なるニューラルネットワークよりも高いレベルの精度および信頼性で、特定のタイプの入力を処理し、特定のタイプの出力を生成するように、各ニューラルネットワーク114を調整することができるような、十分に異なるものであることができる。ニューラルネットワーク114の調整は、各ニューラルネットワーク114に対して異なるパラメータ128を設定すること、各ニューラルネットワーク114に対してパラメータ128を異なるように微調整すること、または異なる重み(例えば、ハイパーパラメータ、もしくは学習率)、テンソルフローなどを割り当てることを含むことができる。したがって、ニューラルネットワークならびに/あるいはシステムの調整または訓練プロセスおよび目標に基づいて、ニューラルネットワーク114に対して適切なパラメータ128を設定することによって、このことがシステム全体の性能を改善することができる。
【0022】
AIアクセラレータ108のニューラルネットワーク114は、例えば、畳み込みニューラルネットワーク(CNN)、深層畳み込みネットワーク、順伝播型ニューラルネットワーク(例えば、多層パーセプトロン(MLP))、深層順伝播型ニューラルネットワーク、放射基底関数ニューラルネットワーク、コホネン自己組織化ニューラルネットワーク、回帰型ニューラルネットワーク、モジュール型ニューラルネットワーク、長期/短期メモリニューラルネットワークなど、任意のタイプのニューラルネットワークを含むことができる。ニューラルネットワーク114は、自然言語処理など、データ(例えば、画像、音声、映像)処理、オブジェクトもしくは特徴認識、レコメンダ機能、データもしくは画像分類、データ(例えば、画像)解析などを実施するために展開または使用することができる。
【0023】
一例として、また1つまたは複数の実施形態では、ニューラルネットワーク114は、畳み込みニューラルネットワークとして構成することができ、または畳み込みニューラルネットワークを含むことができる。畳み込みニューラルネットワークは、それぞれ異なる目的に役立ち得る、1つもしくは複数の畳み込みセル(またはプーリング層)およびカーネルを含むことができる。畳み込みニューラルネットワークは、畳み込みカーネル(場合によっては、単に「カーネル」と呼ばれる)を含み、組み込み、および/または使用することができる。畳み込みカーネルは入力データを処理することができ、プーリング層は、例えば、maxなどの非線形関数を使用して、データを単純化し、それによって不要な特徴を低減することができる。畳み込みニューラルネットワークを含むニューラルネットワーク114は、画像、音声、または任意のデータの認識もしくは他の処理を容易にすることができる。例えば、(例えば、センサからの)入力データ110を、ファンネルを形成する畳み込みニューラルネットワークの畳み込み層に渡して、入力データ110の検出された特徴を圧縮することができる。畳み込みニューラルネットワークの第1の層は第1の特性を検出することができ、第2の層は第2の特性を検出することができ、その先も同様である。
【0024】
畳み込みニューラルネットワークは、視覚心像、音声情報、および/または他の任意のタイプもしくは形態の入力データ110を解析するように構成された、深層順伝播型人工ニューラルネットワークのタイプであることができる。畳み込みニューラルネットワークは、最小限の前処理を使用するように設計された、多層パーセプトロンを含むことができる。畳み込みニューラルネットワークは、重み共有アーキテクチャおよび翻訳不変性特性に基づいて、シフト不変または空間不変人工ニューラルネットワークを含むことができ、またはそのように呼ぶことができる。畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムと比較して相対的に少ない前処理を使用することができるので、畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムのためにマニュアル設計されてもよいフィルタを自動的に学習して、ニューラルネットワーク114の構成、確立、またはセットアップと関連付けられた効率を改善することによって、他のデータ分類/処理技術と比べて技術的利点を提供することができる。
【0025】
ニューラルネットワーク114は、ニューロンもしくはノードの、入力層116および出力層122を含むことができる。ニューラルネットワーク114はまた、ニューロンもしくはノードの、畳み込み層、プーリング層、全結合層、および/または正規化層を含むことができる、1つまたは複数の隠れ層118、119を有することができる。ニューラルネットワーク114では、各ニューロンは、前の層におけるいくつかの位置から入力を受信することができる。全結合層では、各ニューロンは、前の層の全ての要素からの入力を受信することができる。
【0026】
ニューラルネットワーク114の各ニューロンは、前の層の受容野からの入力値に何らかの関数を適用することによって、出力値を計算することができる。入力値に適用される関数は、重みのベクトルおよびバイアス(一般的には実数)によって指定される。ニューラルネットワーク114における(例えば、訓練フェーズ中の)学習は、バイアスおよび/または重みを漸増的に調節することによって進行することができる。重みのベクトルおよびバイアスは、フィルタと呼ぶことができ、入力の何らかの特徴(例えば、特定の形状)を表すことができる。畳み込みニューラルネットワークの際立った特徴は、多くのニューロンが同じフィルタを共有できることである。これにより、各受容野が独自のバイアスおよび重みのベクトルを有するのではなく、単一のバイアスおよび重みの単一のベクトルを、該フィルタを共有する全ての受容野にわたって使用することができるので、メモリフットプリントが低減される。
【0027】
例えば、畳み込み層では、システムは、畳み込み演算を入力層116に適用して、結果を次の層に渡すことができる。畳み込みは、個々のニューロンの応答をエミュレートして刺激を入力することができる。各畳み込みニューロンは、その受容野に対してのみデータを処理することができる。畳み込み演算は、全結合順伝播型ニューラルネットワークと比較して、ニューラルネットワーク114で使用されるニューロンの数を低減することができる。したがって、畳み込み演算は、自由パラメータの数を低減して、より少ないパラメータでネットワークをより深層化することを可能にすることができる。例えば、入力データ(例えば、画像データ)サイズにかかわらず、同じ共有重みをそれぞれ有するサイズ5×5のタイリング領域は、25個のみの学習可能パラメータを使用してもよい。このように、畳み込みニューラルネットワークを有する第1のニューラルネットワーク114は、逆伝播を使用することによって多くの層を有する従来の多層ニューラルネットワークを訓練する際の、勾配消失または発散の問題を解決することができる。
【0028】
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、1つまたは複数のプーリング層を含むことができる。1つまたは複数のプーリング層は、ローカルプーリング層またはグローバルプーリング層を含むことができる。プーリング層は、1つの層におけるニューロンクラスタの出力を組み合わせて、次の層における単一のニューロンとすることができる。例えば、最大プーリングは、前の層におけるニューロンのクラスタそれぞれからの最大値を使用することができる。別の例は、前の層におけるニューロンのクラスタそれぞれからの平均値を使用することができる、平均プーリングである。
【0029】
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、全結合層を含むことができる。全結合層は、1つの層の全てのニューロンを別の層の全てのニューロンに結合することができる。ニューラルネットワーク114は、畳み込み層で重みを共有して構成することができ、それは同じフィルタが層内の各受容野に使用されることを指すことができ、それにより、メモリフットプリントが低減され、第1のニューラルネットワーク114の性能が改善される。
【0030】
隠れ層118、119は、入力データ(例えば、仮想現実システムなどからのセンサデータ)に基づいて、情報を検出するように調整または構成されるフィルタを含むことができる。システムがニューラルネットワーク114(例えば、畳み込みニューラルネットワーク)の各層を通るにつれて、システムは、第1の層からの入力を翻訳し、変換された入力を第2の層に出力することができ、その先も同様である。ニューラルネットワーク114は、検出、処理、および/または計算されるオブジェクトもしくは情報のタイプ、ならびに入力データ110のタイプに基づいて、1つまたは複数の隠れ層118、119を含むことができる。
【0031】
いくつかの実施形態では、畳み込み層は、ニューラルネットワーク114(例えば、CNNとして構成される)のコアビルディングブロックである。層のパラメータ128は、小さい受容野を有するが、入力ボリュームの深さ全体を通って延在する、学習可能なフィルタ(またはカーネル)のセットを含むことができる。順方向パスの間、各フィルタは、入力ボリュームの幅および高さにわたって畳み込まれて、フィルタのエントリと入力との間のドット積を計算し、該フィルタの二次元活性化マップを作成する。結果として、ニューラルネットワーク114は、入力のある空間位置である特定のタイプの特徴を検出すると活性化する、フィルタを学習させることができる。深さ次元に沿って全てのフィルタの活性化マップを積み重ねることで、畳み込み層の全出力ボリュームが形成される。したがって、出力ボリュームの全てのエントリは、入力の小さい領域に注目し、同じ活性化マップのニューロンとパラメータを共有する、ニューロンの出力として解釈することもできる。畳み込み層では、ニューロンは、前の層の制限されたサブエリアから入力を受信することができる。一般的に、サブエリアは正方形形状のもの(例えば、サイズ5×5)である。ニューロンの入力エリアはその受容野と呼ばれる。そのため、全結合層では、受容野は前の層全体である。畳み込み層では、受容エリアは前の層全体よりも小さいものであり得る。
【0032】
第1のニューラルネットワーク114は、(例えば、入力データ110に基づいて、オブジェクト、イベント、ワード、および/または他の特徴の確率を検出もしくは決定することによって)入力データ110を検出、分類、セグメント化、および/または翻訳するように訓練することができる。例えば、ニューラルネットワーク114の第1の入力層116は、入力データ110を受信し、入力データ110を処理してデータを第1の中間出力に変換し、第1の中間出力を第1の隠れ層118に伝達することができる。第1の隠れ層118は、第1の中間出力を受信し、第1の中間出力を処理して第1の中間出力を第2の中間出力に変換し、第2の中間出力を第2の隠れ層119に伝達することができる。第2の隠れ層119は、第2の中間出力を受信し、第2の中間出力を処理して第2の中間出力を第3の中間出力に変換し、第3の中間出力を出力層122に伝達することができる。出力層122は、第3の中間出力を受信し、第3の中間出力を処理して第3の中間出力を出力データ112に変換し、出力データ112を(例えば、場合によっては、ユーザに対するレンダリングのため、格納のためなど、後処理エンジンに)伝達することができる。出力データ112は、例として、オブジェクト検出データ、強化/翻訳/拡張されたデータ、推奨、分類、および/またはセグメント化されたデータを含むことができる。
【0033】
再び
図1Aを参照すると、AIアクセラレータ108は、1つまたは複数の記憶デバイス126を含むことができる。記憶デバイス126は、AIアクセラレータ108と関連付けられた任意のタイプもしくは形態のデータを、格納、保持、または維持するように、設計または実装することができる。例えば、データは、AIアクセラレータ108によって受信される入力データ110、および/または出力データ112(例えば、次のデバイスもしくは処理段階に出力される前)を含むことができる。データは、ニューラルネットワーク114および/またはプロセッサ124の処理段階のいずれかに使用される、またはいずれかからの、中間データを含むことができる。データは、記憶デバイス126から読み取るかまたはアクセスすることができる、ニューラルネットワーク114のニューロンに入力される、また該ニューロンで処理する、1つもしくは複数のオペランドを含むことができる。例えば、データは、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。データは、記憶デバイス126に書き込み、またそこに格納することができる、ニューラルネットワーク114のニューロンからの出力データを含むことができる。例えば、データは、記憶デバイス126に転送するかもしくは書き込み、格納することができる、ニューラルネットワーク114の1つもしくは複数のニューロン(またはノード)および/または層のための、活性化データ、改良もしくは更新されたデータ(例えば、重み情報および/またはバイアス情報、活性化関数情報、および/または他のパラメータ128)を含むことができる。
【0034】
いくつかの実施形態では、AIアクセラレータ108は1つまたは複数のプロセッサ124を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する入力データを前処理するための、ならびに/あるいはニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する出力データを後処理するための、任意の論理、回路類、および/または処理構成要素(例えば、マイクロプロセッサ)を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108の1つもしくは複数の演算を構成、制御、および/または管理するための、論理、回路類、処理構成要素、および/または機能性を提供することができる。例えば、プロセッサ124は、ニューラルネットワーク114と関連付けられたデータまたは信号を受信して、(例えば、ニューラルネットワーク114の演算を実装する回路類に対するクロックゲート制御を介して)消費電力を制御または低減してもよい。別の例として、プロセッサ124は、(例えば、AIアクセラレータ108の様々な構成要素における)別個の処理のため、(例えば、AIアクセラレータ108の同じ構成要素における、異なる時間での)逐次処理のため、あるいは記憶デバイスの異なるメモリスライスに、または異なる記憶デバイスに格納するため、データを区画化および/または再配置してもよい。いくつかの実施形態では、プロセッサ124は、特定の重み、活性化関数、および/またはパラメータ情報の識別、選択、ならびに/あるいはニューラルネットワーク114のニューロンおよび/または層へのロードによって、特定の文脈に対して演算を行い、特定のタイプの処理を提供し、ならびに/あるいは特定のタイプの入力データをアドレスするように、ニューラルネットワーク114を構成することができる。
【0035】
いくつかの実施形態では、AIアクセラレータ108は、ディープラーニングおよび/またはAIワークロードを扱うかもしくは処理するように、設計および/または実装される。例えば、AIアクセラレータ108は、人工ニューラルネットワーク、マシンビジョン、および機械学習を含む人工知能用途のため、ハードウェアアクセラレーションを提供することができる。AIアクセラレータ108は、ロボティックス、物のインターネット、および他のデータ集約的またはセンサ駆動のタスクを扱う演算向けに構成することができる。AIアクセラレータ108は、マルチコアまたは複数の処理要素(PE)設計を含んでもよく、人工現実(例えば、仮想、拡張、もしくは混合現実)システム、スマートフォン、タブレット、およびコンピュータなど、様々なタイプおよび形態のデバイスに組み込むことができる。AIアクセラレータ108の特定の実施形態は、少なくとも1つのデジタル信号プロセッサ(DSP)、コプロセッサ、マイクロプロセッサ、コンピュータシステム、プロセッサのヘテロジニアスコンピューティング構成、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、および/または特定用途向け集積回路(ASIC)を含むかあるいはそれらを使用して実装することができる。AIアクセラレータ108は、トランジスタベース、半導体ベース、および/または量子コンピューティングベースのデバイスであることができる。
【0036】
次に
図1Bを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、
図1Aに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数の記憶デバイス126(例えば、スタティックランダムアクセスメモリ(SRAM)デバイスなどのメモリ)、1つまたは複数のバッファ、複数の処理要素(PE)回路またはPE回路のアレイ、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
【0037】
AIアクセラレータ108において実装されたニューラルネットワーク114(例えば、人工ニューラルネットワーク)では、ニューロンは、様々な形態を取ることができ、処理要素(PE)またはPE回路と呼ぶことができる。PEは接続されて、異なるパターンが異なる機能的目的に役立つ、特定のネットワークパターンまたはアレイとなる。人工ニューラルネットワークのPEは、(例えば、半導体の実現例では)電気的に動作し、アナログ、デジタル、またはハイブリッドのいずれかであってもよい。生体シナプスの作用に匹敵するために、PE間の接続に、適正なシステム出力を作成するように校正または「訓練」することができる、乗法的な重みを割り当てることができる。
【0038】
PEは、(例えば、ニューロンのマッカロック-ピッツモデルを表す)次式に関して定義することができる。
ζ=Σiwixi (1)
y=σ(ζ) (2)
式中、ζは入力の重み付き合計(例えば、入力ベクトルおよびタップ重みベクトルの内積)であり、σ(ζ)は重み付き合計の関数である。重みおよび入力要素がベクトルwおよびxを形成する場合、重み付き合計ζは単純なドット積となる。
ζ=w・x (3)
【0039】
これは、活性化関数(例えば、閾値比較の場合)または伝達関数のどちらかと呼ばれることがある。いくつかの実施形態では、1つまたは複数のPEはドット積エンジンと呼ばれる場合がある。ニューラルネットワーク114に対する入力(例えば、入力データ110)xは、入力空間からのものであることができ、出力(例えば、出力データ112)は出力空間の一部である。いくつかのネットワークネットワークでは、出力空間Yは、{0,1}のように単純なものであってもよく、または複雑な多次元(例えば、複数チャネル)空間(例えば、畳み込みニューラルネットワークの場合)であってもよい。ニューラルネットワークは、入力空間の自由度ごとに1つの入力、および出力空間の自由度ごとに1つの出力を有する傾向がある。
【0040】
再び
図1Bを参照すると、PE120に対する入力xは、記憶デバイス126(例えば、SRAM)から読み取られる、入力ストリーム132の一部であることができる。入力ストリーム132は、PEの1つの行(水平のバンクもしくはグループ)に方向付けることができ、PEのうち1つもしくは複数にわたって共有するか、またはそれぞれのPEに対する入力としてのデータ部分(重なり合うもしくは重なり合わない部分)に区画化することができる。重みストリーム134(例えば、記憶デバイス126から読み取られる)における重み134(もしくは重み情報)は、PEの列(垂直のバンクもしくはグループ)に方向付けるかまたは提供することができる。列のPEはそれぞれ、同じ重み134を共有するか、または対応する重み134を受信してもよい。標的のPEそれぞれに対する入力および/または重みは、標的のPEに(例えば、記憶デバイス126から)直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの行もしくは列に沿って)ルーティングすることができる。各PEの出力は、PEアレイの外に直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの列に沿って)PEアレイを出るようにルーティングすることができる。PEの各列の出力は、それぞれの列の加算器回路類において合算または加算し、PEのそれぞれの列に対するバッファ130に提供することができる。バッファ130は、受信した出力を記憶デバイス126に提供、転送、ルーティング、書込み、および/または格納することができる。いくつかの実施形態では、記憶デバイス126に格納された出力(例えば、ニューラルネットワークの1つの層からの活性化データ)を、記憶デバイス126から検索するかまたは読み取り、後の時間における(ニューラルネットワークの後続層の)処理のため、PE120のアレイに対する入力として使用することができる。いくつかの実施形態では、記憶デバイス126に格納された出力を、AIアクセラレータ108に対する出力データ112として、記憶デバイス126から検索するかまたは読み取ることができる。
【0041】
次に
図1Cを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、
図1Aおよび
図1Bに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数のPE120、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
【0042】
いくつかの実施形態では、PE120は、1つもしくは複数の乗累算(MAC)ユニットまたは回路140を含むことができる。1つまたは複数のPEは、場合によっては、MACエンジンと呼ぶことができる。MACユニットは、乗累算を実施するように構成される。MACユニットは、乗算器回路、加算器回路、および/または累算器回路を含むことができる。乗累算は、2つの数字の積を計算し、その積を累算器に加える。MAC演算は、累算器a、ならびに入力bおよびcに関連して、次のように表すことができる。
a←a+(b×c) (4)
【0043】
いくつかの実施形態では、MACユニット140は、組み合わせ論理に実装された乗算器とそれに続く加算器(例えば、組み合わせ論理を含むもの)、ならびに結果を格納する累算器レジスタ(例えば、順序および/または組み合わせ論理を含むもの)を含んでもよい。累算器レジスタの出力は、加算器の1つの入力にフィードバックすることができるので、各クロックサイクルにおいて、乗算器の出力をレジスタに加算することができる。
【0044】
上述したように、MACユニット140は、乗算および加算両方の機能を実施することができる。MACユニット140は2つの段階で演算することができる。MACユニット140は、最初に、第1の段階で所与の数(入力)の積を計算し、結果を第2の段階の演算(例えば、加算および/または累算)のために転送することができる。nビットのMACユニット140は、nビット乗算器、2nビット加算器、および2nビット累算器を含むことができる。
【0045】
本明細書に記載する様々なシステムおよび/またはデバイスを、コンピューティングシステムに実装することができる。
図1Dは、代表的なコンピューティングシステム150のブロック図を示している。いくつかの実施形態では、
図1Aのシステムは、コンピューティングシステム150の処理装置156の少なくとも一部を形成することができる。コンピューティングシステム150は、例えば、スマートフォン、他の移動電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(例えば、スマートウォッチ、眼鏡、ヘッドマウントディスプレイ)、デスクトップコンピュータ、ラップトップコンピュータなどのデバイス(例えばコンシューマデバイス)として実装するか、あるいは分散型コンピューティングデバイスを実装することができる。コンピューティングシステム150は、VR、AR、MR体験を提供するために実装することができる。いくつかの実施形態では、コンピューティングシステム150は、プロセッサ156、記憶デバイス158、ネットワークインターフェース151、ユーザ入力デバイス152、およびユーザ出力デバイス154など、従来の専用またはカスタムのコンピュータ構成要素を含むことができる。
【0046】
ネットワークインターフェース151は、(ローカル/リモート)サーバまたはバックエンドシステムのネットワークインターフェースも接続される、ローカル/ワイドエリアネットワーク(例えば、インターネット)に対する接続を提供することができる。ネットワークインターフェース151は、有線インターフェース(例えば、イーサネット)、ならびに/あるいはWi-Fi、ブルートゥース、またはセルラーデータネットワーク規格(例えば、3G、4G、5G、60GHz、LTEなど)などの様々なRFデータ通信規格を実装する無線インターフェースを含むことができる。
【0047】
ユーザ入力デバイス152は、ユーザがコンピューティングシステム150に信号を提供するのに用いることができる、任意のデバイス(または複数のデバイス)を含むことができ、コンピューティングシステム150は、特定のユーザ要求または情報を示すものとして信号を解釈することができる。ユーザ入力デバイス152は、キーボード、タッチパッド、タッチスクリーン、マウスもしくは他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロフォン、センサ(例えば、モーションセンサ、視線追跡センサなど)などのいずれかまたは全てを含むことができる。
【0048】
ユーザ出力デバイス154は、コンピューティングシステム150がユーザに情報を提供するのに用いることができる、任意のデバイスを含むことができる。例えば、ユーザ出力デバイス154は、コンピューティングシステム150によって生成されるかまたは該システムに送達される画像を表示する、ディスプレイを含むことができる。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、陰極線管(CRT)などの様々な画像生成技術を、サポートしている電子部品(例えば、デジタル・アナログもしくはアナログ・デジタル変換器、信号プロセッサなど)とともに組み込むことができる。入力および出力両方のデバイスとして機能する、タッチスクリーンなどのデバイスを使用することができる。出力デバイス154は、ディスプレイに加えてまたはディスプレイの代わりに提供することができる。例としては、インジケータ光、スピーカ、触覚「ディスプレイ」デバイス、プリンタなどが挙げられる。
【0049】
いくつかの実現例としては、コンピュータプログラム命令をコンピュータ可読記憶媒体に格納する、マイクロプロセッサ、記憶装置、およびメモリなどの電子構成要素が挙げられる。本明細書に記載する特徴の多くは、コンピュータ可読記憶媒体として符号化されたプログラム命令のセットとして指定される、プロセスとして実現することができる。これらのプログラム命令は、1つまたは複数のプロセッサによって実行されると、プログラム命令に示されている様々な動作をプロセッサに実施させる。プログラム命令またはコンピュータコードの例としては、コンパイラによって作成されるものなどの機械コード、およびインタープリタを使用してコンピュータ、電子構成要素、またはマイクロプロセッサによって実行される、より高次のコードを含むファイルが挙げられる。好適なプログラミングを通して、プロセッサ156は、コンピューティングシステム150に対して、サーバまたはクライアントによって実施されるものとして本明細書に記載する機能性、またはメッセージ管理サービスと関連付けられた他の機能性のいずれかを含む、様々な機能性を提供することができる。
【0050】
コンピューティングシステム150は例示であり、変形および修正が可能であることが認識されるであろう。本開示と関連して使用されるコンピュータシステムは、本明細書には具体的に記載しない他の能力を有することができる。更に、コンピューティングシステム150について、特定のブロックを参照して記載しているが、該ブロックは説明の便宜上定義されているものであり、構成部品の特定の物理的配置を示唆しようとするものではないことが理解されるべきである。例えば、異なるブロックを、同じ設備に、同じサーバラックに、または同じマザーボード上に配置することができる。更に、ブロックは必ずしも物理的に別個の構成要素に対応していなくてもよい。ブロックは、例えば、プロセッサをプログラミングするか、または適切な制御回路類を提供することによって、様々な動作を実施するように構成することができ、様々なブロックは、初期の構成がどのように得られるかに応じて再構成可能であってもなくてもよい。本開示の実現例は、回路類およびソフトウェアの任意の組み合わせを使用して実装される電子デバイスを含む、様々な装置で実現することができる。
【0051】
セクションB.負および正の値に対する非対称スケーリングファクタをサポートする方法およびデバイス
【0052】
本明細書の開示は、負および正の値に対する非対称スケーリングファクタに関するシステム、方法、およびデバイスの実施形態を含む。例えば、いくつかの実施形態では、乗累算器回路類(MAC)において、正の値および負の値に対して非対称スケーリングファクタを提供する、1つもしくは複数のハードウェア構成要素または回路類を有する回路を設計することができる。ハードウェア構成要素または回路類は、乗算回路類、シフト回路類、比較器回路類、および/またはマルチプレクサを含むことができる。乗算回路類は、例えば活性化関数のニューラルネットワーク演算(例えば、畳み込みまたは乗算演算)に対する、重みおよび活性化値などの値(オペランドとも呼ばれる)を受信することができる。乗算回路類は、重み値を用いて活性化値を、例えばこれらの値をともに乗算することによって、スケーリングすることができる。乗算回路類は、値を乗算した結果をシフト回路類およびマルチプレクサに提供して、非対称スケーリングをサポートすることができる。シフト回路類は、乗算の結果を決定されたビット量分シフトして、結果を修正するかまたは更にスケーリングし、シフトされた(例えば、元の乗算結果に対して非対称にスケーリングされた)結果をマルチプレクサに提供することができる。比較器回路類は、少なくとも1つの値またはオペランド(例えば、ニューラルネットワークの1つの層に対する重み値、もしくはニューラルネットワークの前の層からの活性化値)の符号、あるいは1つの層に対する演算もしくは活性化関数の出力の予測符号を決定し、マルチプレクサの選択信号として使用される符号指示信号を生成することができる。例えば、正の値に応答して、回路は、マルチプレクサを介して、活性化関数にしたがって第1のスケーリングファクタに基づくものとして、シフト回路類からのシフト結果を出力することができる。第1のスケーリングファクタは、活性化値(場合によっては、活性化と呼ばれる)の絶対値を2のN乗(Nは、シフト回路類によって実施されるビットシフトの数)で乗算したものを指すことができる。負の値に応答して、回路は、マルチプレクサを介して、活性化関数にしたがって第2のスケーリングファクタに基づくものとして、乗算回路類の結果(例えば、乗算の結果)を出力することができる。第2のスケーリングファクタは、例えば、活性化値の絶対値を指すことができる。したがって、回路は、少なくとも1つの値またはオペランドの符号(あるいは乗算演算または活性化関数の出力)に応答して、正の値対負の値に対して異なるスケーリングファクタを提供することができる。
【0053】
回路によって生成、提供、選択、および/または採用されたスケーリングファクタは、異なるタイプの誤り訂正の間のトレードオフもしくはバランスを含むかまたは表すことができる。例えば、回路によって適用されるスケーリングファクタは、量子化誤差および切り出し誤差の組み合わせを低減するかもしくは最小限に抑えるように、選択または決定することができる。しかしながら、量子化誤差を補償または訂正する場合、スケーリングファクタが切り出し誤差に悪影響を与える場合があり、切り出し誤差を補償または訂正する場合、スケーリングファクタが量子化誤差に悪影響を与える場合がある。例えば、固定小数点表示の場合、より大きいスケーリングファクタは、より大きい量子化誤差(例えば、0からスケーリングファクタまでのビット数は固定のため)を代償に、より小さい切り出し誤差を提供するかまたはもたらすことができる(例えば、より大きい数を表すことができるため)。入力がスカラー数で乗算される、ニューラルネットワークのノードにおける活性化の場合、数字は負の値なので、対応する出力は、正の値対負の数字の場合とは異なる傾斜を有する場合がある。したがって、正の値に対する1つのタイプの誤差を補償または訂正する場合、負の値に対する誤差係数が増加する場合があり、負の値に対する1つのタイプの誤差を補償または訂正する場合、正の値に対する誤差係数が増加する場合があるので、負の値または正の値のどちらかが損なわれる可能性がある。例えば、スケーリングファクタが、正の要素に対する量子化および切り出し誤差の組み合わせを最小限に抑えるように選択された場合、同じスケーリングファクタを採用することによって生じる不必要に大きいダイナミックレンジにより、負の要素に対する誤差の合計は大きくなり得る。
【0054】
本明細書に記載するシステム、方法、およびデバイスは、例えば、機械学習用途などであるがそれに限定されない用途に対する量子化誤差および切り出し誤差の組み合わせを低減するかまたは最小限に抑える、負および正の値に対する非対称スケーリングファクタを提供することができる。正の値および負の値は、量子化誤差および切り出し誤差の組み合わせを低減するかまたは最小限に抑え、ニューラルネットワークの演算、活性化関数、および/またはプロセスによって計算もしくは生成される、負の値または正の値どちらかを損なわないように、異なるファクタまたは演算(例えば、乗算、ビットシフト、もしくは両方)によってスケーリングすることができる。回路は、ハードウェアのオーバーヘッドを低減するかまたは最小限に抑えて、非対称スケーリングファクタを提供するように、MACユニットまたはエンジンにおいて構成することができる。例えば、回路は、オペランド(例えば、重み値および活性化値)を受信し、負および正の値に対する非対称スケーリングファクタを提供する出力を生成する、乗算器回路類、シフト回路類、比較器要素、および/またはマルチプレクサ要素を含むことができる。例えば、乗算器回路類は、第1の値および第2の値(例えば、重み値、活性化値)を乗算することができる。乗算器回路類は、乗算結果をシフト回路類およびマルチプレクサに提供することができる。シフト回路類は、乗算結果を所定のビット数分シフトすることができ、シフト結果をマルチプレクサに提供することができる。比較器は、値のうち少なくとも1つの符号(例えば、正または負)を決定することができ、符号指示をマルチプレクサに提供することができる。したがって、マルチプレクサは、乗算結果、シフト結果、および少なくとも1つの値の符号指示を受信することができる。いくつかの実施形態では、値の符号に応答して、マルチプレクサは、乗算結果またはシフト結果を出力することができる。例えば、正の符号に応答して、マルチプレクサは、正のスケーリングファクタ(例えば、重み値を2のN乗で乗算した値(Nは、シフト回路類によって実施されるビットシフトの数))で乗算またはスケーリングした活性化値を表すシフト結果を出力することができ、また負の符号に応答して、マルチプレクサは、負のスケーリングファクタ(例えば、重み値の値)で乗算またはスケーリングした活性化値を表す乗算結果を出力することができる。いくつかの実施形態では、正および負のスケーリングファクタは予め定めることができる。例えば、いくつかの実施形態では、正および負のスケーリングファクタは、2のべき乗の関係を有するように設定することができる。一例として、正のスケーリングファクタはk(2N)であることができ、負のスケーリングファクタはkであることができ、kは、任意の値(例えば、整数、小数、またはその他)であることができる。したがって、回路は、正の値に対する第1のスケーリングファクタと、負の値に対する第2の異なるスケーリングファクタとを提供することができる。
【0055】
次に
図2Aを参照すると、負および正の値に対する非対称スケーリングファクタを提供する、システム200の一実施形態が示されている。概要では、システム200は、乗算回路類204、シフト回路類206、比較器回路類208、および/またはマルチプレクサ220を有する、回路202を含むことができる。回路202は、回路に提供される少なくとも1つの値の符号に部分的に基づいて、正の値および負の値に対する非対称スケーリングファクタを提供することができる。
【0056】
回路202は、
図1Aに関して上述したプロセッサ124などであるがそれに限定されない、プロセッサを含むことができる。いくつかの実施形態では、回路202は、
図1Bに関して上述したAIアクセラレータ108の構成要素または部分であることができる。いくつかの実施形態では、回路202は、
図1BのPE120など、AIアクセラレータシステムの処理要素(PE)の構成要素または部分であることができる。回路202は、MACユニット140(例えば、
図1Cに関連して記載したようなもの)であるかまたはそれを含むことができる。回路202は、AIに関連する処理を実施するように構成することができる。例えば、回路202は、
図1AのAIアクセラレータ108のニューラルネットワーク114などの、ニューラルネットワークを構成、調整、訓練、および/または活性化するのに使用される、出力データを提供するように構成することができる。いくつかの実施形態では、回路202は、
図1Dに関して上述したコンピューティングシステム150の構成要素または部分であることができる。回路202はメモリを含むことができる。例えば、回路202は、1つまたは複数のプロセッサと結合されたメモリを含むことができる。メモリは、一例として、スタティックランダムアクセスメモリ(SRAM)を含むことができる。いくつかの実施形態では、メモリは、
図1A~
図1Bの記憶デバイス126または
図1Dの記憶装置158を含むか、それと同じであるか、または実質的に同様であることができる。
【0057】
乗算回路類204は、ハードウェア、またはハードウェアとソフトウェアの組み合わせを含むか、あるいはそれらの形で実装することができる。乗算回路類204はMACユニット140の乗算器に対応することができる。いくつかの実施形態では、乗算回路類204は、少なくとも2つの値(例えば、2進数の形態もしくは他の形態)を乗算する、乗算器または電子回路を含むことができる。乗算回路類204は、ベクトルの(例えば、行列の)ドット積を取るかまたは作成するか、あるいは少なくとも2つの行列(例えば、重み行列、活性化行列)に対してドット積の合計を実施する、電子回路を含むことができる。ドット積は、オペランド(例えば、ベクトル、行列、および/または他の入力もしくは値を含むことができる)に対するドット積演算の実施の結果または出力を指すことができる。乗算回路類204は、例えば、入力ストリーム、重みストリーム、および/または回路202に対する他の形態の入力から、2つの値210を受信するように構成することができ、それぞれの値210を乗算して乗算結果205を生成することができる。乗算結果205は、例えば、少なくとも2つの値の積またはベクトルのドット積を含むか、あるいはそれに対応することができる。例えば、乗算回路類204は、活性化値210を重み値210で乗算することによって、重み値210を用いて活性化値210をスケーリングすることができる。乗算回路類204は、乗算結果205をシフト回路類206およびマルチプレクサ220に提供して、非対称スケーリングをサポートすることができる。
【0058】
シフト回路類206は、ハードウェア、またはハードウェアとソフトウェアの組み合わせを含むか、あるいはそれらの形で実装することができる。シフト回路類206は、乗算結果205の1つまたは複数のビット212をシフト、スケーリング、増加、減少、または別の形で修正してシフト結果207を生成する、電子回路類を含むことができる。シフト回路類206は、乗算結果205の1つまたは複数のビットを第1もしくは第2の方向でシフトし、シフト方向および/またはシフトの決定されたビット数212に部分的に基づいて、乗算結果205をスケーリング(例えば、増加、減少)する、ビットシフト演算を実現するように構成することができる。シフト回路類206は、決定されたビット数212によって乗算結果205をスケーリングして、乗算結果205に対する非対称スケーリングを提供することができる。例えば、シフト回路類206は、シフトファクタまたはスケールファクタに対応する決定されたビット数212の分、乗算結果をシフトすることができる。決定されたビット数212は1を超える整数であることができる。一実施形態では、一例として、(例えば、スケールファクタ2
2=4を提供するかまたはそれに寄与するため)決定されたビット数212は2に等しいものであり得る。いくつかの実施形態では、決定されたビット数212は、
図1Aのニューラルネットワーク114などであるがそれに限定されない、ニューラルネットワークの第1の層に対する活性化関数のスケーリングファクタの一部を形成する、2進数の指数に等しいスケーリング量に翻訳する。いくつかの実施形態では、活性化関数は、漏れのある正規化線形ユニット(ReLu)関数を含むことができる。シフト回路類206は、乗算回路類204からの乗算結果205を決定されたビット数212の分シフトして、シフト結果207を生成するように構成することができる。シフト結果207は、乗算結果205を更にスケーリングしたものに対応することができる。シフト結果207は、
図1Aのニューラルネットワーク114などであるがそれに限定されない、ニューラルネットワークの少なくとも1つの層に対する活性化関数(例えば、ReLu関数)の一部である、2進数の指数を含むスケーリングファクタを組み込むことができる。
【0059】
比較器回路類208は、ハードウェア、またはハードウェアとソフトウェアの組み合わせを含むか、あるいはそれらの形で実装することができる。いくつかの実施形態では、比較器回路類208は、少なくとも1つの値210(第1の入力として)を基準値(第2の入力として)と比較し、どちらの入力の方が大きいかを示す符号指示信号209を生成するように構成された、比較器または電子回路を含むことができる。例えば、比較器回路類208は、第1の値210aを基準信号と比較して、第1の値210aの符号を、または第1の値210aが正もしくは負のどちらかを決定するように構成することができる。比較器回路類208は、少なくとも1つの値210の符号ビットまたは符号を基準値と比較し、それぞれの値210aが正もしくは負のどちらであるかを示す符号指示信号209を生成するように構成された、比較器または電子回路を含むことができる。本明細書で言及するように、正または負であるものとして言及される値210の符号ビットは、値210がそれぞれ正もしくは負である(またはその符号を有する)こと、ならびに/あるいは符号ビットが、値210がそれぞれ正もしくは負である(またはその符号を有する)ことを示す値を有することを意味する。
【0060】
マルチプレクサ220は、ハードウェア、またはハードウェアとソフトウェアの組み合わせを含むか、あるいはそれらの形で実装することができる。マルチプレクサ220は、複数の入力を含み、それぞれの入力の間で選択し、選択された入力を出力ラインに転送するように構成することができる。マルチプレクサの出力ラインは、回路202の出力222と同じであるかまたはそれに対応することができる。マルチプレクサ220は、選択信号または比較器回路類208から受信した符号指示信号209に部分的に基づいて、入力の間で選択することができる。例えば、マルチプレクサ220は、乗算結果205を乗算回路類204から受信するように構成された入力と、シフト結果207をシフト回路類206から受信するように構成された入力と、符号指示信号209を比較器回路類208から受信するように構成された入力とを含むことができる。マルチプレクサ220は、符号指示信号209に部分的に基づいて、乗算結果205またはシフト結果207を選択することができる。いくつかの実施形態では、マルチプレクサ220は、符号指示信号209、および値210が正または負のどちらであるかに少なくとも部分的に基づいて、乗算結果205もしくはシフト結果207に対応するかまたはそれに等しい出力222を生成することができる。
【0061】
いくつかの実施形態では、回路202は、累算器回路類を有する乗累算器(MAC)回路類を含むことができる。例えば、回路202は、
図1Cに関して上述した1つまたは複数のMACユニット140を含むことができる。回路202は、出力222をMACユニット140の加算器および/または累算器に提供することができ、そこで出力222を処理することができる。マルチプレクサ220の少なくとも1つの出力は、回路202の出力222をMACユニット140の加算器および/または累算器に提供することができる。
【0062】
本明細書に記載するような値210は、AIに関連する処理のためにニューラルネットワークで使用される、重み値または活性化値を含むことができる。例えば、値210は、
図1Aのニューラルネットワーク114および/またはプロセッサ124の処理段階、ノード、および/または層のいずれかで使用される、あるいはそこからの中間データなど、本明細書に記載する任意の形態のデータを含むことができる。値210は、例えば、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。例えば、値210は、
図1Bに関して上述した入力ストリーム132などであるがそれに限定されない、入力ストリームからの値またはデータを含むことができる。値210は、2つのベクトル(例えば、重み行列のベクトル、活性化行列のベクトル)のカーネルまたはドット積を含むことができる。いくつかの実施形態では、値210は、重み値、重みのスケーリングファクタ、重み行列、または重みストリームによって提供される他の任意の重み情報を含む。例えば、値210は、
図1Bに関して上述した重み134など、ニューラルネットワークの第1の層に対する重みを含むことができる。値は、活性化値、活性化のスケーリングファクタ、活性化行列、または他の任意の活性化情報を含むことができる。
【0063】
次に
図2Bを参照すると、漏れのある正規化線形ユニット(ReLu)活性化関数のグラフ240の一実施形態が提供される。本明細書に記載する回路202は、漏れのあるReLu活性化関数を含む非対称スケーリングファクタを提供することができる。グラフ240は、一例として、畳み込みまたはドット積演算の結果を示すことができる。例示的な一実施形態では、グラフ240は次式の畳み込み演算(C)によって表すことができる。
C=(W
scaling×W
int)×(A
scaling×A
int)=(W
scaling×A
scaling)×(A
scaling×A
int) (5)
【0064】
式中、Cは畳み込み演算の出力を表し、Wscalingは重みのスカラースケーリングファクタを表し、Wintは重み値の行列の整数表示を表し、Ascalingは活性化のスカラースケーリングファクタを表し、Aintは活性化値の行列の整数表示を表す。重みのスケーリングファクタは、それが表すことができる重みの上限を決定するかまたは表すことができる。例えば、重みのスケーリングファクタが1に等しく、8ビットの線形量子化が仮定される場合、最大重み出力は1×127=127に等しいものであり得る。活性化のスケーリングファクタは類似の結果を提供することができる。グラフ240に示すように、(活性化関数の出力の)正の値242は負の値244とは異なる傾斜を有することができる。回路202は、正の値242対負の値244に対して異なるスケーリングファクタを組み込んだ、出力222を生成することができる。いくつかの実施形態では、正の値242対負の値244に提供されるスケーリングファクタの差は、2のべき乗の関係を有することができる。例えば、正の値242に対する重みのスカラースケーリングファクタ(Wscaling)は、負の値244に対する重みのスカラースケーリングファクタ(Wscaling)の4倍であることができる。本明細書に記載する回路202は、正の値242に対する第1のスケーリングファクタと、負の値244に対する第2の異なるスケーリングファクタとを提供することができる。一実施形態では、ニューラルネットワークの現在のまたは特定の層に対するドット積を合計する間、(前の層からの)第1の値210aまたは活性化値が例えば、(対応する活性化関数出力が正の値242と予測されるように)正の値であるものと決定された場合、回路202によって生成される出力222を2ビットシフトすることができる。マルチプレクサ220は、第1の値210aまたは活性化値が正の値242であると比較器回路類208が決定するのに応答して、シフト結果207を回路202の出力222に提供することができる。出力222は、ニューラルネットワークの少なくとも1つの層の活性化関数に対する量子化誤差および切り出し誤差の組み合わせを低減するかまたは最小限に抑えるように、スケーリングおよび/または生成することができる。
【0065】
本開示は、活性化関数の特定の活性化値および/または出力に関する正の値に対するスカラースケーリングファクタが、負の値に対するスケーリングファクタよりも大きいものであり得ることについて考察することができる。例えば、他のいくつかの活性化値、カーネル、および/または活性化関数に関して、逆もまた真であり得る。例えば、いくつかのシナリオでは、活性化関数のいくつかの活性化値および/または出力に関する負の値に対するスカラースケーリングファクタは、正の値に対するスケーリングファクタよりも大きいものであり得る。
【0066】
次に
図2Cを参照すると、正および負の値に対する非対称スケーリングファクタを提供する方法250が提供される。概要では、方法250は、回路を確立すること(252)と、第1の値を受信すること(254)と、第2の値を受信すること(256)と、値を乗算すること(258)と、乗算結果をシフトすること(260)と、値の符号を決定すること(262)と、出力を生成すること(264)とを含むことができる。
【0067】
演算252で、いくつかの実施形態では、乗算回路類204、シフト回路類206、比較器回路類208、および/またはマルチプレクサ220を有するように、回路202を確立、提供、および/または構成することができる。乗算回路類204は、複数の値210を受信し、乗算結果205を生成する、乗算回路類または回路構成要素を含むことができる。例えば、乗算回路類204は複数の入力を含むことができ、各入力は少なくとも1つの値210を受信するように構成される。いくつかの実施形態では、乗算結果205は、例えば、ドット積または畳み込み出力を含むことができる。乗算回路類204は、乗算結果205をシフト回路類206およびマルチプレクサ220に送信するように構成することができる。例えば、乗算回路類204は1つまたは複数の出力を含むことができ、1つまたは複数の出力は、乗算結果205を、シフト回路類206の少なくとも1つの入力およびマルチプレクサ220の少なくとも1つの入力に提供するように構成される。シフト回路類206は、値を決定されたもしくは規定のビット数分修正またはシフトし、シフト結果207を生成する、ならびに/あるいは値(例えば、乗算結果205)を決定されたもしくは規定のファクタでスケーリングしてシフト結果207を生成する、シフト回路、ビット単位演算子、順序論理、および/または回路構成要素を含むことができる。シフト回路類206は、シフト結果207をマルチプレクサに提供するように構成することができる。例えば、シフト回路類206は、シフト結果207をマルチプレクサ220の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。
【0068】
比較器回路類208は、1つまたは複数の値210を受信するように構成することができ、値210の性質を決定することができる。例えば、比較器回路類208は、第1の値210aおよび/または第2の値210bを受信するように構成された、少なくとも1つの入力を含むことができる。比較器回路類208は、値210の符号または符号ビットが正もしくは負のどちらであるかを決定する比較器または回路構成要素を含み、それぞれの値210の符号を示す符号指示信号209を生成することができる。比較器回路類208は、符号指示信号をマルチプレクサに提供するように構成することができる。例えば、比較器回路類208は、符号指示信号209をマルチプレクサ220の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。マルチプレクサ220は、1つまたは複数の入力(例えば、符号指示信号209、乗算結果205、シフト結果)を受信し、回路202に対する出力222を提供する、1つまたは複数の回路構成要素を含むことができる。例えば、マルチプレクサ220は、符号指示信号209に部分的に基づいて、乗算結果205とシフト結果207との間で選択することができ、符号指示信号209に応答して、乗算結果205またはシフト結果207のどちらかを出力することができる。マルチプレクサ220は、少なくとも1つの値210またはオペランドの符号(あるいは乗算演算または活性化関数の出力)に応答して、正の値対負の値に対して異なるスケーリングファクタを提供することができる。例えば、シフト回路類206は第1のスケーリングファクタを提供することができ、乗算回路類204は第2のスケーリングファクタを提供することができる。マルチプレクサ220は、符号指示信号209に部分的に基づいて、シフト回路類206からのシフト結果207と乗算回路類204からの乗算結果205との間で選択して、正の値210対負の値210に対して異なるスケーリングファクタを提供することができる。
【0069】
演算254で、第1の値210aを受信することができる。乗算回路類204は、第1の値210aを少なくとも1つのストリームから受信するか、または記憶デバイス(例えば、
図1Bの記憶デバイス126)から読み取ることができる。第1の値210aは、
図1Aのニューラルネットワーク114および/またはプロセッサ124の処理段階のいずれかに使用される、またはいずれかからの中間データなど、本明細書に記載する任意の形態のデータを含むことができる。データは、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。例えば、第1の値210aは、重みストリームによって提供される、重み値、重みのスケーリングファクタ、または重み行列を含むことができる。第1の値210aは、ニューラルネットワークの現在または特定の層に対する重みを含むことができる。例えば、第1の値210aは、
図1Bに関して上述した重み134を含むことができる。第1の値210aは、活性化値、活性化のスケーリングファクタ、または活性化行列を含むことができる。第1の値210aは、ニューラルネットワークの第1のまたは前の層(例えば、現在のもしくは特定の層の前の層)に対する活性化値を含むことができる。いくつかの実施形態では、第1の値210aは、入力データ、カーネル情報、またはバイアス情報を含むことができる。例えば、第1の値210aは、
図1Bに関して上述した入力ストリーム132などであるがそれに限定されない、入力ストリームから受信することができる。
【0070】
演算256で、第2の値210bを受信することができる。第2の値210bは、
図1Aのニューラルネットワーク114および/またはプロセッサ124の処理段階のいずれかに使用される、またはいずれかからの中間データなど、本明細書に記載する任意の形態のデータを含むことができる。データは、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。乗算回路類204は、第1の値210aとは異なる第2の値210bを受信することができる。例えば、第2の値210bは、第1の値210と比較して異なるタイプの値を含むことができる。いくつかの実施形態では、第1の値210aが、重み値、重みのスケーリングファクタ、重み行列、バイアス情報、またはカーネル情報を含む場合、第2の値210bは、活性化値、活性化のスケーリングファクタ、または活性化行列を含むことができる。いくつかの実施形態では、第1の値210aが、活性化値、活性化のスケーリングファクタ、または活性化行列を含む場合、第2の値210bは、重み値、重みのスケーリングファクタ、重み、バイアス情報、またはカーネル情報を含むことができる。いくつかの実施形態では、乗算回路類204は、第2の値210bを少なくとも1つのストリームから受信するか、または記憶デバイス(例えば、
図1Bの記憶デバイス126)から読み取ることができる。例えば、第2の値210bは、重みストリームによって提供される、重み値、重みのスケーリングファクタ、または重み行列を含むことができる。第2の値210bは、ニューラルネットワークの第1の層に対する重みを含むことができる。例えば、第2の値210bは、
図1Bに関して上述した重み134を含むことができる。第2の値210bは、活性化値、活性化のスケーリングファクタ、または活性化行列を含むことができる。いくつかの実施形態では、第2の値210bは、入力データ、カーネル情報、またはバイアス情報を含むことができる。例えば、第2の値210bは、
図1Bに関して上述した入力ストリーム132などであるがそれに限定されない、入力ストリームから受信することができる。
【0071】
演算258で、値210a、210bを乗算することができる。乗算回路類204は、ニューラルネットワークに対する計算において、第1の値210aおよび第2の値210bを乗算することができる。乗算回路類204は、第2の値210bによる第1の値210aの乗算を実施して、乗算結果205を生成するように構成することができる。いくつかの実施形態では、第1の値210aは活性化値を含むことができ、第2の値210bは重み値を含むことができる。乗算回路類204は、活性化値210を重み値210で乗算することによって、活性化値210をスケーリングすることができる。乗算結果205は、第1の値210aおよび第2の値210bの積を含むことができる。乗算結果205は、活性化値210を重み値210で乗算またはスケーリングした積を含むことができる。いくつかの実施形態では、第1および第2の値210a、210bは、値の行列を含むかまたはそれに対応することができる。いくつかの実施形態では、第1および第2の値210a、210bは、行列の整数表示を含むかまたはそれに対応することができる。乗算回路類204は、第1の値210aおよび第2の値210bのドット積を実施するかまたは取って、乗算結果205を生成することができる。いくつかの実施形態では、乗算回路類204は、第1の値210aおよび第2の値210bのドット積の合計を実施して、乗算結果205を生成することができる。乗算回路類204は、乗算結果205をシフト回路類206の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。いくつかの実施形態では、第1の値210aが、ニューラルネットワークの第1のまたは前の層(例えば、現在のもしくは特定の層の前の層)に対する活性化値を含む場合、乗算回路類204の出力は、ニューラルネットワークの第1のまたは前の層の活性化に少なくとも部分的に基づくか、あるいはそれに対応することができる。乗算回路類204は、乗算結果205をマルチプレクサ220の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。
【0072】
演算260で、1つまたは複数の実施形態では、乗算結果205をシフトすることができる。シフト回路類206は、乗算の結果205(例えば、ビット形態)を決定されたビット数212(またはビット位置)の分シフトすることができる。いくつかの実施形態では、シフト回路類206は、乗算結果205を受信することができ、乗算結果205を決定されたビット数212の分シフトすることによって、乗算結果205を修正するかまたは更にスケーリングすることができる。決定されたビット数212はMによって表すことができ、Mは整数1(または正もしくは負の他の任意の整数値)であることができる。一実施形態では、決定されたビット数212は2に等しいものであることができ、したがってMは2に等しいものであり得る。いくつかの実施形態では、決定されたビット数212は、ニューラルネットワークの第1の(または前の)層に対する活性化関数における、スケーリングファクタ(例えば、2進数の指数)に翻訳または寄与することができる。活性化関数は、漏れのある正規化線形ユニット(ReLu)関数を含むことができるがそれに限定されない。ビット212のシフトは、シフトの方向および/または所定のビット数212に部分的に基づいて、乗算結果205をスケーリングまたは修正することができる。例えば、シフト回路類206は、乗算結果205のビットを第1の方向(例えば、左方向<<)にMビット分シフトして、乗算結果205をスケーリングする(例えば、結果を2Mで乗算する)か、あるいは乗算結果205のビットを第2の方向(例えば、右方向>>)にMビット分シフトして、乗算結果205をスケーリングする(例えば、結果を2Mで除算する)ことができる。いくつかの実施形態では、シフト回路類206は、乗算結果205を左方向に2ビット分シフトするかまたは更にスケーリングして、乗算結果205を4でスケーリングし、シフト結果207を生成することができる。シフト回路類206は、シフト結果207をマルチプレクサ220の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。
【0073】
演算262で、いくつかの実施形態では、値210の符号を決定することができる。回路202の比較器回路類208は、第1の値210aの符号ビットまたは値/符号が負または正のどちらであるかを決定することができる。いくつかの実施形態では、回路202の比較器回路類208は、第2の値210bの符号ビットまたは値/符号が負または正のどちらであるかを決定することができる。回路202の比較器回路類208は、演算または活性化関数の出力の予測符号/値が負または正のどちらであるかを決定することができる。第1の値210aの符号ビットは、第1の値210aが正または負であることを示すことができる。第2の値210bの符号ビットは、第2の値210bが正または負であることを示すことができる。比較器回路類208は、基準信号を第1の値210aの符号ビットまたは第2の値210bの符号ビットと比較することができる。いくつかの実施形態では、基準信号はゼロ(または他の)値を含むことができ、比較器回路類208は、第1の値210aまたは第2の値210bを基準信号と比較して、それぞれの値210が(例えば、基準信号に対して)正または負のどちらであるかを決定することができる。いくつかの実施形態では、基準信号はゼロビット値(例えば、0)を含むことができ、比較器回路類208は、第1の値210aの符号ビットまたは第2の値210の符号ビットをゼロ基準信号と比較して、それぞれの値210が正または負のどちらであるかを決定することができる。例えば、第1の値210aまたは第2の値210bがゼロ基準信号よりも大きい場合、比較器回路類208は、正の値の指示を出力することができる。第1の値210aまたは第2の値210bがゼロ基準信号以下である場合、比較器回路類208は、負の値の指示を出力することができる。
【0074】
比較器回路類208は、それぞれの値210が正または負のどちらであるかを示す符号指示信号209を生成することができる。例えば、比較器回路類208は、第1の値210aが正または負のどちらであるかを示す符号指示信号209を生成することができる。いくつかの実施形態では、比較器回路類208は、第2の値210bが正または負のどちらであるかを示す符号指示信号209を生成することができる。比較器回路類208は、符号指示信号290をマルチプレクサ220の少なくとも1つの入力に提供するように構成された、少なくとも1つの出力を含むことができる。
【0075】
演算264で、いくつかの実施形態では、出力信号222を生成することができる。いくつかの実施形態では、回路202は、第1の値210aの符号ビットが負の場合は乗算の結果205を、第1の値210aの符号ビットが正の場合はシフトの結果207を出力することができる。回路202は、少なくとも1つの値210の符号に部分的に基づいて、複数の入力の間で選択する、マルチプレクサ220を含むことができる。マルチプレクサ220は、複数の入力と少なくとも1つの出力とを含むことができ、セレクタ入力に部分的に基づいて、少なくとも1つの入力に提供された値をそのそれぞれの出力に選択的に提供することができる。例えば、マルチプレクサ220は、乗算結果205を乗算回路類204から、シフト結果207をシフト回路類206から、また符号指示信号209を比較器回路類208から受信することができる。回路202は、マルチプレクサ220を介して、第1の値210aの符号ビットに基づいて、乗算の結果205およびシフトの結果207を出力することができる。
【0076】
回路202は、マルチプレクサ220を使用して、少なくとも1つの値210またはオペランドの符号(あるいは乗算演算または活性化関数の出力)に応答して、正の値対負の値に対して異なるスケーリングファクタを提供することができる。いくつかの実施形態では、符号指示信号209が正の値を示すのに応答して、マルチプレクサ220は、活性化関数にしたがって第1のスケーリングファクタに基づくものとして、シフト結果207をシフト回路類206から出力することができる。第1のスケーリングファクタは、重み値210の絶対値を2のN乗(Nは、シフト回路類206によって実施されるビットシフトの数)で乗算したものを指すことができる。マルチプレクサ220は、乗算結果205に対してスケーリングされた第1のスケーリング出力222として、シフト結果207を回路202の出力222に提供することができる。いくつかの実施形態では、符号指示信号209が負の値を示すのに応答して、回路202は、活性化関数にしたがって第2のスケーリングファクタに基づくものとして、乗算回路類204の結果205(例えば、乗算の結果)を出力する。第2のスケーリングファクタは、例えば、重み値210の絶対値を指すことができる。マルチプレクサ220は、シフト結果207に対してスケーリングされた第2のスケーリング出力222として、乗算結果205を回路202の出力222に提供することができる。したがって、回路202は、それぞれの値210が正の値210または負の値210であることに部分的に基づいて、異なるスケーリングファクタを提供することによって、正の値210および負の値210に対する非対称スケーリングをサポートすることができる。
【0077】
いくつかの実施形態では、符号指示信号209は、マルチプレクサ220を使用して、乗算回路類204からの乗算結果205とシフト回路類206からのシフト結果207との間で選択するのに使用することができる、セレクタ入力を含むかまたはそれに対応することができる。符号指示信号209によって示される値または符号に応答して、マルチプレクサは、乗算結果205またはシフト結果207のどちらかを回路202の出力222に提供することができる。いくつかの実施形態では、符号指示信号209は、第1の値210aが正の値であることを示すことができ、マルチプレクサ220は、シフト回路類206からのシフト結果207を回路202の出力222として提供することができる。例えば、回路202は、第1の値210aが正の値であると決定し、シフト結果207を出力して、例えば、
図1BのAIアクセラレータ108の処理要素120によって出力された、正の要素または正の値に対する量子化誤差および切り出し誤差の組み合わせを最小限に抑えるかまたは低減することができる。
【0078】
いくつかの実施形態では、符号指示信号209は、第1の値210aが負の値であることを示すことができ、これに応答して、マルチプレクサ220は、乗算回路類204からの乗算結果205を回路202の出力222として提供することができる。例えば、回路202は、第1の値210aが負の値であると決定し、これに応答して、乗算結果205を出力して、例えば、
図1BのAIアクセラレータ108の処理要素120によって出力された、負の要素または負の値に対する量子化誤差および切り出し誤差の組み合わせを最小限に抑えるかまたは低減することができる。
【0079】
回路202の出力222を、ニューラルネットワークにフィードバックし、
図1AのAIアクセラレータ108のニューラルネットワーク114などの、ニューラルネットワークを構成、調整、訓練、および/または活性化するのに使用することができる。いくつかの実施形態では、回路202は、後続の値210を受信することができ、出力222を継続して生成して、正の値および負の値に対する非対称スケーリングファクタを提供することができる。例えば、回路202は、乗算回路類204を介して、第3の値210および第4の値210または後続の値210それぞれについて、第2の乗算および後続の乗算を実施することができる。回路202は、シフト回路類206を介して、第2の乗算の結果205について所定のビット数212の分、または後続の乗算の結果205について所定のビット数212の分、第2のシフトまたは後続のシフトを実施することができる。回路202は、第3の値210の符号ビットが負の場合は第2の乗算の結果205の、第3の値210の符号ビットが正の場合は第2のシフトの結果207の、第2の出力を実施することができる。回路202は、第2の出力の結果222を回路202の累算器回路類140に提供することができる。いくつかの実施形態では、回路202は、後続の値210の符号ビットが負の場合は後続の乗算の後続の結果205の、後続の値210の符号ビットが正の場合は後続のシフトの結果207の、後続の出力を実施することができる。回路202は、後続の出力の後続の結果222を回路202の累算器回路類140に提供することができる。
【0080】
いくつかの実施形態では、回路202は、マルチプレクサ220を通して、出力の結果または出力222を回路202の累算器回路類に提供することができる。例えば、回路202は、累算器回路類を有する乗累算器(MAC)回路類を含むことができる。累算器回路類を有する乗累算器(MAC)回路類は、
図1Cに関して上述したMACユニット140と同じまたは実質的に同様であることができる。回路202は、1つまたは複数の出力222を、MACユニット140の累算器回路類または累算器レジスタに提供して処理することができる。
【0081】
本開示は、値210、または値210の符号もしくは符号ビットが正または負のどちらであるかを決定して、異なる量によってスケーリングされた出力の間で選択することについて記載していることがあるが、これは単なる例であり、いかなる形でも限定しようとするものではないことが理解されるべきである。例えば、(例えば、正負の構成において)正および負の値の間で決定する代わりに、本発明のシステム、方法、およびデバイスは、(例えば、大小の構成において)値が基準値または閾値よりも大きいか小さいか(またはそれに対して正か負か)を決定することを含み、同様に、異なる量スケーリングされた出力の間で選択を実施することができる。例えば、比較器回路類208は、かかる決定を実施するように構成することができ、他の回路類または要素は、本明細書で考察した正負の構成の実施形態と同様の方式で動作するように適合させることができる。更に、正負の構成での特定の実施形態では、正の値および負の値が互いに切り替えられるか反転されてもよい場合、同様の演算を実施することができる。同様に、大小の構成での特定の実施形態では、大きい値および小さい値が互いに切り替えられるか反転されてもよい場合、同様の演算を実施することができる。
【0082】
いくつかの例示的な実現例について記載してきたが、上記は例示であって限定ではなく、例として提示されていることが明白である。特に、本明細書に提示する例の多くには、方法行為またはシステム要素の特定の組み合わせが関与するが、それらの行為および要素は、同じ目的を遂行するために他の形で組み合わせることができる。1つの実現例に関連して考察される行為、要素、および特徴は、他の1つまたは複数の実現例における類似の役割から除外されないものとする。
【0083】
本明細書に開示する実施形態と関連して記載される、様々なプロセス、動作、例示の論理、論理ブロック、モジュール、および回路を実現するのに使用される、ハードウェアおよびデータ処理構成要素は、汎用シングルもしくはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、離散的ゲートもしくはトランジスタ論理、離散的ハードウェア構成要素、または本明細書に記載の機能を実施するように設計された上記のものの任意の組み合わせを用いて、実現または実施されてもよい。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であってもよい。プロセッサはまた、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動した1つもしくは複数のマイクロプロセッサ、または他の任意のかかる構成など、コンピューティングデバイスの組み合わせとして実現されてもよい。いくつかの実施形態では、特定のプロセスおよび方法は、所与の機能に特異的な回路類によって実施されてもよい。メモリ(例えば、メモリ、メモリユニット、記憶デバイスなど)は、本開示に記載する様々なプロセス、層、およびモジュールを完成させるかもしくは容易にする、データおよび/またはコンピュータコードを格納する、1つまたは複数のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置など)を含んでもよい。メモリは、揮発性メモリもしくは不揮発性メモリであるかまたはそれらを含んでもよく、本開示に記載する様々なアクティビティおよび情報構造をサポートする、データベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または他の任意のタイプの情報構造を含んでもよい。例示的実施形態によれば、メモリは、処理回路を介してプロセッサに通信可能に接続され、本明細書に記載の1つもしくは複数のプロセスを(例えば、処理回路および/またはプロセッサによって)実行するためのコンピュータコードを含む。
【0084】
本開示は、様々な動作を遂行するための任意の機械可読媒体上における、方法、システム、およびプログラム製品を想到する。本開示の実施形態は、既存のコンピュータプロセッサを使用して、またはこの目的もしくは別の目的のために組み込まれる、適切なシステムのための専用コンピュータプロセッサによって、または配線接続システムによって、実現されてもよい。本開示の範囲内の実施形態は、格納された機械実行可能命令もしくはデータ構造を保持するかまたは有する、機械可読媒体を備えるプログラム製品を含む。かかる機械可読媒体は、汎用もしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる、任意の利用可能な媒体であることができる。例として、かかる機械可読媒体は、RAM、ROM、EPROM、EEPROM、または他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、あるいは機械実行可能命令またはデータ構造の形態で所望のプログラムコードを保持または格納するのに使用することができ、汎用もしくは専用コンピュータまたはプロセッサを有する他の機械でアクセスすることができる、他の任意の媒体を含むことができる。上記のものの組み合わせはまた、機械可読媒体の範囲に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、特定の機能または機能群を実施させる、命令およびデータを含む。
【0085】
本明細書で使用する用語および専門用語は、説明のためのものであって限定とみなされるべきではない。本明細書における、「~を含む」、「~を備える」、「~を有する」、「~を含有する」、「~を伴う」、「~によって特徴付けられる」、「~を特徴とする」およびそれらの変形の使用は、該用語とともに列挙される項目、それらの等価物、および追加の項目、ならびに排他的に該用語とともに列挙される項目から成る代替実現例を網羅することを意味する。一実現例では、本明細書に記載するシステムおよび方法は、記載する要素、行為、または構成要素のうちの1つ、2つ以上の各組み合わせ、または全てから成る。
【0086】
単数形で言及される本明細書のシステムおよび方法の実現例または要素または行為に対する任意の言及は、複数のこれらの要素を含む実現例も包含することができ、本明細書の任意の実現例または要素または行為に対する複数形での任意の言及は、単一の要素のみを含む実現例も包含することができる。単数形または複数形での言及は、本明細書に開示されるシステムもしくは方法、それらの構成要素、行為、または要素を、単数または複数の構成に限定しようとするものではない。任意の情報、行為、または要素に基づいた任意の行為または要素に対する言及は、行為または要素が、任意の情報、行為、または要素に少なくとも部分的に基づく場合の実現例を含むことができる。
【0087】
本明細書に開示する任意の実現例は、他の任意の実現例または実施形態と組み合わせることができ、「ある実現例」、「いくつかの実現例」、「一実現例」などに対する言及は、必ずしも相互に排他的ではなく、実現例と関連して記載する特定の特徴、構造、または特性が、少なくとも1つの実現例または実施形態に含まれ得ることを示すものとする。かかる用語は、本明細書で使用するとき、必ずしも全てが同じ実現例を指すものではない。任意の実現例は、本明細書に開示する態様および実現例と一致する任意の手法で、他の任意の実現例と包括的または排他的に組み合わせることができる。
【0088】
図面、詳細な説明、または任意のクレームにおける技術的特徴に参照符号が付される場合、参照符号は、図面、詳細な説明、およびクレームの了解度を向上するために含まれるものである。したがって、参照符号が存在してもしなくても、任意のクレーム要素の範囲に対する限定的影響を何ら有さない。
【0089】
本明細書に記載するシステムおよび方法は、それらの特性から逸脱することなく、他の特定の形態で具体化されてもよい。「約」、「およそ」、「実質的に」、または他の程度を表す用語に対する言及は、別段の明示がない限り、所与の測定値、単位、または範囲から±10%の変動を含む。結合された要素は、直接または介在要素を用いて、互いに電気的、機械的、または物理的に結合することができる。本明細書に記載するシステムおよび方法の範囲は、したがって、上述の記載ではなく添付のクレームによって示され、クレームの等価物の意味および範囲内にある変更は包含される。
【0090】
「結合された」という用語およびその変形は、2つの部材を直接または間接的に互いに接合することを含む。かかる接合は、静的(例えば、恒久的もしくは固定)または可動(例えば、除去可能もしくは解放可能)であってもよい。かかる接合は、互いに直接結合され、または互いに対して結合された2つの部材によって、別個の介在部材および互いに結合された任意の追加の中間部材を使用して互いに結合された2つの部材によって、あるいは2つの部材の一方とともに単一の単位体として一体的に形成された介在部材を使用して互いに結合された2つの部材によって、達成されてもよい。「結合された」またはその変形が、追加の用語によって修正された場合(例えば、直接結合された)、上述の「結合された」の包括的定義は、追加の用語の平易な言葉の意味によって修正され(例えば、「直接結合された」は、任意の別個の介在部材を有さない2つの部材の接合を意味する)、それによって上述の「結合された」の包括的定義よりも狭い定義になる。かかる結合は機械的、電気的、または流体的であってもよい。
【0091】
「または」に対する言及は包括的と解釈することができるので、「または」を使用して記載されるいずれの用語も、記載される用語の単一、2つ以上、および全てのいずれかを示すことができる。「『A』および『B』のうち少なくとも1つ」は、「A」のみ、「B」のみ、ならびに「A」および「B」の両方を含むことができる。「備える」または他のオープンな用語と併せて使用されるかかる言及は、追加の項目を含むことができる。
【0092】
様々な要素のサイズ、寸法、構造、形状、および比率、パラメータの値、取付け構造、材料使用、色、向きにおける変形例など、記載される要素および行為の修正は、本明細書に開示する主題の教示および利点から実質的に逸脱することなく行うことができる。例えば、一体的に形成されるものとして示される要素は、複数の部分または要素で構築することができ、要素の位置を反転させるかまたは別の形で変動させることができ、離散的要素または位置の性質もしくは数を改変または変更することができる。他の置換、修正、変更、および省略も、本開示の範囲から逸脱することなく、開示の要素および動作の設計、動作条件、および配置に対して行うことができる。
【0093】
本明細書における要素の位置に対する言及(例えば、「上側」、「下側」、「上方」、「下方」)は単に、図面における様々な要素の向きを説明するために使用されるものである。様々な要素の向きは、他の例示的実施形態によって異なってもよく、かかる変形は本開示に包含されるものとする。
【国際調査報告】