(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-10
(54)【発明の名称】インテリジェント・ビデオ分析及びエッジ・コンピューティング・システムにおけるエンドツーエンド・アクション認識
(51)【国際特許分類】
G06V 10/82 20220101AFI20240403BHJP
G06T 7/00 20170101ALI20240403BHJP
G06T 7/20 20170101ALI20240403BHJP
G06V 10/764 20220101ALI20240403BHJP
G06V 10/94 20220101ALI20240403BHJP
G06N 3/082 20230101ALI20240403BHJP
【FI】
G06V10/82
G06T7/00 350C
G06T7/20 300Z
G06V10/764
G06V10/94
G06N3/082
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022525199
(86)(22)【出願日】2022-03-31
(85)【翻訳文提出日】2023-10-04
(86)【国際出願番号】 US2022022924
(87)【国際公開番号】W WO2022216528
(87)【国際公開日】2022-10-13
(32)【優先日】2021-04-08
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ラダークリシュナン、サブハシュリー
(72)【発明者】
【氏名】アグーダシ、ファルジン
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096BA04
5L096BA06
5L096CA04
5L096DA02
5L096EA35
5L096FA02
5L096FA18
5L096FA64
5L096FA69
5L096GA30
5L096GA51
5L096HA04
5L096HA05
5L096HA11
5L096JA11
5L096JA16
5L096JA22
5L096KA04
5L096KA15
5L096LA01
5L096LA13
(57)【要約】
アクション認識を実施するための装置、システム、及び技法。少なくとも1つの実施例では、1つ又は複数のニューラル・ネットワークとハードウェア・アクセラレータとを使用してアクション認識が実施され、ここで、1つ又は複数のニューラル・ネットワークは、たとえば、1つ又は複数の量子化及びプルーニング・プロセスに基づいて処理される。
【特許請求の範囲】
【請求項1】
ビデオの複数のフレームを受信するステップと、
前記複数のフレームにおいて表される1つ又は複数の物体を決定するステップと、
並列処理ユニットに、前記複数のフレームのうちのフレームの間の1つ又は複数のピクセルにおいて表される前記1つ又は複数の物体の移動を計算させるステップと、
ニューラル・ネットワークに、前記計算された移動と前記決定された1つ又は複数の物体とに少なくとも部分的に基づいて、前記1つ又は複数の物体によって実施され、前記複数のフレームにおいて表される1つ又は複数のアクションを分類させるステップと
を含む、方法。
【請求項2】
前記複数のフレームにおいて表される前記1つ又は複数の物体に対応するバウンディング・ボックスのセットを生成するステップをさらに含む、請求項1に記載の方法。
【請求項3】
クロップされた移動の第1のセットを決定するために、前記バウンディング・ボックスのセットに基づいて、前記計算された移動に対してクロッピング動作の第1のセットを実施するステップと、
クロップされたフレームの第1のセットを決定するために、前記バウンディング・ボックスのセットに基づいて、前記複数のフレームに対してクロッピング動作の第2のセットを実施するステップと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記ニューラル・ネットワークの1つ又は複数のカーネルに少なくとも部分的に基づいて1つ又は複数の値を決定するステップと、
前記1つ又は複数の値に少なくとも部分的に基づいて前記ニューラル・ネットワークからカーネルのセットを除去するステップと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記1つ又は複数のアクションが、少なくとも、座るアクション、歩くアクション、走るアクション、又は階段を上るアクションを含む、請求項1に記載の方法。
【請求項6】
前記ニューラル・ネットワークが、1つ又は複数の量子化された重みを含む、請求項1に記載の方法。
【請求項7】
ビデオ・データから、1つ又は複数のフレームに示された1つ又は複数の物体を識別し、
前記ビデオ・データの前記1つ又は複数のフレームを使用して、前記1つ又は複数の物体に対応する1つ又は複数のフロー場と1つ又は複数のバウンディング・ボックスとを計算し、
前記1つ又は複数のフロー場と前記1つ又は複数のバウンディング・ボックスとに基づいて、前記1つ又は複数の物体によって実施される1つ又は複数のアクションについての1つ又は複数の分類を決定する
1つ又は複数の回路を備える、プロセッサ。
【請求項8】
前記1つ又は複数の回路が、さらに、
前記1つ又は複数のバウンディング・ボックスを計算するために第1のニューラル・ネットワークを使用し、
前記1つ又は複数の分類を決定するために第2のニューラル・ネットワークを使用する、請求項7に記載のプロセッサ。
【請求項9】
前記1つ又は複数の回路が、さらに、
前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークの1つ又は複数のカーネルの1つ又は複数のL1ノルム値を計算し、
前記1つ又は複数のL1ノルム値に少なくとも部分的に基づいて、前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークからカーネルのセットを除去する、請求項8に記載のプロセッサ。
【請求項10】
前記カーネルのセットが、しきい値を上回るL1ノルム値を有する、前記1つ又は複数のカーネルのうちのカーネルに対応する、請求項9に記載のプロセッサ。
【請求項11】
前記1つ又は複数の回路が、さらに、1つ又は複数のハードウェア・アクセラレータを使用して前記1つ又は複数のフロー場を計算する、請求項7に記載のプロセッサ。
【請求項12】
前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークが、量子化された重みのセットを含む、請求項8に記載のプロセッサ。
【請求項13】
前記ビデオ・データが、1つ又は複数の自律車両システムからキャプチャされる、請求項7に記載のプロセッサ。
【請求項14】
ハードウェア・アクセラレータと、
命令を備えるメモリと
を備えるコンピューティング・デバイスであって、前記命令は、少なくとも、
複数のフレームを受信し、
前記ハードウェア・アクセラレータに、前記複数のフレームに対応する1つ又は複数のベクトル場を決定させ、
第1のニューラル・ネットワークに少なくとも部分的に基づいて、前記複数のフレームにおいて表される1つ又は複数の物体を決定し、
第2のニューラル・ネットワークを使用して、前記1つ又は複数のベクトル場及び前記1つ又は複数の決定された物体に少なくとも部分的に基づいて、前記複数のフレームにおいて表される1つ又は複数のアクションを分類する
ために、前記コンピューティング・デバイスの1つ又は複数のプロセッサによって実行可能である、コンピューティング・デバイス。
【請求項15】
前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークが、1つ又は複数の量子化プロセスを通して処理される1つ又は複数の重みを含む、請求項14に記載のコンピューティング・デバイス。
【請求項16】
前記1つ又は複数の量子化プロセスが、第1の表現から第2の表現への前記1つ又は複数の重みのコンバージョンを含む、請求項15に記載のコンピューティング・デバイス。
【請求項17】
前記1つ又は複数の量子化プロセスが、1つ又は複数のカルバック・ライブラー・ダイバージェンス値に少なくとも部分的に基づく、請求項15に記載のコンピューティング・デバイス。
【請求項18】
前記第1の表現が32ビット浮動小数点表現であり、前記第2の表現が8ビット整数表現である、請求項16に記載のコンピューティング・デバイス。
【請求項19】
前記命令が、前記コンピューティング・デバイスの1つ又は複数の画像キャプチャ・ハードウェアから前記複数のフレームを少なくとも取得するために、前記1つ又は複数のプロセッサによって実行可能な命令をさらに含む、請求項14に記載のコンピューティング・デバイス。
【請求項20】
前記ハードウェア・アクセラレータが、1つ又は複数の並列処理ユニットを備える、請求項14に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、その内容の全体がすべての目的のために参照により本明細書に組み込まれる、2021年4月8日に出願された「END TO END ACTION RECOGNITION IN INTELLIGENT VIDEO ANALYSIS AND EDGE COMPUTING SYSTEMS」と題する米国特許出願第17/225,924号の優先権を主張する。
【0002】
少なくとも1つの実施例は、画像及びビデオ・フレームにおけるアクション認識(action recognition)を実施し、容易にするために使用される処理リソースに関する。たとえば、少なくとも1つの実施例は、ニューラル・ネットワークを使用して画像におけるアクション認識を実施するために使用されるプロセッサ又はコンピューティング・システムに関する。
【背景技術】
【0003】
アクション認識は、ビデオ監視及び自律運転など、様々な環境において重要なタスクである。多くの場合、アクション認識は、実施するために大量のコンピューティング・リソースを必要とする。これは、特定のコンピューティング環境におけるいくつかのコンピューティング・デバイスがアクション認識を実施するための処理能力(processing power)を有しないことがある状況を生じることがある。したがって、アクション認識を実施するために使用されるメモリ、時間、又はコンピューティング・リソースの量が改善され得る。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】“Taxonomy and Definitions for Terms Related to Driving Automation Systems for On Road Motor Vehicles” (e.g., Standard No. J3016 201806, published on June 15, 2018, Standard No. J3016 201609, published on September 30, 2016, and previous and future versions of this standard)
【図面の簡単な説明】
【0005】
【
図1】少なくとも1つの実施例による、アクション認識のためのシステムの一実例を示す図である。
【
図2】少なくとも1つの実施例による、ニューラル・ネットワークをプルーニングすることの一実例を示す図である。
【
図3】少なくとも1つの実施例による、ニューラル・ネットワークの重みを量子化することの一実例を示す図である。
【
図4】少なくとも1つの実施例による、アクション認識のためのシステムに関して画像を処理することの一実例を示す図である。
【
図5】少なくとも1つの実施例による、アクション認識のためのエッジ・デバイス及びシステムの一実例を示す図である。
【
図6】少なくとも1つの実施例による、アクション認識のためのシステムのためのプロセスの一実例を示す図である。
【
図7A】少なくとも1つの実施例による、推論及び/又は訓練論理(training logic)を示す図である。
【
図7B】少なくとも1つの実施例による、推論及び/又は訓練論理を示す図である。
【
図8】少なくとも1つの実施例による、ニューラル・ネットワークの訓練及び導入を示す図である。
【
図9】少なくとも1つの実施例による、例示的なデータ・センタ・システムを示す図である。
【
図10A】少なくとも1つの実施例による、自律車両の一実例を示す図である。
【
図10B】少なくとも1つの実施例による、
図10Aの自律車両についてのカメラ・ロケーション及び視野の一実例を示す図である。
【
図10C】少なくとも1つの実施例による、
図10Aの自律車両のための例示的なシステム・アーキテクチャを示すブロック図である。
【
図10D】少なくとも1つの実施例による、(1つ又は複数の)クラウド・ベースのサーバと
図10Aの自律車両との間の通信のためのシステムを示す図である。
【
図11】少なくとも1つの実施例による、コンピュータ・システムを示すブロック図である。
【
図12】少なくとも1つの実施例による、コンピュータ・システムを示すブロック図である。
【
図13】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図14】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図15A】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図15B】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図15C】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図15D】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図15E】少なくとも1つの実施例による、共有プログラミング・モデルを示す図である。
【
図15F】少なくとも1つの実施例による、共有プログラミング・モデルを示す図である。
【
図16】少なくとも1つの実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
【
図17A】少なくとも1つの実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
【
図17B】少なくとも1つの実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
【
図18A】少なくとも1つの実施例による、追加の例示的なグラフィックス・プロセッサ論理を示す図である。
【
図18B】少なくとも1つの実施例による、追加の例示的なグラフィックス・プロセッサ論理を示す図である。
【
図19】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
【
図20A】少なくとも1つの実施例による、並列プロセッサを示す図である。
【
図20B】少なくとも1つの実施例による、パーティション・ユニットを示す図である。
【
図20C】少なくとも1つの実施例による、処理クラスタを示す図である。
【
図20D】少なくとも1つの実施例による、グラフィックス・マルチプロセッサを示す図である。
【
図21】少なくとも1つの実施例による、マルチ・グラフィックス処理ユニット(GPU:graphics processing unit)システムを示す図である。
【
図22】少なくとも1つの実施例による、グラフィックス・プロセッサを示す図である。
【
図23】少なくとも1つの実施例による、プロセッサのためのプロセッサ・マイクロアーキテクチャを示すブロック図である。
【
図24】少なくとも1つの実施例による、深層学習アプリケーション・プロセッサを示す図である。
【
図25】少なくとも1つの実施例による、例示的なニューロモーフィック・プロセッサを示すブロック図である。
【
図26】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【
図27】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【
図28】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【
図29】少なくとも1つの実施例による、グラフィックス・プロセッサのグラフィックス処理エンジンのブロック図である。
【
図30】少なくとも1つの実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分のブロック図である。
【
図31A】少なくとも1つの実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。
【
図31B】少なくとも1つの実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。
【
図32】少なくとも1つの実施例による、並列処理ユニット(「PPU」:parallel processing unit)を示す図である。
【
図33】少なくとも1つの実施例による、汎用処理クラスタ(「GPC」:general processing cluster)を示す図である。
【
図34】少なくとも1つの実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。
【
図35】少なくとも1つの実施例による、ストリーミング・マルチプロセッサを示す図である。
【
図36】少なくとも1つの実施例による、先進コンピューティング・パイプラインのための例示的なデータ・フロー図である。
【
図37】少なくとも1つの実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練し、適応させ、インスタンス化し、導入するための例示的なシステムのためのシステム図である。
【
図38】少なくとも1つの実施例による、撮像データを処理するための先進コンピューティング・パイプライン3710Aの例示的な図を含む図である。
【
図39A】少なくとも1つの実施例による、超音波デバイスをサポートする仮想機器の例示的なデータ・フロー図を含む図である。
【
図39B】少なくとも1つの実施例による、CTスキャナをサポートする仮想機器の例示的なデータ・フロー図を含む図である。
【
図40A】少なくとも1つの実施例による、機械学習モデルを訓練するためのプロセスのためのデータ・フロー図である。
【
図40B】少なくとも1つの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャの例示的な図である。
【発明を実施するための形態】
【0006】
様々な実施例では、アクション認識は、実施するために大量のコンピューティング・リソースを必要とするリソース集約的タスクである。本明細書で説明される技法は、アクション認識のためのシステムであって、システムが、エッジ・デバイスなど、限られたコンピューティング・リソースをもつ様々なデバイスにおいて使用可能であるように、ビデオ・データに基づいて物体のアクションを効率的に分類し得る、システムに関する。詳細には、システムは、入力ビデオ・データに基づいて、ビデオ・データ中に表される1つ又は複数の物体のアクションを分類し得る。物体は、ビデオ・データ中に表される任意の好適なエンティティ又は物体を指し得る。アクションは、(限定はしないが)座ること、歩くこと、走ること、上ること、及び他の様々なアクションなど、運動アクション(motor action)を含み得る。システムは、それが、限られた処理能力(processing capability)をもつコンピューティング・デバイス上で導入可能であるように効率的であり得る。
【0007】
システムは、訓練の後に、様々なプルーニング・プロセスを受ける、物体検出及びアクション認識のための様々なニューラル・ネットワーク・モデルを利用し得る。様々な実施例では、それらのモデルは、それらのモデルのカーネルのL1ノルム値を計算することと、定義されたしきい値を下回るL1ノルム値をもつカーネルを除去することとによってプルーニングされる。また、性能をさらに改善するために、ニューラル・ネットワーク・モデルの重みが量子化され得る。プルーニング及び量子化されたネットワークは、物体検出及びアクション認識機能を効率的に実施し得る。
【0008】
追加として、システムは、ビデオ・データの物体のためのオプティカル・フロー・ベクトルを算出するためにハードウェア・アクセラレータを利用し得る。ハードウェア・アクセラレータは、詳細には、オプティカル・フロー算出のために構成され得、これは、システムの効率をさらに増加させる。システムは、ビデオ・データから物体のアクションを効率的に分類するために、ハードウェア・アクセラレータに関して、プルーニング及び量子化されたネットワークを利用し得る。システムは、プルーニング及び量子化されたネットワークとハードウェア・アクセラレータとのそれの利用により、リアルタイムで、及び様々なエッジ・デバイスにおいてなど、コンピューティング・リソースが限られていることがある様々な環境において、アクション認識を実施することができる。
【0009】
上記の説明及び以下の説明において、様々な技法が説明される。説明の目的で、技法を実装する可能なやり方の完全な理解を提供するために、具体的な構成及び詳細が記載される。ただし、以下で説明される技法が、具体的な詳細なしに異なる構成において実践され得ることも明らかであろう。さらに、よく知られている特徴は、説明されている技法を不明瞭にすることを回避するために省略又は簡略化され得る。
【0010】
本開示で説明及び示唆される技法は、システムの効率を増加させるために、プルーニング、量子化、及びハードウェア・アクセラレーションなど、様々な技法を使用してアクション認識を実施するシステムを提供することによって、特に、限られたコンピューティング・リソースを用いてアクション認識を実施するコンテキスト内での、アクション認識の分野を改善し得る。追加として、本開示で説明及び示唆される技法は、様々なコンピューティング・システム上でアクション認識の実施の速度を改善し得る。その上、本開示で説明及び示唆される技法は、特に、限られたコンピューティング・リソースを用いてリアルタイムでアクション認識を実施することに関して起こる問題を克服するために、コンピュータ技術に必然的に根ざしている。
【0011】
図1は、少なくとも1つの実施例による、アクション認識のためのシステムの実例100を示す。一実施例では、アクション認識のためのシステム102が、(1つ又は複数の)アクション分類128を決定するためにビデオ・データ104を処理する。アクション認識のためのシステム102は、実行されたとき、ビデオ・データに基づいて1つ又は複数のアクション分類を決定する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合であり得る。いくつかの実例では、アクション認識のためのシステム102は、コンピュータ・ハードウェア上で実行しているソフトウェア・プログラム、コンピュータ・ハードウェア上で実行しているアプリケーション、及び/又はそれらの変形形態である。一実施例では、アクション認識のためのシステム102の1つ又は複数のプロセスは、任意の好適な処理システム又はユニット(たとえば、グラフィックス処理ユニット(GPU)、並列処理ユニット(PPU)、中央処理ユニット(CPU))によって、並びに、連続、並列、及び/又はそれらの変形形態を含む任意の好適な様式で、実施される。
【0012】
アクション認識のためのシステム102は、ビデオ・データ104を取得するか、又はさもなければ受信し得る。一実施例では、ビデオ・データ104は、動く視覚画像(たとえば、ビデオ)の表現を符号化するデジタル・データである。ビデオ・データ104は、フレームとも呼ばれる、1つ又は複数の画像を備え得、それらは集合的にビデオを形成する。ビデオ・データ104は、アドバンスト・ビデオ・コーディング(AVC:advanced video coding)、モーション・ピクチャ・エキスパート・グループ(MPEG:motion picture experts group)フォーマット、及び/又はそれらの変形形態など、任意の好適なデジタル・ビデオ・フォーマットを使用して実装され得る。ビデオ・データ104は、任意の好適なラスタ画像ファイル・フォーマット(たとえば、ビットマップ画像ファイル、JPEG(Joint Photographic Experts Group:ジョイント・フォトグラフィック・エキスパート・グループ)ファイル)及び/又はベクトル画像ファイル・フォーマット(たとえば、SVG(Scalable Vector Graphics:スケーラブル・ベクトル・グラフィックス)ファイル)の画像のシーケンスとして実装され得る。ビデオ・データ104は、圧縮又は非圧縮であり得る。ビデオ・データ104は、自律車両、ロボット、監視システム、医療撮像システム、衛星撮像システムなどの1つ又は複数のシステムなど、1つ又は複数のビデオ及び/又は画像キャプチャ・デバイスから生成され得る。ビデオ・データ104は、赤緑青(RGB:red-green-blue)、白黒(BW:black-and-white)、グレースケール、及び/又はそれらの変形形態など、任意の好適な配色のビデオを表し得る。
【0013】
アクション認識のためのシステム102は、様々なビデオ及び/又は画像キャプチャ・デバイスに関して1つ又は複数のシステムからビデオ・データ104を取得するか、又はさもなければ提供され得る。いくつかの実例では、アクション認識のためのシステム102は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアを備えるシステムの一部であり、ここで、アクション認識のためのシステム102は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアからビデオ・データ104を取得する。ビデオ・データ104は、物理的に(たとえば、アクション認識のためのシステム102に関連するデバイスへのワイヤード接続を介して)、リモートで(たとえば、アクション認識のためのシステム102に関連するデバイスへのワイヤレス通信ネットワークを介して)、及び/又はそれらの変形形態など、任意の好適な様式でアクション認識のためのシステム102によって取得されるか、又はさもなければ、そのシステムに提供され得る。
【0014】
アクション認識のためのシステム102のデコーダ106が、ビデオ・データ104を処理し得る。一実施例では、デコーダ106は、実行されたとき、1つ又は複数のビデオ処理動作を実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。デコーダ106は、ビデオ・データ104からフレームを決定し得る。いくつかの実例では、ビデオ・データ104は圧縮され、ここで、デコーダ106は、フレームを決定するためにビデオ・データ104を解凍する。デコーダ106は、ビデオ・データ104から画像状態108を決定し得る。画像状態108は、ビデオ・フレームを記憶するか、又はさもなければ符号化する、データ構造又はデータ・オブジェクトであり得る。画像状態108は、ビデオ・データ104の1つ又は複数のフレームを含み得る。ビデオ・データ104のフレームは、様々なラスタ・フォーマット及び/又はベクトル・フォーマットでなど、任意の好適な画像ファイル・フォーマットで表されるか、又はさもなければ記憶される画像であり得る。ビデオ・データ104のフレームは、画像状態108において圧縮形態又は非圧縮形態にあり得る。
【0015】
デコーダ106は、フレーム(たとえば、画像状態108のフレーム)をアクセラレータ110と検出器114とに出力し得る。いくつかの実例では、デコーダ106は、以下でさらに詳細に説明されるように、フレームを物体クロッピング118に出力する。検出器114は、デコーダ106によって出力されたフレームを処理し得る。一実施例では、検出器114は、実行されたとき、1つ又は複数の物体検出動作を実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。検出器114は、パーセプトロン・モデル、動径基底ネットワーク(RBN:radial basis network)、オート・エンコーダ(AE:auto encoder)、ボルツマン・マシン(BM:Boltzmann Machine)、制限ボルツマン・マシン(RBM:Restricted Boltzmann Machine)、深層信念ネットワーク(DBN:deep belief network)、深層畳み込みネットワーク(DCN:deep convolutional network)、極端学習機械(ELM:extreme learning machine)、深層残差ネットワーク(DRN:deep residual network)、及び/又はそれらの変形形態など、物体検出のための様々なニューラル・ネットワーク・モデルを利用し得る。検出器114は、画像状態108のフレームの特徴を決定し得る。検出器114は、画像状態108のフレームの物体のためのバウンディング・ボックスを決定し得る。物体は、人、環境の物体、車両、ロボット、及び/又はそれらの変形形態など、1つ又は複数のフレーム中に表されるシーンの任意の好適なエンティティ又は物体を指し得る。一実施例では、バウンディング・ボックスは、画像中に表されている物体のロケーション及び/又は位置の指示を指す。バウンディング・ボックスは、バウンディング・ボックスのコーナーに対応する座標のセットによって画定され得る。バウンディング・ボックスは、物体を含む画像(たとえば、フレーム)のエリア又は領域を示し得る。検出器114は、画像状態108の1つ又は複数のフレーム中に表される任意の数の物体のためのバウンディング・ボックスを決定し、決定されたバウンディング・ボックスを物体クロッピング118とオプティカル・フロー・クロッピング122とに出力し得る。
【0016】
いくつかの実例では、検出器114は、画像状態108の各フレームのためのバウンディング・ボックスを決定せず、画像状態108の1つ又は複数のフレームのためのバウンディング・ボックスのみを決定し、ここで、決定されたバウンディング・ボックスはトラッカー116に出力される。一実施例では、トラッカー116は、実行されたとき、1つ又は複数のコンピュータ・ビジョン・プロセスを実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。トラッカー116は、1つ又は複数のフレームのバウンディング・ボックスを、その1つ又は複数のフレームに対する1つ又は複数の前のフレーム及び/又はその1つ又はフレームに対する1つ又は複数の後のフレームのバウンディング・ボックスに基づいて決定する、1つ又は複数のコンピュータ・ビジョン・アルゴリズムを実施し得る。検出器114及び/又はトラッカー116は、追跡距離と呼ばれることがあるパラメータで構成され得、このパラメータは、画像状態108のどのフレームが検出器114及び/又はトラッカー116によって処理されるべきであるかを決定する。追跡距離は、検出器114によって処理されるべきであり、任意の好適な整数値であり得る、フレーム間のフレームの数を示すことができる。たとえば、0の値の追跡距離は、検出器114が画像状態108のあらゆるフレームを処理するべきであることを示し、1の値をもつ追跡距離は、検出器114が画像状態108の1つおきのフレームを処理するべきであることを示し、以下同様である。トラッカー116は、検出器114によって処理されない画像状態108の各フレームのためのバウンディング・ボックスを決定し得る。たとえば、検出器114は、画像状態108のフレームの1つおきのフレーム(たとえば、第1のフレーム、第3のフレーム、第5のフレームなど)のためのバウンディング・ボックスを決定し、ここで、トラッカー116は、画像状態108のフレームの残りのフレーム(たとえば、第2のフレーム、第4のフレーム、第6のフレームなど)のためのバウンディング・ボックスを決定する。トラッカー116は、フレーム中の物体のためのバウンディング・ボックスを、前のフレーム中のその物体のためのバウンディング・ボックス及び/又は後のフレーム中のその物体のためのバウンディング・ボックスに基づいて決定するために、1つ又は複数のカーネル・ベース追跡プロセス及び/又は輪郭追跡プロセスなど、様々な物体追跡プロセスを実施し得る。
【0017】
トラッカー116は、検出器114によって決定されたバウンディング・ボックスに基づいて、任意の好適な数のフレームの任意の数の物体のためのバウンディング・ボックスを決定し得る。物体クロッピング118は、フレーム中に表される物体を示し得る、検出器114及び/又はトラッカー116によって出力されたバウンディング・ボックスに基づいて、デコーダ106によって出力されたフレーム(たとえば、画像状態108のフレーム)を処理し得る。一実施例では、物体クロッピング118は、実行されたとき、1つ又は複数の画像クロッピング動作を実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。物体クロッピング118はフレームをクロップして、画像のセットを決定し得、ここで、画像のセットの各画像は、フレームのバウンディング・ボックスに対応する。物体クロッピング118はフレームを、(たとえば、検出器114及び/又はトラッカー116によって決定された)フレームのための1つ又は複数のバウンディング・ボックスに関してクロップして、1つ又は複数のバウンディング・ボックスに対応する1つ又は複数の画像を決定し得、ここで、1つ又は複数の画像の各画像は、1つ又は複数のバウンディング・ボックスの対応するバウンディング・ボックスによって示されるフレームのエリア又は領域を含む。
【0018】
たとえば、所与のフレーム(たとえば、画像状態108のフレーム)と、(たとえば、検出器114及び/又はトラッカー116によって決定された)そのフレームの第1の物体を示す第1のバウンディング・ボックスとについて、物体クロッピング118はフレームをクロップして、第1の物体を示す第1のバウンディング・ボックスによって示されるエリア又は領域を含むフレームからの第1の画像を決定し、フレームの他の物体を示す任意の数の他のバウンディング・ボックスについて、以下同様である。物体クロッピング118は特定のフレームをクロップして、特定のフレームのための任意の数のバウンディング・ボックスに対応する、クロップされたフレームとも呼ばれる画像のセットを決定し得る。クロップされたフレームは、フレーム中に表される物体のためのバウンディング・ボックスに基づいてフレームから決定される画像を指し得る。物体クロッピング118は、フレーム(たとえば、画像状態108のフレーム)から決定される1つ又は複数のクロップされたフレームを、物体ボックス・バッファ120に出力し得る。
【0019】
物体ボックス・バッファ120は、物体クロッピング118から出力された1つ又は複数のクロップされたフレームを記憶し得る。一実施例では、物体ボックス・バッファ120は、1つ又は複数の画像を記憶するデータ・バッファである。物体ボックス・バッファ120は、ソフトウェア及び/又はハードウェア・リソースを使用して実装され得る。物体ボックス・バッファ120は、アレイ又はリストなど、1つ又は複数のデータ構造を使用して実装され得る。物体ボックス・バッファ120は、画像状態108のフレームの1つ又は複数の物体の1つ又は複数のバウンディング・ボックスに対応する1つ又は複数の画像を記憶し得る。物体ボックス・バッファ120は、1つ又は複数の画像(たとえば、クロップされたフレーム)をアクション認識モデル126に出力し得る。
【0020】
一実施例では、オプティカル・フロー・アクセラレータとも呼ばれるアクセラレータ110は、オプティカル・フローを算出するためのハードウェア・アクセラレータ・コンピューティング・デバイスである。アクセラレータ110は、1つ又は複数のPPU、GPUなど、様々なハードウェア処理構成要素を備え得る。アクセラレータ110は、任意の好適なハードウェア・アクセラレータであり得る。一実施例では、ハードウェア・アクセラレータは、特に1つ又は複数のプロセスを実施するために利用されるコンピュータ・ハードウェアを指す。ハードウェア・アクセラレータは、汎用CPUを使用するソフトウェアなど、他のソフトウェア及び/又はハードウェア上で様々な機能を実施するために使用されるコンピューティング・リソースよりも少ないコンピューティング・リソースを使用して、様々な機能(たとえば、オプティカル・フロー算出プロセス)を実施し得る。
【0021】
オプティカル・フローは、視覚シーンにおける物体、表面及びエッジの明らかな動きのパターンを指し得る。オプティカル・フローは、オプティカル・フロー場を使用して表され得、オプティカル・フロー場は、画像フレーム間の物体の動きを示すベクトル場であり得る。一実施例では、2つ又はそれ以上の画像フレームのためのオプティカル・フロー場はベクトルの集合を含み、ここで、各ベクトルは、2つ又はそれ以上の画像フレームのうちのフレーム間の物体の動きを表す。たとえば、第1の画像が、第1の位置における第1の物体を示し、第2の画像が、第2の位置における第1の物体を示し、ここで、第1の画像と第2の画像とのためのオプティカル・フロー場が、第1の位置から第2の位置への第1の物体の移動を示すベクトルを含む。
【0022】
アクセラレータ110は、ベクトル場とも呼ばれる1つ又は複数のフロー場、オプティカル・フロー場及び/又はその変形形態を決定するために、デコーダ106によって出力されたフレーム(たとえば、画像状態108のフレーム)を処理し得る。アクセラレータ110は、特徴情報、バウンディング・ボックス情報、及び/又はその変形形態など、フロー場を決定するために検出器114によって決定された様々な情報を利用し得る。いくつかの実例では、アクセラレータ110は、フレームを、パッチとも呼ばれる1つ又は複数の領域又はブロックに分割し、フレームの対応する領域又はブロックに基づいてフロー場を決定する。たとえば、第1のフレームと第2のフレームとについて、アクセラレータ110は、フレームをブロックのセットに分割し、第1のフレームのブロックが、第2のフレームのブロックの物体に相関するか又はさもなければ対応する物体を含むと決定し、第1のフレームのブロックによって示される第1の位置から第2のフレームのブロックによって示される第2の位置への物体の移動を示す1つ又は複数のベクトルを含むフロー場を算出する。
【0023】
オプティカル・フロー状態112は、フロー場を記憶するか又はさもなければ符号化する、データ構造又はデータ・オブジェクトであり得る。アクセラレータ110は、1つ又は複数のフロー場を含むオプティカル・フロー状態112を決定し得る。一実施例では、オプティカル・フロー状態112の各フロー場は、画像状態108のフレームのペアに対応する。オプティカル・フロー状態112のフロー場は、画像状態108のフレームの物体の動きを示し得る。フロー場は、画像状態108のフレームの間のそれぞれのピクセルの移動を示し得、ここで、ピクセルは、フレーム中に表される1つ又は複数の物体に対応し得る。たとえば、オプティカル・フロー状態112の第1のフロー場は、第1の位置における第1の物体を示す第1のフレームと、第2の位置における第1の物体を示す第2のフレームとに対応し、ここで、第1のフロー場は、第1の位置から第2の位置への第1の物体の動きを示す1つ又は複数のベクトルを含む。オプティカル・フロー状態112のフロー場は、画像状態108のフレームの任意の数の物体の動きを示し得る。フロー場は、アクセラレータ110によってオプティカル・フロー・クロッピング122に出力され得る。
【0024】
オプティカル・フロー・クロッピング122は、オプティカル・フロー状態112のフロー場と、検出器114及び/又はトラッカー116から出力されたバウンディング・ボックスとを処理し得る。一実施例では、オプティカル・フロー・クロッピング122は、実行されたとき、1つ又は複数のフロー場クロッピング動作を実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。オプティカル・フロー・クロッピング122はフレーム(たとえば、画像状態108のフレーム)に対応するフロー場をクロップして、クロップされたフロー場のセットを決定し得、ここで、クロップされたフロー場のセットの各クロップされたフロー場は、フレームのバウンディング・ボックスに対応する。オプティカル・フロー・クロッピング122はフロー場を、フレームの対応するペアと、(たとえば、検出器114及び/又はトラッカー116によって決定された)フレームのペアのうちのフレームのための1つ又は複数のバウンディング・ボックスとに基づいてクロップして、1つ又は複数のバウンディング・ボックスに対応する1つ又は複数のクロップされたフロー場を決定し得、ここで、各クロップされたフロー場は、1つ又は複数のバウンディング・ボックスのうちの対応するバウンディング・ボックスによって示されるフレームのエリア又は領域に対応するフロー場のエリア又は領域に対応する。
【0025】
たとえば、第1のフレーム及び第2のフレーム(たとえば、画像状態108のフレーム)に対応する所与のフロー場と、(たとえば、検出器114及び/又はトラッカー116によって決定された)第1のフレームの第1の物体を示す第1のバウンディング・ボックスとについて、オプティカル・フロー・クロッピング122はフロー場をクロップして、第1の物体を示す第1のバウンディング・ボックスによって示される第1のフレームのエリア又は領域に対応するフロー場のエリア又は領域を含む第1のクロップされたフロー場を決定し、第1のフレームの他の物体を示す任意の数の他のバウンディング・ボックスについて、以下同様である。オプティカル・フロー・クロッピング122は、フレームの対応するペアの第1のフレーム及び/又は第2のフレームのための1つ又は複数のバウンディング・ボックスに基づいてフロー場をクロップして、1つ又は複数のバウンディング・ボックスに対応するクロップされたフロー場のセットを決定し得る。クロップされた移動とも呼ばれる、クロップされたフロー場は、1つ又は複数のフレーム中に表される(たとえば、バウンディング・ボックスによって示される)特定の物体の移動を示すフロー場を指し得る。一実施例では、物体のバウンディング・ボックスに対応するクロップされたフロー場は、物体の動きを示すベクトルを含む。オプティカル・フロー・クロッピング122は、フロー場(たとえば、オプティカル・フロー状態112のフロー場)から決定された1つ又は複数のクロップされたフロー場をオプティカル・フロー・ボックス・バッファ124に出力し得る。
【0026】
オプティカル・フロー・ボックス・バッファ124は、オプティカル・フロー・クロッピング122から出力された1つ又は複数のフロー場を記憶し得る。一実施例では、オプティカル・フロー・ボックス・バッファ124は、1つ又は複数のフロー場を記憶するデータ・バッファである。オプティカル・フロー・ボックス・バッファ124は、ソフトウェア及び/又はハードウェア・リソースを使用して実装され得る。オプティカル・フロー・ボックス・バッファ124は、アレイ又はリストなど、1つ又は複数のデータ構造を使用して実装され得る。オプティカル・フロー・ボックス・バッファ124は、画像状態108のフレームの1つ又は複数の物体の1つ又は複数のバウンディング・ボックスに対応する(たとえば、オプティカル・フロー状態112のフロー場から決定された)1つ又は複数のクロップされたフロー場を記憶し得る。オプティカル・フロー・ボックス・バッファ124は、1つ又は複数のフロー場をアクション認識モデル126に出力し得る。
【0027】
アクション認識モデル126は、物体ボックス・バッファ120から出力されたクロップされたフレームと、オプティカル・フロー・ボックス・バッファ124から出力されたクロップされたフロー場とを処理し得る。一実施例では、オプティカル・フロー・ボックス・バッファ124の各フロー場は、物体ボックス・バッファ120のクロップされたフレームに対応する。オプティカル・フロー・ボックス・バッファ124のクロップされたフロー場は、物体ボックス・バッファ120のクロップされたフレームが対応するバウンディング・ボックスの物体の動きを示し得る。たとえば、物体ボックス・バッファ120の第1のクロップされたフレームは、物体のバウンディング・ボックスに対応し、ここで、対応するクロップされたフロー場は、物体の動きを示すベクトルを含む。アクション認識モデル126は、物体ボックス・バッファ120から出力されたクロップされたフレームと、オプティカル・フロー・ボックス・バッファ124から出力されたクロップされたフロー場とに基づいて、画像状態108のフレームに示された物体のアクションを決定し得る。
【0028】
一実施例では、アクション認識モデル126は、実行されたとき、1つ又は複数のアクション認識分類プロセスを実施する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合である。アクション認識モデル126は、パーセプトロン・モデル、動径基底ネットワーク(RBN)、オート・エンコーダ(AE)、ボルツマン・マシン(BM)、制限ボルツマン・マシン(RBM)、深層信念ネットワーク(DBN)、深層畳み込みネットワーク(DCN)、極端学習機械(ELM)、深層残差ネットワーク(DRN)、及び/又はそれらの変形形態など、アクション認識のための様々なニューラル・ネットワーク・モデルを利用し得る。アクション認識モデル126は、ロジスティック回帰モデル、単純ベイズ・モデル、確率的勾配降下モデル(stochastic gradient descent model)、K近傍モデル、判定ツリー・モデル、ランダム・フォレスト・モデル、サポート・ベクター・マシン・モデル、及び/又はそれらの変形形態など、1つ又は複数の分類器ニューラル・ネットワーク・アルゴリズム及び/又はモデルを利用し得る。一実施例では、アクション認識モデル126は、1つ又は複数のゲート・リカレント・ユニット(GRU:gated recurrent unit)モデルを含む。アクション認識モデル126は、フロー場(たとえば、オプティカル・フロー・ボックス・バッファ124のクロップされたフロー場)を処理するために第1のモデルを利用し得、画像(たとえば、物体ボックス・バッファ120のクロップされたフレーム)を処理するために第2のモデルを利用し得る。
【0029】
アクション認識モデル126は、(1つ又は複数の)アクション分類128を決定し得、(1つ又は複数の)アクション分類128は、ビデオ・データ104の1つ又は複数の物体によって実施されている1つ又は複数のアクションの1つ又は複数のラベルを含み得る。アクションは、アクションに対応するアクション分類を含むラベルによって示され得る。いくつかの実施例では、アクション分類は、アクションを示す分類又は他の識別子である。一実施例では、(1つ又は複数の)アクション分類128は、アクション認識モデル126の1つ又は複数のニューラル・ネットワーク・プロセスの結果を符号化する1つ又は複数のデータ構造及び/又はデータ・オブジェクトの集合である。(1つ又は複数の)アクション分類128は、アクション認識モデル126によって決定されたラベルを記憶し得る。
【0030】
アクション認識モデル126は、ビデオ・データ104のフレームであり得る、画像状態108のフレーム中に表される物体のアクションを分類し得る。アクション認識モデル126は、(たとえば、検出器114及び/又はトラッカー116によって決定された1つ又は複数のバウンディング・ボックスによって示され、物体クロッピング118によって決定された1つ又は複数の画像に示された)画像状態108のフレーム中に表される各物体のための単一のラベルを決定し得、その単一のラベルは、物体のアクション(たとえば、1つ又は複数のフレーム中の物体によって実施されるアクション)に対応する、アクション分類とも呼ばれる特定の分類又はクラスを示す。1つ又は複数のフレーム(たとえば、画像状態108のフレーム)中に表される物体のためのラベルは、物体のアクションに対応するアクション分類、及び/或いは1つ又は複数のフレーム中に表される物体の(たとえば、バウンディング・ボックス又は他の好適な指示を介した)ロケーション又は位置の指示を含み得る。アクション分類は、座ること、歩くこと、走ること、(たとえば、壁、階段、及び/又は、それらの変形形態などの障害物を)上ること、ジャンプすることなどのアクション、及び/又は任意の好適なアクションを示し得る。アクション分類は、現実世界の環境における人間又は他の物体によって実施され得る任意のアクションを示し得る。たとえば、アクション認識モデル126は、歩くことに対応するアクション分類を含むビデオ・データ104中に表される物体のためのラベルを決定し、これは、アクション認識モデル126が、ビデオ・データ104中に表される物体が歩くことのアクションを実施していると決定したことを示す。アクション認識モデル126は、任意の数の好適なアクションに対応する任意の数のアクション分類のうちのアクション分類に属するものとして、物体のアクションを(たとえば、ラベルを介して)分類し得る。
【0031】
いくつかの実例では、物体のためのラベルは、異なるアクション分類についての確率を含む。物体のためのラベルは、アクションの第1のクラスの確率を示す第1の値を含み、アクションの第2のクラスの確率を示す第2の値を含み、任意の数のアクションについて、以下同様であり得る。たとえば、物体のためのラベルは、歩くことに対応するアクション分類の90%の確率と、立つことに対応するアクション分類の10%の確率とを示し、これは、アクション認識モデル126が、物体によって実施されているアクションが、90%の確率で歩くことのアクションであるか、又は10%の確率で立つことのアクションであると決定したことを示す。様々な実施例では、複数のアクション分類及び確率をもつ物体について、最高又は最大確率をもつアクション分類が、物体のためのラベルのために利用される。
【0032】
一実施例では、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワークは、1つ又は複数のプルーニング・プロセスを受ける。アクション認識のためのシステム102、及び/又は、訓練フレームワーク・システムなど、アクション認識のためのシステム102に関連するシステムは、検出器114の1つ又は複数のニューラル・ネットワーク・モデル及び/又はアクション認識モデル126に対して1つ又は複数のプルーニング・プロセスを実施し得る。様々な実施例では、システム(たとえば、アクション認識のためのシステム102、及び/又は、訓練フレームワーク・システムなど、アクション認識のためのシステム102に関連するシステム)は、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワーク・モデルを訓練し、1つ又は複数のニューラル・ネットワーク・モデルに1つ又は複数のプルーニング・プロセスを適用し、プルーニングされた1つ又は複数のニューラル・ネットワーク・モデルに対して追加の訓練プロセスを実施する。1つ又は複数のプルーニング・プロセスは、重み、カーネル、及び/又はそれらの変形形態をプルーニングすることを伴うものなど、並びに、任意の好適な論理、ヒューリスティック、ルール、機能、及び/又はそれらの変形形態に基づく、任意の好適なプルーニング・プロセスを含み得る。いくつかの実例では、プルーニングは、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワークのカーネルのL1ノルム値を計算することと、定義されたしきい値を下回るL1ノルム値をもつカーネルを除去することとによって、システムによって実施され、プルーニングに関するさらなる情報は、
図2の説明において見つけられ得る。プルーニングされたニューラル・ネットワークは、プルーニングされていないニューラル・ネットワークが含むカーネルよりも少ないカーネルを含み得、したがって、プルーニングされていないニューラル・ネットワークがデータを処理するために必要とするコンピューティング・リソースよりも、データを処理するために少ないコンピューティング・リソースを必要とし得るので、プルーニングされたニューラル・ネットワークは、プルーニングされていないニューラル・ネットワークがデータを処理するために利用するコンピューティング・リソースよりも、データを処理するために少ないコンピューティング・リソースを利用し得る。
【0033】
一実施例では、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワークは、1つ又は複数の量子化プロセスを受ける。アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワークは、量子化された重みを含み得る。アクション認識のためのシステム102、及び/又は、訓練フレームワーク・システムなど、アクション認識のためのシステム102に関連するシステムは、検出器114の1つ又は複数のニューラル・ネットワーク・モデル及び/又はアクション認識モデル126に対して1つ又は複数の量子化プロセスを実施し得る。様々な実施例では、システム(たとえば、アクション認識のためのシステム102、及び/又は、訓練フレームワーク・システムなど、アクション認識のためのシステム102に関連するシステム)は、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワーク・モデルに、訓練中の1つ又は複数の量子化プロセス(たとえば、量子化認識訓練(QAT:quantization-aware training))、及び/又は訓練の後の1つ又は複数の量子化プロセス(たとえば、訓練後量子化(PTQ:post-training quantization))など、1つ又は複数の量子化プロセスを適用する。いくつかの実例では、量子化は、任意の好適な論理、ヒューリスティック、ルール、機能、及び/又はそれらの変形形態を使用して、アクション認識のためのシステム102の1つ又は複数のニューラル・ネットワークの1つ又は複数の重みを第1のデータ・タイプ表現(たとえば、浮動小数点32ビット精度(FP32))から第2のデータ・タイプ表現(たとえば、8ビット整数(INT8))にコンバートすることによって、システムによって実施され、量子化に関するさらなる情報は、
図3の説明において見つけられ得る。量子化されたニューラル・ネットワークは、量子化されていないニューラル・ネットワークが含む重みのデータ・タイプ表現のビットよりも少ないビットのデータ・タイプ表現の重みを含み得、したがって、量子化されていないニューラル・ネットワークがデータを処理するために必要とするコンピューティング・リソースよりも、データを処理するために少ないコンピューティング・リソースを必要とし得るので、量子化されたニューラル・ネットワークは、量子化されていないニューラル・ネットワークがデータを処理するために利用するコンピューティング・リソースよりも、データを処理するために少ないコンピューティング・リソースを利用し得る。
【0034】
アクション認識のためのシステム102は、リアルタイムでアクション認識を実施し得る。一実施例では、リアルタイムは、入力が生成される時間間隔内に入力が処理される処理を指し得る。リアルタイム処理のための時間間隔は、ミリ秒、マイクロ秒、又は任意の好適な時間間隔のオーダーのものであり得る。アクション認識のためのシステム102は、(たとえば、1つ又は複数の画像及び/又はビデオ・キャプチャ・システムから)ビデオ・データ104が生成される時間間隔内に、ビデオ・データ104から(1つ又は複数の)アクション分類128を決定し得る。たとえば、アクション認識のためのシステム102は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアに関連するコンピューティング・システム(たとえば、エッジ・デバイス)の一部であり、ここで、ビデオ・データ104は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアから生成され、ここで、アクション認識のためのシステム102は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアから、ビデオ・データ104が生成された時間間隔内に、ビデオ・データ104から(1つ又は複数の)アクション分類128を決定する。
【0035】
様々な実施例では、アクション認識のためのシステム102は、車両(たとえば、手動車両、半自律車両、自律車両、又はドローン)、ロボット、エッジ・デバイス、又はニューラル・ネットワーク能力(capability)をもつ他のシステムなど、1つ又は複数のデバイス又はシステムの1つ又は複数のコンピューティング・システムを使用して実行されるソフトウェア・モジュールである。エッジ・デバイスは、モバイル・フォン、タブレット、ラップトップ、モノのインターネット(IoT)デバイス(たとえば、センサ、組み込みデバイス)、及び/又はそれらの変形形態など、コンピューティング・デバイスを指し得る。一実施例では、エッジ・デバイスは、限られたメモリ及び/又は処理能力をもつコンピューティング・デバイスである。サーバ又はデータ・センタ・システムなど、1つ又は複数のコンピューティング・システムは、エッジ・デバイス上にアクション認識のためのシステム102を導入するか、又はさもなければ実装し得、ここで、エッジ・デバイスは、アクション認識のためのシステム102を使用して様々なアクション認識プロセスを実施し得る。エッジ・デバイスは、様々な環境においてアクション認識を実施するためにアクション認識のためのシステム102を利用し得る。アクション認識のためのシステムとともにエッジ・デバイスを利用することに関するさらなる情報は、
図5の説明において見つけられ得る。
【0036】
図2は、少なくとも1つの実施例による、ニューラル・ネットワークをプルーニングすることの実例200を示す。この実例200では、1つ又は複数のニューラル・ネットワーク・モデルのカーネルであり得るカーネル202は、プルーニング204を受けてカーネル206を生じ、カーネル206は、1つ又は複数のプルーニング・プロセスの後のカーネル202であり得る。一実施例では、カーネル202及び/又はカーネル206は、
図1のアクション認識のためのシステムに関して説明されたものなど、1つ又は複数のニューラル・ネットワーク・モデルの1つ又は複数のカーネルである。
【0037】
カーネル202は、
図1に関して説明された、検出器の1つ又は複数のニューラル・ネットワーク・モデル及び/又はアクション認識モデルの1つ又は複数のカーネルであり得る。カーネルは、任意の好適な次元の1つ又は複数の重みのアレイを含み得る。一実施例では、カーネルの重みは、ニューラル・ネットワークの入力データを処理することの一部として、1つ又は複数の乗算プロセス中で使用されるカーネルの数値を指す。カーネルは、データの特徴及び/又は他の特性を決定するためにニューラル・ネットワークによって処理されているデータに適用され得る。フィルタは、カーネルのセットを含み得る。フィルタを形成する単一のカーネルは、フィルタと呼ばれることもある。
図2を参照すると、カーネル202は、第1のカーネル202A、第2のカーネル202B、第3のカーネル202C、第4のカーネル202D、第5のカーネル202E、及び/又は
図2に示されていない様々な他のカーネルを含み得る。
【0038】
カーネル202の重みは、アクション認識のためのシステム(たとえば、
図1のアクション認識のためのシステム102)、及び/又は、
図8に関して説明される訓練フレームワーク・システムなどのアクション認識のためのシステムに関連するシステムなど、1つ又は複数のシステムによって、検出器のニューラル・ネットワーク・モデル及び/又はアクション認識モデルなど、1つ又は複数のニューラル・ネットワーク・モデルの1つ又は複数の訓練プロセスの一部として更新され得る。たとえば、カーネル202は、検出器(たとえば、
図1の検出器114)の1つ又は複数のニューラル・ネットワーク・モデルのカーネルであり、ここで、検出器の1つ又は複数の訓練プロセスの一部として、カーネル202の重みは更新される。別の実例として、カーネル202は、アクション認識モデル(たとえば、
図1のアクション認識モデル126)の1つ又は複数のニューラル・ネットワーク・モデルのカーネルであり、ここで、アクション認識モデルの1つ又は複数の訓練プロセスの一部として、カーネル202の重みは更新される。
【0039】
アクション認識のためのシステム、及び/又はアクション認識のためのシステムに関連するシステムなど、1つ又は複数のシステムは、カーネル202の各カーネルのための1つ又は複数の値を決定し得、1つ又は複数の値は、L1ノルム値、L2ノルム値、最大ノルム値、及び/又はそれらの変形形態などの値を含み得る。一実施例では、L1ノルム値は、カーネルの重みの絶対値の和として計算される数値を指す。一実施例では、L2ノルム値は、カーネルの重みの2乗値の和の平方根として計算される数値を指す。一実施例では、最大ノルム値は、カーネルの重みの最大値として計算される数値を指す。1つ又は複数のシステムは、カーネル202の各カーネルのためのL1ノルム値を計算し得る。
図2はL1ノルム値を示すが、L2ノルム値、最大ノルム値、及び/又はそれらの変形形態など、任意の好適な値が利用され得ることに留意されたい。
【0040】
一実施例では、プルーニング204は、アクション認識のためのシステム及び/又はアクション認識のためのシステムに関連するシステムなど、1つ又は複数のシステムによって実施される1つ又は複数のニューラル・ネットワーク・プルーニング・プロセスを指す。プルーニング204は、1つ又は複数のシステムによって実施されるべきである命令のセットとして実装され得る。1つ又は複数のシステムは、カーネル202に対してプルーニング204を実施し得る。プルーニング204は、上記でさらに詳細に説明されたように、L1ノルム値がカーネルのために計算される1つ又は複数のプロセスを含み得る。プルーニング204は、プルーニングしきい値とも呼ばれるしきい値を上回るL1ノルム値をもつカーネルが除去される、1つ又は複数のプロセスを含み得る。プルーニング204の一部として利用されるプルーニングしきい値は、任意の好適な数値であり得る。いくつかの実例では、プルーニングしきい値は、1つ又は複数のニューラル・ネットワーク訓練プロセスに関して1つ又は複数のシステムによって決定される。プルーニングしきい値は、定義された論理ルール/機能、ニューラル・ネットワーク訓練/推論プロセス、及び/又はそれらの変形形態を通してなど、任意の好適なプロセスを通して1つ又は複数のシステムによって決定され得る。
【0041】
たとえば、カーネル202のうちの第1のカーネルのために計算される第1のL1ノルム値が、プルーニングしきい値を上回り、ここで、第1のカーネルは、プルーニング204の一部としてカーネル202から除去される。いくつかの実例では、カーネルのセットがフィルタを形成し、ここで、平均L1ノルム値が、カーネルのセットのうちの1つ又は複数のカーネルの1つ又は複数のL1ノルム値に基づいて(たとえば、1つ又は複数のL1ノルム値を加算することと、その和をカーネルの数で除算することとによって、又は任意の好適な方法によって)計算され、平均L1ノルム値は、フィルタを形成するカーネルのセットを除去すべきかどうかを決定するために利用され得る。たとえば、カーネル202のうちの第1のカーネルと第2のカーネルとがフィルタを形成し、ここで、第1のカーネルのL1ノルム値と第2のカーネルのL1ノルム値とに基づいて計算された平均L1ノルム値が、プルーニングしきい値を上回り、ここで、第1のカーネルと第2のカーネルとは、プルーニング204の一部としてカーネル202から除去される。
【0042】
プルーニング204はカーネル206を生じ得、カーネル206は、プルーニング204の1つ又は複数のプルーニング・プロセスの後のカーネル202であり得る。カーネル202の1つ又は複数のカーネル及び/又はフィルタは、1つ又は複数のカーネル及び/又はフィルタのための計算されたL1ノルム値がプルーニング204におけるプルーニングしきい値を上回る場合、除去されてカーネル206を生じ得る。たとえば、
図2を参照すると、カーネル202Aはカーネル206Aに対応し、カーネル202Bはカーネル206Bに対応し、カーネル202Cはカーネル206Cに対応し、カーネル202Eはカーネル206Eに対応し、カーネル202Dのために計算されるL1ノルム値は、プルーニングしきい値を上回り、ここで、プルーニング204の一部として、カーネル202Dはカーネル202から除去されてカーネル206を生じる。
【0043】
カーネル206の重みは、アクション認識のためのシステム(たとえば、
図1のアクション認識のためのシステム102)、及び/又は、
図8に関して説明される訓練フレームワーク・システムなどのアクション認識のためのシステムに関連するシステムなど、1つ又は複数のシステムによって、検出器のニューラル・ネットワーク・モデル及び/又はアクション認識モデルなど、1つ又は複数のニューラル・ネットワーク・モデルの1つ又は複数の訓練プロセスの一部として更新され得る。たとえば、カーネル206は、1つ又は複数のプルーニング・プロセス(たとえば、プルーニング204)を通して決定される検出器(たとえば、
図1の検出器114)の1つ又は複数のニューラル・ネットワーク・モデルのカーネルであり、ここで、検出器の1つ又は複数の訓練プロセスの一部として、カーネル206の重みは更新される。別の実例として、カーネル206は、1つ又は複数のプルーニング・プロセス(たとえば、プルーニング204)を通して決定されるアクション認識モデル(たとえば、
図1のアクション認識モデル126)の1つ又は複数のニューラル・ネットワーク・モデルのカーネルであり、ここで、アクション認識モデルの1つ又は複数の訓練プロセスの一部として、カーネル206の重みは更新される。
【0044】
図3は、少なくとも1つの実施例による、ニューラル・ネットワークの重みを量子化することの実例300を示す。実例300は、1つ又は複数のニューラル・ネットワーク・モデルの重みであり得る重み302A~302Fを含み得、重み302A~302Fは、量子化304を受けて、量子化された重みとも呼ばれる重み306A~306Fを生じ、重み306A~306Fは、1つ又は複数の量子化プロセスの302A~302Fの後の重みであり得る。一実施例では、重み302A~302F及び/又は重み306A~306Fは、
図1のアクション認識のためのシステムに関して説明されたものなど、1つ又は複数のニューラル・ネットワーク・モデルの重みである。
【0045】
重み302A~302Fは、
図1に関して説明された、検出器の1つ又は複数のニューラル・ネットワーク・モデル及び/又はアクション認識モデルの重みであり得る。一実施例では、重みは、ニューラル・ネットワークの入力データを処理する1つ又は複数のプロセス中で使用される数値を指す。
図3を参照すると、重み302A~302Fは、第1の重み302A、第2の重み302B、第3の重み302C、第4の重み302D、第5の重み302E、第6の重み302F、及び/又は
図3に示されていない様々な他の重みを含み得る。一実施例では、重み302A~302Fは、32ビット浮動小数点数(FP32)、又は任意の好適な数表現を通して表される。一実施例では、重み306A~306Fは、8ビット整数(INT8)、又は任意の好適な数表現を通して表される。
【0046】
重み302A~302Fは、量子化304の1つ又は複数のプロセスの一部として量子化され得る。一実施例では、量子化304は、アクション認識のためのシステム(たとえば、
図1のアクション認識のためのシステム102)、及び/又は、
図8に関して説明される訓練フレームワーク・システムなどのアクション認識のためのシステムに関連するシステムなど、1つ又は複数のシステムによって実施される1つ又は複数のニューラル・ネットワーク量子化プロセスを指す。量子化304は、1つ又は複数のシステムによって実施されるべきである命令のセットとして実装され得る。1つ又は複数のシステムは、重み302A~302Fに対して量子化304を実施し得る。一実施例では、量子化304は、1つ又は複数のプロセスを含み、ここで、第1の表現で表される重み(たとえば、FP32で表される重み302A~302F)は、第2の表現で表される重み(たとえば、INT8で表される重み306A~306F)にスケーリングされるか、コンバートされるか、又はさもなければマッピングされる。
【0047】
量子化304は1つ又は複数のプロセスを含み得、ここで、しきい値は、重み(たとえば、重み302A~302F)について、(たとえば、範囲-|しきい値|~+|しきい値|によって
図3中に示される)値の第1の範囲のために定義され、ここで、値の第1の範囲の重み(たとえば、範囲-|しきい値|~+|しきい値|内に入る重み302B~302E)は、(たとえば、範囲-127~+127によって
図3中に示される)値の第2の範囲にスケーリングされるか又はさもなければマッピングされる。たとえば、重み302Bは重み306Bにスケーリングされ、重み302Cは重み306Cにスケーリングされ、重み302Dは重み306Dにスケーリングされ、重み302Eは重み306Eにスケーリングされる。スケーリングは、スケーリング・ファクタ(たとえば、値の第1の範囲を値の第2の範囲にスケーリングするためのスケーリング・ファクタ)に基づいて入力データをスケーリングし得る1つ又は複数の線形スケーリング・プロセス、又は任意の好適なスケーリング・プロセスを含み得る。一実施例では、値の第1の範囲の最高値(たとえば、
図3中の+|しきい値|)を上回るか又はその最高値にある重みは、値の第2の範囲の最高値(たとえば、
図3の+127)にマッピングされ、値の第1の範囲の最低値(たとえば、-|しきい値|)を下回るか又はその最低値にある重みは、値の第2の範囲の最低値(たとえば、
図3の-127)にマッピングされる。たとえば、重み302Fは、値の第1の範囲の最高値(たとえば、
図3中の示される+|しきい値|)を上回る値を有し、ここで、重み302Fは、値の第2の範囲の最高値の値(たとえば、
図3中の+127)をもつ重み306Fにマッピングされる。別の実例として、
図3を参照すると、重み302Aは、値の第1の範囲の(たとえば、
図3中の-|しきい値|によって示される)最低値を下回る値を有し、ここで、重み302Aは、値の第2の範囲の最低値の値(たとえば、
図3中の-127)をもつ重み306Aにマッピングされる。
【0048】
第1の表現の重みの第1のセット(たとえば、重み302A~302F)を第2の表現の重みの第2のセット(たとえば、重み306A~306F)にマッピングするために利用すべき重みの第1のセットのための値の範囲を決定するために、しきい値(たとえば、
図3中のしきい値)が1つ又は複数のシステムによって決定され得る。量子化304において利用されるしきい値は、任意の好適な数値であり得る。いくつかの実例では、しきい値は、1つ又は複数のニューラル・ネットワーク訓練プロセスに関して1つ又は複数のシステムによって決定される。しきい値は、定義された論理ルール/機能、ニューラル・ネットワーク訓練/推論プロセス、及び/又はそれらの変形形態を通してなど、任意の好適なプロセスを通して1つ又は複数のシステムによって決定され得る。いくつかの実例では、相対エントロピー又はKL発散とも呼ばれる、カルバック・ライブラー発散(Kullback Leibler divergence)の値を最小限に抑えるしきい値が決定される。KL発散は、第1の確率分布と第2の確率分布との間の差の測度を指し得る。
【0049】
1つ又は複数のシステムは、計算されたKL発散値に基づいてしきい値を決定し得る。KL発散値は、第1の分布(たとえば、重み302A~302Fの分布)と、しきい値に基づく第2の分布(たとえば、しきい値によって示される-|しきい値|~+|しきい値|の範囲に基づいて決定される重み306A~306Fの分布)とに基づいて計算され得る。1つ又は複数のシステムは、しきい値のセットに基づいてKL発散値のセットを計算し得る。たとえば、1つ又は複数のシステムは、第1の分布(たとえば、重み302A~302Fの分布)と、第1のしきい値に基づく第2の分布(たとえば、第1のしきい値によって示される値の第1の範囲に基づいて値の第2の範囲にマッピングされた重み302A~302Fの分布)とに基づいて第1のKL発散値を計算し、任意の数のしきい値について、以下同様である。1つ又は複数のシステムは、KL発散値のセットの最小KL発散値のためのしきい値に基づいてしきい値を決定し得る。
【0050】
量子化304の1つ又は複数のプロセスは、訓練中に実施され(たとえば、QAT)、訓練の後に実施され(たとえば、PTQ)、及び/又はそれらの変形形態で実施され得る。量子化304は1つ又は複数のステップを含み得る。第1のステップにおいて、QATが、8ビット量子化が提供することができるよりも細かい粒度を表現において必要とする層(たとえば、回帰層)を除いて、ニューラル・ネットワーク・モデルのすべての重みとアクティブ化とを量子化することによって適用され得る。これは、混合精度ニューラル・ネットワーク・モデルを生じ得る。第2のステップにおいて、QATによって決定されたアクティブ化の量子化が利用されないことがあり、ここで、次いで、PTQがQATモデルに対して実施され得る。QATモデルの重みは再び量子化され得、アクティブ化のための範囲/スケール・ファクタが、PTQプロセスを使用して較正され得る。アクティブ化がQATプロセス中にそれらの分布の実行統計(running-statistics)を使用して量子化されたが、アクティブ化は、較正データセットなど、QATプロセスにおいて利用される1つ又は複数のデータセットに対して再びそれらの統計を計算することによって、再量子化され得る。QAT量子化されたモデルに対してPTQを適用することによって、次いで、ニューラル・ネットワーク・モデルのすべての層が量子化され得る。
【0051】
量子化304は、1つ又は複数のプロセスを含み得、ここで、
図1に関して説明された、検出器の1つ又は複数のニューラル・ネットワーク・モデル及び/又はアクション認識モデルの重みであり得る重み302A~302Fは、1つ又は複数のシステムによって量子化されて重み306A~306Fを生じる。たとえば、重み302A~302Fは、検出器(たとえば、
図1の検出器114)の1つ又は複数のニューラル・ネットワーク・モデルの重みであり、ここで、1つ又は複数のシステムによる1つ又は複数の量子化プロセス(たとえば、量子化304)を通して、重み306A~306Fは、検出器の1つ又は複数のニューラル・ネットワーク・モデルのための重み302A~302Fから決定される。別の実例として、重み302A~302Fは、アクション認識モデル(たとえば、
図1のアクション認識モデル126)の1つ又は複数のニューラル・ネットワーク・モデルの重みであり、ここで、1つ又は複数のシステムによる1つ又は複数の量子化プロセス(たとえば、量子化304)を通して、重み306A~306Fは、アクション認識モデルの1つ又は複数のニューラル・ネットワーク・モデルのための重み302A~302Fから決定される。
【0052】
図4は、少なくとも1つの実施例による、アクション認識のためのシステムに関して画像を処理することの実例400を示す。実例400は、アクション分類視覚化408を決定するために画像402と画像404とを処理するアクション認識のためのシステム406を含み得る。一実施例では、アクション認識のためのシステム406及び画像402~404は、
図1に関して説明されたものによるものである。
【0053】
画像402~404は、ビデオ・データのフレームであり得る。いくつかの実例では、画像402~404は、自律車両、ロボット、監視システム、医療撮像システム、衛星撮像システムなどの1つ又は複数のシステムなど、1つ又は複数のビデオ及び/又は画像キャプチャ・デバイスからキャプチャされた画像である。画像402及び/又は画像404は、赤緑青(RGB)、白黒(BW)、グレースケール、及び/又はそれらの変形形態など、任意の好適な配色の画像であり得る。画像402及び/又は画像404は、様々なラスタ・フォーマット及び/又はベクトル・フォーマットなど、任意の好適な画像ファイル・フォーマットのものであり得る。画像402及び/又は画像404は、圧縮形態又は非圧縮形態にあり得る。一実施例では、画像402はビデオ・データの第1のフレームであり、画像404はビデオ・データの第2のフレームである。
図4を参照すると、画像402は、第1の位置における第1の物体を示し得、画像404は、第2の位置における第1の物体を示し得る。
【0054】
アクション認識のためのシステム406は、実行されたとき、ビデオ・データに基づいて1つ又は複数のアクション分類を決定する命令をもつ1つ又は複数のハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合であり得る。いくつかの実例では、アクション認識のためのシステム406は、コンピュータ・ハードウェア上で実行しているソフトウェア・プログラム、コンピュータ・ハードウェア上で実行しているアプリケーション、及び/又はそれらの変形形態である。アクション認識のためのシステム406は、様々なビデオ及び/又は画像キャプチャ・デバイスに関して1つ又は複数のシステムから画像402~404を取得するか、又はさもなければ受信し得る。様々な実施例では、アクション認識のためのシステム406は、ビデオ・データ中で符号化された画像402~404を取得するか、又はさもなければ受信し、ここで、アクション認識のためのシステム406は、ビデオ・データから画像402~404を抽出するか、又はさもなければ復号する。いくつかの実例では、アクション認識のためのシステム406は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアを備えるシステムの一部であり、ここで、アクション認識のためのシステム406は、ビデオ・キャプチャ・ハードウェア及び/又はソフトウェアから画像402~404を取得する。画像402~404は、物理的に(たとえば、アクション認識のためのシステム406に関連するデバイスへのワイヤード接続を介して)、リモートで(たとえば、アクション認識のためのシステム406に関連するデバイスへのワイヤレス通信ネットワークを介して)、及び/又はそれらの変形形態など、任意の好適な様式でアクション認識のためのシステム406によって取得されるか、又はさもなければ受信され得る。
【0055】
アクション認識のためのシステム406は、画像402~404からアクション分類視覚化408を決定するために、様々なプロセスを実施し得る。アクション認識のためのシステム406は、画像402~404の物体のバウンディング・ボックスを決定し得る。たとえば、
図4を参照すると、アクション認識のためのシステム406は、画像402に示される物体のための第1のバウンディング・ボックスと、画像404に示される物体のための第2のバウンディング・ボックスとを決定する。アクション認識のためのシステム406は、画像402~404のためのフロー場を決定し得る。いくつかの実施例では、アクション認識のためのシステム406は、1つ又は複数のPPUを利用して、画像402~404のためのフロー場を決定する。フロー場は、物体の移動を示し得る。たとえば、画像402~404のためのフロー場は、画像402の第1の位置における物体の、画像404の第2の位置における物体への移動を示すベクトルを含む。
【0056】
アクション認識のためのシステム406は、バウンディング・ボックスに基づいて、決定されたフロー場と画像402~404とに対して様々なクロッピング・プロセスを実施し得る。アクション認識のためのシステム406は、1つ又は複数のニューラル・ネットワーク・モデルを利用して、クロップされたフロー場とクロップされた画像(たとえば、1つ又は複数のバウンディング・ボックスに基づいてクロップされた画像402及び/又は画像404)とを処理して、1つ又は複数のラベルを決定し得る。アクション認識のためのシステム406は、アクション分類を示す1つ又は複数のラベルを1つ又は複数の画像(たとえば、画像402及び/又は画像404)上に重ねて、アクション分類視覚化408を決定し得る。アクション分類視覚化408は、アクション分類を示すラベルの視覚描写であり得、これは、画像402~404の1つ又は複数の物体によって実施されている1つ又は複数のアクションを示し得る。アクションは、アクションに対応するアクション分類を含むラベルによって示され得る。ラベルは、アクションを実施する物体のロケーション及び/又は位置の指示を含み得る。いくつかの実施例では、アクション分類は、アクションを示す分類又は他の識別子である。
図4を参照すると、アクション分類視覚化408は、画像402~404の物体によって実施されているアクションが歩くアクションであることを示す、歩くことに対応する(たとえば、「歩くこと」として
図4に示される)アクション分類を示すラベルと、物体の(たとえば、物体を囲むボックスとして
図4に示される)ロケーションとを含み得る。
【0057】
図5は、少なくとも1つの実施例による、アクション認識のためのエッジ・デバイス及びシステムの実例500を示す。実例500は、シーン506に基づいてアクション分類視覚化508を決定するためにアクション認識のためのシステム504を実装する、エッジ・デバイス502を含み得る。一実施例では、エッジ・デバイス502、アクション認識のためのシステム504、及びアクション分類視覚化508は、
図1及び
図4に関して説明されたものによるものである。
【0058】
いくつかの実例では、エッジ・デバイス502は、モバイル・フォン、タブレット、ラップトップ、モノのインターネット(IoT)デバイス(たとえば、センサ、組み込みデバイス)、及び/又はそれらの変形形態など、コンピューティング・デバイスである。一実施例では、エッジ・デバイス502は、限られたメモリ及び/又は処理能力をもつコンピューティング・デバイスである。エッジ・デバイス502は、1つ又は複数のCPU、GPU、PPU、データ処理ユニット(DPU:Data Processing Unit)、及び/又は他の処理ユニットなど、1つ又は複数のプロセッサを備え得る。エッジ・デバイス502は、様々なGPU、PPU、視覚処理ユニット(VPU:Vision Processing Unit)、深層学習アクセラレータ(DLA:Deep Learning Accelerator)などを備えることができる、様々なハードウェア・アクセラレータを備え得る。エッジ・デバイス502は、アクション認識のためのシステム504を実装し得る。様々な実施例では、アクション認識のためのシステム504は、エッジ・デバイス502上にソフトウェア・プログラムとして実装される。アクション認識のためのシステム504は、エッジ・デバイス502の1つ又は複数の処理ユニットによって実行されるアクション認識のためのシステム504の様々なプロセスのための命令のセットを含み得る。
【0059】
エッジ・デバイス502は、1つ又は複数のユーザによって動作され得る。エッジ・デバイス502は、様々な画像及び/又はビデオ・キャプチャ・ハードウェア及び/又はソフトウェアを含み得る。エッジ・デバイス502は、シーン506のビデオをキャプチャし得る。一実施例では、シーン506は、現実世界の環境である。シーン506は、様々なアクションを実施する様々な物体を含み得る。
図5を参照すると、シーン506は、立つことのアクションを実施する第1の物体(たとえば、人)を含み得る。
【0060】
エッジ・デバイス502は、シーン506のビデオをキャプチャし、そのビデオをアクション認識のためのシステム504に提供し得る。いくつかの実例では、エッジ・デバイス502は、シーン506のビデオをキャプチャし、そのビデオをエッジ・デバイス502のアクション認識のためのシステム504に提供する、1つ又は複数のビデオ・キャプチャ・システムに関連する。アクション認識のためのシステム504は、シーン506のビデオからアクション分類視覚化508を決定するために、様々なプロセスを実施し得る。アクション認識のためのシステム504は、シーン506のビデオからフレームを抽出し得る。アクション認識のためのシステム504は、フレームの物体のバウンディング・ボックスを決定し得る。アクション認識のためのシステム504は、フレームのためのフロー場を決定し得る。いくつかの実施例では、アクション認識のためのシステム504は、エッジ・デバイス502の1つ又は複数のPPUを利用して、フレームのためのフロー場を決定する。アクション認識のためのシステム504は、エッジ・デバイス502のハードウェア・アクセラレータと対話して、ハードウェア・アクセラレータの1つ又は複数のPPUがフロー場を算出することを引き起こし得る。
【0061】
アクション認識のためのシステム504は、バウンディング・ボックスに基づいて、決定されたフロー場とシーン506のビデオからのフレームとに対して様々なクロッピング・プロセスを実施し得る。アクション認識のためのシステム504は1つ又は複数のニューラル・ネットワーク・モデルを利用して、クロップされたフロー場とクロップされたフレームとを処理して、1つ又は複数のラベルを決定し得る。アクション認識のためのシステム504は、アクション分類を示す1つ又は複数のラベルを1つ又は複数のフレーム(たとえば、シーン506のビデオの1つ又は複数のフレーム)上に重ねて、アクション分類視覚化508を決定し得る。アクション分類視覚化508は、アクション分類を示すラベルの視覚描写であり得、これは、シーン506のビデオのフレームの1つ又は複数の物体によって実施されている1つ又は複数のアクションを示し得る。アクションは、アクションに対応するアクション分類を含むラベルによって示され得る。ラベルは、アクションを実施する物体のロケーション及び/又は位置の指示を含み得る。いくつかの実施例では、アクション分類は、アクションを示す分類又は他の識別子である。
図5を参照すると、アクション分類視覚化508は、シーン506のビデオのフレームの物体によって実施されているアクションが立つアクションであることを示す、立つことに対応する(たとえば、「立つこと」として
図5に示される)アクション分類を示すラベルと、物体の(たとえば、物体を囲むボックスとして
図5に示される)ロケーションとを含み得る。
【0062】
図6は、少なくとも1つの実施例による、アクション認識のためのシステムのためのプロセスの実例600を示す。少なくとも1つの実施例では、プロセス600の一部又は全部(又は本明細書で説明される任意の他のプロセス、或いはそれらの変形形態及び/又は組合せ)は、コンピュータ実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、1つ又は複数のプロセッサ上で、ハードウェアによって、ソフトウェアによって、又はそれらの組合せによって集合的に実行するコード(たとえば、コンピュータ実行可能命令、1つ又は複数のコンピュータ・プログラム、又は1つ又は複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードは、1つ又は複数のプロセッサによって実行可能な複数のコンピュータ可読命令を備えるコンピュータ・プログラムの形態で、コンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、非一時的コンピュータ可読媒体である。少なくとも1つの実施例では、プロセス600を実施するために使用可能な少なくともいくつかのコンピュータ可読命令は、単に一時的信号(たとえば、伝搬する一時的な電気又は電磁送信)を使用して記憶されない。少なくとも1つの実施例では、非一時的コンピュータ可読媒体は、必ずしも一時的信号のトランシーバ内の非一時的データ・ストレージ回路要素(circuitry)(たとえば、バッファ、キャッシュ、及びキュー)を含むとは限らない。少なくとも1つの実施例では、プロセス600は、本開示の他の場所で説明されるものなど、コンピュータ・システム上で少なくとも部分的に実施される。
【0063】
少なくとも1つの実施例では、プロセス600の少なくとも一部を実施するシステムは、602において、ビデオの複数のフレームを受信するための実行可能コードを含む。システムは、ビデオから、任意の好適なビデオ・データであり得る複数のフレームを受信するか又はさもなければ取得し得る。ビデオ・データは、自律車両、ロボット、監視システム、医療撮像システム、衛星撮像システムなどの1つ又は複数のシステムなど、1つ又は複数のビデオ及び/又は画像キャプチャ・デバイスから生成され得る。ビデオ・データは、赤緑青(RGB)、白黒(BW)、グレースケール、及び/又はそれらの変形形態など、任意の好適な配色のビデオを表し得、任意の好適なフォーマットのものであり得る。システムは、ビデオ・データを取得し、ビデオ・データから複数のフレームを決定し得る。システムは、1つ又は複数のデコーダ(たとえば、
図1のデコーダ106)を利用して、複数のフレームを決定し得る。
【0064】
少なくとも1つの実施例では、プロセス600の少なくとも一部を実施するシステムは、604において、複数のフレーム中に表されるの1つ又は複数の物体を決定するための実行可能コードを含む。システムは、複数のフレーム中に表される1つ又は複数の物体を示す1つ又は複数のバウンディング・ボックスを決定し得る。いくつかの実例では、各バウンディング・ボックスは、複数のフレームのうちのフレームに示された特定の物体を示す。バウンディング・ボックスは、フレームに対するバウンディング・ボックスのコーナーのロケーションに対応する座標のセットによって画定され得る。システムは、複数のフレームの各フレームのための1つ又は複数のバウンディング・ボックスを計算し得る。システムは、1つ又は複数の検出器及び/又はトラッカー(たとえば、
図1の検出器114及び/又はトラッカー116)を利用して、バウンディング・ボックスを決定し得る。検出器及び/又はトラッカーは、第1のニューラル・ネットワークと呼ばれることがある。
【0065】
少なくとも1つの実施例では、プロセス600の少なくとも一部を実施するシステムは、606において、並列処理ユニットが、複数のフレームのうちのフレームの間の1つ又は複数のピクセル中に表される1つ又は複数の物体の移動を計算することを引き起こすための実行可能コードを含む。並列処理ユニットは、ハードウェア・アクセラレータ、又は他のハードウェア・デバイス/システムの一部であり得る。システムは、並列処理ユニットが(たとえば、ハードウェア及び/又はソフトウェアを通してハードウェア・アクセラレータと対話することによって)複数のフレームのうちのフレームの間の1つ又は複数のピクセル中に表される1つ又は複数の物体の移動を示す1つ又は複数のフロー場を計算することを引き起こし得る。いくつかの実例では、ピクセルは、フレーム中に表されるか又はさもなければ示される1つ又は複数の物体に対応し、ここで、1つ又は複数のフロー場は、フレーム間の1つ又は複数の物体の移動を示す。システムは、並列処理ユニットが、複数のフレームのうちのフレームの各ペアのためのフロー場(たとえば、第1のフレーム及び第2のフレームのためのフロー場、第2のフレーム及び第3のフレームのためのフロー場など)を計算することを引き起こし得る。
【0066】
少なくとも1つの実施例では、プロセス600の少なくとも一部を実施するシステムは、608において、ニューラル・ネットワークが、計算された移動と決定された1つ又は複数の物体とに少なくとも部分的に基づいて、1つ又は複数の物体によって実施され、複数のフレーム中に表される1つ又は複数のアクションを分類することを引き起こすための実行可能コードを含む。システムは、決定された物体に対応するバウンディング・ボックスに基づいて、計算された移動に対応するフロー場と、複数のフレームとに対して1つ又は複数のクロッピング動作を実施し得る。いくつかの実例では、フロー場は、フレームのペア間のそれぞれのピクセルの移動を示し、フレーム間の1つ又は複数の移動と呼ばれることがあり、ここで、クロップされたフロー場は、フレーム間の1つ又は複数のクロップされた移動と呼ばれる。システムは、フロー場をクロップするためにフロー場に対してクロッピング動作の第1のセットを実施して、バウンディング・ボックスによって示される対応するフレームのエリア又は領域に対応するクロップされたフロー場を生じ得る。システムは、フレームをクロップするために複数のフレームに対してクロッピング動作の第2のセットを実施して、バウンディング・ボックスによって示されるエリア又は領域に対応するクロップされたフレームを生じ得る。
【0067】
システムは、様々なアクション認識モデル(たとえば、
図1のアクション認識モデル126)を利用して、クロップされた移動とクロップされたフレームとを処理し得る。アクション認識モデルは、第2のニューラル・ネットワークと呼ばれることもある。アクション認識モデルは、パーセプトロン・モデル、動径基底ネットワーク(RBN)、オート・エンコーダ(AE)、ボルツマン・マシン(BM)、制限ボルツマン・マシン(RBM)、深層信念ネットワーク(DBN)、深層畳み込みネットワーク(DCN)、極端学習機械(ELM)、深層残差ネットワーク(DRN)、及び/又はそれらの変形形態など、アクション認識のための様々なニューラル・ネットワーク・モデルを利用し得る。アクション認識モデルは、ロジスティック回帰モデル、単純ベイズ・モデル、確率的勾配降下モデル、K近傍モデル、判定ツリー・モデル、ランダム・フォレスト・モデル、サポート・ベクター・マシン・モデル、及び/又はそれらの変形形態など、1つ又は複数の分類器ニューラル・ネットワーク・アルゴリズム及び/又はモデルを利用し得る。
【0068】
システムは、様々なアクション認識モデルを利用して、1つ又は複数のアクション分類を通して1つ又は複数のアクションを分類し得る。アクション分類は、アクションを示す分類又は他の識別子であり得る。システムは、複数のフレーム中に表される各アクションのためのアクション分類を決定し得る。アクション分類によって示され得る複数のフレーム中に表されるアクションは、座るアクション、歩くアクション、走るアクション、上るアクション(たとえば、壁、階段、及び/又はそれらの変形形態などの障害物を上ること)、ジャンプするアクション、及び/又は任意の好適なアクションなどのアクションであり得る。たとえば、(たとえば、複数のフレーム中に表される物体によって実施されている)複数のフレーム中に表される歩くアクションは、「歩くこと」によって示されるアクション分類を含むラベル及び/又はそれらの変形形態によって示される。
【0069】
一実施例では、プロセス600の少なくとも一部を実施するシステムによって利用される、及び/又はそのシステムに関連する1つ又は複数のニューラル・ネットワークは、1つ又は複数のプルーニング・プロセス及び量子化プロセスを受ける。1つ又は複数のプルーニング・プロセスは、重み、カーネル、及び/又はそれらの変形形態をプルーニングすることを伴うものなど、並びに、任意の好適な論理、ヒューリスティック、ルール、機能、及び/又はそれらの変形形態に基づく、任意の好適なプルーニング・プロセスを含み得る。いくつかの実例では、プルーニングは、1つ又は複数のニューラル・ネットワークのカーネルのL1ノルム値を計算することと、定義されたしきい値を下回るL1ノルム値をもつカーネルを除去することとによって、システムによって実施され、プルーニングに関するさらなる情報は、
図2の説明において見つけられ得る。1つ又は複数の量子化プロセスは、様々なQATプロセス及び/又はPTQプロセスなど、任意の好適な量子化プロセスを含み得る。いくつかの実例では、量子化は、任意の好適な論理、ヒューリスティック、ルール、機能、及び/又はそれらの変形形態を使用して、1つ又は複数のニューラル・ネットワークの1つ又は複数の重みを第1のデータ・タイプ(たとえば、浮動小数点32ビット精度表現(FP32))から第2のデータ・タイプ(たとえば、8ビット整数表現(INT8))にコンバートすることによって、システムによって実施され、量子化に関するさらなる情報は、
図3の説明において見つけられ得る。
【0070】
プロセス600の少なくとも一部を実施するシステムは、プロセス600の1つ又は複数のプロセスをリアルタイムで実施し得る。一実施例では、リアルタイム又はリアルタイム処理は、入力が生成される時間間隔内に入力が処理される処理を指し得る。システムは、システムがビデオの複数のフレームを取得する時間間隔内に複数のフレーム中に表される1つ又は複数のアクションを分類するためにビデオの複数のフレームを処理し得、ここで、時間間隔は、ミリ秒、マイクロ秒、又は任意の好適な時間間隔のオーダーのものであり得る。
【0071】
プロセス600の少なくとも一部を実施するシステムは、車両(たとえば、手動車両、半自律車両、自律車両、又はドローン)、ロボット、エッジ・デバイス、又はニューラル・ネットワーク能力をもつ他のシステムなど、1つ又は複数のデバイス又はシステムの1つ又は複数のコンピューティング・システムなどのコンピューティング・システムであり得る。エッジ・デバイスは、モバイル・フォン、タブレット、ラップトップ、IoTデバイス(たとえば、センサ、組み込みデバイス)、及び/又はそれらの変形形態など、コンピューティング・デバイスを指し得る。一実施例では、エッジ・デバイスは、限られたメモリ及び/又は処理能力をもつコンピューティング・デバイスである。エッジ・デバイスは、プロセス600の1つ又は複数のプロセスを実施し得、その1つ又は複数のプロセスをリアルタイムで実施し得る。たとえば、エッジ・デバイスは、少なくとも、ビデオの複数のフレームを取得し、エッジ・デバイスに関連する処理ユニット(たとえば、並列処理ユニット)が、複数のフレームのうちのフレームの間のそれぞれのピクセルの移動を計算することを引き起こし、複数のフレーム中に表される物体を決定し、ニューラル・ネットワークが、計算された移動と決定された物体とに少なくとも部分的に基づいて、複数のフレーム中に表される1つ又は複数のアクションを分類することを引き起こす。
【0072】
プロセス600のプロセス602~608はシーケンスとして示されているが、実施例は、プロセス602~608のうちのいくつかを省略し、並列になど、示されたもの以外の順序でプロセス602~608のうちのいくつかを実施し、又はプロセス600に示されたものに加えて段階を含み得ることに留意されたい。したがって、
図6に示された順序は、示された順序に準拠するもののみに潜在的実施例を限定する様式で解釈されるべきではない。
【0073】
推論及び訓練論理
図7Aは、1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために使用される推論及び/又は訓練論理715を示す。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて以下で提供される。
【0074】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層を構成するための順方向及び/若しくは出力の重み及び/又は入力/出力データ、並びに/或いは他のパラメータを記憶するためのコード及び/又はデータ・ストレージ701を含み得る。少なくとも1つの実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ701を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ701において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU:arithmetic logic unit))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。少なくとも1つの実施例では、グラフ・コードなどのコードは、そのようなコードが対応するニューラル・ネットワークのアーキテクチャに基づいて、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの順方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0075】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ701は、キャッシュ・メモリ、動的なランダムにアドレス指定可能なメモリ(「DRAM」:dynamic randomly addressable memory)、静的なランダムにアドレス指定可能なメモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ701が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らか他のストレージ・タイプを含んでいるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0076】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層に対応する逆方向及び/若しくは出力の重み及び/又は入力/出力データを記憶するためのコード及び/又はデータ・ストレージ705を含み得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの逆方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ705を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ705において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。
【0077】
少なくとも1つの実施例では、グラフ・コードなどのコードは、そのようなコードが対応するニューラル・ネットワークのアーキテクチャに基づいて、プロセッサALUへの重み又は他のパラメータ情報のローディングを引き起こす。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ・メモリ又は何らか他のストレージ・タイプを含んでいるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0078】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、別個のストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、組み合わせられたストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、部分的に組み合わせられ、部分的に別個であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0079】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、訓練及び/又は推論コード(たとえば、グラフ・コード)に少なくとも部分的に基づく、又はそれによって示される論理演算及び/又は数学演算を実施するための、整数及び/又は浮動小数点ユニットを含む、1つ又は複数の算術論理ユニット(「ALU」)710を含み得、その結果が、アクティブ化ストレージ720に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層又はニューロンからの出力値)を作り出し得、これらのアクティブ化は、コード及び/又はデータ・ストレージ701並びに/或いはコード及び/又はデータ・ストレージ705に記憶される入力/出力及び/又は重みパラメータ・データの関数である。少なくとも1つの実施例では、アクティブ化ストレージ720に記憶されるアクティブ化は、命令又は他のコードを実施したことに応答して(1つ又は複数の)ALU710によって実施される線形代数及び又は行列ベースの数学に従って生成され、コード及び/又はデータ・ストレージ705並びに/或いはデータ・ストレージ701に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、或いは他のパラメータ又はハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ705又はコード及び/若しくはデータ・ストレージ701、或いはオンチップ又はオフチップの別のストレージに記憶され得る。
【0080】
少なくとも1つの実施例では、(1つ又は複数の)ALU710は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路内に含まれるが、別の実施例では、(1つ又は複数の)ALU710は、それらを使用するプロセッサ或いは他のハードウェア論理デバイス又は回路(たとえば、コプロセッサ)の外部にあり得る。少なくとも1つの実施例では、ALU710は、プロセッサの実行ユニット内に含まれるか、或いはさもなければ、同じプロセッサ内にあるか又は異なるタイプの異なるプロセッサ(たとえば、中央処理ユニット、グラフィックス処理ユニット、固定機能ユニットなど)間で分散されているかのいずれかであるプロセッサの実行ユニットによってアクセス可能なALUのバンク内に含まれ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705と、アクティブ化ストレージ720とは、プロセッサ或いは他のハードウェア論理デバイス又は回路を共有し得るが、別の実施例では、それらは、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路中にあるか、或いは、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せ中にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ720の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。さらに、推論及び/又は訓練コードが、プロセッサ或いは他のハードウェア論理又は回路にアクセス可能な他のコードとともに記憶され、プロセッサのフェッチ、復号、スケジューリング、実行、退去(retirement)及び/又は他の論理回路を使用してフェッチ及び/又は処理され得る。
【0081】
少なくとも1つの実施例では、アクティブ化ストレージ720は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、アクティブ化ストレージ720は、完全に又は部分的に、1つ又は複数のプロセッサ又は他の論理回路内にあるか、又はその外部にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ720が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ・メモリ又は何らか他のストレージ・タイプを含んでいるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0082】
少なくとも1つの実施例では、
図7Aに示されている推論及び/又は訓練論理715は、GoogleからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(「ASIC」:application-specific integrated circuit)と併せて使用され得る。少なくとも1つの実施例では、
図7Aに示されている推論及び/又は訓練論理715は、中央処理ユニット(「CPU」)ハードウェア、グラフィックス処理ユニット(「GPU」)ハードウェア、又は、フィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)などの他のハードウェアと併せて使用され得る。
【0083】
図7Bは、少なくとも1つの実施例による、推論及び/又は訓練論理715を示す。少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、ハードウェア論理を含み得、このハードウェア論理において、算出リソース(computational resource)が専用であるか、或いはさもなければ、ニューラル・ネットワーク内のニューロンの1つ又は複数の層に対応する重み値又は他の情報と併せてのみ使用される。少なくとも1つの実施例では、
図7Bに示されている推論及び/又は訓練論理715は、GoogleからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(ASIC)と併せて使用され得る。少なくとも1つの実施例では、
図7Bに示されている推論及び/又は訓練論理715は、中央処理ユニット(CPU)ハードウェア、グラフィックス処理ユニット(GPU)ハードウェア、又は、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと併せて使用され得る。少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、コード及び/又はデータ・ストレージ701とコード及び/又はデータ・ストレージ705とを含み、それらは、コード(たとえば、グラフ・コード)、重み値、並びに/或いは、バイアス値、勾配情報、運動量値、及び/又は他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶するために使用され得る。
図7Bに示されている少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705の各々は、それぞれ、算出ハードウェア702及び算出ハードウェア706など、専用算出リソースに関連する。少なくとも1つの実施例では、算出ハードウェア702及び算出ハードウェア706の各々は、線形代数関数などの数学関数を、それぞれコード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705に記憶された情報に対してのみ実施する1つ又は複数のALUを備え、その結果が、アクティブ化ストレージ720に記憶される。
【0084】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701及び705の各々と、対応する算出ハードウェア702及び706とは、それぞれ、ニューラル・ネットワークの異なる層に対応し、それにより、コード及び/又はデータ・ストレージ701と算出ハードウェア702との1つのストレージ/算出ペア701/702から生じたアクティブ化は、ニューラル・ネットワークの概念的組織化をミラーリングするために、コード及び/又はデータ・ストレージ705と算出ハードウェア706との次のストレージ/算出ペア705/706への入力として提供される。少なくとも1つの実施例では、ストレージ/算出ペア701/702及び705/706は、2つ以上のニューラル・ネットワーク層に対応し得る。少なくとも1つの実施例では、ストレージ/算出ペア701/702及び705/706の後に、又はそれらと並列に、追加のストレージ/算出ペア(図示せず)が、推論及び/又は訓練論理715中に含められ得る。
【0085】
少なくとも1つの実施例では、
図7A~
図7Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図7A~
図7Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図7A~
図7Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0086】
ニューラル・ネットワーク訓練及び導入
図8は、少なくとも1つの実施例による、深層ニューラル・ネットワークの訓練及び導入を示す。少なくとも1つの実施例では、訓練されていないニューラル・ネットワーク806が、訓練データセット802を使用して訓練される。少なくとも1つの実施例では、訓練フレームワーク804はPyTorchフレームワークであるが、他の実施例では、訓練フレームワーク804は、TensorFlow、Boost、Caffe、Microsoft Cognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも1つの実施例では、訓練フレームワーク804は、訓練されていないニューラル・ネットワーク806を訓練し、本明細書で説明される処理リソースを使用してそれが訓練されることを可能にして、訓練されたニューラル・ネットワーク808を生成する。少なくとも1つの実施例では、重みは、ランダムに選定されるか、又は、深層信念ネットワークを使用する事前訓練によって選定され得る。少なくとも1つの実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかの様式で実施され得る。
【0087】
少なくとも1つの実施例では、訓練されていないニューラル・ネットワーク806は、教師あり学習を使用して訓練され、訓練データセット802は、入力のための所望の出力とペアにされた入力を含むか、又は、訓練データセット802は、知られている出力を有する入力を含み、ニューラル・ネットワーク806の出力が手動で採点される。少なくとも1つの実施例では、訓練されていないニューラル・ネットワーク806は、教師あり様式で訓練され、訓練データセット802からの入力を処理し、得られた出力を、予想される又は所望の出力のセットと比較する。少なくとも1つの実施例では、次いで、訓練されていないニューラル・ネットワーク806を通してエラーが逆伝搬される。少なくとも1つの実施例では、訓練フレームワーク804は、訓練されていないニューラル・ネットワーク806を制御する重みを調節する。少なくとも1つの実施例では、訓練フレームワーク804は、訓練されていないニューラル・ネットワーク806が、新しいデータセット812などの入力データに基づいて、結果814などにおいて正しい答えを生成することに適した、訓練されたニューラル・ネットワーク808などのモデルに向かって、どれだけ良好に収束しているかを監視するためのツールを含む。少なくとも1つの実施例では、訓練フレームワーク804は、訓練されていないニューラル・ネットワーク806を繰り返し訓練し、損失関数、及び確率的勾配降下法(stochastic gradient descent)などの調節アルゴリズムを使用して、訓練されていないニューラル・ネットワーク806の出力を改良するように重みを調節する。少なくとも1つの実施例では、訓練フレームワーク804は、訓練されていないニューラル・ネットワーク806が所望の精度を達成するまで、訓練されていないニューラル・ネットワーク806を訓練する。少なくとも1つの実施例では、次いで、訓練されたニューラル・ネットワーク808が、任意の数の機械学習動作を実装するように導入され得る。
【0088】
少なくとも1つの実施例では、訓練されていないニューラル・ネットワーク806は、教師なし学習を使用して訓練され、訓練されていないニューラル・ネットワーク806は、ラベルなしデータを使用してそれ自体を訓練することを試みる。少なくとも1つの実施例では、教師なし学習訓練データセット802は、いかなる関連する出力データ又は「グランド・トゥルース」データもない入力データを含む。少なくとも1つの実施例では、訓練されていないニューラル・ネットワーク806は、訓練データセット802内でグループ化を学習することができ、個々の入力が、訓練されていないデータセット802にどのように関係するかを決定することができる。少なくとも1つの実施例では、新しいデータセット812の次元を低減する際に有用な動作を実施することが可能な訓練されたニューラル・ネットワーク808において、自己組織化マップを生成するために、教師なし訓練が使用され得る。少なくとも1つの実施例では、教師なし訓練は、異常検出を実施するためにも使用され得、異常検出は、新しいデータセット812の通常パターンから逸脱した、新しいデータセット812中のデータ・ポイントの識別を可能にする。
【0089】
少なくとも1つの実施例では、半教師あり学習が使用され得、半教師あり学習は、訓練データセット802中にラベル付きデータとラベルなしデータとの混合を含む技法である。少なくとも1つの実施例では、訓練フレームワーク804は、転移学習技法(transferred learning technique)を通してなど、漸進的学習を実施するために使用され得る。少なくとも1つの実施例では、漸進的学習は、訓練されたニューラル・ネットワーク808が、初期訓練中に、訓練されたニューラル・ネットワーク808内に教え込まれた知識を忘れることなしに、新しいデータセット812に適応することを可能にする。
【0090】
少なくとも1つの実施例では、
図8に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図8に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図8に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0091】
データ・センタ
図9は、少なくとも1つの実施例が使用され得る例示的なデータ・センタ900を示す。少なくとも1つの実施例では、データ・センタ900は、データ・センタ・インフラストラクチャ層910と、フレームワーク層920と、ソフトウェア層930と、アプリケーション層940とを含む。
【0092】
少なくとも1つの実施例では、
図9に示されているように、データ・センタ・インフラストラクチャ層910は、リソース・オーケストレータ912と、グループ化されたコンピューティング・リソース914と、ノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)916(1)~916(N)とを含み得、ここで、「N」は正の整数を表す(それは、他の図中で使用されるものとは異なる整数「N」であり得る)。少なくとも1つの実施例では、ノードC.R.916(1)~916(N)は、限定はしないが、任意の数の中央処理ユニット(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・ストレージ・デバイス918(1)~918(N)(たとえば、動的読取り専用メモリ、ソリッド・ステート・ストレージ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電力モジュール、及び冷却モジュールなどを含み得る。少なくとも1つの実施例では、ノードC.R.916(1)~916(N)の中からの1つ又は複数のノードC.R.は、上述のコンピューティング・リソースのうちの1つ又は複数を有するサーバであり得る。
【0093】
少なくとも1つの実施例では、グループ化されたコンピューティング・リソース914は、1つ又は複数のラック(図示せず)内に格納されたノードC.R.の別個のグループ化、又は様々な地理的ロケーション(同じく図示せず)においてデータ・センタ中に格納された多くのラックを含み得る。少なくとも1つの実施例では、グループ化されたコンピューティング・リソース914内のノードC.R.の別個のグループ化は、1つ又は複数のワークロードをサポートするように構成されるか又は割り振られ得る、グループ化されたコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含み得る。少なくとも1つの実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のワークロードをサポートするためのコンピュート・リソースを提供するために1つ又は複数のラック内でグループ化され得る。少なくとも1つの実施例では、1つ又は複数のラックはまた、任意の数の電力モジュール、冷却モジュール、及びネットワーク・スイッチを、任意の組合せで含み得る。
【0094】
少なくとも1つの実施例では、リソース・オーケストレータ912は、1つ又は複数のノードC.R.916(1)~916(N)及び/又はグループ化されたコンピューティング・リソース914を構成するか、又はさもなければ、制御し得る。少なくとも1つの実施例では、リソース・オーケストレータ912は、データ・センタ900のためのソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含み得る。少なくとも1つの実施例では、リソース・オーケストレータ712は、ハードウェア、ソフトウェア、又はそれらの何らかの組合せを含み得る。
【0095】
少なくとも1つの実施例では、
図9に示されているように、フレームワーク層920は、ジョブ・スケジューラ922と、構成マネージャ924と、リソース・マネージャ926と、分散型ファイル・システム928とを含む。少なくとも1つの実施例では、フレームワーク層920は、ソフトウェア層930のソフトウェア932、及び/又はアプリケーション層940の1つ又は複数のアプリケーション942をサポートするためのフレームワークを含み得る。少なくとも1つの実施例では、ソフトウェア932又は(1つ又は複数の)アプリケーション942は、それぞれ、アマゾン・ウェブ・サービス、Google Cloud、及びMicrosoft Azureによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含み得る。少なくとも1つの実施例では、フレームワーク層920は、限定はしないが、大規模データ処理(たとえば、「ビック・データ」)のために分散型ファイル・システム928を利用し得るApache Spark(商標)(以下「Spark」)など、無料でオープンソースのソフトウェア・ウェブ・アプリケーション・フレームワークのタイプであり得る。少なくとも1つの実施例では、ジョブ・スケジューラ922は、データ・センタ900の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。少なくとも1つの実施例では、構成マネージャ924は、ソフトウェア層930、並びに大規模データ処理をサポートするためのSpark及び分散型ファイル・システム928を含むフレームワーク層920など、異なる層を構成することが可能であり得る。少なくとも1つの実施例では、リソース・マネージャ926は、分散型ファイル・システム928及びジョブ・スケジューラ922をサポートするようにマッピングされたか又は割り振られた、クラスタ化された又はグループ化されたコンピューティング・リソースを管理することが可能であり得る。少なくとも1つの実施例では、クラスタ化された又はグループ化されたコンピューティング・リソースは、データ・センタ・インフラストラクチャ層910において、グループ化されたコンピューティング・リソース914を含み得る。少なくとも1つの実施例では、リソース・マネージャ926は、リソース・オーケストレータ912と協調して、これらのマッピングされた又は割り振られたコンピューティング・リソースを管理し得る。
【0096】
少なくとも1つの実施例では、ソフトウェア層930中に含まれるソフトウェア932は、ノードC.R.916(1)~916(N)、グループ化されたコンピューティング・リソース914、及び/又はフレームワーク層920の分散型ファイル・システム928の少なくとも部分によって使用されるソフトウェアを含み得る。少なくとも1つの実施例では、1つ又は複数のタイプのソフトウェアは、限定はしないが、インターネット・ウェブ・ページ検索ソフトウェアと、電子メール・ウイルス・スキャン・ソフトウェアと、データベース・ソフトウェアと、ストリーミング・ビデオ・コンテンツ・ソフトウェアとを含み得る。
【0097】
少なくとも1つの実施例では、アプリケーション層940中に含まれる(1つ又は複数の)アプリケーション942は、ノードC.R.916(1)~916(N)、グループ化されたコンピューティング・リソース914、及び/又はフレームワーク層920の分散型ファイル・システム928の少なくとも部分によって使用される1つ又は複数のタイプのアプリケーションを含み得る。少なくとも1つの実施例では、1つ又は複数のタイプのアプリケーションは、限定はしないが、任意の数のゲノミクス・アプリケーション、コグニティブ・コンピュート、アプリケーション、及び、訓練又は推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む、機械学習アプリケーション、又は、1つ又は複数の実施例と併せて使用される他の機械学習アプリケーションを含み得る。
【0098】
少なくとも1つの実施例では、構成マネージャ924、リソース・マネージャ926、及びリソース・オーケストレータ912のいずれかが、任意の技術的に実現可能な様式で獲得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己修正アクションを実装し得る。少なくとも1つの実施例では、自己修正アクションは、データ・センタ900のデータ・センタ・オペレータを、不良の恐れのある構成を判定し、十分に利用されていない及び/又は性能の低いデータ・センタの部分を場合によっては回避することから解放し得る。
【0099】
少なくとも1つの実施例では、データ・センタ900は、1つ又は複数の機械学習モデルを訓練するか、或いは、本明細書で説明される1つ又は複数の実施例による1つ又は複数の機械学習モデルを使用して情報を予測又は推論するためのツール、サービス、ソフトウェア又は他のリソースを含み得る。たとえば、少なくとも1つの実施例では、機械学習モデルは、データ・センタ900に関して上記で説明されたソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練され得る。少なくとも1つの実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練された機械学習モデルは、本明細書で説明される1つ又は複数の訓練技法を通して計算された重みパラメータを使用することによって、データ・センタ900に関して上記で説明されたリソースを使用して、情報を推論又は予測するために使用され得る。
【0100】
少なくとも1つの実施例では、データ・センタは、上記で説明されたリソースを使用して訓練及び/又は推論を実施するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用し得る。その上、上記で説明された1つ又は複数のソフトウェア及び/又はハードウェア・リソースは、画像認識、音声認識、又は他の人工知能サービスなど、ユーザが、情報を訓練するか又は情報の推論を実施することを可能にするためのサービスとして構成され得る。
【0101】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図9のシステムにおいて使用され得る。
【0102】
少なくとも1つの実施例では、
図9に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図9に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図9に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0103】
自律車両
図10Aは、少なくとも1つの実施例による、自律車両1000の一実例を示す。少なくとも1つの実施例では、自律車両1000(代替的に、本明細書では「車両1000」と呼ばれる)は、限定はしないが、車、トラック、バス、及び/又は1人又は複数の乗客を収容する別のタイプの車両など、乗用車(passenger vehicle)であり得る。少なくとも1つの実施例では、車両1000は、貨物を運搬するために使用されるセミ・トラクタ・トレーラ・トラックであり得る。少なくとも1つの実施例では、車両1000は、航空機、ロボット車両、又は他の種類の車両であり得る。
【0104】
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「NHTSA」:National Highway Traffic Safety Administration)、及び自動車技術者協会(「SAE」:Society of Automotive Engineers)の非特許文献1によって定義される自動化レベルという観点から説明され得る。少なくとも1つの実施例では、車両1000は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であり得る。たとえば、少なくとも1つの実施例では、車両1000は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であり得る。
【0105】
少なくとも1つの実施例では、車両1000は、限定はしないが、シャーシ、車両本体、ホイール(たとえば、2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素など、構成要素を含み得る。少なくとも1つの実施例では、車両1000は、限定はしないが、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別の推進システム・タイプなど、推進システム1050を含み得る。少なくとも1つの実施例では、推進システム1050は、車両1000のドライブ・トレインに接続され得、ドライブ・トレインは、限定はしないが、車両1000の推進を可能にするためのトランスミッションを含み得る。少なくとも1つの実施例では、推進システム1050は、(1つ又は複数の)スロットル/アクセラレータ1052から信号を受信したことに応答して制御され得る。
【0106】
少なくとも1つの実施例では、限定はしないが、ハンドルを含み得る操縦システム1054は、推進システム1050が動作しているときに(たとえば、車両1000が動いているときに)車両1000を(たとえば、所望の経路又はルートに沿って)操縦するために使用される。少なくとも1つの実施例では、操縦システム1054は、(1つ又は複数の)操縦アクチュエータ1056から信号を受信し得る。少なくとも1つの実施例では、ハンドルは、完全自動化(レベル5)機能性について随意であり得る。少なくとも1つの実施例では、(1つ又は複数の)ブレーキ・アクチュエータ1048及び/又はブレーキ・センサから信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1046が使用され得る。
【0107】
少なくとも1つの実施例では、限定はしないが、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(
図10Aに図示せず)及び/又は(1つ又は複数の)グラフィックス処理ユニット(「GPU」)を含み得る(1つ又は複数の)コントローラ1036は、車両1000の1つ又は複数の構成要素及び/又はシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、(1つ又は複数の)ブレーキ・アクチュエータ1048を介して車両ブレーキを動作させるための信号、(1つ又は複数の)操縦アクチュエータ1056を介して操縦システム1054を動作させるための信号、(1つ又は複数の)スロットル/アクセラレータ1052を介して推進システム1050を動作させるための信号を送出し得る。少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、自律運転を可能にし、及び/又は人間のドライバが車両1000を運転するのを支援するために、センサ信号を処理し、動作コマンド(たとえば、コマンドを表す信号)を出力する1つ又は複数の搭載(たとえば、一体型の)コンピューティング・デバイスを含み得る。少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、自律運転機能のための第1のコントローラ、機能的安全機能のための第2のコントローラ、人工知能機能性(たとえば、コンピュータ・ビジョン)のための第3のコントローラ、インフォテイメント機能性のための第4のコントローラ、緊急事態における冗長性のための第5のコントローラ、及び/又は他のコントローラを含み得る。少なくとも1つの実施例では、単一のコントローラが、上記の機能性のうちの2つ又はそれ以上に対処し得、2つ又はそれ以上のコントローラが、単一の機能性に対処し得、及び/又はこれらの任意の組合せであり得る。
【0108】
少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、1つ又は複数のセンサから受信されたセンサ・データ(たとえば、センサ入力)に応答して、車両1000の1つ又は複数の構成要素及び/又はシステムを制御するための信号を提供する。少なくとも1つの実施例では、センサ・データは、たとえば、限定はしないが、(1つ又は複数の)全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1058(たとえば、(1つ又は複数の)全地球測位システム・センサ)、(1つ又は複数の)RADARセンサ1060、(1つ又は複数の)超音波センサ1062、(1つ又は複数の)LIDARセンサ1064、(1つ又は複数の)慣性測定ユニット(「IMU」:inertial measurement unit)センサ1066(たとえば、(1つ又は複数の)加速度計、(1つ又は複数の)ジャイロスコープ、1つ又は複数の磁気コンパス、(1つ又は複数の)磁力計など)、(1つ又は複数の)マイクロフォン1096、(1つ又は複数の)ステレオ・カメラ1068、(1つ又は複数の)広角カメラ1070(たとえば、魚眼カメラ)、(1つ又は複数の)赤外線カメラ1072、(1つ又は複数の)周囲カメラ1074(たとえば、360度カメラ)、長距離カメラ(
図10Aに図示せず)、(1つ又は複数の)中距離カメラ(
図10Aに図示せず)、(たとえば、車両1000のスピードを測定するための)(1つ又は複数の)スピード・センサ1044、(1つ又は複数の)振動センサ1042、(1つ又は複数の)操縦センサ1040、(たとえば、ブレーキ・センサ・システム1046の一部としての)(1つ又は複数の)ブレーキ・センサ、及び/又は他のセンサ・タイプから、受信され得る。
【0109】
少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036のうちの1つ又は複数は、車両1000の計器クラスタ1032からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1034、可聴アナンシエータ、拡声器を介して、及び/又は車両1000の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供し得る。少なくとも1つの実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、高精細度地図(
図10Aに図示せず))、ロケーション・データ(たとえば、地図上などの車両1000のロケーション)、方向、他の車両のロケーション(たとえば、占有グリッド)、(1つ又は複数の)コントローラ1036によって感知された物体及び物体のステータスに関する情報など、情報を含み得る。たとえば、少なくとも1つの実施例では、HMIディスプレイ1034は、1つ又は複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在に関する情報、及び/或いは、車両が行った、行っている、又はこれから行う運転操作に関する情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示し得る。
【0110】
少なくとも1つの実施例では、車両1000はネットワーク・インターフェース1024をさらに含み、ネットワーク・インターフェース1024は、1つ又は複数のネットワークを介して通信するために(1つ又は複数の)ワイヤレス・アンテナ1026及び/又は(1つ又は複数の)モデムを使用し得る。たとえば、少なくとも1つの実施例では、ネットワーク・インターフェース1024は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA(登録商標)」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、モバイル通信用グローバル・システム(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)ネットワークなどを介した通信が可能であり得る。また、少なくとも1つの実施例では、(1つ又は複数の)ワイヤレス・アンテナ1026は、Bluetooth、Bluetooth低エネルギー(「LE」:Low Energy)、Z波、ZigBeeなどの(1つ又は複数の)ローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのプロトコルなどの(1つ又は複数の)低電力ワイド・エリア・ネットワーク(「LPWAN」:low power wide-area network)を使用して、環境内の物体(たとえば、車両、モバイル・デバイスなど)間の通信を可能にし得る。
【0111】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図10Aのシステムにおいて使用され得る。
【0112】
図10Bは、少なくとも1つの実施例による、
図10Aの自律車両1000についてのカメラ・ロケーション及び視野の一実例を示す。少なくとも1つの実施例では、カメラ及びそれぞれの視野は、1つの例示的な実施例であり、限定するものではない。たとえば、少なくとも1つの実施例では、追加及び/又は代替のカメラが含まれ得、及び/又は、カメラは車両1000上の異なるロケーションに位置し得る。
【0113】
少なくとも1つの実施例では、カメラについてのカメラ・タイプは、限定はしないが、車両1000の構成要素及び/又はシステムとともに使用するために適応され得るデジタル・カメラを含み得る。少なくとも1つの実施例では、(1つ又は複数の)カメラは、自動車安全性要求レベル(「ASIL」:automotive safety integrity level)B及び/又は別のASILにおいて動作し得る。少なくとも1つの実施例では、カメラ・タイプは、実施例に応じて、毎秒60フレーム(fps:frames per second)、1220fps、240fpsなど、任意の画像キャプチャ・レートが可能であり得る。少なくとも1つの実施例では、カメラは、ローリング・シャッター、グローバル・シャッター、別のタイプのシャッター、又はそれらの組合せを使用することが可能であり得る。少なくとも1つの実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア(「RCCC」:red clear clear clear)のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色(「RCCB:red clear clear blue」)のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア(「RBGC」:red blue green clear)のカラー・フィルタ・アレイ、Foveon X3のカラー・フィルタ・アレイ、ベイヤー・センサ(「RGGB」)のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含み得る。少なくとも1つの実施例では、光感度を上げるために、RCCC、RCCB、及び/又はRBGCのカラー・フィルタ・アレイをもつカメラなど、クリア・ピクセル・カメラが使用され得る。
【0114】
少なくとも1つの実施例では、(1つ又は複数の)カメラのうちの1つ又は複数が、先進ドライバ支援システム(「ADAS」:advanced driver assistance system)機能を(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実施するために使用され得る。たとえば、少なくとも1つの実施例では、車線逸脱警告、交通標識支援及びインテリジェント・ヘッドライト制御を含む機能を提供するために、多機能モノ・カメラが設置され得る。少なくとも1つの実施例では、(1つ又は複数の)カメラのうちの1つ又は複数(たとえば、すべてのカメラ)が、画像データ(たとえば、ビデオ)を同時に記録し、提供し得る。
【0115】
少なくとも1つの実施例では、1つ又は複数のカメラは、カメラ画像データ・キャプチャ・アビリティを妨げ得る迷光及び車両1000内からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three-dimensional)印刷された)アセンブリなどの取付けアセンブリにおいて取り付けられ得る。ドアミラー取付けアセンブリを参照すると、少なくとも1つの実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形状にマッチするように、カスタム3D印刷され得る。少なくとも1つの実施例では、(1つ又は複数の)カメラは、ドアミラーに組み込まれ得る。少なくとも1つの実施例では、サイド・ビュー・カメラについて、(1つ又は複数の)カメラは、キャビンの各角にある4本のピラー内に組み込まれ得る。
【0116】
少なくとも1つの実施例では、車両1000の前方の環境の部分を含む視野をもつカメラ(たとえば、正面カメラ)は、正面の経路及び障害物を識別するのを助け、並びに、(1つ又は複数の)コントローラ1036及び/又は制御SoCのうちの1つ又は複数の助けで、占有グリッドを生成すること及び/又は好ましい車両経路を決定することに不可欠な情報を提供するのを補助するために、周囲ビューのために使用され得る。少なくとも1つの実施例では、正面カメラは、限定はしないが、緊急ブレーキと、歩行者検出と、衝突回避とを含む、LIDARと同様の多くのADAS機能を実施するために使用され得る。少なくとも1つの実施例では、正面カメラはまた、限定はしないが、車線逸脱警告(「LDW」:Lane Departure Warning)、自律走行制御(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
【0117】
少なくとも1つの実施例では、たとえば、CMOS(「相補型金属酸化物半導体(complementary metal oxide semiconductor)」)カラー・イメージャを含む単眼カメラ・プラットフォームを含む様々なカメラが、正面構成において使用され得る。少なくとも1つの実施例では、周辺からビューに入ってくる物体(たとえば、歩行者、横断する交通、又は自転車)を知覚するために、広角カメラ1070が使用され得る。
図10Bには1つの広角カメラ1070のみが示されているが、他の実施例では、車両1000上に(ゼロを含む)任意の数の広角カメラがあり得る。少なくとも1つの実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、(1つ又は複数の)任意の数の長距離カメラ1098(たとえば、ロングビュー・ステレオ・カメラ・ペア)が使用され得る。少なくとも1つの実施例では、(1つ又は複数の)長距離カメラ1098は、物体検出及び分類、並びに基本的な物体追跡のためにも使用され得る。
【0118】
少なくとも1つの実施例では、任意の数のステレオ・カメラ1068も、正面構成に含まれ得る。少なくとも1つの実施例では、(1つ又は複数の)ステレオ・カメラ1068のうちの1つ又は複数は、スケーラブル処理ユニットを備える一体型制御ユニットを含み得、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット・インターフェースを単一のチップ上にもつプログラマブル論理(「FPGA」)及びマルチコア・マイクロプロセッサを提供し得る。少なくとも1つの実施例では、そのようなユニットは、画像内のすべてのポイントについての距離推定を含む、車両1000の環境の3Dマップを生成するために使用され得る。少なくとも1つの実施例では、(1つ又は複数の)ステレオ・カメラ1068のうちの1つ又は複数は、限定はしないが、(1つ又は複数の)コンパクト・ステレオ・ビジョン・センサを含み得、このセンサは、限定はしないが、車両1000からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告機能をアクティブ化し得る2つのカメラ・レンズ(左及び右に1つずつ)及び画像処理チップを含み得る。少なくとも1つの実施例では、本明細書で説明されるものに加えて、又はその代替として、他のタイプの(1つ又は複数の)ステレオ・カメラ1068が使用され得る。
【0119】
少なくとも1つの実施例では、車両1000の側方の環境の部分を含む視野をもつカメラ(たとえば、サイド・ビュー・カメラ)が、周囲ビューのために使用され、占有グリッドを作成及び更新し、並びに側面衝突警告を生成するために使用される情報を提供し得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)周囲カメラ1074(たとえば、
図10Bに示されている4つの周囲カメラ)が、車両1000上に位置決めされ得る。少なくとも1つの実施例では、(1つ又は複数の)周囲カメラ1074は、限定はしないが、任意の数及び組合せの広角カメラ、(1つ又は複数の)魚眼カメラ、(1つ又は複数の)360度カメラ、及び/又は同様のカメラを含み得る。たとえば、少なくとも1つの実施例では、4つの魚眼カメラが、車両1000の前方、後方、及び側方に位置決めされ得る。少なくとも1つの実施例では、車両1000は、3つの周囲カメラ1074(たとえば、左、右、及び後方)を使用し得、第4の周囲ビュー・カメラとして、1つ又は複数の他のカメラ(たとえば、正面カメラ)を活用し得る。
【0120】
少なくとも1つの実施例では、車両1000後方の環境の部分を含む視野をもつカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲ビュー、後方衝突警告、並びに占有グリッドの作成及び更新のために使用され得る。少なくとも1つの実施例では、限定はしないが、本明細書で説明されるように、(1つ又は複数の)正面カメラとしても好適なカメラ(たとえば、長距離カメラ1098、及び/又は(1つ又は複数の)中距離カメラ1076、(1つ又は複数の)ステレオ・カメラ1068、(1つ又は複数の)赤外線カメラ1072など)を含む、多種多様なカメラが使用され得る。
【0121】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図10Bのシステムにおいて使用され得る。
【0122】
図10Cは、少なくとも1つの実施例による、
図10Aの自律車両1000のための例示的なシステム・アーキテクチャを示すブロック図である。少なくとも1つの実施例では、
図10C中の車両1000の構成要素、特徴、及びシステムの各々は、バス1002を介して接続されるものとして示されている。少なくとも1つの実施例では、バス1002は、限定はしないが、CANデータ・インターフェース(代替的に、本明細書では「CANバス」と呼ばれる)を含み得る。少なくとも1つの実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1000の様々な特徴及び機能性の制御を補助するために使用される、車両1000内部のネットワークであり得る。少なくとも1つの実施例では、バス1002は、各々がそれ自体の一意の識別子(たとえば、CAN ID)をもつ数十又はさらには数百のノードを有するように構成され得る。少なくとも1つの実施例では、バス1002は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両ステータス・インジケータを見いだすために読み取られ得る。少なくとも1つの実施例では、バス1002は、ASIL Bに準拠したCANバスであり得る。
【0123】
少なくとも1つの実施例では、CANに加えて、又はその代替として、FlexRay及び/又はイーサネット・プロトコルが使用され得る。少なくとも1つの実施例では、バス1002を形成する任意の数のバスがあり得、これらのバスは、限定はしないが、0個以上のCANバス、0個以上のFlexRayバス、0個以上のイーサネット・バス、及び/又は、異なるプロトコルを使用する0個以上の他のタイプのバスを含み得る。少なくとも1つの実施例では、2つ又はそれ以上のバスが、異なる機能を実施するために使用され得、及び/又は、冗長性のために使用され得る。たとえば、第1のバスが衝突回避機能性のために使用され得、第2のバスが作動制御のために使用され得る。少なくとも1つの実施例では、バス1002の各バスは、車両1000の構成要素のいずれかと通信し得、バス1002のうちの2つ又はそれ以上のバスが、対応する構成要素と通信し得る。少なくとも1つの実施例では、(SoC1004(A)及びSoC1004(B)などの)任意の数のシステム・オン・チップ(「SoC」)1004の各々、(1つ又は複数の)コントローラ1036の各々、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1000のセンサからの入力)へのアクセスを有し得、CANバスなどの共通のバスに接続され得る。
【0124】
少なくとも1つの実施例では、車両1000は、
図10Aに関して本明細書で説明されるものなど、1つ又は複数のコントローラ1036を含み得る。少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、様々な機能のために使用され得る。少なくとも1つの実施例では、(1つ又は複数の)コントローラ1036は、車両1000の様々な他の構成要素及びシステムのいずれかに結合され得、車両1000、車両1000の人工知能、車両1000のためのインフォテイメント、及び/又は他の機能の制御のために使用され得る。
【0125】
少なくとも1つの実施例では、車両1000は、任意の数のSoC1004を含み得る。少なくとも1つの実施例では、SoC1004の各々は、限定はしないが、中央処理ユニット(「CPU」)1006、グラフィックス処理ユニット(「GPU」)1008、(1つ又は複数の)プロセッサ1010、(1つ又は複数の)キャッシュ1012、(1つ又は複数の)アクセラレータ1014、(1つ又は複数の)データ・ストア1016、並びに/又は示されていない他の構成要素及び特徴を含み得る。少なくとも1つの実施例では、車両1000を様々なプラットフォーム及びシステムにおいて制御するために、(1つ又は複数の)SoC1004が使用され得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、1つ又は複数のサーバ(
図10Cに図示せず)からネットワーク・インターフェース1024を介して地図のリフレッシュ及び/又は更新を取得し得る高精細度(「HD」:High Definition)地
図1022をもつシステム(たとえば、車両1000のシステム)において組み合わせられ得る。
【0126】
少なくとも1つの実施例では、(1つ又は複数の)CPU1006は、CPUクラスタ又はCPUコンプレックス(代替的に、本明細書では「CCPLEX」と呼ばれる)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)CPU1006は、複数のコア及び/又はレベル2(「L2」)キャッシュを含み得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)CPU1006は、コヒーレントなマルチプロセッサ構成において8つのコアを含み得る。少なくとも1つの実施例では、(1つ又は複数の)CPU1006は、4つのデュアル・コア・クラスタを含み得、各クラスタは、専用L2キャッシュ(たとえば、2メガバイト(MB)のL2キャッシュ)を有する。少なくとも1つの実施例では、(1つ又は複数の)CPU1006(たとえば、CCPLEX)は、(1つ又は複数の)CPU1006のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時のクラスタ動作をサポートするように構成され得る。
【0127】
少なくとも1つの実施例では、(1つ又は複数の)CPU1006のうちの1つ又は複数は、電力管理能力を実装し得、電力管理能力は、限定はしないが、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、動的電力を節約するために、アイドル時に自動的にクロック・ゲート制御され得る;各コア・クロックは、割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行によりそのようなコアが能動的に命令を実行していないとき、ゲート制御され得る;各コアが独立して電力ゲート制御され得る;各コア・クラスタは、すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、独立してクロック・ゲート制御され得る;及び/或いは、各コア・クラスタは、すべてのコアが電力ゲート制御されるとき、独立して電力ゲート制御され得る。少なくとも1つの実施例では、(1つ又は複数の)CPU1006は、電力状態を管理するための拡張アルゴリズムをさらに実装し得、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXのための入るべき最良の電力状態がどれかを、ハードウェア/マイクロコードが決定する。少なくとも1つの実施例では、処理コアは、ワークがマイクロコードにオフロードされたソフトウェアにおける簡単な電力状態エントリ・シーケンスをサポートし得る。
【0128】
少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、統合されたGPU(代替的に、本明細書では「iGPU」と呼ばれる)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、プログラマブルであり得、並列なワークロードについて効率的であり得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、拡張テンソル命令セットを使用し得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、1つ又は複数のストリーミング・マイクロプロセッサを含み得、各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば、少なくとも96KBのストレージ容量をもつL1キャッシュ)を含み得、2つ又はそれ以上のストリーミング・マイクロプロセッサは、L2キャッシュ(たとえば、512KBのストレージ容量をもつL2キャッシュ)を共有し得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、少なくとも8つのストリーミング・マイクロプロセッサを含み得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、(1つ又は複数の)コンピュート・アプリケーション・プログラミング・インターフェース(API)を使用し得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、1つ又は複数の並列なコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDAモデル)を使用し得る。
【0129】
少なくとも1つの実施例では、(1つ又は複数の)GPU1008のうちの1つ又は複数は、自動車の及び組み込まれた使用事例における最良の性能のために電力最適化され得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)回路要素上で作製され得る。少なくとも1つの実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされたいくつかの混合精度処理コアを組み込み得る。たとえば、限定はしないが、64個のPF32コアと、32個のPF64コアとは、4つの処理ブロックに区分けされ得る。少なくとも1つの実施例では、各処理ブロックは、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習行列算術のための2つの混合精度NVIDIA Tensorコア、レベル0(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを割り振られ得る。少なくとも1つの実施例では、ストリーミング・マイクロプロセッサは、算出とアドレッシング計算との混合によるワークロードの効率的な実行を行うために、独立した並列の整数及び浮動小数点データ経路を含み得る。少なくとも1つの実施例では、ストリーミング・マイクロプロセッサは、並列スレッド間でよりきめ細かい同期及び協調を可能にするために、独立したスレッド・スケジューリング能力を含み得る。少なくとも1つの実施例では、ストリーミング・マイクロプロセッサは、性能を改善すると同時にプログラミングを簡単にするために、組み合わせられたL1データ・キャッシュ及び共有メモリ・ユニットを含み得る。
【0130】
少なくとも1つの実施例では、(1つ又は複数の)GPU1008のうちの1つ又は複数は、いくつかの実例では、約900GB/秒のピーク・メモリ帯域幅を提供するために、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み得る。少なくとも1つの実施例では、HBMメモリに加えて、又はその代替として、グラフィックス・ダブル・データ・レート・タイプ・ファイブ同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)など、同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用され得る。
【0131】
少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、統一メモリ技術を含み得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1008が(1つ又は複数の)CPU1006のページ・テーブルに直接アクセスすることを可能にするために、アドレス・トランスレーション・サービス(「ATS」:address translation service)サポートが使用され得る。少なくとも1つの実施例では、GPU1008メモリ管理ユニット(「MMU」:memory management unit)のGPUがミスに遭遇したとき、アドレス・トランスレーション要求が(1つ又は複数の)CPU1006に送信され得る。少なくとも1つの実施例では、それに応答して、(1つ又は複数の)CPU1006のうちの2CPUは、それのページ・テーブルにおいて、アドレスのための仮想-物理マッピングを探し、トランスレーションを(1つ又は複数の)GPU1008に返送し得る。少なくとも1つの実施例では、統一メモリ技術は、(1つ又は複数の)CPU1006と(1つ又は複数の)GPU1008の両方のメモリについて単一の統一仮想アドレス空間を可能にし、それにより、(1つ又は複数の)GPU1008のプログラミングと、(1つ又は複数の)GPU1008へのアプリケーションの移植とを簡単にし得る。
【0132】
少なくとも1つの実施例では、(1つ又は複数の)GPU1008は、他のプロセッサのメモリへの(1つ又は複数の)GPU1008のアクセスの頻度を追跡し得る任意の数のアクセス・カウンタを含み得る。少なくとも1つの実施例では、(1つ又は複数の)アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリにメモリ・ページが移動されることを確実にするのを助け、それにより、プロセッサ間で共有されるメモリ範囲の効率を改善し得る。
【0133】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、本明細書で説明されるものを含む、任意の数のキャッシュ1012を含み得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)キャッシュ1012は、(1つ又は複数の)CPU1006と(1つ又は複数の)GPU1008の両方にとって利用可能である(たとえば、(1つ又は複数の)CPU1006及び(1つ又は複数の)GPU1008に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも1つの実施例では、(1つ又は複数の)キャッシュ1012は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、ラインの状態を追跡し得るライト・バック・キャッシュを含み得る。少なくとも1つの実施例では、L3キャッシュは、実施例に応じて、4MB以上のメモリを含み得るが、より小さいキャッシュ・サイズが使用され得る。
【0134】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、1つ又は複数のアクセラレータ1014(たとえば、ハードウェア・アクセラレータ、ソフトウェア・アクセラレータ、又はそれらの組合せ)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、最適化されたハードウェア・アクセラレータ及び/又は大型のオンチップ・メモリを含み得るハードウェア加速クラスタを含み得る。少なくとも1つの実施例では、大型のオンチップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速することを可能にし得る。少なくとも1つの実施例では、ハードウェア加速クラスタは、(1つ又は複数の)GPU1008を補完し、(1つ又は複数の)GPU1008のタスクのうちのいくつかをオフロードするために(たとえば、他のタスクを実施するために(1つ又は複数の)GPU1008のサイクルをより多く解放するために)使用され得る。少なくとも1つの実施例では、加速を受け入れるのに十分なほど安定している対象のワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、リカレント・ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1014が使用され得る。少なくとも1つの実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出のために使用されるような)高速RCNN、又は他のタイプのCNNを含み得る。
【0135】
少なくとも1つの実施例では、(1つ又は複数の)アクセラレータ1014(たとえば、ハードウェア加速クラスタ)は、1つ又は複数の深層学習アクセラレータ(「DLA」)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)DLAは、限定はしないが、1つ又は複数のTensor処理ユニット(「TPU」:Tensor processing units)を含み得、1つ又は複数のTensor処理ユニットは、深層学習アプリケーション及び推論のために、追加の、毎秒10兆の演算を提供するように構成され得る。少なくとも1つの実施例では、TPUは、(たとえば、CNN、RCNNなどのための)画像処理機能を実施するように構成され、そのために最適化されたアクセラレータであり得る。少なくとも1つの実施例では、(1つ又は複数の)DLAは、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のためにさらに最適化され得る。少なくとも1つの実施例では、(1つ又は複数の)DLAの設計は、一般的な汎用GPUよりも多くのミリメートル当たりの性能を提供し得、一般的には、CPUの性能をはるかに超える。少なくとも1つの実施例では、(1つ又は複数の)TPUは、たとえば、特徴と重みの両方のためのINT8、INT16、及びFP16のデータ・タイプをサポートする、単一インスタンスの畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実施し得る。少なくとも1つの実施例では、(1つ又は複数の)DLAは、たとえば、限定はしないが、カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクロフォンからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び車両所有者識別のためのCNN、並びに/或いはセキュリティ及び/又は安全関係イベントのためのCNNを含む、様々な機能のいずれかのための処理された又は処理されていないデータに対して、ニューラル・ネットワーク、特にCNNを、迅速に及び効率的に実行し得る。
【0136】
少なくとも1つの実施例では、(1つ又は複数の)DLAは、(1つ又は複数の)GPU1008の任意の機能を実施し得、たとえば、推論アクセラレータを使用することによって、設計者は、任意の機能のために(1つ又は複数の)DLA又は(1つ又は複数の)GPU1008のいずれかをターゲットにし得る。たとえば、少なくとも1つの実施例では、設計者は、CNN及び浮動小数点演算の処理を(1つ又は複数の)DLAに集中させ、他の機能を(1つ又は複数の)GPU1008及び/又は(1つ又は複数の)アクセラレータ1014に任せ得る。
【0137】
少なくとも1つの実施例では、(1つ又は複数の)アクセラレータ1014は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含み得、プログラマブル・ビジョン・アクセラレータは、本明細書では代替的にコンピュータ・ビジョン・アクセラレータと呼ばれることがある。少なくとも1つの実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1038、自律運転、拡張現実(「AR」:augmented reality)アプリケーション、及び/又は仮想現実(「VR」:virtual reality)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。少なくとも1つの実施例では、PVAは、性能とフレキシビリティとの間の均衡を提供し得る。たとえば、少なくとも1つの実施例では、各PVAは、たとえば、限定はしないが、任意の数の縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)コア、ダイレクト・メモリ・アクセス(「DMA」:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含み得る。
【0138】
少なくとも1つの実施例では、RISCコアは、画像センサ(たとえば、本明細書で説明される任意のカメラの画像センサ)、(1つ又は複数の)画像信号プロセッサなどと対話し得る。少なくとも1つの実施例では、各RISCコアは、任意の量のメモリを含み得る。少なくとも1つの実施例では、RISCコアは、実施例に応じて、いくつかのプロトコルのいずれかを使用し得る。少なくとも1つの実施例では、RISCコアは、リアルタイム・オペレーティング・システム(「RTOS」:real-time operating system)を実行し得る。少なくとも1つの実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実装され得る。たとえば、少なくとも1つの実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
【0139】
少なくとも1つの実施例では、DMAは、PVAの構成要素が(1つ又は複数の)CPU1006とは無関係にシステム・メモリにアクセスすることを可能にし得る。少なくとも1つの実施例では、DMAは、限定はしないが、多次元アドレッシング及び/又はサーキュラ・アドレッシングをサポートすることを含む、PVAに最適化を提供するために使用される任意の数の特徴をサポートし得る。少なくとも1つの実施例では、DMAは、6つ又はそれ以上のアドレッシング次元までをサポートし得、これらのアドレッシング次元は、限定はしないが、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングを含み得る。
【0140】
少なくとも1つの実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計され得るプログラマブル・プロセッサであり、信号処理能力を提供し得る。少なくとも1つの実施例では、PVAは、PVAコアと、2つのベクトル処理サブシステム・パーティションとを含み得る。少なくとも1つの実施例では、PVAコアは、プロセッサ・サブシステム、(1つ又は複数の)DMAエンジン(たとえば、2つのDMAエンジン)、及び/又は他の周辺機器を含み得る。少なくとも1つの実施例では、ベクトル処理サブシステムは、PVAの1次処理エンジンとして動作し得、ベクトル処理ユニット(「VPU」:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、「VMEM」:vector memory)を含み得る。少なくとも1つの実施例では、VPUコアは、たとえば、単一命令複数データ(「SIMD」:single instruction,multiple data)、超長命令語(「VLIW」:very long instruction word)のデジタル信号プロセッサなど、デジタル信号プロセッサを含み得る。少なくとも1つの実施例では、SIMDとVLIWとの組合せが、スループット及びスピードを向上させ得る。
【0141】
少なくとも1つの実施例では、ベクトル・プロセッサの各々は、命令キャッシュを含み得、専用メモリに結合され得る。その結果、少なくとも1つの実施例では、ベクトル・プロセッサの各々は、他のベクトル・プロセッサとは無関係に実行するように構成され得る。少なくとも1つの実施例では、特定のPVA中に含まれるベクトル・プロセッサは、データ並列処理を採用するように構成され得る。たとえば、少なくとも1つの実施例では、単一のPVA中に含まれる複数のベクトル・プロセッサは、共通のコンピュータ・ビジョン・アルゴリズムを、ただし画像の異なる領域上で実行し得る。少なくとも1つの実施例では、特定のPVA中に含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを1つの画像上で同時に実行するか、さらには、異なるアルゴリズムを連続した画像又は画像の部分上で実行し得る。少なくとも1つの実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタ中に含まれ得、任意の数のベクトル・プロセッサが各PVA中に含まれ得る。少なくとも1つの実施例では、PVAは、システムの全体的な安全性を向上させるために、追加のエラー訂正コード(「ECC」:Error Correction Code)メモリを含み得る。
【0142】
少なくとも1つの実施例では、(1つ又は複数の)アクセラレータ1014は、(1つ又は複数の)アクセラレータ1014のための高帯域幅、低レイテンシのSRAMを提供するために、コンピュータ・ビジョン・ネットワーク・オンチップと、スタティック・ランダム・アクセス・メモリ(「SRAM」:static random-access memory)とを含み得る。少なくとも1つの実施例では、オンチップ・メモリは、たとえば、限定はしないが、8つのフィールド構成可能メモリ・ブロックを含む少なくとも4MBのSRAMを含み得、これは、PVAとDLAの両方によってアクセス可能であり得る。少なくとも1つの実施例では、メモリ・ブロックの各ペアは、先進周辺バス(「APB」:advanced peripheral bus)インターフェースと、構成回路要素と、コントローラと、マルチプレクサとを含み得る。少なくとも1つの実施例では、任意のタイプのメモリが使用され得る。少なくとも1つの実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスし得る。少なくとも1つの実施例では、バックボーンは、PVA及びDLAを(たとえば、APBを使用して)メモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
【0143】
少なくとも1つの実施例では、コンピュータ・ビジョン・ネットワーク・オンチップは、任意の制御信号/アドレス/データの送信の前に、PVAとDLAの両方が準備信号及び有効信号を提供すると決定するインターフェースを含み得る。少なくとも1つの実施例では、インターフェースは、制御信号/アドレス/データを送信するための別個の位相及び別個のチャネル、並びに継続的なデータ転送のためのバーストタイプ通信を提供し得る。少なくとも1つの実施例では、インターフェースは、国際標準化機構(「ISO」:International Organization for Standardization)26262又は国際電気標準会議(「IEC」:International Electrotechnical Commission)61508の規格に準拠し得るが、他の規格及びプロトコルが使用され得る。
【0144】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、リアルタイム・レイ・トレーシング・ハードウェア・アクセラレータを含み得る。少なくとも1つの実施例では、リアルタイム・レイ・トレーシング・ハードウェア・アクセラレータは、RADAR信号解釈のための、音伝搬合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波形伝搬シミュレーションのための、ローカリゼーション及び/又は他の機能を目的としたLIDARデータとの比較のための、並びに/或いは他の使用法のための、リアルタイムの視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び範囲を迅速に及び効率的に決定するために使用され得る。
【0145】
少なくとも1つの実施例では、(1つ又は複数の)アクセラレータ1014は、自律運転のための多様な使用法を有することができる。少なくとも1つの実施例では、PVAは、ADAS及び自律車両における主要な処理段階のために使用され得る。少なくとも1つの実施例では、PVAの能力は、低電力及び低レイテンシでの予測可能な処理を必要とするアルゴリズム・ドメインについて良好にマッチする。言い換えれば、PVAは、低レイテンシ及び低電力とともに予測可能なランタイムを必要とし得る半稠密(semi-dense)又は稠密な規則的算出に対して、小さいデータセット上でも、良好に機能する。少なくとも1つの実施例では、車両1000中など、PVAは、それらが、物体検出及び整数数値の演算において効率的であり得るので、従来のコンピュータ・ビジョン・アルゴリズムを稼働するように設計され得る。
【0146】
たとえば、技術の少なくとも1つの実施例によれば、PVAは、コンピュータ・ステレオ・ビジョンを実施するために使用される。少なくとも1つの実施例では、いくつかの実例においてセミグローバルなマッチング・ベースのアルゴリズムが使用され得るが、これは、限定するものではない。少なくとも1つの実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造(structure from motion)、歩行者認識、車線検出など)をオンザフライで使用する。少なくとも1つの実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実施し得る。
【0147】
少なくとも1つの実施例では、PVAは、高密度オプティカル・フローを実施するために使用され得る。たとえば、少なくとも1つの実施例では、PVAは、未加工のRADARデータを(たとえば、4Dの高速フーリエ変換を使用して)処理して、処理されたRADARデータを提供することができる。少なくとも1つの実施例では、PVAは、たとえば、処理された飛行時間データを提供するために、未加工の飛行時間データを処理することによって、飛行時間の深度処理のために使用される。
【0148】
少なくとも1つの実施例では、DLAは、たとえば、限定はしないが、各物体検出についての信頼性の測度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を向上させるための任意のタイプのネットワークを稼働するために使用され得る。少なくとも1つの実施例では、信頼性は、他の検出と比較した各検出の確率として、又はその相対的な「重み」を提供するものとして表されるか、又は解釈され得る。少なくとも1つの実施例では、信頼性測度は、システムが、どの検出が偽陽性(false positive)検出ではなく真陽性(true positive)検出と見なされるべきであるかに関して、さらなる判定を行うことを可能にする。少なくとも1つの実施例では、システムは、信頼性についてのしきい値を設定し、しきい値を超える検出のみを真陽性検出と見なし得る。自動緊急ブレーキ(「AEB」:automatic emergency braking)システムが使用される実施例では、偽陽性検出は、車両が自動的に緊急ブレーキをかけることを引き起こし、これは明らかに望ましくない。少なくとも1つの実施例では、非常に信頼性の高い検出が、AEBのためのトリガと見なされ得る。少なくとも1つの実施例では、DLAは、信頼性値を回帰するためにニューラル・ネットワークを稼働し得る。少なくとも1つの実施例では、ニューラル・ネットワークは、とりわけ、バウンディング・ボックスの次元、(たとえば、別のサブシステムから)取得されたグランド・プレーン推定値、車両1000の向きと相関する(1つ又は複数の)IMUセンサ1066からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、(1つ又は複数の)LIDARセンサ1064又は(1つ又は複数の)RADARセンサ1060)から取得された物体の3Dロケーション推定値など、パラメータの少なくとも一部のサブセットを、その入力としてとり得る。
【0149】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、(1つ又は複数の)データ・ストア1016(たとえば、メモリ)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)データ・ストア1016は、(1つ又は複数の)SoC1004のオンチップ・メモリであり得、このオンチップ・メモリは、(1つ又は複数の)GPU1008及び/又はDLA上で実行されるべきニューラル・ネットワークを記憶し得る。少なくとも1つの実施例では、(1つ又は複数の)データ・ストア1016は、容量が、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくなり得る。少なくとも1つの実施例では、(1つ又は複数の)データ・ストア1016は、(1つ又は複数の)L2又はL3キャッシュを備え得る。
【0150】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、(1つ又は複数の)任意の数のプロセッサ1010(たとえば、組み込みプロセッサ)を含み得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、ブート電力並びに管理機能及び関係するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであり得る、ブート及び電力管理プロセッサを含み得る。少なくとも1つの実施例では、ブート及び電力管理プロセッサは、(1つ又は複数の)SoC1004のブート・シーケンスの一部であり得、ランタイム電力管理サービスを提供し得る。少なくとも1つの実施例では、ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、(1つ又は複数の)SoC1004の熱及び温度センサの管理、並びに/又は(1つ又は複数の)SoC1004の電力状態の管理を提供し得る。少なくとも1つの実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装され得、(1つ又は複数の)SoC1004は、リング発振器を使用して、(1つ又は複数の)CPU1006、(1つ又は複数の)GPU1008、及び/又は(1つ又は複数の)アクセラレータ1014の温度を検出し得る。少なくとも1つの実施例では、温度がしきい値を超えると決定された場合、ブート及び電力管理プロセッサは、温度障害ルーチンに入り、(1つ又は複数の)SoC1004を低電力状態にし、及び/又は車両1000を運転手-安全停止モード(chauffeur to safe stop mode)にし(たとえば、車両1000を安全停止させ)得る。
【0151】
少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、オーディオ処理エンジンとして働き得る組み込みプロセッサのセットをさらに含み得、オーディオ処理エンジンは、複数のインターフェースを介した多チャネル・オーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にする、オーディオ・サブシステムであり得る。少なくとも1つの実施例では、オーディオ処理エンジンは、専用RAMをもつデジタル信号プロセッサをもつ専用プロセッサ・コアである。
【0152】
少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、低電力センサ管理及び立ち上げ使用事例をサポートするのに必要なハードウェア特徴を提供し得る常時オン・プロセッサ・エンジンをさらに含み得る。少なくとも1つの実施例では、常時オン・プロセッサ・エンジンは、限定はしないが、プロセッサ・コア、密結合RAM、サポート周辺機器(たとえば、タイマ及び割込みコントローラ)、様々なI/Oコントローラ周辺機器、及びルーティング論理を含み得る。
【0153】
少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、安全クラスタ・エンジンをさらに含み得、安全クラスタ・エンジンは、限定はしないが、自動車用途のための安全管理に対処するための専用プロセッサ・サブシステムを含む。少なくとも1つの実施例では、安全クラスタ・エンジンは、限定はしないが、2つ又はそれ以上のプロセッサ・コア、密結合RAM、サポート周辺機器(たとえば、タイマ、割込みコントローラなど)、及び/又はルーティング論理を含み得る。安全モードでは、2つ又はそれ以上のコアは、少なくとも1つの実施例では、ロックステップ・モードで動作し、それらの動作間で何らかの差を検出するための比較論理をもつ単一コアとして機能し得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、リアルタイム・カメラ・エンジンをさらに含み得、リアルタイム・カメラ・エンジンは、限定はしないが、リアルタイム・カメラ管理に対処するための専用プロセッサ・サブシステムを含み得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、高ダイナミック・レンジ信号プロセッサをさらに含み得、高ダイナミック・レンジ信号プロセッサは、限定はしないが、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る。
【0154】
少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1010は、ビデオ画像合成器を含み得、ビデオ画像合成器は、プレーヤ・ウィンドウのための最終画像を作り出すためにビデオ再生アプリケーションによって必要とされるビデオ後処理機能を実装する(たとえば、マイクロプロセッサ上に実装された)処理ブロックであり得る。少なくとも1つの実施例では、ビデオ画像合成器は、(1つ又は複数の)広角カメラ1070、(1つ又は複数の)周囲カメラ1074、及び/又は(1つ又は複数の)キャビン内監視カメラ・センサに対して、レンズゆがみ補正を実施し得る。少なくとも1つの実施例では、(1つ又は複数の)キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに応じて応答するように構成された、SoC1004の別のインスタンス上で稼働しているニューラル・ネットワークによって監視される。少なくとも1つの実施例では、キャビン内システムは、限定はしないが、セルラー・サービスをアクティブ化し、電話をかけ、電子メールを書き、車両の行き先を変更し、車両のインフォテイメント・システム及び設定をアクティブ化又は変更し、ボイス作動式のウェブ・サーフィンを提供するために、読唇を実施し得る。少なくとも1つの実施例では、いくつかの機能は、車両が自律モードで動作しているときにドライバにとって利用可能であり、他の場合に使用不可にされる。
【0155】
少なくとも1つの実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含み得る。たとえば、少なくとも1つの実施例では、ビデオ中で動きが発生した場合、ノイズ低減が空間情報に適切に重み付けし、隣接するフレームによって提供される情報の重みを減少させる。少なくとも1つの実施例では、画像又は画像の一部分が動きを含まない場合、ビデオ画像合成器によって実施される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像中のノイズを低減し得る。
【0156】
少なくとも1つの実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化(stereo rectification)を実施するように構成され得る。少なくとも1つの実施例では、ビデオ画像合成器は、オペレーティング・システム・デスクトップが使用中であるとき、ユーザ・インターフェース合成のためにさらに使用され得、(1つ又は複数の)GPU1008は、新しい表面を継続的にレンダリングすることを必要とされない。少なくとも1つの実施例では、(1つ又は複数の)GPU1008が電源投入され、アクティブであり、3Dレンダリングを行っているとき、ビデオ画像合成器は、性能及び応答性を改善するために(1つ又は複数の)GPU1008をオフロードするために使用され得る。
【0157】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数のSoCは、カメラからのビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、並びに/又はカメラ及び関係するピクセル入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数は、(1つ又は複数の)入力/出力コントローラをさらに含み得、(1つ又は複数の)入力/出力コントローラは、ソフトウェアによって制御され得、特定の役割にコミットされていないI/O信号を受信するために使用され得る。
【0158】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数のSoCは、周辺機器、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他のデバイスとの通信を可能にするための広範囲の周辺インターフェースをさらに含み得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット・チャネルを介して接続された)カメラからのデータ、センサ(たとえば、イーサネット・チャネルを介して接続され得る(1つ又は複数の)LIDARセンサ1064、(1つ又は複数の)RADARセンサ1060など)からのデータ、バス1002からのデータ(たとえば、車両1000のスピード、ハンドル位置など)、(たとえば、イーサネット・バス又はCANバスを介して接続された)(1つ又は複数の)GNSSセンサ1058からのデータなどを処理するために使用され得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004のうちの1つ又は複数のSoCは、専用の高性能大容量ストレージ・コントローラをさらに含み得、この大容量ストレージ・コントローラは、それら自体のDMAエンジンを含み得、ルーチン・データ管理タスクから(1つ又は複数の)CPU1006を解放するために使用され得る。
【0159】
少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャをもつエンドツーエンド・プラットフォームであり得、それにより、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に利用する包括的な機能的安全性アーキテクチャを提供し、フレキシブルで、信頼できる運転ソフトウェア・スタックのためのプラットフォームを、深層学習ツールとともに提供し得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、従来のシステムよりも高速で、信頼でき、さらにはエネルギー効率及び空間効率が高くなり得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)アクセラレータ1014は、(1つ又は複数の)CPU1006、(1つ又は複数の)GPU1008、及び(1つ又は複数の)データ・ストア1016と組み合わせられたとき、レベル3~5の自律車両のための高速で効率的なプラットフォームを提供し得る。
【0160】
少なくとも1つの実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行され得、このアルゴリズムは、多種多様な視覚データにわたって多種多様な処理アルゴリズムを実行するために、Cなどの高レベル・プログラミング言語を使用して構成され得る。しかしながら、少なくとも1つの実施例では、CPUは、しばしば、たとえば、実行時間及び電力消費に関係する要件など、多くのコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。少なくとも1つの実施例では、多くのCPUは、車両内ADASアプリケーション及び実際のレベル3~5の自律車両において使用される、複雑な物体検出アルゴリズムをリアルタイムで実行することができない。
【0161】
本明細書で説明される実施例は、複数のニューラル・ネットワークが同時に及び/又は順次実施されることを可能にし、レベル3~5の自律運転機能性を可能にするために結果が一緒に組み合わせられることを可能にする。たとえば、少なくとも1つの実施例では、DLA又は個別GPU(たとえば、(1つ又は複数の)GPU1020)上で実行しているCNNは、テキスト及び単語認識を含み得、ニューラル・ネットワークがそれについて特に訓練されていない標識を含む交通標識を読み、理解することを可能にする。少なくとも1つの実施例では、DLAは、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で稼働している経路計画モジュールに渡すことができる、ニューラル・ネットワークをさらに含み得る。
【0162】
少なくとも1つの実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に稼働され得る。たとえば、少なくとも1つの実施例では、電光とともに、「注意:点滅光は凍結状態(icy condition)を示す」と記載した警告標識が、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。少なくとも1つの実施例では、そのような警告標識自体は、第1の導入されたニューラル・ネットワーク(たとえば、訓練されたニューラル・ネットワーク)によって交通標識として識別され得、「点滅光は凍結状態を示す」というテキストは、第2の導入されたニューラル・ネットワークによって解釈され得、第2の導入されたニューラル・ネットワークは、点滅光が検出されたとき、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに知らせる。少なくとも1つの実施例では、点滅光は、第3の導入されたニューラル・ネットワークを複数のフレームにわたって動作させることによって識別され得、第3の導入されたニューラル・ネットワークが、車両の経路計画ソフトウェアに点滅光の存在(又は不在)を知らせる。少なくとも1つの実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又は(1つ又は複数の)GPU1008上などで同時に稼働し得る。
【0163】
少なくとも1つの実施例では、顔認識及び車両所有者識別のためのCNNが、カメラ・センサからのデータを使用して、車両1000の承認済みのドライバ及び/又は所有者の存在を識別し得る。少なくとも1つの実施例では、所有者がドライバ・ドアに近づき、ライトをオンにしたときに車両を解錠し、セキュリティ・モードでは、所有者がそのような車両から離れたときにそのような車両を使用不可にするために、常時オン・センサ処理エンジンが使用され得る。このようにして、(1つ又は複数の)SoC1004は、窃盗及び/又は自動車乗っ取りに対するセキュリティを提供する。
【0164】
少なくとも1つの実施例では、緊急車両検出及び識別のためのCNNが、マイクロフォン1096からのデータを使用して、緊急車両のサイレンを検出及び識別し得る。少なくとも1つの実施例では、(1つ又は複数の)SoC1004は、環境及び市街地の音を分類し、並びに視覚データを分類するために、CNNを使用する。少なくとも1つの実施例では、DLA上で稼働しているCNNは、緊急車両が近づいてくる相対的なスピードを(たとえば、ドップラ効果を使用することによって)識別するように訓練される。少なくとも1つの実施例では、CNNは、(1つ又は複数の)GNSSセンサ1058によって識別されるように、車両が動作している地域に特有の緊急車両を識別するようにも訓練され得る。少なくとも1つの実施例では、欧州で動作しているときは、CNNは欧州のサイレンを検出しようとし、北米にあるときは、CNNは北米のサイレンのみを識別しようとする。少なくとも1つの実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行し、車両の速度を落とし、道路脇に寄せ、車両を停止させ、及び/又は緊急車両が通過するまで、(1つ又は複数の)超音波センサ1062を併用して車両をアイドリングするために、制御プログラムが使用され得る。
【0165】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)CPU1018(たとえば、(1つ又は複数の)個別CPU、又は(1つ又は複数の)dCPU)を含み得、(1つ又は複数の)CPU1018は、高速相互接続(たとえば、PCIe)を介して(1つ又は複数の)SoC1004に結合され得る。少なくとも1つの実施例では、(1つ又は複数の)CPU1018は、たとえばX86プロセッサを含み得る。(1つ又は複数の)CPU1018は、たとえば、ADASセンサと(1つ又は複数の)SoC1004との間で潜在的に一貫性のない結果を調停すること、並びに/或いは、(1つ又は複数の)コントローラ1036及び/又はチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1030のステータス及び健全性を監視することを含む、様々な機能のいずれかを実施するために使用され得る。
【0166】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)GPU1020(たとえば、(1つ又は複数の)個別GPU、又は(1つ又は複数の)dGPU)を含み得、(1つ又は複数の)GPU1020は、高速相互接続(たとえば、NVIDIAのNVLINKチャネル)を介して(1つ又は複数の)SoC1004に結合され得る。少なくとも1つの実施例では、(1つ又は複数の)GPU1020は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能性を提供し得、車両1000のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づいて、ニューラル・ネットワークを訓練及び/又は更新するために使用され得る。
【0167】
少なくとも1つの実施例では、車両1000は、ネットワーク・インターフェース1024をさらに含み得、ネットワーク・インターフェース1024は、限定はしないが、(1つ又は複数の)ワイヤレス・アンテナ1026(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコルのための1つ又は複数のワイヤレス・アンテナ)を含み得る。少なくとも1つの実施例では、ネットワーク・インターフェース1024は、他の車両及び/又はコンピューティング・デバイス(たとえば、乗客のクライアント・デバイス)との(たとえば、(1つ又は複数の)サーバ及び/又は他のネットワーク・デバイスとの)インターネット・クラウド・サービスへのワイヤレス接続性を可能にするために使用され得る。少なくとも1つの実施例では、他の車両と通信するために、車両100と他の車両との間に直接リンクが確立され得、及び/又は(たとえば、ネットワークにわたって及びインターネットを介して)間接リンクが確立され得る。少なくとも1つの実施例では、直接リンクは、車両間通信リンクを使用して提供され得る。少なくとも1つの実施例では、車両間通信リンクは、車両1000の近傍の車両(たとえば、車両1000の前方、側方、及び/又は後方の車両)に関する情報を車両1000に提供し得る。少なくとも1つの実施例では、そのような前述の機能性は、車両1000の協調型適応走行制御機能性の一部であり得る。
【0168】
少なくとも1つの実施例では、ネットワーク・インターフェース1024は、変調及び復調機能性を提供し、(1つ又は複数の)コントローラ1036がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。少なくとも1つの実施例では、ネットワーク・インターフェース1024は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含み得る。少なくとも1つの実施例では、周波数コンバージョンは、任意の技術的に実現可能な様式で実施され得る。たとえば、周波数コンバージョンは、よく知られているプロセスを通して、及び/又はスーパー・ヘテロダイン・プロセスを使用して実施され得る。少なくとも1つの実施例では、無線周波数フロント・エンド機能性は、別個のチップによって提供され得る。少なくとも1つの実施例では、ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z波、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能性を含み得る。
【0169】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)データ・ストア1028をさらに含み得、(1つ又は複数の)データ・ストア1028は、限定はしないが、オフチップ(たとえば、(1つ又は複数の)SoC1004上にない)ストレージを含み得る。少なくとも1つの実施例では、(1つ又は複数の)データ・ストア1028は、限定はしないが、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」:dynamic random-access memory)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ・メモリ、ハード・ディスク、並びに/或いは、少なくとも1ビットのデータを記憶し得る他の構成要素及び/又はデバイスを含む、1つ又は複数のストレージ要素を含み得る。
【0170】
少なくとも1つの実施例では、車両1000は、マッピング、知覚、占有グリッド生成、及び/又は経路計画機能を支援するために、(1つ又は複数の)GNSSセンサ1058(たとえば、GPS及び/又は補助GPSセンサ)をさらに含み得る。少なくとも1つの実施例では、たとえば、限定はしないが、イーサネット-シリアル(たとえば、RS-232)ブリッジをもつUSBコネクタを使用するGPSを含む、任意の数のGNSSセンサ1058が使用され得る。
【0171】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)RADARセンサ1060をさらに含み得る。少なくとも1つの実施例では、(1つ又は複数の)RADARセンサ1060は、暗闇及び/又は厳しい気象条件においてさえ、長距離車両検出のために車両1000によって使用され得る。少なくとも1つの実施例では、RADARの機能的安全性レベルは、ASIL Bであり得る。少なくとも1つの実施例では、(1つ又は複数の)RADARセンサ1060は、いくつかの実例では、未加工のデータにアクセスするためのイーサネット・チャネルへのアクセスとともに、制御のために(たとえば、(1つ又は複数の)RADARセンサ1060によって生成されたデータを送信するために)、及び物体追跡データにアクセスするために、CANバス及び/又はバス1002を使用し得る。少なくとも1つの実施例では、多種多様なRADARセンサ・タイプが使用され得る。たとえば、限定はしないが、(1つ又は複数の)RADARセンサ1060は、前方、後方、及び側方のRADAR使用に好適であり得る。少なくとも1つの実施例では、(1つ又は複数の)RADARセンサ1060のうちの1つ又は複数のセンサは、パルス・ドップラRADARセンサである。
【0172】
少なくとも1つの実施例では、(1つ又は複数の)RADARセンサ1060は、狭視野の長距離、広視野の短距離、短距離側方カバレージなど、異なる構成を含み得る。少なくとも1つの実施例では、長距離RADARは、適応走行制御機能性のために使用され得る。少なくとも1つの実施例では、長距離RADARシステムは、250m(メートル)範囲内などの、2つ又はそれ以上の独立した走査によって実現される広い視野を提供し得る。少なくとも1つの実施例では、(1つ又は複数の)RADARセンサ1060は、静的物体と移動している物体とを区別するのを助け得、緊急ブレーキ支援及び前方衝突警告のためにADASシステム1038によって使用され得る。少なくとも1つの実施例では、長距離RADARシステム中に含まれる(1つ又は複数の)センサ1060は、限定はしないが、複数の(たとえば、6つ又はそれ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースをもつモノスタティック・マルチモーダルRADARを含み得る。少なくとも1つの実施例では、6つのアンテナがある場合、中央の4アンテナは、隣接する車線におけるトラフィックからの干渉が最小の状態で、より高速で車両1000の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。少なくとも1つの実施例では、別の2つのアンテナは、視野を拡大し、これは、車両1000の車線に入るか又はそこを出る車両を迅速に検出することを可能にし得る。
【0173】
少なくとも1つの実施例では、中距離RADARシステムは、一実例として、最高160m(前方)又は80m(後方)の範囲と、最高42度(前方)又は150度(後方)の視野とを含み得る。少なくとも1つの実施例では、短距離RADARシステムは、限定はしないが、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1060を含み得る。後方バンパの両端部に設置されたとき、少なくとも1つの実施例では、RADARセンサ・システムは、後方向及び車両の隣の死角を常に監視する2本のビームを作成し得る。少なくとも1つの実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援のために、ADASシステム1038において使用され得る。
【0174】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)超音波センサ1062をさらに含み得る。少なくとも1つの実施例では、車両1000の前方、後方、及び/又は側方ロケーションにおいて位置決めされ得る(1つ又は複数の)超音波センサ1062は、駐車支援のために、並びに/又は占有グリッドを作成及び更新するために、使用され得る。少なくとも1つの実施例では、多種多様な(1つ又は複数の)超音波センサ1062が使用され得、異なる検出範囲(たとえば、2.5m、4m)について(1つ又は複数の)異なる超音波センサ1062が使用され得る。少なくとも1つの実施例では、(1つ又は複数の)超音波センサ1062は、機能的安全性レベルのASIL Bにおいて動作し得る。
【0175】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)LIDARセンサ1064を含み得る。少なくとも1つの実施例では、(1つ又は複数の)LIDARセンサ1064は、物体及び歩行者検出、緊急ブレーキ、衝突回避、並びに/又は他の機能のために使用され得る。少なくとも1つの実施例では、(1つ又は複数の)LIDARセンサ1064は、機能的安全性レベルASIL Bにおいて動作し得る。少なくとも1つの実施例では、車両1000は、複数のLIDARセンサ1064(たとえば、2つ、4つ、6つなど)を含み得、それらのLIDARセンサ1064は、(たとえば、データをギガビット・イーサネット・スイッチに提供するために)イーサネット・チャネルを使用し得る。
【0176】
少なくとも1つの実施例では、(1つ又は複数の)LIDARセンサ1064は、360度の視野について、物体及びそれらの距離のリストを提供することが可能であり得る。少なくとも1つの実施例では、(1つ又は複数の)市販のLIDARセンサ1064は、たとえば、2cm~3cmの精度をもつ、及び100Mbpsのイーサネット接続のサポートをもつ、ほぼ100mの宣伝された範囲を有し得る。少なくとも1つの実施例では、1つ又は複数の非突出型LIDARセンサが使用され得る。そのような実施例では、(1つ又は複数の)LIDARセンサ1064は、車両1000の前方、後方、側方、及び/又は角ロケーションに組み込まれ得る小さいデバイスを含み得る。少なくとも1つの実施例では、(1つ又は複数の)LIDARセンサ1064は、そのような実施例において、最高120度の水平視野と、35度の垂直視野とを、低反射性物体についてさえ200mの範囲で提供し得る。少なくとも1つの実施例では、(1つ又は複数の)前方に取り付けられたLIDARセンサ1064は、45度から135度の間の水平視野のために構成され得る。
【0177】
少なくとも1つの実施例では、3DフラッシュLIDARなどのLIDAR技術も使用され得る。少なくとも1つの実施例では、3DフラッシュLIDARは、レーザのフラッシュを送信ソースとして使用して、車両1000の周囲を最高でほぼ200mまで照射する。少なくとも1つの実施例では、フラッシュLIDARユニットは、限定はしないが、レセプタを含み、レセプタは、レーザ・パルスの通過時間と各ピクセル上での反射光とを記録し、それらは、車両1000から物体までの範囲に対応する。少なくとも1つの実施例では、フラッシュLIDARは、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成されることを可能にする。少なくとも1つの実施例では、4つのフラッシュLIDARセンサが、車両1000の各側面において1つ導入され得る。少なくとも1つの実施例では、3DフラッシュLIDARシステムは、限定はしないが、ファン以外に可動部品のないソリッドステート3D凝視アレイ(staring array)LIDARカメラ(たとえば、非走査型LIDARデバイス)を含む。少なくとも1つの実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(眼に安全な)レーザ・パルスを使用し得、3D範囲のポイント・クラウド及び位置同期された(co-registered)強度データとして反射レーザ光をキャプチャし得る。
【0178】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)IMUセンサ1066をさらに含み得る。少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、車両1000の後方車軸の中央に位置し得る。少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、たとえば、限定はしないが、(1つ又は複数の)加速度計、(1つ又は複数の)磁力計、(1つ又は複数の)ジャイロスコープ、磁気コンパス、複数の磁気コンパス、及び/又は他のセンサ・タイプを含み得る。6軸の用途においてなど、少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、限定はしないが、加速度計とジャイロスコープとを含み得る。9軸の用途においてなど、少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、限定はしないが、加速度計と、ジャイロスコープと、磁力計とを含み得る。
【0179】
少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進Kalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する、小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実装され得る。少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066は、車両1000が、速度の変化を直接観察し、それを、GPSから(1つ又は複数の)IMUセンサ1066に相関させることによって、磁気センサからの入力を必要とせずに車両1000の方位を推定することを可能にする。少なくとも1つの実施例では、(1つ又は複数の)IMUセンサ1066と(1つ又は複数の)GNSSセンサ1058とは、単一の統合されたユニットにおいて組み合わせられ得る。
【0180】
少なくとも1つの実施例では、車両1000は、車両1000の中及び/又はその周りに置かれた(1つ又は複数の)マイクロフォン1096を含み得る。少なくとも1つの実施例では、(1つ又は複数の)マイクロフォン1096は、とりわけ、緊急車両検出及び識別のために使用され得る。
【0181】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)ステレオ・カメラ1068、(1つ又は複数の)広角カメラ1070、(1つ又は複数の)赤外線カメラ1072、(1つ又は複数の)周囲カメラ1074、(1つ又は複数の)長距離カメラ1098、(1つ又は複数の)中距離カメラ1076、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。少なくとも1つの実施例では、カメラは、車両1000の全周辺の周りで画像データをキャプチャするために使用され得る。少なくとも1つの実施例では、どのタイプのカメラが使用されるかは、車両1000に依存する。少なくとも1つの実施例では、車両1000の周りで必要なカバレージを提供するために、カメラ・タイプの任意の組合せが使用され得る。少なくとも1つの実施例では、導入されるカメラの数は、実施例に応じて異なり得る。たとえば、少なくとも1つの実施例では、車両1000は、6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。少なくとも1つの実施例では、カメラは、一実例として、限定はしないが、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット通信をサポートし得る。少なくとも1つの実施例では、各カメラは、
図10A及び
図10Bに関して本明細書でより詳細に前に説明されたようなものであり得る。
【0182】
少なくとも1つの実施例では、車両1000は、(1つ又は複数の)振動センサ1042をさらに含み得る。少なくとも1つの実施例では、(1つ又は複数の)振動センサ1042は、(1つ又は複数の)車軸など、車両1000の構成要素の振動を測定し得る。たとえば、少なくとも1つの実施例では、振動の変化は、路面の変化を示し得る。少なくとも1つの実施例では、2つ又はそれ以上の振動センサ1042が使用されるとき、路面の摩擦又はすべり量を決定するために振動の差が使用され得る(たとえば、振動の差が動力駆動車軸と自由回転車軸との間のものであるとき)。
【0183】
少なくとも1つの実施例では、車両1000は、ADASシステム1038を含み得る。少なくとも1つの実施例では、ADASシステム1038は、限定はしないが、いくつかの実例では、SoCを含み得る。少なくとも1つの実施例では、ADASシステム1038は、限定はしないが、任意の数及び組合せの自律/適応/自動走行制御(「ACC」:autonomous/adaptive/automatic cruise control)システム、協調型適応走行制御(「CACC」:cooperative adaptive cruise control)システム、正面クラッシュ警告(「FCW」:forward crash warning)システム、自動緊急ブレーキ(「AEB」)システム、車線逸脱警告(「LDW」)システム、車線維持支援(「LKA」:lane keep assist)システム、死角警告(「BSW」:blind spot warning)システム、後方クロス・トラフィック警告(「RCTW」:rear cross-traffic warning)システム、衝突警告(「CW」:collision warning)システム、車線センタリング(「LC」:lane centering)システム、並びに/或いは他のシステム、特徴、及び/又は機能性を含み得る。
【0184】
少なくとも1つの実施例では、ACCシステムは、(1つ又は複数の)RADARセンサ1060、(1つ又は複数の)LIDARセンサ1064、及び/又は任意の数のカメラを使用し得る。少なくとも1つの実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含み得る。少なくとも1つの実施例では、縦方向ACCシステムは、車両1000の直前の別の車両までの距離を監視及び制御し、車両1000のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも1つの実施例では、横方向ACCシステムは、距離の維持を実施し、必要なときに車線を変更するよう車両1000に忠告する。少なくとも1つの実施例では、横方向ACCは、LC及びCWなど、他のADAS用途に関係する。
【0185】
少なくとも1つの実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクを介して、又は間接的に、ネットワーク接続を介して(たとえば、インターネットを介して)、他の車両からネットワーク・インターフェース1024及び/又は(1つ又は複数の)ワイヤレス・アンテナ1026を介して受信され得る。少なくとも1つの実施例では、直接リンクは車両間(「V2V」:vehicle-to-vehicle)通信リンクによって提供され得、間接リンクはインフラストラクチャ車両間(「I2V」:infrastructure-to-vehicle)通信リンクによって提供され得る。一般に、V2V通信は、直前の先行車両(たとえば、車両1000の直前で同じ車線にいる車両)に関する情報を提供し、I2V通信は、さらにその前の交通に関する情報を提供する。少なくとも1つの実施例では、CACCシステムは、I2V情報ソースとV2V情報ソースのいずれか又は両方を含み得る。少なくとも1つの実施例では、車両1000の前の車両の情報があれば、CACCシステムは、より信頼できるものとなり得、それは、交通の流れの円滑さを改善し、道路上での渋滞を低減する可能性を有する。
【0186】
少なくとも1つの実施例では、FCWシステムは、危険物についてドライバにアラートするように設計され、それにより、そのようなドライバは是正アクションをとり得る。少なくとも1つの実施例では、FCWシステムは、ディスプレイ、スピーカー、及び/又は振動構成要素など、ドライバ・フィードバックを提供するように電気的に結合された専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、正面カメラ及び/又は(1つ又は複数の)RADARセンサ1060を使用する。少なくとも1つの実施例では、FCWシステムは、音、視覚的警告、振動及び/又はクイック・ブレーキ・パルスなどの形態で警告を提供し得る。
【0187】
少なくとも1つの実施例では、AEBシステムは、別の車両又は他の物体との差し迫った前方衝突を検出し、指定された時間又は距離パラメータ内にドライバが是正アクションをとらない場合、自動的にブレーキをかけ得る。少なくとも1つの実施例では、AEBシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された(1つ又は複数の)正面カメラ及び/又は(1つ又は複数の)RADARセンサ1060を使用し得る。少なくとも1つの実施例では、AEBシステムが危険物を検出したとき、AEBシステムは、通常、最初に、是正アクションをとって衝突を回避するようにドライバにアラートし、そのドライバが是正アクションをとらない場合、そのAEBシステムは、予測される衝突を防ぐか、又は少なくともその衝撃を軽減するために、自動的にブレーキをかけ得る。少なくとも1つの実施例では、AEBシステムは、動的ブレーキ・サポート及び/又はクラッシュ直前ブレーキなどの技法を含み得る。
【0188】
少なくとも1つの実施例では、LDWシステムは、車両1000が車線の目印に交差したときにドライバにアラートするために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的警告を提供する。少なくとも1つの実施例では、LDWシステムは、ドライバが方向指示器をアクティブ化することなどによって意図的な車線逸脱を示すとき、アクティブ化しない。少なくとも1つの実施例では、LDWシステムは、ディスプレイ、スピーカー、及び/又は振動構成要素など、ドライバ・フィードバックを提供するように電気的に結合された専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、正面向きのカメラを使用し得る。少なくとも1つの実施例では、LKAシステムは、LDWシステムの変形形態である。少なくとも1つの実施例では、LKAシステムは、車両1000が車両1000の車線から出始めた場合に車両1000を是正するために操縦入力又はブレーキ制御を提供する。
【0189】
少なくとも1つの実施例では、BSWシステムは、自動車の死角にある車両を検出し、その車両についてドライバに警告する。少なくとも1つの実施例では、BSWシステムは、合流すること又は車線を変更することが安全ではないことを示すために、視覚的、聴覚的、及び/又は触覚的なアラートを提供し得る。少なくとも1つの実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供し得る。少なくとも1つの実施例では、BSWシステムは、ディスプレイ、スピーカー、及び/又は振動構成要素など、ドライバ・フィードバックに電気的に結合された専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、(1つ又は複数の)背面向きのカメラ及び/又は(1つ又は複数の)RADARセンサ1060を使用し得る。
【0190】
少なくとも1つの実施例では、RCTWシステムは、車両1000が後退しているときに物体が後方カメラの範囲外で検出されたとき、視覚的、聴覚的、及び/又は触覚的な通知を提供し得る。少なくとも1つの実施例では、RCTWシステムは、クラッシュを回避するために車両ブレーキがかけられることを確実にするためのAEBシステムを含む。少なくとも1つの実施例では、RCTWシステムは、ディスプレイ、スピーカー、及び/又は振動構成要素など、ドライバ・フィードバックを提供するように電気的に結合された専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、1つ又は複数の背面RADARセンサ1060を使用し得る。
【0191】
少なくとも1つの実施例では、従来のADASシステムは、偽陽性結果を出しがちなことがあり、これは、ドライバにとって迷惑であり、気が散るものであり得るが、従来のADASシステムが、ドライバにアラートし、そのドライバが、安全条件が本当に存在するかどうかを判定し、それに応じて行動することを可能にするので、通常は大したことにはならない。少なくとも1つの実施例では、車両1000自体が、矛盾する結果の場合、1次コンピュータ(たとえば、コントローラ1036のうちの第1のコントローラ)からの結果に従うのか、2次コンピュータ(たとえば、コントローラ836のうちの第2のコントローラ)からの結果に従うのかを判定する。たとえば、少なくとも1つの実施例では、ADASシステム1038は、バックアップ・コンピュータ合理性モジュールに知覚情報を提供するためのバックアップ及び/又は2次コンピュータであり得る。少なくとも1つの実施例では、バックアップ・コンピュータ合理性モニタが、ハードウェア構成要素上の冗長な多様なソフトウェアを稼働して、知覚及び動的運転タスクの障害を検出し得る。少なくとも1つの実施例では、ADASシステム1038からの出力は、監督MCU(supervisory MCU)に提供され得る。少なくとも1つの実施例では、1次コンピュータからの出力と2次コンピュータからの出力とが矛盾する場合、監督MCUが、安全な動作を確実にするために矛盾をどのように調和させるかを決定する。
【0192】
少なくとも1つの実施例では、1次コンピュータは、選定された結果における1次コンピュータの信頼性を示す信頼性スコアを監督MCUに提供するように構成され得る。少なくとも1つの実施例では、その信頼性スコアがしきい値を超える場合、その2次コンピュータが、矛盾する又は一貫性のない結果を提供するかどうかにかかわらず、監督MCUは、その1次コンピュータの指示に従い得る。少なくとも1つの実施例では、信頼性スコアがしきい値を満たさない場合、及び1次コンピュータと2次コンピュータとが異なる結果(たとえば、矛盾)を示す場合、監督MCUは、コンピュータ間で調停して、適切な帰結を決定し得る。
【0193】
少なくとも1つの実施例では、監督MCUは、2次コンピュータが誤アラームを提供する条件を、1次コンピュータからの出力と2次コンピュータからの出力とに少なくとも部分的に基づいて決定するように訓練及び構成された(1つ又は複数の)ニューラル・ネットワークを稼働するように構成され得る。少なくとも1つの実施例では、監督MCU中の(1つ又は複数の)ニューラル・ネットワークは、2次コンピュータの出力がいつ信用でき得るかと、それがいつ信用できないかとを学習し得る。たとえば、少なくとも1つの実施例では、その2次コンピュータがRADARベースのFCWシステムであるとき、その監督MCU中の(1つ又は複数の)ニューラル・ネットワークは、アラームをトリガする排水溝格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムがいつ識別しているかを学習し得る。少なくとも1つの実施例では、2次コンピュータがカメラ・ベースのLDWシステムであるとき、監督MCU中のニューラル・ネットワークは、自転車又は歩行者が存在し、車線逸脱が実際には最も安全な操作であるときにLDWを無効にするように学習し得る。少なくとも1つの実施例では、監督MCUは、(1つ又は複数の)ニューラル・ネットワークを、関連するメモリとともに稼働するのに好適なDLA又はGPUのうちの少なくとも1つを含み得る。少なくとも1つの実施例では、監督MCUは、(1つ又は複数の)SoC1004の構成要素を備え、及び/又はその構成要素として含められ得る。
【0194】
少なくとも1つの実施例では、ADASシステム1038は、コンピュータ・ビジョンの従来のルールを使用してADAS機能性を実施する2次コンピュータを含み得る。少なくとも1つの実施例では、その2次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-then)を使用し得、監督MCU中の(1つ又は複数の)ニューラル・ネットワークの存在が、信頼性、安全性及び性能を改善し得る。たとえば、少なくとも1つの実施例では、多様な実装及び意図的な非同一性が、システム全体を、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)機能性によって引き起こされる障害に対して、より障害耐性のあるものにする。たとえば、少なくとも1つの実施例では、1次コンピュータ上で稼働しているソフトウェアにおいてソフトウェア・バグ又はエラーがあり、2次コンピュータ上で稼働している非同一のソフトウェア・コードが、一貫性のある全体的な結果を提供する場合、監督MCUは、全体的な結果が正しく、その1次コンピュータ上のソフトウェア又はハードウェアにおけるバグが重大なエラーを引き起こしていないという、より高い信頼性を有し得る。
【0195】
少なくとも1つの実施例では、ADASシステム1038の出力は、1次コンピュータの知覚ブロック及び/又は1次コンピュータの動的運転タスク・ブロックにフィードされ得る。たとえば、少なくとも1つの実施例では、ADASシステム1038が、直前の物体により正面クラッシュ警告を示す場合、知覚ブロックは、物体を識別するときにこの情報を使用し得る。少なくとも1つの実施例では、2次コンピュータは、本明細書で説明されるように、訓練された、したがって偽陽性のリスクを低減する、それ自体のニューラル・ネットワークを有し得る。
【0196】
少なくとも1つの実施例では、車両1000は、インフォテイメントSoC1030(たとえば、車両内インフォテイメント・システム(IVI:in-vehicle infotainment))をさらに含み得る。SoCとして示され、説明されるが、インフォテイメント・システムSoC1030は、少なくとも1つの実施例では、SoCでないことがあり、限定はしないが、2つ又はそれ以上の個別の構成要素を含み得る。少なくとも1つの実施例では、インフォテイメントSoC1030は、限定はしないが、ハードウェアとソフトウェアとの組合せを含み得、この組合せは、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続性(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報などの車両関係情報など)を車両1000に提供するために使用され得る。たとえば、インフォテイメントSoC1030は、ラジオ、ディスク・プレーヤ、ナビゲーション・システム、ビデオ・プレーヤ、USB及びBluetooth接続性、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー・ボイス制御、ヘッドアップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1034、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/又はシステムを制御し、及び/又はそれらと対話するための)制御パネル、及び/又は他の構成要素を含むことができる。少なくとも1つの実施例では、インフォテイメントSoC1030は、ADASシステム1038からの情報、計画された車両操作、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報など、(たとえば、視覚的及び/又は聴覚的な)情報を車両1000の(1人又は複数の)ユーザに提供するために、さらに使用され得る。
【0197】
少なくとも1つの実施例では、インフォテイメントSoC1030は、任意の量及びタイプのGPU機能性を含み得る。少なくとも1つの実施例では、インフォテイメントSoC1030は、バス1002を介して、車両1000の他のデバイス、システム、及び/又は構成要素と通信し得る。少なくとも1つの実施例では、インフォテイメントSoC1030は監督MCUに結合され得、それにより、(1つ又は複数の)1次コントローラ1036(たとえば、車両1000の1次及び/又はバックアップ・コンピュータ)が故障した場合、インフォテイメント・システムのGPUが、いくつかの自己運転機能を実施し得る。少なくとも1つの実施例では、インフォテイメントSoC1030は、本明細書で説明されるように、車両1000を運転手-安全停止モードにし得る。
【0198】
少なくとも1つの実施例では、車両1000は、計器クラスタ1032(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)をさらに含み得る。少なくとも1つの実施例では、計器クラスタ1032は、限定はしないが、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。少なくとも1つの実施例では、計器クラスタ1032は、限定はしないが、スピードメータ、燃料レベル、油圧、タコメータ、オドメータ、方向インジケータ、シフトレバー位置インジケータ、(1つ又は複数の)シート・ベルト警告灯、(1つ又は複数の)駐車ブレーキ警告灯、(1つ又は複数の)エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計装セットを含み得る。いくつかの実例では、情報は表示され、及び/又は、インフォテイメントSoC1030と計器クラスタ1032との間で共有され得る。少なくとも1つの実施例では、計器クラスタ1032は、インフォテイメントSoC1030の一部として含められ得、その逆もまた同様である。
【0199】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図10Cのシステムにおいて使用され得る。
【0200】
図10Dは、少なくとも1つの実施例による、(1つ又は複数の)クラウド・ベースのサーバと
図10Aの自律車両1000との間の通信のためのシステムの図である。少なくとも1つの実施例では、システムは、限定はしないが、(1つ又は複数の)サーバ1078と、(1つ又は複数の)ネットワーク1090と、車両1000を含む任意の数及びタイプの車両とを含み得る。少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、限定はしないが、(総称して、本明細書ではGPU1084と呼ばれる)複数のGPU1084(A)~1084(H)、(総称して、本明細書ではPCIeスイッチ1082と呼ばれる)PCIeスイッチ1082(A)~1082(D)、及び/又は(総称して、本明細書ではCPU1080と呼ばれる)CPU1080(A)~1080(B)を含み得る。少なくとも1つの実施例では、GPU1084と、CPU1080と、PCIeスイッチ1082とは、たとえば、限定はしないが、NVIDIAによって開発されたNVLinkインターフェース1088及び/又はPCIe接続1086など、高速相互接続で相互接続され得る。少なくとも1つの実施例では、GPU1084は、NVLink及び/又はNVSwitch SoCを介して接続され、GPU1084とPCIeスイッチ1082とは、PCIe相互接続を介して接続される。8つのGPU1084と、2つのCPU1080と、4つのPCIeスイッチ1082とが示されているが、これは限定するものではない。少なくとも1つの実施例では、(1つ又は複数の)サーバ1078の各々は、限定はしないが、任意の数のGPU1084、CPU1080、及び/又はPCIeスイッチ1082を任意の組合せで含み得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、各々、8つ、16個、32個、及び/又はそれ以上のGPU1084を含むことができる。
【0201】
少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、最近始まった道路工事など、予想外の又は変更された道路状態(road condition)を示す画像を表す画像データを、(1つ又は複数の)ネットワーク1090を介して、車両から受信し得る。少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、更新された又はそうではないニューラル・ネットワーク1092、及び/或いは、限定はしないが、交通及び道路状態に関する情報を含む、地図情報1094を、(1つ又は複数の)ネットワーク1090を介して、車両に送信し得る。少なくとも1つの実施例では、地図情報1094の更新は、限定はしないが、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1022についての更新を含み得る。少なくとも1つの実施例では、ニューラル・ネットワーク1092及び/又は地図情報1094は、環境中の任意の数の車両から受信されたデータにおいて表された新しい訓練及び/又は経験から、並びに/或いは、データ・センタにおいて(たとえば、(1つ又は複数の)サーバ1078及び/又は他のサーバを使用して)実施された訓練に少なくとも部分的に基づいて、生じていることがある。
【0202】
少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、訓練データに少なくとも部分的に基づいて機械学習モデル(たとえば、ニューラル・ネットワーク)を訓練するために使用され得る。少なくとも1つの実施例では、訓練データは、車両によって生成され得、及び/又はシミュレーションにおいて(たとえば、ゲーム・エンジンを使用して)生成され得る。少なくとも1つの実施例では、任意の量の訓練データが、(たとえば、関連するニューラル・ネットワークが教師あり学習から恩恵を受ける場合)タグ付けされ、及び/又は他の前処理を受ける。少なくとも1つの実施例では、任意の量の訓練データが、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合)タグ付けされず、及び/又は前処理されない。少なくとも1つの実施例では、機械学習モデルが訓練されると、機械学習モデルは、車両によって使用(たとえば、(1つ又は複数の)ネットワーク1090を介して車両に送信)され得、及び/又は、機械学習モデルは、車両をリモートで監視するために(1つ又は複数の)サーバ1078によって使用され得る。
【0203】
少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、車両からデータを受信し、リアルタイム・インテリジェント推論のために最新のリアルタイム・ニューラル・ネットワークにデータを適用し得る。少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、(1つ又は複数の)GPU1084によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含み得る。しかしながら、少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、CPUによって動くデータ・センタを使用する深層学習インフラストラクチャを含み得る。
【0204】
少なくとも1つの実施例では、(1つ又は複数の)サーバ1078の深層学習インフラストラクチャは、高速リアルタイム推論が可能であり得、その能力を使用して、車両1000中のプロセッサ、ソフトウェア、及び/又は関連するハードウェアの健全性を評価及び確認し得る。たとえば、少なくとも1つの実施例では、深層学習インフラストラクチャは、一連の画像、及び/又は(たとえば、コンピュータ・ビジョン及び/又は他の機械学習物体分類技法を介して)その一連の画像において車両1000が位置を特定した物体など、周期的な更新を車両1000から受信し得る。少なくとも1つの実施例では、深層学習インフラストラクチャは、それ自体のニューラル・ネットワークを稼働して物体を識別し、それらを、車両1000によって識別された物体と比較し得、結果がマッチせず、車両1000中のAIが故障していると深層学習インフラストラクチャが結論付けた場合、(1つ又は複数の)サーバ1078は、車両1000のフェイル・セーフ・コンピュータに、制御を掌握し、乗客に通知し、安全な駐車操作を完了するように命令する信号を、車両1000に送信し得る。
【0205】
少なくとも1つの実施例では、(1つ又は複数の)サーバ1078は、(1つ又は複数の)GPU1084と、1つ又は複数のプログラマブル推論アクセラレータ(たとえば、NVIDIAのTensorRT3デバイス)とを含み得る。少なくとも1つの実施例では、GPUによって動くサーバと推論の加速との組合せが、リアルタイム応答を可能にし得る。性能がそれほど重要ではない場合など、少なくとも1つの実施例では、CPU、FPGA、及び他のプロセッサによって動くサーバが、推論のために使用され得る。少なくとも1つの実施例では、1つ又は複数の実施例を実施するために、(1つ又は複数の)ハードウェア構造715が使用される。ハードウェア構造(x)715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。
【0206】
少なくとも1つの実施例では、
図10A~
図10Dに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図10A~
図10Dに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図10A~
図10Dに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0207】
コンピュータ・システム
図11は、例示的なコンピュータ・システムを示すブロック図であり、例示的なコンピュータ・システムは、少なくとも1つの実施例による、命令を実行するための実行ユニットを含み得るプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SOC)又はそれらの何らかの組合せをもつシステムであり得る。少なくとも1つの実施例では、コンピュータ・システム1100は、限定はしないが、本明細書で説明される実施例などにおいて、本開示による、プロセス・データのためのアルゴリズムを実施するための論理を含む実行ユニットを採用するための、プロセッサ1102などの構成要素を含み得る。少なくとも1つの実施例では、コンピュータ・システム1100は、カリフォルニア州サンタクララのIntel Corporationから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含み得るが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含む)他のシステムも使用され得る。少なくとも1つの実施例では、コンピュータ・システム1100は、ワシントン州レドモンドのMicrosoft Corporationから入手可能なWINDOWS(登録商標)オペレーティング・システムのあるバージョンを実行し得るが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースも使用され得る。
【0208】
実施例は、ハンドヘルド・デバイス及び組み込みアプリケーションなど、他のデバイスにおいて使用され得る。ハンドヘルド・デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistant)、及びハンドヘルドPCを含む。少なくとも1つの実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computer)、セット・トップ・ボックス、ネットワーク・ハブ、ワイド・エリア・ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも1つの実施例による1つ又は複数の命令を実施し得る任意の他のシステムを含み得る。
【0209】
少なくとも1つの実施例では、コンピュータ・システム1100は、限定はしないが、プロセッサ1102を含み得、プロセッサ1102は、限定はしないが、本明細書で説明される技法による機械学習モデル訓練及び/又は推論を実施するための1つ又は複数の実行ユニット1108を含み得る。少なくとも1つの実施例では、コンピュータ・システム1100は、シングル・プロセッサ・デスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1100は、マルチプロセッサ・システムであり得る。少なくとも1つの実施例では、プロセッサ1102は、限定はしないが、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は、たとえばデジタル信号プロセッサなど、任意の他のプロセッサ・デバイスを含み得る。少なくとも1つの実施例では、プロセッサ1102は、プロセッサ・バス1110に結合され得、プロセッサ・バス1110は、プロセッサ1102とコンピュータ・システム1100中の他の構成要素との間でデータ信号を送信し得る。
【0210】
少なくとも1つの実施例では、プロセッサ1102は、限定はしないが、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1104を含み得る。少なくとも1つの実施例では、プロセッサ1102は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ1102の外部に存在し得る。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せをも含み得る。少なくとも1つの実施例では、レジスタ・ファイル1106は、限定はしないが、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタを含む様々なレジスタに、異なるタイプのデータを記憶し得る。
【0211】
少なくとも1つの実施例では、限定はしないが、整数演算及び浮動小数点演算を実施するための論理を含む実行ユニット1108も、プロセッサ1102中に存在し得る。少なくとも1つの実施例では、プロセッサ1102は、いくつかのマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)をも含み得る。少なくとも1つの実施例では、実行ユニット1108は、パック命令セット1109に対処するための論理を含み得る。少なくとも1つの実施例では、パック命令セット1109を、命令を実行するための関連する回路要素とともに汎用プロセッサの命令セットに含めることによって、多くのマルチメディア・アプリケーションによって使用される演算が、プロセッサ1102中のパック・データを使用して実施され得る。少なくとも1つの実施例では、多くのマルチメディア・アプリケーションが、パック・データの演算を実施するためにプロセッサのデータ・バスの全幅を使用することによって加速され、より効率的に実行され得、これは、一度に1つのデータ要素ずつ1つ又は複数の演算を実施するために、そのプロセッサのデータ・バスにわたってより小さい単位のデータを転送する必要をなくし得る。
【0212】
少なくとも1つの実施例では、実行ユニット1108はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用され得る。少なくとも1つの実施例では、コンピュータ・システム1100は、限定はしないが、メモリ1120を含み得る。少なくとも1つの実施例では、メモリ1120は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスであり得る。少なくとも1つの実施例では、メモリ1120は、プロセッサ1102によって実行され得るデータ信号によって表される(1つ又は複数の)命令1119及び/又はデータ1121を記憶し得る。
【0213】
少なくとも1つの実施例では、システム論理チップが、プロセッサ・バス1110及びメモリ1120に結合され得る。少なくとも1つの実施例では、システム論理チップは、限定はしないが、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1116を含み得、プロセッサ1102は、プロセッサ・バス1110を介してMCH1116と通信し得る。少なくとも1つの実施例では、MCH1116は、命令及びデータ・ストレージのための、並びにグラフィックス・コマンド、データ及びテクスチャのストレージのための、高帯域幅メモリ経路1118をメモリ1120に提供し得る。少なくとも1つの実施例では、MCH1116は、プロセッサ1102と、メモリ1120と、コンピュータ・システム1100中の他の構成要素との間でデータ信号をダイレクトし、プロセッサ・バス1110と、メモリ1120と、システムI/Oインターフェース1122との間でデータ信号をブリッジし得る。少なくとも1つの実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供し得る。少なくとも1つの実施例では、MCH1116は、高帯域幅メモリ経路1118を通してメモリ1120に結合され得、グラフィックス/ビデオ・カード1112は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1114を介してMCH1116に結合され得る。
【0214】
少なくとも1つの実施例では、コンピュータ・システム1100は、MCH1116をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1130に結合するためのプロプライエタリ・ハブ・インターフェース・バスとしてシステムI/Oインターフェース1122を使用し得る。少なくとも1つの実施例では、ICH1130は、ローカルI/Oバスを介していくつかのI/Oデバイスに直接接続を提供し得る。少なくとも1つの実施例では、ローカルI/Oバスは、限定はしないが、周辺機器をメモリ1120、チップセット、及びプロセッサ1102に接続するための高速I/Oバスを含み得る。実例は、限定はしないが、オーディオ・コントローラ1129と、ファームウェア・ハブ(「フラッシュBIOS」)1128と、ワイヤレス・トランシーバ1126と、データ・ストレージ1124と、ユーザ入力及びキーボード・インターフェース1125を含んでいるレガシーI/Oコントローラ1123と、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)ポートなどのシリアル拡張ポート1127と、ネットワーク・コントローラ1134とを含み得る。少なくとも1つの実施例では、データ・ストレージ1124は、ハード・ディスク・ドライブ、フロッピー・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備え得る。
【0215】
少なくとも1つの実施例では、
図11は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、
図11は、例示的なSoCを示し得る。少なくとも1つの実施例では、
図11に示されているデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、コンピュータ・システム1100の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続される。
【0216】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図11のシステムにおいて使用され得る。
【0217】
少なくとも1つの実施例では、
図11に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図11に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図11に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0218】
図12は、少なくとも1つの実施例による、プロセッサ1210を利用するための電子デバイス1200を示すブロック図である。少なくとも1つの実施例では、電子デバイス1200は、たとえば、限定はしないが、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであり得る。
【0219】
少なくとも1つの実施例では、電子デバイス1200は、限定はしないが、任意の好適な数又は種類の構成要素、周辺機器、モジュール、又はデバイスに通信可能に結合されたプロセッサ1210を含み得る。少なくとも1つの実施例では、プロセッサ1210は、I
2Cバス、システム管理バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル周辺インターフェース(「SPI」:Serial Peripheral Interface)、高精細度オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3など)、又はユニバーサル非同期受信機/送信機(「UART」:Universal Asynchronous Receiver/Transmitter)バスなど、バス又はインターフェースを使用して結合される。少なくとも1つの実施例では、
図12は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、
図12は、例示的なSoCを示し得る。少なくとも1つの実施例では、
図12に示されているデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、
図12の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続される。
【0220】
少なくとも1つの実施例では、
図12は、ディスプレイ1224、タッチ・スクリーン1225、タッチ・パッド1230、ニア・フィールド通信ユニット(「NFC」:Near Field Communication)1245、センサ・ハブ1240、熱センサ1246、エクスプレス・チップセット(「EC」:Express Chipset)1235、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1238、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1222、DSP1260、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)又はハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1220、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network)1250、Bluetoothユニット1252、ワイヤレス・ワイド・エリア・ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network)1256、全地球測位システム(GPS:Global Positioning System)ユニット1255、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1254、及び/或いは、たとえばLPDDR3規格において実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1215を含み得る。これらの構成要素は、各々、任意の好適な様式で実装され得る。
【0221】
少なくとも1つの実施例では、本明細書で説明される構成要素を通して、他の構成要素がプロセッサ1210に通信可能に結合され得る。少なくとも1つの実施例では、加速度計1241と、周囲光センサ(「ALS」:Ambient Light Sensor)1242と、コンパス1243と、ジャイロスコープ1244とが、センサ・ハブ1240に通信可能に結合され得る。少なくとも1つの実施例では、熱センサ1239と、ファン1237と、キーボード1236と、タッチ・パッド1230とが、EC1235に通信可能に結合され得る。少なくとも1つの実施例では、スピーカー1263と、ヘッドフォン1264と、マイクロフォン(「mic」)1265とが、オーディオ・ユニット(「オーディオ・コーデック及びクラスDアンプ」)1262に通信可能に結合され得、オーディオ・ユニット1262は、DSP1260に通信可能に結合され得る。少なくとも1つの実施例では、オーディオ・ユニット1262は、たとえば、限定はしないが、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスD増幅器を含み得る。少なくとも1つの実施例では、SIMカード(「SIM」)1257は、WWANユニット1256に通信可能に結合され得る。少なくとも1つの実施例では、WLANユニット1250及びBluetoothユニット1252などの構成要素、並びにWWANユニット1256は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)において実装され得る。
【0222】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図12のシステムにおいて使用され得る。
【0223】
少なくとも1つの実施例では、
図12に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図12に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図12に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0224】
図13は、少なくとも1つの実施例による、コンピュータ・システム1300を示す。少なくとも1つの実施例では、コンピュータ・システム1300は、本開示全体を通して説明される様々なプロセス及び方法を実装するように構成される。
【0225】
少なくとも1つの実施例では、コンピュータ・システム1300は、限定はしないが、少なくとも1つの中央処理ユニット(「CPU」)1302を含み、少なくとも1つの中央処理ユニット1302は、PCI(「Peripheral Component Interconnect」:周辺構成要素相互接続)、周辺構成要素相互接続エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、或いは任意の他のバス又は(1つ又は複数の)ポイントツーポイント通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1310に接続される。少なくとも1つの実施例では、コンピュータ・システム1300は、限定はしないが、メイン・メモリ1304と(たとえば、ハードウェア、ソフトウェア、又はそれらの組合せとして実装される)制御論理とを含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形態をとり得るメイン・メモリ1304に記憶される。少なくとも1つの実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1322は、コンピュータ・システム1300とともに他のシステムからデータを受信し、他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークへのインターフェースを提供する。
【0226】
少なくとも1つの実施例では、コンピュータ・システム1300は、少なくとも1つの実施例では、限定はしないが、入力デバイス1308と、並列処理システム1312と、ディスプレイ・デバイス1306とを含み、ディスプレイ・デバイス1306は、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)ディスプレイ、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装され得る。少なくとも1つの実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1308から受信される。少なくとも1つの実施例では、本明細書で説明される各モジュールは、処理システムを形成するために単一の半導体プラットフォーム上にあり得る。
【0227】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図13のシステムにおいて使用され得る。
【0228】
少なくとも1つの実施例では、
図13に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図13に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図13に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0229】
図14は、少なくとも1つの実施例による、コンピュータ・システム1400を示す。少なくとも1つの実施例では、コンピュータ・システム1400は、限定はしないが、コンピュータ1410とUSBスティック1420とを含み得る。少なくとも1つの実施例では、コンピュータ1410は、限定はしないが、任意の数及びタイプのプロセッサ(図示せず)と、メモリ(図示せず)とを含み得る。少なくとも1つの実施例では、コンピュータ1410は、限定はしないが、サーバと、クラウド・インスタンスと、ラップトップと、デスクトップ・コンピュータとを含む。
【0230】
少なくとも1つの実施例では、USBスティック1420は、限定はしないが、処理ユニット1430と、USBインターフェース1440と、USBインターフェース論理1450とを含む。少なくとも1つの実施例では、処理ユニット1430は、命令を実行することが可能な任意の命令実行システム、装置、又はデバイスであり得る。少なくとも1つの実施例では、処理ユニット1430は、限定はしないが、任意の数及びタイプの処理コア(図示せず)を含み得る。少なくとも1つの実施例では、処理ユニット1430は、機械学習に関連する任意の量及びタイプの演算を実施するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも1つの実施例では、処理ユニット1430は、機械学習推論演算を実施するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも1つの実施例では、処理ユニット1430は、機械視覚及び機械学習推論演算を実施するように最適化された視覚処理ユニット(「VPU」)である。少なくとも1つの実施例では、処理ユニット1430は、データ(たとえば、ネットワークを介して受信されるデータ)のストリームを処理することと、そのデータを1つ又は複数の他のプロセッサ(たとえば、限定はしないが、たとえば、GPUのメモリ)に直接ダイレクトすることとを行うために最適化されたデータ処理ユニット(「DPU」)を含み得る。1つ又は複数の実施例では、DPUは、ネットワーク・インターフェース・デバイスと統合され得る。
【0231】
少なくとも1つの実施例では、USBインターフェース1440は、任意のタイプのUSBコネクタ又はUSBソケットであり得る。たとえば、少なくとも1つの実施例では、USBインターフェース1440は、データ及び電力のためのUSB3.0 Type-Cソケットである。少なくとも1つの実施例では、USBインターフェース1440は、USB3.0 Type-Aコネクタである。少なくとも1つの実施例では、USBインターフェース論理1450は、処理ユニット1430がUSBコネクタ1440を介してデバイス(たとえば、コンピュータ1410)とインターフェースすることを可能にする任意の量及びタイプの論理を含み得る。
【0232】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図14のシステムにおいて使用され得る。
【0233】
少なくとも1つの実施例では、
図14に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図14に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図14に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0234】
図15Aは、複数のGPU1510(1)~1510(N)が、高速リンク1540(1)~1540(N)(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチコア・プロセッサ1505(1)~1505(M)に通信可能に結合された例示的なアーキテクチャを示す。少なくとも1つの実施例では、高速リンク1540(1)~1540(N)は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。少なくとも1つの実施例では、限定はしないが、PCIe4.0又は5.0及びNVLink2.0を含む様々な相互接続プロトコルが使用され得る。様々な図において、「N」及び「M」は、正の整数を表し、その値は図ごとに異なり得る。
【0235】
さらに、少なくとも1つの実施例では、GPU1510のうちの2つ又はそれ以上は、高速リンク1529(1)~1529(2)を介して相互接続され、高速リンク1529(1)~1529(2)は、高速リンク1540(1)~1540(N)のために使用されたものと同様の又は異なるプロトコル/リンクを使用して実装され得る。同様に、マルチコア・プロセッサ1505のうちの2つ又はそれ以上は、高速リンク1528を介して接続され得、高速リンク1528は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上において動作する対称型マルチプロセッサ(SMP:symmetric muti-processor)バスであり得る。代替的に、
図15Aに示されている様々なシステム構成要素間のすべての通信は、同様のプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現され得る。
【0236】
少なくとも1つの実施例では、各マルチコア・プロセッサ1505は、それぞれ、メモリ相互接続1526(1)~1526(M)を介してプロセッサ・メモリ1501(1)~1501(M)に通信可能に結合され、各GPU1510(1)~1510(N)は、それぞれ、GPUメモリ相互接続1550(1)~1550(N)を介してGPUメモリ1520(1)~1520(N)に通信可能に結合される。少なくとも1つの実施例では、メモリ相互接続1526及び1550は、同様の又は異なるメモリ・アクセス技術を利用し得る。実例として、限定はしないが、プロセッサ・メモリ1501(1)~1501(M)とGPUメモリ1520とは、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであり得、及び/或いは3D XPoint又はNano-Ramなどの不揮発性メモリであり得る。少なくとも1つの実施例では、プロセッサ・メモリ1501のある部分は揮発性メモリであり得、別の部分は、(たとえば、2レベル・メモリ(2LM:two-level memory)階層を使用する)不揮発性メモリであり得る。
【0237】
本明細書で説明されるように、様々なマルチコア・プロセッサ1505及びGPU1510は、それぞれ、特定のメモリ1501、1520に物理的に結合され得るが、及び/又は(「実効アドレス」空間とも呼ばれる)仮想システム・アドレス空間が様々な物理メモリ間で分散される統一メモリ・アーキテクチャが実装され得る。たとえば、プロセッサ・メモリ1501(1)~1501(M)は、各々、64GBのシステム・メモリ・アドレス空間を備え得、GPUメモリ1520(1)~1520(N)は、各々、32GBのシステム・メモリ・アドレス空間を備え得、これは、M=2及びN=4であるとき、合計256GBのアドレス指定可能なメモリを生じる。N及びMについて他の値が可能である。
【0238】
図15Bは、1つの例示的な実施例による、マルチコア・プロセッサ1507とグラフィックス加速モジュール1546との間の相互接続について追加の詳細を示す。少なくとも1つの実施例では、グラフィックス加速モジュール1546は、高速リンク1540(たとえば、PCIeバス、NVLinkなど)を介してプロセッサ1507に結合されるライン・カードに集積された1つ又は複数のGPUチップを含み得る。少なくとも1つの実施例では、グラフィックス加速モジュール1546は、代替的に、プロセッサ1507をもつパッケージ又はチップに集積され得る。
【0239】
少なくとも1つの実施例では、プロセッサ1507は、複数のコア1560A~1560Dを含み、その各々が、トランスレーション・ルックアサイド・バッファ(「TLB」:translation lookaside buffer)1561A~1561Dと、1つ又は複数のキャッシュ1562A~1562Dとをもつ。少なくとも1つの実施例では、コア1560A~1560Dは、命令を実行し、データを処理するための、示されていない様々な他の構成要素を含み得る。少なくとも1つの実施例では、キャッシュ1562A~1562Dは、レベル1(L1)キャッシュとレベル2(L2)キャッシュとを備え得る。さらに、1つ又は複数の共有キャッシュ1556が、キャッシュ1562A~1562D中に含まれ、コア1560A~1560Dのセットによって共有され得る。たとえば、プロセッサ1507の一実施例は、24個のコアを含み、その各々が、それ自体のL1キャッシュと、12個の共有L2キャッシュと、12個の共有L3キャッシュとをもつ。この実施例では、1つ又は複数のL2及びL3キャッシュが、2つの隣接するコアによって共有される。少なくとも1つの実施例では、プロセッサ1507とグラフィックス加速モジュール1546とは、システム・メモリ1514と接続し、システム・メモリ1514は、
図15Aのプロセッサ・メモリ1501(1)~1501(M)を含み得る。
【0240】
少なくとも1つの実施例では、様々なキャッシュ1562A~1562D、1556及びシステム・メモリ1514に記憶されたデータ及び命令について、コヒーレンス・バス1564上のコア間通信を介して、コヒーレンシが維持される。少なくとも1つの実施例では、たとえば、各キャッシュは、特定のキャッシュ・ラインに対する検出された読取り又は書込みに応答して、コヒーレンス・バス1564を介して通信するために、それに関連するキャッシュ・コヒーレンシ論理/回路要素を有し得る。少なくとも1つの実施例では、キャッシュ・アクセスをスヌープするために、コヒーレンス・バス1564を介してキャッシュ・スヌーピング・プロトコルが実装される。
【0241】
少なくとも1つの実施例では、プロキシ回路1525が、グラフィックス加速モジュール1546をコヒーレンス・バス1564に通信可能に結合し、これは、グラフィックス加速モジュール1546がコア1560A~1560Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加することを可能にする。特に、少なくとも1つの実施例では、インターフェース1535は、高速リンク1540を介してプロキシ回路1525への接続性を提供し、インターフェース1537は、グラフィックス加速モジュール1546を高速リンク1540に接続する。
【0242】
少なくとも1つの実施例では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546の複数のグラフィックス処理エンジン1531(1)~1531(N)の代わりに、キャッシュ管理、メモリ・アクセス、コンテキスト管理、及び割込み管理サービスを提供する。少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、各々、別個のグラフィックス処理ユニット(GPU)を備え得る。少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、代替的に、GPU内に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びblitエンジンなど、異なるタイプのグラフィックス処理エンジンを備え得る。少なくとも1つの実施例では、グラフィックス加速モジュール1546は、複数のグラフィックス処理エンジン1531(1)~1531(N)をもつGPUであり得、或いは、グラフィックス処理エンジン1531(1)~1531(N)は、共通のパッケージ、ライン・カード、又はチップに集積された個々のGPUであり得る。
【0243】
少なくとも1つの実施例では、アクセラレータ統合回路1536は、(実効-実(effective-to-real)メモリ・トランスレーションとも呼ばれる)仮想-物理メモリ・トランスレーションなど、様々なメモリ管理機能を実施するためのメモリ管理ユニット(MMU)1539と、システム・メモリ1514にアクセスするためのメモリ・アクセス・プロトコルとを含む。少なくとも1つの実施例では、MMU1539は、仮想/実効-物理/実アドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)をも含み得る。少なくとも1つの実施例では、キャッシュ1538は、グラフィックス処理エンジン1531(1)~1531(N)による効率的なアクセスのために、コマンド及びデータを記憶することができる。少なくとも1つの実施例では、キャッシュ1538及びグラフィックス・メモリ1533(1)~1533(M)に記憶されたデータは、場合によってはフェッチ・ユニット1544を使用して、コア・キャッシュ1562A~1562D、1556及びシステム・メモリ1514とコヒーレントに保たれる。述べたように、これは、キャッシュ1538及びメモリ1533(1)~1533(M)の代わりにプロキシ回路1525を介して(たとえば、プロセッサ・キャッシュ1562A~1562D、1556上のキャッシュ・ラインの修正/アクセスに関係するアップデートをキャッシュ1538に送出し、キャッシュ1538からアップデートを受信して)実現され得る。
【0244】
少なくとも1つの実施例では、レジスタ1545のセットが、グラフィックス処理エンジン1531(1)~1531(N)によって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1548が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1548は、コンテキスト切替え中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元動作を実施し得る(たとえば、第2のスレッドがグラフィックス処理エンジンによって実行され得るように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト切替え時に、コンテキスト管理回路1548は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリ中の指定領域に記憶し得る。コンテキスト管理回路1548は、次いで、コンテキストに戻るときにレジスタ値を復元し得る。少なくとも1つの実施例では、割込み管理回路1547は、システム・デバイスから受信された割込みを受信及び処理する。
【0245】
少なくとも1つの実施例では、グラフィックス処理エンジン1531からの仮想/実効アドレスは、MMU1539によってシステム・メモリ1514中の実/物理アドレスにトランスレートされる。少なくとも1つの実施例では、アクセラレータ統合回路1536は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1546及び/又は他のアクセラレータ・デバイスをサポートする。少なくとも1つの実施例では、グラフィックス・アクセラレータ・モジュール1546は、プロセッサ1507上で実行される単一のアプリケーションに専用であり得るか、又は、複数のアプリケーション間で共有され得る。少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)のリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも1つの実施例では、リソースは、「スライス」に細分化され得、スライスは、処理要件、並びにVM及び/又はアプリケーションに関連する優先度に基づいて、異なるVM及び/又はアプリケーションに割り振られる。
【0246】
少なくとも1つの実施例では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリ・キャッシュ・サービスを提供する。さらに、少なくとも1つの実施例では、アクセラレータ統合回路1536は、グラフィックス処理エンジン1531(1)~1531(N)の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供し得る。
【0247】
少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)のハードウェア・リソースは、ホスト・プロセッサ1507によって見られる実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。少なくとも1つの実施例では、アクセラレータ統合回路1536の1つの機能は、グラフィックス処理エンジン1531(1)~1531(N)がシステムにとって独立したユニットに見えるように、それらを物理的に分離することである。
【0248】
少なくとも1つの実施例では、1つ又は複数のグラフィックス・メモリ1533(1)~1533(M)は、それぞれ、グラフィックス処理エンジン1531(1)~1531(N)の各々に結合され、N=Mである。少なくとも1つの実施例では、グラフィックス・メモリ1533(1)~1533(M)は、グラフィックス処理エンジン1531(1)~1531(N)の各々によって処理されている命令及びデータを記憶する。少なくとも1つの実施例では、グラフィックス・メモリ1533(1)~1533(M)は、(積層DRAMを含む)DRAM、GDDRメモリ(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであり得、及び/或いは3D XPoint又はNano-Ramなどの不揮発性メモリであり得る。
【0249】
少なくとも1つの実施例では、高速リンク1540を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1533(1)~1533(M)に記憶されるデータが、グラフィックス処理エンジン1531(1)~1531(N)によって最も頻繁に使用されることになり、好ましくはコア1560A~1560Dによって使用されない(少なくとも頻繁には使用されない)データであることを確実にするために、バイアス技法が使用され得る。同様に、少なくとも1つの実施例では、バイアス機構は、コアによって必要とされる(好ましくは、グラフィックス処理エンジン1531(1)~1531(N)によって必要とされない)データを、キャッシュ1562A~1562D、1556及びシステム・メモリ1514内に保つことを試みる。
【0250】
図15Cは、アクセラレータ統合回路1536がプロセッサ1507内に組み込まれる別の例示的な実施例を示す。この実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、(この場合も、任意の形態のバス又はインターフェース・プロトコルであり得る)インターフェース1537及びインターフェース1535を介したアクセラレータ統合回路1536への高速リンク1540上で直接通信する。少なくとも1つの実施例では、アクセラレータ統合回路1536は、
図15Bに関して説明されたものと同様の動作を実施し得るが、コヒーレンス・バス1564及びキャッシュ1562A~1562D、1556に近接していることを考えると、潜在的には、より高いスループットにおいて実施し得る。少なくとも1つの実施例は、アクセラレータ統合回路は、(グラフィックス加速モジュール仮想化のない)専用プロセス・プログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、それらのプログラミング・モデルは、アクセラレータ統合回路1536によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1546によって制御されるプログラミング・モデルとを含み得る。
【0251】
少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用であり得る。少なくとも1つの実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1531(1)~1531(N)に集中させ、VM/パーティション内で仮想化を提供することができる。
【0252】
少なくとも1つの実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、複数のVM/アプリケーション・パーティションによって共有され得る。少なくとも1つの実施例では、共有モデルは、システム・ハイパーバイザを使用して、グラフィックス処理エンジン1531(1)~1531(N)を仮想化して、各オペレーティング・システムによるアクセスを可能にし得る。少なくとも1つの実施例では、ハイパーバイザのない単一パーティション・システムについて、グラフィックス処理エンジン1531(1)~1531(N)は、オペレーティング・システムによって所有される。少なくとも1つの実施例では、オペレーティング・システムは、グラフィックス処理エンジン1531(1)~1531(N)を仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
【0253】
少なくとも1つの実施例では、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531(1)~1531(N)は、プロセス・ハンドルを使用してプロセス要素を選択する。少なくとも1つの実施例では、プロセス要素は、システム・メモリ1514に記憶され、本明細書で説明される実効アドレス-実アドレス・トランスレーション技法を使用してアドレス指定可能である。少なくとも1つの実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1531(1)~1531(N)に登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためにシステム・ソフトウェアをコールする)ときにホスト・プロセスに提供される実装固有値であり得る。少なくとも1つの実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであり得る。
【0254】
図15Dは、例示的なアクセラレータ統合スライス1590を示す。少なくとも1つの実施例では、「スライス」は、アクセラレータ統合回路1536の処理リソースの指定部分を備える。少なくとも1つの実施例では、システム・メモリ1514内のアプリケーションの実効アドレス空間1582は、プロセス要素1583を記憶する。少なくとも1つの実施例では、プロセス要素1583は、プロセッサ1507上で実行されるアプリケーション1580からのGPU呼出し1581に応答して、記憶される。少なくとも1つの実施例では、プロセス要素1583は、対応するアプリケーション1580のプロセス状態を含んでいる。少なくとも1つの実施例では、プロセス要素1583に含まれているワーク記述子(WD:work descriptor)1584は、アプリケーションによって要求される単一のジョブであり得るか、又はジョブのキューに対するポインタを含んでいることがある。少なくとも1つの実施例では、WD1584は、アプリケーションの実効アドレス空間1582におけるジョブ要求キューに対するポインタである。
【0255】
少なくとも1つの実施例では、グラフィックス加速モジュール1546及び/又は個々のグラフィックス処理エンジン1531(1)~1531(N)は、システム中のプロセスのすべて又はサブセットによって共有され得る。少なくとも1つの実施例では、プロセス状態を設定し、WD1584をグラフィックス加速モジュール1546に送出して、仮想化環境中でジョブを開始するためのインフラストラクチャが、含められ得る。
【0256】
少なくとも1つの実施例では、専用プロセス・プログラミング・モデルは、実装固有である。少なくとも1つの実施例では、このモデルでは、単一のプロセスが、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531を所有する。少なくとも1つの実施例では、グラフィックス加速モジュール1546が単一のプロセスによって所有されるとき、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1536を初期化し、グラフィックス加速モジュール1546が割り当てられたとき、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1536を初期化する。
【0257】
少なくとも1つの実施例では、動作時、アクセラレータ統合スライス1590中のWDフェッチ・ユニット1591は、グラフィックス加速モジュール1546の1つ又は複数のグラフィックス処理エンジンによって行われるべきであるワークの指示を含む、次のWD1584をフェッチする。少なくとも1つの実施例では、示されているように、WD1584からのデータは、レジスタ1545に記憶され、MMU1539、割込み管理回路1547、及び/又はコンテキスト管理回路1548によって使用され得る。たとえば、MMU1539の一実施例は、OS仮想アドレス空間1585内のセグメント/ページ・テーブル1586にアクセスするためのセグメント/ページ・ウォーク回路要素を含む。少なくとも1つの実施例では、割込み管理回路1547は、グラフィックス加速モジュール1546から受信された割込みイベント1592を処理し得る。少なくとも1つの実施例では、グラフィックス動作を実施するとき、グラフィックス処理エンジン1531(1)~1531(N)によって生成された実効アドレス1593は、MMU1539によって実アドレスにトランスレートされる。
【0258】
少なくとも1つの実施例では、レジスタ1545が、各グラフィックス処理エンジン1531(1)~1531(N)、及び/又はグラフィックス加速モジュール1546について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化され得る。少なくとも1つの実施例では、これらの複製されたレジスタの各々は、アクセラレータ統合スライス1590中に含められ得る。ハイパーバイザによって初期化され得る例示的なレジスタが、表1に示されている。
【表1】
【0259】
オペレーティング・システムによって初期化され得る例示的なレジスタが、表2に示されている。
【表2】
【0260】
少なくとも1つの実施例では、各WD1584は、特定のグラフィックス加速モジュール1546及び/又はグラフィックス処理エンジン1531(1)~1531(N)に固有である。少なくとも1つの実施例では、WD1584は、ワークを行うためにグラフィックス処理エンジン1531(1)~1531(N)によって必要とされるすべての情報を含んでいるか、又は、完了されるべきワークのコマンド・キューをアプリケーションが設定したメモリ・ロケーションに対するポインタであり得る。
【0261】
図15Eは、共有モデルの例示的な一実施例の追加の詳細を示す。この実施例は、プロセス要素リスト1599が記憶されたハイパーバイザ実アドレス空間1598を含む。少なくとも1つの実施例では、ハイパーバイザ実アドレス空間1598は、オペレーティング・システム1595のためのグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1596を介してアクセス可能である。
【0262】
少なくとも1つの実施例では、共有プログラミング・モデルは、システム中のパーティションのすべて又はサブセットからのプロセスのすべて又はサブセットが、グラフィックス加速モジュール1546を使用することを可能にする。少なくとも1つの実施例では、グラフィックス加速モジュール1546が複数のプロセス及びパーティションによって共有される2つのプログラミング・モデル、すなわち、時間スライス共有と、グラフィックス指定共有(graphics directed shared)とがある。
【0263】
少なくとも1つの実施例では、このモデルでは、システム・ハイパーバイザ1596がグラフィックス加速モジュール1546を所有し、その機能をすべてのオペレーティング・システム1595にとって利用可能にする。少なくとも1つの実施例では、システム・ハイパーバイザ1596による仮想化をグラフィックス加速モジュール1546がサポートするために、グラフィックス加速モジュール1546は、(1)アプリケーションのジョブ要求が自律でなければならない(すなわち、ジョブ間で状態を維持する必要がない)か、又はグラフィックス加速モジュール1546が、コンテキスト保存及び復元機構を提供しなければならない、(2)アプリケーションのジョブ要求が、あらゆるトランスレーション障害も含めて、指定された時間量において完了するとグラフィックス加速モジュール1546によって保証されるか、又はグラフィックス加速モジュール1546が、ジョブの処理をプリエンプトするアビリティを提供する、及び(3)グラフィックス加速モジュール1546が、指定の共有プログラミング・モデルにおいて動作しているとき、プロセス間で公平性が保証されなければならないなど、いくつかの要件に従い得る。
【0264】
少なくとも1つの実施例では、アプリケーション1580は、グラフィックス加速モジュール・タイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR:authority mask register)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP:context save/restore area pointer)を伴って、オペレーティング・システム1595のシステム・コールを行うことを必要とされる。少なくとも1つの実施例では、グラフィックス加速モジュール・タイプは、システム・コールについて対象の加速機能を記述する。少なくとも1つの実施例では、グラフィックス加速モジュール・タイプは、システム固有値であり得る。少なくとも1つの実施例では、WDは、グラフィックス加速モジュール1546のために特にフォーマット化され、グラフィックス加速モジュール1546のコマンド、ユーザ定義構造に対する実効アドレス・ポインタ、コマンドのキューに対する実効アドレス・ポインタ、又はグラフィックス加速モジュール1546によって行われるべきワークを記述するための任意の他のデータ構造の形態であり得る。
【0265】
少なくとも1つの実施例では、AMR値は、現在のプロセスのために使用するためのAMR状態である。少なくとも1つの実施例では、オペレーティング・システムに渡される値が、AMRを設定するアプリケーションと同様である。少なくとも1つの実施例では、アクセラレータ統合回路1536(図示せず)実装形態とグラフィックス加速モジュール1546実装形態とが、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR:User Authority Mask Override Register)をサポートしない場合、オペレーティング・システムは、ハイパーバイザ・コールにおいてAMRを渡す前に、AMR値に現在のUAMOR値を適用し得る。少なくとも1つの実施例では、ハイパーバイザ1596は、随意に、AMRをプロセス要素1583に入れる前に、現在の権限マスク・オーバーライド・レジスタ(AMOR:Authority Mask Override Register)値を適用し得る。少なくとも1つの実施例では、CSRPは、グラフィックス加速モジュール1546がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1582中のエリアの実効アドレスを含んでいるレジスタ1545のうちの1つである。少なくとも1つの実施例では、このポインタは、いかなる状態もジョブ間で保存されることを必要とされない場合又はジョブがプリエンプトされるとき、随意である。少なくとも1つの実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであり得る。
【0266】
システム・コールを受信すると、オペレーティング・システム1595は、アプリケーション1580が登録され、グラフィックス加速モジュール1546を使用するための権限を与えられていることを確認し得る。少なくとも1つの実施例では、オペレーティング・システム1595は、次いで、表3に示されている情報を伴ってハイパーバイザ1596にコールする。
【表3】
【0267】
少なくとも1つの実施例では、ハイパーバイザ・コールを受信すると、ハイパーバイザ1596は、オペレーティング・システム1595が登録され、グラフィックス加速モジュール1546を使用するための権限を与えられていることを確認する。少なくとも1つの実施例では、ハイパーバイザ1596は、次いで、プロセス要素1583を、対応するグラフィックス加速モジュール1546タイプについてのプロセス要素リンク・リストに入れる。少なくとも1つの実施例では、プロセス要素は、表4に示されている情報を含み得る。
【表4】
【0268】
少なくとも1つの実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1590レジスタ1545を初期化する。
【0269】
図15Fに示されているように、少なくとも1つの実施例では、物理プロセッサ・メモリ1501(1)~1501(N)及びGPUメモリ1520(1)~1520(N)にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能な統一メモリが使用される。この実装形態では、GPU1510(1)~1510(N)上で実行される動作は、プロセッサ・メモリ1501(1)~1501(M)にアクセスするための同じ仮想/実効メモリ・アドレス空間を利用し、その逆もまた同様であり、それによりプログラマビリティを簡単にする。少なくとも1つの実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1501(1)に割り振られ、第2の部分は第2のプロセッサ・メモリ1501(N)に割り振られ、第3の部分はGPUメモリ1520(1)に割り振られ、以下同様である。少なくとも1つの実施例では、(実効アドレス空間と呼ばれることがある)仮想/実効メモリ空間全体は、それにより、プロセッサ・メモリ1501及びGPUメモリ1520の各々にわたって分散され、いずれかのプロセッサ又はGPUが、仮想アドレスが物理メモリにマッピングされた、いずれかの物理メモリにアクセスすることを可能にする。
【0270】
少なくとも1つの実施例では、MMU1539A~1539Eのうちの1つ又は複数内のバイアス/コヒーレンス管理回路要素1594A~1594Eは、1つ又は複数のホスト・プロセッサ(たとえば、1505)のキャッシュとGPU1510のキャッシュとの間でキャッシュ・コヒーレンスを確実にし、バイアス技法を実装して、いくつかのタイプのデータが記憶されるべきである物理メモリを示す。少なくとも1つの実施例では、バイアス/コヒーレンス管理回路要素1594A~1594Eの複数のインスタンスが
図15Fに示されているが、バイアス/コヒーレンス回路要素は、1つ又は複数のホスト・プロセッサ1505のMMU内及び/又はアクセラレータ統合回路1536内に実装され得る。
【0271】
一実施例は、GPUメモリ1520が、システム・メモリの一部としてマッピングされ、共有仮想メモリ(SVM:shared virtual memory)技術を使用して、ただし完全なシステム・キャッシュ・コヒーレンスに関連する性能の欠点を被ることなしに、アクセスされることを可能にする。少なくとも1つの実施例では、GPUメモリ1520が面倒なキャッシュ・コヒーレンス・オーバーヘッドなしにシステム・メモリとしてアクセスされるアビリティは、GPUオフロードのための有益な動作環境を提供する。少なくとも1つの実施例では、この仕組みは、ホスト・プロセッサ1505のソフトウェアが、従来のI/O DMAデータ・コピーのオーバーヘッドなしに、オペランドを設定し、算出結果にアクセスすることを可能にする。少なくとも1つの実施例では、そのような従来のコピーは、ドライバ・コール、割込み及びメモリ・マップドI/O(MMIO:memory mapped I/O)アクセスを伴い、それらはすべて、単純なメモリ・アクセスに対して非効率的である。少なくとも1つの実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしにGPUメモリ1520にアクセスするアビリティは、オフロードされた算出の実行時間に不可欠であり得る。少なくとも1つの実施例では、たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合に、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1510によって見られる有効な書込み帯域幅を著しく低減することができる。少なくとも1つの実施例では、オペランド設定の効率と、結果アクセスの効率と、GPU算出の効率とは、GPUオフロードの有効性を決定する際に役立ち得る。
【0272】
少なくとも1つの実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって駆動される。少なくとも1つの実施例では、たとえば、バイアス・テーブルが使用され得、バイアス・テーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であり得る(たとえば、メモリ・ページの粒度において制御され得る)。少なくとも1つの実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1510中にある状態又はない状態で、1つ又は複数のGPUメモリ1520の奪われたメモリ範囲(stolen memory range)において実装され得る。代替的に、少なくとも1つの実施例では、バイアス・テーブル全体が、GPU内に維持され得る。
【0273】
少なくとも1つの実施例では、GPU付きメモリ1520への各アクセスに関連するバイアス・テーブル・エントリが、GPUメモリへの実際のアクセスより前にアクセスされて、以下の動作を引き起こす。少なくとも1つの実施例では、GPUバイアス中で自らのページを見いだすGPU1510からのローカル要求が、対応するGPUメモリ1520に直接フォワーディングされる。少なくとも1つの実施例では、ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上記で説明された高速リンクを介して)プロセッサ1505にフォワーディングされる。少なくとも1つの実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1505からの要求は、通常のメモリ読取りのように要求を完了する。代替的に、GPUバイアス化ページを対象とする要求は、GPU1510にフォワーディングされ得る。少なくとも1つの実施例では、GPUは、次いで、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行し得る。少なくとも1つの実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更され得る。
【0274】
少なくとも1つの実施例では、バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を採用し、APIコールがGPUのデバイス・ドライバをコールし、GPUのデバイス・ドライバが、バイアス状態を変更し、いくつかの移行については、ホストにおいてキャッシュ・フラッシング動作を実施するようにGPUに指示するメッセージをGPUに送出する(又はコマンド記述子をキューに加える)。少なくとも1つの実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1505バイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行のためには使用されない。
【0275】
少なくとも1つの実施例では、キャッシュ・コヒーレンシは、ホスト・プロセッサ1505によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。少なくとも1つの実施例では、これらのページにアクセスするために、プロセッサ1505は、GPU1510にアクセスを要求し得、GPU1510は、すぐにアクセスを許可することも許可しないこともある。少なくとも1つの実施例では、したがって、プロセッサ1505とGPU1510との間の通信を低減するために、GPUバイアス化ページが、GPUによって必要とされるがホスト・プロセッサ1505によって必要とされず、その逆も同様であるものであることを確実にすることは、有益である。
【0276】
1つ又は複数の実施例を実施するために、(1つ又は複数の)ハードウェア構造715が使用される。(1つ又は複数の)ハードウェア構造715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供され得る。
【0277】
少なくとも1つの実施例では、
図15A~
図15Fに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図15A~
図15Fに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図15A~
図15Fに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0278】
図16は、本明細書で説明される様々な実施例による、1つ又は複数のIPコアを使用して作製され得る例示的な集積回路及び関連するグラフィックス・プロセッサを示す。示されているものに加えて、少なくとも1つの実施例では、追加のグラフィックス・プロセッサ/コア、周辺インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれ得る。
【0279】
図16は、少なくとも1つの実施例による、1つ又は複数のIPコアを使用して作製され得る例示的なシステム・オン・チップ集積回路1600を示すブロック図である。少なくとも1つの実施例では、集積回路1600は、1つ又は複数のアプリケーション・プロセッサ1605(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1610を含み、追加として、画像プロセッサ1615及び/又はビデオ・プロセッサ1620を含み得、それらのいずれも、モジュール式IPコアであり得る。少なくとも1つの実施例では、集積回路1600は、USBコントローラ1625、UARTコントローラ1630、SPI/SDIOコントローラ1635、及びI
22S/I
22Cコントローラ1640を含む周辺機器又はバス論理を含む。少なくとも1つの実施例では、集積回路1600は、高精細度マルチメディア・インターフェース(HDMI(登録商標):high-definition multimedia interface)コントローラ1650及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1655のうちの1つ又は複数に結合されたディスプレイ・デバイス1645を含むことができる。少なくとも1つの実施例では、フラッシュ・メモリとフラッシュ・メモリ・コントローラとを含むフラッシュ・メモリ・サブシステム1660によって、ストレージが提供され得る。少なくとも1つの実施例では、SDRAM又はSRAMメモリ・デバイスへのアクセスのために、メモリ・コントローラ1665を介してメモリ・インターフェースが提供され得る。少なくとも1つの実施例では、いくつかの集積回路は、追加として、組み込みセキュリティ・エンジン1670を含む。
【0280】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために集積回路1600において使用され得る。
【0281】
少なくとも1つの実施例では、
図16に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図16に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図16に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0282】
図17A~
図17Bは、本明細書で説明される様々な実施例による、1つ又は複数のIPコアを使用して作製され得る例示的な集積回路及び関連するグラフィックス・プロセッサを示す。示されているものに加えて、少なくとも1つの実施例では、追加のグラフィックス・プロセッサ/コア、周辺インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれ得る。
【0283】
図17A及び
図17Bは、本明細書で説明される実施例による、SoC内での使用のための例示的なグラフィックス・プロセッサを示すブロック図である。
図17Aは、少なくとも1つの実施例による、1つ又は複数のIPコアを使用して作製され得るシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ1710を示す。
図17Bは、少なくとも1つの実施例による、1つ又は複数のIPコアを使用して作製され得るシステム・オン・チップ集積回路の追加の例示的なグラフィックス・プロセッサ1740を示す。少なくとも1つの実施例では、
図17Aのグラフィックス・プロセッサ1710は、低電力グラフィックス・プロセッサ・コアである。少なくとも1つの実施例では、
図17Bのグラフィックス・プロセッサ1740は、より高性能のグラフィックス・プロセッサ・コアである。少なくとも1つの実施例では、グラフィックス・プロセッサ1710、1740の各々は、
図16のグラフィックス・プロセッサ1610の変形態であり得る。
【0284】
少なくとも1つの実施例では、グラフィックス・プロセッサ1710は、頂点プロセッサ1705と、1つ又は複数のフラグメント・プロセッサ1715A~1715N(たとえば、1715A、1715B、1715C、1715D~1715N-1、及び1715N)とを含む。少なくとも1つの実施例では、グラフィックス・プロセッサ1710は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ1705は、頂点シェーダ・プログラムのための動作を実行するように最適化され、1つ又は複数のフラグメント・プロセッサ1715A~1715Nは、フラグメント又はピクセル・シェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも1つの実施例では、頂点プロセッサ1705は、3Dグラフィックス・パイプラインの頂点処理段階を実施し、プリミティブ及び頂点データを生成する。少なくとも1つの実施例では、(1つ又は複数の)フラグメント・プロセッサ1715A~1715Nは、頂点プロセッサ1705によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイス上に表示されるフレーム・バッファを作り出す。少なくとも1つの実施例では、(1つ又は複数の)フラグメント・プロセッサ1715A~1715Nは、OpenGL APIにおいて提供されるようなフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGL APIは、Direct 3D APIにおいて提供されるようなピクセル・シェーダ・プログラムと同様の動作を実施するために使用され得る。
【0285】
少なくとも1つの実施例では、グラフィックス・プロセッサ1710は、追加として、1つ又は複数のメモリ管理ユニット(MMU)1720A~1720Bと、(1つ又は複数の)キャッシュ1725A~1725Bと、(1つ又は複数の)回路相互接続1730A~1730Bとを含む。少なくとも1つの実施例では、1つ又は複数のMMU1720A~1720Bは、頂点プロセッサ1705及び/又は(1つ又は複数の)フラグメント・プロセッサ1715A~1715Nを含む、グラフィックス・プロセッサ1710のための仮想-物理アドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ1725A~1725Bに記憶された頂点又は画像/テクスチャ・データに加えて、メモリに記憶された頂点又は画像/テクスチャ・データを参照し得る。少なくとも1つの実施例では、1つ又は複数のMMU1720A~1720Bは、
図16の1つ又は複数のアプリケーション・プロセッサ1605、画像プロセッサ1615、及び/又はビデオ・プロセッサ1620に関連する1つ又は複数のMMUを含む、システム内の他のMMUと同期され得、それにより、各プロセッサ1605~1620は、共有又は統一仮想メモリ・システムに参加することができる。少なくとも1つの実施例では、1つ又は複数の回路相互接続1730A~1730Bは、グラフィックス・プロセッサ1710が、SoCの内部バスを介して又は直接接続を介してのいずれかで、SoC内の他のIPコアとインターフェースすることを可能にする。
【0286】
少なくとも1つの実施例では、
図17Bに示されているように、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755N(たとえば、1755A、1755B、1755C、1755D、1755E、1755F~1755N-1、及び1755N)を含み、1つ又は複数のシェーダ・コア1755A~1755Nは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラマブル・シェーダ・コードを実行することができる統一シェーダ・コア・アーキテクチャを提供する。少なくとも1つの実施例では、シェーダ・コアの数は変動することができる。少なくとも1つの実施例では、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ1745と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンについてのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット1758とを含む。
【0287】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために集積回路17A及び/又は17Bにおいて使用され得る。
【0288】
少なくとも1つの実施例では、
図17A~
図17Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図17A~
図17Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図17A~
図17Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0289】
図18A~
図18Bは、本明細書で説明される実施例による、追加の例示的なグラフィックス・プロセッサ論理を示す。
図18Aは、グラフィックス・コア1800を示し、グラフィックス・コア1800は、少なくとも1つの実施例では
図16のグラフィックス・プロセッサ1610内に含められ得、少なくとも1つの実施例では
図17Bの場合のように統一シェーダ・コア1755A~1755Nであり得る。
図18Bは、少なくとも1つの実施例においてマルチチップ・モジュール上での導入に好適な高並列の汎用グラフィックス処理ユニット(「GPGPU」:general-purpose graphics processing unit)1830を示す。
【0290】
少なくとも1つの実施例では、グラフィックス・コア1800は、共有命令キャッシュ1802と、テクスチャ・ユニット1818と、キャッシュ/共有メモリ1820とを含み、それらは、グラフィックス・コア1800内の実行リソースに共通である。少なくとも1つの実施例では、グラフィックス・コア1800は、複数のスライス1801A~1801N、又は各コアについてのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア1800の複数のインスタンスを含むことができる。少なくとも1つの実施例では、スライス1801A~1801Nは、ローカル命令キャッシュ1804A~1804Nと、スレッド・スケジューラ1806A~1806Nと、スレッド・ディスパッチャ1808A~1808Nと、レジスタのセット1810A~1810Nとを含むサポート論理を含むことができる。少なくとも1つの実施例では、スライス1801A~1801Nは、追加機能ユニット(AFU:additional function unit1812A~1812N)、浮動小数点ユニット(FPU:floating-point unit1814A~1814N)、整数算術論理ユニット(ALU1816A~1816N)、アドレス算出ユニット(ACU:address computational unit1813A~1813N)、倍精度浮動小数点ユニット(DPFPU:double-precision floating-point unit1815A~1815N)、及び行列処理ユニット(MPU:matrix processing unit1817A~1817N)のセットを含むことができる。
【0291】
少なくとも1つの実施例では、FPU1814A~1814Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実施することができ、DPFPU1815A~1815Nは、倍精度(64ビット)の浮動小数点演算を実施する。少なくとも1つの実施例では、ALU1816A~1816Nは、8ビット、16ビット、及び32ビットの精度で可変精度整数演算を実施することができ、混合精度演算のために構成され得る。少なくとも1つの実施例では、MPU1817A~1817Nも、半精度浮動小数点演算と8ビット整数演算とを含む、混合精度行列演算のために構成され得る。少なくとも1つの実施例では、MPU1817~1817Nは、加速汎用行列-行列乗算(GEMM:general matrix to matrix multiplication)のサポートを可能にすることを含む、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実施することができる。少なくとも1つの実施例では、AFU1812A~1812Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットによってサポートされていない追加の論理演算を実施することができる。
【0292】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにグラフィックス・コア1800において使用され得る。
【0293】
図18Bは、汎用処理ユニット(GPGPU:general-purpose processing unit)1830を示し、GPGPU1830は、少なくとも1つの実施例において、高並列コンピュート動作がグラフィックス処理ユニットのアレイによって実施されることを可能にするように構成され得る。少なくとも1つの実施例では、GPGPU1830は、深層ニューラル・ネットワークについての訓練スピードを改善するためにマルチGPUクラスタを作成するために、GPGPU1830の他のインスタンスに直接リンクされ得る。少なくとも1つの実施例では、GPGPU1830は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース1832を含む。少なくとも1つの実施例では、ホスト・インターフェース1832は、PCIエクスプレス・インターフェースである。少なくとも1つの実施例では、ホスト・インターフェース1832は、ベンダー固有の通信インターフェース又は通信ファブリックであり得る。少なくとも1つの実施例では、GPGPU1830は、ホスト・プロセッサからコマンドを受信し、グローバル・スケジューラ1834を使用して、それらのコマンドに関連する実行スレッドを、コンピュート・クラスタ1836A~1836Hのセットに分散させる。少なくとも1つの実施例では、コンピュート・クラスタ1836A~1836Hは、キャッシュ・メモリ1838を共有する。少なくとも1つの実施例では、キャッシュ・メモリ1838は、コンピュート・クラスタ1836A~1836H内のキャッシュ・メモリのためのより高レベルのキャッシュとして働くことができる。
【0294】
少なくとも1つの実施例では、GPGPU1830は、メモリ・コントローラ1842A~1842Bのセットを介してコンピュート・クラスタ1836A~1836Hと結合されたメモリ1844A~1844Bを含む。少なくとも1つの実施例では、メモリ1844A~1844Bは、ダイナミック・ランダム・アクセス・メモリ(DRAM)、又は、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)などのグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【0295】
少なくとも1つの実施例では、コンピュート・クラスタ1836A~1836Hは、各々、
図18Aのグラフィックス・コア1800などのグラフィックス・コアのセットを含み、グラフィックス・コアのセットは、機械学習算出に適したものを含む、様々な精度で算出動作を実施することができる複数のタイプの整数及び浮動小数点論理ユニットを含むことができる。たとえば、少なくとも1つの実施例では、コンピュート・クラスタ1836A~1836Hの各々における浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実施するように構成され得、浮動小数点ユニットの異なるサブセットは、64ビットの浮動小数点演算を実施するように構成され得る。
【0296】
少なくとも1つの実施例では、GPGPU1830の複数のインスタンスは、コンピュート・クラスタとして動作するように構成され得る。少なくとも1つの実施例では、コンピュート・クラスタ1836A~1836Hによって同期及びデータ交換のために使用される通信は、実施例にわたって変動する。少なくとも1つの実施例では、GPGPU1830の複数のインスタンスは、ホスト・インターフェース1832を介して通信する。少なくとも1つの実施例では、GPGPU1830は、I/Oハブ1839を含み、I/Oハブ1839は、GPGPU1830を、GPGPU1830の他のインスタンスへの直接接続を可能にするGPUリンク1840と結合する。少なくとも1つの実施例では、GPUリンク1840は、GPGPU1830の複数のインスタンス間での通信及び同期を可能にする専用GPU-GPUブリッジに結合される。少なくとも1つの実施例では、GPUリンク1840は、他のGPGPU又は並列プロセッサにデータを送信及び受信するために高速相互接続と結合される。少なくとも1つの実施例では、GPGPU1830の複数のインスタンスは、別個のデータ処理システムに位置し、ホスト・インターフェース1832を介してアクセス可能であるネットワーク・デバイスを介して通信する。少なくとも1つの実施例では、GPUリンク1840は、ホスト・インターフェース1832に加えて、又はその代替として、ホスト・プロセッサへの接続を可能にするように構成され得る。
【0297】
少なくとも1つの実施例では、GPGPU1830は、ニューラル・ネットワークを訓練するように構成され得る。少なくとも1つの実施例では、GPGPU1830は、推論プラットフォーム内で使用され得る。GPGPU1830が推論のために使用される少なくとも1つの実施例では、GPGPU1830は、GPGPU1830がニューラル・ネットワークを訓練するために使用されるときに対して、より少数のコンピュート・クラスタ1836A~1836Hを含み得る。少なくとも1つの実施例では、メモリ1844A~1844Bに関連するメモリ技術は、推論構成と訓練構成との間で異なり得、より高い帯域幅のメモリ技術が訓練構成に充てられる。少なくとも1つの実施例では、GPGPU1830の推論構成は、推論固有命令をサポートすることができる。たとえば、少なくとも1つの実施例では、推論構成は、1つ又は複数の8ビット整数ドット積命令のサポートを提供することができ、これは、導入されたニューラル・ネットワークのための推論動作中に使用され得る。
【0298】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにGPGPU1830において使用され得る。
【0299】
少なくとも1つの実施例では、
図18A~
図18Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図18A~
図18Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図18A~
図18Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0300】
図19は、少なくとも1つの実施例による、コンピューティング・システム1900を示すブロック図である。少なくとも1つの実施例では、コンピューティング・システム1900は、メモリ・ハブ1905を含み得る相互接続経路を介して通信する1つ又は複数のプロセッサ1902とシステム・メモリ1904とを有する処理サブシステム1901を含む。少なくとも1つの実施例では、メモリ・ハブ1905は、チップセット構成要素内の別個の構成要素であり得るか、又は1つ又は複数のプロセッサ1902内に組み込まれ得る。少なくとも1つの実施例では、メモリ・ハブ1905は、通信リンク1906を介してI/Oサブシステム1911と結合する。少なくとも1つの実施例では、I/Oサブシステム1911は、コンピューティング・システム1900が1つ又は複数の入力デバイス1908からの入力を受信することを可能にすることができるI/Oハブ1907を含む。少なくとも1つの実施例では、I/Oハブ1907は、1つ又は複数のプロセッサ1902中に含まれ得るディスプレイ・コントローラが、1つ又は複数のディスプレイ・デバイス1910Aに出力を提供することを可能にすることができる。少なくとも1つの実施例では、I/Oハブ1907と結合された1つ又は複数のディスプレイ・デバイス1910Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【0301】
少なくとも1つの実施例では、処理サブシステム1901は、バス又は他の通信リンク1913を介してメモリ・ハブ1905に結合された1つ又は複数の並列プロセッサ1912を含む。少なくとも1つの実施例では、通信リンク1913は、限定はしないがPCIエクスプレスなど、任意の数の規格ベースの通信リンク技術又はプロトコルのうちの1つを使用し得るか、或いはベンダー固有の通信インターフェース又は通信ファブリックであり得る。少なくとも1つの実施例では、1つ又は複数の並列プロセッサ1912は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことができる、算出に集中した並列又はベクトル処理システムを形成する。少なくとも1つの実施例では、(1つ又は複数の)並列プロセッサ1912のうちのいくつか又はすべては、グラフィックス処理サブシステムを形成し、グラフィックス処理サブシステムは、I/Oハブ1907を介して結合された1つ又は複数のディスプレイ・デバイス1910Aのうちの1つにピクセルを出力することができる。少なくとも1つの実施例では、(1つ又は複数の)並列プロセッサ1912はまた、ディスプレイ・コントローラと、1つ又は複数のディスプレイ・デバイス1910Bへの直接接続を可能にするためのディスプレイ・インターフェース(図示せず)とを含むことができる。
【0302】
少なくとも1つの実施例では、システム・ストレージ・ユニット1914は、I/Oハブ1907に接続して、コンピューティング・システム1900のためのストレージ機構を提供することができる。少なくとも1つの実施例では、I/Oハブ1907と、プラットフォームに組み込まれ得るネットワーク・アダプタ1918及び/又はワイヤレス・ネットワーク・アダプタ1919などの他の構成要素、並びに1つ又は複数のアドイン・デバイス1920を介して追加され得る様々な他のデバイスとの間の接続を可能にするためのインターフェース機構を提供するために、I/Oスイッチ1916が使用され得る。少なくとも1つの実施例では、ネットワーク・アダプタ1918は、イーサネット・アダプタ又は別のワイヤード・ネットワーク・アダプタであり得る。少なくとも1つの実施例では、ワイヤレス・ネットワーク・アダプタ1919は、Wi-Fi、Bluetooth、ニア・フィールド通信(NFC)、又は1つ又は複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
【0303】
少なくとも1つの実施例では、コンピューティング・システム1900は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ・キャプチャ・デバイスなどを含む、明示的に示されていない他の構成要素を含むことができ、また、I/Oハブ1907に接続され得る。少なくとも1つの実施例では、
図19中の様々な構成要素を相互接続する通信経路が、PCI(周辺構成要素相互接続)ベースのプロトコル(たとえば、PCI-Express)などの任意の好適なプロトコル、或いはNV-Link高速相互接続などの他のバス又はポイントツーポイント通信インターフェース及び/又は(1つ又は複数の)プロトコル、或いは相互接続プロトコルを使用して、実装され得る。
【0304】
少なくとも1つの実施例では、(1つ又は複数の)並列プロセッサ1912は、たとえばビデオ出力回路要素を含むグラフィックス及びビデオ処理のために最適化された回路要素を組み込み、グラフィックス処理ユニット(GPU)を構成する。少なくとも1つの実施例では、(1つ又は複数の)並列プロセッサ1912は、汎用処理のために最適化された回路要素を組み込む。少なくとも実施例では、コンピューティング・システム1900の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と統合され得る。たとえば、少なくとも1つの実施例では、(1つ又は複数の)並列プロセッサ1912、メモリ・ハブ1905、(1つ又は複数の)プロセッサ1902、及びI/Oハブ1907は、システム・オン・チップ(SoC)集積回路に組み込まれ得る。少なくとも1つの実施例では、コンピューティング・システム1900の構成要素は、システム・イン・パッケージ(SIP:system in package)構成を形成するために、単一のパッケージに組み込まれ得る。少なくとも1つの実施例では、コンピューティング・システム1900の構成要素の少なくとも一部分は、マルチチップ・モジュール(MCM:multi-chip module)に組み込まれ得、マルチチップ・モジュールは、他のマルチチップ・モジュールと相互接続されてモジュール式コンピューティング・システムにすることができる。
【0305】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために
図1900のシステムにおいて使用され得る。
【0306】
少なくとも1つの実施例では、
図19に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図19に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図19に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0307】
プロセッサ
図20Aは、少なくとも1つの実施例による、並列プロセッサ2000を示す。少なくとも1つの実施例では、並列プロセッサ2000の様々な構成要素は、プログラマブル・プロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など、1つ又は複数の集積回路デバイスを使用して実装され得る。少なくとも1つの実施例では、示されている並列プロセッサ2000は、例示的な実施例による、
図19に示されている1つ又は複数の並列プロセッサ1912の変形態である。
【0308】
少なくとも1つの実施例では、並列プロセッサ2000は並列処理ユニット2002を含む。少なくとも1つの実施例では、並列処理ユニット2002は、並列処理ユニット2002の他のインスタンスを含む、他のデバイスとの通信を可能にするI/Oユニット2004を含む。少なくとも1つの実施例では、I/Oユニット2004は、他のデバイスに直接接続され得る。少なくとも1つの実施例では、I/Oユニット2004は、メモリ・ハブ2005など、ハブ又はスイッチ・インターフェースの使用を介して他のデバイスと接続する。少なくとも1つの実施例では、メモリ・ハブ2005とI/Oユニット2004との間の接続は、通信リンク2013を形成する。少なくとも1つの実施例では、I/Oユニット2004は、ホスト・インターフェース2006及びメモリ・クロスバー2016と接続し、ホスト・インターフェース2006は、処理動作を実施することを対象とするコマンドを受信し、メモリ・クロスバー2016は、メモリ動作を実施することを対象とするコマンドを受信する。
【0309】
少なくとも1つの実施例では、ホスト・インターフェース2006が、I/Oユニット2004を介してコマンド・バッファを受信したとき、ホスト・インターフェース2006は、それらのコマンドを実施するためのワーク動作をフロント・エンド2008に向けることができる。少なくとも1つの実施例では、フロント・エンド2008はスケジューラ2010と結合し、スケジューラ2010は、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2012に分散させるように構成される。少なくとも1つの実施例では、スケジューラ2010は、処理クラスタ・アレイ2012のクラスタにタスクが分散される前に、処理クラスタ・アレイ2012が適切に構成され、有効な状態にあることを確実にする。少なくとも1つの実施例では、スケジューラ2010は、マイクロコントローラ上で実行しているファームウェア論理を介して実装される。少なくとも1つの実施例では、マイクロコントローラ実装スケジューラ2010は、複雑なスケジューリング及びワーク分散動作を、粗い粒度及び細かい粒度において実施するように構成可能であり、処理アレイ2012上で実行しているスレッドの迅速なプリエンプション及びコンテキスト切替えを可能にする。少なくとも1つの実施例では、ホスト・ソフトウェアは、処理クラスタ・アレイ2012上でのスケジューリングのためのワークロードを、複数のグラフィックス処理経路のうちの1つを介して証明することができる。少なくとも1つの実施例では、ワークロードは、次いで、スケジューラ2010を含むマイクロコントローラ内のスケジューラ2010論理によって、処理アレイ・クラスタ2012にわたって自動的に分散され得る。
【0310】
少なくとも1つの実施例では、処理クラスタ・アレイ2012は、最高「N」個の処理クラスタ(たとえば、クラスタ2014A、クラスタ2014B~クラスタ2014N)を含むことができ、ここで、「N」は正の整数を表す(それは、他の図中で使用されるものとは異なる整数「N」であり得る)。少なくとも1つの実施例では、処理クラスタ・アレイ2012の各クラスタ2014A~2014Nは、多数の同時スレッドを実行することができる。少なくとも1つの実施例では、スケジューラ2010は、様々なスケジューリング及び/又はワーク分散アルゴリズムを使用して処理クラスタ・アレイ2012のクラスタ2014A~2014Nにワークを割り振ることができ、それらのアルゴリズムは、プログラム又は算出の各タイプについて生じるワークロードに応じて変動し得る。少なくとも1つの実施例では、スケジューリングは、スケジューラ2010によって動的に対処され得るか、又は処理クラスタ・アレイ2012による実行のために構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援され得る。少なくとも1つの実施例では、処理クラスタ・アレイ2012の異なるクラスタ2014A~2014Nは、異なるタイプのプログラムを処理するために、又は異なるタイプの算出を実施するために割り振られ得る。
【0311】
少なくとも1つの実施例では、処理クラスタ・アレイ2012は、様々なタイプの並列処理動作を実施するように構成され得る。少なくとも1つの実施例では、処理クラスタ・アレイ2012は、汎用並列コンピュート動作を実施するように構成される。たとえば、少なくとも1つの実施例では、処理クラスタ・アレイ2012は、ビデオ及び/又はオーディオ・データをフィルタリングすること、物理動作を含むモデリング動作を実施すること、及びデータ変換を実施することを含む処理タスクを実行するための論理を含むことができる。
【0312】
少なくとも1つの実施例では、処理クラスタ・アレイ2012は、並列グラフィックス処理動作を実施するように構成される。少なくとも1つの実施例では、処理クラスタ・アレイ2012は、限定はしないが、テクスチャ動作を実施するためのテクスチャ・サンプリング論理、並びにテッセレーション論理及び他の頂点処理論理を含む、そのようなグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも1つの実施例では、処理クラスタ・アレイ2012は、限定はしないが、頂点シェーダ、テッセレーション・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなど、グラフィックス処理関係シェーダ・プログラムを実行するように構成され得る。少なくとも1つの実施例では、並列処理ユニット2002は、処理のためにI/Oユニット2004を介してシステム・メモリからデータを転送することができる。少なくとも1つの実施例では、処理中に、転送されたデータは、処理中にオンチップ・メモリ(たとえば、並列プロセッサ・メモリ2022)に記憶され、次いでシステム・メモリに書き戻され得る。
【0313】
少なくとも1つの実施例では、並列処理ユニット2002がグラフィックス処理を実施するために使用されるとき、スケジューラ2010は、処理クラスタ・アレイ2012の複数のクラスタ2014A~2014Nへのグラフィックス処理動作の分散をより良く可能にするために、処理ワークロードをほぼ等しいサイズのタスクに分割するように構成され得る。少なくとも1つの実施例では、処理クラスタ・アレイ2012の部分は、異なるタイプの処理を実施するように構成され得る。たとえば、少なくとも1つの実施例では、表示のために、レンダリングされた画像を作り出すために、第1の部分は、頂点シェーディング及びトポロジ生成を実施するように構成され得、第2の部分は、テッセレーション及びジオメトリ・シェーディングを実施するように構成され得、第3の部分は、ピクセル・シェーディング又は他のスクリーン空間動作を実施するように構成され得る。少なくとも1つの実施例では、クラスタ2014A~2014Nのうちの1つ又は複数によって作り出された中間データは、中間データがさらなる処理のためにクラスタ2014A~2014N間で送信されることを可能にするために、バッファに記憶され得る。
【0314】
少なくとも1つの実施例では、処理クラスタ・アレイ2012は、実行されるべき処理タスクをスケジューラ2010を介して受信することができ、スケジューラ2010は、処理タスクを定義するコマンドをフロント・エンド2008から受信する。少なくとも1つの実施例では、処理タスクは、処理されるべきデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに、データがどのように処理されるべきであるか(たとえば、どのプログラムが実行されるべきであるか)を定義する状態パラメータ及びコマンドを含むことができる。少なくとも1つの実施例では、スケジューラ2010は、タスクに対応するインデックスをフェッチするように構成され得るか、又はフロント・エンド2008からインデックスを受信し得る。少なくとも1つの実施例では、フロント・エンド2008は、入って来るコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが始動される前に、処理クラスタ・アレイ2012が有効な状態に構成されることを確実にするように構成され得る。
【0315】
少なくとも1つの実施例では、並列処理ユニット2002の1つ又は複数のインスタンスの各々は、並列プロセッサ・メモリ2022と結合することができる。少なくとも1つの実施例では、並列プロセッサ・メモリ2022は、メモリ・クロスバー2016を介してアクセスされ得、メモリ・クロスバー2016は、処理クラスタ・アレイ2012並びにI/Oユニット2004からメモリ要求を受信することができる。少なくとも1つの実施例では、メモリ・クロスバー2016は、メモリ・インターフェース2018を介して並列プロセッサ・メモリ2022にアクセスすることができる。少なくとも1つの実施例では、メモリ・インターフェース2018は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2020A、パーティション・ユニット2020B~パーティション・ユニット2020N)を含むことができ、複数のパーティション・ユニットは、各々、並列プロセッサ・メモリ2022の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも1つの実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・ユニットの数に等しくなるように構成され、それにより、第1のパーティション・ユニット2020Aは、対応する第1のメモリ・ユニット2024Aを有し、第2のパーティション・ユニット2020Bは、対応するメモリ・ユニット2024Bを有し、第Nのパーティション・ユニット2020Nは、対応する第Nのメモリ・ユニット2024Nを有する。少なくとも1つの実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・デバイスの数に等しくないことがある。
【0316】
少なくとも1つの実施例では、メモリ・ユニット2024A~2024Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも1つの実施例では、メモリ・ユニット2024A~2024Nは、限定はしないが高帯域幅メモリ(HBM)を含む、3D積層メモリをも含み得る。少なくとも1つの実施例では、並列プロセッサ・メモリ2022の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2024A~2024Nにわたって記憶されて、パーティション・ユニット2020A~2020Nが、各レンダー・ターゲットの部分を並列に書き込むことを可能にし得る。少なくとも1つの実施例では、ローカル・キャッシュ・メモリと併せてシステム・メモリを利用する統一メモリ設計に有利なように、並列プロセッサ・メモリ2022のローカル・インスタンスが除外され得る。
【0317】
少なくとも1つの実施例では、処理クラスタ・アレイ2012のクラスタ2014A~2014Nのいずれか1つは、並列プロセッサ・メモリ2022内のメモリ・ユニット2024A~2024Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも1つの実施例では、メモリ・クロスバー2016は、各クラスタ2014A~2014Nの出力を、出力に対して追加の処理動作を実施することができる任意のパーティション・ユニット2020A~2020Nに転送するか、又は別のクラスタ2014A~2014Nに転送するように構成され得る。少なくとも1つの実施例では、各クラスタ2014A~2014Nは、様々な外部メモリ・デバイスから読み取るか、又はそれに書き込むために、メモリ・クロスバー2016を通してメモリ・インターフェース2018と通信することができる。少なくとも1つの実施例では、メモリ・クロスバー2016は、I/Oユニット2004と通信するためのメモリ・インターフェース2018への接続、並びに、並列プロセッサ・メモリ2022のローカル・インスタンスへの接続を有し、これは、異なる処理クラスタ2014A~2014N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2002にローカルでない他のメモリと通信することを可能にする。少なくとも1つの実施例では、メモリ・クロスバー2016は、クラスタ2014A~2014Nとパーティション・ユニット2020A~2020Nとの間でトラフィック・ストリームを分離するために、仮想チャネルを使用することができる。
【0318】
少なくとも1つの実施例では、並列処理ユニット2002の複数のインスタンスは、単一のアドイン・カード上で提供され得るか、又は複数のアドイン・カードが相互接続され得る。少なくとも1つの実施例では、並列処理ユニット2002の異なるインスタンスは、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の構成の差を有する場合でも、相互動作するように構成され得る。たとえば、少なくとも1つの実施例では、並列処理ユニット2002のいくつかのインスタンスは、他のインスタンスに対してより高い精度の浮動小数点ユニットを含むことができる。少なくとも1つの実施例では、並列処理ユニット2002又は並列プロセッサ2000の1つ又は複数のインスタンスを組み込んだシステムは、限定はしないが、デスクトップ、ラップトップ、又はハンドヘルド・パーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含む、様々な構成及びフォーム・ファクタにおいて実装され得る。
【0319】
図20Bは、少なくとも1つの実施例による、パーティション・ユニット2020のブロック図である。少なくとも1つの実施例では、パーティション・ユニット2020は、
図20Aのパーティション・ユニット2020A~2020Nのうちの1つのインスタンスである。少なくとも1つの実施例では、パーティション・ユニット2020は、L2キャッシュ2021と、フレーム・バッファ・インターフェース2025と、ROP2026(ラスタ演算ユニット)とを含む。少なくとも1つの実施例では、L2キャッシュ2021は、メモリ・クロスバー2016及びROP2026から受信されたロード動作及びストア動作を実施するように構成された読取り/書込みキャッシュである。少なくとも1つの実施例では、読取りミス及び至急の書戻し要求が、処理のためにL2キャッシュ2021によってフレーム・バッファ・インターフェース2025に出力される。少なくとも1つの実施例では、更新も、処理のためにフレーム・バッファ・インターフェース2025を介してフレーム・バッファに送出され得る。少なくとも1つの実施例では、フレーム・バッファ・インターフェース2025は、
図20の(たとえば、並列プロセッサ・メモリ2022内の)メモリ・ユニット2024A~2024Nなど、並列プロセッサ・メモリ中のメモリ・ユニットのうちの1つとインターフェースする。
【0320】
少なくとも1つの実施例では、ROP2026は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実施する処理ユニットである。少なくとも1つの実施例では、ROP2026は、次いで、グラフィックス・メモリに記憶された、処理されたグラフィックス・データを出力する。少なくとも1つの実施例では、ROP2026は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも1つの実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理であり得る。少なくとも1つの実施例では、ROP2026によって実施される圧縮のタイプは、圧縮されるべきデータの統計的特性に基づいて変動することができる。たとえば、少なくとも1つの実施例では、深度及び色データに対して、タイルごとにデルタ色圧縮が実施される。
【0321】
少なくとも1つの実施例では、ROP2026は、パーティション・ユニット2020内ではなく、各処理クラスタ(たとえば、
図20Aのクラスタ2014A~2014N)内に含まれる。少なくとも1つの実施例では、ピクセル・フラグメント・データではなく、ピクセル・データについての読取り及び書込み要求が、メモリ・クロスバー2016を介して送信される。少なくとも1つの実施例では、処理されたグラフィックス・データは、
図19の1つ又は複数のディスプレイ・デバイス1910のうちの1つなどのディスプレイ・デバイス上に表示され、(1つ又は複数の)プロセッサ1902によるさらなる処理のためにルーティングされるか、又は
図20Aの並列プロセッサ2000内の処理エンティティのうちの1つによるさらなる処理のためにルーティングされ得る。
【0322】
図20Cは、少なくとも1つの実施例による、並列処理ユニット内の処理クラスタ2014のブロック図である。少なくとも1つの実施例では、処理クラスタは、
図20Aの処理クラスタ2014A~2014Nのうちの1つのインスタンスである。少なくとも1つの実施例では、処理クラスタ2014は、多くのスレッドを並列で実行するように構成され得、「スレッド」は、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも1つの実施例では、複数の独立した命令ユニットを提供することなしに多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)命令発行技法が使用される。少なくとも1つの実施例では、処理クラスタの各処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction,multiple-thread)技法が使用される。
【0323】
少なくとも1つの実施例では、処理クラスタ2014の動作は、SIMT並列プロセッサに処理タスクを分散させるパイプライン・マネージャ2032を介して制御され得る。少なくとも1つの実施例では、パイプライン・マネージャ2032は、
図20Aのスケジューラ2010から命令を受信し、グラフィックス・マルチプロセッサ2034及び/又はテクスチャ・ユニット2036を介してそれらの命令の実行を管理する。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、SIMT並列プロセッサの例示的なインスタンスである。しかしながら、少なくとも1つの実施例では、異なるアーキテクチャの様々なタイプのSIMT並列プロセッサが、処理クラスタ2014内に含められ得る。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034の1つ又は複数のインスタンスは、処理クラスタ2014内に含められ得る。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034はデータを処理することができ、処理されたデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分散させるために、データ・クロスバー2040が使用され得る。少なくとも1つの実施例では、パイプライン・マネージャ2032は、データ・クロスバー2040を介して分散されることになる処理されたデータのための宛先を指定することによって、処理されたデータの分散を容易にすることができる。
【0324】
少なくとも1つの実施例では、処理クラスタ2014内の各グラフィックス・マルチプロセッサ2034は、関数実行論理(たとえば、算術論理ユニット、ロード-ストア・ユニットなど)の同一のセットを含むことができる。少なくとも1つの実施例では、関数実行論理は、前の命令が完了する前に新しい命令が発行され得るパイプライン様式で構成され得る。少なくとも1つの実施例では、関数実行論理は、整数及び浮動小数点算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の算出を含む様々な演算をサポートする。少なくとも1つの実施例では、異なる演算を実施するために同じ関数ユニット・ハードウェアが活用され得、関数ユニットの任意の組合せが存在し得る。
【0325】
少なくとも1つの実施例では、処理クラスタ2014に送信される命令がスレッドを構成する。少なくとも1つの実施例では、並列処理エンジンのセットにわたって実行しているスレッドのセットが、スレッド・グループである。少なくとも1つの実施例では、スレッド・グループは、異なる入力データに対して共通のプログラムを実行する。少なくとも1つの実施例では、スレッド・グループ内の各スレッドは、グラフィックス・マルチプロセッサ2034内の異なる処理エンジンに割り当てられ得る。少なくとも1つの実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも少ないスレッドを含み得る。少なくとも1つの実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含むとき、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にアイドルであり得る。少なくとも1つの実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも多いスレッドを含み得る。少なくとも1つの実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも多くのスレッドを含むとき、連続するクロック・サイクルにわたって処理が実施され得る。少なくとも1つの実施例では、複数のスレッド・グループが、グラフィックス・マルチプロセッサ2034上で同時に実行され得る。
【0326】
少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、ロード動作及びストア動作を実施するための内部キャッシュ・メモリを含む。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、内部キャッシュをやめ、処理クラスタ2014内のキャッシュ・メモリ(たとえば、L1キャッシュ2048)を使用することができる。少なくとも1つの実施例では、各グラフィックス・マルチプロセッサ2034はまた、パーティション・ユニット(たとえば、
図20Aのパーティション・ユニット2020A~2020N)内のL2キャッシュへのアクセスをも有し、それらのL2キャッシュは、すべての処理クラスタ2014の間で共有され、スレッド間でデータを転送するために使用され得る。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034はまた、オフチップ・グローバル・メモリにアクセスし得、オフチップ・グローバル・メモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも1つの実施例では、並列処理ユニット2002の外部の任意のメモリが、グローバル・メモリとして使用され得る。少なくとも1つの実施例では、処理クラスタ2014は、グラフィックス・マルチプロセッサ2034の複数のインスタンスを含み、共通の命令及びデータを共有することができ、共通の命令及びデータは、L1キャッシュ2048に記憶され得る。
【0327】
少なくとも1つの実施例では、各処理クラスタ2014は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2045(メモリ管理ユニット)を含み得る。少なくとも1つの実施例では、MMU2045の1つ又は複数のインスタンスは、
図20Aのメモリ・インターフェース2018内に存在し得る。少なくとも1つの実施例では、MMU2045は、仮想アドレスを、タイル及び随意にキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE:page table entry)のセットを含む。少なくとも1つの実施例では、MMU2045は、アドレス・トランスレーション・ルックアサイド・バッファ(TLB)又はキャッシュを含み得、これらは、グラフィックス・マルチプロセッサ2034又はL1 2048キャッシュ或いは処理クラスタ2014内に存在し得る。少なくとも1つの実施例では、物理アドレスが、表面データ・アクセスをローカルに分散させて、パーティション・ユニットの間での効率的な要求インターリーブを可能にするために処理される。少なくとも1つの実施例では、キャッシュ・ライン・インデックスが、キャッシュ・ラインについての要求がヒットであるのかミスであるのかを決定するために使用され得る。
【0328】
少なくとも1つの実施例では、処理クラスタ2014は、各グラフィックス・マルチプロセッサ2034が、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置を決定すること、テクスチャ・データを読み取ること、及びテクスチャ・データをフィルタリングすることを実施するためのテクスチャ・ユニット2036に結合されるように、構成され得る。少なくとも1つの実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から又はグラフィックス・マルチプロセッサ2034内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも1つの実施例では、各グラフィックス・マルチプロセッサ2034は、処理されたタスクをデータ・クロスバー2040に出力して、処理されたタスクを、さらなる処理のために別の処理クラスタ2014に提供するか、或いは、処理されたタスクを、メモリ・クロスバー2016を介してL2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに記憶する。少なくとも1つの実施例では、プレROP2042(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2034からデータを受信し、データをROPユニットにダイレクトするように構成され、ROPユニットは、本明細書で説明されるようなパーティション・ユニット(たとえば、
図20Aのパーティション・ユニット2020A~2020N)とともに位置し得る。少なくとも1つの実施例では、プレROP2042ユニットは、色ブレンディングのための最適化を実施して、ピクセル色データを組織化し、アドレス・トランスレーションを実施することができる。
【0329】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにグラフィックス処理クラスタ2014において使用され得る。
【0330】
図20Dは、少なくとも1つの実施例による、グラフィックス・マルチプロセッサ2034を示す。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、処理クラスタ2014のパイプライン・マネージャ2032と結合する。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、限定はしないが、命令キャッシュ2052と、命令ユニット2054と、アドレス・マッピング・ユニット2056と、レジスタ・ファイル2058と、1つ又は複数の汎用グラフィックス処理ユニット(GPGPU)コア2062と、1つ又は複数のロード/ストア・ユニット2066とを含む実行パイプラインを有する。少なくとも1つの実施例では、GPGPUコア2062及びロード/ストア・ユニット2066は、メモリ及びキャッシュ相互接続2068を介してキャッシュ・メモリ2072及び共有メモリ2070と結合される。
【0331】
少なくとも1つの実施例では、命令キャッシュ2052は、実行すべき命令のストリームをパイプライン・マネージャ2032から受信する。少なくとも1つの実施例では、命令は、命令キャッシュ2052においてキャッシュされ、命令ユニット2054による実行のためにディスパッチされる。少なくとも1つの実施例では、命令ユニット2054は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、スレッド・グループの各スレッドは、GPGPUコア2062内の異なる実行ユニットに割り当てられる。少なくとも1つの実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも1つの実施例では、アドレス・マッピング・ユニット2056は、統一アドレス空間中のアドレスを、ロード/ストア・ユニット2066によってアクセスされ得る個別メモリ・アドレスにトランスレートするために使用され得る。
【0332】
少なくとも1つの実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニットにレジスタのセットを提供する。少なくとも1つの実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニット(たとえば、GPGPUコア2062、ロード/ストア・ユニット2066)のデータ経路に接続された、オペランドのための一時的ストレージを提供する。少なくとも1つの実施例では、レジスタ・ファイル2058は、各機能ユニットがレジスタ・ファイル2058の専用部分を割り振られるように、機能ユニットの各々の間で分割される。一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034によって実行されている異なるワープ間で分割される。
【0333】
少なくとも1つの実施例では、GPGPUコア2062は、各々、グラフィックス・マルチプロセッサ2034の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理ユニット(ALU)を含むことができる。少なくとも1つの実施例では、GPGPUコア2062は、同様のアーキテクチャであることも異なるアーキテクチャであることもある。少なくとも1つの実施例では、GPGPUコア2062の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも1つの実施例では、FPUは、IEEE754-2008規格浮動小数点算術を実装することができるか、又は、可変精度の浮動小数点算術を有効にすることができる。少なくとも1つの実施例では、グラフィックス・マルチプロセッサ2034は、追加として、矩形コピー動作又はピクセル・ブレンディング動作などの特定の機能を実施するための1つ又は複数の固定機能ユニット又は特殊機能ユニットを含むことができる。少なくとも1つの実施例では、GPGPUコア2062のうちの1つ又は複数は、固定又は特別機能論理をも含むことができる。
【0334】
少なくとも1つの実施例では、GPGPUコア2062は、データの複数のセットに対して単一の命令を実施することが可能なSIMD論理を含む。少なくとも1つの実施例では、GPGPUコア2062は、SIMD4、SIMD8、及びSIMD16命令を物理的に実行し、SIMD1、SIMD2、及びSIMD32命令を論理的に実行することができる。少なくとも1つの実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されるか、或いは、単一プログラム複数データ(SPMD:single program multiple data)又はSIMTアーキテクチャのために書かれ、コンパイルされたプログラムを実行しているときに自動的に生成され得る。少なくとも1つの実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行され得る。たとえば、少なくとも1つの実施例では、同じ又は同様の動作を実施する8つのSIMTスレッドが、単一のSIMD8論理ユニットを介して並列に実行され得る。
【0335】
少なくとも1つの実施例では、メモリ及びキャッシュ相互接続2068は、グラフィックス・マルチプロセッサ2034の各機能ユニットをレジスタ・ファイル2058及び共有メモリ2070に接続する相互接続ネットワークである。少なくとも1つの実施例では、メモリ及びキャッシュ相互接続2068は、ロード/ストア・ユニット2066が、共有メモリ2070とレジスタ・ファイル2058との間でロード動作及びストア動作を実装することを可能にするクロスバー相互接続である。少なくとも1つの実施例では、レジスタ・ファイル2058は、GPGPUコア2062と同じ周波数において動作することができ、したがって、GPGPUコア2062とレジスタ・ファイル2058との間のデータ転送は、非常に低いレイテンシを有することができる。少なくとも1つの実施例では、共有メモリ2070は、グラフィックス・マルチプロセッサ2034内の機能ユニット上で実行するスレッド間の通信を可能にするために使用され得る。少なくとも1つの実施例では、キャッシュ・メモリ2072は、たとえば、機能ユニットとテクスチャ・ユニット2036との間で通信されるテクスチャ・データをキャッシュするために、データ・キャッシュとして使用され得る。少なくとも1つの実施例では、共有メモリ2070は、プログラム管理キャッシュとしても使用され得る。少なくとも1つの実施例では、GPGPUコア2062上で実行しているスレッドは、キャッシュ・メモリ2072内に記憶される自動的にキャッシュされるデータに加えて、データを共有メモリ内にプログラム的に記憶することができる。
【0336】
少なくとも1つの実施例では、本明細書で説明されるような並列プロセッサ又はGPGPUは、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速するために、ホスト/プロセッサ・コアに通信可能に結合される。少なくとも1つの実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合され得る。少なくとも1つの実施例では、GPUは、コアとしてパッケージ又はチップに集積され、パッケージ又はチップの内部の内部プロセッサ・バス/相互接続を介してコアに通信可能に結合され得る。少なくとも1つの実施例では、GPUが接続される様式にかかわらず、プロセッサ・コアは、ワーク記述子中に含まれているコマンド/命令のシーケンスの形態で、ワークをそのようなGPUに割り振り得る。少なくとも1つの実施例では、そのGPUは、次いで、これらのコマンド/命令を効率的に処理するための専用回路要素/論理を使用する。
【0337】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにグラフィックス・マルチプロセッサ2034において使用され得る。
【0338】
少なくとも1つの実施例では、
図20A~
図20Dに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図20A~
図20Dに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図20A~
図20Dに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0339】
図21は、少なくとも1つの実施例による、マルチGPUコンピューティング・システム2100を示す。少なくとも1つの実施例では、マルチGPUコンピューティング・システム2100は、ホスト・インターフェース・スイッチ2104を介して複数の汎用グラフィックス処理ユニット(GPGPU)2106A~Dに結合されたプロセッサ2102を含むことができる。少なくとも1つの実施例では、ホスト・インターフェース・スイッチ2104は、プロセッサ2102をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、PCIエクスプレス・バスを介して、プロセッサ2102は、GPGPU2106A~Dと通信することができる。少なくとも1つの実施例では、GPGPU2106A~Dは、高速ポイントツーポイントGPUツーGPUリンク2116のセットを介して相互接続することができる。少なくとも1つの実施例では、GPUツーGPUリンク2116は、専用GPUリンクを介してGPGPU2106A~Dの各々に接続する。少なくとも1つの実施例では、P2P GPUリンク2116は、プロセッサ2102が接続されるホスト・インターフェース・バス2104を介した通信を必要とすることなしにGPGPU2106A~Dの各々の間の直接通信を可能にする。少なくとも1つの実施例では、P2P GPUリンク2116にダイレクトされたGPUツーGPUトラフィックがある場合、ホスト・インターフェース・バス2104は、システム・メモリ・アクセスのために、又はたとえば1つ又は複数のネットワーク・デバイスを介してマルチGPUコンピューティング・システム2100の他のインスタンスと通信するために、利用可能なままである。少なくとも1つの実施例では、GPGPU2106A~Dは、ホスト・インターフェース・スイッチ2104を介してプロセッサ2102に接続し、少なくとも1つの実施例では、プロセッサ2102は、P2P GPUリンク2116の直接サポートを含み、GPGPU2106A~Dに直接接続することができる。
【0340】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにマルチGPUコンピューティング・システム2100において使用され得る。
【0341】
少なくとも1つの実施例では、
図21に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図21に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図21に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0342】
図22は、少なくとも1つの実施例による、グラフィックス・プロセッサ2200のブロック図である。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202と、パイプライン・フロント・エンド2204と、メディア・エンジン2237と、グラフィックス・コア2280A~2280Nとを含む。少なくとも1つの実施例では、リング相互接続2202は、グラフィックス・プロセッサ2200を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、マルチコア処理システム内に組み込まれた多くのプロセッサのうちの1つである。
【0343】
少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202を介してコマンドのバッチを受信する。少なくとも1つの実施例では、入って来るコマンドは、パイプライン・フロント・エンド2204中のコマンド・ストリーマ2203によって解釈される。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、(1つ又は複数の)グラフィックス・コア2280A~2280Nを介して3Dジオメトリ処理及びメディア処理を実施するためのスケーラブル実行論理を含む。少なくとも1つの実施例では、3Dジオメトリ処理コマンドについて、コマンド・ストリーマ2203は、コマンドをジオメトリ・パイプライン2236に供給する。少なくとも1つの実施例では、少なくともいくつかのメディア処理コマンドについて、コマンド・ストリーマ2203は、コマンドをビデオ・フロント・エンド2234に供給し、ビデオ・フロント・エンド2234はメディア・エンジン2237と結合する。少なくとも1つの実施例では、メディア・エンジン2237は、ビデオ及び画像後処理のためのビデオ品質エンジン(VQE:Video Quality Engine)2230と、ハードウェア加速メディア・データ符号化及び復号を提供するためのマルチ・フォーマット・エンコード/デコード(MFX:multi-format encode/decode)2233エンジンとを含む。少なくとも1つの実施例では、ジオメトリ・パイプライン2236及びメディア・エンジン2237は、各々、少なくとも1つのグラフィックス・コア2280によって提供されるスレッド実行リソースのための実行スレッドを生成する。
【0344】
少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、各々が(コア・サブ・スライスと呼ばれることもある)複数のサブ・コア2250A~50N、2260A~2260Nを有する、(モジュール式であり得、コア・スライスと呼ばれることもある)グラフィックス・コア2280A~2280Nを特徴とするスケーラブル・スレッド実行リソースを含む。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、任意の数のグラフィックス・コア2280Aを有することができる。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、少なくとも第1のサブ・コア2250A及び第2のサブ・コア2260Aを有するグラフィックス・コア2280Aを含む。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、単一のサブ・コア(たとえば、2250A)をもつ低電力プロセッサである。少なくとも1つの実施例では、グラフィックス・プロセッサ2200は、各々が第1のサブ・コア2250A~2250Nのセットと第2のサブ・コア2260A~2260Nのセットとを含む、複数のグラフィックス・コア2280A~2280Nを含む。少なくとも1つの実施例では、第1のサブ・コア2250A~2250N中の各サブ・コアは、少なくとも、実行ユニット2252A~2252N及びメディア/テクスチャ・サンプラ2254A~2254Nの第1のセットを含む。少なくとも1つの実施例では、第2のサブ・コア2260A~2260N中の各サブ・コアは、少なくとも、実行ユニット2262A~2262N及びサンプラ2264A~2264Nの第2のセットを含む。少なくとも1つの実施例では、各サブ・コア2250A~2250N、2260A~2260Nは、共有リソース2270A~2270Nのセットを共有する。少なくとも1つの実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
【0345】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のためにグラフィックス・プロセッサ2200において使用され得る。
【0346】
少なくとも1つの実施例では、
図22に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図22に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図22に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0347】
図23は、少なくとも1つの実施例による、命令を実施するための論理回路を含み得るプロセッサ2300のためのマイクロアーキテクチャを示すブロック図である。少なくとも1つの実施例では、プロセッサ2300は、x86命令、AMR命令、特定用途向け集積回路(ASIC)のための特別命令などを含む命令を実施し得る。少なくとも1つの実施例では、プロセッサ2300は、カリフォルニア州サンタクララのIntel Corporationからの、MMX技術で可能にされたマイクロプロセッサ中の64ビット幅MMX(商標)レジスタなど、パック・データを記憶するためのレジスタを含み得る。少なくとも1つの実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extension)命令を伴うパック・データ要素で動作し得る。少なくとも1つの実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)技術に関係する128ビット幅XMMレジスタは、そのようなパック・データ・オペランドを保持し得る。少なくとも1つの実施例では、プロセッサ2300は、機械学習アルゴリズム又は深層学習アルゴリズム、訓練、或いは推論を加速するために命令を実施し得る。
【0348】
少なくとも1つの実施例では、プロセッサ2300は、実行されるべき命令をフェッチし、プロセッサ・パイプラインにおいて後で使用されるべき命令を準備するためのイン・オーダー・フロント・エンド(「フロント・エンド」)2301を含む。少なくとも1つの実施例では、フロント・エンド2301は、いくつかのユニットを含み得る。少なくとも1つの実施例では、命令プリフェッチャ2326が、メモリから命令をフェッチし、命令を命令デコーダ2328にフィードし、命令デコーダ2328が命令を復号又は解釈する。たとえば、少なくとも1つの実施例では、命令デコーダ2328は、受信された命令を、機械が実行し得る「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプ」又は「uop」とも呼ばれる)1つ又は複数のオペレーションに復号する。少なくとも1つの実施例では、命令デコーダ2328は、命令を、少なくとも1つの実施例による動作を実施するためにマイクロアーキテクチャによって使用され得るオプコード及び対応するデータ並びに制御フィールドに構文解析する。少なくとも1つの実施例では、トレース・キャッシュ2330は、復号されたuopを、実行のためにuopキュー2334においてプログラム順のシーケンス又はトレースにアセンブルし得る。少なくとも1つの実施例では、トレース・キャッシュ2330が複雑な命令に遭遇したとき、マイクロコードROM2332が、動作を完了するために必要なuopを提供する。
【0349】
少なくとも1つの実施例では、単一のマイクロ・オプにコンバートされ得る命令もあれば、全動作を完了するためにいくつかのマイクロ・オプを必要とする命令もある。少なくとも1つの実施例では、命令を完了するために5つ以上のマイクロ・オプが必要とされる場合、命令デコーダ2328は、マイクロコードROM2332にアクセスしてその命令を実施し得る。少なくとも1つの実施例では、命令は、命令デコーダ2328における処理のために少数のマイクロ・オプに復号され得る。少なくとも1つの実施例では、命令は、そのような動作を達成するためにいくつかのマイクロ・オプが必要とされる場合、マイクロコードROM2332内に記憶され得る。少なくとも1つの実施例では、トレース・キャッシュ2330は、少なくとも1つの実施例によるマイクロコードROM2332からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを決定する。少なくとも1つの実施例では、マイクロコードROM2332が命令のためにマイクロ・オプのシーケンシングを終えた後、機械のフロント・エンド2301は、トレース・キャッシュ2330からマイクロ・オプをフェッチすることを再開し得る。
【0350】
少なくとも1つの実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2303は、実行のために命令を準備し得る。少なくとも1つの実施例では、アウト・オブ・オーダー実行論理は、命令がパイプラインを下り、実行のためにスケジューリングされるときの性能を最適化するために、命令のフローをなめらかにし、それを並び替えるためのいくつかのバッファを有する。少なくとも1つの実施例では、アウト・オブ・オーダー実行エンジン2303は、限定はしないが、アロケータ/レジスタ・リネーマ2340と、メモリuopキュー2342と、整数/浮動小数点uopキュー2344と、メモリ・スケジューラ2346と、高速スケジューラ2302と、低速/汎用浮動小数点スケジューラ(「低速/汎用FP(floating point)スケジューラ」)2304と、単純浮動小数点スケジューラ(「単純FPスケジューラ」)2306とを含む。少なくとも1つの実施例では、高速スケジューラ2302、低速/汎用浮動小数点スケジューラ2304、及び単純浮動小数点スケジューラ2306は、総称して本明細書では「uopスケジューラ2302、2304、2306」とも呼ばれる。少なくとも1つの実施例では、アロケータ/レジスタ・リネーマ2340は、実行するために各uopが必要とする機械バッファ及びリソースを割り振る。少なくとも1つの実施例では、アロケータ/レジスタ・リネーマ2340は、レジスタ・ファイルへのエントリ時に論理レジスタをリネームする。少なくとも1つの実施例では、アロケータ/レジスタ・リネーマ2340はまた、メモリ・スケジューラ2346及びuopスケジューラ2302、2304、2306の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2342及び非メモリ動作のための整数/浮動小数点uopキュー2344のうちの1つにおいて、各uopのためのエントリを割り振る。少なくとも1つの実施例では、uopスケジューラ2302、2304、2306は、uopがいつ実行する準備ができるかを、それらの従属入力レジスタ・オペランド・ソースが準備されていることと、それらの動作を完了するためにuopが必要とする実行リソースの利用可能性とに基づいて、決定する。少なくとも1つの実施例では、高速スケジューラ2302は、メイン・クロック・サイクルの半分ごとにスケジューリングし得、低速/汎用浮動小数点スケジューラ2304及び単純浮動小数点スケジューラ2306は、メイン・プロセッサ・クロック・サイクル当たりに1回スケジューリングし得る。少なくとも1つの実施例では、uopスケジューラ2302、2304、2306は、実行のためにuopをスケジューリングするためにディスパッチ・ポートを調停する。
【0351】
少なくとも1つの実施例では、実行ブロック2311は、限定はしないが、整数レジスタ・ファイル/バイパス・ネットワーク2308と、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2310と、アドレス生成ユニット(「AGU」:address generation unit)2312及び2314と、高速算術論理ユニット(ALU)(「高速ALU」)2316及び2318と、低速算術論理ユニット(「低速ALU」)2320と、浮動小数点ALU(「FP」)2322と、浮動小数点移動ユニット(「FP移動」)2324とを含む。少なくとも1つの実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、本明細書では「レジスタ・ファイル2308、2310」とも呼ばれる。少なくとも1つの実施例では、AGU2312及び2314、高速ALU2316及び2318、低速ALU2320、浮動小数点ALU2322、及び浮動小数点移動ユニット2324は、本明細書では「実行ユニット2312、2314、2316、2318、2320、2322、及び2324」とも呼ばれる。少なくとも1つの実施例では、実行ブロック2311は、限定はしないが、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含み得る。
【0352】
少なくとも1つの実施例では、レジスタ・ネットワーク2308、2310は、uopスケジューラ2302、2304、2306と、実行ユニット2312、2314、2316、2318、2320、2322、及び2324との間に配置され得る。少なくとも1つの実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、整数演算を実施する。少なくとも1つの実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、浮動小数点演算を実施する。少なくとも1つの実施例では、レジスタ・ネットワーク2308、2310の各々は、限定はしないが、バイパス・ネットワークを含み得、バイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopにバイパス又はフォワーディングし得る。少なくとも1つの実施例では、レジスタ・ネットワーク2308、2310は、互いにデータを通信し得る。少なくとも1つの実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、限定はしないが、2つの別個のレジスタ・ファイル、すなわち低次32ビットのデータのための1つのレジスタ・ファイル及び高次32ビットのデータのための第2のレジスタ・ファイルを含み得る。少なくとも1つの実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有するので、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、限定はしないが、128ビット幅のエントリを含み得る。
【0353】
少なくとも1つの実施例では、実行ユニット2312、2314、2316、2318、2320、2322、2324は、命令を実行し得る。少なくとも1つの実施例では、レジスタ・ネットワーク2308、2310は、マイクロ命令が実行する必要がある整数及び浮動小数点データ・オペランド値を記憶する。少なくとも1つの実施例では、プロセッサ2300は、限定はしないが、任意の数及び組合せの実行ユニット2312、2314、2316、2318、2320、2322、2324を含み得る。少なくとも1つの実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、浮動小数点、MMX、SIMD、AVX及びSEE、又は特別な機械学習命令を含む他の演算を実行し得る。少なくとも1つの実施例では、浮動小数点ALU2322は、限定はしないが、除算、平方根、及び剰余マイクロ・オプを実行するための64ビットずつの浮動小数点デバイダを含み得る。少なくとも1つの実施例では、浮動小数点値を伴う命令は、浮動小数点ハードウェアで対処され得る。少なくとも1つの実施例では、ALU演算は、高速ALU2316、2318に渡され得る。少なくとも1つの実施例では、高速ALU2316、2318は、クロック・サイクルの半分の実効レイテンシを伴う高速演算を実行し得る。少なくとも1つの実施例では、低速ALU2320は、限定はしないが、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを含み得るので、ほとんどの複雑な整数演算は低速ALU2320に進む。少なくとも1つの実施例では、メモリ・ロード/ストア動作は、AGU2312、2314によって実行され得る。少なくとも1つの実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、64ビット・データ・オペランドで整数演算を実施し得る。少なくとも1つの実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするために実装され得る。少なくとも1つの実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、SIMD及びマルチメディア命令と併せた128ビット幅のパック・データ・オペランドなど、様々なビット幅を有する様々なオペランドをサポートするために実装され得る。
【0354】
少なくとも1つの実施例では、uopスケジューラ2302、2304、2306は、親ロードが実行し終える前に従属演算をディスパッチする。少なくとも1つの実施例では、uopは、プロセッサ2300において投機的にスケジューリング及び実行され得るので、プロセッサ2300は、メモリ・ミスに対処するための論理をも含み得る。少なくとも1つの実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータをもつスケジューラを通り過ぎたパイプラインにおいて、進行中の従属演算があり得る。少なくとも1つの実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも1つの実施例では、従属演算は、リプレイされる必要があり得、独立した演算は、完了することを可能にされ得る。少なくとも1つの実施例では、プロセッサの少なくとも1つの実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計され得る。
【0355】
少なくとも1つの実施例では、「レジスタ」は、オペランドを識別するための命令の一部として使用され得るオンボード・プロセッサ・ストレージ・ロケーションを指し得る。少なくとも1つの実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであり得る。少なくとも1つの実施例では、レジスタは、特定のタイプの回路に限定されないことがある。むしろ、少なくとも1つの実施例では、レジスタは、データを記憶し、データを提供し、本明細書で説明される機能を実施し得る。少なくとも1つの実施例では、本明細書で説明されるレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に割り振られる物理レジスタ、専用物理レジスタと動的に割り振られる物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路要素によって実装され得る。少なくとも1つの実施例では、整数レジスタは、32ビット整数データを記憶する。少なくとも1つの実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタをも含んでいる。
【0356】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、実行ブロック2311と、示されている又は示されていない他のメモリ又はレジスタとに組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、実行ブロック2311に示されているALUのうちの1つ又は複数を使用し得る。その上、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するための実行ブロック2311のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0357】
少なくとも1つの実施例では、
図23に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図23に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図23に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0358】
図24は、少なくとも1つの実施例による、深層学習アプリケーション・プロセッサ2400を示す。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、深層学習アプリケーション・プロセッサ2400によって実行された場合、深層学習アプリケーション・プロセッサ2400に、本開示全体を通して説明されるプロセス及び技法のいくつか又はすべてを実施させる命令を使用する。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、特定用途向け集積回路(ASIC)である。少なくとも1つの実施例では、アプリケーション・プロセッサ2400は、1つ又は複数の命令又は両方を実施した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実施する。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、限定はしないが、処理クラスタ2410(1)~2410(12)と、チップ間リンク(「ICL」:Inter-Chip Link)2420(1)~2420(12)と、チップ間コントローラ(「ICC」:Inter-Chip Controller)2430(1)~2430(2)と、高帯域幅メモリ第2世代(「HBM2」:high-bandwidth memory second generation)2440(1)~2440(4)と、メモリ・コントローラ(「Mem Ctrlr」)2442(1)~2442(4)と、高帯域幅メモリ物理層(「HBM PHY」:high bandwidth memory physical layer)2444(1)~2444(4)と、管理-コントローラ中央処理ユニット(「管理-コントローラCPU」)2450と、シリアル周辺インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I
2C、GPIO」:Serial Peripheral Interface,Inter-Integrated Circuit,and General Purpose Input/Output)2460と、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセスブロック(「PCIeコントローラ及びDMA」)2470と、16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Express x 16」)2480とを含む。
【0359】
少なくとも1つの実施例では、処理クラスタ2410は、本明細書で説明される技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づいて、推論又は予測演算を含む深層学習演算を実施し得る。少なくとも1つの実施例では、各処理クラスタ2410は、限定はしないが、任意の数及びタイプのプロセッサを含み得る。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、任意の数及びタイプの処理クラスタ2400を含み得る。少なくとも1つの実施例では、チップ間リンク2420は、双方向性である。少なくとも1つの実施例では、チップ間リンク2420及びチップ間コントローラ2430は、複数の深層学習アプリケーション・プロセッサ2400が、1つ又は複数のニューラル・ネットワークにおいて具体化された1つ又は複数の機械学習アルゴリズムを実施したことから得られるアクティブ化情報を含む情報を交換することを可能にする。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、(ゼロを含む)任意の数及びタイプのICL2420及びICC2430を含み得る。
【0360】
少なくとも1つの実施例では、HBM2 2440は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。少なくとも1つの実施例では、HBM2 2440(i)は、メモリ・コントローラ2442(i)とHBM PHY2444(i)の両方に関連し、ここで、「i」は任意の整数である。少なくとも1つの実施例では、任意の数のHBM2 2440が、任意のタイプ及び合計量の高帯域幅メモリを提供し得、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2442及びHBM PHY2444に関連し得る。少なくとも1つの実施例では、SPI、I2C、GPIO2460、PCIeコントローラ及びDMA2470、並びに/又はPCIe2480は、任意の技術的に実現可能な様式で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックと置き換えられ得る。
【0361】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサは、深層学習アプリケーション・プロセッサ2400に提供される情報を予測又は推論するために、ニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサ2400は、別のプロセッサ又はシステムによって、或いは深層学習アプリケーション・プロセッサ2400によって訓練された、訓練された機械学習モデル(たとえば、ニューラル・ネットワーク)に基づいて、情報を推論又は予測するために使用される。少なくとも1つの実施例では、プロセッサ2400は、本明細書で説明される1つ又は複数のニューラル・ネットワーク使用事例を実施するために使用され得る。
【0362】
少なくとも1つの実施例では、
図24に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図24に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図24に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0363】
図25は、少なくとも1つの実施例による、ニューロモーフィック・プロセッサ2500のブロック図である。少なくとも1つの実施例では、ニューロモーフィック・プロセッサ2500は、ニューロモーフィック・プロセッサ2500の外部のソースから1つ又は複数の入力を受信し得る。少なくとも1つの実施例では、これらの入力は、ニューロモーフィック・プロセッサ2500内の1つ又は複数のニューロン2502に送信され得る。少なくとも1つの実施例では、ニューロン2502及びその構成要素は、1つ又は複数の算術論理ユニット(ALU)を含む回路要素又は論理を使用して、実装され得る。少なくとも1つの実施例では、ニューロモーフィック・プロセッサ2500は、限定はしないが、ニューロン2502の数千又は数百万のインスタンスを含み得るが、任意の好適な数のニューロン2502が使用され得る。少なくとも1つの実施例では、ニューロン2502の各インスタンスは、ニューロン入力2504及びニューロン出力2506を含み得る。少なくとも1つの実施例では、ニューロン2502は出力を生成し得、この出力は、ニューロン2502の他のインスタンスの入力に送信され得る。たとえば、少なくとも1つの実施例では、ニューロン入力2504及びニューロン出力2506は、シナプス2508を介して相互接続され得る。
【0364】
少なくとも1つの実施例では、ニューロン2502とシナプス2508とは、ニューロモーフィック・プロセッサ2500によって受信された情報を処理又は分析するようにニューロモーフィック・プロセッサ2500が動作するように、相互接続され得る。少なくとも1つの実施例では、ニューロン2502は、ニューロン入力2504を通して受信された入力がしきい値を超えたとき、出力パルス(或いは「発火」又は「スパイク」)を送信し得る。少なくとも1つの実施例では、ニューロン2502は、ニューロン入力2504において受信された信号を合計又は積分し得る。たとえば、少なくとも1つの実施例では、ニューロン2502は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装され得、(「膜電位」と呼ばれる)合計がしきい値を超える場合、ニューロン2502は、シグモイド関数又はしきい値関数などの伝達関数を使用して出力(又は「発火」)を生成し得る。少なくとも1つの実施例では、漏れ積分発火ニューロンは、ニューロン入力2504において受信された信号を合計して膜電位にし得、また、減衰係数(又は漏れ)を適用して膜電位を低減し得る。少なくとも1つの実施例では、複数の入力信号が、しきい値を超えるほど十分に素早く(すなわち、膜電位減衰が低すぎて発火できなくなる前に)ニューロン入力2504において受信された場合、漏れ積分発火ニューロンが発火し得る。少なくとも1つの実施例では、ニューロン2502は、入力を受信し、入力を積分して膜電位にし、膜電位を減衰させる回路又は論理を使用して、実装され得る。少なくとも1つの実施例では、入力は平均化され得るか、又は任意の他の好適な伝達関数が使用され得る。さらに、少なくとも1つの実施例では、ニューロン2502は、限定はしないが、ニューロン入力2504に伝達関数を適用した結果がしきい値を超えたときにニューロン出力2506において出力スパイクを生成するコンパレータ回路又は論理を含み得る。少なくとも1つの実施例では、ニューロン2502は、発火すると、前に受信された入力情報を、たとえば膜電位を0又は別の好適なデフォルト値に再設定することによって、無視し得る。少なくとも1つの実施例では、膜電位が0にリセットされると、ニューロン2502は、好適な時間期間(又は不応期)の後に通常の動作を再開し得る。
【0365】
少なくとも1つの実施例では、ニューロン2502は、シナプス2508を通して相互接続され得る。少なくとも1つの実施例では、シナプス2508は、第1のニューロン2502の出力から第2のニューロン2502の入力に信号を送信するように動作し得る。少なくとも1つの実施例では、ニューロン2502は、シナプス2508の2つ以上のインスタンスを介して情報を送信し得る。少なくとも1つの実施例では、ニューロン出力2506の1つ又は複数のインスタンスは、シナプス2508のインスタンスを介して、同じニューロン2502中のニューロン入力2504のインスタンスに接続され得る。少なくとも1つの実施例では、シナプス2508のインスタンスを介して送信されるべき出力を生成するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス前ニューロン」と呼ばれることがある。少なくとも1つの実施例では、シナプス2508のインスタンスを介して送信される入力を受信するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス後ニューロン」と呼ばれることがある。少なくとも1つの実施例では、ニューロン2502のインスタンスは、シナプス2508の1つ又は複数のインスタンスから入力を受信し得、また、シナプス2508の1つ又は複数のインスタンスを介して出力を送信し得るので、ニューロン2502の単一のインスタンスは、したがって、シナプス2508の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であり得る。
【0366】
少なくとも1つの実施例では、ニューロン2502は、1つ又は複数の層に組織化され得る。少なくとも1つの実施例では、ニューロン2502の各インスタンスは、1つ又は複数のシナプス2508を通して1つ又は複数のニューロン入力2504にファン・アウトし得る1つのニューロン出力2506を有し得る。少なくとも1つの実施例では、第1の層2510中のニューロン2502のニューロン出力2506は、第2の層2512中のニューロン2502のニューロン入力2504に接続され得る。少なくとも1つの実施例では、層2510は、「フィード・フォワード層」と呼ばれることがある。少なくとも1つの実施例では、第1の層2510のインスタンスにおけるニューロン2502の各インスタンスは、第2の層2512中のニューロン2502の各インスタンスにファン・アウトし得る。少なくとも1つの実施例では、第1の層2510は、「完全に接続された(fully connected)フィード・フォワード層」と呼ばれることがある。少なくとも1つの実施例では、第2の層2512のインスタンスにおけるニューロン2502の各インスタンスは、第3の層2514中のニューロン2502のすべてのインスタンスよりも少ないインスタンスにファン・アウトし得る。少なくとも1つの実施例では、第2の層2512は、「疎に接続された(sparsely connected)フィード・フォワード層」と呼ばれることがある。少なくとも1つの実施例では、第2の層2512中のニューロン2502は、同じく第2の層2512中にあるニューロン2502を含む、複数の他の層中のニューロン2502にファン・アウトし得る。少なくとも1つの実施例では、第2の層2512は、「リカレント層」と呼ばれることがある。少なくとも1つの実施例では、ニューロモーフィック・プロセッサ2500は、限定はしないが、限定はしないが疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を含む、リカレント層とフィード・フォワード層との任意の好適な組合せを含み得る。
【0367】
少なくとも1つの実施例では、ニューロモーフィック・プロセッサ2500は、限定はしないが、シナプス2508をニューロン2502に接続するための再構成可能相互接続アーキテクチャ又は専用ハード・ワイヤード相互接続を含み得る。少なくとも1つの実施例では、ニューロモーフィック・プロセッサ2500は、ニューラル・ネットワーク・トポロジ及びニューロン・ファン・イン/ファン・アウトに基づいて、必要に応じてシナプスが異なるニューロン2502に割り振られることを可能にする回路要素又は論理を含み得る。たとえば、少なくとも1つの実施例では、シナプス2508は、ネットワーク・オンチップなどの相互接続ファブリックを使用して、又は専用接続を用いて、ニューロン2502に接続され得る。少なくとも1つの実施例では、シナプス相互接続及びその構成要素は、回路要素又は論理を使用して実装され得る。
【0368】
少なくとも1つの実施例では、
図25に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図25に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図25に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0369】
図26は、少なくとも1つの実施例による、処理システムのブロック図である。少なくとも1つの実施例では、システム2600は、1つ又は複数のプロセッサ2602と1つ又は複数のグラフィックス・プロセッサ2608とを含み、単一プロセッサ・デスクトップ・システム、マルチプロセッサ・ワークステーション・システム、或いは多数のプロセッサ2602又はプロセッサ・コア2607を有するサーバ・システムであり得る。少なくとも1つの実施例では、システム2600は、モバイル・デバイス、ハンドヘルド・デバイス、又は組み込みデバイスにおいて使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0370】
少なくとも1つの実施例では、システム2600は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディア・コンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、ハンドヘルド・ゲーム・コンソール、又はオンライン・ゲーム・コンソールを含むことができるか、或いはそれらの内部に組み込まれ得る。少なくとも1つの実施例では、システム2600は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス又はモバイル・インターネット・デバイスである。少なくとも1つの実施例では、処理システム2600はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、又は仮想現実デバイスなどのウェアラブル・デバイスを含むことができるか、それらと結合することができるか、又はそれらの内部に組み込まれ得る。少なくとも1つの実施例では、処理システム2600は、1つ又は複数のプロセッサ2602と、1つ又は複数のグラフィックス・プロセッサ2608によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0371】
少なくとも1つの実施例では、1つ又は複数のプロセッサ2602は、各々、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実施する命令を処理するための1つ又は複数のプロセッサ・コア2607を含む。少なくとも1つの実施例では、1つ又は複数のプロセッサ・コア2607の各々は、特定の命令シーケンス2609を処理するように構成される。少なくとも1つの実施例では、命令シーケンス2609は、複合命令セット・コンピューティング(CISC:Complex Instruction Set Computing)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にし得る。少なくとも1つの実施例では、プロセッサ・コア2607は、各々、異なる命令シーケンス2609を処理し得、命令シーケンス2609は、他の命令シーケンスのエミュレーションを容易にするための命令を含み得る。少なくとも1つの実施例では、プロセッサ・コア2607はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含み得る。
【0372】
少なくとも1つの実施例では、プロセッサ2602はキャッシュ・メモリ2604を含む。少なくとも1つの実施例では、プロセッサ2602は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有することができる。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ2602の様々な構成要素の間で共有される。少なくとも1つの実施例では、プロセッサ2602はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC:Last Level Cache))(図示せず)を使用し、外部キャッシュは、知られているキャッシュ・コヒーレンシ技法を使用してプロセッサ・コア2607の間で共有され得る。少なくとも1つの実施例では、追加として、レジスタ・ファイル2606がプロセッサ2602中に含まれ、レジスタ・ファイル2606は、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタ)を含み得る。少なくとも1つの実施例では、レジスタ・ファイル2606は、汎用レジスタ又は他のレジスタを含み得る。
【0373】
少なくとも1つの実施例では、1つ又は複数のプロセッサ2602は、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2602とシステム2600中の他の構成要素との間で送信するために、1つ又は複数のインターフェース・バス2610と結合される。少なくとも1つの実施例では、インターフェース・バス2610は、ダイレクト・メディア・インターフェース(DMI:Direct Media Interface)バスのバージョンなどのプロセッサ・バスであり得る。少なくとも1つの実施例では、インターフェース・バス2610は、DMIバスに限定されず、1つ又は複数の周辺構成要素相互接続バス(たとえば、PCI、PCI Express)、メモリ・バス、又は他のタイプのインターフェース・バスを含み得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ2602は、統合されたメモリ・コントローラ2616と、プラットフォーム・コントローラ・ハブ2630とを含む。少なくとも1つの実施例では、メモリ・コントローラ2616は、メモリ・デバイスとシステム2600の他の構成要素との間の通信を容易にし、プラットフォーム・コントローラ・ハブ(PCH:platform controller hub)2630は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0374】
少なくとも1つの実施例では、メモリ・デバイス2620は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとして働くのに好適な性能を有する何らかの他のメモリ・デバイスであり得る。少なくとも1つの実施例では、メモリ・デバイス2620は、1つ又は複数のプロセッサ2602がアプリケーション又はプロセスを実行するときの使用のためのデータ2622及び命令2621を記憶するために、システム2600のためのシステム・メモリとして動作することができる。少なくとも1つの実施例では、メモリ・コントローラ2616はまた、随意の外部グラフィックス・プロセッサ2612と結合し、外部グラフィックス・プロセッサ2612は、グラフィックス動作及びメディア動作を実施するために、プロセッサ2602中の1つ又は複数のグラフィックス・プロセッサ2608と通信し得る。少なくとも1つの実施例では、ディスプレイ・デバイス2611は、(1つ又は複数の)プロセッサ2602に接続することができる。少なくとも1つの実施例では、ディスプレイ・デバイス2611は、モバイル電子デバイス又はラップトップ・デバイスの場合のような内部ディスプレイ・デバイス、或いは、ディスプレイ・インターフェース(たとえば、DisplayPortなど)を介して取り付けられた外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも1つの実施例では、ディスプレイ・デバイス2611は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションにおいて使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD:head mounted display)を含むことができる。
【0375】
少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ2630は、周辺機器が高速I/Oバスを介してメモリ・デバイス2620及びプロセッサ2602に接続することを可能にする。少なくとも1つの実施例では、I/O周辺機器は、限定はしないが、オーディオ・コントローラ2646と、ネットワーク・コントローラ2634と、ファームウェア・インターフェース2628と、ワイヤレス・トランシーバ2626と、タッチ・センサ2625と、データ・ストレージ・デバイス2624(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)とを含む。少なくとも1つの実施例では、データ・ストレージ・デバイス2624は、ストレージ・インターフェース(たとえば、SATA)を介して、又は周辺構成要素相互接続バス(たとえば、PCI、PCI Express)などの周辺バスを介して、接続することができる。少なくとも1つの実施例では、タッチ・センサ2625は、タッチ・スクリーン・センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも1つの実施例では、ワイヤレス・トランシーバ2626は、Wi-Fiトランシーバ、Bluetoothトランシーバ、或いは3G、4G、又はロング・ターム・エボリューション(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバであり得る。少なくとも1つの実施例では、ファームウェア・インターフェース2628は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI:unified extensible firmware interface)であり得る。少なくとも1つの実施例では、ネットワーク・コントローラ2634は、ワイヤード・ネットワークへのネットワーク接続を可能にすることができる。少なくとも1つの実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2610と結合する。少なくとも1つの実施例では、オーディオ・コントローラ2646は、マルチチャネル高精細度オーディオ・コントローラである。少なくとも1つの実施例では、システム2600は、レガシー(たとえば、パーソナル・システム2(PS/2:Personal System 2))デバイスをシステム2600に結合するための随意のレガシーI/Oコントローラ2640を含む。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ2630は、キーボードとマウス2643との組合せ、カメラ2644、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2642接続入力デバイスにも接続することができる。
【0376】
少なくとも1つの実施例では、メモリ・コントローラ2616及びプラットフォーム・コントローラ・ハブ2630のインスタンスが、外部グラフィックス・プロセッサ2612などの慎重な外部グラフィックス・プロセッサに組み込まれ得る。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ2630及び/又はメモリ・コントローラ2616は、1つ又は複数のプロセッサ2602の外部にあり得る。たとえば、少なくとも1つの実施例では、システム2600は、外部のメモリ・コントローラ2616とプラットフォーム・コントローラ・ハブ2630とを含むことができ、それらは、(1つ又は複数の)プロセッサ2602と通信しているシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺コントローラ・ハブとして構成され得る。
【0377】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ2608に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、3Dパイプラインにおいて具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ2608のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0378】
少なくとも1つの実施例では、
図26に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図26に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図26に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0379】
図27は、少なくとも1つの実施例による、1つ又は複数のプロセッサ・コア2702A~2702Nと、統合されたメモリ・コントローラ2714と、統合されたグラフィックス・プロセッサ2708とを有するプロセッサ2700のブロック図である。少なくとも1つの実施例では、プロセッサ2700は、破線ボックスによって表される追加コア2702Nまでの追加コアを含むことができる。少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nの各々は、1つ又は複数の内部キャッシュ・ユニット2704A~2704Nを含む。少なくとも1つの実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2706へのアクセスを有する。
【0380】
少なくとも1つの実施例では、内部キャッシュ・ユニット2704A~2704Nと共有キャッシュ・ユニット2706とは、プロセッサ2700内のキャッシュ・メモリ階層を表す。少なくとも1つの実施例では、キャッシュ・メモリ・ユニット2704A~2704Nは、各プロセッサ・コア内の命令及びデータ・キャッシュの少なくとも1つのレベル、及びレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含み得、ここで、外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも1つの実施例では、キャッシュ・コヒーレンシ論理は、様々なキャッシュ・ユニット2706及び2704A~2704N間でコヒーレンシを維持する。
【0381】
少なくとも1つの実施例では、プロセッサ2700は、1つ又は複数のバス・コントローラ・ユニット2716とシステム・エージェント・コア2710とのセットをも含み得る。少なくとも1つの実施例では、バス・コントローラ・ユニット2716は、1つ又は複数のPCI又はPCIエクスプレス・バスなどの周辺バスのセットを管理する。少なくとも1つの実施例では、システム・エージェント・コア2710は、様々なプロセッサ構成要素のための管理機能性を提供する。少なくとも1つの実施例では、システム・エージェント・コア2710は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合されたメモリ・コントローラ2714を含む。
【0382】
少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nのうちの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも1つの実施例では、システム・エージェント・コア2710は、マルチスレッド処理中にコア2702A~2702Nを協調させ、動作させるための構成要素を含む。少なくとも1つの実施例では、システム・エージェント・コア2710は、追加として、電力制御ユニット(PCU:power control unit)を含み得、PCUは、プロセッサ・コア2702A~2702N及びグラフィックス・プロセッサ2708の1つ又は複数の電力状態を調節するための論理及び構成要素を含む。
【0383】
少なくとも1つの実施例では、プロセッサ2700は、追加として、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2708を含む。少なくとも1つの実施例では、グラフィックス・プロセッサ2708は、共有キャッシュ・ユニット2706、及び1つ又は複数の統合されたメモリ・コントローラ2714を含むシステム・エージェント・コア2710と結合する。少なくとも1つの実施例では、システム・エージェント・コア2710は、1つ又は複数の結合されたディスプレイへのグラフィックス・プロセッサ出力を駆動するためのディスプレイ・コントローラ2711をも含む。少なくとも1つの実施例では、ディスプレイ・コントローラ2711はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2708と結合された別個のモジュールであり得るか、又はグラフィックス・プロセッサ2708内に組み込まれ得る。
【0384】
少なくとも1つの実施例では、プロセッサ2700の内部構成要素を結合するために、リング・ベースの相互接続ユニット2712が使用される。少なくとも1つの実施例では、ポイントツーポイント相互接続、切替え相互接続、又は他の技法などの代替相互接続ユニットが使用され得る。少なくとも1つの実施例では、グラフィックス・プロセッサ2708は、I/Oリンク2713を介してリング相互接続2712と結合する。
【0385】
少なくとも1つの実施例では、I/Oリンク2713は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2718との間の通信を容易にするオン・パッケージI/O相互接続を含む、複数の種類のI/O相互接続のうちの少なくとも1つを表す。少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nの各々と、グラフィックス・プロセッサ2708とは、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2718を使用する。
【0386】
少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nは、命令セット・アーキテクチャ(ISA:instruction set architecture)という観点から異種であり、ここで、プロセッサ・コア2702A~2702Nのうちの1つ又は複数は、共通の命令セットを実行し、プロセッサ・コア2702A~2702Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも1つの実施例では、プロセッサ・コア2702A~2702Nは、マイクロアーキテクチャという観点から異種であり、ここで、電力消費量が比較的高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数の電力コアと結合する。少なくとも1つの実施例では、プロセッサ2700は、1つ又は複数のチップ上に、又はSoC集積回路として実装され得る。
【0387】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ2708に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、3Dパイプライン、(1つ又は複数の)グラフィックス・コア2702、共有機能論理、又は
図27中の他の論理において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのプロセッサ2700のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0388】
少なくとも1つの実施例では、
図27に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図27に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図27に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0389】
図28は、グラフィックス・プロセッサ2800のブロック図であり、グラフィックス・プロセッサ2800は、個別グラフィックス処理ユニットであり得るか、又は複数の処理コアと統合されたグラフィックス・プロセッサであり得る。少なくとも1つの実施例では、グラフィックス・プロセッサ2800は、グラフィックス・プロセッサ2800上のレジスタへのメモリ・マップドI/Oインターフェースを介して、及びメモリに入れられたコマンドを用いて、通信する。少なくとも1つの実施例では、グラフィックス・プロセッサ2800は、メモリにアクセスするためのメモリ・インターフェース2814を含む。少なくとも1つの実施例では、メモリ・インターフェース2814は、ローカル・メモリ、1つ又は複数の内部キャッシュ、1つ又は複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
【0390】
少なくとも1つの実施例では、グラフィックス・プロセッサ2800はまた、ディスプレイ・デバイス2820へのディスプレイ出力データを駆動するためのディスプレイ・コントローラ2802を含む。少なくとも1つの実施例では、ディスプレイ・コントローラ2802は、ディスプレイ・デバイス2820のための1つ又は複数の重なり平面と、複数の層のビデオ又はユーザ・インターフェース要素の合成とのためのハードウェアを含む。少なくとも1つの実施例では、ディスプレイ・デバイス2820は、内部又は外部ディスプレイ・デバイスであり得る。少なくとも1つの実施例では、ディスプレイ・デバイス2820は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも1つの実施例では、グラフィックス・プロセッサ2800は、限定はしないが、MPEG-2などの動画エキスパート・グループ(MPEG:Moving Picture Experts Group)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE:Society of Motion Picture & Television Engineers)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG:Joint Photographic Experts Group)フォーマット、及びモーションJPEG(MJPEG:Motion JPEG)フォーマットを含む、1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアを符号化、復号、又はコード変換するためのビデオ・コーデック・エンジン2806を含む。
【0391】
少なくとも1つの実施例では、グラフィックス・プロセッサ2800は、たとえばビット境界ブロック転送を含む2次元(2D:two-dimentional)ラスタライザ動作を実施するためのブロック画像転送(BLIT:block image transfer)エンジン2804を含む。しかしながら、少なくとも1つの実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE:graphics processing engine)2810の1つ又は複数の構成要素を使用して実施される。少なくとも1つの実施例では、GPE2810は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実施するためのコンピュート・エンジンである。
【0392】
少なくとも1つの実施例では、GPE2810は、3Dプリミティブ形状(たとえば、矩形、三角形など)に作用する処理機能を使用して3次元画像及びシーンをレンダリングするなど、3D動作を実施するための3Dパイプライン2812を含む。少なくとも1つの実施例では、3Dパイプライン2812は、プログラマブル及び固定機能要素を含み、この機能要素は、3D/メディア・サブシステム2815に対して様々なタスクを実施し、及び/又は実行スレッドをスポーンする。3Dパイプライン2812はメディア動作を実施するために使用され得るが、少なくとも1つの実施例では、GPE2810は、ビデオ後処理及び画像強調などのメディア動作を実施するために使用されるメディア・パイプライン2816をも含む。
【0393】
少なくとも1つの実施例では、メディア・パイプライン2816は、ビデオ・コーデック・エンジン2806の代わりに、又はそれに代わって、ビデオ・デコード加速、ビデオ・インターレース解除、及びビデオ・エンコード加速などの1つ又は複数の特別なメディア動作を実施するための固定機能又はプログラマブル論理ユニットを含む。少なくとも1つの実施例では、メディア・パイプライン2816は、追加として、3D/メディア・サブシステム2815上での実行のためにスレッドをスポーンするためのスレッド・スポーニング(thread spawning)・ユニットを含む。少なくとも1つの実施例では、スポーンされたスレッドは、3D/メディア・サブシステム2815中に含まれる1つ又は複数のグラフィックス実行ユニット上でメディア動作のための算出を実施する。
【0394】
少なくとも1つの実施例では、3D/メディア・サブシステム2815は、3Dパイプライン2812及びメディア・パイプライン2816によってスポーンされたスレッドを実行するための論理を含む。少なくとも1つの実施例では、3Dパイプライン2812及びメディア・パイプライン2816は、スレッド実行要求を3D/メディア・サブシステム2815に送出し、3D/メディア・サブシステム2815は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも1つの実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも1つの実施例では、3D/メディア・サブシステム2815は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも1つの実施例では、サブシステム2815はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタとアドレス指定可能メモリとを含む共有メモリをも含む。
【0395】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ2800に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、3Dパイプライン2812において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ2800のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0396】
少なくとも1つの実施例では、
図28に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図28に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図28に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0397】
図29は、少なくとも1つの実施例による、グラフィックス・プロセッサのグラフィックス処理エンジン2910のブロック図である。少なくとも1つの実施例では、グラフィックス処理エンジン(GPE)2910は、
図28に示されているGPE2810のバージョンである。少なくとも1つの実施例では、メディア・パイプライン2916は随意であり、GPE2910内に明示的に含まれないことがある。少なくとも1つの実施例では、別個のメディア及び/又は画像プロセッサが、GPE2910に結合される。
【0398】
少なくとも1つの実施例では、GPE2910は、コマンド・ストリーマ2903に結合されるか、又はそれを含み、コマンド・ストリーマ2903は、3Dパイプライン2912及び/又はメディア・パイプライン2916にコマンド・ストリームを提供する。少なくとも1つの実施例では、コマンド・ストリーマ2903はメモリに結合され、メモリは、システム・メモリ、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ又は複数であり得る。少なくとも1つの実施例では、コマンド・ストリーマ2903は、メモリからコマンドを受信し、コマンドを3Dパイプライン2912及び/又はメディア・パイプライン2916に送出する。少なくとも1つの実施例では、コマンドは、リング・バッファからフェッチされた命令、プリミティブ、又はマイクロ・オペレーションであり、リング・バッファは、3Dパイプライン2912及びメディア・パイプライン2916のためのコマンドを記憶する。少なくとも1つの実施例では、リング・バッファは、追加として、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも1つの実施例では、3Dパイプライン2912のためのコマンドはまた、限定はしないが、3Dパイプライン2912のための頂点及びジオメトリ・データ、並びに/又はメディア・パイプライン2916のための画像データ及びメモリ・オブジェクトなど、メモリに記憶されたデータへの参照を含むことができる。少なくとも1つの実施例では、3Dパイプライン2912及びメディア・パイプライン2916は、演算を実施することによって、又は1つ又は複数の実行スレッドをグラフィックス・コア・アレイ2914にディスパッチすることによって、コマンド及びデータを処理する。少なくとも1つの実施例では、グラフィックス・コア・アレイ2914は、グラフィックス・コア(たとえば、(1つ又は複数の)グラフィックス・コア2915A、(1つ又は複数の)グラフィックス・コア2915B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも1つの実施例では、各グラフィックス・コアは、グラフィックス動作及びコンピュート動作を実施するための汎用及びグラフィックス固有実行論理、並びに、
図7A及び
図7B中の推論及び/又は訓練論理715を含む、固定機能テクスチャ処理及び/又は機械学習及び人工知能加速論理を含む、グラフィックス実行リソースのセットを含む。
【0399】
少なくとも1つの実施例では、3Dパイプライン2912は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ2914にディスパッチすることによって、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラマブル論理を含む。少なくとも1つの実施例では、グラフィックス・コア・アレイ2914は、シェーダ・プログラムを処理する際に使用するための実行リソースの統一ブロックを提供する。少なくとも1つの実施例では、グラフィック・コア・アレイ2914の(1つ又は複数の)グラフィックス・コア2915A~2915B内の多目的実行論理(たとえば、実行ユニット)は、様々な3D APIシェーダ言語のサポートを含み、複数のシェーダに関連する複数の同時実行スレッドを実行することができる。
【0400】
少なくとも1つの実施例では、グラフィックス・コア・アレイ2914はまた、ビデオ及び/又は画像処理など、メディア機能を実施するための実行論理を含む。少なくとも1つの実施例では、実行ユニットは、追加として、グラフィックス処理動作に加えて並列汎用算出動作を実施するようにプログラマブルである汎用論理を含む。
【0401】
少なくとも1つの実施例では、グラフィックス・コア・アレイ2914上で実行しているスレッドによって生成される出力データは、統一リターン・バッファ(URB:unified return buffer)2918中のメモリにデータを出力することができる。少なくとも1つの実施例では、URB2918は、複数のスレッドのためのデータを記憶することができる。少なくとも1つの実施例では、URB2918は、グラフィックス・コア・アレイ2914上で実行している異なるスレッド間でデータを送出するために使用され得る。少なくとも1つの実施例では、URB2918は、追加として、グラフィックス・コア・アレイ2914上のスレッドと、共有機能論理2920内の固定機能論理との間の同期のために使用され得る。
【0402】
少なくとも1つの実施例では、グラフィックス・コア・アレイ2914はスケーラブルであり、それにより、グラフィックス・コア・アレイ2914は、可変数のグラフィックス・コアを含み、各グラフィックス・コアが、GPE2910のターゲット電力及び性能レベルに基づいて可変数の実行ユニットを有する。少なくとも1つの実施例では、実行リソースは動的にスケーラブルであり、それにより、実行リソースは、必要に応じて有効又は無効にされ得る。
【0403】
少なくとも1つの実施例では、グラフィックス・コア・アレイ2914は、グラフィックス・コア・アレイ2914中のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理2920に結合される。少なくとも1つの実施例では、共有機能論理2920によって実施される共有機能は、専用の補足機能性をグラフィックス・コア・アレイ2914に提供するハードウェア論理ユニットにおいて具体化される。少なくとも1つの実施例では、共有機能論理2920は、限定はしないが、サンプラ・ユニット2921と、数理ユニット2922と、スレッド間通信(ITC:inter-thread communication)論理2923とを含む。少なくとも1つの実施例では、1つ又は複数のキャッシュ2925が、共有機能論理2920中に含まれるか、又はそれに結合される。
【0404】
少なくとも1つの実施例では、専用の機能の需要が、グラフィックス・コア・アレイ2914内に含めるには不十分である場合、共有機能が使用される。少なくとも1つの実施例では、専用の機能を1つにインスタンス化したものが、共有機能論理2920において使用され、グラフィックス・コア・アレイ2914内の他の実行リソースの間で共有される。少なくとも1つの実施例では、グラフィックス・コア・アレイ2914によって広範囲にわたって使用される、共有機能論理2920内の特定の共有機能は、グラフィックス・コア・アレイ2914内の共有機能論理2926内に含まれ得る。少なくとも1つの実施例では、グラフィックス・コア・アレイ2914内の共有機能論理2926は、共有機能論理2920内のいくつか又はすべての論理を含むことができる。少なくとも1つの実施例では、共有機能論理2920内のすべての論理要素は、グラフィックス・コア・アレイ2914の共有機能論理2926内で複製され得る。少なくとも1つの実施例では、共有機能論理2920は、グラフィックス・コア・アレイ2914内の共有機能論理2926に有利なように除外される。
【0405】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ2910に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、3Dパイプライン2912、(1つ又は複数の)グラフィックス・コア2915、共有機能論理2926、共有機能論理2920、又は
図29中の他の論理において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ2910のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0406】
少なくとも1つの実施例では、
図29に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図29に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図29に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0407】
図30は、本明細書で説明される少なくとも1つの実施例による、グラフィックス・プロセッサ・コア3000のハードウェア論理のブロック図である。少なくとも1つの実施例では、グラフィックス・プロセッサ・コア3000は、グラフィックス・コア・アレイ内に含まれる。少なくとも1つの実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3000は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアであり得る。少なくとも1つの実施例では、グラフィックス・プロセッサ・コア3000は、1つのグラフィックス・コア・スライスの例示であり、本明細書で説明されるグラフィックス・プロセッサは、ターゲット電力及び性能エンベロープに基づいて、複数のグラフィックス・コア・スライスを含み得る。少なくとも1つの実施例では、各グラフィックス・コア3000は、汎用及び固定機能論理のモジュール式ブロックを含む、サブ・スライスとも呼ばれる複数のサブ・コア3001A~3001Fと結合された固定機能ブロック3030を含むことができる。
【0408】
少なくとも1つの実施例では、固定機能ブロック3030は、たとえば、より低い性能及び/又はより低い電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3000中のすべてのサブ・コアによって共有され得るジオメトリ及び固定機能パイプライン3036を含む。少なくとも1つの実施例では、ジオメトリ及び固定機能パイプライン3036は、3D固定機能パイプラインと、ビデオ・フロント・エンド・ユニットと、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャと、統一リターン・バッファを管理する統一リターン・バッファ・マネージャとを含む。
【0409】
少なくとも1つの実施例では、固定機能ブロック3030はまた、グラフィックスSoCインターフェース3037と、グラフィックス・マイクロコントローラ3038と、メディア・パイプライン3039とを含む。少なくとも1つの実施例では、グラフィックスSoCインターフェース3037は、グラフィックス・コア3000と、システム・オン・チップ集積回路内の他のプロセッサ・コアとの間のインターフェースを提供する。少なくとも1つの実施例では、グラフィックス・マイクロコントローラ3038は、スレッド・ディスパッチと、スケジューリングと、プリエンプションとを含む、グラフィックス・プロセッサ3000の様々な機能を管理するように構成可能であるプログラマブル・サブ・プロセッサである。少なくとも1つの実施例では、メディア・パイプライン3039は、画像及びビデオ・データを含むマルチメディア・データの復号、符号化、前処理、及び/又は後処理を容易にするための論理を含む。少なくとも1つの実施例では、メディア・パイプライン3039は、サブ・コア3001A~3001F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
【0410】
少なくとも1つの実施例では、SoCインターフェース3037は、グラフィックス・コア3000が汎用アプリケーション・プロセッサ・コア(たとえば、CPU)及び/又はSoC内の他の構成要素と通信することを可能にし、SoC内の他の構成要素は、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/或いは組み込みオンチップ又はオン・パッケージDRAMなどのメモリ階層要素を含む。少なくとも1つの実施例では、SoCインターフェース3037はまた、カメラ撮像パイプラインなど、SoC内の固定機能デバイスとの通信を可能にすることができ、グラフィックス・コア3000とSoC内のCPUとの間で共有され得るグローバル・メモリ・アトミックの使用を可能にし、及び/又はそれを実装する。少なくとも1つの実施例では、グラフィックスSoCインターフェース3037はまた、グラフィックス・プロセッサ・コア3000のための電力管理制御を実装し、グラフィックス・プロセッサ・コア3000のクロック・ドメインとSoC内の他のクロック・ドメインとの間のインターフェースを可能にすることができる。少なくとも1つの実施例では、SoCインターフェース3037は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアの各々にコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャからのコマンド・バッファの受信を可能にする。少なくとも1つの実施例では、コマンド及び命令は、メディア動作が実施されるべきであるときにメディア・パイプライン3039にディスパッチされ得るか、又は、グラフィックス処理動作が実施されるべきであるときにジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3036、並びに/又はジオメトリ及び固定機能パイプライン3014)にディスパッチされ得る。
【0411】
少なくとも1つの実施例では、グラフィックス・マイクロコントローラ3038は、グラフィックス・コア3000のための様々なスケジューリング及び管理タスクを実施するように構成され得る。少なくとも1つの実施例では、グラフィックス・マイクロコントローラ3038は、サブ・コア3001A~3001F内の実行ユニット(EU:execution unit)アレイ3002A~3002F、3004A~3004F内の様々なグラフィックス並列エンジンに対して、グラフィックスを実施し、及び/又はワークロード・スケジューリングを算出することができる。少なくとも1つの実施例では、グラフィックス・コア3000を含むSoCのCPUコア上で実行しているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ経路のうちの1つにワークロードをサブミットすることができ、この経路が、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも1つの実施例では、スケジューリング動作は、どのワークロードを次に稼働すべきかを決定することと、ワークロードをコマンド・ストリーマにサブミットすることと、エンジン上で稼働している既存のワークロードをプリエンプトすることと、ワークロードの進行を監視することと、ワークロードが完了したときにホスト・ソフトウェアに通知することとを含む。少なくとも1つの実施例では、グラフィックス・マイクロコントローラ3038はまた、グラフィックス・コア3000のための低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態移行にわたってグラフィックス・コア3000内のレジスタを保存及び復元するアビリティをグラフィックス・コア3000に提供することができる。
【0412】
少なくとも1つの実施例では、グラフィックス・コア3000は、示されているサブ・コア3001A~3001Fよりも多い又はそれよりも少ない、N個までのモジュール式サブ・コアを有し得る。N個のサブ・コアの各セットについて、少なくとも1つの実施例では、グラフィックス・コア3000はまた、共有機能論理3010、共有及び/又はキャッシュ・メモリ3012、ジオメトリ/固定機能パイプライン3014、並びに様々なグラフィックスを加速し、処理動作を算出するための追加の固定機能論理3016を含むことができる。少なくとも1つの実施例では、共有機能論理3010は、グラフィックス・コア3000内の各N個のサブ・コアによって共有され得る論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信論理)を含むことができる。少なくとも1つの実施例では、共有及び/又はキャッシュ・メモリ3012は、グラフィックス・コア3000内のN個のサブ・コア3001A~3001Fのためのラスト・レベル・キャッシュであり得、また、複数のサブ・コアによってアクセス可能である共有メモリとして働き得る。少なくとも1つの実施例では、ジオメトリ/固定機能パイプライン3014は、固定機能ブロック3030内のジオメトリ/固定機能パイプライン3036の代わりに含まれ得、同様の論理ユニットを含むことができる。
【0413】
少なくとも1つの実施例では、グラフィックス・コア3000は、グラフィックス・コア3000による使用のための様々な固定機能加速論理を含むことができる追加の固定機能論理3016を含む。少なくとも1つの実施例では、追加の固定機能論理3016は、位置限定シェーディング(position-only shading)において使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在するが、ジオメトリ及び固定機能パイプライン3014、3036内の完全ジオメトリ・パイプライン、並びに選別パイプライン(cull pipeline)においてであり、選別パイプラインは、追加の固定機能論理3016内に含まれ得る追加のジオメトリ・パイプラインである。少なくとも1つの実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも1つの実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも1つの実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、これは、いくつかのインスタンスにおいてシェーディングがより早く完了することを可能にする。たとえば、少なくとも1つの実施例では、選別パイプラインは、ピクセルの、フレーム・バッファへのラスタ化及びレンダリングを実施することなしに、頂点の位置属性をフェッチし、シェーディングするので、追加の固定機能論理3016内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、全体的に完全パイプラインよりも速く臨界結果(critical result)を生成する。少なくとも1つの実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、それらの三角形が選別されているかどうかにかかわらず、可視性情報を算出することができる。少なくとも1つの実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれることがある)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形のみをシェーディングすることができ、可視三角形は、最終的にラスタ化フェーズに渡される。
【0414】
少なくとも1つの実施例では、追加の固定機能論理3016はまた、機械学習訓練又は推論のための最適化を含む実装形態のために、固定機能行列乗算論理など、機械学習加速論理を含むことができる。
【0415】
少なくとも1つの実施例では、各グラフィックス・サブ・コア3001A~3001F内に、実行リソースのセットを含み、実行リソースのセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムによる要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実施するために使用され得る。少なくとも1つの実施例では、グラフィックス・サブ・コア3001A~3001Fは、複数のEUアレイ3002A~3002F、3004A~3004Fと、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理3003A~3003Fと、3D(たとえば、テクスチャ)サンプラ3005A~3005Fと、メディア・サンプラ3006A~3006Fと、シェーダ・プロセッサ3007A~3007Fと、共有ローカル・メモリ(SLM:shared local memory)3008A~3008Fとを含む。少なくとも1つの実施例では、EUアレイ3002A~3002F、3004A~3004Fは、各々、複数の実行ユニットを含み、複数の実行ユニットは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点論理演算を実施することが可能な汎用グラフィックス処理ユニットである。少なくとも1つの実施例では、TD/IC論理3003A~3003Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実施し、サブ・コアの実行ユニット上で実行しているスレッド間の通信を容易にする。少なくとも1つの実施例では、3Dサンプラ3005A~3005Fは、テクスチャ又は他の3Dグラフィックス関係データをメモリに読み取ることができる。少なくとも1つの実施例では、3Dサンプラは、所与のテクスチャに関連する、構成されたサンプル状態及びテクスチャ・フォーマットに基づいて、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも1つの実施例では、メディア・サンプラ3006A~3006Fは、メディア・データに関連するタイプ及びフォーマットに基づいて、同様の読取り動作を実施することができる。少なくとも1つの実施例では、各グラフィックス・サブ・コア3001A~3001Fは、代替的に統一3D及びメディア・サンプラを含むことができる。少なくとも1つの実施例では、サブ・コア3001A~3001Fの各々内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドがオンチップ・メモリの共通のプールを使用して実行することを可能にするために、各サブ・コア内の共有ローカル・メモリ3008A~3008Fを利用することができる。
【0416】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ3000に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、3Dパイプライン、グラフィックス・マイクロコントローラ3038、ジオメトリ及び固定機能パイプライン3014及び3036、又は
図30中の他の論理において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ3000のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0417】
少なくとも1つの実施例では、
図30に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図30に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図30に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0418】
図31A~
図31Bは、少なくとも1つの実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3100を示す。
図31Aは、スレッド実行論理3100が使用される少なくとも1つの実施例を示す。
図31Bは、少なくとも1つの実施例による、グラフィックス実行ユニット3108の例示的な内部詳細を示す。
【0419】
図31Aに示されているように、少なくとも1つの実施例では、スレッド実行論理3100は、シェーダ・プロセッサ3102と、スレッド・ディスパッチャ3104と、命令キャッシュ3106と、複数の実行ユニット3107A~3107N及び3108A~3108Nを含むスケーラブル実行ユニット・アレイと、サンプラ3110と、データ・キャッシュ3112と、データ・ポート3114とを含む。少なくとも1つの実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3108A~N又は3107A~Nのいずれか)を、たとえばワークロードの算出要件に基づいて有効又は無効にすることによって、動的にスケーリングすることができる。少なくとも1つの実施例では、スケーラブル実行ユニットは、各実行ユニットにリンクする相互接続ファブリックを介して相互接続される。少なくとも1つの実施例では、スレッド実行論理3100は、命令キャッシュ3106、データ・ポート3114、サンプラ3110、及び実行ユニット3107又は3108のうちの1つ又は複数を通した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも1つの実施例では、各実行ユニット(たとえば、3107A)は、各スレッドについて複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することが可能であるスタンドアロン・プログラマブル汎用算出ユニットである。少なくとも1つの実施例では、実行ユニット3107及び/又は3108のアレイは、任意の数の個々の実行ユニットを含めるようにスケーラブルである。
【0420】
少なくとも1つの実施例では、実行ユニット3107及び/又は3108は、シェーダ・プログラムを実行するために主に使用される。少なくとも1つの実施例では、シェーダ・プロセッサ3102は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連する実行スレッドを、スレッド・ディスパッチャ3104を介してディスパッチすることができる。少なくとも1つの実施例では、スレッド・ディスパッチャ3104は、グラフィックス及びメディア・パイプラインからのスレッド始動要求を調停し、要求されたスレッドを、実行ユニット3107及び/又は3108中の1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも1つの実施例では、ジオメトリ・パイプラインは、頂点シェーダ、テッセレーション・シェーダ、又はジオメトリ・シェーダを、処理のためにスレッド実行論理にディスパッチすることができる。少なくとも1つの実施例では、スレッド・ディスパッチャ3104はまた、実行しているシェーダ・プログラムからのランタイム・スレッド・スポーニング要求を処理することができる。
【0421】
少なくとも1つの実施例では、実行ユニット3107及び/又は3108は、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct 3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも1つの実施例では、実行ユニットは、頂点及びジオメトリ処理(たとえば、頂点プログラム、ジオメトリ・プログラム、及び/又は頂点シェーダ)と、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)と、汎用処理(たとえば、コンピュート及びメディア・シェーダ)とをサポートする。少なくとも1つの実施例では、1つ又は複数の算術論理ユニット(ALU)を含む実行ユニット3107及び/又は3108の各々は、多発行(multi-issue)単一命令複数データ(SIMD)実行が可能であり、マルチスレッド化された動作は、メモリ・アクセスのレイテンシがより高いにもかかわらず、効率的な実行環境を可能にする。少なくとも1つの実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用高帯域幅レジスタ・ファイルと、関連する独立したスレッド状態とを有する。少なくとも1つの実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ能力、論理演算、超越演算、及び他の種々の演算が可能なパイプラインに対するクロック当たり多発行である。少なくとも1つの実施例では、メモリ、又は共有機能のうちの1つからのデータを待っている間に、実行ユニット3107及び/又は3108内の従属論理は、要求されたデータが戻されるまで、待っているスレッドをスリープさせる。少なくとも1つの実施例では、待機スレッドがスリープしている間に、ハードウェア・リソースは他のスレッドを処理することに充てられ得る。たとえば、少なくとも1つの実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実施することができる。
【0422】
少なくとも1つの実施例では、実行ユニット3107及び/又は3108中の各実行ユニットは、データ要素のアレイに対して動作する。少なくとも1つの実施例では、データ要素の数は、「実行サイズ」であるか、又は命令のためのチャネルの数である。少なくとも1つの実施例では、実行チャネルは、データ要素アクセス、マスキング、及び命令内のフロー制御のための実行の論理ユニットである。少なくとも1つの実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であり得る。少なくとも1つの実施例では、実行ユニット3107及び/又は3108は、整数及び浮動小数点データ・タイプをサポートする。
【0423】
少なくとも1つの実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも1つの実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶され得、実行ユニットは、要素のデータ・サイズに基づいて様々な要素を処理する。たとえば、少なくとも1つの実施例では、256ビット幅ベクトル上で動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4つの別個の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズ・データ要素)、8つの別個の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズ・データ要素)、16個の別個の16ビット・パック・データ要素(ワード(W:Word)サイズ・データ要素)、又は32個の別個の8ビット・データ要素(バイト(B:byte)サイズ・データ要素)としてベクトル上で動作する。しかしながら、少なくとも1つの実施例では、異なるベクトル幅及びレジスタ・サイズが可能である。
【0424】
少なくとも1つの実施例では、実行ユニット3107Aを実行ユニット3108Aと融合して融合実行ユニット3109Aにするなど、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通であるスレッド制御論理(3111A~3111N)を有する融合実行ユニット3109A~3109Nにすることができる。少なくとも1つの実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも1つの実施例では、融合EUグループ中の各EUは、別個のSIMDハードウェア・スレッドを実行し、融合EUグループ中のEUの数が様々な実施例に応じて場合によっては変動するように、構成され得る。少なくとも1つの実施例では、限定はしないがSIMD8、SIMD16、及びSIMD32を含む様々なSIMD幅が、EUごとに実施され得る。少なくとも1つの実施例では、各融合グラフィックス実行ユニット3109A~3109Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも1つの実施例では、融合実行ユニット3109Aは、第1のEU3107Aと、第2のEU3108Aと、第1のEU3107Aと第2のEU3108Aに共通であるスレッド制御論理3111Aとを含む。少なくとも1つの実施例では、スレッド制御論理3111Aは、融合グラフィックス実行ユニット3109A上で実行されるスレッドを制御して、融合実行ユニット3109A~3109N内の各EUが、共通の命令ポインタ・レジスタを使用して実行することを可能にする。
【0425】
少なくとも1つの実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3106)は、実行ユニットについてスレッド命令をキャッシュするためにスレッド実行論理3100中に含まれる。少なくとも1つの実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3112)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも1つの実施例では、サンプラ3110は、3D動作のためのテクスチャ・サンプリングと、メディア動作のためのメディア・サンプリングとを提供するために含まれる。少なくとも1つの実施例では、サンプラ3110は、サンプリングされたデータを実行ユニットに提供する前にサンプリング処理中にテクスチャ又はメディア・データを処理するために、特別なテクスチャ又はメディア・サンプリング機能性を含む。
【0426】
実行中、少なくとも1つの実施例では、グラフィックス及びメディア・パイプラインは、スレッド始動要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3100に送出する。少なくとも1つの実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されると、出力情報をさらに算出し、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませるために、シェーダ・プロセッサ3102内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出される。少なくとも1つの実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体にわたって補間されるべきである様々な頂点属性の値を計算する。少なくとも1つの実施例では、次いで、シェーダ・プロセッサ3102内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)供給ピクセル又はフラグメント・シェーダ・プログラムを実行する。少なくとも1つの実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3102は、スレッド・ディスパッチャ3104を介してスレッドを実行ユニット(たとえば、3108A)にディスパッチする。少なくとも1つの実施例では、シェーダ・プロセッサ3102は、サンプラ3110中のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップ中のテクスチャ・データにアクセスする。少なくとも1つの実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算が、各幾何学的フラグメントについてのピクセル色データを算出するか、又は、さらに処理されないように1つ又は複数のピクセルを切り捨てる。
【0427】
少なくとも1つの実施例では、データ・ポート3114は、処理されたデータを、グラフィックス・プロセッサ出力パイプライン上でのさらなる処理のためにメモリに出力するために、スレッド実行論理3100のためのメモリ・アクセス機構を提供する。少なくとも1つの実施例では、データ・ポート3114は、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュするために、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3112)を含むか、又はそれに結合する。
【0428】
図31Bに示されているように、少なくとも1つの実施例では、グラフィックス実行ユニット3108は、命令フェッチ・ユニット3137と、汎用レジスタ・ファイル(GRF:general register file)アレイ3124と、アーキテクチャ・レジスタ・ファイル(ARF:architectural register file)アレイ3126と、スレッド調停装置(arbiter)3122と、送出ユニット3130と、ブランチ・ユニット3132と、SIMD浮動小数点ユニット(FPU)3134のセットと、専用整数SIMD ALU3135のセットとを含むことができる。少なくとも1つの実施例では、GRF3124及びARF3126は、各同時ハードウェア・スレッドに関連する汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルとのセットを含み、同時ハードウェア・スレッドは、グラフィックス実行ユニット3108においてアクティブであり得る。少なくとも1つの実施例では、スレッドごとのアーキテクチャ状態が、ARF3126において維持され、スレッド実行中に使用されるデータが、GRF3124に記憶される。少なくとも1つの実施例では、各スレッドについての命令ポインタを含む各スレッドの実行状態は、ARF3126中のスレッド固有レジスタにおいて保持され得る。
【0429】
少なくとも1つの実施例では、グラフィックス実行ユニット3108は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)ときめ細かいインターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)との組合せであるアーキテクチャを有する。少なくとも1つの実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタの数に基づいて設計時に微調整され得るモジュール式構成を有し、実行ユニット・リソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
【0430】
少なくとも1つの実施例では、グラフィックス実行ユニット3108は複数の命令を共同発行することができ、複数の命令は各々異なる命令であり得る。少なくとも1つの実施例では、グラフィックス実行ユニット・スレッド3108のスレッド調停装置3122は、実行のために、送出ユニット3130、ブランチ・ユニット3132、又は(1つ又は複数の)SIMD FPU3134のうちの1つに命令をディスパッチすることができる。少なくとも1つの実施例では、各実行スレッドは、GRF3124内の128個の汎用レジスタにアクセスすることができ、各レジスタは、32ビットのデータ要素のSIMD8要素ベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも1つの実施例では、各実行ユニット・スレッドは、GRF3124内の4キロバイトへのアクセスを有するが、実施例はそのように限定されず、他の実施例ではより多い又はより少ないレジスタ・リソースが提供され得る。少なくとも1つの実施例では、最高7つのスレッドが同時に実行することができるが、実行ユニット当たりのスレッド数も、実施例に応じて変動することができる。7つのスレッドが4キロバイトにアクセスし得る少なくとも1つの実施例では、GRF3124は、合計28キロバイトを記憶することができる。少なくとも1つの実施例では、フレキシブルなアドレッシング・モードは、レジスタが、より幅広いレジスタを効率的に築くか、又はストライド設定された矩形ブロック・データ構造を表すために、一緒にアドレス指定されることを許すことができる。
【0431】
少なくとも1つの実施例では、メモリ動作、サンプラ動作、及び他のより長いレイテンシのシステム通信は、送出ユニット3130に渡るメッセージによって実行される「送出」命令を介してディスパッチされる。少なくとも1つの実施例では、ブランチ命令は、SIMD発散及び最終的な収束を容易にするために、ブランチ・ユニット3132にディスパッチされる。
【0432】
少なくとも1つの実施例では、グラフィックス実行ユニット3108は、浮動小数点演算を実施するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3134を含む。少なくとも1つの実施例では、(1つ又は複数の)FPU3134は、整数算出をもサポートする。少なくとも1つの実施例では、(1つ又は複数の)FPU3134は、最高M個の32ビット浮動小数点(又は整数)演算をSIMDで実行するか、或いは最高2M個の16ビット整数演算又は16ビット浮動小数点演算をSIMDで実行することができる。少なくとも1つの実施例では、少なくとも1つのFPUは、高スループット超越数理関数と倍精度の64ビット浮動小数点とをサポートするために、拡張数理能力を提供する。少なくとも1つの実施例では、8ビット整数SIMD ALU3135のセットも存在し、機械学習算出に関連する動作を実施するように特に最適化され得る。
【0433】
少なくとも1つの実施例では、グラフィックス実行ユニット3108の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ化(たとえば、サブ・スライス)においてインスタンス化され得る。少なくとも1つの実施例では、実行ユニット3108は、複数の実行チャネルにわたって命令を実行することができる。少なくとも1つの実施例では、グラフィックス実行ユニット3108上で実行される各スレッドは、異なるチャネル上で実行される。
【0434】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、スレッド実行論理3100に組み込まれ得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、
図7A又は
図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するための実行論理3100のALUスレッドを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0435】
少なくとも1つの実施例では、
図31A~
図31Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図31A~
図31Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図31A~
図31Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0436】
図32は、少なくとも1つの実施例による、並列処理ユニット(「PPU」)3200を示す。少なくとも1つの実施例では、PPU3200は、PPU3200によって実行された場合、PPU3200に、本開示全体を通して説明されるプロセス及び技法のいくつか又はすべてを実施させる機械可読コードで構成される。少なくとも1つの実施例では、PPU3200はマルチスレッド・プロセッサであり、マルチスレッド・プロセッサは、1つ又は複数の集積回路デバイス上で実装され、(機械可読命令又は単に命令とも呼ばれる)コンピュータ可読命令を複数のスレッド上で並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも1つの実施例では、スレッドは、実行のスレッドを指し、PPU3200によって実行されるように構成された命令のセットのインスタンス化である。少なくとも1つの実施例では、PPU3200は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイス上での表示のための2次元(「2D」)画像データを生成するために3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス処理ユニット(「GPU」)である。少なくとも1つの実施例では、PPU3200は、線形代数演算及び機械学習演算などの算出を実施するために利用される。
図32は、単に例示を目的とした例示的な並列プロセッサを示し、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な実例として解釈されるべきであり、同プロセッサを補完し、及び/又はそれを置換するために、任意の好適なプロセッサが採用され得ることとして、解釈されるべきである。
【0437】
少なくとも1つの実施例では、1つ又は複数のPPU3200は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習アプリケーションを加速するように構成される。少なくとも1つの実施例では、PPU3200は、以下の非限定的な実例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアルタイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
【0438】
少なくとも1つの実施例では、PPU3200は、限定はしないが、入力/出力(「I/O」:Input/Output)ユニット3206と、フロント・エンド・ユニット3210と、スケジューラ・ユニット3212と、ワーク分散ユニット3214と、ハブ3216と、クロスバー(「Xバー」:crossbar)3220と、1つ又は複数の汎用処理クラスタ(「GPC」)3218と、1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3222とを含む。少なくとも1つの実施例では、PPU3200は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3208を介してホスト・プロセッサ又は他のPPU3200に接続される。少なくとも1つの実施例では、PPU3200は、システム・バス3202を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも1つの実施例では、PPU3200は、1つ又は複数のメモリ・デバイス(「メモリ」)3204を備えるローカル・メモリに接続される。少なくとも1つの実施例では、メモリ・デバイス3204は、限定はしないが、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも1つの実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成され、及び/又は構成可能である。
【0439】
少なくとも1つの実施例では、高速GPU相互接続3208は、ワイヤ・ベースのマルチ・レーン通信リンクを指し得、ワイヤ・ベースのマルチ・レーン通信リンクは、1つ又は複数の中央処理ユニット(「CPU」)と組み合わせられた1つ又は複数のPPU3200をスケーリングし、含めるために、システムによって使用され、PPU3200とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも1つの実施例では、データ及び/又はコマンドは、高速GPU相互接続3208によって、ハブ3216を通して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び
図32に明示的に示されていないこともある他の構成要素など、PPU3200の他のユニットに/から送信される。
【0440】
少なくとも1つの実施例では、I/Oユニット3206は、システム・バス3202を介して(
図32に示されていない)ホスト・プロセッサから通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも1つの実施例では、I/Oユニット3206は、システム・バス3202を介して直接、又は、メモリ・ブリッジなどの1つ又は複数の中間デバイスを通して、ホスト・プロセッサと通信する。少なくとも1つの実施例では、I/Oユニット3206は、システム・バス3202を介してPPU3200のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信し得る。少なくとも1つの実施例では、I/Oユニット3206は、周辺構成要素相互接続エクスプレス(「PCIe」)インターフェースを、PCIeバスを介した通信のために実装する。少なくとも1つの実施例では、I/Oユニット3206は、外部デバイスと通信するためのインターフェースを実装する。
【0441】
少なくとも1つの実施例では、I/Oユニット3206は、システム・バス3202を介して受信されたパケットを復号する。少なくとも1つの実施例では、少なくともいくつかのパケットは、PPU3200に様々な動作を実施させるように構成されたコマンドを表す。少なくとも1つの実施例では、I/Oユニット3206は、復号されたコマンドを、コマンドによって指定されるPPU3200の様々な他のユニットに送信する。少なくとも1つの実施例では、コマンドは、フロント・エンド・ユニット3210に送信され、及び/或いは、ハブ3216、又は(
図32に明示的に示されていない)1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなど、PPU3200の他のユニットに送信される。少なくとも1つの実施例では、I/Oユニット3206はPPU3200の様々な論理ユニット間で及びそれらの間で通信をルーティングするように構成される。
【0442】
少なくとも1つの実施例では、ホスト・プロセッサによって実行されるプログラムは、処理のためにワークロードをPPU3200に提供するバッファにおいて、コマンド・ストリームを符号化する。少なくとも1つの実施例では、ワークロードは、命令と、それらの命令によって処理されるべきデータとを含む。少なくとも1つの実施例では、バッファは、ホスト・プロセッサとPPU3200の両方によってアクセス(たとえば、読取り/書込み)可能であるメモリ中の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3206によってシステム・バス3202を介して送信されるメモリ要求を介して、システム・バス3202に接続されたシステム・メモリ中のそのバッファにアクセスするように構成され得る。少なくとも1つの実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始に対するポインタをPPU3200に送信し、それにより、フロント・エンド・ユニット3210は、1つ又は複数のコマンド・ストリームに対するポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3200の様々なユニットにフォワーディングする。
【0443】
少なくとも1つの実施例では、フロント・エンド・ユニット3210は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3218を構成するスケジューラ・ユニット3212に結合される。少なくとも1つの実施例では、スケジューラ・ユニット3212は、スケジューラ・ユニット3212によって管理される様々なタスクに関係する状態情報を追跡するように構成され、状態情報は、GPC3218のうちのどれにタスクが割り当てられるか、タスクがアクティブであるのか非アクティブであるのか、タスクに関連する優先レベルなどを示し得る。少なくとも1つの実施例では、スケジューラ・ユニット3212は、GPC3218のうちの1つ又は複数上での複数のタスクの実行を管理する。
【0444】
少なくとも1つの実施例では、スケジューラ・ユニット3212は、GPC3218上での実行のためのタスクをディスパッチするように構成されたワーク分散ユニット3214に結合される。少なくとも1つの実施例では、ワーク分散ユニット3214は、スケジューラ・ユニット3212から受信された、スケジューリングされたタスクの数を追跡し、ワーク分散ユニット3214は、GPC3218の各々について、ペンディング・タスク・プール及びアクティブ・タスク・プールを管理する。少なくとも1つの実施例では、ペンディング・タスク・プールは、特定のGPC3218によって処理されるように割り当てられたタスクを含んでいるいくつかのスロット(たとえば、32個のスロット)を備え、アクティブ・タスク・プールは、GPC3218によってアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4つのスロット)を備え得、それにより、GPC3218のうちの1つがタスクの実行を完了したとき、GPC3218のためのそのアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクが選択され、GPC3218上での実行のためにスケジューリングされる。少なくとも1つの実施例では、データ依存性が解決されるのを待っている間など、アクティブ・タスクがGPC3218上でアイドルである場合、そのアクティブ・タスクがGPC3218から排除され、そのペンディング・タスク・プールに戻され、その間に、そのペンディング・タスク・プール中の別のタスクが選択され、GPC3218上での実行のためにスケジューリングされる。
【0445】
少なくとも1つの実施例では、ワーク分散ユニット3214は、Xバー3220を介して1つ又は複数のGPC3218と通信する。少なくとも1つの実施例では、Xバー3220は、PPU3200のユニットのうちの多くをPPU3200の他のユニットに結合する相互接続ネットワークであり、ワーク分散ユニット3214を特定のGPC3218に結合するように構成され得る。少なくとも1つの実施例では、PPU3200の1つ又は複数の他のユニットも、ハブ3216を介してXバー3220に接続され得る。
【0446】
少なくとも1つの実施例では、タスクはスケジューラ・ユニット3212によって管理され、ワーク分散ユニット3214によってGPC3218のうちの1つにディスパッチされる。少なくとも1つの実施例では、GPC3218は、タスクを処理し、結果を生成するように構成される。少なくとも1つの実施例では、結果は、GPC3218内の他のタスクによって消費されるか、Xバー3220を介して異なるGPC3218にルーティングされるか、又はメモリ3204に記憶され得る。少なくとも1つの実施例では、結果は、パーティション・ユニット3222を介してメモリ3204に書き込まれ得、パーティション・ユニット3222は、メモリ3204への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも1つの実施例では、結果は、高速GPU相互接続3208を介して別のPPU又はCPUに送信され得る。少なくとも1つの実施例では、
図34と併せて本明細書でさらに詳細に説明されるように、PPU3200は、限定はしないが、PPU3200に結合された別個の個別メモリ・デバイス3204の数に等しいU個のパーティション・ユニット3222を含む。
【0447】
少なくとも1つの実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、ドライバ・カーネルは、ホスト・プロセッサ上で実行している1つ又は複数のアプリケーションがPPU3200上での実行のために動作をスケジューリングすることを可能にするアプリケーション・プログラミング・インターフェース(API)を実装する。少なくとも1つの実施例では、複数のコンピュート・アプリケーションが、PPU3200によって同時に実行され、PPU3200は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも1つの実施例では、アプリケーションは、PPU3200による実行のための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形態の)命令を生成し、そのドライバ・カーネルは、PPU3200によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも1つの実施例では、各タスクは、ワープと呼ばれることがある関係スレッドの1つ又は複数のグループを備える。少なくとも1つの実施例では、ワープは、並列に実行され得る複数の関係スレッド(たとえば、32個のスレッド)を備える。少なくとも1つの実施例では、連動スレッドは、タスクを実施するための命令を含み、共有メモリを通してデータを交換する、複数のスレッドを指すことができる。少なくとも1つの実施例では、スレッド及び連動スレッドは、
図34と併せてさらに詳細に説明される。
【0448】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサは、PPU3200に提供される情報を予測又は推論するために、ニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサは、別のプロセッサ又はシステムによって、或いはPPU3200によって訓練された、訓練された機械学習モデル(たとえば、ニューラル・ネットワーク)に基づいて、情報を推論又は予測するために使用される。少なくとも1つの実施例では、PPU3200は、本明細書で説明される1つ又は複数のニューラル・ネットワーク使用事例を実施するために使用され得る。
【0449】
少なくとも1つの実施例では、
図32に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図32に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図32に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0450】
図33は、少なくとも1つの実施例による、汎用処理クラスタ(「GPC」)3300を示す。少なくとも1つの実施例では、GPC3300は、
図32のGPC3218である。少なくとも1つの実施例では、各GPC3300は、限定はしないが、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3300は、限定はしないが、パイプライン・マネージャ3302、プレ・ラスタ演算ユニット(「preROP」:pre-raster operation)3304、ラスタ・エンジン3308、ワーク分散クロスバー(「WDX」:work distribution crossbar)3316、メモリ管理ユニット(「MMU」)3318、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Cluster)3306、及びパーツの任意の好適な組合せを含む。
【0451】
少なくとも1つの実施例では、GPC3300の動作は、パイプライン・マネージャ3302によって制御される。少なくとも1つの実施例では、パイプライン・マネージャ3302は、GPC3300に割り振られたタスクを処理するための1つ又は複数のDPC3306の構成を管理する。少なくとも1つの実施例では、パイプライン・マネージャ3302は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3306のうちの少なくとも1つを構成する。少なくとも1つの実施例では、DPC3306は、プログラマブル・ストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3314上で頂点シェーダ・プログラムを実行するように構成される。少なくとも1つの実施例では、パイプライン・マネージャ3302は、少なくとも1つの実施例では、ワーク分散ユニットから受信されたパケットを、GPC3300内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、preROP3304中の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3308にルーティングされ得、他のパケットは、プリミティブ・エンジン3312又はSM3314による処理のためにDPC3306にルーティングされ得る。少なくとも1つの実施例では、パイプライン・マネージャ3302は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3306のうちの少なくとも1つを構成する。
【0452】
少なくとも1つの実施例では、preROPユニット3304は、少なくとも1つの実施例では、ラスタ・エンジン3308及びDPC3306によって生成されたデータを、
図32と併せて上記でより詳細に説明されたパーティション・ユニット3222中のラスタ演算(「ROP」:Raster Operation)ユニットにルーティングするように構成される。少なくとも1つの実施例では、preROPユニット3304は、色ブレンディングのための最適化を実施すること、ピクセル・データを組織化すること、アドレス・トランスレーションを実施することなどを行うように構成される。少なくとも1つの実施例では、ラスタ・エンジン3308は、限定はしないが、少なくとも1つの実施例では、様々なラスタ演算を実施するように構成されたいくつかの固定機能ハードウェア・ユニットを含み、ラスタ・エンジン3308は、限定はしないが、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びそれらの任意の好適な組合せを含む。少なくとも1つの実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何学的プリミティブに関連する平面方程式を生成し、平面方程式は、プリミティブについてのカバレージ情報(たとえば、タイルのためのx、yカバレージ・マスク)を生成するために粗いラスタ・エンジンに送信され、粗いラスタ・エンジンの出力は選別エンジンに送信され、zテストに落ちたプリミティブに関連するフラグメントが選別され、クリッピング・エンジンに送信され、視錐台の外側にあるフラグメントがクリップされる。少なくとも1つの実施例では、クリッピング及び選別を通過したフラグメントは、セットアップ・エンジンによって生成された平面方程式に基づいてピクセル・フラグメントについての属性を生成するために、細かいラスタ・エンジンに渡される。少なくとも1つの実施例では、ラスタ・エンジン3308の出力は、DPC3306内に実装されたフラグメント・シェーダによってなど、任意の好適なエンティティによって処理されるべきフラグメントを含む。
【0453】
少なくとも1つの実施例では、GPC3300中に含まれる各DPC3306は、限定はしないが、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3310、プリミティブ・エンジン3312、1つ又は複数のSM3314、及びそれらの任意の好適な組合せを含む。少なくとも1つの実施例では、MPC3310は、DPC3306の動作を制御して、パイプライン・マネージャ3302から受信されたパケットを、DPC3306中の適切なユニットにルーティングする。少なくとも1つの実施例では、頂点に関連するパケットは、頂点に関連する頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3312にルーティングされ、対照的に、シェーダ・プログラムに関連するパケットは、SM3314に送信され得る。
【0454】
少なくとも1つの実施例では、SM3314は、限定はしないが、いくつかのスレッドによって表されたタスクを処理するように構成されたプログラマブル・ストリーミング・プロセッサを含む。少なくとも1つの実施例では、SM3314はマルチスレッド化され、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(「SIMD」)アーキテクチャを実装し、スレッドのグループ(たとえば、ワープ)中の各スレッドは、命令の同じセットに基づいてデータの異なるセットを処理するように構成される。少なくとも1つの実施例では、スレッドのグループ中のすべてのスレッドが命令の共通のセットを実行する。少なくとも1つの実施例では、SM3314は、単一命令複数スレッド(「SIMT」)アーキテクチャを実装し、スレッドのグループ中の各スレッドは、命令のその共通のセットに基づいて、データの異なるセットを処理するように構成されるが、スレッドのグループ中の個々のスレッドは、実行中に発散することを可能にされる。少なくとも1つの実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が、各ワープについて維持されて、ワープ内のスレッドが発散するときのワープ間の同時処理及びワープ内の直列実行を可能にする。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が、各個々のスレッドについて維持されて、すべてのスレッド間、ワープ内及びワープ間での等しい同時処理を可能にする。少なくとも1つの実施例では、実行状態が、各個々のスレッドについて維持され、共通の命令を実行しているスレッドが、より良い効率性のために収束され、並列に実行され得る。SM3314の少なくとも1つの実施例は、本明細書でさらに詳細に説明される。
【0455】
少なくとも1つの実施例では、MMU3318は、GPC3300とメモリ・パーティション・ユニット(たとえば、
図32のパーティション・ユニット3222)との間のインターフェースを提供し、MMU3318は、仮想アドレスから物理アドレスへのトランスレーションと、メモリ保護と、メモリ要求の調停とを提供する。少なくとも1つの実施例では、MMU3318は、仮想アドレスからメモリ中の物理アドレスへのトランスレーションを実施するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
【0456】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサは、GPC3300に提供される情報を予測又は推論するために、ニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも1つの実施例では、GPC3300は、別のプロセッサ又はシステムによって、或いはGPC3300によって訓練された、訓練された機械学習モデル(たとえば、ニューラル・ネットワーク)に基づいて、情報を推論又は予測するために使用される。少なくとも1つの実施例では、GPC3300は、本明細書で説明される1つ又は複数のニューラル・ネットワーク使用事例を実施するために使用され得る。
【0457】
少なくとも1つの実施例では、
図33に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図33に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図33に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0458】
図34は、少なくとも1つの実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3400を示す。少なくとも1つの実施例では、メモリ・パーティション・ユニット3400は、限定はしないが、ラスタ演算(「ROP」)ユニット3402、レベル2(「L2」)キャッシュ3404、メモリ・インターフェース3406、及びそれらの任意の好適な組合せを含む。少なくとも1つの実施例では、メモリ・インターフェース3406はメモリに結合される。少なくとも1つの実施例では、メモリ・インターフェース3406は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実装し得る。少なくとも1つの実施例では、PPUは、Uが正の整数である、U個のメモリ・インターフェース3406を組み込み、パーティション・ユニット3400のペア当たりに1つのメモリ・インターフェース3406があり、パーティション・ユニット3400の各ペアは、対応するメモリ・デバイスに接続される。たとえば、少なくとも1つの実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」:graphics double-data-rate,version 5,synchronous dynamic random access memory)など、最高Y個のメモリ・デバイスに接続され得る。
【0459】
少なくとも1つの実施例では、メモリ・インターフェース3406は、高帯域幅メモリ第2世代(「HBM2」)メモリ・インターフェースを実装し、YはUの半分に等しい。少なくとも1つの実施例では、HBM2メモリ・スタックは、PPUをもつ物理パッケージ上に位置し、従来のGDDR5 SDRAMシステムと比較してかなりの電力と面積の節約を提供する。少なくとも1つの実施例では、各HBM2スタックは、限定はしないが、4つのメモリ・ダイを含み、Y=4であり、各HBM2スタックが、1つのダイ当たりに2つの128ビット・チャネルを含み、合計で、8つのチャネル及び1024ビットのデータ・バス幅がある。少なくとも1つの実施例では、そのメモリは、データを保護するために、1ビット・エラー訂正2ビット・エラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」:Error Correction Code)をサポートする。少なくとも1つの実施例では、ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供することができる。
【0460】
少なくとも1つの実施例では、PPUは、マルチ・レベル・メモリ階層を実装する。少なくとも1つの実施例では、メモリ・パーティション・ユニット3400は、中央処理ユニット(「CPU」)及びPPUメモリに単一の統一仮想アドレス空間を提供するために統一メモリをサポートして、仮想メモリ・システム間でのデータ共有を可能にする。少なくとも1つの実施例では、より頻繁にページにアクセスしているPPUの物理メモリにメモリ・ページが移動されることを確実にするために、他のプロセッサ上に位置するメモリへのPPUによるアクセスの頻度が追跡される。少なくとも1つの実施例では、高速GPU相互接続3208は、アドレス・トランスレーション・サービスをサポートして、PPUがCPUのページ・テーブルに直接アクセスすることを可能にし、PPUによるCPUメモリへのフル・アクセスを提供する。
【0461】
少なくとも1つの実施例では、コピー・エンジンは、複数のPPU間又はPPUとCPUとの間でデータを転送する。少なくとも1つの実施例では、コピー・エンジンは、ページ・テーブルにマッピングされないアドレスについてページ障害を生成することができ、次いで、メモリ・パーティション・ユニット3400がページ障害に対応して、アドレスをページ・テーブルにマッピングし、その後、コピー・エンジンが転送を実施する。少なくとも1つの実施例では、メモリは、複数のプロセッサ間での複数のコピー・エンジン動作についてピン留めされて(たとえば、ページ移動不可能にされて)、利用可能なメモリを大幅に低減する。少なくとも1つの実施例では、ハードウェア・ページ障害がある場合、メモリ・ページが常駐であるかどうかにかかわらず、アドレスがコピー・エンジンに渡され得、コピー・プロセスは透過的である。
【0462】
少なくとも1つの実施例によれば、
図32のメモリ3204又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3400によってフェッチされ、L2キャッシュ3404に記憶され、L2キャッシュ3404は、オンチップで位置し、様々なGPC間で共有される。少なくとも1つの実施例では、各メモリ・パーティション・ユニット3400は、限定はしないが、対応するメモリ・デバイスに関連するL2キャッシュの少なくとも一部分を含む。少なくとも1つの実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットにおいて実装される。少なくとも1つの実施例では、
図33中のSM3314の各々は、レベル1(「L1」)キャッシュを実装し得、そのL1キャッシュは、特定のSM3314に専用であるプライベート・メモリであり、L2キャッシュ3404からのデータは、フェッチされ、SM3314の機能ユニットでの処理のために各L1キャッシュに記憶される。少なくとも1つの実施例では、L2キャッシュ3404は、メモリ・インターフェース3406及び
図32に示されているXバー3220に結合される。
【0463】
少なくとも1つの実施例では、ROPユニット3402は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実施する。ROPユニット3402は、少なくとも1つの実施例では、ラスタ・エンジン3308と併せて深度テストを実装して、ピクセル・フラグメントに関連するサンプル・ロケーションについての深度を、ラスタ・エンジン3308の選別エンジンから受信する。少なくとも1つの実施例では、深度は、フラグメントに関連するサンプル・ロケーションについての深度バッファにおける対応する深度に対してテストされる。少なくとも1つの実施例では、そのフラグメントがそのサンプル・ロケーションについての深度テストをパスした場合、ROPユニット3402は、深度バッファを更新し、その深度テストの結果をラスタ・エンジン3308に送信する。パーティション・ユニット3400の数はGPCの数とは異なり得、したがって、各ROPユニット3402は、少なくとも1つの実施例では、各GPCに結合され得ることが諒解されよう。少なくとも1つの実施例では、ROPユニット3402は、異なるGPCから受信されたパケットを追跡し、ROPユニット3402によって生成された結果が、Xバー3220を通してルーティングされるべきであるかどうかを決定する。
【0464】
少なくとも1つの実施例では、
図34に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図34に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図34に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0465】
図35は、少なくとも1つの実施例による、ストリーミング・マルチプロセッサ(「SM」)3500を示す。少なくとも1つの実施例では、SM3500は、
図33のSMである。少なくとも1つの実施例では、SM3500は、限定はしないが、命令キャッシュ3502、1つ又は複数のスケジューラ・ユニット3504、レジスタ・ファイル3508、1つ又は複数の処理コア(「コア」)3510、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3512、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3514、相互接続ネットワーク3516、共有メモリ/レベル1(「L1」)キャッシュ3518、及び/又はそれらの任意の好適な組合せを含む。
【0466】
少なくとも1つの実施例では、ワーク分散ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)上での実行のためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に割り振られ、タスクがシェーダ・プログラムに関連する場合、そのタスクはSM3500のうちの1つに割り振られる。少なくとも1つの実施例では、スケジューラ・ユニット3504は、ワーク分散ユニットからタスクを受信し、SM3500に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも1つの実施例では、スケジューラ・ユニット3504は、並列スレッドのワープとしての実行のためにスレッド・ブロックをスケジューリングし、各スレッド・ブロックは、少なくとも1つのワープを割り振られる。少なくとも1つの実施例では、各ワープは、スレッドを実行する。少なくとも1つの実施例では、スケジューラ・ユニット3504は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを割り振り、次いで、複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3510、SFU3512、及びLSU3514)にディスパッチする。
【0467】
少なくとも1つの実施例では、連動グループは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し得、プログラミング・モデルは、スレッドが通信している粒度を開発者が表現することを可能にして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも1つの実施例では、連動起動APIは、並列アルゴリズムの実行のためにスレッド・ブロックの間の同期をサポートする。少なくとも1つの実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構築物、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかしながら、少なくとも1つの実施例では、プログラマは、スレッド・ブロックよりも小さい粒度においてスレッドのグループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形態で、より高い性能、設計のフレキシビリティ、及びソフトウェア再使用を可能にし得る。少なくとも1つの実施例では、連動グループは、プログラマが、サブ・ブロック(すなわち、単一スレッドと同じくらい小さい)粒度及びマルチ・ブロック粒度において、スレッドのグループを明示的に定義し、連動グループ中のスレッドに対する同期などの集合的な動作を実施することを可能にする。少なくとも1つの実施例では、そのプログラミング・モデルは、ソフトウェア境界にわたるクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数が、収束に関して仮定する必要なしにそれらのローカル・コンテキスト内で安全に同期することができる。少なくとも1つの実施例では、連動グループ・プリミティブは、限定はしないが、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を含む、新しいパターンの連動並列性を可能にする。
【0468】
少なくとも1つの実施例では、ディスパッチ・ユニット3506は、1つ又は複数の機能ユニットに命令を送信するように構成され、スケジューラ・ユニット3504は、限定はしないが、共通のワープからの2つの異なる命令が各クロック・サイクル中にディスパッチされることを可能にする2つのディスパッチ・ユニット3506を含む。少なくとも1つの実施例では、各スケジューラ・ユニット3504は、単一のディスパッチ・ユニット3506又は追加のディスパッチ・ユニット3506を含む。
【0469】
少なくとも1つの実施例では、各SM3500は、少なくとも1つの実施例では、限定はしないが、SM3500の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3508を含む。少なくとも1つの実施例では、レジスタ・ファイル3508は、各機能ユニットがレジスタ・ファイル3508の専用部分を割り振られるように、各機能ユニットの間で分割される。少なくとも1つの実施例では、レジスタ・ファイル3508は、SM3500によって実行されている異なるワープ間で分割され、レジスタ・ファイル3508は、機能ユニットのデータ経路に接続されたオペランドのための一時的ストレージを提供する。少なくとも1つの実施例では、各SM3500は、限定はしないが、複数のL個の処理コア3510を含み、ここで、Lは正の整数である。少なくとも1つの実施例では、SM3500は、限定はしないが、多数の(たとえば、128個以上の)個別の処理コア3510を含む。少なくとも1つの実施例では、各処理コア3510は、限定はしないが、完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを含み、これは、限定はしないが、浮動小数点算術論理ユニット及び整数算術論理ユニットを含む。少なくとも1つの実施例では、浮動小数点算術論理ユニットは、浮動小数点算術のためのIEEE754-2008規格を実装する。少なくとも1つの実施例では、処理コア3510は、限定はしないが、64個の単精度(32ビット)浮動小数点コアと、64個の整数コアと、32個の倍精度(64ビット)浮動小数点コアと、8つのテンソル・コアとを含む。
【0470】
テンソル・コアは、少なくとも1つの実施例による行列演算を実施するように構成される。少なくとも1つの実施例では、1つ又は複数のテンソル・コアは、処理コア3510中に含まれる。少なくとも1つの実施例では、テンソル・コアは、ニューラル・ネットワーク訓練及び推論のための畳み込み演算など、深層学習行列算術を実施するように構成される。少なくとも1つの実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実施し、ここで、A、B、C、及びDは4×4の行列である。
【0471】
少なくとも1つの実施例では、行列乗算入力A及びBは、16ビットの浮動小数点行列であり、和の行列C及びDは、16ビットの浮動小数点又は32ビットの浮動小数点行列である。少なくとも1つの実施例では、テンソル・コアは、32ビットの浮動小数点の和をもつ16ビットの浮動小数点入力データで動作する。少なくとも1つの実施例では、16ビットの浮動小数点乗算は、64個の演算を使用し、結果的に完全精度の積をもたらし、次いで、完全精度の積が、4×4×4の行列乗算についての他の中間積との32ビット浮動小数点加算を使用して加算される。少なくとも1つの実施例では、これらの小さい要素から築かれる、はるかに大きい2次元又はさらに高次元の行列演算を実施するために、テンソル・コアが使用される。少なくとも1つの実施例では、CUDA9C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも1つの実施例では、CUDAレベルにおいて、ワープ・レベル・インターフェースは、ワープの32個のスレッドすべてに及ぶ16×16サイズの行列を仮定する。
【0472】
少なくとも1つの実施例では、各SM3500は、限定はしないが、特殊関数(たとえば、属性評価、逆数平方根など)を実施するM個のSFU3512を含む。少なくとも1つの実施例では、SFU3512は、限定はしないが、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも1つの実施例では、SFU3512は、限定はしないが、テクスチャ・マップ・フィルタリング動作を実施するように構成されたテクスチャ・ユニットを含む。少なくとも1つの実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3500によって実行されるシェーダ・プログラムにおける使用のためのサンプリングされたテクスチャ値を作り出すように構成される。少なくとも1つの実施例では、テクスチャ・マップは、共有メモリ/L1キャッシュ3518に記憶される。少なくとも1つの実施例では、テクスチャ・ユニットは、少なくとも1つの実施例によれば、ミップ・マップ(たとえば、詳細のレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも1つの実施例では、各SM3500は、限定はしないが、2つのテクスチャ・ユニットを含む。
【0473】
各SM3500は、少なくとも1つの実施例では、限定はしないが、共有メモリ/L1キャッシュ3518とレジスタ・ファイル3508との間でロード及びストア動作を実装するN個のLSU3514を含む。少なくとも1つの実施例では、相互接続ネットワーク3516は、各機能ユニットをレジスタ・ファイル3508に接続し、LSU3514をレジスタ・ファイル3508及び共有メモリ/L1キャッシュ3518に接続する。少なくとも1つの実施例では、相互接続ネットワーク3516はクロスバーであり、クロスバーは、任意の機能ユニットをレジスタ・ファイル3508中の任意のレジスタに接続し、LSU3514をレジスタ・ファイル3508と共有メモリ/L1キャッシュ3518中のメモリ・ロケーションとに接続するように構成され得る。
【0474】
少なくとも1つの実施例では、共有メモリ/L1キャッシュ3518は、少なくとも1つの実施例では、SM3500とプリミティブ・エンジンとの間及びSM3500中のスレッド間でのデータ・ストレージ及び通信を可能にするオンチップ・メモリのアレイである。少なくとも1つの実施例では、共有メモリ/L1キャッシュ3518は、限定はしないが、128KBのストレージ容量を備え、SM3500からパーティション・ユニットへの経路中にある。少なくとも1つの実施例では、共有メモリ/L1キャッシュ3518は、少なくとも1つの実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも1つの実施例では、共有メモリ/L1キャッシュ3518、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストアである。
【0475】
少なくとも1つの実施例では、データ・キャッシュと共有メモリ機能性とを単一のメモリ・ブロックに組み合わせることは、両方のタイプのメモリ・アクセスについて改善された性能を提供する。少なくとも1つの実施例では、容量は、共有メモリが容量の半分を使用するように構成され、テクスチャ及びロード/ストア動作が残りの容量を使用することができる場合など、共有メモリを使用しないプログラムによってキャッシュとして使用されるか、又は使用可能である。少なくとも1つの実施例によれば、共有メモリ/L1キャッシュ3518内の統合は、共有メモリ/L1キャッシュ3518が、データをストリーミングするための高スループット管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供することを可能にする。少なくとも1つの実施例では、汎用並列算出のために構成されたとき、グラフィックス処理と比較してより簡単な構成が使用され得る。少なくとも1つの実施例では、固定機能グラフィックス処理ユニットがバイパスされて、はるかに簡単なプログラミング・モデルを作成する。汎用並列算出構成では、ワーク分散ユニットは、少なくとも1つの実施例においてスレッドのブロックをDPCに直接割り当て、分散させる。少なくとも1つの実施例では、ブロック中のスレッドは、各スレッドが一意の結果を生成することを確実にするように、計算において一意のスレッドIDを使用して、共通のプログラムを実行し、SM3500を使用してプログラムを実行し、計算を実施し、共有メモリ/L1キャッシュ3518を使用してスレッド間で通信し、LSU3514を使用して、共有メモリ/L1キャッシュ3518及びメモリ・パーティション・ユニットを通してグローバル・メモリを読み取り、書き込む。少なくとも1つの実施例では、汎用並列算出のために構成されたとき、SM3500は、DPC上で新しいワークを起動するためにスケジューラ・ユニット3504が使用することができるコマンドを書き込む。
【0476】
少なくとも1つの実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレス・ハンドヘルド・デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭部装着型ディスプレイ、ハンドヘルド電子デバイスなどに含まれるか、又はそれらに結合される。少なくとも1つの実施例では、PPUは、単一の半導体基板上で具体化される。少なくとも1つの実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)中に含まれる。
【0477】
少なくとも1つの実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カード上に含まれ得る。少なくとも1つの実施例では、そのグラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースするように構成され得る。少なくとも1つの実施例では、そのPPUは、マザーボードのチップセット中に含まれる統合されたグラフィックス処理ユニット(「iGPU」:integrated graphics processing unit)であり得る。
【0478】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。少なくとも1つの実施例では、深層学習アプリケーション・プロセッサは、SM3500に提供される情報を予測又は推論するために、ニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも1つの実施例では、SM3500は、別のプロセッサ又はシステムによって、或いはSM3500によって訓練された、訓練された機械学習モデル(たとえば、ニューラル・ネットワーク)に基づいて、情報を推論又は予測するために使用される。少なくとも1つの実施例では、SM3500は、本明細書で説明される1つ又は複数のニューラル・ネットワーク使用事例を実施するために使用され得る。
【0479】
少なくとも1つの実施例では、
図35に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図35に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図35に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0480】
医療用途における画像推論及び画像処理など、先進コンピューティングのための仮想化コンピューティング・プラットフォームに関係する実施例が開示される。限定はしないが、実施例は、放射線写真撮影、磁気共鳴撮像(MRI:magnetic resonance imaging)、核医学、超音波、ソノグラフィ、エラストグラフィ、光音響撮像、トモグラフィ、心エコー、機能的近赤外分光法、及び磁性粒子撮像、又はそれらの組合せを含み得る。少なくとも1つの実施例では、本明細書で説明される仮想化コンピューティング・プラットフォーム及び関連するプロセスは、限定はしないが、法科学分析、表面下検出及び撮像(たとえば、石油探査、考古学、古生物学など)、地形学、海洋学、地質学、骨学、気象学、知能分野、又は物体追跡及び監視、センサ・データ処理(たとえば、RADAR、SONAR、LIDARなど)、並びに/又はゲノミクス及び遺伝子シーケンシングにおいて、追加又は代替として使用され得る。
【0481】
図36を参照すると、
図36は、少なくとも1つの実施例による、画像処理及び推論パイプラインを生成及び導入するプロセス3600のための例示的なデータ・フロー図である。少なくとも1つの実施例では、プロセス3600は、医療施設、病院、ヘルスケア機関、クリニック、リサーチ又は診断の研究所など、1つ又は複数の施設3602において、撮像デバイス、処理デバイス、ゲノミクス・デバイス、遺伝子シーケンシング・デバイス、放射線デバイス、及び/又は他のデバイス・タイプとともに使用するために導入され得る。少なくとも1つの実施例では、プロセス3600は、シーケンシング・データに対してゲノミクス分析及び推論を実施するために導入され得る。本明細書で説明されるシステム及びプロセスを使用して実施され得るゲノム分析の実例は、限定はしないが、バリアント・コール、変異検出、及び遺伝子発現の定量化を含む。
【0482】
少なくとも1つの実施例では、プロセス3600は、訓練システム3604及び/又は導入システム3606内で実行され得る。少なくとも1つの実施例では、訓練システム3604は、導入システム3606における使用のための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装を実施するために使用され得る。少なくとも1つの実施例では、導入システム3606は、施設3602におけるインフラストラクチャ要件を低減するために、処理及びコンピュート・リソースを分散型コンピューティング環境の間でオフロードするように構成され得る。少なくとも1つの実施例では、導入システム3606は、施設3602において撮像デバイス(たとえば、MRI、CTスキャン、X線、超音波など)又はシーケンシング・デバイスとともに使用するための仮想機器を選択し、カスタマイズし、実装するための合理化されたプラットフォームを提供し得る。少なくとも1つの実施例では、仮想機器は、撮像デバイス、シーケンシング・デバイス、放射線デバイス、及び/又は他のデバイス・タイプによって生成された撮像データに対して1つ又は複数の処理動作を実施するためのソフトウェア定義アプリケーションを含み得る。少なくとも1つの実施例では、パイプライン中の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム3606のサービス(たとえば、推論、視覚化、コンピュート、AIなど)を使用するか、又はコールし得る。
【0483】
少なくとも1つの実施例では、先進処理及び推論パイプラインにおいて使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実施するために機械学習モデル又は他のAIを使用し得る。少なくとも1つの実施例では、機械学習モデルは、施設3602において生成された(及び、施設3602において1つ又は複数のピクチャ・アーカイブ及び通信システム(PACS:picture archiving and communication system)サーバに記憶された)(撮像データなどの)データ3608を使用して、施設3602において訓練され得るか、1つ又は複数の別の施設(たとえば、異なる病院、研究所、クリニックなど)からの撮像又はシーケンシング・データ3608を使用して訓練され得るか、或いはそれらの組合せであり得る。少なくとも1つの実施例では、訓練システム3604は、導入システム3606のための実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースを提供するために使用され得る。
【0484】
少なくとも1つの実施例では、モデル・レジストリ3624は、バージョン管理及び物体メタデータをサポートし得る物体ストレージによってバックアップされ得る。少なくとも1つの実施例では、物体ストレージは、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、
図37のクラウド3726)互換アプリケーション・プログラミング・インターフェース(API)を通してアクセス可能であり得る。少なくとも1つの実施例では、モデル・レジストリ3624内の機械学習モデルは、システムの開発者又はパートナーがAPIと対話することによって、アップロード、リスト化、修正、又は削除され得る。少なくとも1つの実施例では、APIは、適切な資格をもつユーザがモデルをアプリケーションに関連付けることを可能にする方法へのアクセスを提供し得、それにより、モデルは、アプリケーションのコンテナ化されたインスタンス化の実行の一部として実行され得る。
【0485】
少なくとも1つの実施例では、訓練パイプライン3704(
図37)は、施設3602がそれ自体の機械学習モデルを訓練しているか、或いは、最適化又は更新される必要がある既存の機械学習モデルを有するシナリオを含み得る。少なくとも1つの実施例では、(1つ又は複数の)撮像デバイス、シーケンシング・デバイス、及び/又は他のデバイス・タイプによって生成された撮像データ3608が受信され得る。少なくとも1つの実施例では、撮像データ3608が受信されると、機械学習モデルについてのグランド・トゥルース・データとして使用されるべき撮像データ3608に対応するアノテーションを生成するのを補助するために、AI支援アノテーション3610が使用され得る。少なくとも1つの実施例では、AI支援アノテーション3610は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含み得、1つ又は複数の機械学習モデルは、(たとえば、いくつかのデバイスからの)いくつかのタイプの撮像データ3608及び/又は撮像データ3608中のいくつかのタイプの異常に対応するアノテーションを生成するように訓練され得る。少なくとも1つの実施例では、次いで、AI支援アノテーション3610は、グランド・トゥルース・データを生成するために、直接使用され得るか、或いは、(たとえば、研究者、臨床医、医師、科学者などによって)アノテーション・ツールを使用して調節又は微調整され得る。少なくとも1つの実施例では、いくつかの実例において、ラベル付きクリニック・データ3612(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、AI支援アノテーション3610、ラベル付きクリニック・データ3612、又はそれらの組合せが、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、訓練された機械学習モデルは出力モデル3616と呼ばれることがあり、本明細書で説明されるように、導入システム3606によって使用され得る。
【0486】
少なくとも1つの実施例では、訓練パイプライン3704(
図37)は、施設3602が、導入システム3606中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とするが、施設3602は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)シナリオを含み得る。少なくとも1つの実施例では、既存の機械学習モデルが、モデル・レジストリ3624から選択され得る。少なくとも1つの実施例では、モデル・レジストリ3624は、撮像データに対して様々な異なる推論タスクを実施するように訓練された機械学習モデルを含み得る。少なくとも1つの実施例では、モデル・レジストリ3624中の機械学習モデルは、施設3602とは異なる施設(たとえば、離れた場所にある施設)からの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、機械学習モデルは、1つのロケーション、2つのロケーション、又は任意の数のロケーションからの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、特定のロケーションからの撮像データに関して訓練されているとき、訓練は、そのロケーションにおいて行われ得るか、或いは少なくとも、(たとえば、HIPPA規定、プライバシー規定などに準拠するように)撮像データの機密性を保護するか又は撮像データが構外へ転送されるのを制限する様式で、行われ得る。少なくとも1つの実施例では、1つのロケーションにおいてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ3624に追加され得る。少なくとも1つの実施例では、次いで、機械学習モデルは、任意の数の他の施設において再訓練又は更新され得、再訓練又は更新されたモデルが、モデル・レジストリ3624において利用可能にされ得る。少なくとも1つの実施例では、次いで、機械学習モデルは、モデル・レジストリ3624から選択され得、出力モデル3616と呼ばれることがあり、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施するために導入システム3606において使用され得る。
【0487】
少なくとも1つの実施例では、訓練パイプライン3704(
図37)は、施設3602が、導入システム3606中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とすることを含むが、施設3602は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)シナリオにおいて使用され得る。少なくとも1つの実施例では、モデル・レジストリ3624から選択された機械学習モデルは、母集団、遺伝的差異、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題における差異のために、施設3602において生成される撮像データ3608のために微調整又は最適化されないことがある。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用されるべき撮像データ3608に対応するアノテーションを生成するのを補助するために、AI支援アノテーション3610が使用され得る。少なくとも1つの実施例では、ラベル付きクリニック・データ3612(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練3614と呼ばれることがある。少なくとも1つの実施例では、モデル訓練3614、たとえばAI支援アノテーション3610、ラベル付きクリニック・データ3612、又はそれらの組合せは、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用され得る。
【0488】
少なくとも1つの実施例では、導入システム3606は、ソフトウェア3618、サービス3620、ハードウェア3622、並びに/又は他の構成要素、特徴、及び機能性を含み得る。少なくとも1つの実施例では、導入システム3606は、ソフトウェア「スタック」を含み得、それにより、ソフトウェア3618は、サービス3620の上に築かれ得、サービス3620を使用して処理タスクのいくつか又はすべてを実施し得、サービス3620及びソフトウェア3618は、ハードウェア3622の上に築かれ、ハードウェア3622を使用して、導入システム3606の処理、ストレージ、及び/又は他のコンピュート・タスクを実行し得る。
【0489】
少なくとも1つの実施例では、ソフトウェア3618は、任意の数の異なるコンテナを含み得、各コンテナは、アプリケーションのインスタンス化を実行し得る。少なくとも1つの実施例では、各アプリケーションは、先進処理及び推論パイプライン中の1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実施し得る。少なくとも1つの実施例では、撮像デバイス(たとえば、CT、MRI、X線、超音波、ソノグラフィ、心エコーなど)、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイスなどの各タイプについて、デバイスによって生成された撮像データ3608(又は、本明細書で説明されるものなどの他のデータ・タイプ)に対してデータ処理タスクを実施し得る任意の数のコンテナがあり得る。少なくとも1つの実施例では、先進処理及び推論パイプラインは、(たとえば、施設3602におけるストレージ及び表示のために、医用におけるデジタル画像と通信(DICOM:digital imaging and communications in medicine)データ、放射線医学情報システム(RIS:radiology information system)データ、臨床情報システム(CIS:clinical information system)データ、リモート・プロシージャ・コール(RPC:remote procedure call)データ、表現状態転送(REST:representation state transfer)インターフェースに実質的に準拠したデータ、ファイルベースのインターフェースに実質的に準拠したデータ、及び/又は生のデータなどの使用可能なデータ・タイプに出力を再コンバートするために)パイプラインを通して処理した後に、各コンテナによる使用及び/又は施設3602による使用のための撮像データを受信及び構成するコンテナに加えて、撮像データ3608を処理するために所望されるか又は必要とされる異なるコンテナの選択に基づいて、定義され得る。少なくとも1つの実施例では、(たとえば、パイプラインを作り上げる)ソフトウェア3618内のコンテナの組合せは、(本明細書でより詳細に説明されるように)仮想機器と呼ばれることがあり、仮想機器は、サービス3620及びハードウェア3622を活用して、コンテナにおいてインスタンス化されたアプリケーションのいくつか又はすべての処理タスクを実行し得る。
【0490】
少なくとも1つの実施例では、データ処理パイプラインは、推論要求(たとえば、臨床医、医師、放射線医など、導入システム3606のユーザからの要求)に応答して、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のフォーマットで入力データ(たとえば、撮像データ3608)を受信し得る。少なくとも1つの実施例では、入力データは、1つ又は複数の撮像デバイス、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイス、及び/又は他のデバイス・タイプによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表し得る。少なくとも1つの実施例では、データは、1つ又は複数のアプリケーションによる処理のためにデータを準備するために、データ処理パイプラインの一部としての事前処理を受け得る。少なくとも1つの実施例では、次のアプリケーションのための出力データを準備するために、並びに/或いは、(たとえば、推論要求への応答としての)ユーザによる送信及び/又は使用のための出力データを準備するために、パイプラインの1つ又は複数の推論タスク又は他の処理タスクの出力に対して後処理が実施され得る。少なくとも1つの実施例では、推論タスクは、訓練システム3604の出力モデル3616を含み得る、訓練された又は導入されたニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実施され得る。
【0491】
少なくとも1つの実施例では、データ処理パイプラインのタスクは、(1つ又は複数の)コンテナ中にカプセル化され得、(1つ又は複数の)コンテナは、各々、アプリケーションの個別の完全に機能的なインスタンス化と、機械学習モデルを参照することが可能である仮想化コンピューティング環境とを表す。少なくとも1つの実施例では、コンテナ又はアプリケーションは、(本明細書でより詳細に説明される)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)エリアに公開され得、訓練された又は導入されたモデルは、モデル・レジストリ3624に記憶され、1つ又は複数のアプリケーションに関連し得る。少なくとも1つの実施例では、アプリケーションの画像(たとえば、コンテナ画像)は、コンテナ・レジストリにおいて利用可能であり得、パイプラインにおける導入のためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムによる使用のためのアプリケーションのインスタンス化のためのコンテナを生成するために使用され得る。
【0492】
少なくとも1つの実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実施するためのアプリケーションを(たとえばコンテナとして)開発、公開、及び記憶し得る。少なくとも1つの実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナがシステムに準拠するか又はシステムと互換性があることを確実にするために)システムに関連するソフトウェア開発キット(SDK:software development kit)を使用して実施され得る。少なくとも1つの実施例では、開発されたアプリケーションは、システム(たとえば、
図37のシステム3700)としてサービス3620のうちの少なくともいくつかをサポートし得るSDKを用いて、ローカルに(たとえば、第1の施設において、第1の施設からのデータに対して)テストされ得る。少なくとも1つの実施例では、DICOM物体は、1つから数百個の画像又は他のデータ・タイプをどこにでも含んでいることがあるので、及びデータの変動により、開発者は、入って来るDICOMデータの抽出及び準備を管理すること(たとえば、アプリケーションのための構築物を設定すること、事前処理をアプリケーションに組み込むことなど)について責任を負うことがある。少なくとも1つの実施例では、システム3700によって(たとえば、精度、安全性、患者のプライバシーなどについて)検証されると、アプリケーションは、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクを実施するために、ユーザ(たとえば、病院、クリニック、研究所、ヘルスケア提供者など)による選択及び/又は実装のためにコンテナ・レジストリにおいて利用可能になり得る。
【0493】
少なくとも1つの実施例では、次いで、開発者は、アプリケーション又はコンテナを、システム(たとえば、
図37のシステム3700)のユーザによるアクセス及び使用のためにネットワークを通して共有し得る。少なくとも1つの実施例では、完成した及び検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶され得、関連する機械学習モデルは、モデル・レジストリ3624に記憶され得る。少なくとも1つの実施例では、推論又は画像処理要求を提供する要求元エンティティ(たとえば、医療施設におけるユーザ)は、アプリケーション、コンテナ、データセット、機械学習モデルなどについてコンテナ・レジストリ及び/又はモデル・レジストリ3624をブラウズし、データ処理パイプライン中に含めるための要素の所望の組合せを選択し、撮像処理要求をサブミットし得る。少なくとも1つの実施例では、要求は、要求を実施するために必要である入力データ(及び、いくつかの実例では、関連する患者データ)を含み得、並びに/或いは、要求を処理する際に実行されるべき(1つ又は複数の)アプリケーション及び/又は機械学習モデルの選択を含み得る。少なくとも1つの実施例では、次いで、要求は、データ処理パイプラインの処理を実施するために導入システム3606(たとえば、クラウド)の1つ又は複数の構成要素に渡され得る。少なくとも1つの実施例では、導入システム3606による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ3624からの選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含み得る。少なくとも1つの実施例では、パイプラインによって結果が生成されると、結果は、参照のために(たとえば、ローカルの、構内のワークステーション又は端末上で実行している視聴アプリケーション・スイートにおいて視聴するために)ユーザに返され得る。少なくとも1つの実施例では、放射線医は、任意の数のアプリケーション及び/又はコンテナを含むデータ処理パイプラインから結果を受信し得、結果は、X線、CTスキャン、MRIなどにおける異常検出を含み得る。
【0494】
少なくとも1つの実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を補助するために、サービス3620が活用され得る。少なくとも1つの実施例では、サービス3620は、コンピュート・サービス、人工知能(AI:artificial intelligence)サービス、視覚化サービス、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、サービス3620は、ソフトウェア3618中の1つ又は複数のアプリケーションに共通である機能性を提供し得、したがって、機能性は、アプリケーションによってコール又は活用され得るサービスに対して抽象化され得る。少なくとも1つの実施例では、サービス3620によって提供される機能性は、動的に及びより効率的に稼働し得、また、(たとえば、並列コンピューティング・プラットフォーム3730(
図37)を使用して)アプリケーションが並列にデータを処理することを可能にすることによって、良好にスケーリングし得る。少なくとも1つの実施例では、サービス3620によって与えられる同じ機能性を共有する各アプリケーションが、サービス3620のそれぞれのインスタンスを有することを必要とされるのではなく、サービス3620は、様々なアプリケーション間で及びそれらの間で共有され得る。少なくとも1つの実施例では、サービスは、非限定的な実例として、検出又はセグメント化タスクを実行するために使用され得る推論サーバ又はエンジンを含み得る。少なくとも1つの実施例では、機械学習モデル訓練及び/又は再訓練能力を提供し得るモデル訓練サービスが含まれ得る。少なくとも1つの実施例では、GPU加速データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)抽出、リサイジング、スケーリング、及び/又は他の拡張を提供し得るデータ拡張サービスがさらに含まれ得る。少なくとも1つの実施例では、2次元(2D)及び/又は3次元(3D)のモデルにリアル感を追加するために、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を追加し得る視覚化サービスが使用され得る。少なくとも1つの実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを提供する仮想機器サービスが含まれ得る。
【0495】
少なくとも1つの実施例では、サービス3620がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションに関連する1つ又は複数の機械学習モデルは、(1つ又は複数の)機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)を(たとえば、APIコールとして)コールすることによって、実行され得る。少なくとも1つの実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、アプリケーションは、セグメント化タスクに関連する処理動作のうちの1つ又は複数を実施するための機械学習モデルを実行するように、推論サービスをコールし得る。少なくとも1つの実施例では、セグメント化アプリケーションと異常検出アプリケーションとを含む先進処理及び推論パイプラインを実装するソフトウェア3618は、1つ又は複数の推論タスクを実施するために各アプリケーションが同じ推論サービスをコールし得るので、合理化され得る。
【0496】
少なくとも1つの実施例では、ハードウェア3622は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXスーパーコンピュータ・システムなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含み得る。少なくとも1つの実施例では、異なるタイプのハードウェア3622が、導入システム3606中のソフトウェア3618及びサービス3620の効率的で専用のサポートを提供するために使用され得る。少なくとも1つの実施例では、画像処理、画像再構築、セグメント化、MRI検査、脳卒中又は心臓発作の(たとえば、リアルタイムの)検出、レンダリングにおける画像品質などの効率、精度、及び有効性を改善するために、AI/深層学習システム内、クラウド・システム中、及び/又は導入システム3606の他の処理構成要素中で、ローカルで(たとえば、施設3602において)処理するためのGPU処理の使用が実装され得る。少なくとも1つの実施例では、施設は、撮像デバイス、ゲノミクス・デバイス、シーケンシング・デバイス、及び/又は他のデバイス・タイプを構内に含み得、これらのデバイスは、GPUを活用して、対象者の解剖学的組織を表す撮像データを生成し得る。
【0497】
少なくとも1つの実施例では、ソフトウェア3618及び/又はサービス3620は、非限定的な実例として、深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化され得る。少なくとも1つの実施例では、導入システム3606及び/又は訓練システム3604のコンピューティング環境の少なくとも一部は、データ・センタの1つ又は複数のスーパーコンピュータ又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアとの組合せ)を用いて実行され得る。少なくとも1つの実施例では、データ・センタは、HIPAAの条項に準拠し得、したがって、撮像データ及び/又は他の患者データの受信、処理、及び送信は、患者データのプライバシーに関して安全に取り扱われる。少なくとも1つの実施例では、ハードウェア3622は、任意の数のGPUを含み得、それらのGPUは、本明細書で説明されるように、データの並列処理を実施するためにコールされ得る。少なくとも1つの実施例では、クラウド・プラットフォームは、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化実行のためのGPU処理をさらに含み得る。少なくとも1つの実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステム上で提供される)(1つ又は複数の)AI/深層学習スーパーコンピュータ及び/又はGPU最適化ソフトウェアを、ハードウェア抽象化及びスケーリング・プラットフォームとして使用して、実行され得る。少なくとも1つの実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合し得る。
【0498】
少なくとも1つの実施例では、
図36に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図36に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図36に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0499】
図37は、少なくとも1つの実施例による、撮像導入パイプラインを生成及び導入するための例示的なシステム3700のためのシステム図である。少なくとも1つの実施例では、システム3700は、
図36のプロセス3600、並びに/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用され得る。少なくとも1つの実施例では、システム3700は、訓練システム3604と導入システム3606とを含み得る。少なくとも1つの実施例では、訓練システム3604及び導入システム3606は、本明細書で説明されるように、ソフトウェア3618、サービス3620、及び/又はハードウェア3622を使用して実装され得る。
【0500】
少なくとも1つの実施例では、システム3700(たとえば、訓練システム3604及び/又は導入システム3606)は、(たとえば、クラウド3726を使用する)クラウド・コンピューティング環境において実装され得る。少なくとも1つの実施例では、システム3700は、ヘルスケア・サービス施設に関してローカルに、又はクラウド・コンピューティング・リソースとローカル・コンピューティング・リソースの両方の組合せとして、実装され得る。少なくとも1つの実施例では、クラウド・コンピューティングが実装される実施例では、患者データは、HIPAA並びに/或いは他のデータ取扱い及びプライバシー規定又は法律に準拠していない処理をレンダリングするシステム3700の1つ又は複数の構成要素から分離されるか、又はそれらによって処理されないことがある。少なくとも1つの実施例では、クラウド3726中のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを通して、許可されたユーザに限定され得る。少なくとも1つの実施例では、セキュリティ・プロトコルはウェブ・トークンを含み得、ウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)サービスによって署名され得、適切な許可を持ち得る。少なくとも1つの実施例では、(本明細書で説明される)仮想機器のAPI、又はシステム3700の他のインスタンス化は、対話について検査又は許可されたパブリックIPのセットに限定され得る。
【0501】
少なくとも1つの実施例では、システム3700の様々な構成要素は、ワイヤード及び/又はワイヤレス通信プロトコルを介して、限定はしないがローカル・エリア・ネットワーク(LAN)及び/又はワイド・エリア・ネットワーク(WAN)を含む様々な異なるネットワーク・タイプのいずれかを使用して、互いの間で通信し得る。少なくとも1つの実施例では、(たとえば、推論要求を送信するための、推論要求の結果を受信するためのなど)施設とシステム3700の構成要素との間の通信は、1つ又は複数のデータ・バス、ワイヤレス・データ・プロトコル(Wi-Fi)、ワイヤード・データ・プロトコル(たとえば、イーサネット)などを介して通信され得る。
【0502】
少なくとも1つの実施例では、訓練システム3604は、
図36に関して本明細書で説明されたものと同様の訓練パイプライン3704を実行し得る。少なくとも1つの実施例では、1つ又は複数の機械学習モデルが導入システム3606によって導入パイプライン3710において使用されるべきである場合、訓練パイプライン3704は、1つ又は複数の(たとえば、事前訓練された)モデルを訓練又は再訓練し、並びに/或いは、事前訓練されたモデル3706のうちの1つ又は複数を(たとえば、再訓練又は更新の必要なしに)実装するために、使用され得る。少なくとも1つの実施例では、訓練パイプライン3704の結果として、(1つ又は複数の)出力モデル3616が生成され得る。少なくとも1つの実施例では、訓練パイプライン3704は、限定はしないが、(たとえば、DICOM画像を、Neuroimaging Informatics Technology Initiative(NIfTI)フォーマットなど、それぞれの機械学習モデルによる処理に好適な別のフォーマットにコンバートするために、DICOMアダプタ3702Aを使用する)撮像データ(又は他の入力データ)コンバージョン又は適応、AI支援アノテーション3610、ラベル付きクリニック・データ3612を生成するための撮像データ3608のラベル付け又はアノテーション付け、モデル・レジストリからのモデル選択、モデル訓練3614、モデルの訓練、再訓練、又は更新、及び/或いは他の処理ステップなど、任意の数の処理ステップを含み得る。少なくとも1つの実施例では、導入システム3606によって使用される異なる機械学習モデルについて、異なる訓練パイプライン3704が使用され得る。少なくとも1つの実施例では、
図36に関して説明された第1の実例と同様の訓練パイプライン3704は、第1の機械学習モデルのために使用され得、
図36に関して説明された第2の実例と同様の訓練パイプライン3704は、第2の機械学習モデルのために使用され得、
図36に関して説明された第3の実例と同様の訓練パイプライン3704は、第3の機械学習モデルのために使用され得る。少なくとも1つの実施例では、各それぞれの機械学習モデルについて何が必要とされるかに応じて、訓練システム3604内のタスクの任意の組合せが使用され得る。少なくとも1つの実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練され、導入の準備ができていることがあり、したがって、機械学習モデルは、訓練システム3604によるいかなる処理をも受けないことがあり、導入システム3606によって実装され得る。
【0503】
少なくとも1つの実施例では、(1つ又は複数の)出力モデル3616及び/又は(1つ又は複数の)事前訓練されたモデル3706は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含み得る。少なくとも1つの実施例では、及び限定はしないが、システム3700によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、判定ツリー、サポート・ベクター・マシン(SVM:support vector machine)、単純ベイズ、k近傍法(Knn:k-nearest neighbor)、k平均クラスタリング、ランダム・フォレスト、次元低減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、リカレント、パーセプトロン、長/短期メモリ(LSTM:Long/Short Term Memory)、ホップフィールド、ボルツマン、深層信念、逆畳み込み、敵対的生成、液体状態機械など)を使用する(1つ又は複数の)機械学習モデル、及び/又は他のタイプの機械学習モデルを含み得る。
【0504】
少なくとも1つの実施例では、訓練パイプライン3704は、少なくとも
図40Bに関して本明細書でより詳細に説明されるように、AI支援アノテーションを含み得る。少なくとも1つの実施例では、ラベル付きクリニック・データ3612(たとえば、従来のアノテーション)は、任意の数の技法によって生成され得る。少なくとも1つの実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD:computer aided design)プログラム、ラベル付けプログラム、グランド・トゥルースのためのアノテーション又はラベルを生成するのに好適な別のタイプのプログラム内で生成され得、及び/或いは、いくつかの実例では、手書きされ得る。少なくとも1つの実施例では、グランド・トゥルース・データは、合成的に作り出され(たとえば、コンピュータ・モデル又はレンダリングから生成され)、現実的に作り出され(たとえば、実世界のデータから設計され、作り出され)、(たとえば、データから特徴を抽出し、次いでラベルを生成するために、特徴分析及び学習を使用して)機械自動化され、人間によりアノテーション付けされ(たとえば、ラベラ、又はアノテーション専門家が、ラベルのロケーションを定義し)、及び/又はそれらの組合せであり得る。少なくとも1つの実施例では、撮像データ3608の各インスタンス(又は機械学習モデルによって使用される他のデータ・タイプ)について、訓練システム3604によって生成される対応するグランド・トゥルース・データがあり得る。少なくとも1つの実施例では、訓練パイプライン3704中に含まれるAI支援アノテーションに加えて、又はその代わりにのいずれかで、導入パイプライン3710の一部としてAI支援アノテーションが実行され得る。少なくとも1つの実施例では、システム3700は多層プラットフォームを含み得、多層プラットフォームは、1つ又は複数の医療撮像及び診断機能を実施し得る診断アプリケーション(又は他のアプリケーション・タイプ)のソフトウェア層(たとえば、ソフトウェア3618)を含み得る。少なくとも1つの実施例では、システム3700は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合され得る。少なくとも1つの実施例では、システム3700は、機械学習モデルを訓練すること、機械学習モデルを導入すること、画像処理、推論、及び/又は他の動作などの動作を実施するために、PACSサーバからのデータ(たとえば、DICOMデータ、RISデータ、生データ、CISデータ、REST準拠データ、RPCデータ、生データなど)に(たとえば、DICOMアダプタ3702、又はRIS、CIS、REST準拠、RPC、生などの別のデータ・タイプ・アダプタを介して)アクセスし、それを参照するように構成され得る。
【0505】
少なくとも1つの実施例では、ソフトウェア層は、セキュアな、暗号化された、及び/又は認証されたAPIとして実装され得、このAPIを通して、アプリケーション又はコンテナが、(1つ又は複数の)外部環境(たとえば、施設3602)から呼び出され(たとえば、コールされ)得る。少なくとも1つの実施例では、次いで、アプリケーションは、それぞれのアプリケーションに関連するコンピュート、AI、又は視覚化タスクを実施するために1つ又は複数のサービス3620をコール又は実行し得、ソフトウェア3618及び/又はサービス3620は、ハードウェア3622を活用して、処理タスクを有効で効率的な様式で実施し得る。
【0506】
少なくとも1つの実施例では、導入システム3606は、導入パイプライン3710を実行し得る。少なくとも1つの実施例では、導入パイプライン3710は任意の数のアプリケーションを含み得、それらのアプリケーションは、上記で説明されたように、AI支援アノテーションを含む、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のデータ・タイプ)に連続的に、非連続的に、又は他のやり方で適用され得る。少なくとも1つの実施例では、本明細書で説明されるように、個々のデバイスのための導入パイプライン3710は、デバイスのための仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれることがある。少なくとも1つの実施例では、デバイスによって生成されるデータから所望される情報に応じて、単一のデバイスについて、2つ以上の導入パイプライン3710があり得る。少なくとも1つの実施例では、異常の検出がMRIマシンから所望される場合、第1の導入パイプライン3710があり得、画像強調がMRIマシンの出力から所望される場合、第2の導入パイプライン3710があり得る。
【0507】
少なくとも1つの実施例では、導入パイプライン3710のために利用可能なアプリケーションは、デバイスからの撮像データ又は他のデータに対して処理タスクを実施するために使用され得る任意のアプリケーションを含み得る。少なくとも1つの実施例では、画像強調、セグメント化、再構築、異常検出、物体検出、特徴検出、処置計画、線量測定、ビーム計画(又は他の放射線処置プロシージャ)、及び/又は他の分析、画像処理、又は推論タスクについて、異なるアプリケーションが責任を負うことがある。少なくとも1つの実施例では、導入システム3606は、アプリケーションの各々についての構築を定義し得、それにより、導入システム3606のユーザ(たとえば、医療施設、研修所、クリニックなど)は、構築を理解し、自らのそれぞれの施設内での実装のためにアプリケーションを適応させ得る。少なくとも1つの実施例では、導入パイプライン3710中に含めるために、画像再構築のためのアプリケーションが選択され得るが、撮像デバイスによって生成されるデータ・タイプは、アプリケーション内で使用されるデータ・タイプとは異なり得る。少なくとも1つの実施例では、DICOMアダプタ3702B(及び/又はDICOMリーダ)或いは別のデータ・タイプ・アダプタ又はリーダ(たとえば、RIS、CIS、REST準拠、RPC、生など)が、導入システム3606内のアプリケーションによって使用可能な形態にデータをコンバートするために、導入パイプライン3710内で使用され得る。少なくとも1つの実施例では、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のデータ・タイプ・ライブラリへのアクセスは、データに対する任意の畳み込み、色補正、鮮明度、ガンマ、及び/又は他の拡張を、復号、抽出、及び/又は実施することを含めて、累積され、前処理され得る。少なくとも1つの実施例では、DICOM、RIS、CIS、REST準拠、RPC、及び/又は生データは、順序なしであり得、収集されたデータを整理又はソートするために、事前パスが実行され得る。少なくとも1つの実施例では、様々なアプリケーションは共通の画像動作を共有し得るので、いくつかの実施例では、これらの動作を加速するために(たとえば、サービス3620のうちの1つとして)データ拡張ライブラリが使用され得る。少なくとも1つの実施例では、CPU処理に依拠する従来の処理手法のボトルネックを回避するために、これらの処理タスクのGPU加速化のために並列コンピューティング・プラットフォーム3730が使用され得る。
【0508】
少なくとも1つの実施例では、画像再構築アプリケーションは、機械学習モデルの使用を含む処理タスクを含み得る。少なくとも1つの実施例では、ユーザは、ユーザ自身の機械学習モデルを使用すること、又はモデル・レジストリ3624から機械学習モデルを選択することを所望し得る。少なくとも1つの実施例では、ユーザは、処理タスクを実施するために、ユーザ自身の機械学習モデルを実装するか、又はアプリケーション中に含めるための機械学習モデルを選択し得る。少なくとも1つの実施例では、アプリケーションは選択可能及びカスタマイズ可能であり得、アプリケーションの構築を定義することによって、特定のユーザのためのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも1つの実施例では、サービス3620及びハードウェア3622など、システム3700の他の特徴を活用することによって、導入パイプライン3710は、なお一層ユーザ・フレンドリになり、より容易な統合を提供し、より正確で、効率的で、タイムリーな結果を作り出し得る。
【0509】
少なくとも1つの実施例では、導入システム3606はユーザ・インターフェース3714(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含み得、ユーザ・インターフェース3714は、(1つ又は複数の)導入パイプライン3710中に含めるためのアプリケーションを選択し、アプリケーションを配置し、アプリケーション又はそのパラメータ若しくは構築を修正又は変更し、セットアップ及び/又は導入中に(1つ又は複数の)導入パイプライン3710を使用し、それと対話し、並びに/或いは他のやり方で導入システム3606と対話するために使用され得る。少なくとも1つの実施例では、訓練システム3604に関して示されていないが、ユーザ・インターフェース3714(又は異なるユーザ・インターフェース)は、導入システム3606における使用のためのモデルを選択するために、訓練システム3604において訓練又は再訓練するためのモデルを選択するために、及び/或いは訓練システム3604と他のやり方で対話するために使用され得る。
【0510】
少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン3710のアプリケーション又はコンテナと、サービス3620及び/又はハードウェア3622との間で対話を管理するために、アプリケーション・オーケストレーション・システム3728に加えてパイプライン・マネージャ3712が使用され得る。少なくとも1つの実施例では、パイプライン・マネージャ3712は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス3620への対話、及び/或いはアプリケーション又はサービスからハードウェア3622への対話を容易にするように構成され得る。少なくとも1つの実施例では、ソフトウェア3618中に含まれるように示されているが、これは限定を意図しておらず、(たとえば、
図38に示されている)いくつかの実例では、パイプライン・マネージャ3712は、サービス3620中に含まれ得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム3728(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含み得、コンテナ・オーケストレーション・システムは、アプリケーションを、協調、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン3710からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることよって、各アプリケーションは、自己完結型環境(たとえば、カーネル・レベル)において実行して、スピード及び効率を向上させ得る。
【0511】
少なくとも1つの実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入され得(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し得、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入し得)、これは、(1つ又は複数の)別のアプリケーション又は(1つ又は複数の)コンテナのタスクに邪魔されることなしに単一のアプリケーション及び/又は(1つ又は複数の)コンテナのタスクに集中し、注意を払うことを可能にする。少なくとも1つの実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ3712及びアプリケーション・オーケストレーション・システム3728によって補助され得る。少なくとも1つの実施例では、各コンテナ又はアプリケーションの予想される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構築に基づいて)システムによって知られている限り、アプリケーション・オーケストレーション・システム3728及び/又はパイプライン・マネージャ3712は、アプリケーション又はコンテナの各々の間の通信、及びそれらの間のリソースの共有を容易にし得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン3710中のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有し得るので、アプリケーション・オーケストレーション・システム3728は、様々なアプリケーション又はコンテナの間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定し得る。少なくとも1つの実施例では、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性を追跡するために、スケジューラが使用され得る。少なくとも1つの実施例では、したがって、スケジューラは、異なるアプリケーションにリソースを割り振り、システムの要件及び利用可能性を考慮してアプリケーションの間でリソースを分散させ得る。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム3728の他の構成要素)は、サービス品質(QoS)、(たとえば、リアルタイム処理を実行すべきか遅延処理を実行すべきかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づいて、リソースの利用可能性及び分散を決定し得る。
【0512】
少なくとも1つの実施例では、導入システム3606中のアプリケーション又はコンテナによって活用及び共有されるサービス3620は、コンピュート・サービス3716、AIサービス3718、視覚化サービス3720、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、アプリケーションは、サービス3620のうちの1つ又は複数をコール(たとえば、実行)して、アプリケーションのための処理動作を実施し得る。少なくとも1つの実施例では、コンピュート・サービス3716は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)タスクを実施するために、アプリケーションによって活用され得る。少なくとも1つの実施例では、アプリケーションのうちの1つ又は複数を通してデータを、及び/又は単一のアプリケーションの1つ又は複数のタスクを実質的に同時に処理するための(たとえば、並列コンピューティング・プラットフォーム3730を使用する)並列処理を実施するために、(1つ又は複数の)コンピュート・サービス3716が活用され得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム3730(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU3722)上での汎用コンピューティング(GPGPU)を可能にし得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム3730のソフトウェア層は、コンピュート・カーネルの実行のために、仮想命令セット及びGPUの並列算出要素へのアクセスを提供し得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム3730はメモリを含み得、いくつかの実施例では、メモリは、複数のコンテナの間で、及び/又は1つのコンテナ内の異なる処理タスクの間で共有され得る。少なくとも1つの実施例では、(たとえば、アプリケーションの複数の異なる段階又は複数のアプリケーションが同じ情報を処理している場合)並列コンピューティング・プラットフォーム3730のメモリの共有セグメントからの同じデータを使用するために、複数のコンテナについて及び/又はコンテナ内の複数のプロセスについて、プロセス間通信(IPC:inter-process communication)コールが生成され得る。少なくとも1つの実施例では、データのコピーをとり、データをメモリ中の異なるロケーションに移動すること(たとえば、読取り/書込み動作)ではなく、メモリの同じロケーション中の同じデータが、任意の数の処理タスクのために(たとえば、同じ時間、異なる時間などに)使用され得る。少なくとも1つの実施例では、データが使用されて、処理の結果として新しいデータが生成されるとき、データの新しいロケーションのこの情報は、様々なアプリケーション間で記憶及び共有され得る。少なくとも1つの実施例では、データのロケーションと、更新された又は修正されたデータのロケーションとは、コンテナ内でペイロードがどのように理解されるかの定義の一部であり得る。
【0513】
少なくとも1つの実施例では、AIサービス3718は、アプリケーションに関連する(たとえば、アプリケーションの1つ又は複数の処理タスクを実施する役割を課された)(1つ又は複数の)機械学習モデルを実行するための推論サービスを実施するために活用され得る。少なくとも1つの実施例では、AIサービス3718は、AIシステム3724を活用して、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための(1つ又は複数の)機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン3710のアプリケーションは、訓練システム3604からの出力モデル3616及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)に関して推論を実施し得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム3728(たとえば、スケジューラ)を使用する推論の2つ又はそれ以上の実例が利用可能であり得る。少なくとも1つの実施例では、第1のカテゴリは、緊急時の至急の要求に関して推論を実施するための、又は診断時の放射線医のためのなど、より高いサービス・レベルの合意を達成し得る高優先度/低レイテンシ経路を含み得る。少なくとも1つの実施例では、第2のカテゴリは、至急でないことがある要求のために、又は分析が後で実施され得る場合に使用され得る標準優先度経路を含み得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム3728は、AIサービス3718の異なる推論タスクのための優先度経路に基づいて、リソース(たとえば、サービス3620及び/又はハードウェア3622)を分散させ得る。
【0514】
少なくとも1つの実施例では、共有ストレージが、システム3700内でAIサービス3718に取り付けられ得る。少なくとも1つの実施例では、共有ストレージは、キャッシュ(又は他のストレージ・デバイス・タイプ)として動作し得、アプリケーションからの推論要求を処理するために使用され得る。少なくとも1つの実施例では、推論要求がサブミットされたとき、要求は、導入システム3606のAPIインスタンスのセットによって受信され得、要求を処理するために、1つ又は複数のインスタンスが(たとえば、最良な適合のために、ロード・バランシングのためになど)選択され得る。少なくとも1つの実施例では、要求を処理するために、要求がデータベースに入れられ得、機械学習モデルは、まだキャッシュにない場合、モデル・レジストリ3624から位置特定され得、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)にロードされ、及び/又はモデルのコピーがキャッシュに保存され得ることを確実にし得る。少なくとも1つの実施例では、アプリケーションがまだ稼働していない場合又はアプリケーションの十分なインスタンスがない場合、(たとえば、パイプライン・マネージャ3712の)スケジューラが、要求において参照されたアプリケーションを起動するために使用され得る。少なくとも1つの実施例では、モデルを実行するための推論サーバがまだ起動されていない場合、推論サーバが起動され得る。少なくとも1つの実施例では、任意の数の推論サーバがモデルごとに起動され得る。少なくとも1つの実施例では、推論サーバがクラスタ化されたプル・モデルにおいて、ロード・バランシングが有利であるときはいつでもモデルがキャッシュされ得る。少なくとも1つの実施例では、推論サーバは、対応する分散型サーバに静的にロードされ得る。
【0515】
少なくとも1つの実施例では、推論は、コンテナ中で稼働する推論サーバを使用して実施され得る。少なくとも1つの実施例では、推論サーバのインスタンスは、モデル(随意に、モデルの複数のバージョン)に関連し得る。少なくとも1つの実施例では、モデルに対して推論を実施するための要求が受信されたとき、推論サーバのインスタンスが存在しない場合、新しいインスタンスがロードされ得る。少なくとも1つの実施例では、推論サーバを開始するとき、モデルが推論サーバに渡され得、それにより、推論サーバが異なるインスタンスとして稼働している限り、異なるモデルにサービスするために同じコンテナが使用され得る。
【0516】
少なくとも1つの実施例では、アプリケーション実行中、所与のアプリケーションについての推論要求が受信され得、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていない場合)ロードされ得、開始プロシージャがコールされ得る。少なくとも1つの実施例では、コンテナ中の前処理論理が、(たとえば、(1つ又は複数の)CPU及び/又は(1つ又は複数の)GPUを使用して)入って来るデータに対する任意の追加の前処理をロード、復号、及び/又は実施し得る。少なくとも1つの実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに関して推論を実施し得る。少なくとも1つの実施例では、これは、1つの画像(たとえば、手のX線)に対する単一の推論コールを含み得るか、又は何百もの画像(たとえば、胸のCT)に関する推論を必要とし得る。少なくとも1つの実施例では、アプリケーションは、完了する前に結果を要約し得、これは、限定はしないが、単一の信頼性スコア、ピクセル・レベル・セグメント化、ボクセル・レベル・セグメント化、視覚化を生成すること、又は所見を要約するためにテキストを生成することを含み得る。少なくとも1つの実施例では、異なるモデル又はアプリケーションは、異なる優先度を割り当てられ得る。たとえば、リアルタイム(TAT1分未満)の優先度を有するモデルもあれば、低優先度(たとえば、TAT10分未満)を有するモデルもある。少なくとも1つの実施例では、モデル実行時間は、要求元の機関又はエンティティから測定され得、パートナー・ネットワーク・トラバーサル時間、並びに推論サービスに対する実行を含み得る。
【0517】
少なくとも1つの実施例では、サービス3620と推論アプリケーションとの間での要求の転送は、ソフトウェア開発キット(SDK)の後ろに隠され得、キューを通してロバストなトランスポートが提供され得る。少なくとも1つの実施例では、個々のアプリケーション/テナントIDの組合せについて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも1つの実施例では、SDKが要求をピックアップする環境において、キューの名称が提供され得る。少なくとも1つの実施例では、キューを通した非同期通信は、その通信が、ワークが利用可能になったときに、アプリケーションの任意のインスタンスがそのワークをピックアップすることを可能にし得るので、有用であり得る。少なくとも1つの実施例では、結果は、データが失われないことを確実にするために、キューを通して返送され得る。少なくとも1つの実施例では、最高優先度のワークは、アプリケーションのほとんどのインスタンスがキューに接続された、キューに進み得、一方で、最低優先度のワークは、単一のインスタンスがキューに接続された、受信された順番にタスクを処理するキューに進み得るので、キューは、ワークをセグメント化するアビリティをも提供し得る。少なくとも1つの実施例では、アプリケーションは、クラウド3726において生成されたGPU加速インスタンス上で稼働し得、推論サービスは、GPU上で推論を実施し得る。
【0518】
少なくとも1つの実施例では、視覚化サービス3720が、アプリケーション及び/又は(1つ又は複数の)導入パイプライン3710の出力を見るための視覚化を生成するために活用され得る。少なくとも1つの実施例では、視覚化を生成するために視覚化サービス3720によってGPU3722が活用され得る。少なくとも1つの実施例では、レイ・トレーシングなどのレンダリング効果が、より高品質の視覚化を生成するために視覚化サービス3720によって実装され得る。少なくとも1つの実施例では、視覚化は、限定はしないが、2D画像レンダリング、3Dボリューム・レンダリング、3Dボリューム再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを含み得る。少なくとも1つの実施例では、仮想化された環境が、システムのユーザ(たとえば、医師、看護師、放射線医など)による対話のための仮想インタラクティブ表示又は環境(たとえば、仮想環境)を生成するために使用され得る。少なくとも1つの実施例では、視覚化サービス3720は、内部ビジュアライザ、シネマティクス、及び/或いは他のレンダリング又は画像処理能力又は機能性(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含み得る。
【0519】
少なくとも1つの実施例では、ハードウェア3622は、GPU3722、AIシステム3724、クラウド3726、並びに/或いは訓練システム3604及び/又は導入システム3606を実行するために使用される任意の他のハードウェアを含み得る。少なくとも1つの実施例では、GPU3722(たとえば、NVIDIAのTESLA及び/又はQUADRO GPU)は、任意の数のGPUを含み得、任意の数のGPUは、コンピュート・サービス3716、AIサービス3718、視覚化サービス3720、他のサービス、及び/或いはソフトウェア3618の特徴又は機能性のいずれかの処理タスクを実行するために使用され得る。たとえば、AIサービス3718に関して、GPU3722が、撮像データ(又は機械学習モデルによって使用される他のデータ・タイプ)に対する前処理、機械学習モデルの出力に対する後処理を実施するために、及び/又は推論を実施するために(たとえば、機械学習モデルを実行するために)使用され得る。少なくとも1つの実施例では、クラウド3726、AIシステム3724、及び/又はシステム3700の他の構成要素は、GPU3722を使用し得る。少なくとも1つの実施例では、クラウド3726は、深層学習タスクのためのGPU最適化プラットフォームを含み得る。少なくとも1つの実施例では、AIシステム3724は、GPUを使用し得、クラウド3726、或いは深層学習又は推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム3724を使用して実行され得る。したがって、ハードウェア3622は個別構成要素として示されているが、これは、限定を意図しておらず、ハードウェア3622の任意の構成要素が、ハードウェア3622の任意の他の構成要素と組み合わせられ、それらによって活用され得る。
【0520】
少なくとも1つの実施例では、AIシステム3724は、推論、深層学習、機械学習、及び/又は他の人工知能タスクのために構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含み得る。少なくとも1つの実施例では、AIシステム3724(たとえば、NVIDIAのDGX)は、GPU最適化ソフトウェア(たとえば、ソフトウェア・スタック)を含み得、GPU最適化ソフトウェアは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、又は機能性に加えて、複数のGPU3722を使用して実行され得る。少なくとも1つの実施例では、1つ又は複数のAIシステム3724は、システム3700のAIベースの処理タスクのいくつか又はすべてを実施するために、(たとえば、データ・センタにおいて)クラウド3726において実装され得る。
【0521】
少なくとも1つの実施例では、クラウド3726は、GPU加速インフラストラクチャ(たとえば、NVIDIAのNGC)を含み得、GPU加速インフラストラクチャは、システム3700の処理タスクを実行するためのGPU最適化プラットフォームを提供し得る。少なくとも1つの実施例では、クラウド3726は、システム3700のAIベースのタスクのうちの1つ又は複数を実施するための(1つ又は複数の)AIシステム3724を(たとえば、ハードウェア抽象化及びスケーリング・プラットフォームとして)含み得る。少なくとも1つの実施例では、クラウド3726は、アプリケーションとサービス3620との間でシームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUを活用してアプリケーション・オーケストレーション・システム3728と統合し得る。少なくとも1つの実施例では、クラウド3726は、本明細書で説明されるように、コンピュート・サービス3716、AIサービス3718、及び/又は視覚化サービス3720を含む、システム3700のサービス3620の少なくともいくつかを実行する役割を課され得る。少なくとも1つの実施例では、クラウド3726は、大小のバッチ推論(たとえば、NVIDIAのTENSOR RTを実行すること)を実施し、加速並列コンピューティングAPI及びプラットフォーム3730(たとえば、NVIDIAのCUDA)を提供し、アプリケーション・オーケストレーション・システム3728(たとえば、KUBERNETES)を実行し、(たとえば、より高品質のシネマティクスを作り出すためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法のための)グラフィックス・レンダリングAPI及びプラットフォームを提供し得、及び/又はシステム3700のための他の機能性を提供し得る。
【0522】
少なくとも1つの実施例では、(たとえば、患者データ又は記録が構外で使用されることになる場合)患者の機密性を保つために、クラウド3726は、深層学習コンテナ・レジストリなどのレジストリを含み得る。少なくとも1つの実施例では、レジストリは、患者データに対する前処理、後処理、又は他の処理タスクを実施し得るアプリケーションのインスタンス化のためのコンテナを記憶し得る。少なくとも1つの実施例では、クラウド3726は、患者データ並びにセンサ・データをコンテナ中に含むデータを受信し、それらのコンテナにおいてセンサ・データについてのみ要求された処理を実施し、次いで、いずれも患者データを抽出、記憶、又は他のやり方でそれにアクセスする必要なしに、得られた出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断のために使用される構内の医療デバイス)にフォワーディングし得る。少なくとも1つの実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規定に準拠して保たれる。
【0523】
少なくとも1つの実施例では、
図37に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図37に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図37に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0524】
図38は、少なくとも1つの実施例による、撮像データを処理するための導入パイプライン3710Aの例示的な図を含む。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン3710Aをカスタマイズし、更新し、及び/又は1つ又は複数の生産(production)環境に組み込むために、システム3700、及び特に、導入システム3606が使用され得る。少なくとも1つの実施例では、
図38の導入パイプライン3710Aは、施設において(たとえば、病院、クリニック、研究所、リサーチ環境などにおいて)特定のユーザ(又はユーザのチーム)によってカスタム定義され得る、導入パイプライン3710Aの非限定的な実例を含む。少なくとも1つの実施例では、CTスキャナ3802のための導入パイプライン3710Aを定義するために、ユーザは、たとえば、コンテナ・レジストリから、CTスキャナ3802によって生成された撮像データに関して特定の機能又はタスクを実施する1つ又は複数のアプリケーションを選択し得る。少なくとも1つの実施例では、アプリケーションは、システム3700のサービス3620及び/又はハードウェア3622を活用し得るコンテナとして導入パイプライン3710Aに適用され得る。さらに、導入パイプライン3710Aは、アプリケーションによる使用のためのデータを準備するために実装され得る追加の処理タスク又はアプリケーションを含み得る(たとえば、DICOMアダプタ3702B及びDICOMリーダ3806が、CT再構築3808、器官セグメント化3810などによる使用のためのデータを準備するために、導入パイプライン3710Aにおいて使用され得る)。少なくとも1つの実施例では、導入パイプライン3710Aは、一貫性のある導入、1回の使用のために、或いは別の頻度又は間隔のために、カスタマイズ又は選択され得る。少なくとも1つの実施例では、ユーザは、特定の間隔にわたって数人の対象者のためのCT再構築3808及び器官セグメント化3810を有することを望み得、したがって、その時間期間の間パイプライン3710Aを導入し得る。少なくとも1つの実施例では、ユーザは、システム3700からの各要求について、ユーザがその要求についてそのデータに対して処理を実施することを希望するアプリケーションを選択し得る。少なくとも1つの実施例では、導入パイプライン3710Aは、任意の間隔において調節され得、システム3700内のコンテナ構造の適応性及びスケーラビリティのために、これはシームレスなプロセスであり得る。
【0525】
少なくとも1つの実施例では、
図38の導入パイプライン3710Aは、患者又は対象者の撮像データを生成するCTスキャナ3802を含み得る。少なくとも1つの実施例では、CTスキャナ3802からの撮像データは、CTスキャナ3802を格納している施設に関連する(1つ又は複数の)PACSサーバ3804に記憶され得る。少なくとも1つの実施例では、(1つ又は複数の)PACSサーバ3804は、施設において撮像モダリティ(たとえば、CTスキャナ3802)と直接インターフェースし得るソフトウェア及び/又はハードウェア構成要素を含み得る。少なくとも1つの実施例では、DICOMアダプタ3702Bは、DICOMプロトコルを使用したDICOM物体の送出及び受信を可能にし得る。少なくとも1つの実施例では、DICOMアダプタ3702Bは、導入パイプライン3710Aによる使用のための(1つ又は複数の)PACSサーバ3804からのDICOMデータの準備又は構成を補助し得る。少なくとも1つの実施例では、DICOMデータがDICOMアダプタ3702Bを通して処理されると、パイプライン・マネージャ3712は、導入パイプライン3710Aにデータをルーティングし得る。少なくとも1つの実施例では、DICOMリーダ3806は、DICOMデータから画像ファイル及び任意の関連するメタデータ(たとえば、視覚化3816Aに示されているような、生サイノグラム・データ)を抽出し得る。少なくとも1つの実施例では、抽出されたワーキング・ファイルは、導入パイプライン3710A中の他のアプリケーションによるより速い処理のためにキャッシュに記憶され得る。少なくとも1つの実施例では、DICOMリーダ3806がデータを抽出及び/又は記憶することを終了すると、完了の信号がパイプライン・マネージャ3712に通信され得る。少なくとも1つの実施例では、パイプライン・マネージャ3712は、次いで、導入パイプライン3710A中の1つ又は複数の他のアプリケーション又はコンテナを始動するか、又はコールし得る。
【0526】
少なくとも1つの実施例では、CT再構築3808アプリケーション及び/又はコンテナは、データ(たとえば、生サイノグラム・データ)がCT再構築3808アプリケーションによる処理のために利用可能になると、実行され得る。少なくとも1つの実施例では、CT再構築3808は、キャッシュから生サイノグラム・データを読み取り、(たとえば、視覚化3816Bに示されているように)生サイノグラム・データの中から画像ファイルを再構築し、得られた画像ファイルをキャッシュに記憶し得る。少なくとも1つの実施例では、再構築の完了において、パイプライン・マネージャ3712は、再構築タスクが完了したことをシグナリングされ得る。少なくとも1つの実施例では、再構築が完了し、再構築された画像ファイルがキャッシュ(又は他のストレージ・デバイス)に記憶され得ると、器官セグメント化3810アプリケーション及び/又はコンテナがパイプライン・マネージャ3712によってトリガされ得る。少なくとも1つの実施例では、器官セグメント化3810アプリケーション及び/又はコンテナは、キャッシュから画像ファイルを読み取り、画像ファイルを正規化するか又は推論に好適なフォーマットにコンバート(たとえば、画像ファイルを機械学習モデルの入力解像度にコンバート)し、正規化された画像に対して推論を稼働し得る。少なくとも1つの実施例では、正規化された画像に対して推論を稼働するために、器官セグメント化3810アプリケーション及び/又はコンテナはサービス3620に依拠し得、パイプライン・マネージャ3712及び/又はアプリケーション・オーケストレーション・システム3728は、器官セグメント化3810アプリケーション及び/又はコンテナによるサービス3620の使用を容易にし得る。少なくとも1つの実施例では、たとえば、器官セグメント化3810アプリケーション及び/又はコンテナは、正規化された画像に対して推論を実施するためにAIサービス3718を活用し得、AIサービス3718は、AIサービス3718を実行するためにハードウェア3622(たとえば、AIシステム3724)を活用し得る。少なくとも1つの実施例では、推論の結果は、キャッシュ(又は他のストレージ・デバイス)に記憶され得る(たとえば、視覚化3816Cに示されているような)マスク・ファイルであり得る。
【0527】
少なくとも1つの実施例では、DICOMデータ及び/又はDICOMデータから抽出されたデータを処理するアプリケーションが処理を完了すると、パイプライン・マネージャ3712のための信号が生成され得る。少なくとも1つの実施例では、パイプライン・マネージャ3712は、次いで、DICOMライター3812を実行して、キャッシュ(又は他のストレージ・デバイス)から結果を読み取り、結果を、要求を生成した施設におけるユーザによる使用のためにDICOMフォーマットに(たとえば、DICOM出力3814として)パッケージ化し得る。少なくとも1つの実施例では、DICOM出力3814は、次いで、(たとえば、施設におけるDICOMビューアによる視聴のために)(1つ又は複数の)PACSサーバ3804に記憶するためのDICOM出力3814を準備するために、DICOMアダプタ3702Bに送信され得る。少なくとも1つの実施例では、再構築及びセグメント化についての要求に応答して、視覚化3816B及び3816Cが生成され、診断、リサーチのために、及び/又は他の目的のために、ユーザにとって利用可能になり得る。
【0528】
導入パイプライン3710A中の連続するアプリケーションとして示されているが、CT再構築3808及び器官セグメント化3810アプリケーションは、少なくとも1つの実施例では並列に処理され得る。少なくとも1つの実施例では、アプリケーションが互いに依存性を有せず、(たとえば、DICOMリーダ3806がデータを抽出した後に)データが各アプリケーションについて利用可能である場合、アプリケーションは、同じ時間において、実質的に同じ時間において、又はある程度重複して、実行され得る。少なくとも1つの実施例では、2つ又はそれ以上のアプリケーションが同様のサービス3620を必要とする場合、ロード・バランシングを行い、様々なアプリケーション間でコンピュート又は処理リソースを分散させるために、システム3700のスケジューラが使用され得る。少なくとも1つの実施例では、いくつかの実施例において、導入パイプライン3710Aのランタイムを減少させてリアルタイム結果を提供するために、アプリケーションについての並列処理を実施するために並列コンピューティング・プラットフォーム3730が使用され得る。
【0529】
少なくとも1つの実施例では、及び
図39A~
図39Bに関して、導入システム3606は、撮像デバイス(たとえば、CTスキャナ、X線機械、MRI機械など)、シーケンシング・デバイス、ゲノミクス・デバイス、及び/又は他のデバイス・タイプを用いて、画像処理、セグメント化、強調、AI、視覚化、及び推論など、異なる機能性を実施するための、1つ又は複数の仮想機器として実装され得る。少なくとも1つの実施例では、システム3700は、(1つ又は複数の)デバイスによって生成された生の/処理されていない入力データを受信し、処理された/再構築されたデータを出力し得るソフトウェア定義導入パイプライン3710を含み得る仮想機器の作成及び提供を可能にし得る。少なくとも1つの実施例では、仮想機器を表す導入パイプライン3710(たとえば、3710A及び3710B)は、コンテナ化された推論サポートをシステムに提供するために、機械学習モデルを活用することなどによって、インテリジェンスをパイプラインに実装し得る。少なくとも1つの実施例では、仮想機器は、各々がアプリケーションのインスタンス化を含む、任意の数のコンテナを実行し得る。リアルタイム処理が望まれる場合など、少なくとも1つの実施例では、仮想機器を表す導入パイプライン3710は静的であり得(たとえば、コンテナ及び/又はアプリケーションが設定され得)、他の実例では、仮想機器のためのコンテナ及び/又はアプリケーションは、(たとえば、コンテナ・レジストリ内の)アプリケーション又はリソースのプールから(たとえば、要求ごとに)選択され得る。
【0530】
少なくとも1つの実施例では、システム3700は、たとえば、放射線機械、撮像デバイス、及び/又は施設における別のデバイス・タイプの隣に導入されたか又はさもなければそれらと通信しているコンピューティング・システム中で、施設における構内の1つ又は複数の仮想機器としてインスタンス化又は実行され得る。少なくとも1つの実施例では、しかしながら、構内の設置は、デバイス自体のコンピューティング・システム(たとえば、撮像デバイスと一体のコンピューティング・システム)内で、ローカル・データ・センタ(たとえば、構内のデータ・センタ)中で、及び/又はクラウド環境中で(たとえば、クラウド3726中で)、インスタンス化又は実行され得る。少なくとも1つの実施例では、仮想機器として動作する導入システム3606は、いくつかの実例ではスーパーコンピュータ又は他のHPCシステムによってインスタンス化され得る。少なくとも1つの実施例では、構内の設置は、リアルタイム処理のための(たとえば、イーサネットを介したRF(RF over Ethernet)など、より高いスループットのローカル通信インターフェースを介した)高帯域幅使用を可能にし得る。少なくとも1つの実施例では、リアルタイム又はほぼリアルタイムの処理は、正確な診断及び分析のために即時の視覚化が期待されるか又は必要とされる超音波デバイス又は他の撮像モダリティを仮想機器がサポートする場合、特に有用であり得る。少なくとも1つの実施例では、クラウド・コンピューティング・アーキテクチャは、ローカル需要が構内の容量又は能力を超えたとき、クラウド・コンピューティング・サービス・プロバイダ、又は他のコンピュート・クラスタに動的にバーストすることが可能であり得る。少なくとも1つの実施例では、クラウド・アーキテクチャは、実装されたとき、訓練システム3604に関して本明細書で説明されるように、訓練ニューラル・ネットワーク又は他の機械学習モデルについて調整され得る。少なくとも1つの実施例では、訓練パイプラインが所定の位置にある場合、機械学習モデルは、機械学習モデルがサポートするデバイスからの追加のデータを機械学習モデルが処理するとき、継続的に学習し、改善することがある。少なくとも1つの実施例では、仮想機器は、追加のデータ、新しいデータ、既存の機械学習モデル、及び/或いは新しい又は更新された機械学習モデルを使用して絶えず改善され得る。
【0531】
少なくとも1つの実施例では、コンピューティング・システムは、本明細書で説明されるハードウェア3622の一部又は全部を含み得、ハードウェア3622は、デバイス内で、デバイスに結合され、デバイスに近接して位置するコンピューティング・デバイスの一部として、施設におけるローカル・データ・センタ中で、及び/又はクラウド3726中でを含むいくつかのやり方のいずれかで、分散され得る。少なくとも1つの実施例では、導入システム3606及び関連するアプリケーション又はコンテナがソフトウェアにおいて(たとえば、アプリケーションの個別のコンテナ化されたインスタンス化として)作成されるので、仮想機器の挙動、動作、及び構成、並びに仮想機器によって生成される出力は、仮想機器がサポートするデバイスの生出力を変更又は改変する必要なしに、必要に応じて修正又はカスタマイズされ得る。
【0532】
少なくとも1つの実施例では、
図38に示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図38に示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図38に示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0533】
図39Aは、少なくとも1つの実施例による、超音波デバイスをサポートする仮想機器の例示的なデータ・フロー図を含む。少なくとも1つの実施例では、導入パイプライン3710Bは、システム3700のサービス3620のうちの1つ又は複数を活用し得る。少なくとも1つの実施例では、導入パイプライン3710B及びサービス3620は、ローカルに又はクラウド3726中でのいずれかで、システムのハードウェア3622を活用し得る。少なくとも1つの実施例では、示されていないが、プロセス3900は、パイプライン・マネージャ3712、アプリケーション・オーケストレーション・システム3728、及び/又は並列コンピューティング・プラットフォーム3730によって容易にされ得る。
【0534】
少なくとも1つの実施例では、プロセス3900は、超音波デバイス3902からの撮像データの受信を含み得る。少なくとも1つの実施例では、撮像データは、DICOMフォーマット(又は、RIS、CIS、REST準拠、RPC、生など、他のフォーマット)で(1つ又は複数の)PACSサーバに記憶され得、超音波デバイス3902のための仮想機器(たとえば、仮想超音波)として選択又はカスタマイズされる導入パイプライン3710を通して処理するためにシステム3700によって受信され得る。少なくとも1つの実施例では、撮像データは、撮像デバイス(たとえば、超音波デバイス3902)から直接受信され、仮想機器によって処理され得る。少なくとも1つの実施例では、撮像デバイスと仮想機器との間で通信可能に結合されたトランスデューサ又は他の信号コンバータが、撮像デバイスによって生成された信号データを、仮想機器によって処理され得る画像データにコンバートし得る。少なくとも1つの実施例では、生データ及び/又は画像データは、導入パイプライン3710Bのアプリケーション又はコンテナによる使用のためのデータを抽出するためにDICOMリーダ3806に適用され得る。少なくとも1つの実施例では、DICOMリーダ3806は、アプリケーション又はコンテナによる使用のためのデータを抽出し、リサイズし、再スケーリングし、及び/又はさもなければ準備するためのサービス3620として(たとえば、(1つ又は複数の)コンピュート・サービス3716のうちの1つとして)、データ拡張ライブラリ3914(たとえば、NVIDIAのDALI(登録商標))を活用し得る。
【0535】
少なくとも1つの実施例では、データが準備されると、超音波デバイス3902からのデータを画像ファイルに再構築するために、再構築3906アプリケーション及び/又はコンテナが実行され得る。少なくとも1つの実施例では、再構築3906の後に、又は再構築3906と同時に、データに関係する異常検出、物体検出、特徴検出、及び/又は他の検出タスクのために、検出3908アプリケーション及び/又はコンテナが実行され得る。少なくとも1つの実施例では、再構築3906中に生成された画像ファイルは、異常、物体、特徴などを識別するために、検出3908中に使用され得る。少なくとも1つの実施例では、検出3908アプリケーションは、データに対して推論を実施して検出を生成するために、(たとえば、(1つ又は複数の)AIサービス3718のうちの1つとして)推論エンジン3916を活用し得る。少なくとも1つの実施例では、(たとえば、訓練システム3604からの)1つ又は複数の機械学習モデルが、検出3908アプリケーションによって実行又はコールされ得る。
【0536】
少なくとも1つの実施例では、再構築3906及び/又は検出3908が完了すると、これらのアプリケーション及び/又はコンテナから出力されたデータが、ワークステーション又はディスプレイ端末上に表示される視覚化3912(たとえば、グレースケール出力)など、視覚化3910を生成するために使用され得る。少なくとも1つの実施例では、視覚化は、技術者又は他のユーザが超音波デバイス3902に対する導入パイプライン3710Bの結果を視覚化することを可能にし得る。少なくとも1つの実施例では、視覚化3910は、システム3700のレンダー構成要素3918(たとえば、(1つ又は複数の)視覚化サービス3720のうちの1つ)を活用することによって実行され得る。少なくとも1つの実施例では、レンダー構成要素3918は、視覚化3912を生成するために、2D、OpenGL、又はレイ・トレーシング・サービスを実行し得る。
【0537】
図39Bは、少なくとも1つの実施例による、CTスキャナをサポートする仮想機器の例示的なデータ・フロー図を含む。少なくとも1つの実施例では、導入パイプライン3710Cは、システム3700のサービス3620のうちの1つ又は複数を活用し得る。少なくとも1つの実施例では、導入パイプライン3710C及びサービス3620は、ローカルに又はクラウド3726中でのいずれかで、システムのハードウェア3622を活用し得る。少なくとも1つの実施例では、示されていないが、プロセス3920は、パイプライン・マネージャ3712、アプリケーション・オーケストレーション・システム3728、及び/又は並列コンピューティング・プラットフォーム3730によって容易にされ得る。
【0538】
少なくとも1つの実施例では、プロセス3920は、(たとえば、直接、PACSサーバ3804を介して、処理の後になど)DICOMリーダ3806によって受信され得る生データを生成するCTスキャナ3922を含み得る。少なくとも1つの実施例では、(導入パイプライン3710Cによってインスタンス化された)仮想CTは、患者を監視するため(たとえば、患者移動検出AI3926)の、及び/或いは(たとえば、露出制御AI3924を使用して)CTスキャナ3922の露出を調節又は最適化するための、第1のリアルタイム・パイプラインを含み得る。少なくとも1つの実施例では、アプリケーション(たとえば、3924及び3926)のうちの1つ又は複数は、(1つ又は複数の)AIサービス3718など、サービス3620を活用し得る。少なくとも1つの実施例では、露出制御AI3924アプリケーション(又はコンテナ)及び/又は患者移動検出AI3926アプリケーション(又はコンテナ)の出力は、露出(又はCTスキャナ3922の他の設定)を調節し、及び/又はあまり移動しないように患者に知らせるための、CTスキャナ3922及び/又は技術者へのフィードバックとして使用され得る。
【0539】
少なくとも1つの実施例では、導入パイプライン3710Cは、CTスキャナ3922によって生成されたデータを分析するための非リアルタイム・パイプラインを含み得る。少なくとも1つの実施例では、第2のパイプラインは、CT再構築3808アプリケーション及び/又はコンテナ、粗い検出AI3928アプリケーション及び/又はコンテナと、(たとえば、粗い検出AI3928によっていくつかの結果が検出された場合の)細かい検出AI3932アプリケーション及び/又はコンテナ、視覚化3930アプリケーション及び/又はコンテナと、DICOMライター3812(及び/又は、RIS、CIS、REST準拠、RPC、生など、他のデータ・タイプ・ライター)アプリケーション及び/又はコンテナとを含み得る。少なくとも1つの実施例では、CTスキャナ3922によって生成された生データは、結果を生成するために(仮想CT機器としてインスタンス化された)導入パイプライン3710Cのパイプラインに通され得る。少なくとも1つの実施例では、DICOMライター3812からの結果は、表示のために送信され得、及び/或いは、技術者、開業医、又は他のユーザが後で取り出すか、分析するか、又は表示するために、(1つ又は複数の)PACSサーバ3804に記憶され得る。
【0540】
少なくとも1つの実施例では、
図39A~
図39Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図39A~
図39Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図39A~
図39Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0541】
図40Aは、少なくとも1つの実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス4000のデータ・フロー図を示す。少なくとも1つの実施例では、プロセス4000は、
図37のシステム3700を非限定的な実例として使用して、実行され得る。少なくとも1つの実施例では、プロセス4000は、本明細書で説明されるように、システム3700のサービス3620及び/又はハードウェア3622を活用し得る。少なくとも1つの実施例では、プロセス4000によって生成される改良されたモデル4012は、導入パイプライン3710中の1つ又は複数のコンテナ化アプリケーションのために、導入システム3606によって実行され得る。
【0542】
少なくとも1つの実施例では、モデル訓練3614は、新しい訓練データ(たとえば、顧客データセット4006、及び/又は入力データに関連する新しいグランド・トゥルース・データなどの新しい入力データ)を使用して、初期モデル4004(たとえば、事前訓練されたモデル)を再訓練又は更新することを含み得る。少なくとも1つの実施例では、初期モデル4004を再訓練又は更新するために、初期モデル4004の(1つ又は複数の)出力又は損失層がリセット又は削除され得、及び/或いは、(1つ又は複数の)更新された又は新しい出力又は損失層と置き換えられ得る。少なくとも1つの実施例では、初期モデル4004は、前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有し得、したがって、訓練又は再訓練3614は、最初からモデルを訓練するほど長い時間がかからないか、又は多くの処理を必要としないことがある。少なくとも1つの実施例では、モデル訓練3614中に、初期モデル4004の(1つ又は複数の)リセットされた又は置き換えられた出力又は損失層を有することによって、パラメータは、新しい顧客データセット4006(たとえば、
図36の画像データ3608)に関して予測を生成する際の(1つ又は複数の)出力又は損失層の精度に関連する損失計算に基づいて、新しいデータセットのために更新又は再調整され得る。
【0543】
少なくとも1つの実施例では、事前訓練されたモデル3706は、データ・ストア又はレジストリ(たとえば、
図36のモデル・レジストリ3624)に記憶され得る。少なくとも1つの実施例では、事前訓練されたモデル3706は、少なくとも部分的に、プロセス4000を実行する施設以外の1つ又は複数の施設において訓練されていることがある。少なくとも1つの実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練されたモデル3706は、構内で生成された顧客又は患者データを使用して、構内で訓練されていることがある。少なくとも1つの実施例では、事前訓練されたモデル3706は、クラウド3726及び/又は他のハードウェア3622を使用して訓練され得るが、プライバシー保護された機密の患者データは、クラウド3726(又は他の構外のハードウェア)の任意の構成要素に転送されないか、それらの構成要素によって使用されないか、又はそれらの構成要素にとってアクセス不可能であり得る。少なくとも1つの実施例では、事前訓練されたモデル3706が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練されたモデル3706は、各施設について個々に訓練されてから、別の施設からの患者又は顧客データに関して訓練され得る。少なくとも1つの実施例では、顧客又は患者データが(たとえば、権利放棄によって、実験での使用のために、など)プライバシー問題から解放された場合、或いは、顧客又は患者データがパブリック・データセット中に含まれる場合など、任意の数の施設からの顧客又は患者データが、データ・センタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練されたモデル3706を訓練するために使用され得る。
【0544】
少なくとも1つの実施例では、導入パイプライン3710における使用のためのアプリケーションを選択するとき、ユーザは、特定のアプリケーションのために使用されるべき機械学習モデルをも選択し得る。少なくとも1つの実施例では、ユーザは、使用のためのモデルを有しないことがあり、したがって、ユーザは、アプリケーションとともに使用するために事前訓練されたモデル3706を選択し得る。少なくとも1つの実施例では、事前訓練されたモデル3706は、(たとえば、患者の多様性、人口統計、使用される医療撮像デバイスのタイプなどに基づいて)ユーザの施設の顧客データセット4006に関して正確な結果を生成するために最適化されないことがある。少なくとも1つの実施例では、事前訓練されたモデル3706を、(1つ又は複数の)アプリケーションとともに使用するために導入パイプライン3710に導入する前に、事前訓練されたモデル3706は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整され得る。
【0545】
少なくとも1つの実施例では、ユーザは、更新、再訓練、及び/又は微調整されるべきである事前訓練されたモデル3706を選択し得、事前訓練されたモデル3706は、プロセス4000内の訓練システム3604のための初期モデル4004と呼ばれることがある。少なくとも1つの実施例では、顧客データセット4006(たとえば、施設におけるデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のデータ・タイプ)が、初期モデル4004に関して(限定はしないが、転移学習(transfer learning)を含み得る)モデル訓練3614を実施して、改良されたモデル4012を生成するために、使用され得る。少なくとも1つの実施例では、顧客データセット4006に対応するグランド・トゥルース・データが、訓練システム3604によって生成され得る。少なくとも1つの実施例では、グランド・トゥルース・データは、(たとえば、
図36のラベル付きクリニック・データ3612として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成され得る。
【0546】
少なくとも1つの実施例では、グランド・トゥルース・データを生成するために、AI支援アノテーション3610がいくつかの実例において使用され得る。少なくとも1つの実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション3610は、機械学習モデル(たとえば、ニューラル・ネットワーク)を活用して、顧客データセットについて示唆又は予測されるグランド・トゥルース・データを生成し得る。少なくとも1つの実施例では、ユーザ4010は、コンピューティング・デバイス4008上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI:graphical user interface))内でアノテーション・ツールを使用し得る。
【0547】
少なくとも1つの実施例では、ユーザ4010は、コンピューティング・デバイス4008を介してGUIと対話して、アノテーション又は自動アノテーションを編集又は微調整し得る。少なくとも1つの実施例では、ポリゴン編集特徴が、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動するために使用され得る。
【0548】
少なくとも1つの実施例では、顧客データセット4006が、関連するグランド・トゥルース・データを有すると、(たとえば、AI支援アノテーション、手動ラベル付けなどからの)グランド・トゥルース・データが、改良されたモデル4012を生成するために、モデル訓練3614中によって使用され得る。少なくとも1つの実施例では、顧客データセット4006は、初期モデル4004に任意の回数適用され得、グランド・トゥルース・データは、改良されたモデル4012について、許容可能なレベルの精度が達成されるまで、初期モデル4004のパラメータを更新するために使用され得る。少なくとも1つの実施例では、改良されたモデル4012が生成されると、改良されたモデル4012は、医療撮像データに対して1つ又は複数の処理タスクを実施するために、施設において1つ又は複数の導入パイプライン3710内で導入され得る。
【0549】
少なくとも1つの実施例では、改良されたモデル4012は、別の施設によって選択されるべきモデル・レジストリ3624において事前訓練されたモデル3706にアップロードされ得る。少なくとも1つの実施例では、このプロセスは任意の数の施設において完了され得、それにより、改良されたモデル4012は、より普遍的なモデルを生成するように新しいデータセットに関して任意の回数さらに改良され得る。
【0550】
図40Bは、少なくとも1つの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャ4032の例示的な図である。少なくとも1つの実施例では、AI支援アノテーション・ツール4036は、クライアントサーバ・アーキテクチャ4032に基づいてインスタンス化され得る。少なくとも1つの実施例では、撮像アプリケーション中のアノテーション・ツール4036は、放射線医が、たとえば、器官及び異常を識別するのを補助し得る。少なくとも1つの実施例では、撮像アプリケーションは、非限定的な実例として、(たとえば、3D MRI又はCTスキャンにおける)生画像4034において、関心のある特定の器官上の数個の極値点をユーザ4010が識別するのを助け、特定の器官のすべての2Dスライスについて自動アノテーション付けされた結果を受信する、ソフトウェア・ツールを含み得る。少なくとも1つの実施例では、結果は、訓練データ4038としてデータ・ストアに記憶され、(たとえば、限定はしないが)訓練のためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、コンピューティング・デバイス4008が、AI支援アノテーション3610のために極値点を送出するとき、たとえば、深層学習モデルがこのデータを入力として受信し、セグメント化された器官又は異常の推論結果を返し得る。少なくとも1つの実施例では、
図40B中のAI支援アノテーション・ツール4036Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された、事前訓練されたモデル4042のセットを含み得るアノテーション支援サーバ4040などのサーバに、APIコール(たとえば、APIコール4044)を行うことによって、拡張され得る。少なくとも1つの実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実施するように事前訓練された、事前訓練されたモデル4042(たとえば、深層学習モデルなどの機械学習モデル)を記憶し得る。少なくとも1つの実施例では、これらのモデルは、訓練パイプライン3704を使用することによって、さらに更新され得る。少なくとも1つの実施例では、事前インストールされたアノテーション・ツールは、新しいラベル付きクリニック・データ3612が追加されるにつれて、経時的に改善され得る。
【0551】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、
図7A及び/又は
図7Bと併せて本明細書で提供される。
【0552】
少なくとも1つの実施例では、
図40A~
図40Bに示される1つ又は複数のシステムは、
図1~
図6に関して説明されたようなアクション認識のためのシステムを実装するために利用される。少なくとも1つの実施例では、
図40A~
図40Bに示される1つ又は複数のシステムは、1つ又は複数のニューラル・ネットワークに対して1つ又は複数の量子化及びプルーニング・プロセスを実施するために利用される。少なくとも1つの実施例では、
図40A~
図40Bに示される1つ又は複数のシステムは、1つ又は複数の量子化及びプルーニング・プロセスを通して処理されるハードウェア・アクセラレータ及び/又は1つ又は複数のニューラル・ネットワークを使用してアクション認識を実施するために利用される。
【0553】
本開示の少なくとも1つの実施例は、以下の条項を考慮して説明され得る。
条項1.
ビデオの複数のフレームを受信するステップと、
複数のフレーム中に表される1つ又は複数の物体を決定するステップと、
並列処理ユニットが、複数のフレームのうちのフレームの間の1つ又は複数のピクセル中に表される1つ又は複数の物体の移動を計算することを引き起こすステップと、
ニューラル・ネットワークが、計算された移動と決定された1つ又は複数の物体とに少なくとも部分的に基づいて、1つ又は複数の物体によって実施され、複数のフレーム中に表される1つ又は複数のアクションを分類することを引き起こすステップと
を含む、方法。
条項2. 複数のフレーム中に表される1つ又は複数の物体に対応するバウンディング・ボックスのセットを生成するステップをさらに含む、条項1に記載の方法。
条項3. クロップされた移動の第1のセットを決定するために、バウンディング・ボックスのセットに基づいて、計算された移動に対してクロッピング動作の第1のセットを実施するステップと、
クロップされたフレームの第1のセットを決定するために、バウンディング・ボックスのセットに基づいて、複数のフレームに対してクロッピング動作の第2のセットを実施するステップと
をさらに含む、条項1又は2に記載の方法。
条項4. ニューラル・ネットワークの1つ又は複数のカーネルに少なくとも部分的に基づいて1つ又は複数の値を決定するステップと、
1つ又は複数の値に少なくとも部分的に基づいてニューラル・ネットワークからカーネルのセットを除去するステップと
をさらに含む、条項1から3までのいずれか一項に記載の方法。
条項5. 1つ又は複数のアクションが、少なくとも、座るアクション、歩くアクション、走るアクション、又は階段を上るアクションを含む、条項1から4までのいずれか一項に記載の方法。
条項6. ニューラル・ネットワークが1つ又は複数の量子化された重みを含む、条項1から5までのいずれか一項に記載の方法。
条項7. ビデオ・データから、1つ又は複数のフレームに示された1つ又は複数の物体を識別することと、
ビデオ・データの1つ又は複数のフレームを使用して、1つ又は複数の物体に対応する1つ又は複数のフロー場と1つ又は複数のバウンディング・ボックスとを計算することと、
1つ又は複数のフロー場と1つ又は複数のバウンディング・ボックスとに基づいて、1つ又は複数の物体によって実施される1つ又は複数のアクションについての1つ又は複数の分類を決定することと
を行うための1つ又は複数の回路
を備える、プロセッサ。
条項8. 1つ又は複数の回路が、さらに、
1つ又は複数のバウンディング・ボックスを計算するために第1のニューラル・ネットワークを使用することと、
1つ又は複数の分類を決定するために第2のニューラル・ネットワークを使用することと
を行うためのものである、条項7に記載のプロセッサ。
条項9. 1つ又は複数の回路が、さらに、
第1のニューラル・ネットワークと第2のニューラル・ネットワークとの1つ又は複数のカーネルの1つ又は複数のL1ノルム値を計算することと、
1つ又は複数のL1ノルム値に少なくとも部分的に基づいて、第1のニューラル・ネットワークと第2のニューラル・ネットワークとからカーネルのセットを除去することと
を行うためのものである、条項7又は8に記載のプロセッサ。
条項10. カーネルのセットが、しきい値を上回るL1ノルム値をもつ1つ又は複数のカーネルのうちのカーネルに対応する、条項7から9までのいずれか一項に記載のプロセッサ。
条項11. 1つ又は複数の回路が、さらに、1つ又は複数のハードウェア・アクセラレータを使用して1つ又は複数のフロー場を計算することを行うためのものである、条項7から10までのいずれか一項に記載のプロセッサ。
条項12. 第1のニューラル・ネットワークと第2のニューラル・ネットワークとが量子化された重みのセットを含む、条項7から11までのいずれか一項に記載のプロセッサ。
条項13. ビデオ・データが1つ又は複数の自律車両システムからキャプチャされる、条項7から12までのいずれか一項に記載のプロセッサ。
条項14. コンピューティング・デバイスであって、
ハードウェア・アクセラレータと、
命令を備えるメモリと
を備え、命令は、少なくとも、
複数のフレームを受信することと、
ハードウェア・アクセラレータが、複数のフレームに対応する1つ又は複数のベクトル場を決定することを引き起こすことと、
第1のニューラル・ネットワークに少なくとも部分的に基づいて、複数のフレーム中に表される1つ又は複数の物体を決定することと、
第2のニューラル・ネットワークを使用して、1つ又は複数のベクトル場と1つ又は複数の決定された物体とに少なくとも部分的に基づいて、複数のフレーム中に表される1つ又は複数のアクションを分類することと
を行うためにコンピューティング・デバイスの1つ又は複数のプロセッサによって実行可能である、コンピューティング・デバイス。
条項15. 第1のニューラル・ネットワークと第2のニューラル・ネットワークとが、1つ又は複数の量子化プロセスを通して処理される1つ又は複数の重みを含む、条項14に記載のコンピューティング・デバイス。
条項16. 1つ又は複数の量子化プロセスが、第1の表現から第2の表現への1つ又は複数の重みのコンバージョンを含む、条項14又は15に記載のコンピューティング・デバイス。
条項17. 1つ又は複数の量子化プロセスが、1つ又は複数のカルバック・ライブラー・ダイバージェンス値に少なくとも部分的に基づく、条項14から16までのいずれか一項に記載のコンピューティング・デバイス。
条項18. 第1の表現が32ビット浮動小数点表現であり、第2の表現が8ビット整数表現である、条項14から17までのいずれか一項に記載のコンピューティング・デバイス。
条項19. 命令が、コンピューティング・デバイスの1つ又は複数の画像キャプチャ・ハードウェアから複数のフレームを少なくとも取得するために1つ又は複数のプロセッサによって実行可能な命令をさらに含む、条項14から18までのいずれか一項に記載のコンピューティング・デバイス。
条項20. ハードウェア・アクセラレータが1つ又は複数の並列処理ユニットを備える、条項14から19までのいずれか一項に記載のコンピューティング・デバイス。
【0554】
少なくとも1つの実施例では、単一の半導体プラットフォームは、単独で単体の半導体ベースの集積回路又はチップを指し得る。少なくとも1つの実施例では、マルチチップ・モジュールは、オンチップ動作をシミュレートする増加された接続性を伴って使用され得、従来の中央処理ユニット(「CPU」)及びバス実装形態を利用することよりも大幅な改善を行い得る。少なくとも1つの実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームの様々な組合せで、様々なモジュールも設置され得る。
【0555】
少なくとも1つの実施例では、再び
図13を参照すると、機械可読実行可能コード又はコンピュータ制御論理アルゴリズムの形態のコンピュータ・プログラムが、メイン・メモリ1304及び/又は2次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合、少なくとも1つの実施例による様々な機能をシステム1300が実施することを可能にする。少なくとも1つの実施例では、メモリ1304、ストレージ、及び/又は任意の他のストレージが、コンピュータ可読媒体の考えられる実例である。少なくとも1つの実施例では、2次ストレージは、フロッピー・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表す、ハード・ディスク・ドライブ及び/又はリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指し得る。少なくとも1つの実施例では、様々な前の図のアーキテクチャ及び/又は機能性は、CPU1302、並列処理システム1312、CPU1302と並列処理システム1312の両方の能力の少なくとも一部分が可能な集積回路、チップセット(たとえば、関係機能を実施するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び/又は(1つ又は複数の)集積回路の任意の好適な組合せの文脈において実装される。
【0556】
少なくとも1つの実施例では、様々な前の図のアーキテクチャ及び/又は機能性は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、特定用途システムなどの文脈において実装される。少なくとも1つの実施例では、コンピュータ・システム1300は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレス・ハンドヘルド・デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭部装着型ディスプレイ、ハンドヘルド電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形態をとり得る。
【0557】
少なくとも1つの実施例では、並列処理システム1312は、限定はしないが、複数の並列処理ユニット(「PPU」)1314と、関連するメモリ1316とを含む。少なくとも1つの実施例では、PPU1314は、相互接続1318及びスイッチ1320又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも1つの実施例では、並列処理システム1312は、算出タスクをPPU1314にわたって分散させ、これは、たとえば複数のグラフィックス処理ユニット(「GPU」)スレッド・ブロックにわたる算出タスクの分散の一部として、並列化可能であり得る。少なくとも1つの実施例では、メモリは、PPU1314のいくつか又はすべてにわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、そのような共有メモリは、PPU1314に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも1つの実施例では、PPU1314の動作は、_syncthreads()などのコマンドを使用することによって同期され、(たとえば、複数のPPU1314にわたって実行される)ブロック中のすべてのスレッドが、進行前にコードのある実行ポイントに到達する。
【0558】
他の変形形態は、本開示の範囲内にある。したがって、開示される技法は、様々な修正及び代替構築が可能であるが、それらのいくつかの例示的な実施例が図面に示され、上記で詳細に説明された。しかしながら、特定の1つ又は複数の開示された形態に本開示を限定する意図はなく、その反対に、添付の特許請求の範囲において定義されるように、開示の趣旨及び範囲に入るすべての修正形態、代替構築、及び等価物を網羅することを意図していることが理解されるべきである。
【0559】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「含む、備える(comprising)」、「有する(having)」、「含む(including)」、「含んでいる(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「限定はしないが、~を含む(including, but not limited to,)」を意味する)と解釈されるべきである。「接続される」は、修飾されず、物理的接続を指しているとき、何か介在するものがある場合でも、部分的に又は完全に中に含まれているか、取り付けられるか、又は互いに接合されるものとして解釈されるべきである。本明細書で値の範囲を詳述することは、本明細書に別段の記載のない限り、及び各別個の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に入る各別個の値を個々に参照する簡潔な方法として働くことを単に意図しているにすぎない。少なくとも1つの実施例では、「セット」(たとえば、「項目のセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がないか又は否定されない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がないか又は否定されない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すとは限らず、サブセットと、対応するセットとは、等しくなり得る。
【0560】
「A、B、及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形態の言い回しなどの結合語は、別段の具体的な記載がないか又はさもなければ文脈によって明確に否定されない限り、別様に、項目、用語などが、A又はB又はCのいずれか、或いはAとBとCとのセットの任意の空でないサブセットであり得ることを提示するために一般に使用される文脈で、理解される。たとえば、3つの部材を有するセットの説明的な実例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B及びCのうちの少なくとも1つ」という結合句は、次のセットのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、そのような結合語は、いくつかの実施例が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つの各々が存在することを必要とすることを全体的に暗示するものではない。さらに、別段の記載がないか又は文脈によって否定されない限り、「複数(plurality)」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。少なくとも1つの実施例では、複数である項目の数は、少なくとも2つであるが、明示的に、又は文脈によってのいずれかでそのように示されているとき、それよりも多いことがある。さらに、別段の記載がないか又はさもなければ文脈から明らかでない限り、「~に基づいて」という言い回しは、「少なくとも部分的に~に基づいて」を意味し、「~のみに基づいて」を意味しない。
【0561】
本明細書で説明されるプロセスの動作は、本明細書に別段の記載がないか又はさもなければ文脈によって明確に否定されない限り、任意の好適な順序で実施され得る。少なくとも1つの実施例では、本明細書で説明されるプロセス(又はその変形形態及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行するコード(たとえば、実行可能命令、1つ又は複数のコンピュータ・プログラム、又は1つ又は複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードは、たとえば、1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形態で、コンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、一時的信号(たとえば、伝搬する一時的な電気又は電磁送信)を除外するが、一時的信号のトランシーバ内の非一時的データ・ストレージ回路要素(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的コンピュータ可読記憶媒体である。少なくとも1つの実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的コンピュータ可読記憶媒体のセットに記憶され、この記憶媒体は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書で説明される動作を実施させる実行可能命令を記憶している(又は、実行可能命令を記憶するための他のメモリを有する)。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体のセットは、複数の非一時的コンピュータ可読記憶媒体を備え、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数は、コードのすべてがないが、複数の非一時的コンピュータ可読記憶媒体は、集合的にコードのすべてを記憶している。少なくとも1つの実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的コンピュータ可読記憶媒体は命令を記憶し、メイン中央処理ユニット(「CPU」)は命令のいくつかを実行し、グラフィックス処理ユニット(「GPU」)は他の命令を実行する。少なくとも1つの実施例では、コンピュータ・システムの異なる構成要素は、別個のプロセッサを有し、異なるプロセッサが命令の異なるサブセットを実行する。
【0562】
したがって、少なくとも1つの実施例では、コンピュータ・システムは、本明細書で説明されるプロセスの動作を単独で又は集合的に実施する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、動作の実施を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、分散型コンピュータ・システムが本明細書で説明される動作を実施するように、及び単一のデバイスがすべての動作を実施しないように、異なるやり方で動作する複数のデバイスを備える分散型コンピュータ・システムである。
【0563】
本明細書で提供されるあらゆる実例、又は例示的な言葉(たとえば、「など、などの(such as)」)の使用は、本開示の実施例をより明らかにすることのみを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0564】
本明細書で引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0565】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用され得る。これらの用語は、互いに同義語として意図されていないことがあることが理解されるべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ又はそれ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用され得る。「結合される」はまた、2つ又はそれ以上の要素が直接互いに接触していないが、それでもなお互いに連動又は対話することを意味し得る。
【0566】
別段の具体的な記載がない限り、明細書全体を通して、「処理する(processing)」、「算出する(computing)」、「計算する(calculating)」、又は「決定する(determining)」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータを、コンピューティング・システムのメモリ、レジスタ又は他のそのような情報ストレージ、送信、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるように操作及び/又は変換する、コンピュータ又はコンピューティング・システム、或いは同様の電子コンピューティング・デバイスのアクション及び/又はプロセスを指すことが諒解され得る。
【0567】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶され得る他の電子データに変換する任意のデバイス、又はデバイスの一部分を指し得る。非限定的な実例として、「プロセッサ」は、CPU又はGPUであり得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用される「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実施するソフトウェア及び/又はハードウェア・エンティティを含み得る。また、各プロセスは、命令を直列で又は並列で、連続的に又は断続的に行うための複数のプロセスを指し得る。少なくとも1つの実施例では、「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化し得、方法がシステムと考えられ得る場合に限り、本明細書において交換可能に使用される。
【0568】
本明細書では、アナログ・データ又はデジタル・データを取得すること、獲得すること、受信すること、或いはそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及し得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、関数コール、又はアプリケーション・プログラミング・インターフェースへのコールのパラメータとしてデータを受信することによってなど、様々なやり方で実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、直列又は並列インターフェースを介してデータを転送することによって実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、提供するエンティティから獲得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを提供すること、出力すること、送信すること、送出すること、又は提示することにも言及し得る。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送出する、又は提示するプロセスは、関数コールの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェース又はプロセス間通信機構のパラメータとしてデータを転送することによって実現され得る。
【0569】
本明細書の説明は、説明された技法の例示的な実装形態について述べているが、他のアーキテクチャが、説明された機能性を実装するために使用され得、本開示の範囲内にあることが意図される。さらに、説明を目的として、責任の具体的な分散が上記で定義され得るが、様々な機能及び責任は、状況に応じて異なるやり方で分散及び分割され得る。
【0570】
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲で特許請求される主題は、説明された特有の特徴又は行為に必ずしも限定されるとは限らないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形態として開示される。
【国際調査報告】