(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-08
(54)【発明の名称】ニューラルネットワークの計算タイルにおけるメモリの効率的配分
(51)【国際特許分類】
G06N 3/063 20230101AFI20240401BHJP
G06F 9/06 20060101ALI20240401BHJP
G06F 9/50 20060101ALI20240401BHJP
【FI】
G06N3/063
G06F9/06
G06F9/50 120A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023565579
(86)(22)【出願日】2021-04-26
(85)【翻訳文提出日】2023-12-20
(86)【国際出願番号】 US2021029236
(87)【国際公開番号】W WO2022231571
(87)【国際公開日】2022-11-03
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】リウ,ジャック
(72)【発明者】
【氏名】ウ,ドン・ヒョク
(57)【要約】
巨大なニューラルネットワークをトレーニングするための、コンピュータ記憶媒体上にエンコードされているコンピュータプログラムを含む、方法、システム、および装置である。方法のうちの1つは、複数の層を有するニューラルネットワークを示すデータを取得することと、複数の層の部分集合における各々の層に対して、その層と関連する推論計算を少なくとも部分的に実行するために、複数のコンピューティングユニットの部分集合を割り当てことと、その層に割り当てられる各々のコンピューティングユニットのそれぞれのアドレス指定可能なメモリユニットのためのメモリサイズと共通メモリアドレスとを決定することと、メモリ配分命令を含む共有命令を生成することとを含む。メモリ配分命令は、複数のコンピューティングユニットの部分集合の各々によって実行されると、当該コンピューティングユニットに、コンピューティングユニットのアドレス指定可能なメモリユニットにおける決定されたメモリサイズを有する決定された共通メモリアドレスに、その層と関連する推論計算を実行する結果を記憶させる。
【特許請求の範囲】
【請求項1】
複数の層を有するニューラルネットワークを示すデータを取得することと、
前記複数の層の部分集合における各々の層に対して、
各々がそれぞれのアドレス指定可能なメモリユニットを含む複数のコンピューティングユニットの中から、前記層と関連する推論計算を少なくとも部分的に実行するために、前記複数のコンピューティングユニットの部分集合を割り当てることと、
前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合において、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのためのメモリサイズと共通メモリアドレスとを決定することと、
メモリ配分命令を含む共有命令を生成することとを含み、
前記メモリ配分命令は、前記複数のコンピューティングユニットの前記部分集合の各々によって実行されると、前記コンピューティングユニットに、前記コンピューティングユニットの前記アドレス指定可能なメモリにおける決定された前記メモリサイズを有する決定された前記共通メモリアドレスに、前記層と関連する推論計算を実行した結果を記憶させる、方法。
【請求項2】
前記複数の層の前記部分集合は、前記複数の層から選択され、前記選択は、
前記ニューラルネットワークを示す取得された前記データに基づき、前記ニューラルネットワークの前記複数の層の各々の層タイプを決定することを含む、請求項1に記載の方法。
【請求項3】
前記選択は、決定された前記層タイプに少なくとも部分的に基づく、請求項2に記載の方法。
【請求項4】
前記層の前記層タイプが全結合層であると決定することに応答して、前記コンピューティングユニットの前記共通メモリアドレスとは異なる追加のメモリアドレスを決定し、前記共有命令は、集積命令をさらに含み、
前記集積命令は、前記層に対する前記複数のコンピューティングユニットの前記部分集合の各々によって実行されると、前記コンピューティングユニットに、前記層に先行する別の層と関連する1つまたは複数の結果を集積させ、集積された前記結果を前記コンピューティングユニットの前記アドレス指定可能なメモリにおける決定された追加のメモリアドレスに記憶させる、請求項2に記載の方法。
【請求項5】
前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合において、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのための前記メモリサイズを決定することは、
それぞれの層の決定された前記層タイプに少なくとも部分的に基づき、前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合における、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのための前記メモリサイズを決定することを含む、請求項2に記載の方法。
【請求項6】
前記複数の層の前記部分集合とは別の前記複数の層の各々の層に対して、
各々がそれぞれのアドレス指定可能なメモリユニットを含む複数のコンピューティングユニットの中から、前記層と関連する推論計算を少なくとも部分的に実行するために、前記複数のコンピューティングユニットの第2の部分集合を割り当てることと、
前記複数のコンピューティングユニットの前記第2の部分集合において、対応するコンピューティングユニットのために、1つまたは複数のメモリ配分命令を各々生成することとをさらに含む、請求項1に記載の方法。
【請求項7】
前記メモリ配分命令は、
前記メモリ配分命令が適用される前記複数のコンピューティングユニットの前記部分集合の1つまたは複数のコンピューティングユニットを識別するデータをさらに含む、請求項1に記載の方法。
【請求項8】
前記1つまたは複数のコンピューティングユニットを識別する前記データは、バイナリ指示データである、請求項7に記載の方法。
【請求項9】
前記メモリ配分命令は、前記複数のコンピューティングユニットの前記部分集合の各々のコンピューティングユニットに対して、前記コンピューティングユニットによって生成される、それぞれの記憶されている前記結果の前記共通メモリアドレスをトラッキングするデータをさらに含む、請求項1に記載の方法。
【請求項10】
前記集積命令は、前記層に対する前記複数のコンピューティングユニットの前記部分集合の各々のコンピューティングユニットに対して、前記層に先行する前記別の層と関連する前記結果の各々が、前記層の前記コンピューティングユニットの前記アドレス指定可能なメモリにおける前記追加のメモリアドレスにおいて集積されるかどうかを特定するデータをさらに含む、請求項4に記載の方法。
【請求項11】
前記共有命令を前記複数のコンピューティングユニットに提供することをさらに含む、請求項1に記載の方法。
【請求項12】
方法であって、
各々のコンピューティングユニットがそれぞれのアドレス指定可能なメモリを含む複数のコンピューティングユニットを含むシステムに、ニューラルネットワークの複数の層に対して推論計算を実行するための1組の命令を提供することを含み、
前記1組の命令は、
前記ニューラルネットワークの前記複数の層における第1の層と関連付られた第1のメモリ配分命令を含み、前記第1のメモリ配分命令は、前記それぞれのアドレス指定可能なメモリの第1のメモリアドレスと前記複数のコンピューティングユニットの第1の部分集合とを識別し、
前記1組の命令は、さらに、
前記ニューラルネットワークの前記複数の層における第2の層と関連付られた第2のメモリ配分命令を含み、前記第2のメモリ配分命令は、前記それぞれのアドレス指定可能なメモリの第2のメモリアドレスと前記複数のコンピューティングユニットの第2の部分集合とを識別し、
前記第2のメモリアドレスは、前記第1のメモリアドレスとは異なり、前記第2の部分集合は、前記第1の部分集合とは異なり、
前記1組の命令は、前記システムに、
前記第1の部分集合の各コンピューティングユニットに対して、前記複数の層における前記第1の層と関連する推論計算の結果を、前記第1のメモリアドレスに基づき、前記コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力させるとともに、
前記第2の部分集合の各コンピューティングユニットに対して、前記複数の層における前記第2の層と関連する推論計算の結果を、前記第2のメモリアドレスに基づき、コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力させる、方法。
【請求項13】
前記複数のコンピューティングユニットの前記第1の部分集合は、前記複数の層における前記第1の層と関連する推論計算が分散される前記複数のコンピューティングユニットの部分集合に対応し、
前記複数のコンピューティングユニットの前記第2の部分集合は、前記複数の層における前記第2の層と関連する推論計算が分散される前記複数のコンピューティングユニットの部分集合に対応する、請求項12に記載の方法。
【請求項14】
前記第1のメモリ配分命令は第1のメモリサイズをさらに特定し、前記第2のメモリ配分命令は第2のメモリサイズをさらに特定し、
前記1組の命令は、さらに、システムに対して、
前記第1の部分集合の各コンピューティングユニットに対して、前記第1のメモリサイズを、前記第1のメモリアドレスに基づき、それぞれのコンピューティングユニットのアドレス指定可能なメモリにおける前記それぞれのメモリアドレスに配分することと、
前記第2の部分集合の各コンピューティングユニットに対して、前記第2のメモリサイズを、前記第2のメモリアドレスに基づき、それぞれのコンピューティングユニットのアドレス指定可能なメモリにおける前記それぞれのメモリアドレスに配分することとを実行させる、請求項12に記載の方法。
【請求項15】
前記第1のメモリサイズは前記第2のメモリサイズよりも大きい、請求項14に記載の方法。
【請求項16】
前記複数の層における前記第1の層は全結合層を含み、前記複数の層における前記第2の層は要素ごと層を含む、請求項12に記載の方法。
【請求項17】
前記1組の命令は、前記複数の層のうちの、前記第1の層および前記第2の層とは異なる1つまたは複数の層の各々と関連する前記1つまたは複数のメモリ配分命令をさらに含む、請求項12に記載の方法。
【請求項18】
前記1組の命令は、前記第1の層と関連する第1の集積命令をさらに含む、請求項16に記載の方法。
【請求項19】
前記第1の層と関連する前記第1の集積命令は、前記第1の部分集合の各々のコンピューティングユニットによって実行されると、前記システムに、それぞれのコンピューティングユニットと関連する追加のメモリアドレスを前記第1の部分集合に配分させ、
前記追加のメモリアドレスは前記第1のメモリアドレスとは異なる、請求項18に記載の方法。
【請求項20】
前記第1の集積命令は、前記第1の部分集合の各々のコンピューティングユニットに対して、前記第1の層の先行する層と関連する推論計算のそれぞれの結果の各々が、前記コンピューティングユニットのそれぞれのメモリアドレスに集積されるかどうかを、前記追加のメモリアドレスに基づいて決定するデータをさらに含む、請求項19に記載の方法。
【請求項21】
前記第1の層の前記先行する層と関連する推論計算の結果が集積されると決定することに応答して、前記第1の層と関連する前記第1の集積命令は、さらに、前記システムに、
前記先行する層と関連する推論計算の前記結果を、前記追加のメモリアドレスに基づき、対応するコンピューティングユニットのそれぞれのメモリアドレスに集積させる、請求項20に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本明細書は、一般に、ニューラルネットワークに関する。特に、本明細書は、複数の計算タイル(compute tiles)を有するハードウェアアクセラレータ上のニューラルネットワークへの入力の処理に関する。
【0002】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を使って、受け取られた入力に対する出力を予測する機械学習モデルである。
【0003】
いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各々の隠れ層の出力は、そのネットワークにおける次の層、すなわち次の隠れ層または出力層への入力として用いられる。ネットワークの各々の層は、それぞれの組のネットワークパラメータの現在値に従い、受け取られた入力から出力を生成する。
【0004】
ニューラルネットワークに対するネットワークパラメータとは、そのニューラルネットワークによって実行される演算に影響を及ぼす値であり、トレーニングの一部として調整される値でもある。たとえば、ネットワークパラメータは、ウェイト行列の値を、そしていくつかの場合には、ニューラルネットワークのネットワーク層のバイアスベクトルの値を、含み得る。
【発明の概要】
【0005】
概要
本明細書は、ハードウェアコンピューティングシステムのコンピューティングユニットに、特定のタイプのニューラルネットワーク層への入力を処理しながら、メモリを効率的に配分させる命令を生成するための技術を、概して説明している。
【0006】
一般に、本明細書で説明されている主題の革新的な一態様は、複数の層を含むニューラルネットワークを示す(すなわち、定義する)データを取得する動作と、ニューラルネットワークの複数の層の中から、取得されたデータに基づいて複数の層の部分集合(subset)を選択する動作と、複数の層の部分集合における各々の層に対して、各々がそれぞれのアドレス指定可能なメモリユニットを含む複数のコンピューティングユニットの中から、層と関連する推論計算を少なくとも部分的に実行するために、複数のコンピューティングユニットの部分集合を割り当てる動作と、層に対して割り当てられる複数のコンピューティングユニットの部分集合において、各々のコンピューティングユニットのそれぞれのアドレス指定可能なメモリユニットのためのメモリサイズと共通メモリアドレスとを決定する動作と、複数のコンピューティングユニットの部分集合の各々によって実行されると、コンピューティングユニットに、コンピューティングユニットのアドレス指定可能なメモリにおける決定されたメモリサイズを有する決定された共通メモリアドレスに、層と関連する推論計算を実行した結果を記憶させるメモリ配分命令を含む共有命令を生成する動作とを含む方法として、具現化することが可能である。
【0007】
主題のこの革新的な一態様を具現化する方法における動作は、さらに、共有命令を複数のコンピューティングユニットに提供することを含む。この方法は、複数のコンピューティングユニットを含むハードウェアアクセラレータなどのコンピュータシステムによって、実行することが可能である。このコンピュータシステムは、さらに、コントローラを含み得るが、このコントローラは、このコントローラによって複数のコンピューティングユニットに送信される命令に基づいて並列処理を実行するように、複数のコンピューティングユニットを制御するためのものである。
【0008】
本明細書で説明されている主題の別の革新的な一態様は、ニューラルネットワークの複数の層に対する推論計算を実行するための1組の命令を、複数のコンピューティングユニットを含むシステムに提供する動作を含む方法として、具現化することが可能である。各々のコンピューティングユニットは、それぞれのアドレス指定可能なメモリを含む。この1組の命令は、ニューラルネットワークの複数の層における第1の層と関連しており、それぞれのアドレス指定可能なメモリの第1のメモリアドレスと複数のコンピューティングユニットの第1の部分集合とを識別する第1のメモリ配分命令と、ニューラルネットワークの複数の層における第2の層と関連しており、それぞれのアドレス指定可能なメモリの第2のメモリアドレスと複数のコンピューティングユニットの第2の部分集合とを識別する第2のメモリ配分命令とを含む。第2のメモリアドレスは、第1のメモリアドレスと異なり、第2の部分集合は、第1の部分集合とは異なる。
【0009】
この1組の命令は、システムに、第1の部分集合における各々のコンピューティングユニットに対して、複数の層における第1の層と関連する推論計算の結果を、第1のメモリアドレスに基づき、コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力することと、第2の部分集合における各々のコンピューティングユニットに対して、複数の層における第2の層と関連する推論計算の結果を、第2のメモリアドレスに基づき、コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力することとをさせる。
【0010】
この態様の他の実施形態は、対応するコンピュータシステムと、装置と、1つまたは複数のコンピュータ記憶デバイス上に記録されているコンピュータプログラムとを含んでおり、各々は、方法の動作を実行するように構成されている。
【0011】
本明細書で説明されている主題は、以下の効果のうちの1つまたは複数を実現するように、特定の実施形態において実装することが可能である。
【0012】
複数のコンピューティングユニット(たとえば、計算タイル(compute tiles))を有するハードウェアアクセラレータにおいてニューラルネットワークモデルを実装するコンピューティングシステムは、説明されている技術を用いて、ニューラルネットワークモデルのある層と関連する複数のコンピューティングユニットに対して単一の共有命令を発行することにより、ニューラルネットワークモデルのための推論計算を効率的に実行することができる。共有命令は、その層と関連するコンピューティングユニットによって計算された部分的結果を、コンピューティングユニットが記憶し、フェッチし、集積させる共有メモリアドレスを特定する。説明されている技術を使う代わりに、コンピューティングユニットが、特定の層における推論計算からの結果を記憶するために、異なる複数のメモリアドレスを割り当てられるといういくつかの状況では、システムは、複数のコンピューティングユニットの各々に対して、複数の別個の命令を発行することが必要となる。しかし、説明されている技術を採用するシステムは、ある特定の層における各々のコンピューティングユニットに送るために、1つの共有命令を発行することでき、このことにより、要求される命令の総数を、少なくとも因数Nだけは、減らすことが可能である。なお、この因数Nとは、特定のネットワーク層で推論計算を実行するために用いられるコンピューティングユニットの総数である。
【0013】
このシステムは、共有命令を発行することによって、要求される全体の命令の帯域幅を少なくすることが可能であり、メモリ使用を縮小させることが可能である。したがって、システム(ハードウェアアクセラレータであり得る)がそれを制御するコントローラを含み、そのコントローラの命令メモリの命令帯域幅とメモリとが制約されているような状況では、このシステムは、別個の命令の一部をホストからコントローラへ複数の時点の各々においてフェッチする代わりに、コントローラの命令メモリに共有命令を直接ロードすることが可能である。このようにして、システムは、別個の命令の複数の部分を送信する際の時間的浪費を縮小することが可能であり、除去することさえも可能である。いくつかの実装形態では、説明されている技術は、従来型の方法と比較すると、要求される命令帯域幅の全体を、50%を超えて減らすことが可能である。
【0014】
さらに、説明されている技術を採用しているシステムは、相当に大規模なニューラルネットワークモデルのための推論計算を実行することが可能である。以前は、特定のハードウェアアクセラレータ上では、大規模なニューラルネットワークを計算することは困難であったし、不可能でもあった。大規模なニューラルネットワークの推論計算のためにメモリを配分するのに必要とされる命令の個数およびサイズは、ニューラルネットワークおよびネットワーク層の個数と共に増加するから、全体の命令のサイズは、極めて有意なものとなり得る。命令のサイズが大きい場合には、システムは、別個の命令の複数部分を、ホストからコントローラに、複数回送信することが必要であるが、これは、非効率的であり、休止オーバヘッドを増大させる可能性がある。さらに、反復ループを有する大規模なニューラルネットワークの場合に、複数の、別々の命令の複数部分をホストからコントローラへ正しくフェッチすることは、システムにとって、誤りを生じやすい。
【0015】
しかし、本明細書で説明されている共有命令をシステムが発行する場合には、命令のサイズを有意に縮小させることが可能である。したがって、このシステムは、ホストから命令を複数回フェッチすることを回避して休止時間を短縮させ(たとえば、共有命令をロードするのに費やされる時間を縮小)、反復ループを用いてニューラルネットワークを計算するために命令をフェッチする際の潜在的なエラーを回避するために、すべての共有命令を直接ロードすることができる。
【0016】
さらに、説明されている技術は、メモリ使用を減少させることができる。たとえば、共有命令を用いるシステムは、コンピューティングユニット(たとえば、GPUまたはTPU)における特定の機械学習モデルのための活性化入力、ウェイト入力、およびハイパーパラメータを記憶するためのメモリ配分を減少させることが可能であり、これは、たとえば、特定の機械学習モデルの推論計算の実行の計算効率を、結果的に向上させることが可能である。
【0017】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明において与えられている。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0018】
【
図1】ニューラルネットワークモデルの推論計算を実行するための例示的なハードウェアコンピューティングシステムを示す図である。
【
図2A】ニューラルネットワークモデルの層と関連する計算タイルのための従来型のメモリ配分の一例の図である。
【
図2B】ニューラルネットワークモデルの適格層(eligible layer)と関連する計算タイルのための共通メモリ配分の一例の図である。
【
図3】ニューラルネットワークモデルの全結合層と関連する計算タイルのための追加のメモリアドレスの例示的な配分の図である。
【
図4】システムにおける計算タイルのための例示的で詳細なアーキテクチャの図である。
【
図5】ニューラルネットワークモデルのための推論計算を実行するためのシステムにおける計算タイルのメモリ配分のための例示的なプロセスの図である。
【発明を実施するための形態】
【0019】
詳細な説明
本明細書は、ニューラルネットワークモデルにおいて入力を処理するときに、複数のコンピューティングユニットを含むハードウェアコンピューティングシステムの推論計算の効率を改善するための技術を説明している。
【0020】
ハードウェアコンピューティングシステムの各々のコンピューティングユニットは、自己完結的であり、多層ニューラルネットワークの所与の層の少なくとも一部によって要求される計算を、独立して実行することができる。説明されている技術は、要求される命令メモリサイズを縮小して、深層または大規模ニューラルネットワークモデルのために推論計算を実行するときに、ハードウェアコンピューティングシステムにおける計算効率を改善することができる。
【0021】
複数の層を有する、トレーニングされたニューラルネットワークモデルは、推論を計算するのに用いることができる。たとえば、ある入力が与えられると、ニューラルネットワークは、その入力のための推論を計算することができる。
【0022】
ニューラルネットワークは、ニューラルネットワーク層の各々を通じて入力を処理することによって、推論を計算する。特に、ニューラルネットワーク層の少なくともいくつかは、各々が、ウェイトのそれぞれの組を有する。各々の層は、入力を受け取り、その層に対するウェイトの組に従ってその入力を処理して、出力を生成する。
【0023】
ニューラルネットワーク層へのデータ入力は、たとえば、ニューラルネットワークへの入力、またはニューラルネットワークにおける1つもしくは複数の層の出力のいずれかであるが、その層への活性化入力と称され得る。
【0024】
いくつかの実装形態では、ニューラルネットワークの層は、シーケンスとして配列される。他の実装形態では、これらの層は、有向グラフとして配列される。
【0025】
すなわち、どの特定の層でも、複数の入力を受け取ることがあり得るし、複数の出力を生成することもあり得るし、またはその両方であり得る。ニューラルネットワークの層は、また、ある層の出力が以前の層への入力として送り返されることが可能であるように、配列され得る。
【0026】
ニューラルネットワークモデルの各々の層は、たとえば、そのニューラルネットワークの層間のノード接続によって定義されるような、それぞれのタイプを有し得る。
【0027】
一例として、ニューラルネットワークモデルにおける層の1つのタイプは、全結合層であり得る。全結合層の場合、このタイプの層におけるすべてのノードは、少なくとも1つの隣接する層の全部のノードと接続されている、すなわち、全結合層がそこからノード入力を受け取るニューラルネットワークにおける少なくとも1つの他の層と接続されている。たとえば、与えられている層が全結合層であり、ネットワーク層がシーケンスとして配列されているときには、与えられている層の各々のノードは、シーケンスにおいて与えられている層に先行する層における全部のノードに接続されている。
【0028】
全結合層は、異なる複数のニューラルネットワークにおいて、見出され得る。たとえば、全再帰型ニューラルネットワーク(FRNN)は、全結合層だけを含む。FRNNの最も簡潔な形式は、多層パーセプトロン(MLP)であり得るが、これは、入力層、出力層、および1つまたは複数の隠れ層を含んでおり、これらの各々が全結合層である。さらに、従来型の再帰型ニューラルネットワークも、1つまたは複数の全結合層を含み得る。畳み込みニューラルネットワーク(CNN)では、全結合層は、典型的に、最後の数個のCNNネットワーク層のうちの1つとして、配置されている。CNNにおける全結合層は、以前の畳み込み層における全部のノードからノード出力を受け取り、入力データを分類するまたはラベリングするためのノード出力を生成することができる。たとえば、全結合層は、CNNのSoftMax層がその後に続く、最後から2番目の層であり得る。
【0029】
別の例として、別のタイプの層は、要素ごと層(element-wise layer)である。要素ごと層は、入力データに対して、たとえば、要素ごとの加算、要素ごとの乗算、および要素ごとの非線形演算など、要素ごとに演算を行う。いくつかの実装形態では、要素ごと層の各々のノードは、隣接する層におけるノードのうちのただ1つのノードに接続されている。すなわち、要素ごと層における各々のノードは、隣接する層における対応する単一のノードから受け取られた入力に対して演算を実行する。
【0030】
1つの例示的な要素ごと層は、それぞれの活性化関数(たとえば、ReluまたはSigmoid関数)のそれぞれのノード演算をその層における各々のノードが含むネットワーク層であり得るが、この場合、各々のノードは、ただ1つのノード入力を隣接する層から受け取る。別の例示的な要素ごと層は、ノード残差接続のためのネットワーク層であり得る。より具体的には、層における各々のノードは、残差関数を含んでおり、この残差関数は、隣接する層におけるノードから単一の入力を受け取り、後続の層への対応する残差入力に加算される残差を出力する。任意選択で、層における各々のノードは、ノード残差に適用される非線形関数を含むこともあり得る。
【0031】
要素ごとのノード演算は、たとえば、要素ごとの加算、減算、および乗算など、任意の適切な演算を含み得る。たとえば、要素ごとのノード出力は、要素ごとの様態でのノード演算に従う、対応する2つの要素の加算であり得る。
【0032】
ニューラルネットワークは、また、異なるタイプを有する他の層も含み得、たとえば、平均プーリング層や、畳み込み層があり、層間のノードは、部分的に接続されている。層における各々のノードは、隣接する層におけるノードのそれぞれの部分集合に接続されている。
【0033】
ニューラルネットワークモデルのために推論計算を実行する、すなわち、与えられる入力に対する出力を計算するために、ハードウェアコンピューティングシステムは、各々のコンピューティングユニットが、割り当てられている層の少なくとも一部のための演算(たとえば、テンソル計算)を実行できるように、ニューラルネットワークの層のいくつかまたは全部を、そのハードウェアコンピューティングシステムの内部にある複数のコンピューティングユニット(「計算タイル」とも称される)に分散させる。
【0034】
たとえば要素ごと層および全結合層など、特定のタイプの層の場合には、層の計算は、複数のコンピューティングユニットの各々を横断して分散される。各々のコンピューティングユニットは、層の関連する推論計算の実行から取得された、少なくともそれぞれの部分的結果を出力して、それぞれの部分的結果を、コンピューティングユニットのそれぞれのアドレス指定可能なメモリユニットにおける1つまたは複数のメモリアドレスに記憶する。
【0035】
いくつかの実装形態では、各々のコンピューティングユニットは、メモリデバイスにおける1つまたは複数のメモリアドレスに向いているそれぞれのアドレス指定可能なメモリユニットを有し得る。
【0036】
層に対して割り当てられるコンピューティングユニットによって生成された部分的結果から層出力の少なくとも一部を生成するために、システムは、各々のコンピューティングユニットのための別個の命令を生成することができる。これらの別個の命令は、それぞれの部分的結果を記憶するための1つまたは複数のそれぞれのメモリアドレスを決定するデータと、あるコンピューティングユニットに対するそれぞれの部分的結果が別の層への入力の少なくとも一部を生成するのに用いられるかどうかを決定するデータとを含み得る。より具体的には、後続の層に割り当てられる1つまたは複数の計算タイルは、先行する層における1つまたは複数の計算タイルからの部分的結果をコピーするまたは組み合わせることを必要とし得るために、システムは、後続の層におけるタイルのための別個の命令を生成する必要があり、これら別個の命令の各々は、部分的結果を正しくフェッチするために、関連の部分的結果がそのタイルのために記憶されているそれぞれのメモリアドレスを特定する。より多くの計算タイルが特定のネットワーク層に割り当てられると、異なるメモリアドレスを特定するために、より多くの別個の命令が必要とされる。よって、命令の個数およびサイズは、層に割り当てられるコンピューティングユニットの総数の増加と共に上昇し、命令がメモリの限界を超えることがあり得る。
【0037】
全体の別個の命令がシステムのメモリの限界を超えると、システムは、ホストからコントローラへすべての命令を送信するときの効率性を低下させることになる。より具体的には、システムは、毎回、ホストからの命令の一部を転送して、システムに含まれているコンピュータの命令メモリにおける命令の一部をコピーする必要がある。さらに、ニューラルネットワークモジュールが相当に大規模であり、推論計算を実行するための反復ループを含む場合には、システムは、これらのニューラルネットワークモデルのための推論計算を、従来型の方法を用いて、実行することができない。ニューラルネットワークモデルの推論計算を実行するための反復ループは、ニューラルネットワークアクセラレータチップ上で展開される多くのニューラルネットワークモデルにおいて、オンデバイスまたはクラウドのいずれかに、存在する。したがって、そのようなニューラルネットワークの推論計算を効率的に実行するために適した方法を見つけることは、大きな関心事である。その計算が反復ループを要求するようなニューラルネットワークモデルの例は、WaveRNN、OCT、およびRNN-Tなど、長・短期記憶(LSTM)モデルまたは再帰型ニューラルネットワーク(RNN)モデルを含む。
【0038】
本明細書において以下で説明される技術は、上述されている課題に対処することが可能である。
【0039】
図1は、ニューラルネットワークモデルの推論計算を実行するための例示的なコンピューティングシステム100を示している。
【0040】
システム100は、ハードウェアアクセラレータ101(以下の明細書では集積回路構成またはチップとも称されるが、いくつかの実装形態では、複数の物理的に別個の集積回路としても実装され得る)と、オフチップに配置された、有線または無線接続を介してハードウェアアクセラレータ101と通信するように構成されているホスト108とを含む。
【0041】
ホスト108は、オフチップに配置された、すなわちハードウェアアクセラレータ101の一部ではない1つまたは複数のハードウェアデバイス上で、1つまたは複数のコンピュータプログラムとして実装することが可能であり、ハードウェアアクセラレータ101の演算を制御するための命令を生成する。
【0042】
図1に示されているように、ハードウェアアクセラレータ101は、コントローラ102と、計算タイルセット112、114と集合的に称される複数のタイル132~148と、チップメモリ(図示せず)とを含む。
【0043】
コントローラ102は、一般的に、データメモリ104と、命令メモリ106と、命令メモリにおいてエンコードされている1つまたは複数の命令を実行するように構成される少なくとも1つのプロセッサとを含む。命令メモリ106は、コントローラ102の1つまたは複数のプロセッサによって実行可能な、1つまたは複数の機械可読な命令を記憶することができる。命令メモリ106は、たとえば256kBなど、特定のサイズのメモリを含む。データメモリ104は、システム100内部での計算と関係するさまざまなデータを記憶し、および以後にこれらにアクセスするための、多様なデータ記憶媒体の任意のものであり得る。
【0044】
コントローラ102は、ホスト108から、命令とデータパラメータとを受け取ることが可能であり、命令バス124(後述される)を通じて命令を複数の計算タイルに提供するように構成されている。
【0045】
データパラメータは、ニューラルネットワークモデルとニューラルネットワークモデルへの入力データとを定義するデータに関係する。
【0046】
一般的に、コントローラ102が、すべての命令をホスト108から当初の時点で受け取り、それらを命令メモリ106に記憶することが、理想的である。この方法では、推論計算の間、コントローラ102は、ニューラルネットワークにおいて反復ループによって導入されるエラーに至る可能性がある、計算の間に命令の部分をフェッチすることを回避することが可能である。稀ではあるが可能である反復ループを有しないニューラルネットワークの場合、コントローラ102は、これらのニューラルネットワークモデルをある時点で計算し、他の部分を各々異なる時点でフェッチするための全部の命令のうちの一部を受け取るように、構成することが可能である。任意選択で、システム100におけるコントローラ102は、以前に記憶された命令の少なくとも一部が実行された後で、より多くの命令をホスト108からさらに受け取り、それらを命令メモリ106に記憶するように、構成することが可能である。
【0047】
コントローラ102は、ニューラルネットワークモデルの少なくとも一部のための推論計算を実行するための1つまたは複数の計算タイルに命令することが可能である。
【0048】
各々の計算タイルは、システム100における他の計算タイルと協働してニューラルネットワークモデルの1つまたは複数の層を横断して計算を加速化させる、個別的なコンピューティングユニットである。
図1に示されているように、計算タイルセット112は、計算タイル0、計算タイル1、計算タイル2、および計算タイル3(すなわち、タイル132、134、136、および138)を含んでおり、これらの各々は、アドレス指定可能なメモリユニット152、154、156、および158をそれぞれ含む。計算タイルセット114は、計算タイル142~148から構成され、これらは、アドレス指定可能なメモリユニット162、164、166、および168をそれぞれ含む。各々の計算タイルは、推論計算を実行した後で、部分的結果を、コントローラ102によってブロードキャストされるそれぞれの命令に従い、それぞれのアドレス指定可能なメモリユニット内部のそれぞれのメモリアドレスに記憶する。
【0049】
これらの命令は、各々が、どの計算タイルが命令を実行すべきかを示すそれぞれのヘッダ(たとえば、ビットマップ)を含み得る。
【0050】
コントローラ102は、各々の計算タイルのために、命令をブロードキャストすることができる。より具体的には、コントローラ102は、ホスト108から受け取られた命令を、各々の計算タイルへ、命令バス124を用いてデータ経路118に沿ってブロードキャストすることができ、すなわち、命令メモリ106に記憶されている命令は、コントローラ102から開始して計算タイルセット112、114における各々の計算タイルをコントローラ102にリングバックで接続するデータ経路118を経由して通信を提供する命令バス124によって、送信されることが可能である。命令バス124において1つまたは複数の命令を送信する間、これらの命令は、たとえば32ビット幅であり得るが、最初の7ビットは、これらの命令を受け取り、実行する命令アドレス/宛先を示すヘッダ情報を含む。たとえば、これらの最初の7ビットは、特定のノードIDを表すデータパラメータを含み得る。データ経路118に沿った各々の計算タイルは、ホスト108によるリクエストがヘッダを検査する計算タイルにアドレス指定されたかどうかを決定するために、命令のヘッダをシーケンシャルに検査し得る。
【0051】
宛先が検査しているタイルであるとヘッダのノードIDが示さないときには、検査しているタイルは、入力命令パケットを、次のタイルによる検査のための次のタイルに接続する命令バスに、コピーする。宛先が検査しているタイルであるとヘッダのノードIDが示すときには、検査しているタイルは、入力命令パケットにおいてエンコードされている演算を実行する。
【0052】
命令は、全部のタイルの中の計算を実行するための計算タイルの部分集合を特定するためのデータを、ヘッダ(たとえば、1つまたは複数のノードID)に含み得る。計算タイルの部分集合は、ニューラルネットワークの特定の層の内部での計算を実行するために、割り当てられる。部分集合の各々の計算タイルは、割り当てられた層のそれぞれの非重複部分の推論計算を実行する。たとえば、同じタイルセットの各々の計算タイル(タイルセット112における計算タイル132、134、136、および138)は、ニューラルネットワークモデルの同じ層に割り当てられ、その層と関連する推論計算を実行することができる。
【0053】
命令は、さらに、データを出力するための、対応する計算タイル内部の1つまたは複数のメモリアドレスを特定することができる。命令メモリ106のサイズの限界を超えるサイズを有する命令に関して上述した課題を解決するために、ホスト108は、特定のネットワーク層に割り当てられた計算タイルのそれぞれの部分集合に対して、共有命令を生成することができる。特定のネットワーク層に対する共有命令は、部分集合における各々の計算タイルに対するメモリサイズと共通メモリアドレスとを特定することができる。各々の層に対する共有命令は、各々の計算タイルを識別するためのデータ(たとえば、1つまたは複数のノードID)を有し得、計算タイルに、部分的結果を、そのそれぞれのアドレス指定可能なメモリユニットにおいて、それぞれの同じメモリサイズを有するそれぞれの共通メモリアドレスに記憶させる。いくつかの実装形態では、コントローラ102は、各々の層に対するそれぞれの共有命令に基づき、その層に対する複数の命令パケットを生成することができ、これら複数の命令パケットは、各々が、その層と関連する対応するタイルのためのノードIDと、同じメモリサイズを有する部分的結果を記憶するための対応するタイルのための共通メモリアドレスとを有する。
【0054】
コントローラ102は、命令に従って、与えられる入力に対するニューラルネットワークからの最終出力を生成するために、共通メモリアドレスからの関連する計算タイルの各々によって生成される、記憶されている部分的結果を、組み合わせることができる。より具体的には、コントローラ102は、後続の層における1つまたは複数の計算タイルに、以前の層における共通アドレスに記憶されている以前の層からの部分的結果を組み合わせるように、命令することができる。ニューラルネットワークのための推論計算を完了させた後では、コントローラ102は、ニューラルネットワークの最後の層における計算タイルに、最終出力を生成するように、命令することができる。コントローラ102は、次に、最終出力を、ホスト108に提供することができる。
【0055】
こうして、ハードウェアアクセラレータ101に、ハードウェアアクセラレータ上で展開されるニューラルネットワークのための推論計算を実行させるために、ホスト108は、複数の命令を生成して、コントローラ102に送信する。これらの複数の命令は、ハードウェアアクセラレータ101における1つまたは複数の計算タイルによっていったん実行されると、1つまたは複数の計算タイルに、ニューラルネットワークの少なくとも一部のためのそれぞれの推論演算を、それら複数の命令に従って、実行させることができる。
【0056】
ホスト108によって発行される、説明されている技術を採用している複数の命令は、1つまたは複数の適格なネットワーク層に割り当てられる複数の計算タイルのための共有命令であり得る。共有命令を用いて、ネットワーク層に割り当てられる各々の計算タイルのメモリを配分する詳細は、より詳細に後述される。
【0057】
図2Aは、ニューラルネットワークモデルの層と関連する計算タイル132、134、136、および136のための従来型のメモリ配分の一例を図解している。
【0058】
ホスト108は、ニューラルネットワークの各々の層によって表される演算を全部の利用可能な計算タイルのそれぞれの部分集合に割り当てるためのデータを、生成して、コントローラ102に提供することができる。タイルのそれぞれの部分集合の各々のタイルは、関連する層のための演算の少なくとも非重複部分を実行することができる。たとえば、ホスト108は、ニューラルネットワークの特定の層における演算を決定し、計算タイル132、134、136、および138を含む計算タイルセット112に割り当てることができ、その結果、各々の計算タイルは、推論計算の少なくとも非重複部分を実行する。
【0059】
各々の計算タイルは、それぞれのアドレス指定可能なメモリユニットを含み得、各々のそれぞれのアドレス指定可能なメモリユニットは、複数のメモリアドレスを含み得る。たとえば、タイル132は、たとえばメモリアドレス202a、202b、202c、および202dなど、異なるメモリアドレス202を有するアドレス指定可能なメモリユニット152を含む。
【0060】
従来、コントローラ102は、別個の命令を、同じネットワーク層に割り当てられている各々のタイルにブロードキャストするように、構成される。別個の命令の各々は、対応するタイルのためのそれぞれのメモリ配分命令を含み得る。メモリ配分命令は、それぞれの部分的結果を記憶するための、対応する計算タイルのそれぞれのアドレス指定可能なメモリユニットのためのそれぞれのメモリアドレスを、識別することができる。各々のそれぞれの部分的結果は、入力が与えられたときにそれぞれ割り当てられる層のための推論計算のそれぞれの部分を実行する対応の計算タイルによって、生成される。
【0061】
一例として
図2Aを参照すると、ある特定の層が、計算タイル132、134、136、および138を含む第1の計算タイルセット112に、割り当てられている。計算タイルの各々が、その特定の層のための推論計算の少なくとも一部を実行する。これらの推論計算は、たとえば、入力活性化の一部と対応する層ウェイトとのテンソル計算を含み得る。推論計算の対応する部分からそれぞれの部分的結果を取得した後で、各々の計算タイルは、それぞれの部分的結果を、そのタイルに対するそれぞれの従来型の命令に従って、異なるメモリアドレスの中に記憶する。たとえば、
図2Aに示されているように、計算タイル132は、それぞれの部分的結果を、第1の従来型の命令に従って、アドレス指定可能なメモリユニット152のメモリアドレス202aに出力する。同様に、計算タイル134は、第2の従来型の命令に従って、メモリアドレス204bに出力し、計算タイル136は、第3の従来型の命令に従って、メモリアドレス206dに出力し、計算タイル138は、第4の従来型の命令に従って、メモリアドレス208cに出力する。
【0062】
与えられるニューラルネットワーク層に対する従来型の命令は、その層と関連するタイルによって実行されると、それらのタイルに、その層に対する推論計算の少なくともそれぞれの部分を実行させ、それぞれの部分的結果を生成させて、タイルのそれぞれのアドレス指定可能なメモリユニットにおける異なるメモリアドレスに、それらの部分的結果を記憶させる。そうすることは有益であり得るが、その理由は、たとえば、与えられる層の後続層が全結合層であり、したがって、その後続層と関連する各々のタイルが、その後続層のたとえ部分的な出力を計算するためであっても、与えられる層の出力全体を必要とする場合には、その後続の全結合層と関連する1つまたは複数のタイルの各々は、先行する層と関連する異なるメモリアドレスからの記憶されている部分的結果の各々を、そのタイルのローカルメモリにおける同じメモリアドレスに直接コピーすることが可能であるからである。
【0063】
より具体的には、
図2Aに関連して、そして従来型の命令によると、タイル132、134、および136は、第1の層に割り当てられることが可能であり、タイル138は、第1の層に続く全結合層に割り当てられることが可能である。タイル132、134、および136は、第1の層において推論計算を実行するためのそれぞれの部分的結果を取得して、それらのそれぞれの部分的結果を、メモリアドレス202a、204b、および206dにそれぞれ記憶することができる。それぞれの部分的結果は、集合的に、第1の層からのノード出力の全セットを含む。後続の全結合層のための1つまたは複数の入力活性化を取得するために、タイル138は、それぞれの部分的結果をタイル132のアドレス202aから、タイル138のアドレス208aに、204bから208bに、そして206から208dに、ノード出力の全セットを記憶するためにタイル138の他のメモリアドレスを配分することなく、直接コピーすることができる。
【0064】
しかし、第1の層における1つまたは複数のタイルは、部分的結果を異なるローカルメモリアドレスに記憶し、後続層(たとえば、全結合層)における1つまたは複数のタイルは、その異なるローカルメモリアドレスからの記憶されている部分的結果の各々をコピーする必要があるから、ホスト108は、それぞれの部分的結果を記憶するための、第1の層におけるタイルのためのメモリアドレスを特定するそれぞれの命令を、および、そこから部分的結果を収集する後続層におけるタイルの各々のためのそれぞれのメモリアドレスを特定するそれぞれの命令を、生成する必要がある。
【0065】
特定のニューラルネットワークのための推論計算の実行を高速化するために、システムは、並列化のために可能な限り多くのタイルを用いる傾向がある。命令の総サイズは、したがって、それぞれの並列化レベルに基づき、異なる程度まで増加する。
【0066】
さらに、より多くのタイルが特定の層に割り当てられると、またはより多くのノードが後続の全結合層に存在すると、部分的結果を記憶するための特定の層と関連するタイルのために、および特定の層からの部分的結果をコピーまたは組み合わせるための後続の層と関連するタイルのために、より多数の別個の命令が必要とされる。よって、上述されたように、ニューラルネットワークのための推論計算を実行するための命令のサイズは、各々の層と関連する計算タイルの個数および層のサイズ(すなわち、層におけるノードの個数)と共に、増大する。
【0067】
命令のサイズが増大すると、ニューラルネットワークのための推論計算を実行する効率性が、大規模なニューラルネットワークの場合は特に、損なわれる可能性がある。
【0068】
しかし、後述される計算システム100は、この課題を解決することができる。
図1に関連して、計算システム100は、最初に、ホスト108のためのデータを取得することができる。このデータは、複数の層を有するニューラルネットワークと、たとえば要素ごと層または全結合層など、複数の層の各々に対する層のタイプとを表すことができる。
【0069】
ホスト108は、受け取られたデータによって示されるニューラルネットワークの全部の層のうちの層の部分集合を決定し、選択することができる。簡潔性のため、ニューラルネットワークの層のこの部分集合は、適格層と称される。よって、適格層とは、適格性基準を満たす層である。適格層は、要素ごとタイプまたは全結合タイプのいずれかである層を含む。
【0070】
ホスト108は、各々がそれぞれの適格層と関連する計算タイルのためのそれぞれの共有命令を生成することができる。
【0071】
適格層と関連するタイルのための各々の共有命令は、関連するタイルのための共通メモリアドレスと所定のメモリサイズとを特定する少なくともメモリ配分命令を含み得る。各々の計算タイルは、それぞれの部分的結果を、所定のメモリサイズを有する共通メモリアドレスに記憶することができる。所定のメモリサイズは、ホスト108によって決定され得るか、またはユーザによって設定され得る。メモリサイズは、層において計算の割り当てられている部分を実行した後で各々のタイルが出力する必要がある部分的結果における値の個数に基づいて、決定され得る。たとえば、少なくとも5つのノード計算と各々が関連するタイルに割り当てられている要素ごと層のためのメモリサイズは、わずか2つのノード計算と各々が関連するタイルに割り当てられている要素ごと層よりも、大きい。別の例として、全結合層は、各々の関連するタイルがいくつの値を出力する必要があるかに応じて、要素ごと層よりも小さなメモリサイズを要求し得る。
【0072】
それぞれの部分的出力を、適格層と関連するタイルのための共通メモリアドレスに記憶することに加えて、ホスト108は、また、先行する層からの記憶されているデータを集積するため、全結合層と関連するタイルのための共有命令を生成する。先行する層は、たとえば、全結合層や要素ごと層など、任意の適切な適格層であり得る。
【0073】
ホスト108は、また、追加のメモリアドレスを特定する共有集積命令をさらに含む、全結合層のための共有命令を生成することができる。共有集積命令は、タイルによって実行されると、全結合層と関連する各々のタイルに、共通アドレスに記憶されている先行する層の全部のノード結果を表す部分的結果を取得させ、取得された部分的結果を追加のメモリアドレスに集積させる。これは、全結合層と関連する計算タイルが層演算の一部にだけ割り当てられる場合であっても、計算タイルは、依然として、先行する層からの結果の全セットを取得する必要がある、という理由による。
【0074】
「集積」という用語は、先行する適格層からの全部のノード出力を、後続の全結合層における1つまたは複数のノードのための適切な入力活性化に組み合わせることを指す。より具体的には、ホスト108によって発行される集積命令は、全結合層におけるそれぞれのノードと関連する各々のタイルによって実行されると、全結合層におけるそれぞれのノードと関連するタイルに、先行の層と関連する共通アドレスからのノード出力の全セットを集めさせ(たとえば、コピーし、記憶する)、共有集積命令において特定される追加の共通アドレスにおけるノード出力の集められた全セットに基づき、各々が全結合層におけるそれぞれのノードのためのそれぞれの入力活性化を構築させる。集積命令に従って生成されたそれぞれの入力活性化(または、集積された部分的結果)は、それぞれのタイルによって、部分的結果を生成するために、全結合層のための入力として用いられることが可能である。
【0075】
全結合層のためにタイルによって集められた結果は、通常は、先行する層に割り当てられた各々の計算タイルのそれぞれのアドレス指定可能なメモリにおける共通メモリアドレスに記憶されているそれぞれの部分的結果よりも、サイズが大きい。したがって、システム100によって生成される共有集積命令は、各々のサイズが異なる1つまたは複数の追加の共通メモリアドレスを有する追加の共通アドレスを、特定することができる。たとえば、追加の共通アドレスは、ある層のために部分的結果を記憶するための共通アドレスよりも大きなメモリサイズを有する、単一の追加の共通アドレスであり得る。別の例として、追加の共通アドレスは、ある全結合層のための、各々が異なるサイズを有する1つまたは複数の追加の共通アドレスを含み得る。追加の共通アドレスの総数および追加の共通アドレスの各々のためのそれぞれのサイズは、先行する層の層サイズに基づいて、または先行する層からの集められた部分的結果のサイズに基づいて、決定することが可能である。
【0076】
全結合層と関連する各々の計算タイルは、ホスト108によって発行される共有命令に従い、集積された入力活性化を処理するための全結合層の推論計算の少なくともそれぞれの部分を実行し、全結合層に対する共有命令に従い、共通メモリアドレスに記憶するために、それぞれの部分的結果を生成する。
【0077】
要素ごと層の場合、共有命令は、共通メモリアドレスの他には、別のメモリアドレスを特定する必要がない。要素ごと層と関連する各々のタイルは、ホスト108によって発行される共有命令に従って、先行する層と関連するそれぞれの部分的結果を集積させる必要がなく、または次の層のための入力活性化を形成するために、現在の層と関連するそれぞれの部分的結果を集積させる必要もない。代わりに、要素ごと層の各々のノード入力活性化は、先行する層からのノード出力活性化であり、その層の各々の出力活性化は、後続の層へのノード入力活性化である。したがって、次の層の計算タイルは、共有命令に従い、先行する層と関連する対応の計算タイルの共通メモリアドレスにおいて記憶されている出力活性化を、直接コピーすることができる。
【0078】
図2Bは、ニューラルネットワークモデルの適格層と関連する計算タイル132、134、136、および138のための、共通メモリ配分の一例を図解している。
【0079】
図2Bに示されているように、ホスト108は、適格層に割り当てられている各々の計算タイル132、134、136、および138のための、共有命令を生成する。共有命令は、それぞれの部分的結果を、それぞれのアドレス指定可能なメモリユニット152、154、156、および158における共通アドレスに記憶するために、各々の計算タイルのための共通メモリアドレスを特定する。共通アドレスは、チップメモリ上のメモリ位置であり得、これは、各々の計算タイルのための各々のそれぞれのアドレス指定可能なメモリユニットに対して、対応するタイルが特定の層のための共通アドレスに記憶されているデータにアクセスすると、各々のそれぞれのアドレス指定可能なメモリユニットにおける少なくともそれぞれの部分が「指す」ように構成されているものである。たとえば、計算タイル132、134、136、および138は、各々が、関連する層において推論計算のそれぞれの部分を実行することによって取得されたそれぞれの部分的結果を生成し、そのそれぞれの部分的結果を、共通アドレスに記憶する。いくつかの実装形態では、タイル132のためのそれぞれのメモリアドレス202a、計算タイル134のための204a、計算タイル136のための206a、および計算タイル138のための208aは、すべて、共通メモリアドレスを「指している」。各々の計算タイルはそれぞれの部分的結果を共通アドレスに記憶するため、記憶されている部分的結果は、他の計算タイルによっても、共有命令を用いてアクセスすることが可能である。したがって、ホスト108は、記憶されている部分的結果をフェッチするための共通メモリアドレスにアクセスするために、計算タイルのための共有命令を生成することによって、命令サイズを縮小させることが可能である。
【0080】
いくつかの実装形態では、層と関連するタイルのための共有命令は、記憶とアクセスとの両方のためのデータを含み得るが、これは、ホスト108から命令を受け取り、コントローラ102を用いて、それらの命令をブロードキャストするためのメモリ帯域幅の要件をさらに低下させる。
【0081】
図3は、ニューラルネットワークモデルの全結合層と関連する計算タイル132、134、136、および138のための、追加のメモリアドレスの例示的な配分を図解している。
【0082】
上述したように、全結合層の各々に対して、特定の全結合層において計算のそれぞれの部分を実行した後に部分的結果を記憶するためのタイルに対するそれぞれの共通アドレスに加えて、ホスト108は、先行する適格層からの部分的結果を組み合わせるために、特定の全結合層と関連するタイルのための追加のメモリアドレスを特定する共有命令を生成することができる。より具体的には、全結合層と関連する各々のタイルは、先行する層からのノード出力の全セットをコピーして、追加のメモリアドレスにおいて組み合わせることができる。集積された結果は、全結合層において推論計算を実行するためのそれぞれのノード活性化入力として、用いられる。全結合層と関連するタイルが層の演算の一部のみを実行する場合であっても、このタイルは、先行する層から、共通アドレスに記憶されている全部のノード出力を取得して、それらのノード出力を層の追加のメモリアドレスにおいて組み合わせるように命令される。
【0083】
いくつかの実装形態では、ホスト108は、先行する層のための共通メモリアドレスに記憶されている部分的結果における各々のノード出力を(たとえば、ノード出力と関連する個数またはIDによって)識別することができ、結果的に、全結合層におけるタイルは、先行する層からの識別されたノード出力の各々をコピーし、追加のメモリアドレスにおいてそれらを非反復的に組み合わせることができる。
【0084】
タイル132、134、136、および138が、ある全結合層と関連していると仮定すると、その全結合層に先行する層は、適格層である。
図3に示されているように、各々のタイルは、これらのタイルのための共有命令に従い、追加のメモリアドレスを、それぞれのアドレス指定可能なメモリユニットに配分する。たとえば、タイル132のメモリユニット152は追加のメモリアドレス302を含むように構成されており、タイル134のメモリユニット154は追加のメモリアドレス304を含み、タイル136のメモリユニット156は追加のメモリアドレス306を含み、タイル138のメモリユニット158は追加のメモリアドレス308を含む。それぞれのメモリユニットの各々の追加のメモリアドレスは、チップメモリ上の追加の共通アドレスと関連する。
【0085】
全結合層と関連するタイルのための共有命令のうちの集積命令に従い、各々のタイルは、適格な先行する層に対する共通アドレスにおいて記憶されている部分的結果からのノード出力の全セットを取得し、それらのノード出力をそれぞれの追加のメモリアドレスに集積させる。たとえば、計算タイル132は、先行する適格層からの部分的結果をコピーし、メモリユニット152のメモリアドレス302においてそれらを組み合わせ、計算タイル134は、先行する適格層からの部分的結果をコピーし、メモリユニット154のメモリアドレス304においてそれらを組み合わせ、計算タイル136は、先行する適格層からの部分的結果をコピーし、メモリユニット156のメモリアドレス306においてそれらを組み合わせ、計算タイル138は、先行する適格層からの部分的結果をコピーし、メモリユニット158のメモリアドレス308においてそれらを組み合わせる。
【0086】
より具体的な例として、
図4は、システム100における計算タイル132のための例示的で詳細なアーキテクチャを図解している。
【0087】
図4に示されているように、例示的な計算タイル132は、幅が狭いメモリ425ユニットと幅が広いメモリユニット412a、412b、412c、412d(集合的には、412)とを含み得る。幅が狭いおよび幅が広いという指定は、一般に、幅が狭いメモリ425および幅が広いメモリ412のメモリユニットの幅(ビット/バイト)のサイズを指している。いくつかの実装例では、幅が狭いメモリ425は、各々が16ビット未満のサイズすなわち幅を有するメモリユニットを含み、幅が広いメモリ412は、各々が32ビット未満のサイズすなわち幅を有するメモリユニットを含む。
【0088】
一般的に、適格層に割り当てられている計算タイル132は、ホストから、データ経路118に沿って、入力活性化とパラメータとを含むデータを受け取る。計算タイル132は、適格層のための共有命令に従い、入力活性化を幅の狭いメモリ425に書き込み、パラメータを幅の広いメモリ412に書き込む。いくつかの実装形態では、幅の狭いメモリ524は、どの制御デバイス(たとえば、TensorOp制御またはDMAOp制御)が幅の狭いメモリ210にアクセスすることが許されるのかを各々のメモリサイクルに対して決めるのに典型的に用いられるメモリアービタを含み得る。
【0089】
適格層が全結合であり、全結合層に先行する層も適格層である場合には、計算タイル132が、共有命令によって示される追加のメモリアドレスにおいて、先行する層のために取得された部分的結果からのノード出力の全セットを集積させる。
【0090】
より具体的には、計算タイル132は、MAC演算子と加算レジスタとによって、ニューラルネットワークの特定の層と関連する推論計算のそれぞれの部分を実行する。計算タイル132は、層のための入力活性化を、入力バスに沿って、幅の狭いメモリ425から1つまたは複数のMAC演算子に提供する。計算タイル132は、また、パラメータを、幅の広いメモリユニット412から1つまたは複数のMAC演算子に提供する。1つまたは複数のMAC演算子と加算レジスタとは、内積計算と加算とを、入力活性化およびパラメータを用いて実行する。
【0091】
計算タイル132は、MAC演算子と加算レジスタとから生成される部分的結果を、出力バスに沿って、非線形ユニットに提供する。非線形ユニットは、SigmoidまたはReLU関数などの非線形関数を部分的結果に適用し、後続の層のための出力活性化の少なくとも一部を生成するように、構成されている。計算タイル132は、層のための共有命令に従って幅の狭いメモリユニット425に配分されている共通アドレスに、出力活性化を記憶する。次の層と関連する他の計算タイルは、計算タイル132の幅の狭いメモリユニットから、記憶されている出力活性化をフェッチすることができる。いくつかの実装形態において、ある層のための共有命令は、その層の1つまたは複数の計算タイルからの記憶されている部分的結果が、後続の層と関連する計算タイルのための入力活性化を生成するのに用いられるかどうかを決定するデータを含む場合があり、そうである場合には、記憶されている部分的結果は、最終結果(たとえば、後続の層またはニューラルネットワークのための最終出力のための入力活性化)に属することになる。
【0092】
図5は、ニューラルネットワークモデルのための推論計算を実行するためのシステム100における計算タイルのメモリ配分のための例示的プロセス500を図解している。便宜上、プロセス500は、1つまたは複数の位置に配置されている1つまたは複数のコンピュータのシステムによって実行されているものとして説明される。たとえば、適切にプログラムされている
図1のシステム100のようなハードウェア計算システムが、プロセス500を実行することができる。より具体的な例として、
図1のシステム100のホスト108は、適切にプログラムされている場合には、プロセス500を実行することができる。
【0093】
ホストは、最初に、ニューラルネットワークを示すデータを取得する(502)。ニューラルネットワークを示すデータは、ニューラルネットワークのタイプ(たとえば、畳み込みニューラルネットワーク、または再帰型ニューラルネットワーク)を特定するデータ、ニューラルネットワークにおける層の総数(たとえば、入力層と出力層との間に10の隠れ層)、各々の層のノード数(たとえば、その各々が少なくともネットワーク動作を含む10、20、または50のノード)、すべての層のシーケンスを表すデータ、および層間のノード接続(たとえば、層が、全結合層、部分結合層、または隣接する層のうちの1つとの要素ごと結合層かどうか)を表すデータを含む。いくつかの実装形態では、このデータは、トレーニングされたニューラルネットワークをさらに定義するパラメータを含み得、このパラメータとは、たとえば、各々の層と関連する各々のノードに対するウェイトの学習された組、入力層もしくは出力層またはその両者に対するデータフォーマット要件(たとえば、トレーニングされたニューラルネットワークにおける入力層のための入力データのサイズに関する要件を表すデータ、またはトレーニングされたニューラルネットワークのための出力カテゴリの個数など出力フォーマットを表すデータ)である。いくつかの実装形態では、ホストは、データがトレーニングされていないニューラルネットワークを表すのか、またはトレーニングされたがウェイトを欠くニューラルネットワークを表すのか、を決定することができる。それに応答して、ホストは、トレーニングのための例を用いてニューラルネットワークをトレーニングするか、または入力ニューラルネットワークがトレーニングされていないことを示すユーザインターフェース上の告知を促すかのいずれかが可能であり、トレーニングされたニューラルネットワークを表すデータ、または欠けているウェイトを表すデータをリクエストする。
【0094】
コントローラ102は、ニューラルネットワークを表すデータをホスト108から受け取り、そのデータをコントローラ102のデータメモリ104に記憶する。いくつかの実装形態では、コントローラ102は、全部のデータを一度に受け取るか、または全部のデータが受け取られるまで、一回に一部のデータを受け取ることができる。
【0095】
コントローラ102は、また、命令をホスト108から受け取り、受け取られた命令を命令メモリ106に記憶する。同様に、コントローラは、複数回のうちの一回毎においてホスト108からの部分的な命令を、リトリーブすることができる。コントローラは、そのうえ、ニューラルネットワークモデルのために推論計算を実行した後の部分的結果または最終結果を含むデータを、ホスト108に送り返すことができる。
【0096】
ホストは、データを受け取った後で、受け取られたデータに従い、ニューラルネットワークモデルの各々の層に対して、それぞれの層のタイプを決定する。たとえば、ホストは、ネットワーク層が、全結合層、要素ごと層、または任意の他のタイプの層であるかどうかを、受け取られたデータに従って決定する。
【0097】
ホストは、次に、取得されたデータに基づき、ニューラルネットワークの複数の層の(適切な)部分集合を選択する(504)。具体的には、ホストは、少なくとも部分的に層のタイプに基づいて、複数の層の部分集合を選択する。複数の層の選択された部分集合は、また、本明細書では適格層とも称される。たとえば、ホストは、ある部分集合を形成するために、すべての層からすべての全結合層を選択することができる。別の例として、ホストは、別の部分集合を形成するために、すべての層から、全結合層と要素ごと層との両方を選択する。いくつかの実装形態では、ホストは、ニューラルネットワークのすべての全結合層を含む第1の部分集合と、ニューラルネットワークのすべての要素ごと層を含む第2の部分集合とを選択することができる。
【0098】
層の部分集合の各々の層に対して、ホストは、その層と関連する推論計算を少なくとも部分的に実行するために、複数のコンピューティングユニットの(適切な)部分集合を割り当てる(506)。たとえば、全結合層における推論計算のためのノード演算は、4の計算タイルの間に分散される。別の例として、要素ごと層における推論計算のためのノード演算は、10の計算タイルの間に分散される。
【0099】
各々のコンピューティングユニットは、それぞれのアドレス指定可能なメモリユニットを含んでおり、その結果として、各々のコンピューティングユニットは、所定のメモリアドレスにおけるそれぞれのアドレス指定可能なメモリユニットに部分的結果を記憶することができる。たとえば、
図2Bに関連して、計算132は、アドレス指定可能なメモリユニット152を含んでおり、アドレス指定可能なメモリユニット152は、チップメモリ上のそれぞれの物理アドレスを各々が「指している」4つの異なるメモリアドレス202a~dを有する。各々のメモリアドレス202a~dは、ホストから発行される命令によって、別の物理メモリアドレスに再度向けられることが可能である。
【0100】
適格層に割り当てられている計算タイルのために共有命令を発行すると、ホストは、その適格層と関連する各々のコンピューティングユニットに対して、メモリサイズと共通メモリアドレスとを決定する(508)。決定されるメモリサイズは、少なくとも部分的にネットワーク層のタイプに基づき得る。たとえば、決定されるメモリサイズは、要素ごと層の場合より、全結合層の場合の方が大きい。
【0101】
メモリサイズは、また、ハードウェアアーキテクチャ、層の特性、および計算要件に基づき、与えられている適格なネットワーク層に対して、予め決定された固定サイズであり得る。いくつかの実装形態では、メモリサイズが、その代わりに、ユーザによってユーザインターフェースを通じて、予め設定されることも可能である。メモリサイズは、ほんのわずかな例を挙げるとすれば、5Kb、10Kb、または1Mbであり得る。
【0102】
ホスト108は、メモリ配分命令を含む共有命令を生成し、層と関連する各々のコンピューティングユニットによって実行されると、コンピューティングユニットに、層と関連する推論計算を実行した結果を、そのコンピューティングユニットのアドレス指定可能なメモリにおけるメモリサイズを有する共通メモリアドレスに記憶させる(510)。たとえば、
図2Bに関連して、計算タイル132、134、136、および138は、要素ごと層と関連しており、各々の計算タイルは、割り当てられた推論計算の部分的結果を、それぞれのアドレス指定可能なメモリユニット(たとえば、152、154、156、および158)内部のそれぞれのメモリアドレス(たとえば、202a、204a、206a、および208a)に記憶する。それぞれのメモリアドレス202a、204a、206a、および208aは、共通メモリアドレスと考えられることが可能である。しかし、正確には、それぞれのメモリアドレス202a、204a、206a、および208aは、各々が、チップの共通メモリアドレスを当初は「指している」アドレス識別子を有しており、そのため、メモリアドレス202a、204a、206a、および208aへの各々のデータ記憶/ロードプロセスは、事実上、共通メモリアドレスへのデータ記憶/ロードプロセスである。その代わりに、各々のメモリアドレス202a、204a、206a、および208aが、当初は、それぞれのメモリアドレスを「指す」こともあり得る。しかし、それは、共有命令におけるメモリ配分命令に起因して、共通メモリアドレスを「指す」ように変更されることがあり得る。
【0103】
メモリ配分命令は、メモリ配分命令がそれぞれの適格層に割り当てられている1つまたは複数のコンピューティングユニットに適用されるかどうかを識別するデータを、さらに含み得る。そうすることにより、コントローラ102は、メモリ配分命令に従い、必要に応じて、各々の計算タイルのメモリストレージを選択的に制御することができる。たとえば、再び
図2Bを参照すると、データは、計算タイル132、134、および136だけが、所定のメモリサイズを有する共通メモリアドレスに部分的結果を記憶できる、と特定することが可能である。
【0104】
コンピューティングユニットの識別のためのデータはバイナリデータであり得、計算タイルのノードIDと、メモリ配分が計算タイルに適用されるかどうかを表す状態フラグとを表すデータを含む。たとえば、0は、そのノードIDを有するコンピューティングユニットに対してメモリ配分命令が適用不可能であることを表し、1は、そのコンピューティングユニットにその命令が適用可能であることを表す。
【0105】
メモリ配分命令は、また、共通メモリアドレスに記憶されている部分的結果をトラッキングするデータを含み得る。ホストは、共有命令を発行することができ、共有命令は、対応するタイルによって実行されると、コントローラ102に起点となる共通メモリアドレスをトラッキングさせるが、この起点となる共通メモリアドレスとは、それぞれの結果がある層のために記憶され、そのそれぞれの結果が最終結果を形成するように所属するメモリアドレスである。より具体的には、1つまたは複数の計算タイルが1つまたは複数の層出力またはネットワークのための最終出力を提供するために部分的結果を集積させると、その1つまたは複数の計算タイルは、どの部分的結果を集積させるべきか、そして部分的結果をどこに集積させるべきかを正しく識別することができる。たとえば、再び
図2Bを参照すると、計算タイル132は、共通メモリアドレスを「指している」アドレス202aに、部分的結果を記憶する(または、同様に、共通メモリアドレスに部分的結果を記憶する)。各々の計算タイルが層のためのそれぞれの推論計算を実行した後で、ホストによって発行される共有命令は、層出力を生成するのに部分的結果が用いられることになるのかどうかを識別することができる。そうである場合には、ホストによって発行される共有命令は、さらに、部分的結果が算術的シーケンスにおいてどのように処理されるべきかを識別することができる。
【0106】
上述されたように、ホストは、ネットワーク層のタイプを決定することができる。層が全結合層であると決定することに応答して、および、その全結合層と関連する各々のコンピューティングユニットに対して、ホストは、共有命令を生成し、この共有命令は集積命令をさらに含む。集積命令は、先行する適格層からのノード出力の全セットを集積させるために用いられる追加のメモリアドレス(すなわち、共通メモリアドレスとは異なるメモリアドレス)を特定することができる。より具体的には、その全結合層に割り当てられるコンピューティングユニットの各々によって実行されると、集積命令は、計算タイルの各々に、先行する適格層と関連する共通アドレスに記憶されている部分的結果からのノード出力の全セットを、その追加の共通アドレスに集積させることができる。
【0107】
追加のメモリアドレスは、全結合層に割り当てられるコンピューティングユニットにとってアクセス可能なアドレスであり得る。たとえば、
図3に関連して、計算タイル132と計算タイル134とは、1つの全結合層に割り当てられており、ホストによって発行される命令は、実行されると、コントローラ102に、メモリアドレス302をアドレス指定可能なメモリユニット312に、メモリアドレス304をアドレス指定可能なメモリユニット314に配分させる。メモリアドレス302とメモリアドレス304との両方が、追加の共通メモリアドレスを指している。
【0108】
計算タイル132および134は、先行する層から取得された1つまたは複数の関連する部分的結果を集積させて、追加の共通メモリアドレスに記憶することができる。計算タイル132と計算タイル134とは、相互に、追加の共通メモリアドレスに記憶されているデータにアクセスすることができる。
【0109】
いくつかの実装形態では、集積命令は、さらに、先行する層からの記憶されている部分的結果のうちの1つまたは複数が、全結合層と関連するコンピューティングユニットによって、追加のメモリアドレスに集積されるかどうかを決定するデータを含む。これは、並列計算のために、特に、タイルがノード出力を冗長的に計算しそれぞれの部分的結果を共通アドレスに記憶するときに、有用であり得る。したがって、システムにおけるタイルが共通アドレスから関連するノード出力を正しくフェッチすることが、必要とされる。
【0110】
再び
図1を参照して、計算タイル148が全結合層と関連しており、この層の第1のノード上で演算を実行するように割り当てられている、と想定する。計算タイル132と計算タイル134とは、各々が、全結合層の適格な先行する層と関連しており、この場合に、計算タイル132は、先行する層のノードの第1の半数において演算を実行するように割り当てられ、計算タイル134は、先行する層のノードの第2の半数において演算を実行するように割り当てられている。計算タイル148が全結合層と関連している場合には、集積命令は、計算タイル132と計算タイル134とに記憶されているすべての関連する部分的結果は全結合層に対する共有命令(より具体的には、集積命令)に従って、追加のメモリアドレスに集積されるべきだと決定するデータを含む。
【0111】
図1のシステム100によって実装されるニューラルネットワークシステムは、コンピュータビジョンシステムの一部であり得る。たとえば、自律車両またはロボットシステムのためのコンピュータビジョンシステムにおいて。実世界のビジョンアプリケーションでは、現実のシーンにおいて生じる対象であるいわゆる「ロングテール」のため、見覚えのない対象は、ほとんど至る所に存在する。別の例として、このシステムは、新たなカテゴリをその場で作成する必要があり得る写真編成ソフトウェアの一部として用いられ得る。対象の認識に加え、このシステムは、対象の検出および細分化など、他のコンピュータビジョンタスクを実行することができる。他の領域では、画像や音声など、稀であり新規な対象も存在し得、システムは、そのような他の領域との関係でも用いられ得る。
【0112】
たとえば、ニューラルネットワークシステムは、言語モデリングシステム、画像/映像処理システム、または行為選択システムにおいて、用いられ得る。たとえば、タスクは、画像処理タスク、音声認識タスク、自然言語処理タスク、語認識タスク、または光学的文字認識タスクなど、分類タスクを含み得る。さらに、タスクは、強化学習タスクを含み得、このタスクでは、エージェントが、1つまたは複数のゴールを達成するために、1つまたは複数の現実のまたはシミュレートされた環境と対話する。
【0113】
ニューラルネットワークを用いた、言語モデリングタスクまたはテキストのソース言語からターゲット言語への翻訳の場合には、システムは、ソース自然言語での語のソースシーケンスを表すソース埋め込みの入力シーケンスを受け取り、ソースシーケンスのターゲット自然言語への翻訳である語のターゲットシーケンスを表すターゲット埋め込みの出力シーケンスを生成するように、構成され得る。より一般的には、システムは、ソースシーケンスがターゲットシーケンスにマッピングされる他のシーケンス伝達アプリケーションに適用することが可能である。
【0114】
入力データは、たとえば、画像データ、移動画像/映像データ、運動データ、音声データ、オーディオデータ、電子文書、ある環境の状態を表すデータ、および/または行為を表すデータのうちの1つまたは複数を含み得る。たとえば、画像データは、カラーまたはモノクロのピクセル値データを含み得る。そのような画像データは、カメラまたはLIDARセンサなどの画像センサからキャプチャされ得る。オーディオデータは、波形を定義する時間領域および/または周波数領域における一連の値など、オーディオ波形を定義するデータを含み得、この波形は、自然言語における音声を表し得る。電子文書データは、自然言語における語を表すテキストデータを含み得る。ある環境の状態を表すデータは、たとえば、ポーズデータおよび/もしくは位置/速度/加速度データなど、ロボットもしくは車両の状態を特徴付けるデータ、または、感知された電流信号および/もしくは温度信号など、感知された電子信号などの産業プラントもしくはデータセンタの状態を特徴付けるデータを含む、任意の種類のセンサデータを含み得る。行為を表すデータは、たとえば、位置、速度、加速度、および/もしくはトルク制御データ、または産業プラントもしくはデータセンタにおける1つまたは複数の項目の装置の動作を制御するためのデータを含み得る。これらのデータは、一般的に、現実、またはたとえばシミュレートされた仮想的環境に関係し得る。
【0115】
出力データは、同様に、任意の種類のデータを含み得る。たとえば、分類システムでは、出力データは、入力データ項目に対する分類ラベルを含み得る。回帰タスクでは、出力データは、たとえば、ロボット、車両、データセンタ、もしくはプラントなど、電子的または電子機械的なシステムを制御するための制御変数など、連続的な変数の値を予測し得る。画像またはオーディオデータに対して作用している回帰タスクの別の例では、出力データは、たとえば、物体の位置、物体の境界ボックスの1つもしくは複数のコーナーの位置、またはオーディオ波形における音の特徴の時間位置など、データにおける1つまたは複数の位置を定義し得る。強化学習システムでは、出力データは、たとえば、上述されたように、ある行為を表すデータを含み得るが、その行為とは、たとえばロボットまたは車両などの機械的エージェントに対してある環境で動作しているエージェントによって実行される行為である。
【0116】
ある行為を表すデータは、たとえば、その行為に対する行為値(Q値)を定義するデータ、またはその行為を決定するためにサンプリングされる確率分布をパラメトライズするデータ、またはたとえば連続的な行為空間における行為を直接定義するデータを含み得る。このように、強化学習システムでは、ニューラルネットワークシステムは、行為選択ポリシのために確率分布を直接パラメトライズすることができる、または行為値関数の値(Q値)を評価するために学習することができる。後者の場合には、複数のメモリとそれぞれの出力ネットワークとが、各々の利用可能な行為に対するQ値を提供するために、共通の埋め込みネットワークを共有し得る。
【0117】
ニューラルネットワークは、どの種類のデジタルデータ入力でも受け取り、その入力に基づいて、どの種類のスコア、分類、または回帰出力でも生成するように構成することが可能である。
【0118】
たとえば、ニューラルネットワークへの入力が画像または画像から抽出された特徴である場合には、与えられる画像に対してニューラルネットワークによって生成される出力は、1組の対象カテゴリの各々に対するスコアであり得、各々のスコアは、その画像がそのカテゴリに属する対象の画像を含むという推定される蓋然性を表すスコアである。
【0119】
別の例として、ニューラルネットワークへの入力がインターネットリソース(たとえば、ウェブページ)、文書、インターネットリソースから抽出される文書もしくは特徴の一部、または文書の一部である場合には、与えられるインターネットリソース、文書、または文書の一部に対してニューラルネットワークによって生成される出力は、1組のトピックの各々に対するスコアであり得、各々のスコアは、インターネットリソース、文書、または文書の一部がそのトピックに関するものであるという推定される蓋然性を表す。
【0120】
別の例として、ニューラルネットワークへの入力が特定の広告のための印象文脈の特徴である場合には、ニューラルネットワークによって生成される出力は、特定の広告がクリックされるであろうという推定される蓋然性を表すスコアであり得る。
【0121】
別の例として、ニューラルネットワークへの入力が、たとえば推薦のための文脈を特徴付ける特徴や、たとえばユーザによってなされた以前の行動を特徴付ける特徴など、ユーザのために個人化された推薦の特徴である場合には、ニューラルネットワークによって生成される出力は、1組のコンテンツアイテムの各々に対するスコアであり得、各々のスコアは、ユーザがコンテンツアイテムを推薦されていることに対して好意的に応答するであろうという推定される蓋然性を表す。
【0122】
別の例として、ニューラルネットワークへの入力が、ある言語でのテキストのシーケンスである場合には、ニューラルネットワークによって生成される出力は、別の言語での1組の一片のテキストの各々に対するスコアであり得、各々のスコアは、他の言語における一片のテキストが入力されるテキストの他の言語への適切な翻訳であるという推定される蓋然性を表す。
【0123】
別の例として、ニューラルネットワークへの入力が話された発話を表すシーケンスである場合には、ニューラルネットワークによって生成される出力は、1組の一片のテキストの各々に対するスコアであり得、各々のスコアは、その一片のテキストがその発話に対する正確な転写であるという推定される蓋然性を表す。
【0124】
主題の実施形態および本明細書で説明されている機能的演算は、デジタル電子回路構成として実装することが可能であり、有形的に具現化されるコンピュータソフトウェアもしくはファームウェアとして実装することが可能であり、本明細書に開示されている構造およびそれらの構造的な均等物を含むコンピュータハードウェアとして実装することが可能であり、またはそれらのうちの1つもしくは複数の組合せとして実装することが可能である。本明細書で説明されている主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわちデータ処理装置による実行またはデータ処理装置の動作の制御のために有形の非一時的なプログラムキャリア上でエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することが可能である。その代わりにまたはそれに追加して、プログラム命令は、情報をエンコードし、適切な受信機装置に送信し、データ処理装置によって実行するように生成された、たとえばマシンによって生成された電気信号、光信号、または電磁気信号など、人工的に生成された伝播信号上にエンコードすることが可能である。コンピュータ記憶媒体は、機械可読の記憶デバイス、機械可読の記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであり得る。
【0125】
本明細書で説明されているプロセスおよび論理フローは、入力データに対して演算を行って出力を生成することにより機能を実行するように、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって、実行することが可能である。また、これらのプロセスおよび論理フローは、たとえば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または汎用グラフィクス処理ユニット(GPGPU)など、専用の論理回路構成によっても実行することが可能であり、同様に、装置も、専用の論理回路構成として実装することが可能である。
【0126】
コンピュータプログラムの実行に適切なコンピュータは、一例として、汎用もしくは専用のマイクロプロセッサもしくはそれらの両方、または任意の他の種類の中央処理装置を含み、それらに基づき得る。一般的に、中央処理装置は、リードオンリメモリ、またはランダムアクセスメモリ、またはそれらの両方から、命令およびデータを受け取る。コンピュータの必須の要素は、命令を遂行または実行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般的に、コンピュータは、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクなど、データを記憶するための1つもしくは複数の大規模記憶デバイスも含み、または、これらの1つもしくは複数の大規模ストレージデバイスとの間でデータを受信、送信、または送受信の両方を行うように動作的に結合されている。しかし、コンピュータが、そのようなデバイスを有していることは、必要ない。
【0127】
コンピュータプログラム命令およびデータを記憶するのに適切なコンピュータ可読媒体は、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含んでおり、例示的な半導体メモリデバイスとして、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなど、たとえば、内部ハードディスクまたはリムーバブルディスクなどの磁気ディスクを含む。プロセッサおよびメモリは、専用の論理回路構成によって補完されること、または専用の論理回路構成に組み入れられることが可能である。
【0128】
本明細書は多くの具体的な実装形態の詳細を含んでいるが、これらは、どの発明または特許請求の範囲を限定するものとしてではなく、特定の発明の特定の実施形態に特有であり得る特徴に関する説明として、解釈されるべきである。また、別々の実施形態の文脈において本明細書で説明されている特定の複数の特徴が、単一の実施形態における組合せとして実装されることも可能である。逆に、単一の実施形態の文脈で説明されているさまざまな特徴が、複数の実施形態において別々に、またはいずれかの適切な部分的組合せとして、実装されることも可能である。さらに、複数の特徴が、特定の組合せで動作するものとして以上では説明され、そのようなものとして最初に特許請求されていることさえあり得るが、特許請求されている組合せからの1つまたは複数の特徴が、いくつかの場合には、この組合せから除外されることもあり得、特許請求されている組合せが、部分的組合せまたは部分的組合せの変形例に向けられる場合もあり得る。
【0129】
同様に、図面では、複数の動作が特定の順序で示されているが、これは、望ましい結果を達成するために、これらの動作を、示されている特定の順序でまたはシーケンシャルな順序で実行しなければならないように理解されるべきではなく、または図解されている全部の動作を実行しなければならないとも理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上述されている実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてこのような分離が要求されていると理解されるべきではなく、説明されているプログラムコンポーネントおよびシステムは、一般的に、単一のソフトウェア製品に統合されること、または複数のソフトウェア製品にパッケージングされることが可能である、と理解されるべきである。
【0130】
主題の特定の実施形態が説明された。他の実施形態も、以下の特許請求の範囲に属する。たとえば、特許請求の範囲に記載されている動作は、異なる順序で実行することが可能であり、依然として所望の結果を達成することができる。一例として、添付の図面に示されているプロセスは、所望の結果を達成するために、示されている特定の順序またはシーケンシャルな順序を、必ずしも要求していない。特定の実装形態では、マルチタスキングおよび並列処理が、有利な場合がある。
【手続補正書】
【提出日】2024-01-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の層を有するニューラルネットワークを示すデータを取得することと、
前記複数の層の部分集合における各々の層に対して、
各々がそれぞれのアドレス指定可能なメモリユニットを含む複数のコンピューティングユニットの中から、前記層と関連する推論計算を少なくとも部分的に実行するために、前記複数のコンピューティングユニットの部分集合を割り当てることと、
前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合において、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのためのメモリサイズと共通メモリアドレスとを決定することと、
メモリ配分命令を含む共有命令を生成することとを含み、
前記メモリ配分命令は、前記複数のコンピューティングユニットの前記部分集合の各々によって実行されると、前記コンピューティングユニットに、前記コンピューティングユニットの前記アドレス指定可能なメモリ
ユニットにおける決定された前記メモリサイズを有する決定された前記共通メモリアドレスに、前記層と関連する推論計算を実行した結果を記憶させる、方法。
【請求項2】
前記複数の層の前記部分集合は、前記複数の層から選択され、前記選択は、
前記ニューラルネットワークを示す取得された前記データに基づき、前記ニューラルネットワークの前記複数の層の各々の層タイプを決定することを含む、請求項1に記載の方法。
【請求項3】
前記選択は、決定された前記層タイプに少なくとも部分的に基づく、請求項2に記載の方法。
【請求項4】
前記層の前記層タイプが全結合層であると決定することに応答して、前記コンピューティングユニットの前記共通メモリアドレスとは異なる追加のメモリアドレスを決定し、前記共有命令は、集積命令をさらに含み、
前記集積命令は、前記層に対する前記複数のコンピューティングユニットの前記部分集合の各々によって実行されると、前記コンピューティングユニットに、前記層に先行する別の層と関連する1つまたは複数の結果を集積させ、集積された前記結果を前記コンピューティングユニットの前記アドレス指定可能なメモリ
ユニットにおける決定された追加のメモリアドレスに記憶させる、請求項2に記載の方法。
【請求項5】
前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合において、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのための前記メモリサイズを決定することは、
それぞれの層の決定された前記層タイプに少なくとも部分的に基づき、前記層に対して割り当てられる前記複数のコンピューティングユニットの前記部分集合における、各々のコンピューティングユニットの前記それぞれのアドレス指定可能なメモリユニットのための前記メモリサイズを決定することを含む、請求項2に記載の方法。
【請求項6】
前記複数の層の前記部分集合とは別の前記複数の層の各々の層に対して、
各々がそれぞれのアドレス指定可能なメモリユニットを含む複数のコンピューティングユニットの中から、前記層と関連する推論計算を少なくとも部分的に実行するために、前記複数のコンピューティングユニットの第2の部分集合を割り当てることと、
前記複数のコンピューティングユニットの前記第2の部分集合において、対応するコンピューティングユニットのために、1つまたは複数のメモリ配分命令を各々生成することとをさらに含む、請求項1に記載の方法。
【請求項7】
前記メモリ配分命令は、
前記メモリ配分命令が適用される前記複数のコンピューティングユニットの前記部分集合の1つまたは複数のコンピューティングユニットを識別するデータをさらに含む、請求項1に記載の方法。
【請求項8】
前記1つまたは複数のコンピューティングユニットを識別する前記データは、バイナリ指示データである、請求項7に記載の方法。
【請求項9】
前記メモリ配分命令は、前記複数のコンピューティングユニットの前記部分集合の各々のコンピューティングユニットに対して、前記コンピューティングユニットによって生成される、それぞれの記憶されている前記結果の前記共通メモリアドレスをトラッキングするデータをさらに含む、請求項1に記載の方法。
【請求項10】
前記集積命令は、前記層に対する前記複数のコンピューティングユニットの前記部分集合の各々のコンピューティングユニットに対して、前記層に先行する前記別の層と関連する前記結果の各々が、前記層の前記コンピューティングユニットの前記アドレス指定可能なメモリ
ユニットにおける前記追加のメモリアドレスにおいて集積されるかどうかを特定するデータをさらに含む、請求項4に記載の方法。
【請求項11】
前記共有命令を前記複数のコンピューティングユニットに提供することをさらに含む、請求項1に記載の方法。
【請求項12】
方法であって、
各々のコンピューティングユニットがそれぞれのアドレス指定可能なメモリを含む複数のコンピューティングユニットを含むシステムに、ニューラルネットワークの複数の層に対して推論計算を実行するための1組の命令を提供することを含み、
前記1組の命令は、
前記ニューラルネットワークの前記複数の層における第1の層と関連付られた第1のメモリ配分命令を含み、前記第1のメモリ配分命令は、前記それぞれのアドレス指定可能なメモリの第1のメモリアドレスと前記複数のコンピューティングユニットの第1の部分集合とを識別し、
前記1組の命令は、さらに、
前記ニューラルネットワークの前記複数の層における第2の層と関連付られた第2のメモリ配分命令を含み、前記第2のメモリ配分命令は、前記それぞれのアドレス指定可能なメモリの第2のメモリアドレスと前記複数のコンピューティングユニットの第2の部分集合とを識別し、
前記第2のメモリアドレスは、前記第1のメモリアドレスとは異なり、前記第2の部分集合は、前記第1の部分集合とは異なり、
前記1組の命令は、前記システムに、
前記第1の部分集合の各コンピューティングユニットに対して、前記複数の層における前記第1の層と関連する推論計算の結果を、前記第1のメモリアドレスに基づき、前記コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力させるとともに、
前記第2の部分集合の各コンピューティングユニットに対して、前記複数の層における前記第2の層と関連する推論計算の結果を、前記第2のメモリアドレスに基づき、
前記コンピューティングユニットのアドレス指定可能なメモリのそれぞれのメモリアドレスに出力させる、方法。
【請求項13】
前記複数のコンピューティングユニットの前記第1の部分集合は、前記複数の層における前記第1の層と関連する推論計算が分散される前記複数のコンピューティングユニットの部分集合に対応し、
前記複数のコンピューティングユニットの前記第2の部分集合は、前記複数の層における前記第2の層と関連する推論計算が分散される前記複数のコンピューティングユニットの部分集合に対応する、請求項12に記載の方法。
【請求項14】
前記第1のメモリ配分命令は第1のメモリサイズをさらに特定し、前記第2のメモリ配分命令は第2のメモリサイズをさらに特定し、
前記1組の命令は、さらに、システムに対して、
前記第1の部分集合の各コンピューティングユニットに対して、前記第1のメモリサイズを、前記第1のメモリアドレスに基づき、それぞれのコンピューティングユニットのアドレス指定可能なメモリにおける前記それぞれのメモリアドレスに配分することと、
前記第2の部分集合の各コンピューティングユニットに対して、前記第2のメモリサイズを、前記第2のメモリアドレスに基づき、それぞれのコンピューティングユニットのアドレス指定可能なメモリにおける前記それぞれのメモリアドレスに配分することとを実行させる、請求項12に記載の方法。
【請求項15】
前記第1のメモリサイズは前記第2のメモリサイズよりも大きい、請求項14に記載の方法。
【請求項16】
前記複数の層における前記第1の層は全結合層を含み、前記複数の層における前記第2の層は要素ごと層を含む、請求項12に記載の方法。
【請求項17】
前記1組の命令は、前記複数の層のうちの、前記第1の層および前記第2の層とは異なる1つまたは複数の層の各々と関連する前記1つまたは複数のメモリ配分命令をさらに含む、請求項12に記載の方法。
【請求項18】
前記1組の命令は、前記第1の層と関連する第1の集積命令をさらに含む、請求項16に記載の方法。
【請求項19】
前記第1の層と関連する前記第1の集積命令は、前記第1の部分集合の各々のコンピューティングユニットによって実行されると、前記システムに、それぞれのコンピューティングユニットと関連する追加のメモリアドレスを前記第1の部分集合に配分させ、
前記追加のメモリアドレスは前記第1のメモリアドレスとは異なる、請求項18に記載の方法。
【請求項20】
前記第1の集積命令は、前記第1の部分集合の各々のコンピューティングユニットに対して、前記第1の層の先行する層と関連する推論計算のそれぞれの結果の各々が、前記コンピューティングユニットのそれぞれのメモリアドレスに集積されるかどうかを、前記追加のメモリアドレスに基づいて決定するデータをさらに含む、請求項19に記載の方法。
【請求項21】
前記第1の層の前記先行する層と関連する推論計算の結果が集積されると決定することに応答して、前記第1の層と関連する前記第1の集積命令は、さらに、前記システムに、
前記先行する層と関連する推論計算の前記結果を、前記追加のメモリアドレスに基づき、対応するコンピューティングユニットのそれぞれのメモリアドレスに集積させる、請求項20に記載の方法。
【国際調査報告】