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