JP2021517310A - 複数の入力データセットのための処理 - Google Patents
複数の入力データセットのための処理 Download PDFInfo
- Publication number
- JP2021517310A JP2021517310A JP2020551487A JP2020551487A JP2021517310A JP 2021517310 A JP2021517310 A JP 2021517310A JP 2020551487 A JP2020551487 A JP 2020551487A JP 2020551487 A JP2020551487 A JP 2020551487A JP 2021517310 A JP2021517310 A JP 2021517310A
- Authority
- JP
- Japan
- Prior art keywords
- context
- layer
- output
- layer output
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
Description
後続の計算が次の層(たとえば、層211)にある同じ入力データセットについてである場合、計算コントローラ330は、出力バッファ328に格納された中間出力を取得し、層211における計算を開始するために、状態バッファ322からXBUSEXTERNALを介して計算エンジン324に、中間出力ならびに重みの新しいセットを供給することができる。一方、中間出力が後続の計算に使用されない場合、計算コントローラ330は、中間出力を状態バッファ322に格納することができる。プロセスは、出力層における計算が完了するまで層ごとに繰り返すことができる。計算の順序は、以下に記載される予定のスケジューリング方式を動作させるスケジューラモジュール332によって決定することができる。
いくつかの例示的な実施形態は、以下の節によって記載される。
1.多層ニューラルネットワークにおいて複数のデータセットを処理する方法であって、多層ニューラルネットワークが、第1のニューラルネットワーク層、第1のニューラルネットワーク層によって生成された出力を処理する第2のニューラルネットワーク層、および第2のニューラルネットワーク層によって生成された出力を処理する第3のニューラルネットワーク層を備え、方法が
第1のデータセットをメモリに格納することと、
第1のニューラルネットワーク層を使用して、第1のデータセットの第1の層出力を生成するために、メモリからの第1のデータセットを処理することと、
第1のデータセットの第1の層出力をメモリに格納することと、
メモリから第1のデータセットを削除することと、
メモリに格納された第1のデータセットの第1の層出力に第2のデータセットを追加することと、
第1のニューラルネットワーク層を使用して、第2のデータセットの第1の層出力を生成するために、メモリからの第2のデータセットを処理することと、
メモリに格納された第1のデータセットの第1の層出力に第2のデータセットの第1の層出力を追加することと、
メモリから第2のデータセットを削除することと、
第2のニューラルネットワーク層を使用して、それぞれ、第1のデータセットの第2の層出力および第2のデータセットの第2の層出力を生成するために、メモリからの第1のデータセットの第1の層出力および第2のデータセットの第1の層出力を処理することと、
第1のデータセットの第2の層出力および第2のデータセットの第2の層出力をメモリに格納することと、
第1のデータセットの第1の層出力および第2のデータセットの第1の層出力をメモリから削除することと、
メモリに格納された第1のデータセットの第2の層出力および第2のデータセットの第2の層出力に第3のデータセットを追加することと、
第1のニューラルネットワーク層を使用して、第1のデータセットの第2の層出力および第2のデータセットの第2の層出力が生成された後、第3のデータセットの第1の層出力を生成するために、メモリからの第3のデータセットを処理することと、
第3のデータセットの第1の層出力をメモリに格納することと、
メモリから第3のデータセットを削除することと、
メモリに格納された第1のデータセットの第2の層出力、第2のデータセットの第2の層出力、および第3のデータセットの第1の層出力に第4のデータセットを追加することと、
第1のニューラルネットワーク層を使用して、第4のデータセットの第1の層出力を生成するために、メモリからの第4のデータセットを処理することと、
メモリに格納された第3のデータセットの第1の層出力、第1のデータセットの第2の層出力、および第2のデータセットの第2の層出力に第4のデータセットの第1の層出力を追加することと、
メモリから第4のデータセットを削除することと、
第2のニューラルネットワーク層を使用して、それぞれ、第3のデータセットの第2の層出力および第4のデータセットの第2の層出力を生成するために、第3のデータセットの第1の層出力および第4のデータセットの第1の層出力を処理することと、
メモリに格納された第1のデータセットの第2の層出力および第2のデータセットの第2の層出力に、第3のデータセットの第2の層出力および第4のデータセットの第2の層出力を追加することと、
第3のニューラルネットワーク層を使用して、それぞれ、第1のデータセットの第3の層出力、第2のデータセットの第3の層出力、第3のデータセットの第3の層出力、および第4のデータセットの第3の層出力を生成するために、メモリからの第1のデータセットの第2の層出力、第2のデータセットの第2の層出力、第3のデータセットの第2の層出力、および第4のデータセットの第2の層出力を処理することと、
第1のデータセットの第3の層出力、第2のデータセットの第3の層出力、第3のデータセットの第3の層出力、および第4のデータセットの第3の層出力をメモリに格納することと
を含む、方法。
2.第1のデータセットの第2の層出力および第2のデータセットの第2の層出力が、メモリに格納された第1のデータセットの第1の層出力を少なくとも上書きすることによってメモリに格納される、節1の方法。
3.第4のデータセット、第4のデータセットの第1の層出力、第3のデータセットの第1の層出力、第1のデータセットの第2の層出力、および第2のデータセットの第2の層出力を同時にを格納するためのスペースを提供するようにメモリを制御することをさらに含む、任意の前節の方法。
4.第1のデータセットの第1の層出力のデータサイズが、第1のデータセットの第2の層出力のデータサイズよりも大きく、第1のデータセットの第2の層出力のデータサイズが、第1のデータセットの第3の層出力のデータサイズよりも大きい、任意の前節の方法。
5.データを処理する方法であって、
ニューラルネットワークの第1の層を実装するように第1の構成内の計算エンジンを設定することと、
第1のコンテキストの第1の層出力を生成するために、第1の構成内の計算エンジンを使用して第1のコンテキストに関連する第1のデータを処理することと、
ニューラルネットワークの第2の層を実装するように第2の構成内の計算エンジンを設定することと、
第1のコンテキストの第2の層出力を生成するために、第2の構成内の計算エンジンを使用して第1のコンテキストの第1のデータを処理することと、
第2の構成から第1の構成に戻るように計算エンジンを切り替えることと、
第2のコンテキストの第1の層出力を生成するために、第1の構成内の計算エンジンを使用して第2のコンテキストに関連する第2のデータを処理することと、
ニューラルネットワークの第2の層を実装するように第2の構成に戻るように計算エンジンを設定することと、
第2のコンテキストの第2の層出力を生成するために、第2の構成内の第2のコンテキストの第1の層出力を処理することと、
ニューラルネットワークの第3の層を実装するように第3の構成内の計算エンジンを設定することと、
第1のコンテキストの第3の層出力および第2のコンテキストの第3の層出力を生成するために、第3の構成内の計算エンジンを使用して第1のコンテキストの第2の層出力および第2のコンテキストの第2の層出力を処理することと
を含む、方法。
6.第3のコンテキストの第1の層出力を生成するために、第1の構成内の計算エンジンを使用して第3のコンテキストに関連する第3のデータを処理することと、
それぞれ、第3のコンテキストの第2の層出力および第1のコンテキストの第2の層出力を生成するために、第2の構成内の計算エンジンを使用して第3のコンテキストの第1の層出力および第1のコンテキストの第1の層出力を処理することと
をさらに含む、節5の方法。
7.第1のコンテキストの第1の層出力および第3のコンテキストの第1の層出力をメモリデバイスに格納することと、
入力としてメモリデバイスから第1のコンテキストの第1の層出力を受け取るように計算エンジンの第1の部分を構成することと、
入力としてメモリデバイスから第3のコンテキストの第1の層出力を受け取るように計算エンジンの第2の部分を構成することと、
計算エンジンの第1の部分を使用して、第1のコンテキストの第1の層出力を処理することと、
計算エンジンの第2の部分を使用して、第3のコンテキストの第1の層出力を処理することと
をさらに含む、節6の方法。
8.計算エンジンの第1の部分を使用する第1のコンテキストの第1の層出力の処理、および計算エンジンの第2の部分を使用する第3のコンテキストの第1の層出力の処理が並行して実行される、節7の方法。
9.第4のコンテキストの第1の層出力を生成するために、第1の構成内の計算エンジンを使用して第4のコンテキストに関連する第4のデータを処理することと、
それぞれ、第2のコンテキストの第2の層出力および第4のコンテキストの第2の層出力を生成するために、第2の構成内の計算エンジンを使用して第2のコンテキストの第1の層出力および第4のコンテキストの第1の層出力を処理することと
をさらに含む、節5から8のいずれかの方法。
10.第2のコンテキストの第1の層出力および第4のコンテキストの第1の層出力をメモリデバイスに格納することと、
入力としてメモリデバイスから第2のコンテキストの第1の層出力を受け取るように計算エンジンの第1の部分を構成することと、
入力としてメモリデバイスから第4のコンテキストの第1の層出力を受け取るように計算エンジンの第2の部分を構成することと、
計算エンジンの第1の部分を使用して、第2のコンテキストの第1の層出力を処理することと、
計算エンジンの第2の部分を使用して、第4のコンテキストの第1の層出力を処理することと
をさらに含む、節9の方法。
11.計算エンジンの第1の部分を使用する第2のコンテキストの第1の層出力の処理、および計算エンジンの第2の部分を使用する第4のコンテキストの第1の層出力の処理が実質的に並行して実行される、節10の方法。
12.第1のコンテキストの第2の層出力をメモリデバイスに格納することと、
第1のコンテキストの第2の層出力に加えて、第2のコンテキストに関連する第2のデータをメモリデバイスに格納することと、
第1のコンテキストの第2の層出力および第2のコンテキストに関連する第2のデータに加えて、第2のコンテキストの第1の層出力をメモリデバイスに格納することと
をさらに含む、節5から11のいずれかの方法。
13.メモリデバイスに格納された第2のコンテキストに関連する第2のデータまたは第2のコンテキストの第1の層出力の少なくとも一部を、第2のコンテキストの第2の層出力で上書きすること
をさらに含む、節12の方法。
14.入力としてメモリデバイスから第1のコンテキストの第2の層出力を受け取るように計算エンジンの第3の部分を構成することと、
入力としてメモリデバイスから第2のコンテキストの第2の層出力を受け取るように計算エンジンの第4の部分を構成することと、
計算エンジンの第3の部分を使用して、第1のコンテキストの第2の層出力を処理することと、
計算エンジンの第4の部分を使用して、第2のコンテキストの第2の層出力を処理することと
をさらに含む、節13の方法。
15.計算エンジンの第3の部分を使用する第1のコンテキストの第2の層出力の処理、および計算エンジンの第4の部分を使用する第2のコンテキストの第2の層出力の処理が実質的に並行して実行される、節14の方法。
16.第1のコンテキストの第1の層出力を生成するために、第1の構成内の計算エンジンを使用して第1のコンテキストに関連する第1のデータを処理することが、第1のデータとニューラルネットワークの第1の層に関連付けられた重みのセットとの間で1つまたは複数の畳み込み計算を実行することを含む、節5から15のいずれかの方法。
17.第1のコンテキストの第1の層出力を生成するために、活性化関数エンジンによって1つまたは複数の畳み込み計算の結果を処理すること
をさらに含む、節16の方法
18.状態バッファとして構成されたメモリデバイスと、
メモリデバイスと結合され、処理要素の配列を備える計算エンジンであって、処理要素の配列の各々が加算器および乗算器を備える、計算エンジンと
を備える、集積回路であって、
計算エンジンが、
ニューラルネットワークの第2の層に関連付けられた重みの第1のセットを状態バッファから取得することと、
第1のデータの第2の層出力を生成するために、重みの第1のセットと第1のデータとの間で加算および乗算の第1のセットを実行することと、
第1のデータの第2の層出力が生成された後、ニューラルネットワークの第1の層に関連付けられた重みの第2のセットを状態バッファから取得することと、
第2のデータの第1の層出力を生成するために、重みの第2のセットと第2のデータとの間で加算および乗算の第2のセットを実行することと、
第2のデータの第2の層出力を生成するために、重みの第1のセットと第2のデータの第1の層出力との間で加算および乗算の第3のセットを実行することと、
ニューラルネットワークの第3の層に関連付けられた重みの第3のセットを状態バッファから取得することと、
第1のデータを処理した第1の結果を生成するために、重みの第3のセットと第1のデータの第2の層出力との間で加算および乗算の第4のセットを実行することと、
第2のデータを処理した第2の結果を生成するために、重みの第3のセットと第2のデータの第2の層出力との間で加算および乗算の第5のセットを実行することと
を行うように構成され、
加算および乗算の第4のセットならびに加算および乗算の第5のセットが、処理要素の配列の異なる部分によって実行される、
集積回路。
19.計算エンジンが、
第1のデータの第2の層出力を状態バッファに格納することと、
重みの第3のセットと状態バッファから取得された第1のデータの第2の層出力との間で加算および乗算の第4のセットを実行することと
を行うようにさらに構成される、節18の集積回路。
20.計算エンジンが、加算および乗算の第4のセットならびに加算および乗算の第5のセットを実質的に並行して実行するように構成される、節18または19の集積回路。
21.第1のコンテキストおよび第2のコンテキストについてのニューラルネットワーク計算を実行するためのスケジュールを決定することであって、各コンテキストについてのニューラルネットワーク計算を実行することが、それぞれのコンテキストについての計算タスクのシーケンスを実行することを含み、計算タスクの各シーケンスが、第1のニューラルネットワーク層を使用する第1の計算タスク、第2のニューラルネットワーク層を使用する第2の計算タスク、および第3のニューラルネットワーク層を使用する第3の計算タスクを含み、1つのコンテキストの第3の計算タスクが、1つのコンテキストの第2の計算タスクの出力を処理するように構成され、1つのコンテキストの第2の計算タスクが、1つのコンテキストの第1の計算タスクの出力を処理するように構成され、
スケジュールを決定することが、
第1のコンテキストの第3の計算タスクおよび第2のコンテキストの第3の計算タスクを含む第1の実行バッチを決定することであって、第1の実行バッチが、状態バッファが第1のコンテキストおよび第2のコンテキストの第3の計算タスクの入力データおよび出力データを保持するのに十分な容量を有することに基づいて決定される、決定することを
を含む、決定することと、
状態バッファが、第1のコンテキストおよび第2のコンテキストの第2の計算タスクの入力データおよび出力データを保持するのに十分な容量を有するかどうかを判定することと、
状態バッファが、第1のコンテキストおよび第2のコンテキストの第2の計算タスクの入力データおよび出力データを保持するのに十分な容量をもたないと判定することに応答して、
第1の実行バッチの前に実行されるべき第2の実行バッチおよび第2の実行バッチの前に実行されるべき第3の実行バッチを決定することであって、第2の実行バッチが第1のコンテキストの第2の計算タスクを含み、第3の実行バッチが第2のコンテキストの第2の計算タスクを含み、第2の実行バッチおよび第3の実行バッチが、状態バッファが第2のコンテキストの第2の計算タスクの出力データ、ならびに第1のコンテキストの第2の計算タスクの入力データおよび出力データを保持するのに十分な容量を有することに基づいて決定される、決定することと、
第2の実行バッチの前に実行されるべき第4の実行バッチを決定することであって、第4の実行バッチが第1のコンテキストの第1の計算タスクを含み、第4の実行バッチが、状態バッファが第1のコンテキストの第1の計算タスクの入力データおよび出力データ、ならびに第2のコンテキストの第2の計算タスクの出力データを保持するのに十分な容量を有することに基づいて決定される、決定することと、
第3の実行バッチを実行することと、
第3の実行バッチの後に第4の実行バッチを実行することと、
第4の実行バッチの後に第2の実行バッチを実行することと、
第2の実行バッチの後に第1の実行バッチを実行することと
を含む、方法。
22.状態バッファが、第1のコンテキストおよび第2のコンテキストの第2の計算タスクの入力データおよび出力データに加えて、第1のコンテキストおよび第2のコンテキストの第2の計算タスク用の重みのセットを保持するのに十分な容量を有するかどうかを判定すること
をさらに含み、
第1の実行バッチの前に実行されるべき第2の実行バッチおよび第2の実行バッチの前に実行されるべき第3の実行バッチを決定することが、状態バッファが第1のコンテキストおよび第2のコンテキストの第2の計算タスクの重みのセット、入力データ、および出力データを保持するのに不十分な容量を有することに基づく、
節21の方法。
23.第2の実行バッチに含まれるべき第1の数の第2の計算タスク、および第3の実行バッチに含まれるべき第2の数の第2の計算タスクを最大化することであって、その結果、第1の数の第2の計算タスクの入力データおよび出力データ、ならびに第2の数の第2の計算タスクの出力データの合計データサイズが、第2の実行バッチが実行されるときの状態バッファの容量を下回る、最大化すること
をさらに含む、節21または22の方法。
24.第3の実行バッチの前に実行されるべき第5の実行バッチを決定することであって、第3の実行バッチが第2のコンテキストの第1の計算タスクを含み、第5の実行バッチが、状態バッファが第2のコンテキストの第1の計算タスクの入力データおよび出力データを保持するのに十分な容量を有することに基づいて決定される、決定することと、
第3の実行バッチの前に第5の実行バッチを実行することと
をさらに含む、節21から23のいずれかの方法。
25.実行されるべき計算タスクのセットを決定することであって、計算タスクのセットが、第1の計算タスク、第2の計算タスク、第3の計算タスク、および第4の計算タスクを含み、第3の計算タスクおよび第4の計算タスクが、それぞれ、第1の計算タスクの入力データおよび第2の計算タスクの入力データを生成する、決定することと、
メモリデバイスが第1の計算タスクと第2の計算タスクの両方の入出力データを保持するのに十分な容量を有することに基づいて、第1の計算タスクおよび第2の計算タスクを含む第1の実行バッチを決定することと、
第1の実行バッチの前に実行されるべき少なくとも第3の計算タスクを含む第2の実行バッチを決定することと、
メモリデバイスが第3の計算タスクと第4の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量を有するかどうかに基づいて、第2の実行バッチに第4の計算タスクを含めるべきかどうかを判定することと、
第2の実行バッチを実行することと、
第2の実行バッチの後に第1の実行バッチを実行することと
を含む、方法。
26.第2の実行バッチを決定することが、
メモリデバイスが、第3の計算タスクと第4の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量をもたないが、第3の計算タスクの入力データおよび出力データ、ならびに第4の計算タスクの出力データを保持するのに十分な容量を有すると判断することと、
第3の計算タスクを含む第2の実行バッチを決定することと、
第2の実行バッチの前に実行されるべき第4の計算タスクを含む第3の実行バッチを決定することと
を含み、方法が、
第2の実行バッチの前に第3の実行バッチを実行すること
を含む、節25の方法。
27.計算タスクのセットが、それぞれ、第3の計算タスクの入力データおよび第4の計算タスクの入力データを生成する、第5の計算タスクおよび第6の計算タスクをさらに含み、
方法が、
第5の計算タスクを含む第4の実行バッチを決定することと、
第6の計算タスクを含む第5の実行バッチを決定することと、
第2の実行バッチの前に第4の実行バッチを実行することと、
第3の実行バッチの前に第5の実行バッチを実行することと
をさらに含む、節26の方法。
28.メモリデバイスが第5の計算タスクの出力データ、第6の計算タスクの出力データ、ならびに第4の計算タスクの入力データおよび出力データを格納するのに十分な容量をもたず、メモリデバイスが第4の計算タスクの出力データならびに第5の計算タスクの入力データおよび出力データを格納するのに十分な容量を有すると判断することに基づいて、第3の実行バッチと第2の実行バッチの間で実行されるべき第4の実行バッチを決定すること
をさらに含む、節27の方法。
29.メモリデバイスが第5の計算タスクの出力データ、第6の計算タスクの出力データ、ならびに第4の計算タスクの入力データおよび出力データを格納するのに十分な容量を有すると判断することに基づいて、第3の実行バッチの前に、かつ第2の実行バッチの前に実行されるべき第4の実行バッチを決定すること
をさらに含む、節27または28の方法。
30.第2の実行バッチを決定することが、
メモリデバイスが第3の計算タスクと第4の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量を有すると判断することに基づいて、第3の計算タスクおよび第4の計算タスクを含む第2の実行バッチを決定すること
を含む、節25から29のいずれかの方法。
31.計算タスクのセットが、それぞれ、第3の計算タスクの入力データおよび第4の計算タスクの入力データを生成する、第5の計算タスクおよび第6の計算タスクをさらに含み、
方法が、
メモリデバイスが第5の計算タスクと第6の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量を有するがどうかに基づいて、第3の計算バッチを決定することと
第2の実行バッチの前に第3の実行バッチを実行することと、
をさらに含む、節30の方法。
32.第3の実行バッチを決定することが、
メモリデバイスが、第5の計算タスクと第6の計算タスクの両方の入力データおよび出力データを格納するのに十分な容量をもたないが、第5の計算タスクの入力データおよび出力データ、ならびに第6の計算タスクの出力データを格納するのに十分な容量を有すると判断することと、
第5の計算タスクを含む第3の実行バッチを決定することと、
第3の実行バッチの前に実行されるべき第6の計算タスクを含む第4の実行バッチを決定することと
を含み、方法が、
第4の実行バッチを実行すること
を含む、節31の方法。
33.第3の実行バッチを決定することが、
メモリデバイスが第5の計算タスクと第6の計算タスクの両方の入力データおよび出力データを格納するのに十分な容量を有すると判断することと、
第5の計算タスクおよび第6の計算タスクを含む第3の実行バッチを決定することと
を含む、節31または32の方法。
34.第2の実行バッチを実行することが、第1の計算タスクおよび第2の計算タスクを実質的に並行して実行することを含む、節25から33のいずれかの方法。
35.第1の計算タスクおよび第3の計算タスクが、第1のコンテキストに関連付けられた第1のデータを処理するためのものであり、第2の計算タスクおよび第4の計算タスクが、第2のコンテキストに関連付けられた第2のデータを処理するためのものである、節25から34のいずれかの方法。
36.第3の計算タスクおよび第4の計算タスクが、第1のニューラルネットワーク層のための計算に関連付けられ、第1の計算タスクおよび第2の計算タスクが、第1のニューラルネットワーク層からのデータを処理する第2のニューラルネットワーク層のための計算に関連付けられる、節25から35のいずれかの方法。
37.状態バッファとして構成されたメモリデバイスと、
メモリデバイスと結合された計算エンジンと、
計算エンジンにおいて実行されるべき計算タスクのセットを決定することであって、計算タスクのセットが、第1の計算タスク、第2の計算タスク、第3の計算タスク、および第4の計算タスクを含み、第3の計算タスクおよび第4のタスクが、それぞれ、第1の計算タスクの入力データおよび第2の計算タスクの入力データを生成する、決定することと、
メモリデバイスが第1の計算タスクと第2の計算タスクの両方の入出力データを保持するのに十分な容量を有することに基づいて、第1の計算タスクおよび第2の計算タスクを含む第1の実行バッチを決定することと、
メモリデバイスが第3の計算タスクと第4の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量を有するかどうかに基づいて、第1の実行バッチの前に実行されるべき第2の実行バッチを決定することと、
計算エンジンにおいて第2の実行バッチを実行することと、
第2の実行バッチの実行が完了した後に、計算エンジンにおいて第1の実行バッチを実行することと
を行うように構成されたコントローラと
を備える、集積回路。
38.コントローラが、
メモリデバイスが、第3の計算タスクと第4の計算タスクの両方の入力データおよび出力データを保持するのに十分な容量をもたないが、第3の計算タスクの入力データおよび出力データ、ならびに第4の計算タスクの出力データを保持するのに十分な容量を有すると判断することと、
第2の実行バッチが第3の計算タスクを含むと判断することと、
第2の実行バッチの前に実行されるべき第4の計算タスクを含む第3の実行バッチを決定することと、
第4の計算タスクの入力データを格納するためのメモリデバイスにおける第1のメモリ空間、および第4の計算タスクの出力データを格納するためのメモリデバイスにおける第2のメモリ空間を割り当てることと、
第1のメモリ空間から第4の計算タスクの入力データを読み取り、第4の計算タスクの出力データを第2のメモリ空間に格納するように計算エンジンを制御することにより、計算エンジンにおいて第3の実行バッチを実行することと、
計算エンジンにおける第2の実行バッチの実行中に、第4の計算タスクの出力データをメモリデバイスに格納することと
を行うようにさらに構成される、節37の集積回路。
39.計算タスクのセットが、それぞれ、第3の計算タスクの入力データおよび第4の計算タスクの入力データを生成する、第5の計算タスクおよび第6の計算タスクをさらに含み、
コントローラが、
第5の計算タスクを含む第4の実行バッチを決定することと、
第6の計算タスクを含む第5の実行バッチを決定することと、
第2の実行バッチを実行する前に、計算エンジンにおいて第4の実行バッチを実行することと、
第3の実行バッチを実行する前に、計算エンジンにおいて第5の実行バッチを実行することと
を行うようにさらに構成される、節38の集積回路。
40.第1の計算タスク、第3の計算タスク、および第5の計算タスクが、それぞれ、第1のコンテキストについてのニューラルネットワークモデルの第3のニューラルネットワーク層計算、第2のニューラルネットワーク層計算、および第1のニューラルネットワーク層計算に関連付けられ、
第2の計算タスク、第4の計算タスク、および第6の計算タスクが、それぞれ、第2のコンテキストについてのニューラルネットワークモデルの第3のニューラルネットワーク層計算、第2のニューラルネットワーク層計算、および第1のニューラルネットワーク層計算に関連付けられる、
節39の集積回路。
Claims (15)
- データを処理する方法であって、
ニューラルネットワークの第1の層を実装するように第1の構成内の計算エンジンを設定するステップと、
第1のコンテキストの第1の層出力を生成するために、前記第1の構成内の前記計算エンジンを使用して前記第1のコンテキストに関連する第1のデータを処理するステップと、
前記ニューラルネットワークの第2の層を実装するように第2の構成内の前記計算エンジンを設定するステップと、
前記第1のコンテキストの第2の層出力を生成するために、前記第2の構成内の前記計算エンジンを使用して前記第1のコンテキストの前記第1の層出力を処理するステップと、
前記第2の構成から前記第1の構成に戻るように前記計算エンジンを切り替えるステップと、
第2のコンテキストの第1の層出力を生成するために、前記第1の構成内の前記計算エンジンを使用して前記第2のコンテキストに関連する第2のデータを処理するステップと、
前記ニューラルネットワークの前記第2の層を実装するように前記第2の構成に戻るように前記計算エンジンを設定するステップと、
前記第2のコンテキストの第2の層出力を生成するために、前記第2の構成内の前記第2のコンテキストの前記第1の層出力を処理するステップと、
前記ニューラルネットワークの第3の層を実装するように第3の構成内の前記計算エンジンを設定するステップと、
前記第1のコンテキストの第3の層出力および前記第2のコンテキストの第3の層出力を生成するために、前記第3の構成内の前記計算エンジンを使用して前記第1のコンテキストの前記第2の層出力および前記第2のコンテキストの前記第2の層出力を処理するステップと
を含む、方法。 - 第3のコンテキストの第1の層出力を生成するために、前記第1の構成内の前記計算エンジンを使用して前記第3のコンテキストに関連する第3のデータを処理するステップと、
それぞれ、前記第3のコンテキストの第2の層出力および前記第1のコンテキストの前記第2の層出力を生成するために、前記第2の構成内の前記計算エンジンを使用して前記第3のコンテキストの前記第1の層出力および前記第1のコンテキストの前記第1の層出力を処理するステップと
をさらに含む、請求項1に記載の方法。 - 前記第1のコンテキストの前記第1の層出力および前記第3のコンテキストの前記第1の層出力をメモリデバイスに格納するステップと、
入力として前記メモリデバイスから前記第1のコンテキストの前記第1の層出力を受け取るように前記計算エンジンの第1の部分を構成するステップと、
入力として前記メモリデバイスから前記第3のコンテキストの前記第1の層出力を受け取るように前記計算エンジンの第2の部分を構成するステップと、
前記計算エンジンの前記第1の部分を使用して、前記第1のコンテキストの前記第1の層出力を処理するステップと、
前記計算エンジンの前記第2の部分を使用して、前記第3のコンテキストの前記第1の層出力を処理するステップと
をさらに含む、請求項2に記載の方法。 - 前記計算エンジンの前記第1の部分を使用する前記第1のコンテキストの前記第1の層出力の前記処理、および前記計算エンジンの前記第2の部分を使用する前記第3のコンテキストの前記第1の層出力の前記処理が並行して実行される、請求項3に記載の方法。
- 第4のコンテキストの第1の層出力を生成するために、前記第1の構成内の前記計算エンジンを使用して前記第4のコンテキストに関連する第4のデータを処理するステップと、
それぞれ、前記第2のコンテキストの前記第2の層出力および前記第4のコンテキストの第2の層出力を生成するために、前記第2の構成内の前記計算エンジンを使用して前記第2のコンテキストの前記第1の層出力および前記第4のコンテキストの前記第1の層出力を処理するステップと
をさらに含む、請求項1から4のいずれか1項に記載の方法。 - 前記第2のコンテキストの前記第1の層出力および前記第4のコンテキストの前記第1の層出力をメモリデバイスに格納するステップと、
入力として前記メモリデバイスから前記第2のコンテキストの前記第1の層出力を受け取るように前記計算エンジンの第1の部分を構成するステップと、
入力として前記メモリデバイスから前記第4のコンテキストの前記第1の層出力を受け取るように前記計算エンジンの第2の部分を構成するステップと、
前記計算エンジンの前記第1の部分を使用して、前記第2のコンテキストの前記第1の層出力を処理するステップと、
前記計算エンジンの前記第2の部分を使用して、前記第4のコンテキストの前記第1の層出力を処理するステップと
をさらに含む、請求項5に記載の方法。 - 前記計算エンジンの前記第1の部分を使用する前記第2のコンテキストの前記第1の層出力の前記処理、および前記計算エンジンの前記第2の部分を使用する前記第4のコンテキストの前記第1の層出力の前記処理が実質的に並行して実行される、請求項6に記載の方法。
- 前記第1のコンテキストの前記第2の層出力をメモリデバイスに格納するステップと、
前記第1のコンテキストの前記第2の層出力に加えて、前記第2のコンテキストに関連する前記第2のデータを前記メモリデバイスに格納するステップと、
前記第1のコンテキストの前記第2の層出力および前記第2のコンテキストに関連する前記第2のデータに加えて、前記第2のコンテキストの前記第1の層出力を前記メモリデバイスに格納するステップと
をさらに含む、請求項1から7のいずれか1項に記載の方法。 - 前記メモリデバイスに格納された前記第2のコンテキストに関連する前記第2のデータまたは前記第2のコンテキストの前記第1の層出力の少なくとも一部を、前記第2のコンテキストの前記第2の層出力で上書きするステップ
をさらに含む、請求項8に記載の方法。 - 入力として前記メモリデバイスから前記第1のコンテキストの前記第2の層出力を受け取るように前記計算エンジンの第3の部分を構成するステップと、
入力として前記メモリデバイスから前記第2のコンテキストの前記第2の層出力を受け取るように前記計算エンジンの第4の部分を構成するステップと、
前記計算エンジンの前記第3の部分を使用して、前記第1のコンテキストの前記第2の層出力を処理するステップと、
前記計算エンジンの前記第4の部分を使用して、前記第2のコンテキストの前記第2の層出力を処理するステップと
をさらに含む、請求項9に記載の方法。 - 前記計算エンジンの前記第3の部分を使用する前記第1のコンテキストの前記第2の層出力の前記処理、および前記計算エンジンの前記第4の部分を使用する前記第2のコンテキストの前記第2の層出力の前記処理が実質的に並行して実行される、請求項10に記載の方法。
- 前記第1のコンテキストの前記第1の層出力を生成するために、前記第1の構成内の前記計算エンジンを使用して前記第1のコンテキストに関連する前記第1のデータを処理するステップが、前記第1のデータと、前記ニューラルネットワークの前記第1の層に関連付けられた重みのセットとの間で1つまたは複数の畳み込み計算を実行するステップを含む、請求項1から11のいずれか1項に記載の方法。
- 状態バッファとして構成されたメモリデバイスと、
前記メモリデバイスと結合され、処理要素の配列を備える計算エンジンであって、前記処理要素の前記配列の各々が加算器および乗算器を備える、計算エンジンと
を備える、集積回路であって、
前記計算エンジンが、
ニューラルネットワークの第2の層に関連付けられた重みの第1のセットを前記状態バッファから取得することと、
第1のデータの第2の層出力を生成するために、重みの前記第1のセットと前記第1のデータとの間で加算および乗算の第1のセットを実行することと、
前記第1のデータの前記第2の層出力が生成された後、前記ニューラルネットワークの第1の層に関連付けられた重みの第2のセットを前記状態バッファから取得することと、
第2のデータの第1の層出力を生成するために、重みの前記第2のセットと前記第2のデータとの間で加算および乗算の第2のセットを実行することと、
前記第2のデータの第2の層出力を生成するために、重みの前記第1のセットと前記第2のデータの前記第1の層出力との間で加算および乗算の第3のセットを実行することと、
前記ニューラルネットワークの第3の層に関連付けられた重みの第3のセットを前記状態バッファから取得することと、
前記第1のデータを処理した第1の結果を生成するために、重みの前記第3のセットと前記第1のデータの前記第2の層出力との間で加算および乗算の第4のセットを実行することと、
前記第2のデータを処理した第2の結果を生成するために、重みの前記第3のセットと前記第2のデータの前記第2の層出力との間で加算および乗算の第5のセットを実行することと
を行うように構成され、
加算および乗算の前記第4のセット、ならびに加算および乗算の前記第5のセットが、前記処理要素の前記配列の異なる部分によって実行される、
集積回路。 - 前記計算エンジンが、
前記第1のデータの前記第2の層出力を前記状態バッファに格納することと、
重みの前記第3のセットと、前記状態バッファから取得された前記第1のデータの前記第2の層出力との間で加算および乗算の前記第4のセットを実行することと
を行うようにさらに構成される、請求項13に記載の集積回路。 - 前記計算エンジンが、加算および乗算の前記第4のセットならびに加算および乗算の前記第5のセットを実質的に並行して実行するように構成される、請求項13または14に記載の集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022113941A JP2022137247A (ja) | 2018-03-22 | 2022-07-15 | 複数の入力データセットのための処理 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/933,225 US11461631B2 (en) | 2018-03-22 | 2018-03-22 | Scheduling neural network computations based on memory capacity |
US15/933,201 US11475306B2 (en) | 2018-03-22 | 2018-03-22 | Processing for multiple input data sets |
US15/933,201 | 2018-03-22 | ||
US15/933,225 | 2018-03-22 | ||
PCT/US2019/022973 WO2019183095A1 (en) | 2018-03-22 | 2019-03-19 | Processing for multiple input data sets |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022113941A Division JP2022137247A (ja) | 2018-03-22 | 2022-07-15 | 複数の入力データセットのための処理 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021517310A true JP2021517310A (ja) | 2021-07-15 |
JP7108702B2 JP7108702B2 (ja) | 2022-07-28 |
Family
ID=66001344
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020551487A Active JP7108702B2 (ja) | 2018-03-22 | 2019-03-19 | 複数の入力データセットのための処理 |
JP2022113941A Pending JP2022137247A (ja) | 2018-03-22 | 2022-07-15 | 複数の入力データセットのための処理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022113941A Pending JP2022137247A (ja) | 2018-03-22 | 2022-07-15 | 複数の入力データセットのための処理 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3738081A1 (ja) |
JP (2) | JP7108702B2 (ja) |
CN (1) | CN111886605B (ja) |
WO (1) | WO2019183095A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021520572A (ja) * | 2018-05-04 | 2021-08-19 | アップル インコーポレイテッドApple Inc. | ニューラルネットワークプロセッサにおいてタスクを割り当てるためのシステム及び方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111210017B (zh) * | 2019-12-24 | 2023-09-26 | 北京迈格威科技有限公司 | 确定布局顺序及数据处理的方法、装置、设备及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5087826A (en) * | 1990-12-28 | 1992-02-11 | Intel Corporation | Multi-layer neural network employing multiplexed output neurons |
US7353252B1 (en) * | 2001-05-16 | 2008-04-01 | Sigma Design | System for electronic file collaboration among multiple users using peer-to-peer network topology |
US8213518B1 (en) * | 2006-10-31 | 2012-07-03 | Sony Computer Entertainment Inc. | Multi-threaded streaming data decoding |
EP2572293A4 (en) * | 2010-05-19 | 2013-12-04 | Univ California | NEURONAL TREATMENT UNIT |
JP5605197B2 (ja) * | 2010-12-09 | 2014-10-15 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
US9147154B2 (en) * | 2013-03-13 | 2015-09-29 | Google Inc. | Classifying resources using a deep network |
US9721190B2 (en) * | 2014-12-19 | 2017-08-01 | Google Inc. | Large-scale classification in neural networks using hashing |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
CN106203619B (zh) * | 2015-05-29 | 2022-09-13 | 三星电子株式会社 | 数据优化的神经网络遍历 |
US10417555B2 (en) * | 2015-05-29 | 2019-09-17 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
US10332028B2 (en) * | 2015-08-25 | 2019-06-25 | Qualcomm Incorporated | Method for improving performance of a trained machine learning model |
US10990872B2 (en) * | 2016-03-31 | 2021-04-27 | International Business Machines Corporation | Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US10796220B2 (en) * | 2016-05-24 | 2020-10-06 | Marvell Asia Pte, Ltd. | Systems and methods for vectorized FFT for multi-dimensional convolution operations |
AU2016203619A1 (en) | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
US10089577B2 (en) | 2016-08-05 | 2018-10-02 | Xilinx, Inc. | Binary neural networks on progammable integrated circuits |
US10733505B2 (en) * | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
CN107679620B (zh) * | 2017-04-19 | 2020-05-26 | 赛灵思公司 | 人工神经网络处理装置 |
CN107798382B (zh) * | 2017-11-21 | 2020-09-01 | 南京地平线机器人技术有限公司 | 用于适配卷积神经网络中的特征数据的方法和装置 |
WO2019118363A1 (en) * | 2017-12-12 | 2019-06-20 | Amazon Technologies, Inc. | On-chip computational network |
-
2019
- 2019-03-19 EP EP19715308.3A patent/EP3738081A1/en active Pending
- 2019-03-19 JP JP2020551487A patent/JP7108702B2/ja active Active
- 2019-03-19 WO PCT/US2019/022973 patent/WO2019183095A1/en unknown
- 2019-03-19 CN CN201980020856.6A patent/CN111886605B/zh active Active
-
2022
- 2022-07-15 JP JP2022113941A patent/JP2022137247A/ja active Pending
Non-Patent Citations (1)
Title |
---|
YONGMING SHEN, ET AL.: ""Maximizing CNN Accelerator Efficiency Through Resource Partitioning"", PROCEEDINGS OF 2017 ACM/IEEE 44TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (ISCA), JPN6021050306, 28 June 2017 (2017-06-28), pages 535 - 547, XP033268545, ISSN: 0004665502, DOI: 10.1145/3079856.3080221 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021520572A (ja) * | 2018-05-04 | 2021-08-19 | アップル インコーポレイテッドApple Inc. | ニューラルネットワークプロセッサにおいてタスクを割り当てるためのシステム及び方法 |
JP7098753B2 (ja) | 2018-05-04 | 2022-07-11 | アップル インコーポレイテッド | ニューラルネットワークプロセッサにおいてタスクを割り当てるためのシステム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3738081A1 (en) | 2020-11-18 |
JP2022137247A (ja) | 2022-09-21 |
CN111886605B (zh) | 2024-03-22 |
CN111886605A (zh) | 2020-11-03 |
WO2019183095A1 (en) | 2019-09-26 |
JP7108702B2 (ja) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797853B2 (en) | Processing for multiple input data sets | |
JP6857286B2 (ja) | ニューラルネットワークアレイの性能の改善 | |
US11461631B2 (en) | Scheduling neural network computations based on memory capacity | |
US10943167B1 (en) | Restructuring a multi-dimensional array | |
US11775430B1 (en) | Memory access for multiple circuit components | |
US20190035113A1 (en) | Temporally stable data reconstruction with an external recurrent neural network | |
US20180285254A1 (en) | System And Method Of Memory Access Of Multi-Dimensional Data | |
US11561833B1 (en) | Allocation and placement of resources for network computation | |
CN115456161A (zh) | 一种数据处理方法和数据处理系统 | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
US20190163978A1 (en) | Budget-aware method for detecting activity in video | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
US20210011849A1 (en) | Processor cluster address generation | |
CN111191784A (zh) | 转置的稀疏矩阵乘以稠密矩阵用于神经网络训练 | |
US11275997B1 (en) | Weight loading in an array | |
CN113449859A (zh) | 一种数据处理方法及其装置 | |
US11521007B2 (en) | Accelerator resource utilization by neural networks | |
US20210097396A1 (en) | Neural network training in a distributed system | |
US11221979B1 (en) | Synchronization of DMA transfers for large number of queues | |
CN112789627A (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
US11847507B1 (en) | DMA synchronization using alternating semaphores | |
US11972188B2 (en) | Rail power density aware standard cell placement for integrated circuits | |
CN118014031A (en) | Processing for multiple input data sets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201015 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220318 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220617 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220715 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7108702 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |