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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-542852ニューラル・ネットワークを用いたシステム、および方法
<>
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図1
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図2
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図3
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図4
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図5
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図6
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図7
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図8
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図9
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図10
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図11
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図12
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図13
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図14
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図15
  • 特表-ニューラル・ネットワークを用いたシステム、および方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-12
(54)【発明の名称】ニューラル・ネットワークを用いたシステム、および方法
(51)【国際特許分類】
   G06N 3/063 20230101AFI20231004BHJP
   G06N 3/10 20060101ALI20231004BHJP
   G06F 15/80 20060101ALI20231004BHJP
   G06F 11/16 20060101ALN20231004BHJP
【FI】
G06N3/063
G06N3/10
G06F15/80
G06F11/16 629
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023515696
(86)(22)【出願日】2021-07-27
(85)【翻訳文提出日】2023-03-08
(86)【国際出願番号】 CN2021108743
(87)【国際公開番号】W WO2022068343
(87)【国際公開日】2022-04-07
(31)【優先権主張番号】17/039,559
(32)【優先日】2020-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】アコプヤン、フィリップ
(72)【発明者】
【氏名】アーサー、ジョン、バーノン
(72)【発明者】
【氏名】キャシディ、アンドリュー、ステファン
(72)【発明者】
【氏名】デボール、マイケル、ヴィンセント
(72)【発明者】
【氏名】ディ ノルフォ、カーメロ
(72)【発明者】
【氏名】フリックナー、マイロン ディー
(72)【発明者】
【氏名】クスニッツ、ジェフリー エー
(72)【発明者】
【氏名】モダ、ダルメンドラ エス
(72)【発明者】
【氏名】オルテガ オテロ、カルロス
(72)【発明者】
【氏名】澤田 潤
(72)【発明者】
【氏名】ショー、ベンジャミン ゴードン
(72)【発明者】
【氏名】タバ、ブライアン セイショー
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034AA00
5B034CC01
(57)【要約】
ニューラル・ネットワークを用いたシステムであって、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備え、ニューラル・ネットワーク処理コアがニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合される。活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を含むメモリ・マップが含まれ、さらにニューラル・ネットワーク・プロセッサ・システムと動作可能に接続されるインターフェースが含まれており、インターフェースはホストと通信するように、さらにメモリ・マップを露出するように適合される。
【特許請求の範囲】
【請求項1】
システムであって、
少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、前記ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合される、ニューラル・ネットワーク・プロセッサ・システムと、
前記活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備えるメモリ・マップと、
前記ニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されたインターフェースであり、前記インターフェースが、ホストと通信するように、さらに前記メモリ・マップを露出するように適合されるインターフェースと
を備えるシステム。
【請求項2】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するように構成される、請求項1に記載のシステム。
【請求項3】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してAPIを露出し、前記APIは、前記インターフェースを介して前記ニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するための方法を含む、請求項2に記載のシステム。
【請求項4】
前記インターフェースは、AXI、PCIe、USB、イーサネット(R)、またはファイアワイヤ・インターフェースを含む、請求項1に記載のシステム。
【請求項5】
冗長ニューラル・ネットワーク処理コアをさらに備えており、前記冗長ニューラル・ネットワーク処理コアが、前記ニューラル・ネットワーク処理コアと並列してニューラル・ネットワーク・モデルを計算するように構成される、請求項1に記載のシステム。
【請求項6】
前記ニューラル・ネットワーク・プロセッサ・システムが、ニューラル・ネットワーク・モデルの冗長計算を提供するように構成される、請求項1に記載のシステム。
【請求項7】
前記ニューラル・ネットワーク・プロセッサ・システムが、ハードウェア、ソフトウェア、およびモデル・レベルの冗長性のうちの少なくとも1つを提供するように構成される、請求項1に記載のシステム。
【請求項8】
前記ニューラル・ネットワーク・プロセッサ・システムがプログラマブル・ファームウェアを備えており、前記プログラマブル・ファームウェアが前記入力データおよび出力データを処理するように構成可能である、請求項2に記載のシステム。
【請求項9】
前記処理がバッファリングを含む、請求項8に記載のシステム。
【請求項10】
前記ニューラル・ネットワーク・プロセッサ・システムが、不揮発性メモリを備える、請求項1に記載のシステム。
【請求項11】
前記ニューラル・ネットワーク・プロセッサ・システムが、構成または動作パラメータ、もしくはプログラム状態を格納するように構成される、請求項10に記載のシステム。
【請求項12】
前記インターフェースが、リアルタイムまたはリアルタイムの動作より速く構成される、請求項1に記載のシステム。
【請求項13】
前記インターフェースが少なくとも1つのセンサまたはカメラに通信可能に結合される、請求項1に記載のシステム。
【請求項14】
ネットワークによって相互接続される、複数の請求項1に記載の前記システムを備えるシステム。
【請求項15】
ネットワークによって相互接続される、複数の請求項1に記載の前記システムと、複数の計算ノードとを備えるシステム。
【請求項16】
複数の互いに素のメモリ・マップであり、それぞれが前記複数の請求項1に記載のシステムのうちの1つに対応するメモリ・マップをさらに備える、請求項15に記載のシステム。
【請求項17】
方法であって、前記方法は、
ニューラル・ネットワーク・プロセッサ・システムにおけるニューラル・ネットワーク記述をホストからインターフェースを介して受信することを含み、
前記ニューラル・ネットワーク・プロセッサ・システムが、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、前記ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合され、
前記インターフェースが前記ニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されており、
前記方法は、さらに、前記インターフェースを介してメモリ・マップを露出することを含み、前記メモリ・マップが、前記活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備えており、
前記方法は、さらに、前記ニューラル・ネットワーク・プロセッサ・システムにおける入力データを前記インターフェースを介して受信することと、
前記ニューラル・ネットワーク・モデルに基づいて前記入力データから出力データを計算することと、
前記ニューラル・ネットワーク・プロセッサ・システムからの前記出力データを前記インターフェースを介して提供することと
を含む方法。
【請求項18】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供する、請求項17に記載の方法。
【請求項19】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してAPIを露出し、前記APIは、前記インターフェースを介して前記ニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するための方法を含む、請求項17に記載の方法。
【請求項20】
前記インターフェースが、リアルタイムまたはリアルタイム速度より速く動作する、請求項17に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、ニューラル推論のためのシステムに関し、より詳しくは、デプロイ可能な推論システムのためのメモリ・マップト・ニューラル・ネットワーク・アクセラレータに関する。
【発明の概要】
【0002】
本開示の実施形態によれば、システムであって、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合される、ニューラル・ネットワーク・プロセッサ・システムと、活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備えるメモリ・マップと、ニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されたインターフェースであり、インターフェースが、ホストと通信するように、さらにメモリ・マップを露出するように適合されるインターフェースとを備えるシステムの方法およびそのシステムのためのコンピュータ・プログラムが提供される。
【0003】
本開示の実施形態によれば、ニューラル・ネットワーク・プロセッサ・システムは、インターフェースを介してニューラル・ネットワーク記述を受信し、インターフェースを介して入力データを受信し、インターフェースを介して出力データを提供するように構成される。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムは、インターフェースを介してAPIを露出し、APIは、インターフェースを介してニューラル・ネットワーク記述を受信し、インターフェースを介して入力データを受信し、インターフェースを介して出力データを提供するための方法を含む。いくつかの実施形態では、インターフェースは、AXI、PCIe、USB、イーサネット(R)、またはファイアワイヤ・インターフェースを含む。
【0004】
いくつかの実施形態では、システムが、冗長ニューラル・ネットワーク処理コアをさらに備えており、冗長ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク処理コアと並列してニューラル・ネットワーク・モデルを計算するように構成される。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムがニューラル・ネットワーク・モデルの冗長計算を提供するように構成され、またはハードウェア、ソフトウェア、およびモデル・レベルの冗長性のうちの少なくとも1つを提供するように構成される、あるいはその両方である。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムがプログラマブル・ファームウェアを備えており、プログラマブル・ファームウェアが入力データおよび出力データを処理するように構成可能である。いくつかの実施形態では、上記処理がバッファリングを含む。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムが、不揮発性メモリを含む。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムが、構成または動作パラメータ、もしくはプログラム状態を格納するように構成される。いくつかの実施形態では、インターフェースが、リアルタイムまたはリアルタイムの動作より速く構成される。いくつかの実施形態では、インターフェースが、少なくとも1つのセンサまたはカメラに通信可能に結合される。いくつかの実施形態では、システムは、ネットワークによって相互接続される、複数の上述したようなシステムを備える。いくつかの実施形態では、ネットワークによって相互接続される、複数の上述したようなシステムと、複数の計算ノードとを備えるシステムが提供される。いくつかの実施形態では、システムが、複数の互いに素のメモリ・マップであり、それぞれが複数の上述したようなシステムのうちの1つに対応するメモリ・マップをさらに備える。
【0005】
本開示の他の態様によれば、方法であって、方法は、ニューラル・ネットワーク・プロセッサ・システムにおけるニューラル・ネットワーク記述をホストからインターフェースを介して受信することを含み、ニューラル・ネットワーク・プロセッサ・システムが、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合され、インターフェースがニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されており、方法は、さらに、インターフェースを介してメモリ・マップを露出することを含み、メモリ・マップが、活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を含み、方法は、さらに、ニューラル・ネットワーク・プロセッサ・システムにおける入力データをインターフェースを介して受信することと、ニューラル・ネットワーク・モデルに基づいて入力データから出力データを計算することと、ニューラル・ネットワーク・プロセッサ・システムからの出力データをインターフェースを介して提供することとを含む方法が提供される。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムは、インターフェースを介してニューラル・ネットワーク記述を受信し、インターフェースを介して入力データを受信し、インターフェースを介して出力データを提供する。いくつかの実施形態では、ニューラル・ネットワーク・プロセッサ・システムは、インターフェースを介してAPIを露出し、APIは、インターフェースを介してニューラル・ネットワーク記述を受信し、インターフェースを介して入力データを受信し、インターフェースを介して出力データを提供するための方法を含む。いくつかの実施形態では、インターフェースが、リアルタイムまたはリアルタイム速度より速く動作する。
【図面の簡単な説明】
【0006】
図1】本開示の実施形態による例示的なメモリ・マップト(MM)システムを示す図である。
図2】本開示の実施形態による例示的なメッセージ・パッシング(MP)システムを示す図である。
図3】本開示の実施形態によるニューラル・コアを示す図である。
図4】本開示の実施形態による例示的な推論処理ユニット(IPU)を示す図である。
図5】本開示の実施形態による例示的なマルチコアの推論処理ユニット(IPU)を示す図である。
図6】本開示の実施形態によるニューラル・コアおよび関連ネットワークを示す図である。
図7】本開示の実施形態による、ホスト・システムとIPUとの間の統合の方法を示す図である。
図8】(A)~(C)は、本開示の実施形態による冗長の例示的な方法を示す図である。
図9】本開示の実施形態によるメモリ・マップト・ニューラル推論エンジンのシステム・アーキテクチャを示す図である。
図10】本開示の実施形態による例示的なランタイム・ソフトウェア・スタックを示す図である。
図11】本開示の実施形態による例示的な一連の実行を示す図である。
図12】本開示の実施形態によるニューラル推論装置の例示的な統合を示す図である。
図13】本開示の実施形態によるニューラル推論装置の例示的な統合を示す図である。
図14】本開示の実施形態による、ニューラル推論装置がPCIeブリッジを介してホストと相互接続される例示的な構成を示す図である。
図15】本開示の実施形態による、ニューラル・ネットワーク・プロセッサ・システムにおいてメモリ・マップを露出する方法のフローチャートである。
図16】本開示の実施形態による計算ノードを示す図である。
【発明を実施するための形態】
【0007】
様々な従来の計算システムは、共有メモリ/メモリ・マップト(MM)パラダイムを介してシステム・コンポーネント間で通信を行う。対照的に、ニューロシナプティック・システムなどの様々な並列分散計算システムは、メッセージ・パッシング(MP)パラダイムによって相互通信を行う。本開示は、それらの2種類のシステム間に効率的なインターフェースを提供する。
【0008】
人工ニューロンは、出力が、その入力の線形結合の非線形関数である数学関数である。2つのニューロンのうちの一方の出力が他方への入力である場合に、その2つのニューロンは接続される。重みは、一方のニューロンの出力ともう一方のニューロンの入力との間の接続の強度を符号化したスカラ値である。
【0009】
ニューロンは、非線形活性化関数をその入力の加重和に対して適用することによって、活性化と呼ばれるその出力を計算する。加重和は、各入力に対応重みを乗算して積を蓄積することによって計算された中間結果である。部分和は、入力のサブセットの加重和である。全入力の加重和は、1つまたは複数の部分和を蓄積することによって段階において計算され得る。
【0010】
ニューラル・ネットワークは、1つまたは複数のニューロンの集合体である。ニューラル・ネットワークは、層と呼ばれるニューロン群に分割されることが多い。層は、全てが同一層から入力を受け取り、全てが出力を同一層へ送り、通常、同様の関数を実行する1つまたは複数のニューロンの集合体である。入力層は、ニューラル・ネットワークの外部のソースから入力を受け取る層である。出力層は、出力を、ニューラル・ネットワークの外部のターゲットへ送る層である。全ての他の層は、中間処理層である。多層ニューラル・ネットワークは、1層より多い層を有するニューラル・ネットワークである。深層ニューラル・ネットワークは、多くの層を有する多層ニューラル・ネットワークである。
【0011】
テンソルは、数値の多次元配列である。テンソル・ブロックは、テンソルにおける要素の連続した部分配列である。
【0012】
各ニューラル・ネットワーク層は、パラメータ・テンソルV、重みテンソルW、入力データ・テンソルX、出力データ・テンソルY、および中間データ・テンソルZと関連付けられる。パラメータ・テンソルは、層におけるニューロン活性化関数σを制御するパラメータの全てを含む。重みテンソルは、入力を層に接続する重みの全てを含む。入力データ・テンソルは、層が入力として計算するデータの全てを含む。出力データ・テンソルは、層が出力として計算するデータの全てを含む。中間データ・テンソルは、層が部分和などの中間計算結果として生成する何らかのデータを含む。
【0013】
層のためのデータ・テンソル(入力、出力、および中間)は三次元でもよく、最初の2つの次元は、空間位置を符号化するとして解釈されてもよく、第3の次元は、異なる特徴を符号化すると解釈されてもよい。例えば、データ・テンソルがカラー画像を表現するとき、最初の2つの次元は画像内の垂直座標および水平座標を符号化し、第3の次元は、各位置における色を符号化する。入力データ・テンソルXの各要素は、別個の重みによってそれぞれのニューロンに接続可能であり、それによって重みテンソルWは全体として6次元を有し、入力データ・テンソルの3次元(入力行a,入力列b,入力特徴c)を出力データ・テンソルの3次元(出力行i,出力列j,出力特徴k)と連結する。中間データ・テンソルZは、出力データ・テンソルYと同一形状を有する。パラメータ・テンソルVは、3つの出力データ・テンソル次元を、活性化関数σのパラメータをインデックス化する追加次元oと連結する。いくつかの実施形態では、活性化関数σは、追加パラメータを必要とせず、その場合、追加次元は不要である。ただし、いくつかの実施形態では、活性化関数σは、次元oに出現する少なくとも1つの追加パラメータを必要とする。
【0014】
層の出力データ・テンソルYの要素は、式1にあるように計算可能であり、ニューロン活性化関数σは、活性化関数パラメータV[i,j,k,:]のベクトルによって構成され、加重和Z[i,j,k]は、式2にあるように計算可能である。
Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])
式1
【数1】
【0015】
表記の簡略化のため、式2における加重和は、出力と呼ばれてもよく、線形活性化関数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k]の使用と等価であり、異なる活性化関数が使用されたときも、一般性を失わず、同様の記述があてはまることを理解されたい。
【0016】
様々な実施形態では、上述したような出力データ・テンソルの計算は、より小さい問題へと分解される。次いで、各問題は、1つまたは複数のニューラル・コア、または従来のマルチコア・システムの1つまたは複数のコアで並列に解かれてもよい。
【0017】
当然ながら、上記から、ニューラル・ネットワークは、並列の構造体である。所与の層におけるニューロンは、1つまたは複数の層または他の入力から要素xを有する入力Xを受け取る。各ニューロンは、その入力と、要素wを有する重みWとに基づいて、その状態y∈Yを計算する。様々な実施形態では、入力の加重和はバイアスbによって調整され、その後、その結果が非線形性F(・)に渡される。例えば、単一のニューロン活性化は、y=F(b+Σx)のように表される。
【0018】
所与の層における全てのニューロンが同一層から入力を受け取り、それらの出力を独立して計算するため、ニューロン活性化は並列に計算可能である。ニューラル・ネットワーク全体の態様のため、並列に分散されたコアで計算を実行することは、計算全体を加速する。さらに、各コア内において、ベクトル演算が並列に計算可能である。例えば層がそれ自体に投影し返すときに繰り返し起こる入力の場合でも、全ニューロンが依然として同時に更新される。事実上、繰り返し起こる接続は、層への後続の入力と整列するために遅延される。
【0019】
図1を参照すると、例示的なメモリ・マップト・システム100が示されている。メモリ・マップ101はセグメント化され、領域102~105は、様々なシステム・コンポーネントに対して割り当てられる。例えば1つまたは複数のチップ上のプロセッサ・コアなどの計算コア106~109は、バス110に接続される。各コア106~109はバス110に接続され、メモリ・マップ102~103のアドレス指定できる領域に対応する共有メモリ111~112を介して相互通信できる。各コア106~109は、メモリ・マップ101のアドレス指定できる領域104を介してサブシステム113と通信できる。同様に、各コア106~109は、メモリ・マップ101のアドレス指定できる領域105を介して外部システム114と通信できる。
【0020】
メモリ・マップ(MM)アドレスは、グローバル・メモリ・マップに関連しており、この例では、0x00000000から0xFFFFFFFFへと進む。
【0021】
図2を参照すると、例示的なメッセージ・パッシング(MP)システム200が示されている。複数のコア201~209のそれぞれは、計算コア210と、メモリ211と、通信インターフェース212とを備える。コア201~209のそれぞれは、ネットワーク213によって接続される。通信インターフェース212は、ネットワーク213との間でパケットを投入および受け取るための入力バッファ214および出力バッファ215を備える。このように、コア201~209は、メッセージを交換することによって相互通信し得る。
【0022】
同様に、サブシステム216は、入力バッファ218および出力バッファ219を有する通信インターフェース217を介してネットワーク213へ接続され得る。外部システムは、インターフェース220を介してネットワーク213へ接続され得る。このように、コア201~209は、メッセージを交換することによってサブシステムおよび外部システムと通信し得る。
【0023】
メッセージ・パッシング(MP)アドレスは、コアにとってローカルなネットワーク・アドレスに関連する。例えば、個別コアは、チップ上のそのX、Y位置によって識別されることができる一方、ローカル・アドレスは、個別コアにとってローカルなバッファまたはメモリのために使用され得る。
【0024】
次に図3を参照すると、本開示の実施形態によるニューラル・コアが示されている。ニューラル・コア300は、出力テンソルの1ブロックを計算するタイリング可能計算ユニットである。ニューラル・コア300は、M個の入力およびN個の出力を有する。様々な実施形態では、M=Nである。出力テンソル・ブロックを計算するために、ニューラル・コアは、M×1入力テンソル・ブロック301にM×N重みテンソル・ブロック302を乗算し、その積を加重和になるように蓄積し、その加重和は、1×N中間テンソル・ブロック303に格納される。O×Nパラメータ・テンソル・ブロックは、1×N出力テンソル・ブロック305を生成するために、中間テンソル・ブロック303に適用されるNニューロン活性化関数のそれぞれを指定するOパラメータを含む。
【0025】
複数のニューラル・コアは、ニューラル・コア配列にタイリングされ得る。いくつかの実施形態では、その配列は二次元である。
【0026】
ニューラル・ネットワーク・モデルは、ニューラル・ネットワークによって実行される計算全体を集合的に指定する定数のセットであり、ニューロンおよび重みと、ニューロン毎の活性化関数パラメータとの間の接続のグラフを含む。訓練は、所望の関数を実行するように上記ニューラル・ネットワーク・モデルを修正するプロセスである。推論は、ニューラル・ネットワーク・モデルを修正せずに、ニューラル・ネットワークを入力に適用して出力を生成するプロセスである。
【0027】
推論処理ユニットは、ニューラル・ネットワーク推論を実行する一種のプロセッサである。ニューラル推論チップは、推論処理ユニットの特定の物理的インスタンスである。
【0028】
図4を参照すると、本開示の実施形態による、例示的な推論処理ユニット(IPU)が示されている。IPU400は、ニューラル・ネットワーク・モデルのためのメモリ401を含む。上述したように、ニューラル・ネットワーク・モデルは、計算対象の、ニューラル・ネットワークのためのシナプス重みを含み得る。IPU400は、一過性であり得る活性化メモリ402を含む。活性化メモリ402は、入力領域および出力領域に分割されてもよく、処理のためのニューロン活性化を格納する。IPU400は、モデル・メモリ401からニューラル・ネットワーク・モデルをロードしたニューラル計算ユニット403を含む。入力活性化は、各計算ステップの前に、活性化メモリ402から提供される。ニューラル計算ユニット403からの出力は、同ニューラル計算ユニットまたは他のニューラル計算ユニットにおける処理のために活性化メモリ402に書き戻される。
【0029】
様々な実施形態では、マイクロエンジン404がIPU400に含まれる。そのような実施形態では、IPUにおける全ての動作がマイクロエンジンによって指示される。以下に記載するように、様々な実施形態において、中央マイクロエンジンまたは分散マイクロエンジン、あるいはその両方が提供され得る。グローバル・マイクロエンジンはチップ・マイクロエンジンと呼ばれる場合があり、ローカル・マイクロエンジンは、コア・マイクロエンジンまたはローカル・コントローラと呼ばれる場合がある。様々な実施形態では、マイクロエンジンは、1つまたは複数のマイクロエンジン、マイクロコントローラ、状態遷移機械、CPU、または他のコントローラを備える。
【0030】
図5を参照すると、本開示の実施形態によるマルチコアの推論処理ユニット(IPU)が示されている。IPU500は、ニューラル・ネットワーク・モデルおよび命令のためのメモリ501を含む。いくつかの実施形態では、メモリ501は、重み部分511と命令部分512とに分割される。上述したように、ニューラル・ネットワーク・モデルは、計算対象の、ニューラル・ネットワークのためのシナプス重みを含み得る。IPU500は、一過性であり得る活性化メモリ502を含む。活性化メモリ502は、入力領域および出力領域に分割されてもよく、処理のためのニューロン活性化を格納する。
【0031】
IPU500は、ニューラル・コア503の配列506を含む。各コア503は、モデル・メモリ501からニューラル・ネットワーク・モデルがロードされベクトル計算を実行するように動作可能な計算ユニット533を含む。各コアは、さらに、ローカル活性化メモリ532を含む。入力活性化は、各計算ステップの前に、ローカル活性化メモリ532から提供される。計算ユニット533からの出力は、同計算ユニットまたは他の計算ユニットにおける処理のために活性化メモリ532に書き戻される。
【0032】
IPU500は、1つまたは複数のネットワーク・オン・チップ(NoC)505を含む。いくつかの実施形態では、部分和NoC551は、コア503を相互接続し、それらの間の部分和を運ぶ。いくつかの実施形態では、別個のパラメータ分散NoC552は、重みおよび命令をコア503へ分散するためにコア503をメモリ501に接続する。当然のことながら、NoC551および552の様々な構成は、本開示による使用に適している。例えば、ブロードキャスト・ネットワーク、ロウ・ブロードキャスト・ネットワーク(row broadcast network)、ツリー型ネットワーク、および交換網が使用されてもよい。
【0033】
様々な実施形態では、グローバル・マイクロエンジン504がIPU500に含まれる。様々な実施形態では、ローカル・コア・コントローラ534が各コア503上に含まれる。そのような実施形態では、動作の指示は、グローバル・マイクロエンジン(チップ・マイクロエンジン)とローカル・コア・コントローラ(コア・マイクロエンジン)との間で共有される。特に、511で、計算命令は、グローバル・マイクロエンジン504によって、モデル・メモリ501から、各コア503のニューラル計算ユニット533へロードされる。512で、パラメータ(例えば、ニューラル・ネットワーク/シナプス重み)は、グローバル・マイクロエンジン504によって、モデル・メモリ501から、各コア503のニューラル計算ユニット533へロードされる。513で、ニューラル・ネットワーク活性化データは、ローカル・コア・コントローラ534によって、ローカル活性化メモリ532から、各コア503のニューラル計算ユニット533へロードされる。上述したように、活性化は、モデルによって定義された特定のニューラル・ネットワークのニューロンに対して提供され、同ニューラル計算ユニットまたは他のニューラル計算ユニットから、もしくはシステム外部から発生してもよい。514で、ニューラル計算ユニット533は、ローカル・コア・コントローラ534によって指示されると、出力ニューロン活性化を生成する計算を実行する。特に、この計算は、入力シナプス重みを入力活性化に適用することを含む。当然のことながら、上記のような計算を実行するために、インシリコ樹状突起およびベクトル乗算ユニットを含む様々な方法が利用可能である。515で、ローカル・コア・コントローラ534によって指示されると、計算の結果がローカル活性化メモリ532に格納される。上記で記載したように、各コアのニューラル計算ユニットの効率的使用を実現するために、上記の段階はパイプライン化され得る。また、当然ながら、入力および出力は、所与のニューラル・ネットワークの要件にしたがって、ローカル活性化メモリ532からグローバル活性化メモリ502へ転送され得る。
【0034】
したがって、本開示は、推論処理ユニット(IPU)における動作のランタイム制御を実現する。いくつかの実施形態では、マイクロエンジンは集約化される(単一マイクロエンジン)。いくつかの実施形態では、IPU計算は分散される(コア配列によって実行される)。いくつかの実施形態では、動作のランタイム制御は、階層的であり、中央マイクロエンジンと分散マイクロエンジンとの両方が関与する。
【0035】
1つまたは複数のマイクロエンジンは、IPUにおける全ての動作の実行を指示する。各マイクロエンジン命令は、いくつかのサブ動作(例えば、アドレス生成、ロード、計算、格納など)に対応する。分散されている場合、コア・マイクロコードは、コア・マイクロエンジン(例えば、534)上で実行される。このコア・マイクロコードは、単一テンソル動作全体を実行する命令を含む。例えば、重みテンソルとデータ・テンソルとの間の畳み込みである。単一コアの文脈において、コア・マイクロコードは、データ・テンソル(および部分和)のローカルに格納されたサブセットで単一のテンソル動作を実行する命令を含む。チップ・マイクロコードは、チップ・マイクロエンジン(例えば、504)上で実行される。マイクロコードは、ニューラル・ネットワークにおいてテンソル動作の全てを実行する命令を含む。
【0036】
次に図6を参照すると、本開示の実施形態による例示的なニューラル・コアおよび関連ネットワークが示されている。図3を参照して説明されたように具体化されるコア601は、ネットワーク602~604によって追加コアと相互接続される。本実施形態では、ネットワーク602は、重みまたは命令、あるいはその両方を分散する役割を担い、ネットワーク603は部分和を分散する役割を担い、ネットワーク604は活性化を分散する役割を担う。ただし、当然のことながら、本開示の様々な実施形態はそれらのネットワークを結合してもよく、またはさらにそれらのネットワークを複数の追加ネットワークに分離してもよい。
【0037】
入力活性化(X)は、コア外から活性化ネットワーク604を介して活性化メモリ605への分散コア601である。層命令は、コア外から重み/命令ネットワーク602を介して命令メモリ606への分散コア601である。層重み(W)またはパラメータ、あるいはその両方は、コア外から重み/命令ネットワーク602を介して重みメモリ607またはパラメータ・メモリ608あるいはその両方への分散コア601である。
【0038】
重み行列(W)は、ベクトル行列乗算(VMM)ユニット609によって重みメモリ607から読み出される。活性化ベクトル(V)は、ベクトル行列乗算(VMM)ユニット609によって活性化メモリ605から読み出される。ベクトル行列乗算(VMM)ユニット609は、その後、ベクトル-行列乗算Z=XWを計算し、ベクトル-ベクトル・ユニット610へ結果を提供する。ベクトル-ベクトル・ユニット610は、部分和メモリ611から追加部分和を読み出し、コア外から部分和ネットワーク603を介して追加部分和を受け取る。ベクトル-ベクトル動作は、ベクトル-ベクトル・ユニット610によって、それらのソース部分和から計算される。例えば、様々な部分和は、順に加算される。結果として得られるターゲット部分和は、部分和メモリ611に書き込まれ、部分和ネットワーク603を介してコア外に送信され、またはベクトル-ベクトル・ユニット610によるさらなる処理のために返されるか、あるいはその組み合わせが行われる。
【0039】
この部分和は、ベクトル-ベクトル・ユニット610から結果として得られ、所与の層の入力のための全ての計算が完了した後に、出力活性化の計算のために活性化ユニット612に提供される。活性化ベクトル(Y)は、活性化メモリ605に書き込まれる。層活性化(活性化メモリに書き込まれた結果を含む)は、活性化メモリ605から活性化ネットワーク604を介してコアにわたって再分散される。受け取られると、層活性化は、受け取ったコア別にローカル活性化メモリに書き込まれる。所与のフレームのための処理が完了すると、出力活性化は、活性化メモリ605から読み出され、ネットワーク604を介してコア外に送信される。
【0040】
それに応じて、動作において、コア制御マイクロエンジン(例えば、613)は、コアのデータ移動と計算とをオーケストレーションする。マイクロエンジンは、入力活性化ブロックをベクトル-行列乗算ユニットにロードするために、読み出された活性化メモリ・アドレス動作を発行する。マイクロエンジンは、重みブロックをベクトル-行列乗算ユニットにロードするために、読み出された重みメモリ・アドレス動作を発行する。ベクトル-行列乗算ユニットの計算配列が部分和ブロックを計算するように、マイクロエンジンは、ベクトル-行列乗算ユニットに計算動作を発行する。
【0041】
マイクロエンジンは、部分和ソースから部分和データを読み出す、部分和演算ユニットを使用して計算する、または部分和ターゲットへ部分和データを書き込むうちの1つまたは複数を行うために、部分和読み出し/書き込みメモリ・アドレス動作、ベクトル計算動作、または部分和通信動作のうちの1つまたは複数を発行する。部分和ターゲットへの部分和データの書き込みは、部分和ネットワーク・インターフェースを介してコア外部と通信すること、または部分和データを活性化演算ユニットへ送信することを含み得る。
【0042】
活性化関数演算ユニットが出力活性化ブロックを計算するように、マイクロエンジンは、活性化関数計算動作を発行する。マイクロエンジンは書き込み活性化メモリ・アドレスを発行し、出力活性化ブロックは、活性化メモリ・インターフェースを介して活性化メモリに書き込まれる。
【0043】
したがって、多種多様なソース、ターゲット、アドレスタイプ、計算タイプ、および制御コンポーネントが所与のコアのために定義される。
【0044】
ベクトル-ベクトル・ユニット610のためのソースは、ベクトル行列乗算(VMM)ユニット609と、活性化メモリ605と、パラメータ・メモリ608からの定数と、部分和メモリ611と、前のサイクルからの部分和結果(TGT部分和)と、部分和ネットワーク603とを含む。
【0045】
ベクトル-ベクトル・ユニット610のためのターゲットは、部分和メモリ611と、後続のサイクルのための部分和結果(SRC部分和)と、活性化ユニット612と、部分和ネットワーク603とを含む。
【0046】
したがって、所与の命令が活性化メモリ605から読み出され、または書き込み、重みメモリ607から読み出され、または部分和メモリ611から読み出され、または書き込んでもよい。コアによって実行される計算動作は、VMMユニット609によるベクトル行列乗算、ベクトル・ユニット610によるベクトル(部分和)動作、および活性化ユニット612による活性化関数を含む。
【0047】
制御動作は、プログラム・カウンタと、ループまたはシーケンスあるいはその両方のカウンタとを含む。
【0048】
それによって、メモリ動作は、重みメモリにおけるアドレスから重みを読み出し、パラメータ・メモリにおけるアドレスからパラメータを読み出し、活性化メモリにおけるアドレスから活性化を読み出し、部分和メモリにおけるアドレスに対して部分和を読み出す/書き込むために発行される。計算動作は、ベクトル-行列乗算、ベクトル-ベクトル動作、および活性化関数を実行するために発行される。通信動作は、ベクトル-ベクトル・オペランドを選択し、部分和ネットワーク上でメッセージをルーティングし、部分和ターゲットを選択するために発行される。層出力におけるループおよび層入力におけるループは、プログラム・カウンタ、ループ・カウンタ、およびシーケンス・カウンタを指定する制御動作によって制御される。
【0049】
様々な実施形態では、上記のようなIPUがメモリ読み出しおよび書き込みによってホストと通信することを可能にするメモリ・マップト・アーキテクチャが実施される。図7を参照すると、ホスト・システムとIPUとの間の例示的な統合方法が示されている。701で、ホストは、推論のためにデータを準備する。702で、ホストは、データが使用可能状態であることをIPUに通知する。703で、IPUがデータを読み出す。704で、IPUがデータに関する計算を実行する。705で、IPUは、計算結果が使用可能状態であることをホストに通知する。706で、ホストはその結果を読み出す。
【0050】
図8(A)~(C)を参照すると、例示的な冗長の方法が示されている。当然のことながら、本明細書で上述したようなものなどのニューロモルフィック・システムは、複数のセンサからのデータを同時に処理できる。複数のネットワークが存在でき、同時に実行されることが可能である。本明細書に記載するように、様々な実施形態では、ネットワーク結果は、高速I/Oインターフェースを使用して提供される。
【0051】
図8(A)を参照すると、直接/ハードウェア冗長性が示されている。この例では、同一モデルが1回よりも多く実行され、出力が比較される。図8(B)を参照すると、モデル冗長性が示されている。この例では、異なるデータのアンサンブルまたは異なるデータ、あるいはその両方が実行され、統計モデル(例えば、モデル間の重み付け平均化)は、出力全体に到達するように適用される。図8(C)を参照すると、アプレンティス検証が示されている。この例では、アプレンティス・モデルは、制御モデル(またはドライバ)に対して検証される。
【0052】
本明細書で説明されるアーキテクチャの低電力要件は、システムにおける複数のチップが冗長ネットワークを実行できるようにする。同様に、冗長ネットワークは、チップのパーティション上で実行され得る。さらに、異常を検出/位置検出/回避するために、高速および部分的な再構成可能性が、駆動モードとテストモードとを切り換えるように提供される。
【0053】
当然のことながら、本明細書で記載するような推論処理ユニットは、多種多様なフォーム・ファクタに統合され得る。例えば、システム・オン・チップ(SoC)が提供され得る。SoCは、面積量(area budget)に対応するためのスケーリングを可能にする。このアプローチは、結果的な高速データ転送能力とのオン・ダイ統合を可能にする。SoCフォーム・ファクタもまた、様々な代替案よりもパッケージングが容易で安価であり得る。他の例では、システム・イン・パッケージ(SiP)が提供され得る。SiPアプローチは、SoCコンポーネントをIPUダイと結合し、異なる加工技術の統合をサポートする。既存のコンポーネントに対して必要な注入変更が最小限でよい。
【0054】
他の例では、PCIe(または他の拡張カード)が提供される。このアプローチでは、コンポーネント毎に、独立した開発サイクルが課され得る。これは、標準化された高速インターフェースを採用しモジュラー統合を可能にするという利点を有する。これは、早期のプロトタイプおよびデータ・センタに対して特に適している。同様に、電子制御ユニット(ECU)が提供され得る。これは、安全性および冗長性に関する標準を含む自動車規格に準拠する。ECUモジュールは、車内デプロイに適しているが、一般に追加の研究開発時間を必要とする。
【0055】
次に図9を参照すると、本開示の実施形態によるメモリ・マップト・ニューラル推論エンジンのシステム・アーキテクチャが示されている。ニューラル推論エンジン901(上記で詳述されたものなど)は、システム・インターコネクト902に接続される。ホスト903もまた、システム・インターコネクト902に接続される。
【0056】
様々な実施形態では、システム・インターコネクト902は、Advanced eXtensible Interface(AXI)などのAdvanced Microcontroller Bus Architecture (AMBA)に準拠する。様々な実施形態では、システム・インターコネクト902は、Peripheral Component Interconnect Express(PCIe)バスまたは他のPCIバスである。当然のことながら、本開示が属する分野で知られている多種多様な他のバス・アーキテクチャが、本明細書で記載するような使用に対して適している。それぞれの場合、システム・インターコネクト902は、ホスト903をニューラル推論エンジン901に接続し、ホストの仮想メモリにおけるニューラル推論エンジンのフラットなメモリ・マップト・ビューを提供する。
【0057】
ホスト903は、アプリケーション904およびAPI/ドライバ905を含む。様々な実施形態では、APIは、メモリ・マップを介して自己完結的なニューラル・ネットワーク・プログラムをニューラル推論エンジン901へコピーするconfigure()、メモリ・マップを介して入力データをニューラル推論エンジン901にコピーして評価を開始するpush()、およびメモリ・マップを介してニューラル推論エンジン901から出力データを取り出すpull()という3つの関数を含む。
【0058】
いくつかの実施形態では、インターラプト906がニューラル推論エンジン901によって提供され、ネットワーク評価が完了したことがホスト903に信号伝達される。
【0059】
図10を参照すると、様々な実施形態による例示的なランタイム・ソフトウェア・スタックが示されている。この例では、ライブラリ1001がニューラル推論エンジン装置1002とのインターフェース接続のために提供される。APIコールは、ネットワークをロードするため、さらにメモリ管理(メモリ割り当ておよび解放、メモリへのコピー、およびメモリからの受け取りのための標準関数を含む)のために提供される。
【0060】
図11を参照すると、本開示の実施形態による例示的な一連の実行が示されている。この例では、オフライン学習の結果として、ネットワーク定義ファイルnw.bin1111が得られる。ネットワーク初期化1102中に、ニューラル推論装置が、例えばオープンAPIコールによってアクセスされ、ネットワーク定義ファイル1111がロードされる。ランタイム動作段階1103中に、データ空間がニューラル推論装置上で割り当てられ、入力データ1131(例えば、画像データ)が装置メモリバッファへコピーされる。上記で詳述されたように、1つまたは複数の計算サイクルが実行される。計算サイクルが完了すると、出力が、例えばrcvAPIコールによって装置から受信され得る。
【0061】
ニューラル推論装置は、入力および出力のためにメモリ・マップされることが可能であり、ホスト命令なしで、さらにニューラル・ネットワーク・モデルまたは中間活性化のいずれかのために外部メモリを必要とせずに、その計算を実行する。これは、行列乗算などのコンポーネント動作のために個別命令を必要とするのではなく、ニューラル推論装置がニューラル・ネットワークを計算することが単純に命令される、合理化されたプログラミングモデルを提供する。特に、行列乗算への畳み込みの変換が存在せず、したがって変換し直す必要がない。また、ネットワークの新規層毎に新規コールが発行される必要もない。チップ設計全体に関して上述したように、層間ニューロン活性化が、チップ外に出ることはない。このアプローチを使用すると、新規のネットワーク・モデル・パラメータが、ランタイム中にロードされる必要がない。
【0062】
図12を参照すると、ニューラル推論装置1201の例示的な統合が示されている。この例では、FIFOバッファが、内部復号を有するデータ・パス上に提供される。これは、複数のマスタを有する必要がない、マルチチャネルDMA構成を提供する。代替として、複数のAXIインターフェースはマスタが備えられてもよく、それにより、同時スループットを増加させる。
【0063】
ハードウェア側では、第1のAXIスレーブが、ニューラル推論装置の活性化メモリへFIFOインターフェースを提供する。第2のAXIスレーブが、ニューラル推論装置の活性化メモリからFIFOインターフェースを提供する。第3のAXIスレーブは、4つのFIFOインターフェースを提供し、命令メモリへ1つ、命令メモリから1つ、パラメータ/制御レジスタへ1つ、パラメータ/制御レジスタから1つを提供する。
【0064】
AXIマスタは、MC-DMAを介して命令されるニューラル推論データ・パスとの間でのデータ移動を開始する。マルチチャネルDMAコントローラ(MC-DMA)は、複数のAXIスレーブのためにデータ移動を同時に実行できるプログラマブルDMAエンジンを提供する。
【0065】
この統合シナリオのために構築されたアプリケーションは、タスク(例えば、sendTensor、recvTensor)のためにAPIルーチンを使用する。したがって、ランタイム・ライブラリは、特定のハードウェア・インスタンスにとって不可知である一方、ドライバが所与のハードウェア構成のために構築される。
【0066】
図13を参照すると、ニューラル推論装置1301の例示的な統合が示されている。この例では、完全にメモリ・マップト・インターフェースが使用される。
【0067】
ハードウェア側では、第1のAXIスレーブが、ニューラル推論装置の活性化メモリへメモリ・マップト・インターフェースを提供する。第2のAXIスレーブが、ニューラル推論装置の活性化メモリからメモリ・マップト・インターフェースを提供する。第3のAXIスレーブが、メモリ・マップト・インターフェースを提供し、1つが命令メモリ用、1つがグローバル・メモリ用、さらに1つがパラメータ/制御レジスタ用として提供する。
【0068】
AXIマスタは、MC-DMAを介して命令されるニューラル推論データ・パスとの間でのデータ移動を開始する。マルチチャネルDMAコントローラ(MC-DMA)は、複数のAXIスレーブのためにデータ移動を同時に実行できるプログラマブルDMAエンジンを提供する。
【0069】
この統合シナリオのために構築されたアプリケーションは、タスク(例えば、sendTensor、recvTensor)のためにAPIルーチンを使用する。したがって、ランタイム・ライブラリは、特定のハードウェア・インスタンスにとって不可知である一方、ドライバが所与のハードウェア構成のために構築される。
【0070】
図14を参照すると、ニューラル推論装置1401がPCIeブリッジを介してホストに相互接続される例示的な構成が示されている。
【0071】
いくつかの実施形態では、ランタイムが、アプリケーション層において提供される。そのような実施形態では、アプリケーションは、一次インターフェース(例えば、Configure、Put Tensor、Get Tensor)を他のアプリケーションに対して露出する。基本ソフトウェア層は、PCIeドライバを介してニューラル推論装置と通信し、抽象層を創出する。ニューラル推論装置は、その後、周辺装置として高速インターフェースを介してシステムに接続される。
【0072】
いくつかの実施形態では、一次インターフェース(例えば、Configure、Put Tensor、Get Tensor)を他のAUTOSARアプリケーションに対して露出するランタイム・ドライバが提供される。ニューラル推論装置は、その後、周辺装置として高速インターフェースを介してシステムに接続される。
【0073】
上述した技術およびレイアウトは、多種多様な複数のニューラル推論装置モデルを可能にする。いくつかの実施形態では、複数のニューラル推論モジュールは、選択高速インターフェースを介して、ホストと通信する。いくつかの実施形態では、複数のニューラル推論チップは、高速インターフェースを介して、相互およびホストと通信し、この場合、グルー・ロジックの使用の可能性がある。いくつかの実施形態では、複数のニューラル推論ダイは、専用インターフェースを介して、ホストまたは他のニューラル推論ダイのいずれかと通信し、この場合、グルー・ロジックの使用の可能性がある(オン・チップ上またはインターポーザー上)。いくつかの実施形態では、複数のニューラル推論システム・イン・パッケージは、高速インターフェースを介して、相互に、またはオン・ダイのホストあるいはその両方と通信する。例示的なインターフェースは、PCIe gen4/5、AXI4、SerDes、および特化インターフェースを含む。
【0074】
図15を参照すると、ニューラル・ネットワーク・プロセッサ・システムにおけるニューラル・ネットワーク記述をホストからインターフェースを介して受信する1501ための方法1500が示されており、ニューラル・ネットワーク・プロセッサ・システムが、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合され、インターフェースがニューラル・ネットワーク・プロセッサ・システムに動作可能に接続される。方法は、さらに、インターフェースを介してメモリ・マップを露出すること1502を含み、メモリ・マップが、活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備える。方法は、さらに、ニューラル・ネットワーク・プロセッサ・システムにおける入力データをインターフェースを介して受信すること1503を含む。方法は、さらに、ニューラル・ネットワーク・モデルに基づいて入力データから出力データを計算すること1504を含む。方法は、さらに、ニューラル・ネットワーク・プロセッサ・システムからの出力データをインターフェースを介して提供すること1505を含む。いくつかの実施形態では、方法は、インターフェースを介してニューラル・ネットワーク記述を受信し、インターフェースを介して入力データを受信し、インターフェースを介して出力データを提供すること1506を含む。
【0075】
上記で記載したように、様々な実施形態では、ホスト、センサ、または他の推論エンジン、あるいはその組み合わせに対する通信のための周辺通信インターフェースを有する1つまたは複数のニューラル推論チップを備えるメモリ・マップト・ニューラル推論エンジンが提供される。いくつかの実施形態では、各ニューラル推論チップは、メモリ・マップされており、configure_network()、push_data()、pull_data()などの通信APIプリミティブの減少されたセットを使用する。いくつかの実施形態では、ニューラル推論エンジンと通信するために、例えば、AXI、PCIe、USB、イーサネット(R)、ファイアワイヤ、または無線など、入れ替え可能なインターフェースが使用される。いくつかの実施形態では、システム歩留まりの増加および正しいシステム動作のために、複数のレベルのハードウェア、ソフトウェア、およびモデル・レベルの冗長性が使用される。いくつかの実施形態では、ファームウェアは、性能改善のために、受信/発信データを操作してバッファに入れるために使用される。いくつかの実施形態では、ランタイム・プログラミング・モデルが、ニューラル・アクセラレータ・チップを制御するために使用される。いくつかの実施形態では、ハードウェア-ファームウェア-ソフトウェアのスタックは、ニューラル推論エンジン上で複数のアプリケーションを実装するために使用される。
【0076】
いくつかの実施形態では、システムは、システムの構成および動作パラメータを格納するため、または前の状態から再開するためにオン・ボードの不揮発性メモリ(フラッシュ・カードまたはSDカードなど)を組み込むことによってスタンド・アロン・モードで動作する。いくつかの実施形態では、上記のシステムおよび通信インフラストラクチャの性能は、リアルタイム動作と、ニューラル・アクセラレータ・チップとの通信とをサポートする。いくつかの実施形態では、上記のシステムおよび通信インフラストラクチャの性能は、ニューラル・アクセラレータ・チップとのリアルタイム動作および通信よりも高速でサポートする。
【0077】
いくつかの実施形態では、ニューラル推論チップ、ファームウェア、ソフトウェア、および通信プロトコルは、そのようなシステムが複数配列されて大規模システム(マルチチップ・システム、マルチボード・システム、ラック、データ・センタなど)とすることを可能にする。いくつかの実施形態では、ニューラル推論チップおよびマイクロプロセッサ・チップは、エネルギー効率の良いリアルタイム処理ハイブリッドのクラウド計算システムを構成する。いくつかの実施形態では、ニューラル推論チップは、センサベース、ニューラルベース、映像ベース、または音声ベース、あるいはその組み合わせをベースとしたアプリケーション、ならびにモデリング・アプリケーションのためのクラウド・システムで使用される。いくつかの実施形態では、インターフェース・コントローラは、様々な通信インターフェースを使用し得る他のクラウド・セグメント/ホストとの通信に対して使用される。
【0078】
いくつかの実施形態では、ファームウェア・スタックおよびソフトウェア・スタック(ドライバを含む)は、推論エンジン/マイクロプロセッサ、推論エンジン/ホスト、およびマイクロプロセッサ/ホストのインタラクションを実行する。いくつかの実施形態では、ニューラル推論チップとのロー・レベル・インタラクションを実行するランタイムAPIが提供される。いくつかの実施形態では、オペレーティング・システムを含むソフトウェア・スタックが提供され、作業量およびユーザ・アプリケーションをシステムの装置に対して自動的にマッピングして順番に実行する。
【0079】
次に図16を参照すると、計算ノードの例の概略が示されている。計算ノード10は、適切な計算ノードの一例に過ぎず、本明細書で説明される発明の実施形態の使用または機能性の範囲に関してのあらゆる限定を示唆することが意図されない。ただし、計算ノード10は、実施されること、または上記に記載の機能のいずれかを実行すること、あるいはその両方が可能である。
【0080】
計算ノード10において、多数の他の汎用または専用計算システム環境または構成とともに動作可能なコンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12との使用に適し得るよく知られた計算システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ装置、マルチプロセッサ・システム、マイクロプロセッサをベースとするシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニ・コンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたは装置のいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【0081】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈において説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造体などを含み得る。コンピュータ・システム/サーバ12は、タスクが通信ネットワークによってリンクされるリモート処理装置によって実行される分散クラウド・コンピューティング環境において実践され得る。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ格納装置を含むローカルおよびリモートの両方のコンピュータ・システムの格納媒体に配置され得る。
【0082】
図16に示すように、計算ノード10におけるコンピュータ・システム/サーバ12は、汎用計算装置の形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に結合するバス18を含むが、これらに限定されない。
【0083】
バス18は、いくつかの種類のうちのいずれかの種類のバス構造体うちの1つまたは複数を表し、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および多種多様なバス・アーキテクチャのいずれかを使用したプロセッサまたはローカル・バスを含む。一例として、限定ではなく、上記のようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスを含む。
【0084】
コンピュータ・システム/サーバ12は、典型的に、多種多様なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体でよく、揮発性媒体および不揮発性媒体の両方、取り外し可能媒体および取り外し可能でない媒体の両方を含む。
【0085】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32、あるいはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、さらに、他の取り外し可能/取り外し可能でない、揮発性/不揮発性のコンピュータ・システム格納媒体を含み得る。例に過ぎないが、取り外し可能でない不揮発性磁気媒体(図示しておらず、通常「ハード・ドライブ」と呼ばれる)から読み出され、そこに書き込むための格納システム34が提供され得る。図示されていないが、取り外し可能で不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)から読み出し、そこへ書き込むための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能で不揮発性の光ディスクから読み出し、またはそこに書き込むための光ディスク・ドライブが提供され得る。そのような事例において、それぞれは、1つまたは複数のデータ・メディア・インターフェースによってバス18に接続され得る。図示され、以下にさらに説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでもよい。
【0086】
例として、限定ではなく、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、メモリ28に格納されてもよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合わせのそれぞれは、ネットワーキング環境の実施を含み得る。プログラム・モジュール42は、全般的に、本明細書で説明するような本発明の実施形態の機能または方法論、あるいはその両方を実行する。
【0087】
コンピュータ・システム/サーバ12は、さらに、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部装置14、ユーザがコンピュータ・システム/サーバ12とインタラクションを行うことができるようにする1つまたは複数の装置、またはコンピュータ・システム/サーバ12が1つまたは複数の他の計算装置と通信できるようにする任意の装置(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信し得る。そのような通信は、入力/出力(I/O)インターフェース22を介して行われ得る。さらに、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または公衆網(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと通信可能である。上記で示したように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信する。なお、図示されていないが、他のハードウェアまたはソフトウェア、あるいはその両方のコンポーネントは、コンピュータ・システム/サーバ12と併せて使用されることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ配列、RAIDシステム、テープ・ドライブ、およびデータ超大容量記憶システムなどを含むが、これらに限定されない。
【0088】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせでもよい。このコンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読格納媒体(複数可)を含み得る。
【0089】
コンピュータ可読格納媒体は、命令実行装置によって使用される命令を保持および格納可能な有形装置であり得る。コンピュータ可読格納媒体は、例えば、電子格納装置、磁気格納装置、光学格納装置、電磁格納装置、半導体格納装置、または上記の任意の適切な組み合わせでもよいが、それに限定されない。コンピュータ可読格納媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝の隆起構造などの機械的暗号化装置、および上記の任意の適切な組み合わせを含む。本明細書で使用される場合、コンピュータ可読格納媒体は、それ自体、電波または他の自由に伝搬する電磁波、導波路または他の伝送媒体(例えば、光ファイバ・ケーブルを通過する光パルス)を通って伝搬する電磁波、または電線によって伝達される電気信号などの一過性信号であるとして解釈されるべきではない。
【0090】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読格納媒体からそれぞれの計算/処理装置へ、または例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワーク、あるいはその組み合わせなどのネットワークを介して外部コンピュータまたは外部格納装置へダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備え得る。各計算/処理装置におけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれの計算/処理装置内のコンピュータ可読格納媒体における格納のために、そのコンピュータ可読プログラム命令を転送する。
【0091】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、1つまたは複数のプログラミング言語の任意の組む合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかでもよく、Smalltalk、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む。コンピュータ可読プログラム命令は、ユーザのコンピュータにおいて全体的に、ユーザのコンピュータにおいて部分的に、スタンド・アロン・ソフトウェア・パッケージとして、ユーザのコンピュータで部分的に、さらにリモート・コンピュータで部分的に、またはリモート・コンピュータまたはサーバで全体的に実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてもよく、もしくはその接続は、外部コンピュータ(例えば、インターネット・サービス・プロバイダを使用してインターネットを介する)へなされてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路をパーソナライズし得る。
【0092】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートの図またはブロック図あるいはその両方を参照して、本明細書で説明される。フローチャートの図またはブロック図あるいはその両方の各ブロック、ならびにフローチャートの図またはブロック図あるいはその両方中のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施可能であることを理解されるであろう。
【0093】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令がフローチャートまたはブロック図あるいはその両方のブロックにおいて明示された機能/動作を実施するための手段を創出するように、上記のコンピュータ可読プログラム命令は、機械を製造するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。これらのコンピュータ可読プログラム命令は、さらに、命令を格納したコンピュータ可読格納媒体がフローチャートまたはブロック図あるいはその両方のブロックに明示された機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ、プログラマブル・データ処理装置、または他の装置に特定のやり方あるいはその組み合わせで機能させ得るコンピュータ可読格納媒体に格納されてもよい。
【0094】
コンピュータ、他のプログラマブル装置、または他の装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックにおいて明示された機能/動作を実施するように、上記のコンピュータ可読プログラム命令は、一連の動作ステップがコンピュータ実施プロセスを創出するようにコンピュータまたは他のプログラマブル装置または他の装置上で実行されるようにするためにコンピュータ、他のプログラマブル・データ処理装置、または他の装置にさらにロードされてもよい。
【0095】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能性のある実施のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図における各ブロックは、特化した論理機能を実施するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替の実施例では、ブロックに記載された機能は、図面に記載の順序とは異なる順序で発生し得る。例えば、連続して示される2つのブロックは、実際には、ほぼ同時に実行されてもよく、またはブロックは、場合によっては、関連する機能に応じて、逆の順序で実行されてもよい。また、ブロック図またはフローチャートの図、あるいはその両方の各ブロックおよびブロック図またはフローチャートの図、あるいはその両方のブロックの組み合わせは、特化した機能または動作を実行する、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベースのシステムによって実施可能であることが認識されるであろう。
【0096】
本発明の様々な実施形態の説明が例示目的で提供されたが、網羅的である、または開示された実施形態に限定されることは意図されない。多くの修正および変形は、説明された実施形態の範囲および思想から逸脱しない範囲で、当業者にとって明らかであろう。実施形態の原理、市場に存在する技術の実用化または技術的改良を最も良く説明するため、または本開示が属する分野の通常技量を有する他者が本明細書で開示される実施形態を理解できるようにするために、本明細書で使用される用語は選ばれた。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
【手続補正書】
【提出日】2023-04-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、前記ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合される、ニューラル・ネットワーク・プロセッサ・システムと、
前記活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備えるメモリ・マップと、
前記ニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されたインターフェースであり、前記インターフェースが、ホストと通信するように、さらに前記メモリ・マップを露出するように適合されるインターフェースと
を備えるシステム。
【請求項2】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するように構成される、請求項1に記載のシステム。
【請求項3】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してAPIを露出し、前記APIは、前記インターフェースを介して前記ニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するための方法を含む、請求項2に記載のシステム。
【請求項4】
前記インターフェースは、AXI、PCIe、USB、イーサネット(R)、またはファイアワイヤ・インターフェースを含む、請求項1に記載のシステム。
【請求項5】
冗長ニューラル・ネットワーク処理コアをさらに備えており、前記冗長ニューラル・ネットワーク処理コアが、前記ニューラル・ネットワーク処理コアと並列してニューラル・ネットワーク・モデルを計算するように構成される、請求項1に記載のシステム。
【請求項6】
前記ニューラル・ネットワーク・プロセッサ・システムが、ニューラル・ネットワーク・モデルの冗長計算を提供するように構成される、請求項1に記載のシステム。
【請求項7】
前記ニューラル・ネットワーク・プロセッサ・システムが、ハードウェア、ソフトウェア、およびモデル・レベルの冗長性のうちの少なくとも1つを提供するように構成される、請求項1に記載のシステム。
【請求項8】
前記ニューラル・ネットワーク・プロセッサ・システムがプログラマブル・ファームウェアを備えており、前記プログラマブル・ファームウェアが前記入力データおよび出力データを処理するように構成可能である、請求項2に記載のシステム。
【請求項9】
前記処理がバッファリングを含む、請求項8に記載のシステム。
【請求項10】
前記ニューラル・ネットワーク・プロセッサ・システムが、不揮発性メモリを備える、請求項1に記載のシステム。
【請求項11】
前記ニューラル・ネットワーク・プロセッサ・システムが、構成または動作パラメータ、もしくはプログラム状態を格納するように構成される、請求項10に記載のシステム。
【請求項12】
前記インターフェースが、リアルタイムまたはリアルタイムの動作より速く構成される、請求項1に記載のシステム。
【請求項13】
前記インターフェースが少なくとも1つのセンサまたはカメラに通信可能に結合される、請求項1に記載のシステム。
【請求項14】
ネットワークによって相互接続される、複数の請求項1に記載の前記システムを備えるシステム。
【請求項15】
ネットワークによって相互接続される、複数の請求項1に記載の前記システムと、複数の計算ノードとを備えるシステム。
【請求項16】
複数の互いに素のメモリ・マップであり、それぞれが前記複数の請求項1に記載のシステムのうちの1つに対応するメモリ・マップをさらに備える、請求項15に記載のシステム。
【請求項17】
方法であって、前記方法は、
ニューラル・ネットワーク・プロセッサ・システムにおけるニューラル・ネットワーク記述をホストからインターフェースを介して受信することを含み、
前記ニューラル・ネットワーク・プロセッサ・システムが、少なくとも1つのニューラル・ネットワーク処理コアと、活性化メモリと、命令メモリと、少なくとも1つの制御レジスタとを備えており、前記ニューラル・ネットワーク処理コアが、ニューラル・ネットワーク計算、制御、および通信プリミティブを実施するように適合され、
前記インターフェースが前記ニューラル・ネットワーク・プロセッサ・システムに動作可能に接続されており、
前記方法は、さらに、前記インターフェースを介してメモリ・マップを露出することを含み、前記メモリ・マップが、前記活性化メモリ、命令メモリ、および少なくとも1つの制御レジスタのそれぞれに対応する領域を備えており、
前記方法は、さらに、前記ニューラル・ネットワーク・プロセッサ・システムにおける入力データを前記インターフェースを介して受信することと、
ニューラル・ネットワーク・モデルに基づいて前記入力データから出力データを計算することと、
前記ニューラル・ネットワーク・プロセッサ・システムからの前記出力データを前記インターフェースを介して提供することと
を含む方法。
【請求項18】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供する、請求項17に記載の方法。
【請求項19】
前記ニューラル・ネットワーク・プロセッサ・システムは、前記インターフェースを介してAPIを露出し、前記APIは、前記インターフェースを介して前記ニューラル・ネットワーク記述を受信し、前記インターフェースを介して入力データを受信し、前記インターフェースを介して出力データを提供するための方法を含む、請求項17に記載の方法。
【請求項20】
前記インターフェースが、リアルタイムまたはリアルタイム速度より速く動作する、請求項17に記載の方法。
【国際調査報告】