(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024102091
(43)【公開日】2024-07-30
(54)【発明の名称】複数の同一のダイを有する単一のチップパッケージを用いてニューラルネットワークタスクを処理するための装置および機構
(51)【国際特許分類】
G06N 3/06 20060101AFI20240723BHJP
【FI】
G06N3/06
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024064174
(22)【出願日】2024-04-11
(62)【分割の表示】P 2022096437の分割
【原出願日】2018-09-21
(31)【優先権主張番号】15/819,753
(32)【優先日】2017-11-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ダサリ,ウダイ・クマール
(72)【発明者】
【氏名】テマム,オリビエ
(72)【発明者】
【氏名】ナラヤナスワミ,ラビ
(72)【発明者】
【氏名】ウ,ドン・ヒョク
(57)【要約】 (修正有)
【課題】ニューラルネットワークモデルを処理する装置及び方法を提供する。
【解決手段】人工知能処理ユニットは、複数の同一の人工知能処理ダイ(AIPD)103a~103fを備え、各AIPDは、少なくとも1つのダイ間入力ブロック109a、109b、221a、221b、225a、225b、229a、229b、233a、233b、237a、237bと、少なくとも1つのダイ間出力ブロック111a、111b、223a、223b、227a、227b、231a、231b、235a、235b、239a、239bと、を含む。各AIPDは、AIPDの少なくとも1つのダイ間出力ブロックからAIPDの少なくとも1つのダイ間入力ブロックまでの1つ又は複数の通信路を介して、複数の同一のAIPDの他のAIPDに通信可能に連結される。各AIPDは、ニューラルネットワークの少なくとも1つの層に対応する。
【選択図】
図2A
【特許請求の範囲】
【請求項1】
人工知能処理ユニットであって、複数の同一の人工知能処理ダイを備え、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つのダイ間入力ブロックと少なくとも1つのダイ間出力ブロックとを含み、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記人工知能処理ダイの前記少なくとも1つのダイ間出力ブロックから前記人工知能処理ダイの前記少なくとも1つのダイ間入力ブロックへの1つまたは複数の通信路を介して、前記複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結され、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも1つの層に対応する、人工知能処理ユニット。
【請求項2】
前記1つまたは複数の通信路は等しい長さである、請求項1に記載の人工知能処理ユニット。
【請求項3】
前記複数の同一の人工知能処理ダイのうち第1の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第2の人工知能処理ダイに隣接して位置しており、前記第2の人工知能処理ダイの向きは前記第1の人工知能処理ダイの向きから180度ずれている、請求項1に記載の人工知能処理ユニット。
【請求項4】
前記複数の同一の人工知能処理ダイのうち第1の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第2の人工知能処理ダイに隣接して位置しており、前記第2の人工知能処理ダイの向きは前記第1の人工知能処理ダイの向きと同じである、請求項1に記載の人工知能処理ユニット。
【請求項5】
前記複数の人工知能処理ダイは順番に配列され、少なくとも1つの人工知能処理ダイは、前記順番において記少なくとも1つの人工知能処理ダイよりも前の位置に配列された他の人工知能処理ダイに、データを入力として送信するように構成されている、請求項1に記載の人工知能処理ユニット。
【請求項6】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、データを受信し、受信された前記データを用いてAI計算を行うように構成されている、請求項1に記載の人工知能処理ユニット。
【請求項7】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、シストリックアレイで構成され、前記シストリックアレイを用いて前記AI計算を行う、請求項6に記載の人工知能処理ユニット。
【請求項8】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ダイ間入力ブロックと異なる少なくとも1つのホストインターフェース入力ブロックと、前記ダイ間出力ブロックと異なる少なくとも1つのホストンターフェース出力ブロックとを含む、請求項1に記載の人工知能処理ユニット。
【請求項9】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ホストインターフェース入力ブロックを介してコプロセシングユニットからデータを受信し、前記ホストインターフェース出力ブロックを介してデータをコプロセシングユニットに送信するように構成されている、請求項8に記載の人工知能処理ユニット。
【請求項10】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つの乗算累算ユニット(MACユニット)を含む、請求項1に記載の人工知能処理ユニット。
【請求項11】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくともメモリを含む、請求項1に記載の人工知能処理ユニット。
【請求項12】
方法であって、
人工知能処理ユニットの第1の人工知能処理ダイにおいて、ニューラルネットワークに関連する第1の集合のデータを受信することを備え、前記第1の人工知能処理ダイは、前記ニューラルネットワークの層に関連付けられており、前記方法はさらに、
前記第1の人工知能処理ダイにおいて、前記ニューラルネットワークに関連する前記第1の集合のデータを用いて、前記第1の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第1の集合のAI計算を行うことと、
前記人工知能処理ユニットの第2の人工知能処理ダイに、前記第1の人工知能処理ダイにおいて行われた前記第1の集合のAI計算の結果データを送信することとを備え、前記第2の人工知能処理ダイは、前記第1の人工知能処理ダイからの前記ニューラルネットワークの異なる層と関連付けられている、方法。
【請求項13】
前記第1の人工知能処理ダイは、前記ニューラルネットワークの前記入力層と関連付けられている、請求項12に記載の方法。
【請求項14】
前記第2の人工知能処理ダイにおいて、前記第1の人工知能処理ダイにおいて行われた計算の前記結果データを用いて、前記第2の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連するAI計算を行うことと、
前記第2の人工知能処理ダイにおいて行われた前記AI計算の結果データを、フィードバックとして前記第1の人工知能処理ダイに送信することとをさらに備える、請求項12に記載の方法。
【請求項15】
前記第1の人工知能処理ダイと前記第2の人工知能処理ダイとは順番に配列されており、前記第1の人工知能処理ダイは、前記順番において前記第2の人工知能処理ダイよりも前の位置に配列されている、請求項14に記載の方法。
【請求項16】
前記第1の人工知能処理ダイにおいて、前記第2の人工知能処理ダイからフィードバックとして受信された結果データと前記ニューラルネットワークに関連する前記第1の集合のデータとを用いて、前記第1の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第2の集合のAI計算を行うことと、
前記第2の集合のAI計算の結果データを前記第2の人工知能処理ダイに送信することとをさらに備える、請求項14に記載の方法。
【請求項17】
前記第2の人工知能処理ダイは、前記ニューラルネットワークの前記出力層と関連付けられている、請求項12に記載の方法。
【請求項18】
前記第2の人工知能処理ダイにおいて、前記第1の人工知能処理ダイにおいて行われた前記計算の前記結果データを用いて、前記ニューラルネットワークの前記出力層に関連するAI計算を行うことと、
前記第2の人工知能処理ダイにおいて行われた前記AI計算の結果データを、前記人工知能処理ユニットに通信可能に連結されたコプロセシングユニットに送信することとをさらに備える、請求項16に記載の方法。
【請求項19】
前記第1の人工知能処理ダイと前記第2の人工知能処理ダイとは、少なくとも1つの乗算累算ユニット(MACユニット)を含む、請求項12に記載の方法。
【請求項20】
前記第1の人工知能処理ダイおよび前記第2の人工知能処理ダイは、メモリを含む、請求項12に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願
本願は、2017年11月21に出願され、「APPARATUS AND MECHANISM FOR PROCESSING NEURAL NETWORK TASKS USING A SINGLE CHIP PACKAGE WITH MULTIPLE IDENTICAL DIES(複数の同一のダイを有する単一のチップパッケージを用いてニューラルネットワークタスクを処理するための装置および機構)」と題された米国特許出願第15/819,753号に基づく優先権および利益を主張するものであり、すべての目的のためにその内容全体が明細書に引用により援用される。
【0002】
背景
人工知能コンピューティングの分野におけるニューラルネットワークの使用は、過去数年にわたって急速に成長を遂げている。より最近では、特定用途向け集積回路(ASIC)などの特殊目的コンピュータの使用が、ニューラルネットワークを処理するために用いられている。しかしながら、ASICの使用は、複数の難題を提起している。これらの難題の一部は、(1)長い設計時間、(2)無視できない経常外エンジニアリング費用である。ニューラルネットワークの人気が高まり、どのニューラルネットワークが使用されるかに関するタスクの範囲が広がるにつれて、長い設計時間と無視できない経常外エンジニアリング費用は悪化する。
【発明の概要】
【0003】
概要
少なくとも1つの態様は、人工知能プロセシングユニットに向けられている。人工知能処理ユニットは、複数の同一の人工知能処理ダイを備える。複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つのダイ間入力ブロックと少なくとも1つのダイ間出力ブロックとを含む。複数の同一の人工知能処理ダイの各人工知能処理ダイは、人工知能処理ダイの少なくとも1つのダイ間出力ブロックから人工知能処理ダイの少なくとも1つのダイ間入力ブロックへの1つまたは複数の通信路を介して、複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結されている。複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも1つの層に対応する。
【0004】
いくつかの実現例では、1つまたは複数の通信路は、等しい長さである。
いくつかの実現例では、複数の同一の人工知能処理ダイのうち第1の人工知能処理ダイは、複数の同一の人工知能処理ダイのうち第2の人工知能処理ダイに隣接して位置しており、第2の人工知能処理ダイの向きは、第1の人工知能処理ダイの向きから180度ずれている。
【0005】
いくつかの実現例では、複数の同一の人工知能処理ダイのうち第1の人工知能処理ダイは、複数の同一の人工知能処理ダイのうち第2の人工知能処理ダイに隣接して位置しており、第2の人工知能処理ダイの向きは、第1の人工知能処理ダイの向きと同じである。
【0006】
いくつかの実現例では、複数の人工知能処理ダイは順番に配列され、少なくとも1つの人工知能処理ダイは、順番において少なくとも1つの人工知能処理ダイよりも前の位置に配列された他の人工知能処理ダイに、データを入力として送信するように構成されている。
【0007】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、データを受信し、受信されたデータを用いてAI計算を行うように構成されている。
【0008】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、シストリックアレイで構成され、シストリックアレイを用いてAI計算を行う。
【0009】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、ダイ間入力ブロックと異なる少なくとも1つのホストインターフェース入力ブロックと、ダイ間出力ブロックと異なる少なくとも1つのホストンターフェース出力ブロックとを含む。
【0010】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つの乗算累算ユニット(MACユニット)を含む。
【0011】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つのメモリを含む。
【0012】
少なくとも1つの態様は、ニューラルネットワークモデルの処理方法に向けられている。方法は、人工処理ユニットの第1の人工知能処理ダイにおいて、ネットワークに関連する第1の集合のデータを受信することを備える。第1の人工知能処理ダイは、ニューラルネットワークの層に関連付けられている。方法は、第1の人工知能処理ダイにおいて、ニューラルネットワークに関連する第1の集合のデータを用いて、第1の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連する第1の集合のAI計算を行うことを備える。方法は、人工知能処理ユニットの第2の人工知能処理ダイに、第1の人工知能処理ダイにおいて行われた第1の集合のAI計算の結果データを送信することを備える。第2の人工知能処理ダイは、第1の人工知能処理ダイからのニューラルネットワークの異なる層と関連付けられている。
【0013】
いくつかの実現例では、第1の人工知能処理ダイは、ニューラルネットワークの入力層と関連付けられている。
【0014】
いくつかの実現例では、方法は、第2の人工知能処理ダイにおいて、第1の人工知能処理ダイにおいて行われた計算の結果データを用いて、第2の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連するAI計算を行うことを備える。方法は、第2の人工知能処理ダイにおいて行われたAI計算の結果データを、フィードバックとして第1の人工知能処理ダイに送信することを備える。
【0015】
いくつかの実現例では、第1の人工知能処理ダイと第2の人工知能処理ダイとは順番に配列されており、第1の人工知能処理ダイは、順番において第2の人工知能処理ダイよりも前の位置に配列されている。
【0016】
いくつかの実現例では、方法は、第1の人工知能処理ダイにおいて、第2の人工知能処理ダイからフィードバックとして受信された結果データとニューラルネットワークに関連する第1の集合のデータとを用いて、第1の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連する第2の集合のAI計算を行うことを備える。方法は、第2の集合のAI計算の結果データを第2の人工知能処理ダイに送信することを備える。
【0017】
いくつかの実現例では、第2の人工知能処理ダイは、ニューラルネットワークの出力層と関連付けられている。
【0018】
いくつかの実現例では、方法は、第2の人工知能処理ダイにおいて、第1の人工知能処
理ダイにおいて行われた計算の結果データを用いて、ニューラルネットワークの出力層に関連するAI計算を行うことを備える。方法は、第2の人工知能処理ダイにおいて行われたAI計算の結果データを、人工知能処理ユニットに通信可能に連結されたコプロセシングユニットに送信することを備える。
【0019】
いくつかの実現例では、第1の人工知能処理ダイと第2の人工知能処理ダイとは、少なくとも1つの乗算累算ユニット(MACユニット)を含む。
【0020】
いくつかの実現例では、第1の人工知能処理ダイおよび第2の人工知能処理ダイは、メモリを含む。
【0021】
これらのおよび他の態様ならびに実現例について、以下で詳細に説明する。前述の情報および以下の詳細な説明は、さまざまな態様および実現例の例示的な例を含んでおり、請求される態様ならびに実現例の性質および特徴を理解するための概要または枠組を提供する。図面は、さまざまな態様ならびに実現例の例示およびさらなる理解を提供し、本明細書に援用されて本明細書の一部を構成する。
【0022】
添付の図面は、一定の比率の縮尺で描かれるよう意図されてはいない。さまざまな図面における同様の参照番号および符号は、同様の要素を示す。理解しやすいように、全ての図面に全ての構成要素を記載しているとは限らない。
【図面の簡単な説明】
【0023】
【
図1A】例示的な実現例に係る、ニューラルネットワーク関連タスクを処理するためのシステムを示す図である。
【
図1B】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの関数論理を示す図である。
【
図1C】例示的な実現例に係る、人工知能処理ダイのシストリックアレイの配置例を示す図である。
【
図2A】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【
図2B】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【
図2C】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【
図2D】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【
図3】例示的な実現例に係る、人工知能処理ダイを構成する方法の例を示すフローチャートである。
【
図4】例示的な実現例に係る、ニューラルネットワークモデルに基づくニューラルネットワークタスクの処理方法の例を示すフローチャートである。
【
図5】例示的な実現例に係る、本明細書で説明および例示されるシステムの構成要素および方法を実現するために用いることが可能なコンピュータシステムのための一般的なアーキテクチャを示すブロック図である。
【発明を実施するための形態】
【0024】
詳細な説明
本開示は、一般に、ニューラルネットワークの作業負荷を処理するための装置、システム、および機構に関する。ニューラルネットワークの効率的な処理は、特注の特定用途向け集積回路(ASIC)を利用する。しかしながら、特注のASICの設計には、長い設計時間、高い経常外エンジニアリング費用などのいくつかの難題があり、難題はこれらに
限定されるわけではないが、ASICが少量で生産されると、これらの難題は悪化する。
【0025】
特注のASICを用いる難題は、ニューラルネットワークタスクを処理するように構成された標準ダイを設計し、複数のそのような同一のダイを単一のASICチップパッケージにおいて相互接続することによって、克服可能である。単一のチップパッケージで相互接続されるダイの数は、ホストコンピューティングデバイスによって処理されているニューラルネットワークの複雑さまたは層の数によって異なる。複数の同一のダイを有するパッケージでは、異なるダイはニューラルネットワークの異なる層と関連付けられているため、ニューラルネットワーク関連タスクの処理効率が増大する。ニューラルネットワークタスクを行う予想頻度に基づいて単一のパッケージにおけるダイの数を増減することによって、複数の製品にわたって標準ダイを用いることが可能になって、長い設計時間の費用と、無視できない経常外エンジニアリング費用とを、さらに効率的に償却できる。
【0026】
図1Aは、例示的な実現例に係る、ニューラルネットワークの計算タスクを行うためのシステム100を示す図である。システム100は、メインプロセシングユニット101と人工知能処理ユニット(AIPU)102とを備える。システム100は、ホストコンピューティングデバイス(図示せず)内に収容されている。ホストコンピューティングデバイスの例としては、サーバおよびモノのインターネット(IoT)デバイスが挙げられるが、これらに限定されるわけではない。AIPU102は、メインプロセシングユニット101のコプロセシングユニットである。メインプロセシングユニット101は、バスなどの通信システムの一部である通信路104a、104bなどの1つまたは複数の通信路を介して、AIPU102に通信可能に連結されている。メインプロセシングユニット101は、コントローラ105とメモリ107とを含む。メモリ107は、メインプロセシングユニット101のサブプロセシングユニットおよびメインプロセシングユニット101に連結されたコプロセシングユニットに関連するコンフィギュレーションデータを記憶する。たとえば、メモリ107は、AIPU102に関連するコンフィギュレーションデータを記憶してもよい。メインプロセシングユニットコントローラ105は、メモリ107に通信可能に連結されており、メモリ107からコンフィギュレーションデータを選択し、メインプロセシングユニット101に連結されたコプロセシングユニットまたはメインプロセシングユニット101のサブプロセシングユニットにコンフィギュレーションデータを送信するように構成されている。メインプロセシングユニットコントローラ105によるコンフィギュレーションデータの選択および送信について、
図3を参照して以下でさらに詳細に説明する。
【0027】
AIPU102は、ニューラルネットワークの計算タスクを処理するように構成されている。AIPU102は、本明細書ではAIPD103と総称される複数の人工知能処理ダイ(AIPD)103a、103b、103c、103d、103e、103fを含む。AIPD103は、互いに同一である。本明細書で説明するように、各AIPD103が同じダイ設計を用いて製造され各AIPD103上のハードウェアユニットの実装が他のAIPD103と同一である場合、AIPD103は他のAIPD103と「同一」である。そのため、本開示では、2つのAIPD103のダイの設計およびハードウェアユニットの実現が同一である場合、2つのAIPD103は、依然として同一とみなされるニューラルネットワークの異なる層を処理するように構成可能である。AIPU102に含まれるAIPD103の数は、ホストコンピューティングデバイスによって処理されるニューラルネットワークモデルの層の数に基づいて異なってもよい。たとえば、ホストコンピューティングデバイスがスマートサーモスタットなどのモノのインターネット(IoT)デバイスである場合、スマートサーモスタットのAIPU102によって処理されているニューラルネットワークモデルの層の数は、データセンターのサーバなどのデータセンターのホストコンピューティングデバイスのAIPU102によって処理されるニューラルネットワークモデルの層の数よりも少なくなると思われる。
【0028】
シンプルなニューラルネットワークモデルを処理するホストコンピューティングデバイスにおいて、単一のAIPD103は、ホストコンピューティングデバイスのニューラルネットワーク関連タスクを効率的に処理可能である。より複雑なニューラルネットワークモデルまたは複数の層を有するニューラルネットワークモデルを処理するホストコンピューティングデバイスでは、複数の同一のAIPD103は、ニューラルネットワーク関連タスクを効率的に処理するために便利な場合がある。したがって、いくつかの実現例では、AIPU102は単一のAIPD103を含む一方で、他の実現例では、AIPU102は複数の同一のAIPD103を含む。
【0029】
図1Aに示すもののように、AIPU102が複数の同一のAIPD103を含む実現例では、各々の同一のAIPD103は、他の同一のAIPD103に連結されている。さらに、各AIPD103は、AIPU102によって処理されているニューラルネットワークの少なくとも1つの層と関連付けられている。AIPD103およびAIPU102内の複数の同一のAIPD103の配置について、
図1B、
図2A、
図2Bを参照して以下でさらに詳細に説明する。
【0030】
次に
図1Bを参照すると、AIPD103の実現例の関数論理が示されている。より分かりやすい例を提供する目的で、AIPD103aの関数論理のみが
図1Bに示されているが、AIPD103の各々は互いに同一であるため、当業者であれば、AIPD103b、103c、103d、103e、103fの関数論理はAIPD103aの関数論理と同一であると理解するであろう。AIPD103aは、ホストインターフェースユニット113、バッファ115、コントローラ117、バッファ119、計算ユニット121、ダイ間入力ブロック109a、109b、およびダイ間出力ブロック111a、111bを含む。
【0031】
ホストインターフェースユニット113は、少なくとも1つの入出力(I/O)ブロック(図示せず)を含む。I/Oブロックは、複数のI/Oピン(図示せず)を含む。ホストインターフェースユニット113のI/OブロックのI/Oピンは、I/Oブロックが送信側ユニットからデータを受信し、送信先ユニットにデータを送信できるように、双方向に構成されている。送信側ユニットおよび送信先ユニットの例としては、メモリユニット、メインプロセシングユニット101のコプロセッサ、またはデータを送受信するように構成された他の集積回路構成要素が挙げられるが、これらに限定されるわけではない。ホストインターフェースユニット113は、ホストインターフェースユニット113のI/Oピンを介してメインプロセシングユニットコントローラ105からデータを受信し、データを、メインプロセシングユニットコントローラ105に、メインプロセシングユニット101に、それ自身に、またはホストインターフェースユニット113のI/Oピンを介して直接メモリ103に、送信するように構成されている。ホストインターフェースユニット113は、メインプロセシングユニットコントローラ105から受信されたデータをバッファ115に格納する。
【0032】
バッファ115は、データを記憶するために、レジスタ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、または他の種類の集積回路メモリなどのメモリを含む。AIPDコントローラ117は、データをバッファ115から取出し、データをバッファ115に格納するように構成されている。AIPDコントローラ117は、メインプロセシングユニットコントローラ105から送信されたデータに部分的に基づいて動作するように構成されている。メインプロセシングユニットコントローラ105から送信されたデータがコンフィギュレーションデータである場合、コンフィギュレーションデータに基づいて、AIPDコントローラ117は、AIPD103aと他のAIPD103との間の通信のために使用されるダイ間入力ブロック
およびダイ間出力ブロックを選択するように構成されている。AIPD103間の通信について、
図2A、
図2B、および
図2Cを参照して以下でさらに詳細に説明される。メインプロセシングユニットコントローラ105から送信されたデータがニューラルネットワークタスクを行う命令である場合、AIPDコントローラ117は、ニューラルネットワークに関連するデータをバッファ119に記憶し、バッファユニット119に記憶された入力データおよび計算ユニット121を用いてニューラルネットワークタスクを行うように構成されている。バッファ119は、データの記憶のために、レジスタ、DRAM、SRAM、または他の種類の集積回路メモリなどのメモリを含む。計算ユニット121は、複数の乗算累算ユニット(MAC、図示せず)、複数の算術論理演算ユニット(ALU)(図示せず)、および複数のシフトレジスタ(図示せず)などを含む。バッファ119のレジスタの一部は、シストリックアレイを確立するように計算ユニット121の複数のALUに連結されている。シストリックアレイによって、入力値は一度読出され、かつ、後の動作において入力として使用される前に結果を記憶することなく、複数の異なる動作のために使用される。そのようなシストリックアレイの配置例を、
図1Cに示す。
【0033】
図1Cでは、レジスタ130はバッファ119に含まれており、レジスタ130からのデータは、ALU132aでの第1の動作のための入力である。ALU132aからの結果はALU132bへの入力であり、ALU132bからの結果は、ALU132cへの入力であり、ALU132cからの結果は、ALU132dへの入力である、などである。そのような配置および構成は、AIPD103を、通常1つのALUからの結果データを、当該結果データを再び用いる前に記憶ユニットに記憶する汎用コンピュータと区別する。また、
図1Cに示す配置は、畳み込み、行列の乗算、プーリング、要素ごとのベクトル演算などの人工知能タスク(本明細書では、「AI計算」と呼ぶ)の実行に関連する計算について、AIPD103を最適化する。さらに、
図1Cに示す配置を実現することによって、AIPD103は、AI計算の実行において電力消費およびサイズをより最適化し、これによって、AIPU102のコストが減少する。
【0034】
図1Bを再び参照すると、計算ユニット121は、入力されたデータと、ニューラルネットワークについて選択され重みメモリユニット(図示せず)から送信された重みとを用いて、AI計算を行う。いくつかの実現例では、計算ユニット121は、アクティベーションユニット123を含む。アクティベーションユニット123は、複数のALUおよび複数のシフトレジスタを含んでもよく、アクティベーション関数および非線形関数をAI計算の結果に適用するように構成され得る。アクティベーションユニット123によって適用されるアクティベーション関数および非線形関数は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現可能である。計算ユニット121は、アクティベーション関数および/または非線形関数をバッファ119に適用した後で生じるデータを、データを記憶するバッファ119に送信する。AIPDコントローラ117は、ダイ間通信のために構成されたダイ間出力ブロックを用いて、バッファ119に記憶された計算ユニット121からの出力データを、AIPD103aに通信可能に連結されたAIPD103に送信する。メインプロセシングユニットコントローラ105から受信されたコンフィギュレーションデータによって、2つのAIPD103間のダイ間通信路が決定される。たとえば、AIPD103aで受信されたコンフィギュレーションデータが、(
図1Bに示すような)ダイ間出力ブロック111aがダイ間通信のために使用されるべきであると示す場合、AIPDコントローラ117は、ダイ間出力ブロック111aを用いて他のAIPD103にデータを送信する。同様に、コンフィギュレーションデータが、(
図1Bに示すような)入力ブロック109bがダイ間通信のために使用されるべきであると示す場合、AIPDコントローラ117は、他のAIPD103からデータを受信するためのダイ間入力ブロックとして入力ブロック109bを選択し、入力ブロック109bで受信されたデータの読出しおよび処理を行う。
【0035】
AIPD103の各ダイ間入力ブロックおよびダイ間出力ブロックは、複数のピンを含む。AIPD103のダイ間出力ブロックのピンは、他のAIPD103のダイ間入力ブロックの対応するピンに対する電気的な相互接続によって接続可能である。たとえば、
図2Aに示すように、AIPD103aの出力ブロック111aのピンは、AIPD103bの入力ブロックに対する電気的な相互接続によって接続されている。異なるAIPD103のダイ間出力ブロックおよびダイ間入力ブロックのピン間の電気的な相互接続は、等しい長さである。
【0036】
1つのAIPD103のダイ間出力ブロックと他のAIPD103のダイ間入力ブロックとの間の接続は、電気的な相互接続によって接続されている一方で、AIPD103の特定のダイ間出力ブロックの選択およびダイ間出力ブロックの特定のピンに対する特定の信号またはデータの送信は、メインプロセシングコントローラ105からAIPD103によって受信されるコンフィギュレーションデータに基づいてプログラムまたは変更可能である。AIPD103の異なる出力ブロックの選択によって、AIPU102は、ニューラルネットワークの異なる層間のフィードバックループを含む異なるニューラルネットワークの異なる必要条件を実現するように構成可能であるが、異なる必要条件は、これらに限定されるわけではない。そのため、同じAIPU102を用いてニューラルネットワークの種々の集合を実行可能であり、その結果、設計時間費用が減少し、経常外エンジニアリング費用が効率的に償却される。AIPD103およびAIPU102の構成について、
図2A、
図2B、および
図3を参照して以下でさらに詳細に説明する。
【0037】
上述したように、複数のAIPD103の各AIPD103が、AIPU102が処理するように構成されているニューラルネットワークの少なくとも1つの層と関連付けられている。メインプロセシングユニット101は、AIPD103とAIPU102などのAIPUとを構成するコンフィギュレーションデータを含む。コンフィギュレーションデータは、AIPUによって処理されるように選択されるニューラルネットワークモデルと関連付けられている。コンフィギュレーションデータは、AIPD103と、AIPUによって処理されているニューラルネットワークの層との関連を特定する。AIPUによって処理されているニューラルネットワークと関連付けられたコンフィギュレーションデータに基づいて、メインプロセシングユニットコントローラ105は、AIPD103をニューラルネットワークの層と関連付ける。いくつかの実現例では、メインプロセシングユニットコントローラ105は、AIPD103とニューラルネットワークの層との関連を、(
図1Aに示す)メモリ107などの記憶デバイスに記憶する。メインプロセシングユニットコントローラ105は、AIPD103と関連付けられたコンフィギュレーションデータを、対応するAIPD103に送信する。AIPD103のニューラルネットワークの層との関連は、AIPU102によって処理されているニューラルネットワークモデルの必要条件に部分的に基づく。たとえば、ニューラルネットワークがニューラルネットワークの2つの層間のフィードバックループを含む場合、これら2つの層と関連付けられたAIPD103は、部分的に、第1のAIPD103のダイ間出力ブロックと第2のAIPD103のダイ間入力ブロックとが電気的に相互接続されているかどうかに基づいて選択可能である。複数のAIPD103のそのような配置の例について、
図2Aを参照して説明される。
【0038】
図2Aは、AIPU102などのAIPU内の複数のAIPD103の配置例を示す図である。
図2Aでは、AIPU102は、6個のAIPD103(AIPD103a、103b、103c、103d、103e、103f)を含み、ニューラルネットワークの最後の層と第1の層との間のフィードバックループを含む6つの層を有するニューラルネットワークを処理している。AIPD103aは、ダイ間入力ブロック109a、109b、ダイ間出力ブロック111a、111b、およびホストインターフェースユニット113を含む。AIPD103bは、ダイ間入力ブロック221a、221b、ダイ間出力
ブロック223a、223b、およびホストインターフェースユニット214を含む。AIPD103cは、ダイ間入力ブロック225a、225b、ダイ間出力ブロック227a、227b、およびホストインターフェースユニット215を含む。AIPD103dは、ダイ間入力ブロック229a、229b、ダイ間出力ブロック231a、231b、およびホストインターフェースユニット216を含む。AIPD103eは、ダイ間入力ブロック233a、233b、ダイ間出力ブロック235a、235b、およびホストインターフェースユニット217を含む。AIPD103fは、ダイ間入力ブロック237a、237b、ダイ間出力ブロック239a、239b、およびホストインターフェースユニット218を含む。
【0039】
各AIPD103は、ニューラルネットワークの特定の層と関連付けられており、上述したように、AIPD103のニューラルネットワークの層との関連は、ニューラルネットワークの当該層に関連する特徴に部分的に基づく。
図2Aのニューラルネットワークは、ニューラルネットワークの最後の層と第1の層との間のフィードバックループを必要とするため、ニューラルネットワークの最後の層と第1の層とは、AIPD103と関連付けられるべきであり、AIPD103では、ニューラルネットワークの最後の層と関連付けられたAIPD103のダイ間出力ブロックが、ニューラルネットワークの第1の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されている。
図2Aに示すように、AIPD103dのダイ間出力ブロック231aはAIPD103aのダイ間入力ブロック109bと電気的に相互接続されているため、そのような配置は、AIPD103aを第1の層と関連付け、AIPD103dを第6の層と関連付けることによって行うことが可能である。したがって、AIPD103b、103c、103f、103eは、ニューラルネットワークの第2、第3、第4、および第5の層とそれぞれ関連付けられている。
図2AにおけるAIPD103の配置の順番は、AIPD103aが順番の第1の位置であり、AIPD103bが第2の位置にあり、AIPD103cが第3の位置にあり、AIPD103fが第4の位置にあり、AIPD103eが第5の位置にあり、AIPD103dが第6の位置にあり、かつ、AIPD103aが第7の位置にある。AIPD103間のニューラルネットワーク関連データの通信の順番は、201a、201b、201c、201d、201e、201fで示すように、103aから始まり、その後103bへ、その後103c、103f、103e、103dへと、そして103aに戻って、ニューラルネットワークの第6の層と第1の層との間のフィードバック層を組み込む。本明細書で説明するように、「ニューラルネットワーク関連データ」は、計算ユニット121の出力などの計算結果データ、パラメータ重みデータ、および他のニューラルネットワークパラメータ関連データを含むが、これらに限定されるわけではない。
【0040】
ニューラルネットワークの出力層と関連付けられたAIPD103のAIPDコントローラは、出力層からの結果データをメインプロセシングユニット101に送信するように構成されている。たとえば、出力層と関連付けられたAIPDが103dである場合、AIPDコントローラ216は、AIPD103dからの結果データをメインプロセシングユニット101に送信するように構成されている。いくつかの実現例では、単一のAIPD103が、メインプロセシングユニット101からのニューラルネットワークの最初の入力データを受信し、ニューラルネットワークの最後の層からの結果データをメインプロセシングユニット101に送信するように構成されている。たとえば、
図2Aでは、AIPD103aがメインプロセシングユニット101からのニューラルネットワークの最初の入力データおよびAIPD103d、ニューラルネットワークの最後の層と関連付けられたAIPDから結果データを受信する場合、AIPD103aのAIPDコントローラ113は、ダイ間入力ブロック111bで受信されたAIPD103dからの結果データをメインプロセシングユニット101に送信するように構成可能である。
【0041】
上述の同じAIPD103を用いて、
図2Aを参照して説明されたニューラルネットワークと異なるニューラルネットワークを処理可能である。たとえば、ニューラルネットワークがニューラルネットワークの第6の層と第3の層との間のフィードバックループを有する場合、第6の層と第3の層とは、AIPD103と関連付けらるべきであり、AIPD103では、ニューラルネットワークの第6の層と関連付けられたAIPD103のダイ間出力ブロックは、ニューラルネットワークの第3の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されている。さらに、ニューラルネットワークの異なる層と関連付けられたAIPD103の各々は、ニューラルネットワークの後の層と関連付けられた他のAIPD103の少なくとも1つのダイ間入力ブロックと電気的に相互接続されている。たとえば、第1の層と関連付けられたAIPD103は、ニューラルネットワークの第2の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第2の層と関連付けられたAIPD103は、ニューラルネットワークの第3の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第3の層と関連付けられたAIPD103は、ニューラルネットワークの第4の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第4の層と関連付けられたAIPD103は、ニューラルネットワークの第5の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、かつ、第5の層と関連付けられたAIPD103は、ニューラルネットワークの第6の層と関連付けられたAIPD103のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきである。そのようなニューラルネットワークの処理は、
図2Bに示すAIPD103の配置を用いて行うことができる。
【0042】
図2Bは、AIPU内のAIPD103の異なる配置例を示す図である。
図2Bでは、AIPU250は、AIPD103a、103b、103c、103d、103e、103fを含む。AIPU250内で、AIPD103aのダイ間出力ブロック111aは、AIPD103bのダイ間入力ブロック221aと電気的に相互接続されており、AIPD103aのダイ間出力ブロック111bは、AIPD103dのダイ間入力ブロック229aと電気的に相互接続されており、AIPD103bのダイ間出力ブロック223bは、AIPD103aのダイ間入力ブロック109bに電気的に相互接続されており、AIPD103bのダイ間出力ブロック223aは、AIPD103cのダイ間入力ブロック225aに電気的に相互接続されており、AIPD103cのダイ間出力ブロック227bは、AIPD103fのダイ間入力ブロック237aに電気的に相互接続されており、AIPD103fのダイ間出力ブロック239aは、AIPD103cのダイ間入力ブロック225bに電気的に接続されており、AIPD103fのダイ間出力ブロック239bは、AIPD103eのダイ間入力ブロック233bに電気的に相互接続されており、AIPD103eのダイ間出力ブロック235aは、AIPD103bのダイ間入力ブロック221bに電気的に相互接続されており、AIPD103eのダイ間出力ブロック235bは、AIPD103dのダイ間入力ブロック229bに電気的に相互接続されており、AIPD103dのダイ間出力ブロック231aは、AIPD103eのダイ間入力ブロック233aに電気的に相互接続されている。
【0043】
図2Bでは、AIPD103fは、ニューラルネットワークの第6の層と関連付けられており、AIPD103eは、ニューラルネットワークの第3の層と関連付けられている。AIPD103a、103d、103b、103cは、ニューラルネットワークの第1の、第2の、第4の、および第5の層とそれぞれ関連付けられている。AIPDコントローラ113は、AIPD103aにおける計算の結果データを、AIPD103d、ニューラルネットワークの第2の層と関連付けられたAIPD103に、AIPD103dのダイ間入力ブロック229aに電気的に相互接続されたAIPD103aのダイ間出力ブ
ロック111bを用いて送信するように構成されている。AIPD103dのAIPDコントローラ216は、AIPD103dからの結果データを、AIPD103e、ニューラルネットワークの第3の層と関連付けられたAIPD103に、AIPD103eのダイ間入力ブロック233aに電気的に相互接続されたダイ間出力ブロック231aを用いて送信するように構成されている。AIPD103eのAIPDコントローラ217は、AIPD103eからの結果データを、AIPD103b、ニューラルネットワークの第4の層に関連付けれられたAIPD103に、AIPD103bのダイ間入力ブロック221bに電気的に相互接続されたAIPD103eのダイ間出力ブロック235aを用いて送信するように構成されている。AIPD103bのAIPDコントローラ214は、AIPD103bからの結果データを、AIPD103c、ニューラルネットワークの第5の層と関連付けられたAIPD103に、AIPD103cのダイ間入力ブロック225aに電気的に相互接続されたダイ間出力ブロック223aを用いて送信するように構成されている。AIPD103cのAIPDコントローラ215は、AIPD103cからの結果データを、AIPD103f、ニューラルネットワークの第6の層と関連付けられたAIPD103に、AIPD103fのダイ間入力ブロック237aに電気的に相互接続されたAIPD103cのダイ間出力ブロック227bを用いて送信するように構成されている。AIPDコントローラ218は、AIPD103fからのフィードバックデータを、AIPD103e、ニューラルネットワークの第3の層と関連付けられたAIPD103に、AIPD103eのダイ間入力ブロック233bに電気的に相互接続されたAIPD103fのダイ間出力ブロック239bを用いて送信するように構成されている。AIPD103fのAIPDコントローラ218はさらに、AIPD103fがニューラルネットワークの出力層と関連付けられている場合、AIPD103fからの結果データをメインプロセシングユニット101に送信するように構成されている。
図2BのAIPD103の配置の順番は、AIPD103aが順番の第1の位置にあり、AIPD103dが第2の位置にあり、AIPD103eが第3の位置にあり、AIPD103bが第4の位置にあり、AIPD103cが第5の位置にあり、AIPD103fが第6の位置にあり、かつ、AIPD103eが第7の位置にある。AIPD103間の
図2Bにおけるニューラルネットワーク関連データの通信の順番は、202a、202b、202c、202d、202e、202fで示されるように、103aから始まり、その後、103d、103e、103b、103c、103fへと、そしてその後、フィードバックデータを103eへと送信する。
【0044】
それゆえ、同じ同一のAIPDを、異なるニューラルネットワーク必要条件を有する異なるニューラルネットワークを処理するために利用可能である。したがって、単一の人工知能処理ダイ(AIPD)の設計を、異なる必要条件を有する異なるニューラルネットワークの処理および実行において利用可能であり、これによって、設計時間に関連する費用が減少し、経常外エンジニアリング費用が効率的に償却される。
【0045】
さらに、AIPUと関連付けられたコンフィギュレーションデータおよび/またはAIPUのAIPDと関連付けられたコンフィギュレーションデータを変更することにより、単一のAIPUを、異なるニューラルネットワークを処理するために用いることができる。たとえば、
図2Bでは、4層を有するニューラルネットワークがAIPU250によって処理される場合、AIPU250と関連付けられたコンフィギュレーションデータおよび/またはAIPU250のAIPD103と関連付けられたコンフィギュレーションデータは、AIPD103aをニューラルネットワークの第1の層と関連付け、AIPD103bをニューラルネットワークの第2の層と関連付け、AIPD103cをニューラルネットワークの第3の層と関連付け、かつ、AIPD103fをニューラルネットワークの第4の層と関連付けるように変更可能である。これらのAIPD103のダイ間出力ブロックとダイ間入力ブロックとの間の電気的な相互接続については上述した。AIPU250とAIPU250のAIPD103とが再構成されると、メインプロセシングユニッ
トコントローラ105は、ニューラルネットワークに関連した入力データをニューラルネットワークの第1の層と関連付けられたAIPD、AIPD103aに送信する。AIPD103aと関連付けられた、変更されたコンフィギュレーションデータとニューラルネットワークへの入力データとに基づいて、AIPD103aは、AI計算を含む、新しいニューラルネットワークの第1の層に関連する計算を行い、ダイ間出力ブロック111aを用いてAIPD103bに結果データを送信する。本明細書で説明されるように、「ニューラルネットワークの層に関連する計算」は、ニューラルネットワークの当該層に関連するAI計算を含む。AIPD103bは、ダイ間入力ブロック221aでAIPD103から受信された結果データと、AIPD103bと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、AI計算を含む、ニューラルネットワークの第2の層に関連する計算を行う。AIPD103bは、ダイ間出力ブロック223aを用いて、結果データをAIPD103cに送信する。AIPD103cは、ダイ間入力ブロック225aでAIPD103bから受信された結果データと、AIPD103cと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、AI計算を含む、ニューラルネットワークの第3の層に関連する計算を行い、ダイ間出力ブロック227bを用いて、結果データをAIPD103fに送信する。AIPD103fは、ダイ間入力ブロック237aでAIPD103cから受信された結果データと、AIPD103fと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、AI計算を含む、ニューラルネットワークの第4の層に関連する計算を行う。AIPD103f、ニューラルネットワークの最後の層と関連付けられたAIPD103は、AIPD103fからの結果データをメインプロセシングユニット101に送信するように構成されている。したがって、AIPUと関連付けられたコンフィギュレーションデータおよび/またはAIPUのAIPDのコンフィギュレーションデータを変更することによって、単一のAIPUを、異なるニューラルネットワークを処理するように再プログラム可能である。それゆえ、特注のASICの使用に関連する、無視できない経常外エンジニアリング費用をより効率的に償却可能であり、この特定のニューラルネットワークのタスクを処理するための特注のASICの設計に伴う設計時間費用をさらに減らすことができる。
【0046】
いくつかの実現例では、少なくとも1つのダイ間入力ブロックと少なくとも1つのダイ間出力ブロックとはAIPD103の1つのエッジに配置され、少なくとも1つのダイ間出力ブロックと少なくとも1つのダイ間入力ブロックとは、AIPD103の他のエッジに設けられる。たとえば、
図2Aに示すように、1つのダイ間入力ブロックと1つのダイ間出力ブロックとがAIPD103のトップエッジに設けられ、他のダイ間出力ブロックとダイ間入力ブロックとが、AIPD103のボトムエッジに設けられる。いくつかの実現例では、全てのダイ間入力ブロックはAIPD103の1つのエッジに設けられ、全てのダイ間出力ブロックは、AIPD103bの他のエッジに設けられる。ダイ間入力ブロックおよびダイ間出力ブロックのそのような配置の例を、
図2Cに示す。
【0047】
図2Cでは、全てのダイ間入力ブロックはAIPD103のトップエッジに設けられ、全てのダイ間出力ブロックは、AIPD103のボトムエッジに設けられる。いくつかの実現例では、AIPD103間の等しい長さの電気的な相互接続を実現するために、および、
図2Cに示すAIPD103を含むAIPUにより効率的なサイズを達成するために、AIPD103の一部の向きは、他のAIPD103の向きに対して特定の距離または角度だけずらされている。たとえば、
図2Cに示すように、AIPD103bおよび103eは、AIPD103a、103d、103c、および103fの向きに対して180度回転されている。AIPD103を180度回転することによって、AIPD103b、103eのダイ間入力ブロックおよびダイ間出力ブロックは、AIPD103a、103d、103c、103fのダイ間出力ブロックおよびダイ間入力ブロックに隣接して設けられ、これによって、全てのAIPD103間の電気的な相互接続の長さが等しい長さになり、AIPD103bまたは103eおよび任意の隣接するAIPD103のダイ間
入力ブロックおよびダイ間出力ブロック間の電気的な相互接続のためにさらなる領域を必要としない。
【0048】
図2Cでは、
図2Cに示されるAIPD103の配置を有するAIPUは、上述のAIPUに類似したニューラルネットワークを処理可能である。たとえば、6層を有し層間のフィードバックループを有さないニューラルネットワークは、AIPD103aをニューラルネットワークの第1の層と、AIPD103dを第2の層と、AIPD103eを第3の層と、AIPD103bを第4の層と、AIPD103cを第5の層と、および、AIPD103fを第6の層と関連付けることで、
図2Cに示すAIPD103の配置によって処理可能である。
図2CのAIPD103の配置の順番は、AIPD103aが順番の第1の位置にあり、AIPD103dが第2の位置にあり、AIPD103eが第3の位置にあり、AIPD103bが第4の位置にあり、AIPD103cが第5の位置にあり、かつ、AIPD103fが第6の位置にある。AIPD103間の通信はAIPD103aから始まり、その後AIPD103d、103e、103b、103c、および103fへという順番である。
【0049】
本明細書で説明されるAIPDの設計および実現の利点のうちの1つは、いかなる数のAIPDも単一のAIPUパッケージ内に含むことができるということである。単一のAIPUパッケージ内のAIPDの数は、AIPUパッケージのサイズによって制限されるだけであり、AIPDのダイのサイズによって制限されない。したがって、
図2DのAIPD11~AIPDNNの配置によって示されるように、単一のAIPUパッケージにN×NのAIPDの配置を含むことが可能である。
図2DのAIPD11~AIPDNNは、上述のAIPD103と同様に設計および構成されている。
【0050】
メインプロセシングユニットコントローラ105は、AIPD103のホストインターフェースユニットを介して、第1の層(入力層)と関連付けられたAIP103に、ニューラルネットワークの最初の入力データを送信するように構成されている。たとえば、
図2、
図2B、および
図2Cに示すように、ニューラルネットワークの第1の層と関連付けられたAIPD103はAIPD103aであり、メインプロセシングユニットコントローラ105は、ホストインターフェースユニット113を介して、最初の入力データをAIPD103aに送信する。いくつかの実現例では、通信の順番で最後のAIPD103は、AIPDのホストインターフェースユニットを用いて結果データをメインプロセシングユニット101に再び送信するように構成されている。いくつかの実現例では、ニューラルネットワークの最後の層と関連付けられたAIPD103は、結果データをメインプロセシングユニット101に再び送信するように構成されている。たとえば、
図2Aでは、上述のように、通信の順番で最後のAIPD103はAIPD103aであるため、いくつかの実現例では、AIPD103aのAIPDコントローラ117は、ホストインターフェースユニット113を用いて結果データをメインプロセシングユニット101に送信するように構成されている。同様に、
図2Bでは、AIPD103fはニューラルネットワークの最後の層と関連付けられたAIPD103であり、いくつかの実現例では、AIPD103fのAIPDコントローラ218は、AIPD103fのホストインターフェースユニットを用いて結果データをメインプロセシングユニット101に送信するように構成されている。ニューラルネットワーク処理のためにAIPD103を構成する方法の例について、
図3を参照して説明する。
【0051】
図3は、ニューラルネットワークモデルを処理するためにAIPUを構成する方法の例300を示すフローチャートである。メインプロセッサにおいて、方法300は、入力を受信してAIPUを構成すること(ステージ302)を備える。方法300は、AIPUコンフィギュレーションデータを選択すること(ステージ304)を備える。方法300は、コンフィギュレーションデータをAIPUのAIPD103に送信すること(ステー
ジ306)を備える。各AIPD103において、方法300は、コンフィギュレーションデータを受信すること(ステージ308)を備える。方法300は、コンフィギュレーションデータに基づいて、AIPD103を構成すること(ステージ310)を備える。方法300は、メインプロセシングユニット101に応答を送信すること(ステージ312)を備える。
【0052】
方法300は、メインプロセシングユニット101において、入力を受信してAIPUを構成すること(ステージ302)を備える。入力を受信してAIPUを構成することに応じて、方法300は、AIPU内の各AIPD103についてAIPUコンフィギュレーションデータを選択すること(ステージ304)を備える。メインプロセッサ101のメインプロセシングユニットコントローラ105は、AIPUに関連するコンフィギュレーションデータを選択する。AIPUに関連するコンフィギュレーションデータの選択では、メインプロセシングユニットコントローラ105は、AIPUのAIPD103の各々と関連付けられたコンフィギュレーションデータを選択する。異なるコンフィギュレーションデータは、ニューラルネットワークプロセシングについてAIPD103を構成するために異なる値を指定してもよい。AIPD103は、関連付けられたAIPD103と他のAIPD103との間のニューラルネットワーク関連データの送受信、ならびに、ダイ間出力ブロック103のピンに対する出力データ、および、パラメータ、パラメータ重みデータ、パラメータの数などのニューラルネットワーク関連データのマッピングのために構成される、関連付けられたAIPD103のダイ間出力ブロックおよびダイ間入力ブロックを含むが、これらに制限されるわけではない。コンフィギュレーションデータによって指定される値は、対応するAIPD103が関連付けられているニューラルネットワークの層に基づく。したがって、1つのAIPD103と関連付けられたコンフィギュレーションデータの値は、異なるAIPD103と関連付けられたコンフィギュレーションデータの値と異なっていてもよい。たとえば、AIPUによって処理されているニューラルネットワークの第1の層が、ニューラルネットワークの第1の層の計算タスクに使用されるべき第1の集合の重み値を必要とし、ニューラルネットワークの第2の層が、第2の層の計算タスクの間に適用されるべき、第1の集合の重み値とは異なる第2の集合の重み値を必要とする場合、ニューラルネットワークの第1の層と関連付けられたAIPD103と関連付けられたコンフィギュレーションデータは、第1の集合の重み値に対応する重み値を指定する一方で、ニューラルネットワークの第2の層と関連付けられたAIPD103と関連付けられたコンフィギュレーションデータは、第2の集合の重み値に対応する重み値を指定する。
【0053】
ニューラルネットワーク関連データをニューラルネットワークの次の層と関連付けられたAIPD103に送信するためにコンフィギュレーションデータにおいて指定されたAIPD103のダイ間出力ブロックは、ニューラルネットワークの次の層と関連付けられたAIPD103に対するAIPD103の位置に部分的に基づく。たとえば、AIPD103aがニューラルネットワークの第1の層と関連付けられていて、AIPD103bがニューラルネットワークの次の層と関連付けられている場合、AIPD103aのためのコンフィギュレーションデータで指定されたAIPD103aのダイ間出力ブロックは、AIPD103bのダイ間入力ブロックに電気的に相互接続されたダイ間出力ブロックであり、これは、
図2A、
図2B、および
図2Cで示すように、ダイ間出力ブロック111aである。同様に、AIPD103dがAIPD103aと関連付けられた層の次の層と関連付けられている場合、ニューラルネットワーク関連データを送信するために選択されAIPD103aのコンフィギュレーションデータにおいて指定されたダイ間出力ブロックは、AIPD103dのダイ間入力ブロックに電気的に相互接続されたダイ間出力ブロックであり、これは、
図2A、
図2B、および
図2Cに示すように、ダイ間出力ブロック111bである。
【0054】
各AIPD103は固有の識別子と関連付けられており、いくつかの実現例では、AIPD103のコンフィギュレーションデータは、当該AIPD103の固有の識別子と関連付けられており、メインプロセシングユニットコントローラ105は、AIPD103と関連付けられた固有の識別子に基づいてAIPD103のコンフィギュレーションデータを選択するように構成されている。
【0055】
方法300は、選択されたコンフィギュレーションデータをAIPD103に送信すること(ステージ306)を備える。上述したように、メインプロセシングユニットコントローラ105は、AIPD103aのホストインターフェースユニット113などのAIPD103のホストインターフェースユニットを介して、コンフィギュレーションデータをAIPD103に送信する。いくつかの実現例では、メインプロセシングユニットコントローラ105は、任意のAIPD103のためのコンフィギュレーションデータがアップデートされているかどうかを定期的に確認するように構成されており、AIPD103のコンフィギュレーションデータのアップデートに応じて、メインプロセシングユニットコントローラ105は、アップデートされたコンフィギュレーションデータを特定のAIPD103に送信する。いくつかの実現例では、メインプロセシングユニットコントローラ105は、命令をAIPD103に送信して、受信されたコンフィギュレーションデータに基づいてAIPD103を構成する。いくつかの実現例では、コンフィギュレーションデータはホストコンピューティングデバイスメモリに格納されており、AIPD103は、ホストコンピューティングデバイスのメモリに格納されたデータを読出すように構成されている。いくつかの実現例では、メインプロセシングユニットコントローラ105は、AIPD103に命令を送信して、ホストコンピューティングデバイスメモリからコンフィギュレーションデータを読出し、コンフィギュレーションデータに基づいてAIPD103を構成する。
【0056】
方法300は、各AIPD103において、コンフィギュレーションデータを受信すること(ステージ308)と、受信されたコンフィギュレーションデータに基づいてAIPD103を構成すること(ステージ310)とを備える。上述したように、AIPD103aのAIPDコントローラ117などのAIPD103のAIPDコントローラは、ダイ間入力ブロックおよびダイ間出力ブロックを選択し、受信されたコンフィギュレーションデータに基づいて他のAIPD103に対してデータを送受信するために、これらのブロックを構成するように構成されている。また、AIPD103のAIPDコントローラは、受信されたコンフィギュレーションデータに基づいて、ニューラルネットワーク関連データを他のAIPD103に送信するために選択された、選択されたダイ間出力ブロックの特定のピンに、計算ユニット121からの出力などのAIPD103の特定の出力データを送信するように構成されている。さらに、AIPD103のAIPDコントローラは、パラメータ重みデータなどのニューラルネットワーク関連データをバッファ119などの記憶装置に記憶し、AIPD103と関連付けられたニューラルネットワークの層と関連する計算の間にニューラルネットワーク関連データを用いるように構成されている。
【0057】
方法300は、各AIPD103において、応答信号をメインプロセッサ101に送信すること(ステージ312)を備える。AIPD103は、AIPD103aのホストインターフェースユニット113などのホストインターフェースユニットを用いて、メインプロセッサ101に応答信号を送信する。メインプロセッサ101に送信された応答は、メインプロセッサに対して、AIPD103の構成が正常であると知らせる。いくつかの実現例では、AIPD103の構成中にエラーが生じると、AIPD103は、ホストインターフェースユニットを用いてメインプロセッサ101にエラーメッセージを送信する。必要なAIPD103が正常に構成されると、AIPUは、ニューラルネットワーク関連タスクを処理する準備が整う。メインプロセシングユニットコントローラ105は、ニューラルネットワークタスクを実行するためにニューラルネットワークタスクをAIPU
に送信する。AIPUによってニューラルネットワークタスクを処理する方法の例について、
図4を参照して以下で説明する。
【0058】
図4は、AIPUによってニューラルネットワーク関連タスクを処理する方法の例400を示すフローチャートである。メインプロセッサ101において、方法400は、ニューラルネットワークタスクを識別すること(ステージ402)を備える。方法400は、初期データまたはニューラルネットワークに関連する入力データをAIPUに送信すること(ステージ404)を備える。AIPUにおいて、方法400は、ニューラルネットワークの入力層と関連付けられた第1のAIPD103において、ニューラルネットワークに関連する初期データを受信すること(ステージ406)を備える。方法400は、第1のAIPD103において、初期データと、第1のAIPD103のコンフィギュレーションデータと共に受信された任意のニューラルネットワーク関連データとを用いて、第1のAIPD103と関連付けられたニューラルネットワークの層に関連する計算を行うこと(ステージ408)を備える。方法400は、計算の結果を第2のAIPDに送信すること(ステージ410)を備える。方法400は、第2のAIPD103において、第1のAIPDから受信された結果データを用いて、第2のAIPD103と関連付けられたニューラルネットワークの層に関連する計算を行うこと(ステージ412)を備える。方法400は、いくつかの実現例では、第2のAIPD103における計算の結果をフィードバックとして第1のAIPD103に送信すること(ステージ414)を備える。方法400は、AIPUからのニューラルネットワークの結果をメインプロセッサに送信すること(ステージ416)を備える。方法400は、メインプロセッサにおいて、ニューラルネットワークの結果をユーザに送信すること(ステージ418)を備える。
【0059】
方法400は、メインプロセッサ101において、ニューラルネットワークタスクを識別すること(ステージ402)を備える。メインプロセシングユニットコントローラ105は、要求されたタスクがニューラルネットワーク関連タスクかどうかを識別するように構成されている。いくつかの実現例では、要求されたタスクについての要求メッセージまたはデータは、要求されたタスクがニューラルネットワーク関連タスクであると示すメッセージの特定の分野における高ビットまたは低ビットなどの特定のインディケータを運び、メインプロセシングユニットコントローラ105は、要求されたタスクがニューラルネットワークタスクかどうかを特定のインディケータに基づいて判断するように構成されている。
【0060】
方法400は、メインプロセッサ101において、ニューラルネットワークの入力データをAIPUに送信すること(ステージ404)を備える。メインプロセシングユニット101のメインプロセシングユニットコントローラ105は、ホストコンピューティングデバイスのメモリから入力データを取出し、それを、AIPUによって処理されているニューラルネットワークの初期層または入力層と関連付けられたAIPD103に送信する。メインプロセシングユニットコントローラ105は、AIPD103の各々と関連付けられたコンフィギュレーションデータに基づいて、ニューラルネットワークの入力層と関連付けられたAIPD103を識別する。いくつかの実現例では、ニューラルネットワークの入力層と関連付けられたAIPD103の識別子が、メモリまたはレジスタもしくはバッファなどの記憶ユニットに記憶されており、メインプロセシングユニットコントローラ105は、メモリまたは記憶ユニットに記憶された識別子に基づいて入力層と関連付けられたAIPD103を決定する。AIPD103がホストコンピューティングデバイスのメモリに記憶されたデータを読出すように構成されている実現例では、メインプロセシングユニットコントローラ105は、命令をニューラルネットワークの入力層と関連付けられたAIPD103に送信して、ニューラルネットワークへの入力データをホストコンピューティングデバイスのメモリから取出す。
【0061】
方法400は、
図2A、
図2B、および
図2Cを参照して説明されたAIPD103aなどのニューラルネットワークの入力層と関連付けられた第1のAIPD103において、ニューラルネットワークに関連する入力データを受信すること(ステージ406)を備える。方法400は、第1のAIPD103において、第1のAIPD103において受信された初期データと、第1のAIPD103の構成中に受信された他のニューラルネットワーク関連データとを用いて、第1のAIPD103と関連付けられたニューラルネットワークの層に関連する計算を行うこと(ステージ408)を備える。第1のAIPD103のコントローラは、関連付けられたニューラルネットワーク層に基づいて行われる計算を決定する。たとえば、ニューラルネットワークの第1の層が入力データに重み行列を適用することによって行列の乗算を行う場合、AIPD103の構成中は、重み行列は、第1のAIPD103に送信され、AIPD103のバッファに格納される。第1のAIPD103のAIPDコントローラは、重み行列を第1のAIPD103の計算ユニットに送信して、重み行列と入力データとを用いて行列乗算を行うように構成されている。いくつかの実現例では、行われる計算は、第1のAIPD103によって受信されたコンフィギュレーションデータにおいて指定され、指定された計算に基づいて、第1のAIPD103のコントローラは、AIPD103aの計算ユニット121などのAIPD103の適切な計算ユニットにデータを送信する。
【0062】
方法400は、第1のAIPD103において、第1のAIPD103における計算の結果を第2のAIPD103に送信すること(ステージ410)を備える。第2のAIPD103は、第1のAIPDと異なるニューラルネットワークの層と関連付けられている。方法400は、第2のAIPD103において、第1のAIPD103から受信された結果データと他のニューラルネットワーク関連データとを用いて、第2のAIPD103と関連付けられたニューラルネットワークの層に関連する計算を行うこと(ステージ412)を備える。いくつかの実現例では、計算を行うAIPD103のコントローラは、ホストコンピューティングデバイスのメモリから、AI計算で用いるパラメータ重みデータなどの、計算のためのさらなるデータを取出すことができる。
【0063】
AIPUによって処理されているニューラルネットワークモデルがニューラルネットワークの2つ以上の層の間のフィードバックループを含み、第2のAIPD103と第1のAIPD103とが、それらの間にフィードバックループが含まれているニューラルネットワークの層と関連付けられている実現例では、方法400は、第2のAIPD103において、第2のAIPD103における計算の結果データを、フィードバックとして第1のAIPD103に送信すること(ステージ414)を備える。第2のAIPD103と第1のAIPD103と関連付けられた層の間にフィードバックループがない場合、方法400は、AIPUからのニューラルネットワークの結果をメインプロセシングユニット101に送信すること(ステージ416)を備える。ニューラルネットワークの出力層と関連付けられたAIPD103のコントローラは、AIPD103aのホストインターフェースユニット113などのホストインターフェースを用いて、ニューラルネットワークの結果をメインプロセッサ101に送信する。たとえば、
図2Aでは、AIPD103aは、
図2Aにおけるニューラルネットワークの出力層と関連付けられたAIPD103であり、それゆえ、AIPD103aのAIPDコントローラ117は、ホストインターフェースユニット113を用いてメインプロセッサ101に結果データを送信する。同様に、
図2Bでは、AIPD103fは、
図2Bにおけるニューラルネットワークの出力層と関連付けられており、AIPD103fのAIPDコントローラは、AIPD103fのホストインターフェースユニットを用いて、結果データをメインプロセッサ101に送信する。
【0064】
方法400は、メインプロセシングユニット101において、AIPUから受信されたニューラルネットワークの結果をニューラルネットワークタスクの要求側に送信すること
(ステージ418)を備える。本明細書で用いられる「ニューラルネットワークタスクの要求側」は、ホストコンピューティングデバイス内の他のプロセス、またはホストコンピューティングデバイスのエンドユーザであり得る。明瞭さを保ち明確な例を示すために2つのAIPD103のみが
図4で示されているが、ニューラルネットワークタスクの実行において用いられるAIPD103の数は、少なくとも部分的に、ホストコンピューティングデバイスによって行われると予想されるニューラルネットワークタスクのボリュームによって決まる。
【0065】
図5は、例示的な実現例に係る、本明細書で説明および図示されるシステムの要素および方法を実現するために用いられ得るコンピュータシステム500のための全体のアーキテクチャを示すブロック図である。コンピューティングシステム500は、上述のホストコンピューティングデバイスを実現するために使用可能である。コンピューティングシステム500は、
図3および
図4に示すAIPU方法300の構成の実現およびAIPU方法400を用いたニューラルネットワークタスクの処理において使用してもよい。
【0066】
より広い概要では、コンピューティングシステム510は、命令に従って動作を行う少なくとも1つのプロセッサ550と、命令およびデータを記憶する1つまたは複数のメモリデバイス570または575とを含む。コンピューティングシステム510の図示された例は、ネットワーク(図示せず)に接続した1つまたは複数のネットワークインターフェースポート522を有する少なくとも1つのネットワークインターフェースコントローラ520とバス515を介して接続されている1つまたは複数のプロセッサ550と、AIPU590と、メモリ570と、他の要素580、たとえば入出力(I/O)インターフェース530とを含む。一般に、プロセッサ550は、メモリから受信された命令を実行する。図示されたプロセッサ550は、キャッシュメモリ575を組み込む、または、これに直接接続されている。
【0067】
より詳細に、プロセッサ550は、命令、たとえば、メモリ570またはキャッシュ575から取出された命令を処理する任意の論理回路でもよい。多くの実施形態では、プロセッサ550は、マイクロプロセッサユニットまたは特殊用途のプロセッサである。コンピューティングデバイス500は、本明細書で説明されるように動作可能な任意のプロセッサまたはプロセッサの集合でもよい。いくつかの実現例では、プロセッサ550は、ステージ302、304、306などの
図3に示す方法300の特定のステージ、および、ステージ402、404、418などの
図4に示す方法400の特定のステージを実行可能である。プロセッサ550は、単一のコアまたはマルチコアプロセッサでもよい。プロセッサ550は、複数のプロセッサでもよい。いくつかの実現例では、プロセッサ550は、マルチスレッド動作を実行するように構成可能である。いくつかの実現例では、プロセッサ550は、1つまたは複数のバーチャルマシンまたはコンテナの動作を管理するためのハイパーバイザまたはコンテナマネジャと併せて、これらのバーチャルマシンまたはコンテナをホストしてもよい。そのような実現例では、
図3に示す方法300および
図4に示す方法400は、プロセッサ550に設けられた仮想環境またはコンテナ環境内で実現可能である。
【0068】
メモリ570は、コンピュータ可読データの記憶に好適なデバイスでもよい。メモリ570は、固定記憶装置を有するデバイスまたはリムーバブル記憶媒体を読出すためのデバイスでもよい。例としては、あらゆる形態の不揮発性メモリ、媒体およびメモリデバイス、半導体メモリデバイス(たとえば、EPROM、EEPROM、SDRAM、およびフラッシュメモリデバイス)、磁気ディスク、光磁気ディスク、ならびに光ディスク(たとえば、CD ROM、DVD‐ROM、およびブルーレイ(登録商標)ディスク)が挙げられる。コンピューティングシステム500は、いかなる数のメモリデバイス570を有してもよい。いくつかの実現例では、メモリ570は、
図3に示す方法300および
図4
に示す方法400に対応する命令を含み得る。いくつかの実現例では、メモリ570は、コンピューティングシステム510によって提供されるバーチャルマシンまたはコンテナ実行環境でアクセス可能な仮想メモリまたはコンテナメモリをサポートする。
【0069】
キャッシュメモリ575は一般に、速い読込み時間のために、プロセッサ550の極めて近くに配置された形スキン尾コンピュータメモリである。いくつかの実現例では、キャッシュメモリ575は、プロセッサ550の一部である、またはプロセッサ550と同じチップ上にある。いくつかの実現例では、たとえばL2、L3キャッシュ層など、複数のレベルのキャッシュ575がある。
【0070】
ネットワークインターフェースコントローラ520は、ネットワークインターフェース522(ネットワークインターフェースポートとも呼ばれる)を介してデータ交換を管理する。ネットワークインターフェースコントローラ520は、ネットワーク通信のためのOSIモデルの物理層およびデータリンク層を処理する。いくつかの実現例では、ネットワークインターフェースコントローラのタスクの一部は、プロセッサ550によって処理される。いくつかの実現例では、ネットワークインターフェースコントローラ520は、プロセッサ550の一部である。いくつかの実現例では、コンピューティングシステム510は、複数のネットワークインターフェースコントローラ520を有する。ネットワークインターフェース522は、物理ネットワークリンクのための接続点である。いくつかの実現例では、ネットワークインターフェースコントローラ520は、無線ネットワーク接続をサポートし、インターフェースポート522は、ワイヤレス受信機/送信機である。一般に、コンピューティングデバイス510は、ネットワークインターフェース522に対する物理リンクまたは無線リンクを介して、他のコンピューティングデバイスとデータを交換する。ネットワークインターフェース522は、直接他のデバイスにリンクしてもよい、または、コンピューティングデバイス510をインターネットなどのネットワークに接続する中間デバイス、たとえば、ハブ、ブリッジ、スイッチ、またはルータなどのネットワークデバイスを介して接続されてもよい。いくつかの実現例では、ネットワークインターフェースコントローラ520は、イーサネット(登録商標)などのネットワークプロトコルを実現する。
【0071】
他の要素580は、I/Oインターフェース530、外部シリアルデバイスポート、およびさらなるコプロセッサを含み得る。たとえば、コンピューティングシステム510は、入力デバイス(たとえば、キーボード、マイクロフォン、マウス、もしくは他のポインティングデバイス)、出力デバイス(たとえば、ビデオディスプレイ、スピーカ、もしくはプリンタ)、または付加的なメモリデバイス(たとえば、ポータブルフラッシュドライブもしくは外部媒体駆動装置)を接続するためのインターフェース(たとえば、ユニバーサルシリアルバス(USB)インターフェース)を含み得る。いくつかの実現例では、他の構成要素580は、プロセッサ550の高精度なまたは複雑な計算を助ける数値演算コプロセッサなどの付加的なコプロセッサを含む。
【0072】
本明細書に記載の発明の主題および動作の実現例は、本明細書に開示の構造およびそれらの構造的均等物を含む、デジタル電子回路、または有形の媒体上に含まれるコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つまたは複数の組み合わせで実施され得る。本明細書に記載の発明の主題の実現例は、有形の媒体上に含まれる1つまたは複数のコンピュータプログラムとして実現できる、つまり、データ処理装置によって実行するために、またはデータ処理装置の動作を制御するために、1つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実現できる。コンピュータ記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイまたは素子、またはそれらのうちの1つまたは複数の組み合
わせとする、またはそれらに含めることができる。また、コンピュータ記憶媒体は、1つもしくは複数の別々のコンポーネントまたは媒体(たとえば、複数のCD、ディスク、またはその他の記憶装置)とする、またはそれに含めることもできる。コンピュータ記憶媒体は、有形の非一時的なコンピュータ記憶媒体であってもよい。
【0073】
本明細書に記載の動作は、1つまたは複数のコンピュータ読み取り可能な記憶装置上に格納されたまたはその他の送信側から受信されたデータに対してデータ処理装置が行う動作として実現できる。動作は、データ処理装置のネイティブ環境内、またはデータ処理装置がホストする1つまたは複数の仮想マシンまたはコンテナ内で実行されてもよい。
【0074】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)コンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、宣言的言語または手続き型言語を含む任意の形式のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとして、もしくは、コンピュータ環境での使用に好適なモジュール、コンポーネント、サブルーチン、オブジェクト、または他のユニットとして、ということを含む任意の形式でデプロイされ得る。コンピュータプログラムは、ファイルシステムのファイルに対応していてもよいが、対応する必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部に、当該プログラム専用の単一のファイルに、または、複数の連携ファイル(たとえば、1つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイル)に格納されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または、1ヶ所に位置するかもしくは複数箇所にわたって分散され、通信ネットワークによって相互接続された1つもしくは複数の仮想マシンまたはコンテナで、実行されるためにデプロイされ得る。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびに、ピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)が挙げられる。
【0075】
本明細書で説明されたプロセスおよび論理フローは、1つ以上のプログラマブルプロセッサが、入力データに対して動作して出力を生成することによってアクションを行なうように、1つ以上のコンピュータプログラムを実行することによって行なわれてもよい。プロセスおよび論理フローはまた、専用論理回路、たとえばフィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)によって行なわれてもよく、装置も専用論理回路として実現されてもよい。
【0076】
本明細書は多くの具体的な実現例の詳細を含むが、これらは、発明または請求の範囲の限定として解釈されるべきではなく、特定の発明の特定の実現例に特有の特徴の説明であると解釈されるべきである。別々の実現例の枠内で本明細書に記載のいくつかの特徴は、1つの実現例で組み合わせて実現することもできる。その逆に、1つの実現例の枠内で記載されたさまざまな特徴は、別々の複数の実現例または任意の適した部分的な組み合わせで実現することもできる。また、特徴は、いくつかの組み合わせで動作するものとして上述され、そのように初めに特許請求され得たが、特許請求された組み合わせからの1つまたは複数の特徴は、場合によっては、組み合わせから削除でき、特許請求された組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
【0077】
同様に、動作は特定の順番で図面に示されているが、これは、望ましい結果を達成するためにこのような動作を示されている特定の順番でもしくはシーケンシャルな順番で実行しなければならないものとして理解されるべきではない、または、望ましい結果を達成するために示されている動作を全て実行しなければならないものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利である場合もある。さらに、
上記の実現例におけるさまざまなシステムコンポーネントの分離は、全ての実現例においてこのような分離が必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合されてもよい、または複数のソフトウェア製品にパッケージングされてもよい、ということが理解されるべきである。
【0078】
「または」という言及は、「または」を使用して記載されているいかなる用語も、記載されている用語のうちの1つ、2つ以上および全てのいずれかを示すように包括的であるものとして解釈され得る。「第1の」、「第2の」、「第3の」などの表示は、必ずしも順番付けを示すよう意図されているわけではなく、一般に同様または類似の項目または要素を区別するために使用しているに過ぎない。
【0079】
本明細書に記載された実現例に対するさまざまな変更は、当業者にとって明らかであり、本開示の精神または範囲から逸脱することなく、本明細書に記載の一般的な原理を他の実現例に適用することができる。したがって、特許請求の範囲は、本明細書に記載の実現例に限定されることを意図しておらず、本明細書に開示された原理および新規な特徴と一致する最も広い範囲で解釈されるべきである。
【手続補正書】
【提出日】2024-05-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
人工知能処理ユニットであって、複数の同一の人工知能処理ダイを備え、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも1つのダイ間入力ブロックと少なくとも1つのダイ間出力ブロックとを含み、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記人工知能処理ダイの前記少なくとも1つのダイ間出力ブロックから前記人工知能処理ダイの前記少なくとも1つのダイ間入力ブロックへの1つまたは複数の通信路を介して、前記複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結され、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも1つの層に対応する、人工知能処理ユニット。
【外国語明細書】