(57)【要約】  並列性及びオンチップ・メモリを介して時間、空間及びエネルギー効率のよいニューラル推論を提供するように適合されたニューラル推論チップ及びコアが提供される。種々の実施形態において、ニューラル推論チップは、オンチップ・ネットワークにより複数のコアの各々に接続された、ニューラル・ネットワーク・モデルを格納するための第１のオンチップ・メモリと、オンチップ・ネットワークにより複数のコアの各々に接続された、入力及び出力データを格納するための第２のオンチップ・メモリとを含む。
2021519454.tif 000002
【特許請求の範囲】
【請求項１】
ニューラル推論チップであって、
オンチップ・ネットワークにより相互接続された複数のニューラル・コアと、
前記オンチップ・ネットワークにより前記複数のコアの各々に接続された、ニューラル・ネットワーク・モデルを格納するための第１のオンチップ・メモリと、
前記オンチップ・ネットワークにより前記複数のコアの各々に接続された、入力データ及び出力データを格納するための第２のオンチップ・メモリと、
を含む、ニューラル推論チップ。
【請求項２】
前記複数のニューラル・コア、前記第１のオンチップ・メモリ、及び前記第２のオンチップ・メモリに接続された少なくとも１つのコントローラと、
前記少なくとも１つのコントローラに接続された、コントローラ命令を格納するための第３のオンチップ・メモリと、
をさらに含む、請求項１に記載のニューラル推論チップ。
【請求項３】
前記少なくとも１つのコントローラは、前記オンチップ・ネットワークを介して、前記複数のニューラル・コア、前記第１のオンチップ・メモリ、及び前記第２のオンチップ・メモリに接続される、請求項２に記載のニューラル推論チップ。
に接続され、
【請求項４】
前記複数のニューラル・コアの各々は、前記ニューラル・ネットワーク・モデルの一部を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項５】
前記複数のニューラル・コアの各々は、前記入力データ及び出力データの一部を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項６】
前記複数のニューラル・コアの各々は、コントローラ命令を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項７】
前記複数のニューラル・コアの各々は、ローカル・コントローラをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項８】
前記複数のニューラル・コアは、アレイを形成する、請求項１に記載のニューラル推論チップ。
【請求項９】
前記複数のニューラル・コアの各々は、前記オンチップ・ネットワークにより、前記アレイ内の隣接するコアに接続される、請求項８に記載のニューラル推論チップ。
【請求項１０】
ニューラル推論チップであって、
１つ又は複数のニューラル・コアのアレイと、
ニューラル・ネットワーク・モデルを格納するための第１のメモリと、
入力データ及び出力データを格納するための第２のメモリと、
一時的データを格納するための第３のメモリと、
コントローラ命令を格納するための第４のメモリと、
少なくとも１つのオンチップ・ネットワークと、
を含み、
前記ニューラル・ネットワーク・モデルは、入力データを出力データに変換するように適合された１つ又は複数の相互接続された処理層を含み、
１つ又は複数のニューラル・コアの前記アレイの各々は、前記少なくとも１つのオンチップ・ネットワークを介して、中間データを、１つ又は複数のニューラル・コアの前記アレイの他のものに直接通信するように適合され、
前記ニューラル推論チップは、１つ又は複数のニューラル・コアの前記アレイにより適用される変換動作を制御し、１つ又は複数のニューラル・コアの前記アレイと前記メモリとの間のデータの流れを方向付けるための前記コントローラ命令を実行するように適合された、ニューラル推論チップ。
【請求項１１】
前記ニューラル・コアの各々は、前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリの少なくともローカル部分を含む、請求項１０に記載のニューラル推論チップ。
【請求項１２】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、前記ニューラル・コアの間で分散される、請求項１０に記載のニューラル推論チップ。
【請求項１３】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、前記ニューラル・コアにローカルな部分と、集中部分とを含む、請求項１０に記載のニューラル推論チップ。
【請求項１４】
前記コントローラ命令は、１つ又は複数のコントローラにより実行される、請求項１０に記載のニューラル推論チップ。
【請求項１５】
前記ニューラル・コアの各々は、ローカル・コントローラを含む、請求項１４に記載のニューラル推論チップ。
【請求項１６】
集中コントローラをさらに含む、請求項１４に記載のニューラル推論チップ。
【請求項１７】
集中コントローラをさらに含み、前記ニューラル・コアの各々は、ローカル・コントローラを含む、請求項１４に記載のニューラル推論チップ。
【請求項１８】
前記少なくとも１つのオンチップ・ネットワークは、
前記ニューラル・ネットワーク・モデルを前記第１のメモリから前記ニューラル・コアに分散し、
前記コントローラ命令を前記第４のメモリから前記ニューラル・コアに分散し、
入力データを前記ニューラル・コアに分散し、
前記ニューラル・コアから出力データを集約する
ように適合された、請求項１０に記載のニューラル推論チップ。
【請求項１９】
前記コントローラは、命令セットに従ってプログラム可能である、請求項１４に記載のニューラル推論チップ。
【請求項２０】
前記集中コントローラは、チップ・レベル命令を実行するように適合され、前記ローカル・コントローラは、コア・レベル命令を実行するように適合された、請求項１７に記載のニューラル推論チップ。
【請求項２１】
前記集中コントローラは、コア・レベル命令を前記ローカル・コントローラに分散するように適合された、請求項１７に記載のニューラル推論チップ。
【請求項２２】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、推論中にオンラインで更新される、請求項１０に記載のニューラル推論チップ。
【請求項２３】
前記第１のメモリ及び前記第２のメモリは、推論前にオフラインで構成される、請求項１０に記載のニューラル推論チップ。
【請求項２４】
前記第１のメモリ内の前記ニューラル・ネットワーク・モデルを修正することによって、オンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２５】
前記第４のメモリ内の前記コントローラ命令を修正することによって、オンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２６】
ニューラル・ネットワーク・パラメータを前記第１のメモリから前記ニューラル・コアにロードすることによって、前記ニューラル・コアをオンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２７】
前記ニューラル・ネットワーク・モデルの中間処理層からの前記一時的データについてデータを前記第３のオンチップ・メモリからロードすることによって、前記ニューラル・コアへの入力をオンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２８】
ニューラル推論チップを動作させる方法であって、
入力データを前記ニューラル推論チップの第２のメモリに書き込むことと、
前記入力データを、前記ニューラル推論チップの複数のニューラル・コアに提供することと、
前記ニューラル推論チップの第１のメモリ内のニューラル・ネットワーク・モデルにより定められる前記ニューラル・ネットワークの複数の層の各々について、
前記ニューラル・ネットワーク・モデルの一部を、前記第１のメモリから前記複数のニューラル・コアに提供すること、
命令の一部を、前記ニューラル推論チップの第４のメモリから前記複数のニューラル・コアに提供すること、及び、
前記複数のニューラル・コアにより、前記入力データを前記出力データに変換することと、
前記複数のニューラル・コアから前記出力データを集約することと、
前記集約された出力データを前記第２のメモリに書き込むことと、
を含む、方法。
【請求項２９】
中間結果を前記複数のニューラル・コアの間で通信することをさらに含む、請求項２８に記載の方法。
【請求項３０】
前記ニューラル推論チップのホストにより、前記第２のメモリから前記集約された出力データを読み取ることをさらに含む、請求項２８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ニューラル・ネットワークに関し、より具体的には、並列性（parallelism）及びオンチップ・メモリを介して時間、空間及びエネルギー効率のよいニューラル推論（neural inference）を提供するように適合されたニューラル推論チップ及びコアに関する。
【発明の概要】
【０００２】
本開示の実施形態によると、ニューラル推論チップが提供される。種々の実施形態において、ニューラル推論チップは、オンチップ・ネットワークにより相互接続された複数のニューラル・コアと、オンチップ・ネットワークにより複数のコアの各々に接続された、ニューラル・ネットワーク・モデルを格納するための第１のオンチップ・メモリと、オンチップ・ネットワークにより複数のコアの各々に接続された、入力及び出力データを格納するための第２のオンチップ・メモリと、を含む。
【０００３】
本開示の実施形態によると、ニューラル・ネットワークを動作させるための方法及びコンピュータ・プログラム製品が提供される。ニューラル・ネットワーク・モデルは、ニューラル推論チップ上の第１のオンチップ・メモリから読み取られる。ニューラル推論チップ上の複数のニューラル・コアは、ニューラル・ネットワーク・モデルに従って構成される。入力が、ニューラル推論チップ上の第２のオンチップ・メモリから読み取られる。入力は、複数のニューラル・コアに提供される。複数のニューラル・コアにより、入力が出力に変換される。出力がニューラル推論チップ上の第２のオンチップ・メモリに書き込まれる。
【０００４】
本開示の実施形態によると、ニューラル推論チップを構成するための方法及びコンピュータ・プログラム製品が提供される。ランタイムの前に、ニューラル・ネットワーク・モデルがニューラル推論チップ上の第１のオンチップ・メモリにロードされる。ランタイム中、ニューラル推論チップ上の複数のニューラル・コアは、ニューラル・ネットワーク・モデルに従って構成される。ランタイム中、ニューラル推論チップ上の第２のオンチップ・メモリは、入力データで更新される。入力データは、複数のニューラル・コアにより、出力データに変換される。出力データは、ニューラル推論チップ上の第２のオンチップ・メモリに書き込まれる。
【０００５】
本開示の実施形態によると、ニューラル推論チップを動作させるための方法及びコンピュータ・プログラム製品が提供される。入力データは、ニューラル推論チップ上の第２のメモリに書き込まれる。幾つかの実施形態において、入力データが、ニューラル推論チップのホストにより、書き込まれる。入力データは、ニューラル推論チップの複数のニューラル・コアに提供される。ニューラル推論チップの第１のメモリ内のニューラル・ネットワーク・モデルにより定められるニューラル・ネットワークの複数の層の各々について、ニューラル・ネットワーク・モデルの部分が、第１のメモリから複数のニューラル・コアに提供され、命令の部分が、ニューラル推論チップの第４のメモリから複数のニューラル・コアに提供される。複数のニューラル・コアから出力データが集約される。集約された出力データは、第２のメモリに書き込まれる。幾つかの実施形態において、中間結果が、複数のニューラル・コアの間で通信される。幾つかの実施形態において、ニューラル推論チップのホストにより、第２のメモリから集約された出力データが読み取られる。
【図面の簡単な説明】
【０００６】
ここで、添付図面を参照して、本発明の実施形態を単なる例として説明する。
【０００７】
【図１】本開示の実施形態による、ニューラル推論チップを示す。
【図２】本開示の実施形態による、ニューラル推論チップを示す。
【図３】本開示の実施形態による、ニューラル推論チップを示す。
【図４】本開示の実施形態による、ニューラル推論チップを示す。
【図５】本開示の実施形態による、ニューラル推論チップを示す。
【図６】本開示の実施形態による、ニューラル推論チップを示す。
【図７】本開示の実施形態による、ニューラル推論チップを示す。
【図８】本開示の実施形態による、ニューラル推論チップを動作させるための方法を示す。
【図９】本発明の実施形態による、コンピューティング・ノードを示す。
【発明を実施するための形態】
【０００８】
人工ニューロンは、その出力がその入力の線形結合の非線形関数である数学関数である。一方の出力が他方への入力である場合、２つのニューロンは結合される。重みは、１つのニューロンの出力と別のニューロンの入力との間の接続の強度をエンコードするスカラー値である。
【０００９】
ニューロンは、その入力の加重和に非線形活性化関数を適用することによって、活性化と呼ばれるその出力を計算する。加重和（weighted sum）は、各入力を対応する重みと乗算し、積を累算することによって計算された中間結果である。部分和（partial sum）は、入力のサブセットの加重和である。１つ又は複数の部分和を累算することによって、全ての入力の加重和を段階的に計算することができる。
【００１０】
ニューラル・ネットワークは、１つ又は複数のニューロンの集合である。ニューラル・ネットワークは、層（layer）と呼ばれるニューロンのグループに分けられることが多い。層は、全て同じ層から入力を受け取り、全て出力を同じ層に送り、典型的には類似の関数を実行する、１つ又は複数のニューロンの集合である。入力層は、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層は、ニューラル・ネットワークの外部のターゲットに出力を送る層である。全ての他の層は、中間処理層である。多層ニューラル・ネットワークは、１つより多い層を有するニューラル・ネットワークである。ディープ・ニューラル・ネットワークは、多くの層をもつ多層ニューラル・ネットワークである。
【００１１】
テンソル（tensor）は、数値の多次元アレイである。テンソル・ブロックは、テンソル内の要素の連続するサブ・アレイである。
【００１２】
各ニューラル・ネットワーク層は、重みテンソル、パラメータ・テンソル、入力テンソル、出力テンソル、及び中間テンソルと関連付けられる。重みテンソルは、入力を層に接続する重みの全てを含む。パラメータ・テンソルは、層内のニューロン活性化関数を制御するパラメータの全てを含む。入力テンソルは、層が入力として消費するデータの全てを含む。出力テンソルは、層が出力として計算するデータの全てを含む。中間テンソルは、層が、部分和などの中間計算として生成するあらゆるデータを含む。
【００１３】
ここで図１を参照すると、本開示の実施形態による、ニューラル・コアが示される。ニューラル・コア１００は、出力テンソルの１つのブロックを計算するタイリング可能な（tileable）計算ユニットである。ニューラル・コア１００は、Ｍ個の入力及びＮ個の出力を有する。種々の実施形態において、Ｍ＝Ｎである。出力テンソル・ブロックを計算するために、ニューラル・コアは、Ｍ×１の入力テンソル・ブロック１０１を、Ｍ×Ｎの重みテンソル・ブロック１０２と乗算し、その積を累算して加重和にし、それを１×Ｎの中間テンソル・ブロック１０３内に格納する。Ｕ×Ｎのパラメータ・テンソル・ブロックはＮ個のニューロン活性化関数のそれぞれを指定するＵ個のパラメータを含み、それが中間テンソル・ブロック１０３に適用されて１×Ｎの出力テンソル・ブロック１０５を生成する。
【００１４】
複数のニューラル・コアをニューラル・コア・アレイ内にタイリングすることができる。幾つかの実施形態において、アレイは２次元である。
【００１５】
ニューラル・ネットワーク・モデルは、ニューロン間の接続のグラフ並びにニューロンごとの重み及び活性化関数パラメータを含む、ニューラル・ネットワークにより実行される計算全体をまとめて指定する定数のセットである。訓練（training）は、所望の関数を実行するために、ニューラル・ネットワーク・モデルを修正するプロセスである。推論は、ニューラル・ネットワーク・モデルを修正することなく、ニューラル・ネットワークを入力に適用し、出力を生成するプロセスである。
【００１６】
推論処理ユニットは、ニューラル・ネットワーク推論を実行するプロセッサのカテゴリーである。ニューラル推論チップは、推論処理ユニットの特定の物理インスタンスである。
【００１７】
ここで図２を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ２００は、チップの動作中にデータを格納するためのデータ・メモリ２０１を含む。メモリ２０１は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力２１１及び出力２１２を収容する。チップ２００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コアを含むことができる計算論理２０２を含む。チップ２００は、計算論理２０２に対する構成パラメータを含むことができる、ニューラル・ネットワーク・モデルを格納するためのモデル・メモリ２０３を含む。モデル・メモリ２０３は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力２３１を収容する。チップ２００は、変換動作を定め、オンチップ・メモリと計算論理との間のデータの流れを方向付けるコントローラ論理２０４を含む。チップ２００は、制御論理により実行される命令を格納するための命令メモリ２０５を含む。命令メモリ２０５は、幾つかの実施形態においてオフチップからアドレス指定可能である、入力２５１を含む。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク（図示せず）が提供される。
【００１８】
ニューラル・ネットワーク・モデル、一時的データ、及びコントローラ命令のための、チップ２００上に提供されたメモリ２０２、２０１、２０５を用いると、入力２１１の受信及び出力２１２の送信を除いて、計算中、オフチップ・メモリ・アクセスに対する必要性はない。従って、チップ２００は、そうしたオンチップ・メモリを提供しない代替的な手法と比べて、迅速でエネルギー効率がよい。
【００１９】
計算論理２０２は、１つ又は複数のニューラル・コアを含むことができる。そうした実施形態において、コアは、オンチップ・ネットワークにより接続され、中間計算及び最終計算を他のコアに直接通信するのを可能にする。
【００２０】
以下に詳述するように、種々の実施形態においては、図２に示されるように、オンチップ・コンポーネントを、コアのアレイの外部に集中させることができる。他の実施形態において、オンチップ・コンポーネントは、コアの間で部分的に分散される。
【００２１】
ここで図３を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ３００は、チップの動作中にデータを格納するためのデータ・メモリ３０１を含む。メモリ３０１は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力３１１及び出力３１２を収容する。チップ３００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コア３２１を含む計算論理３０２を含む。チップ３００は、計算論理３０２に対する構成パラメータを含むことができる、ニューラル・ネットワーク・モデルを格納するためのモデル・メモリ３０３を含む。モデル・メモリ３０３は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力３３１を収容する。チップ３００は、変換動作を定め、オンチップ・メモリと計算論理との間のデータの流れを方向付けるコントローラ論理３０４を含む。チップ３００は、制御論理によって実行される命令を格納するための命令メモリ３０５を含む。命令メモリ３０５は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力３５１を含む。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク３０６が提供される。
【００２２】
この実施形態において、計算が複数のコア３２１の間で分散される。
【００２３】
ここで図４を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ４００は、チップの動作中にデータを格納するためのデータ・メモリ４０１を含む。メモリ４０１は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力４１１及び出力４１２を収容する。チップ４００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コア４２１を含む計算論理４０２を含む。チップ４００は、計算論理４０２に対する構成パラメータを含むことができる、ニューラル・ネットワーク・モデルを格納するためのモデル・メモリ４０３を含む。モデル・メモリ４０３は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力４３１を収容する。チップ４００は、変換動作を定め、オンチップ・メモリと計算論理との間のデータの流れを方向付けるコントローラ論理４０４を含む。チップ４００は、制御論理により実行される命令を格納するための命令メモリ４０５を含む。命令メモリ４０５は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力４５１を含む。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク４０６が提供される。
【００２４】
この実施形態において、複数のコア４２１の間で計算が分散される。コントローラ論理及びデータ・メモリは、複数のコア４２１の間で部分的に分散される。従って、チップ・レベルのコントローラ４０４とデータ・メモリ４０１、並びにコアごとのコントローラ論理とデータ・メモリの両方がある。
【００２５】
ここで図５を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ５００は、チップの動作中にデータを格納するためのデータ・メモリ５０１を含む。メモリ５０１は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力５１１及び出力５１２を収容する。チップ５００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コア５２１を含む計算論理５０２を含む。チップ５００は、計算論理５０２についての構成パラメータを含むことができる、ニューラル・ネットワーク・モデルを格納するためのモデル・メモリ５０３を含む。モデル・メモリ５０３は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力５３１を収容する。チップ５００は、変換動作を定め、オンチップ・メモリと計算論理との間のデータの流れを方向付けるコントローラ論理５０４を含む。チップ５００は、制御論理によって実行される命令を格納するための命令メモリ５０５を含む。命令メモリ５０５は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力５５１を含む。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク５０６が提供される。
【００２６】
この実施形態において、複数のコア５２１の間で計算が分散される。コントローラ論理、データ・メモリ、モデル・メモリ、及び命令メモリは、複数のコア５２１の間で部分的に分散される。従って、チップ・レベルのコントローラ論理５０４、データ・メモリ５０１、モデル・メモリ５０３、及び命令メモリ５０５と、対応するコアごとのエンティティとの両方がある。
【００２７】
ここで図６を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ６００は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力６１１及び出力６１２を収容する。チップ６００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コア６２１を含む計算論理６０２を含む。チップ６００は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力６３１を収容する。チップ６００は、変換動作を定め、オンチップ・メモリと計算論理との間のデータの流れを方向付けるコントローラ論理６０４を含む。チップ６００は、制御論理により実行される命令を格納するための命令メモリ６０５を含む。命令メモリ６０５は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力６５１を含む。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク（図示せず）が提供される。
【００２８】
この実施形態において、複数のコア６２１の間で計算が分散される。対応するチップ・レベルのエンティティを有することなく、データ・メモリ及びモデル・メモリも、複数のコア６２１の間で分散される。従って、入力６１１及び出力６１２は、オンチップ・ネットワークを介して、種々のコア６２１上の複数のデータ・メモリ・エンティティに結合される。同様に、入力６３１は、オンチップ・ネットワークを介して、種々のコア６２１上の複数のモデル・メモリ・エンティティに結合される。コントローラ論理及び命令が、複数のコア６２１の間で部分的に分散される。従って、チップ・レベルのコントローラ論理６０４と命令メモリ６０５、並びに対応するコアごとのエンティティの両方がある。
【００２９】
ここで図７を参照すると、本開示の実施形態による、ニューラル推論チップが示される。チップ７００は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力７１１及び出力７１２を収容する。チップ７００は、多層ニューラル・ネットワーク内の中間処理層を実装するように構成された１つ又は複数のニューラル・コア７２１を含む計算論理７０２を含む。チップ７００は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力７３１を収容する。チップ７００は、幾つかの実施形態においてオフチップからアドレス指定可能な、入力７５１を収容する。これらのコンポーネントを相互接続するために、オンチップ・ネットワーク（図示せず）が提供される。
【００３０】
この実施形態において、複数のコア７２１の間で計算が分散される。対応するチップ・レベルのエンティティを有することなく、データ・メモリ、コントローラ論理、命令メモリ、及びモデル・メモリも、複数のコア７２１の間で分散される。従って、入力７１１及び出力７１２は、オンチップ・ネットワークを介して、種々のコア７２１上の複数のデータ・メモリ・エンティティに結合される。同様に、入力７３１は、オンチップ・ネットワークを介して、種々のコア７２１上の複数のモデル・メモリ・エンティティに結合され、入力７５１は、オンチップ・ネットワークを介して、種々のコア７２１上の複数の命令メモリ・エンティティに結合される。
【００３１】
上述される種々の実施形態は、計算のための分散型論理を提供する。種々の実施形態において、複数の分散型ニューラル・コアは並列に動作する。この並列性は、入力の提示と出力の計算との間の待ち時間を低減させながら、ニューラル・ネットワーク処理の速度を上げることを可能にする。各ニューラル・コアは、所与の問題に関してより大きいニューラル・ネットワーク・モデルの一部を実装する。各ニューラル・コアは、チップ入力全体の一部と、ニューラル・ネットワーク・モデル全体の一部とを受け取る。これにより、チップ及びコアのモジュール性が可能になり、それにより、システム設計、デバッグ及びテストが効率化する。
【００３２】
上述される種々の実施形態は、入力データ及び出力データのための分散型メモリを提供する。データ・メモリはニューラル・コアに分散されるので、メモリ及び計算がさらに局所化され、従って、データ移動のエネルギーが低減する。特に、オフチップ・メモリのみを提供する代替的手法は、データをチップに及びチップから移送する際に著しいエネルギーを消費する。幾つかの実施形態において、データ・メモリはチップ・レベルで提供され、次に、データのサブセットが、個々のニューラル・コアに提供される。幾つかの実施形態において、データ・メモリは、チップ・レベル及び各コアの両方で提供される。そうした実施形態において、チップ・レベルのデータ・メモリ・コンテンツの一部又全てを、各コアのメモリのキャッシュに入れることができ、それにより、データの局所性が与えられる。幾つかの実施形態において、メモリは、コア・レベルで提供される。幾つかのそうした実施形態において、メモリは、コアからコアへと複製される。幾つかの実施形態において、全てのコアのメモリが結合されて単一の仮想メモリとなる。
【００３３】
上述される種々の実施形態は、各チップ上のモデル・メモリに関して述べられたように、分散型ニューラル・ネットワーク・モデルを提供する。ニューラル・ネットワーク・モデル全体の個々の部分が、ニューラル・コアに分散される。ニューラル・ネットワーク・モデルをそれぞれのコアに格納するメモリの一部を分散させることにより、それを中央の位置から伝送する必要性が最小になる。ニューラル・ネットワーク・モデルの一般的な又は再利用される部分を中央に格納し、必要に応じて、個々のコアに送ることができる。このようにして、所与のタスクのために、コアを動的に再構成することができる。同様に、各コアは、ニューラル・ネットワーク・モデル全体を備える必要がないため、エネルギー・コストが最小になる。
【００３４】
従って、本開示は、ニューラル・ネットワークを実装するのに適したチップを提供する。そうしたニューラル・ネットワークは、入力データに基づいて、推論及び予測を提供することができ、１つ又は複数の相互接続された中間処理層を含むことができる。特に、ニューラル・ネットワーク・モデルにおいて、入力層と出力層との間に、複数の層を含ませることができる。種々のそうした構成は、当技術分野において周知である。上述のように、ニューラル推論チップの種々の実施形態は、ニューラル・ネットワーク・モデルを格納するためのオンチップ・メモリ、入力データ及び出力データを格納するためのオンチップ・メモリ、中間処理層からの一時的データを格納するためのオンチップ・メモリ、中間処理層を実装するための計算論理、変換動作を指定し、オンチップ・メモリと計算論理との間のデータの流れを方向付ける制御論理、制御論理により実行される命令を格納するためのオンチップ・メモリ、及びコンポーネントを相互接続するためのオンチップ・ネットワークを含む。
【００３５】
幾つかの実施形態において、計算論理は、１つ又は複数のネットワーク・オン・チップを介して、中間及び最終計算を他のニューラル・コアに直接通信できる１つ又は複数のニューラル・コアのアレイとして編成される。
【００３６】
上の図を参照して説明されるように、ニューラル推論チップのコンポーネントの各々を、ニューラル・コアの間で分散させ、ニューラル・コア・アレイの外部に集中させ、又は部分的に分散させ、部分的に集中させることができる。
【００３７】
種々の実施形態において、ニューラル推論チップは、ニューラル・ネットワーク・モデルにより指定される計算の１つ又は複数の層を適用することによって、入力データを出力データに変換する。幾つかのそうした実施形態において、中間処理層の出力は、データ・メモリ内に格納される。
【００３８】
幾つかの実施形態において、各中間処理層を計算するのに必要なパラメータは、ニューラル・ネットワーク・モデル・メモリ内に格納される。例えば、幾つかの実施形態において、パラメータは、シナプス重み又はシナプス活性化関数を含む。
【００３９】
幾つかの実施形態において、各ニューラル・コアにより実施される計算は、ニューラル・ネットワーク・モデル・メモリから異なるパラメータのセットをロードすることにより、オンラインで再構成することができる。上述のように、ニューラル・ネットワーク・モデル・メモリは、各ニューラル・コアにローカルであっても、チップ上に集中しても、又は部分的に分散し、部分的に集中してもよい。
【００４０】
幾つかの実施形態において、各ニューラル・コアへの入力は、データ・メモリ内の種々のアドレスからデータをロードすることによって、オンラインで再構成することができる。このようにして、オフチップ・アクセスのために時間又はエネルギーを費やすことなく、オンチップ・メモリから、ニューラル・ネットワークへのシリアル入力を提供することができる。
【００４１】
種々の実施形態において、ニューラル・ネットワーク・モデルのためのメモリは、チップが推論に使用される前に、オフラインで構成される。幾つかの実施形態において、命令のためのメモリも同様に、オフラインで構成される。幾つかの実施形態において、チップが推論に使用されている間、入力データ及び出力データのためのメモリは、オンラインで更新される。幾つかの実施形態において、中間処理層からの一時的データのためのメモリは、オンラインで更新される。
【００４２】
種々の実施形態において、ニューラル・ネットワーク・モデルのためのメモリを、付加的にオンラインで構成又は更新することができる。同様に、幾つかの実施形態において、命令のためのメモリを付加的にオンラインで構成又は更新することができる。
【００４３】
一般に、本開示によるチップの動作は、オンライン段階及びオフライン段階、つまり、計算中及び非計算中に分解することができる。上述のように、幾つかの実施形態において、チップの構成はオフラインで実行される。チップ構成中、ニューラル・ネットワーク・モデルが、チップ上にロードされる。このニューラル・ネットワーク・モデルは、手作りされた、又は学習アルゴリズム（例えば、深層学習又は強化学習）を用いてオフラインで学習されたものとすることができる。コントローラ命令のリスト、又はコントローラ・プログラムが、チップ上にロードされる。このコントローラ・プログラムは、手作りされた、又は高レベル設計言語から自動的にコンパイルされたものとすることができる。
【００４４】
ニューラル・ネットワーク・モデルをロードすることにより、チップがオフラインで構成されると、ニューラル・ネットワーク推論をオンライン方式でランタイムに実行する準備が整う。この段階中、入力又は入力のシーケンスがチップに提示され、チップはそれぞれ、出力又は出力のシーケンスを生成する。チップは、いずれのオフチップ命令又はプログラムもなしに、かつ、中間処理層からの一時的データを格納するためのオフチップ・メモリも必要とせずに、入力を出力に変換することができる。
【００４５】
種々の実施形態において、１つ又は複数のオンチップ・ネットワークにより、ニューラル・コアとの通信が与えられる。種々の実施形態において、オンチップ・ネットワークは、ニューラル・ネットワーク・モデルを集中型モデル・メモリからニューラル・コアに分散させるために用いられる。種々の実施形態において、オンチップ・ネットワークは、コントローラ命令を集中型命令メモリからニューラル・コアに分散させるために用いられる。種々の実施形態において、オンチップ・ネットワークは、入力データをニューラル・コアに分散させ、ニューラル・コアから出力データを集約するために用いられる。
【００４６】
複数のニューラル・コアを有する種々の実施形態において、オンチップ・ネットワークは、隣接するニューラル・コアの間で中間計算を通信する。同様に、複数のニューラル・コアを有する種々の実施形態において、オンチップ・ネットワークは、隣接するニューラル・コアの間で、中間処理層からの一時的データを通信する。
【００４７】
各ニューラル・コアは、中央のモデル・メモリからそれにロードされた部分に従って、ニューラル・ネットワーク・モデル全体の一部を実装する。コアは、オンチップ・ネットワークを介して協働し、完全な結果を達成する。種々の実施形態において、オンチップ・ネットワークは、コアの間に様々なレベルの接続性を提供する。幾つかの実施形態において、コアは、完全に相互接続される。幾つかの実施形態において、ニューラル・コアは、その左、右、上及び下のコアとのみ通信する。
【００４８】
上述のように、種々の実施形態において、コントローラ論理がオンチップに与えられる。幾つかの実施形態において、制御論理は、命令セット・アーキテクチャにより定められるとおりに、チップの動作全体を統合する（orchestrate）プログラム可能コントローラとして実装される。幾つかの実施形態において、コントローラは、集中され、チップ・レベル全体でプログラム可能マイクロコードを実行する。幾つかの実施形態において、コントローラは、ニューラル・コアの間で分散され、各コントローラは、コア・レベルでプログラム可能マイクロコードを実行する。幾つかの実施形態において、コントローラは、階層的であり、複数レベルの粒度（例えば、集中型チップ・レベル、分散型コア・レベル、及び中間のゼロ又はそれより多いレベル）で命令を実行するコンポーネントを有する。幾つかの実施形態において、集中型コントローラ・コンポーネントは、チップ・レベル命令を実行し、コア・レベル命令を、各ニューラル・コア内のコントローラ・コンポーネントに分散させる。
【００４９】
種々の実施形態において、コントローラは、プログラム可能である。従って、チップ・レベル命令及びコア・レベル命令は、連携してチップの動作を指定する。チップ・レベル命令及びコア・レベル命令は、非常に高いスループットのために、チップ動作全体及び各コアの動作がパイプライン化されることを保証する。種々の実施形態において、命令セット・アーキテクチャは、チップの動作を統合するための制御命令を含む。例えば、命令は、ニューラル・ネットワーク・メモリ・アドレス及び読み取り／書き込み動作を生成することと、データに対して実行される計算動作を指定することと、コア間及びコアとメモリ間のデータの経路指定を行うことと、入力、出力、及びデータ・メモリ・アドレス、並びに読み取り／書き込み動作を生成することと、を含むことができる。
【００５０】
ここで図８を参照すると、本開示の実施形態による、ニューラル推論チップを動作させる方法が示される。８０１において、入力データが、ニューラル推論チップの第２のメモリに書き込まれる。幾つかの実施形態において、入力データは、ニューラル推論チップのホストにより書き込まれる。８０２において、入力データは、ニューラル推論チップの複数のニューラル・コアに提供される。ニューラル推論チップの第１のメモリ内のニューラル・ネットワーク・モデルにより定められるニューラル・ネットワークの複数の層の各々について、８０３において、ニューラル・ネットワーク・モデルの一部が第１のメモリから複数のニューラル・コアに提供され、８０４において、命令の一部がニューラル推論チップの第４のメモリからニューラル・コアに提供され、８０５において、複数のニューラル・コアにより入力データを出力データに変換する。８０６において、複数のニューラル・コアから出力データが集約される。８０７において、集約された出力は、第２のメモリに書き込まれる。幾つかの実施形態において、中間結果が、複数のニューラル・コアの間で通信される。幾つかの実施形態において、ニューラル推論チップのホストにより、第２のメモリから集約された出力データが読み取られる。
【００５１】
図９を参照すると、コンピューティング・ノードの例の概略が示される。コンピューティング・ノード１０は、好適なコンピューティング・ノードの一例に過ぎず、本発明で説明される本発明の実施形態の使用範囲又は機能に関する何らかの制限を示唆することを意図するものではない。それにも関わらず、コンピューティング・ノード１０は、上述した機能のいずれも実装もしくは実行し又はその両方をすることができる。
【００５２】
コンピューティング・ノード１０において、コンピュータ・システム／サーバ１２があり、それは多数の他の汎用又は専用コンピューティング・システム環境又は構成と共に動作可能である。コンピュータ・システム／サーバ１２と共に用いるのに好適であり得る周知のコンピューティング・システム、環境、もしくは構成又はそれらの組み合わせの例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等が含まれる。
【００５３】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ１２は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【００５４】
図９に示されるように、コンピューティング・ノード１０におけるコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット１６、システム・メモリ２８、及びシステム・メモリ２８を含む種々のシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができる。
【００５５】
バス１８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００５６】
コンピュータ・システム／サーバ１２は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１２によりアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【００５７】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０もしくはキャッシュ・メモリ３２又はその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム３４を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス１８に接続することができる。以下でさらに示され説明されるように、メモリ２８は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００５８】
限定ではなく例として、メモリ２８内に、プログラム・モジュール４２のセット（少なくとも１つ）を有するプログラム／ユーティリティ４０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール４２は、一般に、本明細書で説明される本発明の実施形態の機能及び／又は方法を実行する。
【００５９】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４等といった１つ又は複数の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ１２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することもできる。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース２２を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ２０は、バス１８を介して、コンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されていないが、コンピュータ・システム／サーバ１２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコア、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【００６０】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００６１】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、命令がそこに記録された機械的にエンコアされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００６２】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はその組み合わせなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ又はその組み合わせを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
【００６３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコア、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コア又はオブジェクト・コアとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【００６４】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００６５】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むようにすることもできる。
【００６６】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００６７】
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコアの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【００６８】
本発明の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は本発明を開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
【図１】
2021519454.tif 000003
【図２】
2021519454.tif 000004
【図３】
2021519454.tif 000005
【図４】
2021519454.tif 000006
【図５】
2021519454.tif 000007
【図６】
2021519454.tif 000008
【図７】
2021519454.tif 000009
【図８】
2021519454.tif 000010
【図９】
2021519454.tif 000011
【手続補正書】
【提出日】令和2年10月21日(2020.10.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラル推論チップであって、
オンチップ・ネットワークにより相互接続された複数のニューラル・コアと、
前記オンチップ・ネットワークにより前記複数のコアの各々に接続された、ニューラル・ネットワーク・モデルを格納するための第１のオンチップ・メモリと、
前記オンチップ・ネットワークにより前記複数のコアの各々に接続された、入力データ及び出力データを格納するための第２のオンチップ・メモリと、
を含む、ニューラル推論チップ。
【請求項２】
前記複数のニューラル・コア、前記第１のオンチップ・メモリ、及び前記第２のオンチップ・メモリに接続された少なくとも１つのコントローラと、
前記少なくとも１つのコントローラに接続された、コントローラ命令を格納するための第３のオンチップ・メモリと、
をさらに含む、請求項１に記載のニューラル推論チップ。
【請求項３】
前記少なくとも１つのコントローラは、前記オンチップ・ネットワークを介して、前記複数のニューラル・コア、前記第１のオンチップ・メモリ、及び前記第２のオンチップ・メモリに接続される、請求項２に記載のニューラル推論チップ。
に接続され、
【請求項４】
前記複数のニューラル・コアの各々は、前記ニューラル・ネットワーク・モデルの一部を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項５】
前記複数のニューラル・コアの各々は、前記入力データ及び出力データの一部を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項６】
前記複数のニューラル・コアの各々は、コントローラ命令を格納するためのローカル・メモリをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項７】
前記複数のニューラル・コアの各々は、ローカル・コントローラをさらに含む、請求項１に記載のニューラル推論チップ。
【請求項８】
前記複数のニューラル・コアは、アレイを形成する、請求項１に記載のニューラル推論チップ。
【請求項９】
前記複数のニューラル・コアの各々は、前記オンチップ・ネットワークにより、前記アレイ内の隣接するコアに接続される、請求項８に記載のニューラル推論チップ。
【請求項１０】
ニューラル推論チップであって、
１つ又は複数のニューラル・コアのアレイと、
ニューラル・ネットワーク・モデルを格納するための第１のメモリと、
入力データ及び出力データを格納するための第２のメモリと、
一時的データを格納するための第３のメモリと、
コントローラ命令を格納するための第４のメモリと、
少なくとも１つのオンチップ・ネットワークと、
を含み、
前記ニューラル・ネットワーク・モデルは、入力データを出力データに変換するように適合された１つ又は複数の相互接続された処理層を含み、
前記１つ又は複数のニューラル・コアの各々は、前記少なくとも１つのオンチップ・ネットワークを介して、中間データを、前記１つ又は複数のニューラル・コアの他のものに直接通信するように適合され、
前記ニューラル推論チップは、前記１つ又は複数のニューラル・コアにより適用される変換動作を制御し、前記１つ又は複数のニューラル・コアと前記メモリとの間のデータの流れを方向付けるための前記コントローラ命令を実行するように適合された、ニューラル推論チップ。
【請求項１１】
前記ニューラル・コアの各々は、前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリの少なくともローカル部分を含む、請求項１０に記載のニューラル推論チップ。
【請求項１２】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、前記ニューラル・コアの間で分散される、請求項１０に記載のニューラル推論チップ。
【請求項１３】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、前記ニューラル・コアにローカルな部分と、集中部分とを含む、請求項１０に記載のニューラル推論チップ。
【請求項１４】
前記コントローラ命令は、１つ又は複数のコントローラにより実行される、請求項１０に記載のニューラル推論チップ。
【請求項１５】
前記ニューラル・コアの各々は、ローカル・コントローラを含む、請求項１４に記載のニューラル推論チップ。
【請求項１６】
集中コントローラをさらに含む、請求項１４に記載のニューラル推論チップ。
【請求項１７】
集中コントローラをさらに含み、前記ニューラル・コアの各々は、ローカル・コントローラを含む、請求項１４に記載のニューラル推論チップ。
【請求項１８】
前記少なくとも１つのオンチップ・ネットワークは、
前記ニューラル・ネットワーク・モデルを前記第１のメモリから前記ニューラル・コアに分散し、
前記コントローラ命令を前記第４のメモリから前記ニューラル・コアに分散し、
入力データを前記ニューラル・コアに分散し、
前記ニューラル・コアから出力データを集約する
ように適合された、請求項１０に記載のニューラル推論チップ。
【請求項１９】
前記コントローラは、命令セットに従ってプログラム可能である、請求項１４に記載のニューラル推論チップ。
【請求項２０】
前記集中コントローラは、チップ・レベル命令を実行するように適合され、前記ローカル・コントローラは、コア・レベル命令を実行するように適合された、請求項１７に記載のニューラル推論チップ。
【請求項２１】
前記集中コントローラは、コア・レベル命令を前記ローカル・コントローラに分散するように適合された、請求項１７に記載のニューラル推論チップ。
【請求項２２】
前記第１のメモリ、前記第２のメモリ、前記第３のメモリ、又は前記第４のメモリは、推論中にオンラインで更新される、請求項１０に記載のニューラル推論チップ。
【請求項２３】
前記第１のメモリ及び前記第２のメモリは、推論前にオフラインで構成される、請求項１０に記載のニューラル推論チップ。
【請求項２４】
前記第１のメモリ内の前記ニューラル・ネットワーク・モデルを修正することによって、オンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２５】
前記第４のメモリ内の前記コントローラ命令を修正することによって、オンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２６】
ニューラル・ネットワーク・パラメータを前記第１のメモリから前記ニューラル・コアにロードすることによって、前記ニューラル・コアをオンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２７】
前記ニューラル・ネットワーク・モデルの中間処理層からの前記一時的データについてデータを前記第３のオンチップ・メモリからロードすることによって、前記ニューラル・コアへの入力をオンラインで再構成するように適合された、請求項１０に記載のニューラル推論チップ。
【請求項２８】
ニューラル推論チップを動作させる方法であって、
入力データを前記ニューラル推論チップの第２のメモリに書き込むことと、
前記入力データを、前記ニューラル推論チップの複数のニューラル・コアに提供することと、
前記ニューラル推論チップの第１のメモリ内のニューラル・ネットワーク・モデルにより定められる前記ニューラル・ネットワークの複数の層の各々について、
前記ニューラル・ネットワーク・モデルの一部を、前記第１のメモリから前記複数のニューラル・コアに提供すること、
命令の一部を、前記ニューラル推論チップの第４のメモリから前記複数のニューラル・コアに提供すること、及び、
前記複数のニューラル・コアにより、前記入力データを前記出力データに変換することと、
前記複数のニューラル・コアから前記出力データを集約することと、
前記集約された出力データを前記第２のメモリに書き込むことと、
を含む、方法。
【請求項２９】
中間結果を前記複数のニューラル・コアの間で通信することをさらに含む、請求項２８に記載の方法。
【請求項３０】
前記ニューラル推論チップのホストにより、前記第２のメモリから前記集約された出力データを読み取ることをさらに含む、請求項２８に記載の方法。
【国際調査報告】
2021519454.tif 000012
2021519454.tif 000013