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