IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特開2024-153697ニューラルネットワーク計算を加速するためのハードウェア回路
<>
  • 特開-ニューラルネットワーク計算を加速するためのハードウェア回路 図1
  • 特開-ニューラルネットワーク計算を加速するためのハードウェア回路 図2
  • 特開-ニューラルネットワーク計算を加速するためのハードウェア回路 図3
  • 特開-ニューラルネットワーク計算を加速するためのハードウェア回路 図4
  • 特開-ニューラルネットワーク計算を加速するためのハードウェア回路 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024153697
(43)【公開日】2024-10-29
(54)【発明の名称】ニューラルネットワーク計算を加速するためのハードウェア回路
(51)【国際特許分類】
   G06N 3/063 20230101AFI20241022BHJP
【FI】
G06N3/063
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024114737
(22)【出願日】2024-07-18
(62)【分割の表示】P 2022517255の分割
【原出願日】2019-12-19
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ナラヤナスワミ,ラビ
(72)【発明者】
【氏名】ウ,ドン・ヒョク
(72)【発明者】
【氏名】グプタ,スヨグ
(72)【発明者】
【氏名】ダサリ,ウダイ・クマール
(57)【要約】      (修正有)
【課題】ニューラルネットワークを実現するハードウェア回路のためのコンピュータ可読媒体を含む、方法、システム及び装置を提供する。
【解決手段】コンピューティングシステム100において、ハードウェア回路101は、複数のスーパータイル102を含む。各スーパータイルは、ニューラルネットワーク層への入力及びニューラルネットワーク層の重みを記憶するための統合メモリ106及び複数の計算タイル108を含む。各計算タイルは、計算を実行してニューラルネットワーク層のための出力を生成するために用いられる計算スレッドを実行する。各スーパータイルは、統合メモリ及び各計算タイルに結合される調停論理110を含む。調停論理は、統合メモリに記憶された入力を計算タイルに渡し、統合メモリに記憶された重みを計算タイルに渡し、層の入力及び重みを用いて計算タイルで実行する計算に基づいて層のために生成した出力を統合メモリに渡す。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のニューラルネットワーク層を備えるニューラルネットワークを実現し、計算を実行してニューラルネットワーク層のための出力を生成するよう構成されるハードウェアアクセラレータのための回路であって、
複数のスーパータイルを備え、前記複数のスーパータイルの各スーパータイルは、
前記ニューラルネットワーク層への入力と、前記ニューラルネットワーク層に対する複数の重みとを記憶するよう構成される統合メモリと、
複数の計算タイルとを含み、各計算タイルは、前記計算を実行するために用いられる計算スレッドを実行して前記出力を生成するよう構成され、前記複数のスーパータイルの各スーパータイルはさらに、
前記統合メモリおよび前記複数の計算タイルの各計算タイルに結合される調停論理ユニットを含み、前記調停論理ユニットは、
前記統合メモリに記憶された入力の1つ以上を前記計算タイルの各々に渡し、
前記統合メモリに記憶された重みのそれぞれのセットを前記計算タイルの各々に渡し、
前記入力のうちの1つ以上および前記重みのそれぞれのセットを用いて前記計算タイルの各々において実行される計算に基づいて前記ニューラルネットワーク層のために生成された出力を前記統合メモリに渡すよう構成される、回路。
【請求項2】
各スーパータイルのためのそれぞれのコントローラを備え、前記それぞれのコントローラは、1つ以上の制御信号を生成するよう構成され、前記1つ以上の制御信号は、
前記ニューラルネットワーク層への前記入力の各々を前記統合メモリの対応する位置に記憶するために使用され、前記対応する位置の各々はそれぞれのアドレスによって識別され、前記1つ以上の制御信号はさらに、
前記ニューラルネットワーク層についての前記複数の重みの各重みを前記統合メモリの対応する位置に記憶するために使用され、前記対応する位置の各々はそれぞれのアドレスによって識別され、前記1つ以上の制御信号はさらに、
前記調停論理に、1つ以上の入力を特定の計算タイルの計算セルに渡させ、重みのそれぞれのセットを前記特定の計算タイルに渡させる、請求項1に記載の回路。
【請求項3】
前記コントローラは、
前記特定の計算タイルに対する前記重みのそれぞれのセットを、前記特定の計算タイルにローカルな、前記特定の計算タイルのそれぞれのレジスタファイルに記憶するよう構成される、請求項2に記載の回路。
【請求項4】
前記コントローラは、
スーパータイルの対応する計算タイルに渡される入力のそれぞれのバッチを記憶するために前記統合メモリ内においてアドレスの区分を決定するよう構成され、アドレスの各区分は、前記スーパータイルのそれぞれの計算タイルに割り当てられる、請求項3に記載の回路。
【請求項5】
アドレスの区分内のそれぞれのアドレスは、入力特徴のサンプルを形成する入力のバッチ内の入力に対応し、
前記入力特徴のサンプルは、入力特徴の複数のセットを含み、
前記入力特徴の複数のセットは、画像、または音声データのストリームに対応する、請求項4に記載の回路。
【請求項6】
前記調停論理ユニットは、
アドレスの第1の区分について、前記アドレスの区分内のアドレスによって識別されるメモリ位置から入力の第1のバッチを取得し、
前記入力の第1のバッチを第1の計算タイルのセルに渡すよう構成され、前記第1の計算タイルは、前記統合メモリ内のアドレスの決定された区分に基づいて、前記入力の第1のバッチ内の各入力を受け取るよう割り当てられる、請求項4または5に記載の回路。
【請求項7】
各それぞれのスーパータイルについて、
前記複数の計算タイルの各計算タイルは、前記計算タイルにおいて2つ以上の計算スレッドを並列に実行するよう構成され、
各計算タイルは、計算スレッドを実行して、前記ニューラルネットワーク層への1つ以上の入力と前記ニューラルネットワーク層に対する重みとの間の乗算を実行して、前記ニューラルネットワーク層に対する部分出力を生成する、先行する請求項のいずれか1項に記載の回路。
【請求項8】
各それぞれのスーパータイルについて、
前記複数の計算タイルの各計算タイルは、前記計算タイルにおいて2つ以上の計算スレッドを並列に実行することに応答して、前記計算の一部を実行して前記ニューラルネットワーク層のための前記出力を生成し、
前記計算の前記一部を実行することに応答して、前記ニューラルネットワーク層のための前記出力を生成するために用いられる1つ以上の部分出力を生成するよう構成される、請求項7に記載の回路。
【請求項9】
前記回路は、
スーパータイル内の前記複数の計算タイルの各それぞれの計算タイルについて、
前記計算タイルにおいて2つ以上の計算スレッドを並列に実行し、
前記複数のスーパータイルの各それぞれのスーパータイルについて、
各計算タイルに割り当てられる2つ以上の計算スレッドを並列に実行して前記ニューラルネットワーク層のための前記出力を生成するよう構成される、請求項1または8に記載の回路。
【請求項10】
前記計算スレッドを用いて実行される演算の第1の部分は、第1の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第1のセットに対応し、
前記第1の多次元テンソルは、前記統合メモリに記憶された前記入力に対応するデータ要素を含む入力テンソルである、請求項1または6に記載の回路。
【請求項11】
前記計算スレッドを用いて実行される演算の第2の部分は、前記第1の多次元テンソルとは異なる第2の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第2のセットに対応し、
前記第2の多次元テンソルは、前記統合メモリに記憶された前記複数の重みに対応するデータ要素を含む重みテンソルである、請求項10に記載の回路。
【請求項12】
複数のニューラルネットワーク層を備えるニューラルネットワークを実現するよう構成されるハードウェアアクセラレータのための回路を用いて、前記ニューラルネットワークのニューラルネットワーク層のための出力を生成するよう計算を実行するための方法であって、
複数のスーパータイルのうちのあるスーパータイルにおいて、前記ニューラルネットワーク層への入力と、前記ニューラルネットワーク層に対する複数の重みとを受け取ることと、
前記スーパータイルの統合メモリに、前記ニューラルネットワーク層への前記入力および前記ニューラルネットワーク層に対する前記複数の重みを記憶することと、
前記スーパータイルの調停論理ユニットを用いて、前記統合メモリに記憶された前記入力の1つ以上を、前記スーパータイル内の複数の計算タイルの各計算タイルに渡すことと
を含み、前記調停論理ユニットは、前記統合メモリおよび前記複数の計算タイルの各計算タイルに結合され、前記方法はさらに、
前記スーパータイルの前記調停論理ユニットを用いて、前記統合メモリに記憶された重みのそれぞれのセットを前記計算タイルの各々に渡すことと、
前記スーパータイル内の前記計算タイルの各々において計算スレッドを実行して前記計算を実行して、前記ニューラルネットワーク層のための前記出力を生成することと、
前記計算タイルの各々において前記入力のうちの1つ以上および前記重みのそれぞれのセットを用いて実行される計算に基づいて、前記ニューラルネットワーク層のための前記出力を生成することとを含む、方法。
【請求項13】
前記ニューラルネットワーク層のために生成された前記出力を、前記調停論理ユニットを用いて前記統合メモリに渡すことと、
前記スーパータイルのそれぞれのコントローラを用いて、前記ニューラルネットワーク層のために生成された前記出力を前記回路における別のスーパータイルに渡すこととを含む、請求項12に記載の方法。
【請求項14】
前記スーパータイルの前記それぞれのコントローラによって制御信号を生成することと、
前記制御信号に基づいて、前記ニューラルネットワーク層への前記入力の各々を前記統合メモリの対応する位置に記憶することとを含み、前記対応する位置の各々はそれぞれのアドレスによって識別され、前記方法はさらに、
前記制御信号に基づいて、前記ニューラルネットワーク層についての前記複数の重みの各重みを前記統合メモリの対応する位置に記憶することを含み、前記対応する位置の各々はそれぞれのアドレスによって識別され、前記方法はさらに、
前記制御信号に基づいて、前記調停論理に、1つ以上の入力を特定の計算タイルの計算セルに渡させ、重みのそれぞれのセットを前記特定の計算タイルに渡させることを含む、請求項13に記載の方法。
【請求項15】
前記制御信号に基づいて、前記特定の計算タイルに対する前記重みのそれぞれのセットを、前記特定の計算タイルにローカルな、前記特定の計算タイルのそれぞれのレジスタファイルに記憶することを含む、請求項14に記載の方法。
【請求項16】
前記コントローラが、スーパータイルの対応する計算タイルに渡される入力のそれぞれのバッチを記憶するために前記統合メモリ内においてアドレスの区分を決定することを含み、アドレスの各区分は、前記スーパータイルのそれぞれの計算タイルに割り当てられる、請求項15に記載の方法。
【請求項17】
アドレスの区分内のそれぞれのアドレスは、入力特徴のサンプルを形成する入力のバッチ内の入力に対応し、
前記入力特徴のサンプルは、入力特徴の複数のセットを含み、
前記入力特徴の複数のセットは、画像、または音声データのストリームに対応する、請求項16に記載の方法。
【請求項18】
アドレスの第1の区分について、
前記調停論理ユニットが、前記アドレスの区分内のアドレスによって識別されるメモリ位置から入力の第1のバッチを取得することと、
前記入力の第1のバッチを第1の計算タイルのセルに渡すこととを含み、前記第1の計算タイルは、前記統合メモリ内のアドレスの決定された区分に基づいて、前記入力の第1のバッチ内の各入力を受け取るよう割り当てられる、請求項16または17に記載の方法。
【請求項19】
各それぞれのスーパータイルについて、
前記複数の計算タイルの各計算タイルにおいて2つ以上の計算スレッドを並列に実行することを含み、
各計算タイルは、計算スレッドを実行して、前記ニューラルネットワーク層への1つ以上の入力と前記ニューラルネットワーク層に対する重みとの間の乗算を実行して、前記ニューラルネットワーク層に対する部分出力を生成する、請求項12または18に記載の方法。
【請求項20】
各それぞれのスーパータイルについて、
前記複数の計算タイルの各計算タイルにおいて、前記計算タイルで前記2つ以上の計算スレッドを並列に実行することに応答して、前記計算の一部を実行して前記ニューラルネットワーク層のための前記出力を生成することと、
前記計算の前記一部を実行することに応答して、前記ニューラルネットワーク層のための前記出力を生成するために用いられる1つ以上の部分出力を生成することとを含む、請求項19に記載の方法。
【請求項21】
スーパータイル内の前記複数の計算タイルの各それぞれの計算タイルについて、
前記計算タイルにおいて2つ以上の計算スレッドを並列に実行することと、
前記複数のスーパータイルの各それぞれのスーパータイルについて、
各計算タイルに割り当てられる2つ以上の計算スレッドを並列に実行して前記ニューラルネットワーク層のための前記出力を生成することとを含む、請求項12または20に記載の方法。
【請求項22】
前記計算スレッドを用いて実行される演算の第1の部分は、第1の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第1のセットに対応し、
前記第1の多次元テンソルは、前記統合メモリに記憶された前記入力に対応するデータ要素を含む入力テンソルである、請求項12または21に記載の方法。
【請求項23】
前記計算スレッドを用いて実行される演算の第2の部分は、前記第1の多次元テンソルとは異なる第2の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第2のセットに対応し、
前記第2の多次元テンソルは、前記統合メモリに記憶された前記複数の重みに対応するデータ要素を含む重みテンソルである、請求項22に記載の方法。
【請求項24】
システムオンチップであって、
複数のニューラルネットワーク層を備えるニューラルネットワークを実現し、計算を実行してニューラルネットワーク層のための出力を生成するよう構成されるハードウェアアクセラレータのための回路と、
前記ハードウェアアクセラレータのための前記回路の外部にあるメモリにアクセスするよう構成されるホストコントローラとを備え、前記メモリは、前記ニューラルネットワーク層で処理するためのデータを記憶するよう構成され、前記システムオンチップはさらに、
前記ハードウェアアクセラレータのための前記回路と前記ホストコントローラとの間でデータ通信を交換するよう構成されるホストインターフェイスと、
前記回路内に配置された複数のスーパータイルとを備え、前記複数のスーパータイルの各スーパータイルは、
前記ニューラルネットワーク層への入力と、前記ニューラルネットワーク層に対する複数の重みとを記憶するよう構成される統合メモリを含み、前記入力および前記複数の重みは、前記ホストコントローラによってアクセス可能な前記メモリに記憶された前記データ
に対応し、前記複数のスーパータイルの各スーパータイルはさらに、
複数の計算タイルを含み、各計算タイルは、前記計算を実行するために用いられる計算スレッドを実行して前記出力を生成するよう構成され、前記複数のスーパータイルの各スーパータイルはさらに、
前記統合メモリおよび前記複数の計算タイルの各計算タイルに結合される調停論理ユニットを含み、前記調停論理ユニットは、
前記統合メモリに記憶された入力の1つ以上を前記計算タイルの各々に渡し、
前記統合メモリに記憶された重みのそれぞれのセットを前記計算タイルの各々に渡し、
前記入力のうちの1つ以上および前記重みのそれぞれのセットを用いて前記計算タイルの各々において実行される計算に基づいて前記ニューラルネットワーク層のために生成された出力を前記統合メモリに渡すよう構成される、システムオンチップ。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、概して、ニューラルネットワーク計算を実行するために用いられるハードウェアアクセラレータのための回路に関する。
【背景技術】
【0002】
ニューラルネットワークは、ノードからなる1つ以上の層を用いて、受信された入力に対する出力、例えば、分類を生成する、機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つ以上の隠れ層を含む。各隠れ層の出力は、ネットワーク内の1つ以上の他の層、たとえば、ネットワークの他の隠れ層または出力層への入力として用いられる。ネットワークの層のうちのいくつかは、パラメータのそれぞれのセットの現在値に従って、受け取った入力から出力を生成する。いくつかのニューラルネットワークは、畳み込みニューラルネットワーク(CNN)(たとえば、画像処理に用いられる)または再帰型ニューラルネットワーク(RNN)(例えば、音声および言語処理に用いられる)である。
【0003】
CNNおよびRNNは、畳み込みまたは再帰型ニューラルネットワーク層のそれぞれのセットを含むニューラルネットワークである。ニューラルネットワーク層は、関連付けられたカーネルのセットを有することができ、この関連付けられたカーネルのセットは、パラメータまたは重みに対応してもよく、これらのパラメータまたは重みを用いて、層を通して入力を処理して、ニューラルネットワーク推論を計算するために、層の対応する出力を生成する。カーネルは、重みのテンソル、すなわち、多次元配列として表すことができる。例として、層のシーケンス中のあるニューラルネットワーク層は、層のシーケンス中の別のニューラルネットワーク層によって生成された画像画素データまたは活性化値の入力など、入力のセットを処理することができる。入力のセットまたは活性化値のセットも、テンソルとして表すことができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
概要
本文書は、人工ニューラルネットワークの層の計算など、例示的なニューラルネットワークモデルの計算を加速するよう構成されるハードウェアアクセラレータにおいて用いられ得る改善されたハードウェア回路を説明する。回路アーキテクチャは複数のスーパータイルを含み、各スーパータイルは、スーパータイルの統合メモリから取得されたデータに基づいて複数の計算スレッドを実行するよう構成される。統合メモリは、計算スレッドの各々の計算がスーパータイルにおいて同時に実行され得るように、計算スレッドの各々の間で効率的に共有され得るメモリ構成を提供する。
【0005】
いくつかの実現例では、説明したハードウェア回路および処理技術は、例示的な機械学習作業負荷の推論(またはトレーニング)計算を実行するために用いられる複数の専用プロセッサ(たとえば、ハードウェアアクセラレータ)のための回路を含む、小規模または大規模分散システムなどの例示的なコンピューティングシステムにおいて用いられ得る。本明細書で説明する回路アーキテクチャは、複数の専用プロセッサが様々なタイプの機械学習モデルのためのタスクを実行するための計算を実行する速度および効率を高めるために、複数の専用プロセッサの各々に統合され得る。
【課題を解決するための手段】
【0006】
本明細書で説明する主題の一態様は、複数のニューラルネットワーク層を含むニューラルネットワークを実現し、計算を実行してニューラルネットワーク層のための出力を生成するよう構成されるハードウェアアクセラレータのための回路において実施され得る。本回路は、複数のスーパータイルを備え、複数のスーパータイルの各スーパータイルは、ニューラルネットワーク層への入力と、ニューラルネットワーク層に対する複数の重みとを記憶するよう構成される統合メモリと、複数の計算タイルとを含み、各計算タイルは、計算を実行するために用いられる計算スレッドを実行して出力を生成するよう構成され、複数のスーパータイルの各スーパータイルはさらに、統合メモリおよび複数の計算タイルの各々に結合される調停論理ユニットを含む。調停論理ユニットは、統合メモリに記憶された入力の1つ以上を計算タイルの各々に渡し、統合メモリに記憶された重みのそれぞれのセットを計算タイルの各々に渡し、入力のうちの1つ以上および重みのそれぞれのセットを用いて計算タイルの各々において実行される計算に基づいてニューラルネットワーク層のために生成された出力を統合メモリに渡すよう構成される。
【0007】
これらおよび他の実現例は、各々、以下の特徴のうちの1つ以上を任意選択で含むことができる。例えば、幾つかの実現例において、本回路は、各スーパータイルのためのそれぞれのコントローラを備え、それぞれのコントローラは、1つ以上の制御信号を生成するよう構成され、1つ以上の制御信号は、ニューラルネットワーク層への入力の各々を統合メモリの対応する位置に記憶するために使用され、対応する位置の各々はそれぞれのアドレスによって識別され、1つ以上の制御信号はさらに、ニューラルネットワーク層についての複数の重みの各重みを統合メモリの対応する位置に記憶するために使用され、対応する位置の各々はそれぞれのアドレスによって識別され、1つ以上の制御信号はさらに、調停論理に、1つ以上の入力を特定の計算タイルの計算セルに渡させ、重みのそれぞれのセットを特定の計算タイルに渡させる。
【0008】
いくつかの実現例では、コントローラは、特定の計算タイルに対する重みのそれぞれのセットを、特定の計算タイルにローカルな、特定の計算タイルのそれぞれのレジスタファイルに記憶するよう構成される。いくつかの実現例では、コントローラは、スーパータイルの対応する計算タイルに渡される入力のそれぞれのバッチを記憶するために統合メモリ内においてアドレスの区分を決定するよう構成され、アドレスの各区分は、スーパータイルのそれぞれの計算タイルに割り当てられる。
【0009】
いくつかの実現例では、アドレスの区分内のそれぞれのアドレスは、入力特徴のサンプルを形成する入力のバッチ内の入力に対応し、入力特徴のサンプルは、入力特徴の複数のセットを含み、入力特徴の複数のセットは、画像、または音声データのストリームに対応する。いくつかの実現例では、調停論理ユニットは、アドレスの第1の区分について、アドレスの区分内のアドレスによって識別されるメモリ位置から入力の第1のバッチを取得し、入力の第1のバッチを第1の計算タイルのセルに渡すよう構成され、第1の計算タイルは、統合メモリ内のアドレスの決定された区分に基づいて、入力の第1のバッチ内の各入力を受け取るよう割り当てられる。
【0010】
いくつかの実現例では、各それぞれのスーパータイルについて、 複数の計算タイルの
各計算タイルは、計算タイルにおいて2つ以上の計算スレッドを並列に実行するよう構成され、各計算タイルは、計算スレッドを実行して、ニューラルネットワーク層への1つ以上の入力とニューラルネットワーク層に対する重みとの間の乗算を実行して、ニューラルネットワーク層に対する部分出力を生成する。
【0011】
いくつかの実現例では、各それぞれのスーパータイルについて、複数の計算タイルの各計算タイルは、計算タイルにおいて2つ以上の計算スレッドを並列に実行することに応答して、計算の一部を実行してニューラルネットワーク層のための出力を生成し、計算の一
部を実行することに応答して、ニューラルネットワーク層のための出力を生成するために用いられる1つ以上の部分出力を生成するよう構成される。
【0012】
いくつかの実現例では、本回路は、スーパータイル中の複数の計算タイルの各それぞれの計算タイルについて、計算タイルにおいて2つ以上の計算スレッドを並列に実行するよう構成される。そして、複数のスーパータイルの各それぞれのスーパータイルについて、回路は、各計算タイルに割り当てられる2つ以上の計算スレッドを並列に実行してニューラルネットワーク層のための出力を生成するよう構成される。いくつかの実現例では、計算スレッドを用いて実行される演算の第1の部分は、第1の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第1のセットに対応し、第1の多次元テンソルは、統合メモリに記憶された入力に対応するデータ要素を含む入力テンソルである。
【0013】
いくつかの実現例では、計算スレッドを用いて実行される演算の第2の部分は、第1の多次元テンソルとは異なる第2の多次元テンソルの1つ以上の次元をトラバースするためのテンソル演算の第2のセットに対応し、第2の多次元テンソルは、統合メモリに記憶された複数の重みに対応するデータ要素を含む重みテンソルである。
【0014】
本明細書で説明する主題の一態様は、複数のニューラルネットワーク層を含むニューラルネットワークを実現するよう構成されるハードウェアアクセラレータのための回路を用いて、ニューラルネットワークのニューラルネットワーク層のための出力を生成するよう計算を実行するための方法において実施され得る。本方法は、複数のスーパータイルのうちのあるスーパータイルにおいて、ニューラルネットワーク層への入力と、ニューラルネットワーク層に対する複数の重みとを受け取ることと、スーパータイルの統合メモリに、ニューラルネットワーク層への入力およびニューラルネットワーク層に対する複数の重みを記憶することとを含む。本方法は、スーパータイルの調停論理ユニットを用いて、統合メモリに記憶された入力の1つ以上を、スーパータイル内の複数の計算タイルの各計算タイルに渡すことも含み、調停論理ユニットは、統合メモリおよび複数の計算タイルの各計算タイルに結合され、本方法はさらに、スーパータイルの調停論理ユニットを用いて、統合メモリに記憶された重みのそれぞれのセットを計算タイルの各々に渡すことを含む。本方法は、スーパータイル内の計算タイルの各々において計算スレッドを実行して計算を実行して、ニューラルネットワーク層のための出力を生成することと、計算タイルの各々において入力のうちの1つ以上および重みのそれぞれのセットを用いて実行される計算に基づいて、ニューラルネットワーク層のための出力を生成することとを含む。
【0015】
これらおよび他の実現例はそれぞれ、以下の特徴のうちの1つ以上を任意選択で含むことができる。例えば、いくつかの実現例においては、本方法は、ニューラルネットワーク層のために生成された出力を、調停論理ユニットを用いて統合メモリに渡すことと、スーパータイルのそれぞれのコントローラを用いて、ニューラルネットワーク層のために生成された出力を回路における別のスーパータイルに渡すこととを含む。
【0016】
いくつかの実現例においては、本方法は、スーパータイルのそれぞれのコントローラによって制御信号を生成することと、制御信号に基づいて、ニューラルネットワーク層への入力の各々を統合メモリの対応する位置に記憶することとを含み、対応する位置の各々はそれぞれのアドレスによって識別され、本方法はさらに、制御信号に基づいて、ニューラルネットワーク層についての複数の重みの各重みを統合メモリの対応する位置に記憶することを含み、対応する位置の各々はそれぞれのアドレスによって識別され、本方法はさらに、制御信号に基づいて、調停論理に、1つ以上の入力を特定の計算タイルの計算セルに渡させ、重みのそれぞれのセットを特定の計算タイルに渡させることを含む。
【0017】
いくつかの実現例では、本方法は、各それぞれのスーパータイルについて、複数の計算
タイルの各計算タイルにおいて2つ以上の計算スレッドの各計算スレッドを並列に実行することを含み、各計算タイルは、計算スレッドを実行して、ニューラルネットワーク層への1つ以上の入力とニューラルネットワーク層に対する重みとの間の乗算を実行して、ニューラルネットワーク層に対する部分出力を生成する。
【0018】
本明細書で説明する主題の1つの態様は、システムオンチップ(SoC)において具現化され得る。SoCは、複数のニューラルネットワーク層を備えるニューラルネットワークを実現し、計算を実行してニューラルネットワーク層のための出力を生成するよう構成されるハードウェアアクセラレータのための回路と、ハードウェアアクセラレータのための回路の外部にあるメモリにアクセスするよう構成されるホストコントローラとを備え、メモリは、ニューラルネットワーク層で処理するためのデータを記憶するよう構成され、システムオンチップはさらに、ハードウェアアクセラレータのための回路とホストコントローラとの間でデータ通信を交換するよう構成されるホストインターフェイスを備える。
【0019】
SoCは、回路内に配置された複数のスーパータイルを含む。複数のスーパータイルの各スーパータイルは、ニューラルネットワーク層への入力と、ニューラルネットワーク層に対する複数の重みとを記憶するよう構成される統合メモリを含む。入力および複数の重みは、ホストコントローラによってアクセス可能なメモリに記憶されたデータに対応する。各スーパータイルは複数の計算タイルを含み、各計算タイルは、計算を実行するために用いられる計算スレッドを実行して出力を生成するよう構成される。複数のスーパータイルの各スーパータイルは、統合メモリおよび複数の計算タイルの各計算タイルに結合される調停論理ユニットを含む。
【0020】
調停論理ユニットは、統合メモリに記憶された入力の1つ以上を計算タイルの各々に渡し、統合メモリに記憶された重みのそれぞれのセットを計算タイルの各々に渡し、入力のうちの1つ以上および重みのそれぞれのセットを用いて計算タイルの各々において実行される計算に基づいてニューラルネットワーク層のために生成された出力を統合メモリに渡すよう構成される。
【0021】
この局面および他の局面の他の実現例は、コンピュータ記憶装置上でエンコードされる、方法のアクションを実行するよう構成される、対応のシステム、装置およびコンピュータプログラムを含む。1つ以上のコンピュータのシステムは、システムにインストールされ、動作でシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せによってそのように構成することができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されたとき、装置にアクションを実行させる命令を有することによって、そのように構成することができる。
【発明の効果】
【0022】
この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の実施の形態において実現することができる。本明細書で説明される回路アーキテクチャおよびデータ処理技術は、畳み込みまたは再帰型ニューラルネットワーク等のニューラルネットワークの層を通して入力のセットを処理するために必要とされる処理時間を削減するように、例示的分散システムに統合されることができる。
【0023】
回路アーキテクチャおよびデータ処理技術は、ニューラルネットワーク計算を実行するための先行技術の回路設計と比較して、計算がタイルにわたってどのように並列化されるかを最適化するためのアプローチの異なる組み合わせを提供する。例えば、説明される技術は、活性化がフィルタの異なる次元にわたって再使用され、パラメータが複数の活性化にわたってバッチで再使用されるとき等、計算間でデータの有意な再使用を伴う使用事例のために、どのように計算がタイルにわたって並列化されるかを最適化することを可能に
する。
【0024】
本技術は、スーパータイル内の複数の同時計算スレッドを可能にする1つ以上のスーパータイルを提供する回路アーキテクチャおよびソフトウェアスタックを実現するために用いられ得る。このアーキテクチャは、パラメータ(重み)および活性化の両方をブロードキャストならびに/またはスライスするかどうかを判断することを含む処理技術を可能にする。この判断は、このアーキテクチャを組み込む例示的なハードウェアアクセラレータの性能を最適化するために、異なるタイプの作業負荷について異なり得る。
【0025】
最適化は、ハードウェア回路の計算ユニットにおける積和セルの利用率に結び付けることができる。利用率は、改善された回路アーキテクチャに基づいてスーパータイルにわたってテンソルの次元を区分すること、たとえば、4つのスーパータイルにわたってテンソルのZ次元にわたって区分すること、または2つのスーパータイルにわたってテンソルのX、Y次元を区分すること、のための異なる手法を参照して評価されてもよい。例えば、本文書で説明される技術を用いて、複数のアプローチが、計算をタイルにわたって並列化するために用いられ得、それにより、回路の積和セルは、先行技術の回路設計におけるセルの利用率より高い閾値利用率(例えば、70%)を達成することができる。
【0026】
この明細書に記載される主題の1つ以上の実現例の詳細は、添付の図面および以下の記載において述べられる。主題の他の潜在的な特徴、局面および利点は、記載、図面および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0027】
図1】ハードウェアアクセラレータのための例示的な回路を含むコンピューティングシステムのブロック図である。
図2】ハードウェアアクセラレータのための回路の例示的な計算タイルアーキテクチャのブロック図である。
図3】例示的テンソル、およびそのテンソルの要素に対応するデータを処理するためのプログラムコードの例を示す。
図4】1つ以上のスーパータイルのための命令セットアーキテクチャの例示的な命令を含むテーブルを示す。
図5】ニューラルネットワーク計算を加速するための例示的なプロセスを示すフロー図である。
【発明を実施するための形態】
【0028】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
本明細書は、改良されたハードウェア回路、および改良されたハードウェア回路のアーキテクチャを用いて実現され得るデータ処理技術を説明する。ハードウェア回路は、ニューラルネットワークプロセッサ、特定用途向け集積回路、またはハードウェアアクセラレータなどの専用プロセッサであり得る。
【0029】
ハードウェア回路は、複数のスーパータイルを含む。各スーパータイルは、ニューラルネットワーク層への入力およびニューラルネットワーク層の重みを記憶するための統合メモリを含む。各スーパータイルは、スーパータイルの統合メモリから取得されたデータと、スーパータイルの各々に結合された通信バスを介してスーパータイルにおいて受信された命令とに基づいて、複数の計算スレッドを実行するよう構成される。いくつかの実現例では、各スーパータイルは複数の計算タイルを含み、各計算タイルは1つ以上の計算スレッドを実行するよう構成される。場合によっては、各計算タイルは、スーパータイルが複数の計算スレッドを並列に実行できるように、1つの計算スレッドを実行するよう構成さ
れる。他の場合には、各計算タイルは、スーパータイルが複数の計算スレッドの各々を並列に実行するように、複数の計算スレッドを実行するように構成することができる。計算スレッドは、計算を実行してニューラルネットワーク層のための出力を生成するために用いられる。
【0030】
各スーパータイルは、統合メモリと、各計算タイルまたはそのスーパータイルにおいて実行されてもよい各計算スレッドとに結合される調停論理ユニットを含む。調停論理ユニットは、統合メモリに記憶された入力および重みを計算タイルに渡すよう構成される。調停論理ユニットは、層のために生成された出力を、その出力を受け取るように割り当てられたスーパータイルの統合メモリに、またはその出力の一部を受信するように割り当てられた1つ以上のスーパータイルの各々に渡すようにも構成される。
【0031】
いくつかの実現例では、ニューラルネットワーク層のための出力は、調停論理ユニットによって計算タイルに渡される、層のための入力および重みを用いて、スーパータイルの計算タイルにおいて実行される計算に基づいて、スーパータイルにおいて生成される。他の実現例では、ニューラルネットワークの1つ以上の層は、複数のスーパータイルにわたって分割されてもよく、たとえば、層は、各スーパータイルが層のための処理の一部を実行するように、複数のスーパータイルにわたって並列化されてもよい。これらの実現例では、ニューラルネットワーク層のための出力は、ニューラルネットワーク層のための出力を共に形成する出力値(たとえば、活性化値のベクトル)のそれぞれのセットとして、複数のスーパータイルにわたって生成される。
【0032】
図1は、ハードウェアアクセラレータのための例示的な回路を含むコンピューティングシステム100のブロック図である。場合によっては、システム100は、RNNまたはCNNなどの人工深層ニューラルネットワーク(DNN)に関連付けられるテンソルまたはニューラルネットワーク計算を加速するための例示的なコンピューティングシステムである。たとえば、システム100は、専用ハードウェア回路などのハードウェア回路101上に例示的な人工ニューラルネットワーク(たとえば、CNN)を実現するよう構成される。いくつかの実現例では、システム100はシステムオンチップである。例えば、システムオンチップは、ハードウェア回路101と、システム100に含まれるものとして本明細書に記載される他のコンポーネントおよびデバイスのいくつか(またはすべて)とを含み得る。
【0033】
ハードウェア回路101は、ニューラルネットワークモデルの実行および/または性能を加速するよう構成されるハードウェアアクセラレータであってもよい。たとえば、ニューラルネットワークモデルの実行は、中央処理装置(CPU)などの例示的な汎用マシン上でのモデルの実行に対して加速されてもよい。同様に、ニューラルネットワークモデルの性能および実行は、そのモデルが、本明細書で説明される技術に関連付けられる改善されたハードウェア特徴およびソフトウェア機能を有さない別のハードウェアアクセラレータ(例えば、グラフィックス処理ユニット(GPU))上で実現されるときと比較して、加速されてもよい。
【0034】
例示的な回路101を含むシステム100は、1つ以上のスーパータイル102を含むことができる。いくつかの実現例では、システム100は、複数のスーパータイル102を含む。図1(および以下で説明する図2)の例では、システム100は、4つのスーパータイル102を含むものとして示されているが、システム100、および本明細書で説明するハードウェア回路101は、より多くのまたはより少ないスーパータイルを含んでもよい。以下でより詳細に説明するように、スーパータイル102は、システム100(またはハードウェア回路101)のディスクリートな自己完結型コンピューティングユニットである。いくつかの実現例では、各スーパータイル102は、多層ニューラルネット
ワークの1つ以上の層によって必要とされる計算(たとえば、ニューラルネットワーク計算)を独立して実行するよう構成される。
【0035】
計算は、機械学習作業負荷のためのデータを処理するため、またはその作業負荷の特定のタスクを実行するために、必要とされてもよい。いくつかの実現例では、1つ以上のニューラルネットワーク層のためにスーパータイル102内で実行される計算プロセスは、入力テンソルのそれぞれの要素に記憶されたデータ値(たとえば、入力または活性化)とパラメータテンソルのそれぞれの要素に記憶されたデータ値(たとえば、重み)との乗算を含んでもよい。例えば、計算は、1つ以上のサイクル上で入力または活性化値に重み値を乗算することと、多くのサイクルにわたって積の累積を実行することとを含むことができる。
【0036】
各スーパータイル102は、概して、それぞれのコントローラ104と、それぞれの統合メモリ106と、それぞれの複数の計算タイル(またはスレッド)108と、それぞれの調停論理ユニット110(「調停論理110」)とを含む。
【0037】
コントローラ104は、スーパータイル102内で生じる動作を制御するための制御信号114を生成するよう構成される。例えば、制御信号114を用いて、a)ニューラルネットワーク層への受信された入力の各々をに統合メモリ106の対応する位置に記憶し、b)ニューラルネットワーク層について受信された重みの各々を、統合メモリ106の対応する位置に記憶することができる。それぞれの入力または重みを記憶する対応するメモリ位置の各々は、それぞれのアドレスによって識別される。
【0038】
コントローラ104は、DMA動作(「DMAOp」)制御105aおよびDMAOpテンソルトラバーサルユニット(TTU)105bを含むダイレクトメモリアクセス(DMA)モジュール105を含む。DMAOp制御105aは、コントローラ104によって用いられ得る制御論理を表し、i)計算のためのデータを統合メモリ106のメモリ位置に書き込むこと/記憶することを管理し、ii)計算のためのデータを統合メモリ106のメモリ位置から読み出すこと/取得することを管理する。例えば、DMAOp制御105aは、スーパータイル102で受け取られた入力テンソルの入力を統合メモリ106のメモリ位置に、およびスーパータイル102で受け取られた重みテンソルの重みを統合メモリ106のメモリ位置に書き込むことを管理するよう、コントローラ104によって実行される。
【0039】
DMAOp制御105aは、DMAOp TTU105bによる実行のためにトラバーサル動作を管理するよう動作可能である。いくつかの実現例では、特定の入力または活性化が書き込まれるかもしくは読み出される統合メモリ106の位置またはアドレスは、通信バス124(以下で説明する)を介して受け取られるインバウンド/アウトバウンドDMAOp命令に基づいて、DMAOp TTU105bによって生成される。例えば、DMAOp命令は、DMAOp制御105aによって処理されて、DMAOp TTU105bによって実行されるトラバーサル動作を管理して、通信バス124を介して受け取られた入力および重みを記憶するために用いられる統合メモリ106の位置またはアドレスを生成し得る。
【0040】
場合によっては、インバウンドDMAOpおよびアウトバウンドDMAOpは、同時に実行されてもよい。例示的なアウトバウンドDMAOpは、スーパータイル102が、生成された層出力の活性化値を、システム100の、隣接するスーパータイル102に提供することを含むことができる。インバウンドおよびアウトバウンドDMAOpの同時実行中、メモリ位置アクセスの任意の必要な同期または調停は、コントローラ104によって管理される同期フラグ制御スキームを通じて管理され得る。いくつかの実現例では、コン
トローラ104は、同期フラグ制御スキームを調停論理11との関連において管理するよう動作可能である。
【0041】
コントローラ104によって生成される制御信号114は、a)読出調停論理110aに、統合メモリ106から取得された1つ以上の入力を特定の計算タイル108nの演算セル152(後述)に渡させ、b)読出調停論理110aに、統合メモリ106から取得された重みのそれぞれのセットを特定の計算タイル108nに渡させるためにも用いられ得る。いくつかの実現例では、調停論理110は、入力バス112を介して計算タイル108nに入力および重みを渡す。
【0042】
図1の例に示されるように、調停論理110は、それぞれの入力バス112およびそれぞれの出力バス113を介してスーパータイル102の各計算タイル108nに結合されてもよい。調停論理110は、統合メモリ106のメモリ位置から入力の複数のバッチを取り出す(または読み出す)よう構成される。調停論理110は、各計算タイル108によって提供される出力または出力活性化の複数のセットを統合メモリ106のメモリ位置に記憶する(または書き込む)ようにも構成される。
【0043】
いくつかの例では、統合メモリ106は、ニューラルネットワーク層において処理されるべき入力、活性化、または利得値を記憶し、ニューラルネットワーク層を介して入力または活性化を処理することに応答してニューラルネットワーク層によって生成された活性化を出力するように動作可能である狭メモリ構造として説明されてもよい。出力活性化の生成および記憶は、より詳細に説明される。各スーパータイル102の統合メモリ106は、任意の順序で多次元配列をトラバースすることを可能にするアドレス指定調停および柔軟性を提供するとともに、シングルサイクル読み出しおよび書き込み動作等の、あるメモリ動作に対するバンク競合も回避する、メモリ階層を採用してもよい。いくつかの実現例では、統合メモリ106は、複数のメモリバンク(たとえば、複数の独立に調停されたメモリバンク)を含み、調停論理110は、統合メモリ106内の各メモリバンクの各メモリ位置への読取りアクセスおよび書込みアクセスを調停するよう構成される。
【0044】
調停論理110によって渡される入力の各バッチは、特定の計算タイル108nに対応することができ、入力のバッチは、特定の計算タイル108nを調停論理110に結合するそれぞれの入力バス112を介して特定の計算タイル108nに提供される。例えば、調停論理110は、入力の第1のバッチの各入力を、調停論理110をスーパータイルにおける第1の計算タイル108nに結合する第1の入力バス112にロードするよう構成される。調停論理110はまた、入力の第2の異なるバッチの各入力を、調停論理110をスーパータイル102における第2の異なる計算タイル108nに結合する第2の異なる入力バス112にロードするよう構成される。代替的に、いくつかの場合において、入力の複数のバッチの各々は、同じ計算タイル108nに対応し、同じ計算タイルにおいてロードされてもよい。
【0045】
調停論理110は、統合メモリ106の論理ユニットまたは構造である。例えば、調停論理110は、共有メモリシステム(例えば、統合メモリ106)において、各メモリサイクルについて、どの制御装置(例えば、DMAOp制御105aまたはTensorOp制御132)が統合メモリ106の共有メモリリソースにアクセスすることを許可されるかを決定するために用いられる専用メモリアービタであり得る。例えば、スーパータイル102において、DMAOp制御105aおよびTensorOp制御132の異なる命令タイプは、メモリアクセスを要求する独立した制御スレッドとして構成されることができ、要求は、調停論理110によって調停される必要がある。
【0046】
本明細書で説明するように、各スーパータイル102は、k個の計算スレッドを実行す
るよう構成され、kは1以上の整数である。いくつかの実現例では、k個の計算スレッドの各々は、それぞれのスーパータイル102において実行されるソフトウェア構成であり、k個の計算スレッドの部分は、スーパータイル102のそれぞれの計算タイル108nによって管理または実行されてもよい。スーパータイル102は、複数のTensorOpパイプライン(またはスレッド)が並列に、すなわち同時に実行される独立した計算ユニットを表すスーパースカラータイルまたはスーパーベクトルタイルであってもよい。たとえば、パラメータまたは変数kNumberComputeThreads(k個の計算スレッド)は、スー
パースカラータイル102またはスーパーベクトルタイル102における並列TensorOpパイプラインの数を表すことができる。スーパースカラータイル102は、スカラー入力値に対して動作する例示的なスーパータイル102であり得、スーパーベクトルタイル102は、入力値のベクトルに対して動作する例示的なスーパータイル102であり得る。
【0047】
スーパータイル102では、各計算スレッドは単一の計算タイルに対応することができ、計算タイルは単一の計算スレッドを実行する。代替的に、各計算タイルは、複数の計算スレッドを実行するように構成することができる。いくつかの実現例では、計算タイル108nのセットは、システム100のそれぞれのスーパータイル102内に物理的または論理的に配置されてもよい。たとえば、システム100(またはハードウェア回路101)において、それぞれのスーパータイル102のための計算タイル108nのセットは、ハードウェアまたはソフトウェアで構成されてもよい。いくつかの実現例では、それぞれのスーパータイル102のための計算タイル108nがソフトウェアで構成されるとき、スーパータイル102は、n個の計算タイル108を実行するよう構成され得、ここでnは1以上の整数である。これらの実現例では、n個の計算タイル108nの各々は、k個の計算スレッドを実行するよう構成され得る。
【0048】
コントローラ104によって生成される制御信号114を用いて、a)書込調停論理110bに、生成された層出力の活性化を、統合メモリ106に記憶するために、統合メモリ106に渡させ、およびb)スーパータイル102に、生成された層出力の活性化値を隣接するスーパータイルに提供させることもできる。
【0049】
システム100は、ホストインターフェイス122を介してスーパータイル102の各々に結合される外部ホスト/コントローラ120を含む。いくつかの実現例では、ホストインターフェイス122は、ホストコントローラ120と、システムオンチップに含まれ得るハードウェアアクセラレータのための回路(たとえば、ハードウェア回路101)との間に結合される。ホストインターフェイス122は、ホストコントローラ120とハードウェアアクセラレータのための回路との間でデータ通信を交換するよう構成される。いくつかの実現例では、ホストコントローラ120は、ハードウェアアクセラレータのための回路の外部にあるメモリ(たとえば、外部メモリ)にアクセスするよう構成される。外部メモリは、回路において実現されるニューラルネットワークにおいて処理するためのデータを記憶するよう構成される。たとえば、データは、ニューラルネットワークの1つ以上の層によって処理されるべき入力および重みであってもよい。
【0050】
ホストインターフェイス122は、外部ホスト/コントローラ120から命令およびデータ値を受信し、命令およびデータ値のそれぞれのセットをスーパータイル102の各々に提供する。いくつかの例では、データ値は、ホストコントローラ120によってアクセス可能な外部メモリから取得され、次いで、ホストインターフェイス122を介してスーパータイル102に渡されてもよい。ホストインターフェイス122は、命令およびデータ値をスーパータイルに渡すために、スーパータイル102の各々によってアクセス可能な例示的な通信バスを用いるように動作可能である。いくつかの実現例では、システム100の命令セットアーキテクチャは、スーパータイル102の各々がそれぞれの単一の命
令を受信することができるよう構成される。単一の命令は、作業負荷または作業負荷内のタスクのセットに関するデータ値(例えば、入力および重み)、特定のデータフィールドならびに動作パラメータを含むことができる。
【0051】
一般に、命令およびデータ値は、通信バス124(例えば、命令バスまたはリングバス)を介してシステム100内の1つ以上のデバイスに提供される。場合によっては、スーパータイル102は、システム100内の2つ以上のスーパータイルを結合する例示的通信バス124を介して、機械学習タスクのためのデータおよび命令を受信する。例えば、通信バス124は、例示的なリングフォーマットでシステム100のスーパータイル102をホストインターフェイス122を介してホストコントローラ120に接続するバスデータ経路を介して結合する通信を提供するよう構成される。リングフォーマットは、図2の例に示されている。
【0052】
いくつかの実現例では、1つ以上の命令が、初期時間にホストインターフェイス122からスーパータイル102中のそれぞれのコントローラ104の各々によって受信され、後でコントローラ104によって実行するためにそれぞれのコントローラ104の例示的な命令メモリに記憶される。データは、入力、活性化、利得値、または各々の組み合わせを含むことができる。いくつかの例では、データは、スーパータイル102において受信され、ニューラルネットワーク層において処理されて、ニューラルネットワーク層のための出力を生成する。そのような例では、層出力を生成するためにニューラルネットワーク層においてデータを処理することは、複数の部分出力(例えば、累積値または活性化前値)を生成することを含む。
【0053】
計算タイル108nの各々は、テンソル演算(「TensorOp」)制御132およびTensorOp TTU134を含むそれぞれのテンソルモジュール130を含む。それぞれのテンソルモジュール130の各々は、コントローラ104のDMAOpモジュール105によって提供される機能と同様または関連する機能を提供することができる。例えば、TensorOp制御132は、i)入力テンソルの特定の要素に割り当てられた入力値を、入力を記憶する統合メモリ106の対応するメモリ位置から読み出す/アクセスするための動作を管理し、ii)計算タイル108nで実行される1つ以上の計算スレッドに応答して出力値が生成された後、出力値(または部分出力)を出力テンソルの特定の要素に関連付けるかまたは割り当てることを管理するよう、コントローラ104または計算タイル108nによって用いられる制御ロジックを表すことができる。
【0054】
TensorOp制御130は、TensorOp TTU134による実行のためのトラバース動作を管理するために、コントローラ104または計算タイル108nの計算スレッドによって実行されてもよい。たとえば、TensorOp TTU134は、N次元または多次元テンソル(たとえば、2D入力テンソル、3D重みテンソル、または4D出力テンソル)の特定の次元に沿って要素のセットにアクセスするための命令を実行するように動作可能である。例示的なN次元テンソルは、N次元の各々にわたって配置された複数の要素を有してもよく、Nは1以上の整数である。
【0055】
TensorOp TTU134は、テンソル(たとえば、2D重みテンソル)の特定の次元に沿った要素のセット中の各要素のアドレスを決定して、計算タイル108n(または計算スレッド)が、そのテンソルのためのデータを記憶する対応するメモリまたはレジスタファイルにアクセスして、その特定の次元に沿った要素の値を表すデータを読み出してもよいようにする。いくつかの実現例では、TensorOp TTU134に関連付けられるプログラムコードは、1つ以上のネスト化されたループを含んでもよく、TensorOp TTU134は、ネスト化されたループの現在のインデックス変数値に従って、ネスト化されたループ内の2次元配列/テンソル変数の要素にアクセスするよう命
令を実行してもよい。ネスト化されたループの現在のインデックス変数値に基づいて、TensorOp TTU134は、2次元配列変数の第1の要素からのオフセットを表すオフセット値を判断することができる。例えば、特定の要素のアドレスは、N次元テンソルの別の要素からオフセットされたアドレスであってもよい。
【0056】
計算タイル108nの各々は、複数のローカルレジスタファイル142を含むワイドメモリ構造140を含む。いくつかの実現例では、コントローラ104は、特定の計算タイル108nのそれぞれのレジスタファイルに特定の計算タイル108nの重みのセットを記憶するよう構成され、特定のレジスタファイル142は、特定の計算タイル108nにローカルである。例えば、コントローラ104は、統合メモリ106から特定の計算タイル108nに層の重みのセットを渡すことに応答して、ローカルレジスタファイル142の特定のメモリ位置に層の重みのセットの個々の重みを記憶するよう構成される。
【0057】
計算タイル108nの各々は、計算タイル108nに渡された入力および重み値に対応するオペランドを用いて、加算および乗算などの算術演算を実行するよう構成されるそれぞれの計算ユニット150を含む。計算ユニット150の各々は、複数の算術セル152を含むことができる。各算術セル152は、入力および重みを用いて算術演算(たとえば、乗算)を実行するよう構成される積和セルであり得る。たとえば、計算ユニット150によって実行される算術演算は、概して、統合メモリ106から取得された入力または活性化にパラメータを乗算して累積値のセットを生成することを含む。計算のためのパラメータは、複数のローカルレジスタファイル142を含む、計算タイル108nのワイドメモリ構造140から取得されてもよい。
【0058】
計算タイル108nの各々は、レジスタアレイ160および非線形ユニット170(「NLU170」)を含む。レジスタアレイ160は、複数の個々のシフトレジスタ162を含む。各シフトレジスタ162はパイプライン化されたシフトレジスタ162であり得る。アレイ160のパイプライン化されたシフトレジスタ162は、層の出力値(たとえば、累積値または部分和)を非線形ユニット170(「NLU170」)にシフトするために用いられる。NLU170は、非線形活性化関数を出力値に適用して、層に対する出力活性化のセットを生成する。NLU170は、書込調停論理110bと対話して、生成された層出力の出力活性化を、統合メモリ106に記憶するために、統合メモリ106に渡す。例えば、出力活性化は、NLU170から書込調停論理110bに出力活性化バス113を介して与えられてもよい。
【0059】
いくつかの実現例では、NLU170は、計算タイル108nからまたはコントローラ104によってNLU170に与えられる制御信号に基づいて、複数の部分和または累積値を最終線形出力(たとえば、値のベクトル)に集約するように動作可能である。
【0060】
図2は、ハードウェアアクセラレータのための回路の例示的な計算タイルアーキテクチャを示すブロック図である。図2の例におけるブロック図は、第1のタイルアーキテクチャ200と、第2の異なるタイルアーキテクチャ210とを含む。第1のタイルアーキテクチャ200は、専用ハードウェア回路の例示的な先行技術回路設計のタイルアーキテクチャを表し、第2のタイルアーキテクチャ210は、本文書で説明される技術に基づく改善されたハードウェア回路の新しいタイルアーキテクチャを表す。
【0061】
新しいタイルアーキテクチャ210は、複数のスーパータイル102を含む。文脈上、個々の計算タイル202および計算スレッド204を用いてニューラルネットワーク計算を実行するいくつかの先行技術のアプローチは、計算がアーキテクチャにわたってどのように並列化され得るかにおいて限定されていた。これらの先行技術の手法とは対照的に、新しいタイルアーキテクチャ210は、複数のスーパータイル102を含み、スーパータ
イル102の計算タイル108n内および複数のスーパータイル102にわたって並列化オプションを可能にする。例えば、各スーパータイル102は、複数の計算スレッド214を実行するよう構成され、複数のスレッドの各々は、スーパータイル102において同時に実行することができる。場合によっては、複数のスレッドの同時実行は、ニューラルネットワークの層で入力を処理するときに2つ以上の計算スレッドの直列実行を必要とし得る先行技術の手法と比較して、処理待ち時間を低減または軽減する。
【0062】
スーパータイル102において実行される複数の計算スレッド214の各々は、スーパータイル102の統合メモリ106から取得されたデータ、スーパータイル102において受け取られた命令、コントローラ104によって生成される制御信号114、または各々の組合せに基づいてもよい。いくつかの実現例では、各スーパータイルにおいて実行される複数の計算スレッドは、1つ以上のテンソル演算に対応する。図2の例では、各スーパータイル102は、4つの別々のテンソル演算を実行するものとして示されているが、各スーパータイル102は、より多いまたはより少ないテンソル演算を実行するように構成することができる。
【0063】
いくつかの実現例では、X、Y次元を有する2D入力テンソルを用いるニューラルネットワーク層に関連付けられる例示的な計算について、外部/ホストコントローラ120は、スーパータイル102のグリッド(たとえば、新しいタイルアーキテクチャ210)にわたって出力X、Yを分配するために入力区分化アルゴリズムを実行するように動作可能である。外部/ホストコントローラ120は、入力活性化、ハロー画素、および出力活性化を記憶するために、各スーパータイル102に対してそれぞれの統合メモリ106の各々に空間を割り当てるように動作可能である。画像処理作業負荷の文脈では、ハロー画素は、2つ以上の計算タイル108n間で共有される入力に対応する。たとえば、ハロー画素に対応する入力のセットは、画像のエッジに対する入力が共有される畳み込みにおいて用いられてもよい。
【0064】
図2の例では、第1の区分化アルゴリズム220は、スーパータイル102によって行われる正味(全体)作業を表現するために用いることができるループネストを含む。区分化アルゴリズム220およびループネストは、スーパータイル102における異なる計算タイル108nのそれぞれのTensorOp TTU134によって実行されるプログラムコードの一部によって表すことができる。たとえば、区分化アルゴリズム220の変形は、例示的な3D入力テンソル(x,y,zin)を2D重み(フィルタ)テンソル(kx,ky)と畳み込んで1D出力テンソル(zout)を生成するために、3D入力テンソルの異なる次元に沿って特定の要素をトラバースするよう、複数の計算タイル108nにわたって各TensorOp TTU134によって実行されてもよい。これは、図3を参照して以下でより詳細に説明される。
【0065】
図3は、例示的なテンソル300(たとえば、3D入力テンソル)と、テンソル300の要素に対応するデータを処理するための第2の区分化アルゴリズム310とを示す。上述の新しいタイルアーキテクチャ210に基づいて、本明細書で説明する改善されたハードウェア回路101は、タスクおよび計算などの作業が、スーパータイル102においてまたは異なるスーパータイル102にわたって実行されるTensorOpスレッド304および306のためのkNumberComputeThreadsの間で分割され得る複数のアプローチお
よび方法を提供する。
【0066】
例えば、計算タイル108nの各々の間で作業を分割するためのアプローチの異なる組み合わせは、a)テンソル300のX、Y次元に対する要素の第1のセットを第1のスーパータイル102の第1の計算タイル108nに割り当てること、およびb)テンソル300のX、Y次元に対する、またはテンソル300の他の次元に対する要素の第2のセッ
トを、第1のスーパータイル102の第2の異なる計算タイル108nに割り当てることを含むことができる。
【0067】
複数のスーパータイル102の各々および各スーパータイル102におけるそれぞれの複数の計算タイル108nの間で作業を分割するために、アプローチの異なる組合せを用いることもできる。例えば、アプローチの1つの組み合わせは、i)テンソル300のX、Y次元の異なるセットの要素を第1のスーパータイル102の少なくとも2つの計算タイル108nに割り当てることと、ii)テンソル300のX、Y次元の異なるセットの要素を第2の異なるスーパータイル102の1つ以上の計算タイル108nに割り当てることとを含み得る。
【0068】
スーパータイル102に割り当てられたX、Y次元の要素が大きい(例えば、計算タイル108n内のSRAMの閾値サイズを超える)場合、複数の計算スレッドは、割り当てられたX、Y次元のさらなる2Dサブ区分に対して作業することができる。いくつかの実現例では、画像処理作業負荷の場合、2Dサブ区分のデータは、スーパータイル102における1つ以上の計算スレッドにわたるハロー画素302の明示的な交換を必要とすることなく処理されることができる。いくつかの実現例では、スーパータイル102内の1つ以上の計算スレッドによって必要とされる入力画素は、最初にスーパータイル102の統合メモリ106中に存在した後、対応する計算スレッドに渡される。
【0069】
上記で説明したように、本明細書で説明する回路アーキテクチャおよびデータ処理技術は、ニューラルネットワーク計算を実行するための先行技術の回路設計と比較して、計算がタイルにわたってどのように並列化されるかを最適化するための異なる手法(または手法の組合せ)を提供する。いくつかの場合において、最適化は、改善された回路アーキテクチャのスーパータイル102にわたって2つ以上のテンソルの次元を区分するための異なるオプションに対する、計算ユニット150における積和セル152の利用率に結び付けることができる。例として、いくつかの一般的なオプションは、入力テンソルのZin次元を4つのスーパータイルにわたって区分すること、または2DテンソルのX、Y次元を2つのスーパータイルにわたって区分することを含むことができる。
【0070】
例えば、複数のアプローチを用いて計算をタイルにわたって並列化して、計算ユニット150の積和セル152が、先行技術の回路設計における関連するセルの利用率よりも高い閾値利用率(例えば、70%)を達成することができるようしてもよい。いくつかの場合において、たとえ先行技術の設計が、計算がその回路アーキテクチャにわたってどのように並列化されてもよいかについて限定された選択肢を有するとしても、複数の異なるアプローチの各々についてのより高い閾値利用率は、先行技術の設計の利用率より高い場合がある。
【0071】
1つ以上のスーパータイル102によって提供されるアプローチは、スーパータイル102に割り当てられる入力テンソルの一部(例えば、いくつかまたはすべて)が、スーパータイル102内の異なる計算タイル108n間でさらに分割され、それによって演算されるか、スーパータイル102に割り当てられるパラメータテンソルの一部(例えば、一部または全部)が、スーパータイル102内の異なる計算タイル108n間でさらに分割され、それによって演算されるか、またはその両方を可能にする。同様に、このアプローチは、あるニューラルネットワーク層における処理が2つ以上のスーパータイル102にわたって分割されることを可能にし、例えば、そのニューラルネットワーク層は、各スーパータイルがそのニューラルネットワーク層のための処理の一部を実施するように、複数のスーパータイル102にわたって並列化されてもよい。たとえば、そのニューラルネットワーク層全体が、スーパータイル102のすべて(またはいくつか)にわたって区分されてもよい。概して、並列化のための複数のオプションが、このアプローチの改善された
回路アーキテクチャを用いて追求され得る。
【0072】
したがって、異なる手法を用いて、作業を割り当て、テンソル300の要素および次元を区分して、スーパータイル102および各スーパータイル102に対する計算スレッドの異なる組み合わせを用いて、N次元テンソル300の異なる次元に沿って特定の要素をトラバースして、テンソル300をN次元重み(フィルタ)テンソルと畳み込んで(または他の演算を実行して)、N次元出力テンソルを生成するようにしてもよい。したがって、単一のスーパータイル102において統合メモリ106およびワイドメモリ構造140からアクセス可能な1つ以上のN次元テンソルは、スーパータイル102内のそれぞれのTensorOp TTU134によって処理されるメモリアドレス値に基づいてトラバースすることができる。
【0073】
システム100は、所与のスーパータイル102に対する複数の計算スレッドの各計算スレッド間のアドレスの区分を決定するよう構成される。アドレス区分は、作業を割り当て、システム100において処理されるテンソルの要素および次元を区分するための特定のアプローチに基づいて決定され得る。いくつかの実現例では、DMAOp制御105aは、ニューラルネットワーク層を通して処理されるべき入力のバッチ中のそれぞれの入力のために区分においてアドレスのマッピングを決定するように動作可能である。例えば、入力のそれぞれのバッチは、入力テンソル300の異なる要素に関連付けられてもよく、アドレスの各区分は、特定の計算タイル108nまたは計算タイル108nで実行される計算スレッドに割り当てられてもよい。
【0074】
図4は、1つ以上のスーパータイルのための命令セットアーキテクチャの例示的な命令を含むテーブル400を示す。
【0075】
上述したように、システム100の命令セットアーキテクチャは、スーパータイル102の各々がそれぞれの単一の命令(または複数の命令)を受け取るように構成することができる。単一または複数の命令の各々は、作業負荷または作業負荷におけるタスクのセットについてのデータ値(たとえば、入力および重み)、特定のデータフィールド、ならびに動作パラメータを含むことができる。したがって、通信バス124を介してスーパータイル102に提供される1つ以上の命令の各々は、複数のパラメータまたはデータフィールドを含むことができる。データフィールドの各々は、特定の動作に関連付けられ得る。場合によっては、命令内のデータフィールドの1つ以上のビットは、特定の演算を単一の計算タイル108または複数の計算タイル108で生じさせる特定の二進値に設定することができる。
【0076】
ここで表400を参照すると、特定の計算タイル108nの計算スレッドにおいて実行される例示的なテンソル演算(「TensorOp」)のためのデータフィールドは、ターゲットスレッドのTensorOpパイプラインを示す(402)。いくつかの実現例では、スーパータイル102において受け取られた命令に基づいて、複数のデータフィールドが、計算タイル108nにおいて実行されるべきそれぞれの計算スレッドのために、計算タイル108nの各々に同時にマルチキャストされてもよい。
【0077】
例示的なDMA動作(「NarrowToWide DMA」)のためのデータフィールドは、統合メモリ106から取り出されたデータを受け取ることになるターゲットスレッドのワイドメモリ構成140を示す(404)。いくつかの実現例では、DMA動作をスーパータイル102において実行して、ニューラルネットワーク層のための重みのそれぞれのセットを表すデータを統合メモリ106(たとえば、狭メモリ)からワイドメモリ構成140のローカルレジスタファイル140に移動してもよい。例えば、重みのセットは、ターゲット計算スレッドのワイドメモリ構成140のローカルレジスタファイル142に移動される。
いくつかの実現例では、ターゲット計算スレッドによって実行される例示的な動作は、TensorOp TTU134がローカルレジスタファイル142から重み値を取得することと、その重み値を、計算タイル108nからセル152に渡すことと、セル152が、その重み値を、ニューラルネットワーク層のための出力を生成するために実行されるニューラルネットワーク計算のためのオペランドとして用いることとを含むことができる。
【0078】
別のDMA動作(「RingBusConsumer DMA」)のためのデータフィールドは、スーパー
タイル102に与えられた命令に含まれた(またはそれとともに含まれた)データの部分を受け取るターゲットスレッドのワイドメモリ構成140を示す(406)。いくつかの実現例では、このDMA動作のためのデータフィールドは、通信バス124(たとえば、リングバス)から取得される命令中の特定のビットマップフィールドに対応してもよい。一般に、ビットマップは、ビットに関して定義される特定の幅を有し得る。
【0079】
たとえば、命令のヘッダ(たとえば、ビットマップ)は、受信側スーパータイル102に、スーパータイル102がヘッダのビットマップフィールドの個々のビットの値に基づいてヘッダに関連付けられるデータの部分をどのように消費する必要があるかを示すことができる。データのその部分を消費するようスーパータイル102が必要とされる具体的な方法は、命令サブタイプ(または命令のサブタイプ)であってもよい。いくつかの実現例では、受信側スーパータイル102のそれぞれのコントローラ104は、命令(たとえば、単一の命令)のヘッダビットマップを検査し、命令のサブタイプが、データの当該部分がスーパータイル102のワイドメモリ構成140によって受け取られるべきであることを示す、と判断する。たとえば、命令サブタイプは、データの当該部分に関連付けられる重みのそれぞれのセットを受け取るべきターゲットスレッドのローカルレジスタファイル142を示してもよい。
【0080】
別の例示的な動作(「LoadCoefficientTables」)のためのデータフィールドは、スー
パータイル102に与えられた命令に含まれた(またはそれとともに含まれた)係数テーブルをロードするためのスーパータイル102のメモリを示す(408)。このロード動作のためのデータフィールドは、上記で説明したRingBusConsumer DMA動作のためのビッ
トマップフィールドとは異なる、命令中の特定のビットマップフィールドに対応してもよい。いくつかの実現例では、係数テーブルは、例示的な機械学習作業負荷のためのニューラルネットワーク計算を実行するために、スーパータイル102のターゲットスレッドの各々によって用いられる。場合によっては、係数テーブルは、各計算スレッドに関連付けられるそれぞれのワイドメモリ構成140にわたって記憶されてもよい。他の場合には、係数テーブルは、k個の計算スレッドの各々によってアクセス可能なスーパータイル102の何らかの他の専用メモリに記憶されてもよい。
【0081】
同期フラグ動作(「SyncFlag」)のためのデータフィールドは、ターゲットスレッドの同期フラグを示す(410)。いくつかの実現例では、命令における例示的な同期フラグ動作のためのデータフィールドは、2つ以上のスーパータイル102にわたって複製される同期フラグに対してのみ設定される。スーパータイル102における同期ウォッチャ動作(「SyncWatcher」)のためのデータフィールドは、a)自身の計算スレッドに対応す
るSyncFlagを待ち、「SyncFlag」複製命令のための命令内の「thread_id」フィールドを
無視するか、またはb)「SyncFlag」複製命令内の「thread_id」フィールドに対応するSyncFlagを待つかどうかを示すブーリアンフィールドである(412)。例示的なタイル
フェンス演算「TileFence」のデータフィールドは、「reset_sync_flag_thread_ids」デ
ータフィールドおよび「wait_idle_thread_ids」データフィールドを含むことができる(414)。これらのデータフィールドは、タイルフェンス演算が接続される対応する計算スレッドにおける同期フラグをリセットするか待つかを指定する。
【0082】
図5は、ニューラルネットワーク計算を加速するための例示的なプロセス500を示すフロー図である。プロセス500は、上述のシステム100を用いて実現または実行することができる。プロセス500の説明は、システム100の上述のコンピューティングリソースを参照してもよい。いくつかの実現例では、プロセス500のステップまたはアクションは、本明細書で説明するデバイスおよびリソースの1つ以上のプロセッサによって実行可能なプログラムされたファームウェアまたはソフトウェア命令によって可能にされる。
【0083】
ここでプロセス500を参照すると、システム100の例示的なスーパータイル102は、ニューラルネットワーク層への入力およびニューラルネットワーク層に対する重みを受信する(502)。例えば、スーパータイル102は、通信バス124を介して入力および重みを受信することができる。入力および重みを受信することに加えて、スーパータイルは、ニューラルネットワーク層のためのニューラルネットワーク計算を実行してニューラルネットワーク層のための出力を生成するための1つ以上の命令を受信することができる。スーパータイルのコントローラは、入力および重みをスーパータイルの統合メモリに記憶する(504)。例えば、コントローラ104は、通信バス124を介して受信された命令に基づいて、入力および重みを統合メモリ106に記憶する。
【0084】
スーパータイルの調停論理ユニットは、統合メモリに記憶された入力の1つ以上を、スーパータイル内の複数の計算タイルの各計算タイルに渡す(506)。調停論理ユニット110は、統合メモリ106および複数の計算タイル108の各計算タイル108nに結合される。いくつかの実現例では、コントローラ104は、スーパータイル102の対応する計算タイル108nに渡されるべき入力のそれぞれのバッチを記憶するために統合メモリ106内のアドレスの区分を決定するよう構成される。例えば、統合メモリ106のアドレスの各区分は、スーパータイルのそれぞれの計算タイル108nに割り当てることができる。
【0085】
調停論理ユニットは、アドレスの第1の区分について、アドレスの区分内のアドレスによって識別されるメモリ位置から入力の第1のバッチを取得し、入力の第1のバッチを第1の計算タイル108nのセル152に渡すよう構成され、第1の計算タイル108nは、統合メモリ内のアドレスの決定された区分に基づいて、入力の第1のバッチ内の各入力を受け取るよう割り当てられる。いくつかの例では、アドレスの区分内のアドレスのセットは、入力特徴のサンプルを形成する入力のバッチに対するものであり得る。入力特徴のサンプルは、入力特徴の複数のセットを含むことができ、入力特徴の複数のセットは、画像、または音声データのストリームに対応する。
【0086】
調停論理ユニットは、統合メモリに記憶された重みのそれぞれのセットを計算タイルの各々に渡す(508)。スーパータイル102は、スーパータイル内の計算タイルの各々において複数の計算スレッドを実行して計算を実行し、ニューラルネットワーク層のための出力を生成する(510)。スーパータイル102は、計算タイルの各々において入力のうちの1つ以上と重みのそれぞれのセットとを用いて実行される計算に基づいて、ニューラルネットワーク層のための出力を生成する(512)。いくつかの実現例では、ニューラルネットワーク層は畳み込みニューラルネットワークの埋め込み層であり、ニューラルネットワーク層によって生成される出力は、埋め込み特徴ベクトルを含む埋め込み出力である。
【0087】
本明細書において記載される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的等価物を含む、デジタル電子回路系において、有形で実施されるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの1つ以上の組合せにおいて実現され得る。本明細書に記載
される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的なプログラム担体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。
【0088】
代替的に、または加えて、プログラム命令は、データ処理装置による実行に対して好適な受信側装置への送信のために情報をエンコードするよう生成される、例えばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝搬される信号上でエンコードすることができる。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組合せであり得る。
【0089】
用語「コンピューティングシステム」は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイスおよびマシンを包含する。当該装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)といった特定目的論理回路を含み得る。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または、それらの1つ以上の組合せを構成するコードといった、当該コンピュータプログラムについて実行環境を作成するコードをさらに含み得る。
【0090】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれ得る)コンピュータプログラムは、コンパイルされた言語もしくは解釈された言語、または宣言型言語もしくは手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチンもしくは他のユニットとして含む、任意の形態で展開することができる。
【0091】
コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、その必要はない。プログラムは、当該プログラムに専用である単一のファイルにおいて、または、複数の連携ファイル(coordinated files)(たとえばコードの1つ以上のモジュー
ル、サブプログラムまたは部分を格納するファイル)において、他のプログラムまたはデータ(たとえばマークアップ言語ドキュメントに格納される1つ以上のスクリプト)を保持するファイルの一部に格納され得る。コンピュータプログラムは、1つのコンピュータ、または1つのサイトに位置し、もしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
【0092】
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を実行するよう1つ以上のプログラマブルプロセッサが1つ以上のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローは、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)といった特殊目的論理回路、またはGPGPU(汎用グラフィック処理装置)によっても実行され得、装置もそれらにより実現され得る。
【0093】
コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受取る。コンピュータのいくつかの要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえ
ば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう作動的に結合されるか、またはその両方を行うことにもなる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシリアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
【0094】
コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス;磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク;光磁気ディスク;およびCD ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、ならびにメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または特殊目的論理回路に組み込まれ得る。
【0095】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、たとえばLCD(液晶ディスプレイ)モニタといったユーザに対して情報を表示するための表示デバイスと、たとえばマウスまたはトラックボールといったユーザがコンピュータに入力を提供可能であるキーボードおよびポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスを用いて、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受信することができる。加えて、コンピュータは、ユーザが用いるデバイスにドキュメントを送信し、ユーザが用いるデバイスからドキュメントを受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。
【0096】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む計算システムにおいて実現され得るか、たとえばアプリケーションサーバといったミドルウェアコンポーネントを含む計算システムにおいて実現され得るか、たとえば本明細書に記載される主題の実現例とユーザが対話することが可能であるグラフィカルユーザーインターフェイスもしくはウェブブラウザを有するクライアントコンピュータといったフロントエンドコンポーネントを含む計算システムにおいて実現され得るか、または1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネントもしくはフロントエンドコンポーネントの任意の組合せの計算システムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、例えばインターネットを含む。
【0097】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは一般に互いから遠隔にあり、典型的には通信ネットワークを通じて対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いに対してクライアント-サーバ関係を有するコンピュータプログラムによって生ずる。
【0098】
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲ま
たは請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。本明細書において別々の実施形態の文脈で記載される特定の特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求されていさえする場合もあるが、請求される組合せからの1つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に向けられ得る。
【0099】
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。特定の状況では、マルチタスク化および並列処理化が有利である場合もある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは一般に単一のソフトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【0100】
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある実現例においては、マルチタスキングおよび並列処理が有利であり得る。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2024-08-16
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のニューラルネットワーク層を備えるニューラルネットワークを実現し、計算を実行してニューラルネットワーク層のための出力を生成するよう構成されるハードウェアアクセラレータのための回路であって、
複数のスーパータイルを備え、前記複数のスーパータイルの各スーパータイルは、
前記ニューラルネットワーク層への入力と、前記ニューラルネットワーク層に対する複数の重みとを記憶するよう構成される統合メモリと、
複数の計算タイルとを含み、各計算タイルは、前記計算を実行するために用いられる計算スレッドを実行して前記出力を生成するよう構成され、前記複数のスーパータイルの各スーパータイルはさらに、
前記統合メモリおよび前記複数の計算タイルの各計算タイルに結合される調停論理ユニットを含み、前記調停論理ユニットは、
前記統合メモリに記憶された入力の1つ以上を前記計算タイルの各々に渡し、
前記統合メモリに記憶された重みのそれぞれのセットを前記計算タイルの各々に渡し、
前記入力のうちの1つ以上および前記重みのそれぞれのセットを用いて前記計算タイルの各々において実行される計算に基づいて前記ニューラルネットワーク層のために生成された出力を前記統合メモリに渡すよう構成される、回路。
【外国語明細書】