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

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

▶ エヌビディア コーポレーションの特許一覧

特開2023-68601データ経路回路を設計するための装置、システム、及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023068601
(43)【公開日】2023-05-17
(54)【発明の名称】データ経路回路を設計するための装置、システム、及び方法
(51)【国際特許分類】
   G06F 30/327 20200101AFI20230510BHJP
   G06N 20/00 20190101ALI20230510BHJP
   G06F 30/27 20200101ALI20230510BHJP
   G06F 30/337 20200101ALI20230510BHJP
【FI】
G06F30/327
G06N20/00
G06F30/27
G06F30/337
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021197583
(22)【出願日】2021-12-06
(31)【優先権主張番号】17/517,612
(32)【優先日】2021-11-02
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ロイ ラジョーシ
(72)【発明者】
【氏名】サード ゴディル
(72)【発明者】
【氏名】ジョナサン ライマン
(72)【発明者】
【氏名】ニール カント
(72)【発明者】
【氏名】イルヤス エルキン
(72)【発明者】
【氏名】マイケル シュウ
(72)【発明者】
【氏名】ロバート カービィ
(72)【発明者】
【氏名】スチュアート オーベルマン
(72)【発明者】
【氏名】ブライアン カタンザーロ
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146AA22
5B146DC03
5B146GA03
5B146GA06
5B146GC03
(57)【要約】
【課題】強化学習を用いて並列プレフィックス回路などのデータ経路回路を設計するための装置、システム、及び技法を提供する。
【解決手段】方法は、データ経路回路の第1の設計状態を受信するステップと、データ経路回路の第1の設計状態を機械学習モデルに入力するステップと、データ経路回路の最終設計状態を出力するために機械学習モデルを使用して強化学習を実施するステップであって、データ経路回路の最終設計状態が、従来設計されたデータ経路回路と比較して減少された面積、電力消費及び/又は遅延を有する、ステップとを含むことができる。
【選択図】図9A
【特許請求の範囲】
【請求項1】
処理デバイスを使用して、データ経路回路の第1の設計状態を受信するステップと、
前記データ経路回路の前記第1の設計状態を機械学習モデルへの入力として提供するステップと、
前記機械学習モデルに前記データ経路回路の最終設計状態を出力させるために、前記機械学習モデルを使用して1つ又は複数の強化学習技法を実施するステップであって、前記データ経路回路の前記最終設計状態が、前記第1の設計状態に関連付けられた第1のパラメータ値よりもターゲットにより近い最終パラメータ値に関連付けられる、ステップと
を含む、方法。
【請求項2】
前記1つ又は複数の強化学習技法を実施するステップは、
前記機械学習モデルを使用して前記データ経路回路の前記第1の設計状態を処理するステップであって、前記機械学習モデルが、前記第1の設計状態の修正である前記データ経路回路の第2の設計状態を出力する、ステップと、
前記第1の設計状態についての前記第1のパラメータ値と前記第2の設計状態についての第2のパラメータ値とを決定するステップと、
前記第1のパラメータ値と前記第2のパラメータ値との比較に基づいて前記機械学習モデルを更新するステップと、
前記更新された機械学習モデルを使用して前記データ経路回路の前記第1の設計状態又は前記第2の設計状態を処理するステップであって、前記更新された機械学習モデルが、前記第1の設計状態又は前記第2の設計状態の修正である前記データ経路回路の第3の設計状態を出力する、ステップと
を含む、請求項1に記載の方法。
【請求項3】
第2のモデルを使用して前記第1の設計状態を処理するステップであって、前記第2のモデルが、前記第1の設計状態に関連付けられた前記第1のパラメータ値を出力する、ステップと、
前記第2のモデルを使用して前記第2の設計状態を処理するステップであって、前記第2のモデルが、前記第2の設計状態に関連付けられた前記第2のパラメータ値を出力する、ステップと、
前記第1のパラメータ値と前記第2のパラメータ値とのうちのどちらが前記ターゲットにより近いかを決定するために前記第2のパラメータ値と前記第1のパラメータ値との間の前記比較を行うステップと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記機械学習モデルが、前記第1の設計状態の第1のグラフのグリッド表現を入力として受信し、前記第2の設計状態の第2のグラフのグリッド表現を出力し、
前記第2のモデルが、前記第1の設計状態の前記第1のグラフの前記グリッド表現を第1の入力として受信し、前記第2の設計状態の前記第2のグラフの前記グリッド表現を第2の入力として受信するメトリック予測器モデルである、
請求項3に記載の方法。
【請求項5】
前記機械学習モデルが、前記第1の設計状態の第1のグラフのグリッド表現を入力として受信し、前記第2の設計状態の第2のグラフの前記グリッド表現を生成するためのアクションを出力し、前記方法が、
前記第2の設計状態の前記第2のグラフの前記グリッド表現を前記第2の設計状態の回路実装形態にコンバートするステップ
をさらに含み、
前記第2のモデルが、前記第1の設計状態の回路実装形態を第1の入力として受信し、前記第2の設計状態の前記回路実装形態を第2の入力として受信する、請求項3に記載の方法。
【請求項6】
前記第2のパラメータ値と前記第1のパラメータ値との間の差を決定するステップであって、前記機械学習モデルが前記差に基づいて更新される、ステップ
をさらに含む、請求項2に記載の方法。
【請求項7】
回路合成ツールを使用して前記第1の設計状態を処理するステップであって、前記回路合成ツールが、前記第1の設計状態に関連付けられた前記第1のパラメータ値を出力する、ステップと、
前記回路合成ツールを使用して前記第2の設計状態を処理するステップであって、前記回路合成ツールが、前記第2の設計状態に関連付けられた前記第2のパラメータ値を出力する、ステップと、
前記第1のパラメータ値と前記第2のパラメータ値とのうちのどちらが前記ターゲットにより近いかを決定するために前記第2のパラメータ値と前記第1のパラメータ値との間の前記比較を行うステップと
をさらに含む、請求項2に記載の方法。
【請求項8】
前記回路合成ツールは、前記機械学習モデルが前記データ経路回路の前記第2の設計状態を生成するためのアクションを出力することと少なくとも部分的に同時に、前記第1の設計状態を処理する、請求項7に記載の方法。
【請求項9】
前記第2のパラメータ値を決定する前に、前記第2の設計状態が無効状態であると決定するステップと、
有効である更新された第2の設計状態を作り出すために前記データ経路回路の前記第2の設計状態を修正するステップであって、前記第2のパラメータ値が、前記更新された第2の設計状態から決定される、ステップと
をさらに含む、請求項2に記載の方法。
【請求項10】
前記第1の設計状態を表す第1の並列プレフィックス・グラフを生成するステップと、
前記第1の並列プレフィックス・グラフのグリッド表現を生成するステップであって、前記第1の並列プレフィックス・グラフの前記グリッド表現が前記機械学習モデルへの入力として提供され、前記機械学習モデルが、前記最終設計状態を表す最終並列プレフィックス・グラフのグリッド表現を構築するための1つ又は複数のアクションを出力する、ステップと
をさらに含む、請求項2に記載の方法。
【請求項11】
前記データ経路回路は、並列プレフィックス回路、又は追加の回路論理がその入力又は出力に接続された並列プレフィックス回路を備える、請求項1に記載の方法。
【請求項12】
前記第1のパラメータ値及び前記最終パラメータ値が、各々、前記データ経路回路に関連付けられた面積、前記データ経路回路に関連付けられた遅延、前記データ経路回路に関連付けられた電力消費の予測、又はそれらの任意の組合せのうちの少なくとも1つを表す、請求項1に記載の方法。
【請求項13】
前記第1のパラメータ値及び前記最終パラメータ値が、各々、前記データ経路回路に関連付けられた前記面積、前記データ経路回路に関連付けられた前記遅延、又は前記データ経路回路に関連付けられた前記電力消費の重み付けされた値の予測のうちの少なくとも1つを表す、請求項12に記載の方法。
【請求項14】
前記機械学習モデルが、前記データ経路回路の設計状態を前記第1の設計状態から前記最終設計状態に反復的に修正し、各反復が、前記データ経路回路のグラフのノードを除去すること又は追加することのうちの少なくとも1つを含み、前記グラフの各ノードが、前記データ経路回路の1つ又は複数の構成要素に関連付けられる、請求項1に記載の方法。
【請求項15】
データ経路回路の第1の設計状態を受信することと、
機械学習モデルを使用して前記データ経路回路の前記第1の設計状態を処理することであって、前記機械学習モデルが、前記第1の設計状態の修正である前記データ経路回路の第2の設計状態を含む出力を生成することになる、処理することと
を行うことになる第1の処理デバイスと、
前記第1の設計状態についての第1のパラメータ値と前記第2の設計状態についての第2のパラメータ値とを決定することと、
前記第1のパラメータ値と前記第2のパラメータ値との比較に基づいて前記出力に関連付けられた報酬を決定することと
を行うように構成された第2の処理デバイスと
を備えるシステムであって、
前記第1の処理デバイスが、さらに、前記報酬に基づいて前記機械学習モデルを更新することになり、
前記機械学習モデルに対する1つ又は複数の更新の後に、前記機械学習モデルが、前記データ経路回路の最終設計状態を出力することになり、前記データ経路回路の前記最終設計状態が、前記第1の設計状態に関連付けられた第1のパラメータ値よりもターゲットにより近い最終パラメータ値に関連付けられる、システム。
【請求項16】
前記第1の処理デバイスが、さらに、
前記更新された機械学習モデルを使用して前記データ経路回路の前記第1の設計状態又は前記第2の設計状態を処理することと、
前記第1の設計状態又は前記第2の設計状態の修正である前記データ経路回路の第3の設計状態を出力することと
を行うことになる、請求項15に記載のシステム。
【請求項17】
前記第2の処理デバイスは、さらに、
第2のモデルを使用して前記第1の設計状態を処理することであって、前記第2のモデルが、前記第1の設計状態に関連付けられた前記第1のパラメータ値を出力する、処理することと、
前記第2のモデルを使用して前記第2の設計状態を処理することであって、前記第2のモデルが、前記第1の設計状態に関連付けられた前記第2のパラメータ値を出力する、処理することと、
前記第1のパラメータ値と前記第2のパラメータ値とのうちのどちらが前記ターゲットにより近いかを決定するために前記第2のパラメータ値と前記第1のパラメータ値とを比較することと
を行うことになる、請求項15に記載のシステム。
【請求項18】
前記第2の処理デバイス又は第3の処理デバイスのうちの少なくとも1つは、さらに、
回路合成ツールを使用して前記第1の設計状態を処理することであって、前記回路合成ツールが、前記第1の設計状態に関連付けられた前記第1のパラメータ値を出力する、処理することと、
前記回路合成ツールを使用して前記第2の設計状態を処理することであって、前記回路合成ツールが、前記第1の設計状態に関連付けられた前記第2のパラメータ値を出力する、処理することと、
前記第1のパラメータ値と前記第2のパラメータ値とのうちのどちらが前記ターゲットにより近いかを決定するために前記第2のパラメータ値と前記第1のパラメータ値とを比較することと
を行うように構成された、請求項15に記載のシステム。
【請求項19】
前記第1の処理デバイスがグラフィカル処理ユニット(GPU)を備え、前記第2の処理デバイスが中央処理ユニット(CPU)を備える、請求項15に記載のシステム。
【請求項20】
命令をその上に記憶する非一時的コンピュータ可読媒体であって、前記命令は、処理デバイスによって実行されたとき、前記処理デバイスに、
データ経路回路の第1の設計状態を受信することと、
前記データ経路回路の前記第1の設計状態を機械学習モデルへの入力として提供することと、
前記機械学習モデルに前記データ経路回路の最終設計状態を出力させるために、前記機械学習モデルを使用して1つ又は複数の強化学習技法を適用することであって、前記データ経路回路の前記最終設計状態が、前記第1の設計状態に関連付けられた第1のパラメータ値よりもターゲットにより近い最終パラメータ値に関連付けられる、適用することと
を行わせる、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
少なくとも1つの実施例が、回路設計を実施し、容易にするための機械学習の使用に関する。たとえば、少なくとも1つの実施例は、本明細書で説明される様々な新規の技法による、強化学習を利用するデータ経路回路設計のための技術に関する。
【背景技術】
【0002】
多くのタイプの回路は、データ経路又はデータ経路回路、たとえば、データ処理演算を実施することができる算術論理ユニット又は乗算器を含むことができる。たとえば、データ経路回路は、データ経路上でデータを処理又は合成する並列プレフィックス回路(たとえば、グレー・バイナリ・コンバータ(gray to binary converter)、加算器、デクリメンタ、インクリメンタ、優先度エンコーダなど)を含むことができる。プレフィックス算出は、画像処理、暗号、プロセッサ割振り、生物学的配列比較、バイナリ加算、シリコン・コンパイラの設計、ジョブ・スケジューリング、ループ並列化、多項式評価、及びソートなど、様々な用途において使用される極めて有用で基本的な演算である。
【0003】
データ経路回路の設計は、遅延(たとえば、データ経路回路が入力を与えられると値を出力するために要する時間の量)及び面積(たとえば、データ経路回路が要する空間の量)を減少させる一方、回路の電力消費の増加を回避することを目指す。データ経路回路の遅延が減少されるにつれて、データ経路回路の面積及び電力消費は影響を及ぼされ得、たとえば、データ経路回路の遅延が減少するにつれて、データ経路回路の面積は増加することがある。したがって、データ経路回路の設計は、データ経路回路の遅延、面積及び電力消費を最適化することを目指す。
【0004】
プレフィックス回路の最適化は、プレフィックス回路の大きい設計空間が入力長さとともに指数関数的に増大し、計数するのがやっかいであるので、難しい。その結果、全数探索手法が、小さい入力長さを越えてスケーリングしない。論理レベル、最大ファンアウト及び配線トラックのトレード・オフを図るいくつかの通常のプレフィックス回路構造が提案されてきた。アルゴリズムの別のセットは、プレフィックス回路サイズ及びレベル・プロパティを最適化する。しかしながら、プレフィックス回路レベル及び最大ファンアウト・プロパティは、容量性ローディング及び輻輳などの物理的設計複雑さにより、回路面積、電力、及び遅延にマッピングしない。データ経路回路設計のための従来の方法は、データ経路回路の遅延、面積及び電力消費を十分に最適化するとは限らない。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示による様々な実施例が、図面を参照しながら説明される。
【図面の簡単な説明】
【0006】
図1】少なくともいくつかの実施例による、例示的なシステム・アーキテクチャの図である。
図2】少なくともいくつかの実施例による、強化学習のための例示的なシステム・アーキテクチャを示す図である。
図3】少なくともいくつかの実施例による、例示的なプレフィックス・グラフ修正を示す図である。
図4】少なくともいくつかの実施例による、並列プレフィックス・グラフの例示的なグリッド表現を示す図である。
図5】少なくともいくつかの実施例による、例示的なデータ経路回路設計計算を示す図である。
図6】少なくともいくつかの実施例による、データ経路回路設計についての例示的な制約を示す図である。
図7】少なくともいくつかの実施例による、強化学習を用いたデータ経路回路設計のための例示的な方法の図である。
図8】少なくともいくつかの実施例による、例示的なシステム・アーキテクチャを示す図である。
図9A】少なくともいくつかの実施例による、強化学習を用いたデータ経路回路設計のための例示的な方法のフロー図である。
図9B】少なくともいくつかの実施例による、強化学習を用いたデータ経路回路設計のための例示的な方法のフロー図である。
図10A】少なくともいくつかの実施例による、推論及び/又は訓練論理(training logic)を示す図である。
図10B】少なくともいくつかの実施例による、推論及び/又は訓練論理を示す図である。
図11】少なくともいくつかの実施例による、例示的なデータ・センタ・システムを示す図である。
図12】少なくともいくつかの実施例による、コンピュータ・システムを示す図である。
図13】少なくともいくつかの実施例による、コンピュータ・システムを示す図である。
図14】少なくともいくつかの実施例による、グラフィックス・プロセッサの少なくとも部分を示す図である。
図15】少なくともいくつかの実施例による、グラフィック・プロセッサの少なくとも部分を示す図である。
図16】少なくともいくつかの実施例による、先進コンピューティング・パイプラインのための例示的なデータ・フロー図である。
図17】少なくともいくつかの実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練し、適応させ、インスタンス化し、導入するための例示的なシステムのためのシステム図である。
図18A】少なくともいくつかの実施例による、機械学習モデルを訓練するためのプロセスのためのデータ・フロー図である。
図18B】少なくともいくつかの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャを示す図である。
【発明を実施するための形態】
【0007】
加算器、優先度エンコーダ、インクリメンタ、デクリメンタ及びグレー・バイナリ・コード・コンバータなどのいくつかの基礎デジタル設計ビルディング・ブロックが、プレフィックス和算出に低減され、プレフィックス回路(たとえば、並列プレフィックス回路)などのデータ経路回路として実装され得る。面積、遅延及び電力についてのプレフィックス回路などのデータ経路回路の最適化は、デジタル・ハードウェア設計において重要であり得る。本明細書で説明される実施例は、強化学習を使用して面積、電力及び/又は遅延について最適化されるデータ経路回路(たとえば、並列プレフィックス回路)を設計するためのシステム及び方法を提供する。
【0008】
いくつかのメモリ・システムは、たとえば、ホスト・システムのためのデータを記憶又は通信する。メモリ・システムは、メモリ・システムのある構成要素からメモリ・システムの別の構成要素にデータを通信するデータ経路を含むことができる。いくつかの実施例では、メモリ・システムは、データ経路回路においてデータを処理又は合成することができる。たとえば、メモリ・システムは、データを処理及び合成するためのプレフィックス回路、たとえば、加算器、デクリメンタ、インクリメンタ、グレー・バイナリ・コンバータ、優先度エンコーダなどを含むことができる。たとえば、加算器は、メモリ・システムのプロセスのためにアドレス又はテーブル・インデックスを計算するために利用され得る。一実例では、プレフィックス回路は、たとえば、並列プレフィックス回路として、プレフィックス算出を実施するための時間を低減するために並列構成において利用され得る。
【0009】
各データ経路回路は、関連する面積(たとえば、メモリ・システムにおけるデータ経路回路のサイズ)と、電力消費(たとえば、動作中にデータ経路回路によって消費される電力量)と、遅延(たとえば、所与の数の入力から出力を生成するための時間の量)とを有することができる。(たとえば、メモリ・システムについての)回路の性能を増加させるために、データ経路回路は、面積、電力消費及び/又は遅延を低減するように設計され得る。とはいえ、いくつかの実例では、データ経路回路のあるプロパティを低減することは、データ経路回路の別のプロパティに影響を及ぼすことがあり、たとえば、データ経路回路の遅延を低減することは、データ経路回路の面積がより大きくなることを引き起こすか、又はデータ経路回路がより多くの電力を消費することを引き起こすことがある。したがって、実施例では、データ経路回路は、低減された面積、電力消費及び/又は遅延の間のトレード・オフを図るように設計され、たとえば、それぞれの遅延又は電力消費のために面積の最も小さい量のために設計又は最適化され得る。
【0010】
いくつかの実例では、データ経路回路の設計のための従来の方法は、最適化されたデータ経路回路を設計することにおいて効果的でない。たとえば、いくつかの従来の方法は、論理レベル、最大ファンアウト、及び配線トラックを最適化するプレフィックス回路構造を提案する。しかしながら、論理レベル、ファンアウト、及び配線トラックを最適化することは、プレフィックス構造の物理的設計の複雑さにより、たとえば、容量性ローディング又は輻輳により、面積、遅延、及び/又は電力のために最適化することに失敗することがある。データ経路回路設計のためのいくつかの従来の方法は、回路設計についての物理的メトリックを予測することを試みること、又は回路設計へのランダム修正を実施することのいずれかを行う、回路設計のためのヒューリスティック・ルールを利用することを含むことができる。そのようなヒューリスティックを使用して生成される回路設計は、不正確な解析モデルを使用して評価(evaluate)され得る。これらの解析モデル及びヒューリスティック・ルールは、それらが、手作りのヒューリスティックに依拠するか、又は解析評価メトリックによって制限されるので、最適回路を作り出すことにおいて効果的でないことがある。たとえば、解析評価メトリックを使用して設計されたプレフィックス回路は、プレフィックス回路が物理的合成を受けるとき、たとえば、解析モデルが、シミュレーションを経て、予測された物理モデルにコンバートされるとき、品質が劣化する(たとえば、遅延、面積、又は電力消費の増加を経験する)。物理的合成が解析評価よりも強いので、従来の方法は、概して、物理的合成のためにスケーリングされないことがある。したがって、データ経路回路のための従来の回路設計技法は、最適化されておらず、これらのデータ経路回路(たとえば、メモリ・システム)を使用するシステムの性能を低減する。
【0011】
本開示の態様は、機械学習モデルを用いた強化学習を使用してデータ経路回路(たとえば、並列プレフィックス回路)を設計することによって、上記及び他の欠陥に対処する。たとえば、(たとえば、エージェントを実行する)第1の処理デバイスが、機械学習モデルにデータ経路回路の初期設計を与えることができる。機械学習モデルは、データ経路回路のための第2の設計を生成するために設計を修正することができる。いくつかの実例では、設計を修正することは、データ経路回路に関連付けられたプレフィックス・グラフを修正すること、たとえば、データ経路回路を表すプレフィックス・グラフのノードを修正することを含むことができ、各ノードは、データ経路回路の1つ又は複数の構成要素を表す。たとえば、機械学習モデルは、第2の設計を表す第2のプレフィックス・グラフを生成するためにノードを追加又は除去することによって、初期設計によって表されるプレフィックス・グラフを修正することができる。修正の後に、第1の処理デバイス又は第2の処理デバイスは、第1の設計と第2の設計とを処理して、それぞれの設計に関連付けられた1つ又は複数のメトリックを決定することができる。たとえば、第1又は第2の処理デバイスは、機械学習モデルによって生成された初期設計と第2の設計とに関連付けられた面積、電力、及び/又は遅延を決定することができる。いくつかの実施例では、第2の機械学習モデルは、初期回路設計と第2の回路設計とに関連付けられた面積、電力及び/又は遅延を予測するために使用される。いくつかの実施例では、回路合成ツール(circuit synthesis tool)は、初期回路設計と第2の回路設計との面積、電力、及び/又は遅延を予測するために使用される。
【0012】
第1又は第2の処理デバイスは、初期設計から第2の設計に遷移することに基づいて面積、遅延、及び/又は電力の純変化を示す報酬(たとえば、パラメータ)を生成することができる。報酬は、機械学習モデルの訓練を更新するために使用され得、たとえば、機械学習モデルは、受信された報酬に基づいて強化学習を受けることができる。たとえば、機械学習モデルは、報酬を受信し、前の変化が、データ経路回路の面積、遅延、及び/又は電力の減少を引き起こしたと決定し、機械学習モデルの1つ又は複数のノードの重みを更新することができる。更新された機械学習モデルは、次いで、第3のデータ経路回路を生成するためにデータ経路回路の第2の設計を修正し得る。このプロセスは繰り返され得、機械学習モデルを使用するデータ経路回路設計の強化学習は、さらなる改善が出力されていない(たとえば、データ経路回路の遅延、面積、及び/又は電力を低減する、設計への追加の修正がない)という決定が行われるまで、或いはデータ経路回路の遅延、面積、及び/又は電力が、データ経路回路についてのターゲット遅延、面積、及び/又は電力を満たすという決定が行われるまで、たとえば、データ経路回路設計が、それぞれの遅延、面積、及び/又は電力制約のために最適化されるまで続くことができる。
【0013】
実施例は、従来の回路設計技法において適用される手作りのヒューリスティック(たとえば、プルーニングのためのヒューリスティックなど)の使用を回避する。実施例では、機械学習モデルは、本明細書で説明されるように、強化学習技法を介してデータ経路回路のための回路設計を実施するように訓練され得る。すなわち、機械学習モデルは、データ経路回路の現在の設計を最適化するやり方でデータ経路回路を修正すること、たとえば、データ経路回路の面積、電力消費及び/又は遅延を低減するためにデータ経路回路を修正することを学習する。たとえば、機械学習モデルは、1つ又は複数の改善された又は減少された回路設計最適化メトリック値を示す報酬を受信したことと、データ経路回路設計の前の修正が改善された又は減少された回路設計最適化メトリック値を生じたかどうかを決定することと、次いで、その報酬に基づいて機械学習モデルのノードを調節することとに基づいて訓練され得る。いくつかの実例では、機械学習モデルは、モデル(ベース/なし)、値/ポリシーベース、又はオン/オフ・ポリシー強化学習技法を使用して訓練され得る。他の実施例では、機械学習モデルは、深層ニューラル・ネットワーク(たとえば、畳み込みニューラル・ネットワーク、変換器、グラフ・ニューラル・ネットワークなど)及び/又は判定ツリーを利用することができる。強化学習を利用することによって、データ経路回路の設計は、他のソリューションと比較してそれよりも完全により最適化され得、たとえば、データ経路回路の遅延、面積、及び/又は電力は、旧来の手法を使用して設計されたデータ経路回路と比較して低減され得る。実施例は、データ経路回路の回路設計における前の手法と比較して、所与の遅延についてより小さい面積及び電力を有し、所与の面積及び電力についてより小さい遅延を有する回路設計を作り出す。したがって、メモリ・システムなどのシステムの全体的性能は、設計されたデータ経路回路が、旧来設計されたデータ経路回路と比較して、より少ない電力を消費し、遅延がより少なくなり、及び/又はより小さい面積を消費することができるので、本開示の実施例により、増加することができる。
【0014】
図1は、少なくとも1つの実施例による、コンピュータ・システム100を示す。少なくとも1つの実施例では、コンピュータ・システム100は、相互接続されたデバイス及び構成要素をもつシステム、SOC、又はそれらの何らかの組合せであり得る。少なくとも1つの実施例では、コンピュータ・システム100は、命令を実行するための実行ユニットを含み得るプロセッサ102とともに形成される。少なくとも1つの実施例では、コンピュータ・システム100は、限定はしないが、データを処理するためのアルゴリズムを実施するための論理を含む実行ユニットを採用するための、プロセッサ102などの構成要素を含み得る。少なくとも1つの実施例では、コンピュータ・システム100は、カリフォルニア州サンタクララのIntel Corporationから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含み得るが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含む)他のシステムも使用され得る。
【0015】
少なくとも1つの実施例では、コンピュータ・システム800は、ハンドヘルド・デバイス及び組み込みアプリケーションなど、他のデバイスにおいて使用され得る。ハンドヘルド・デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistant)、及びハンドヘルドPCを含む。少なくとも1つの実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(DSP:digital signal processor)、SoC、ネットワーク・コンピュータ(「NetPC」:network computer)、セット・トップ・ボックス、ネットワーク・ハブ、ワイド・エリア・ネットワーク(「WAN」:wide area network)スイッチ、又は1つ又は複数の命令を実施し得る任意の他のシステムを含み得る。一実施例では、コンピュータ・システム100は、グラフィックス処理ユニット(GPU:graphics processing unit)、ネットワーク・アダプタ、中央処理ユニットなどのデバイス、及びスイッチ(たとえば、NVIDIA GH100 NVLINK又はNVIDIA Quantum 2 64 Ports InfiniBand NDR Switchなどの高速直接GPU間相互接続(high-speed direct GPU-to-GPU interconnect))などのネットワーク・デバイスにおいて使用され得る。
【0016】
少なくとも1つの実施例では、コンピュータ・システム100は、限定はしないが、プロセッサ102を含み得、プロセッサ102は、限定はしないが、コンピュート・ユニファイド・デバイス・アーキテクチャ(「CUDA」:Compute Unified Device Architecture)(CUDA(登録商標)は、カリフォルニア州サンタクララのNVIDIA Corporationによって開発される)プログラムを実行するように構成され得る、1つ又は複数の実行ユニット107を含み得る。少なくとも1つの実施例では、CUDAプログラムは、CUDAプログラミング言語で書かれたソフトウェア・アプリケーションの少なくとも一部分である。少なくとも1つの実施例では、コンピュータ・システム100は、シングル・プロセッサ・デスクトップ又はサーバ・システムである。少なくとも1つの実施例では、コンピュータ・システム100は、マルチプロセッサ・システムであり得る。少なくとも1つの実施例では、プロセッサ102は、限定はしないが、CISCマイクロプロセッサ、RISCマイクロプロセッサ、VLIWマイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は、たとえばデジタル信号プロセッサなど、任意の他のプロセッサ・デバイスを含み得る。少なくとも1つの実施例では、プロセッサ102は、プロセッサ・バス110に結合され得、プロセッサ・バス110は、プロセッサ102とコンピュータ・システム100中の他の構成要素との間でデータ信号を送信し得る。
【0017】
少なくとも1つの実施例では、プロセッサ102は、限定はしないが、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)104を含み得る。少なくとも1つの実施例では、プロセッサ102は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ102の外部に存在し得る。少なくとも1つの実施例では、プロセッサ102は、内部キャッシュと外部キャッシュの両方の組合せをも含み得る。少なくとも1つの実施例では、レジスタ・ファイル106は、限定はしないが、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタを含む様々なレジスタに、異なるタイプのデータを記憶し得る。
【0018】
少なくとも1つの実施例では、プロセッサ102はデータ経路回路108を含むことができる。いくつかの実例では、データ経路回路108は並列プレフィックス回路の実例であり得る。たとえば、データ経路回路108は、場合によっては接続された論理を含む、加算器、インクリメンタ、デクリメンタ、優先度エンコーダ、及び/又はグレー・バイナリ・コンバータであり得る。いくつかの実例では、データ経路回路108はまた、コンピュータ・システム100の他の構成要素中に位置することがある。いくつかの実施例では、データ経路回路108は、電力を消費し、それぞれの面積を占め、それぞれの遅延を有することがある。いくつかの実施例では、データ経路回路108の遅延は、コンピュータ・システム108の構成要素のクロック周波数と逆関係にあり得、たとえば、データ経路回路108の遅延は、コンピュータ・システム108の構成要素についてのクロック周波数を設定するために利用され得る。いくつかの実施例では、データ経路回路108の設計は、データ経路回路108の面積、電力消費、及び/又は遅延を低減又は最適化するために、経時的に訓練される機械学習モデルを使用する強化学習を介して実施され得る。たとえば、データ・パッチ回路108の設計中に、機械学習モデルは、データ経路回路108の設計を修正し、その修正が所与のデータ経路回路108の面積、電力、又は遅延の低減を生じたかどうかを決定することができる。コンピュータ・システム100は、強化学習を使用して設計された最適化されたデータ経路回路から恩恵を受けることができる。すなわち、機械学習モデルは、データ経路回路の設計への生じた修正がデータ経路回路108の面積、遅延、及び/又は電力の低減を生じたかどうかに基づいて更新され得る。いくつかの反復にわたって、機械学習モデルは、データ経路回路の面積、電力消費、及び/又は遅延の最も良好な低減を生じる修正を選定するように訓練され得る。いくつかの実施例では、機械学習モデルは、データ経路回路108の面積、電力消費、及び/又は遅延がターゲット・メトリックを満たすまで、たとえば、データ経路回路108の面積、電力消費、及び/又は遅延がターゲット面積、電力消費、及び/又は遅延を満たすまで使用され得る。データ経路回路108を設計するために強化学習を利用することによって、データ経路回路108の設計は最適化され得、コンピュータ・システム100の性能は改善され得る。
【0019】
少なくとも1つの実施例では、限定はしないが、整数演算及び浮動小数点演算を実施するための論理を含む実行ユニット107も、プロセッサ102中に存在し得る。プロセッサ102は、いくつかのマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)をも含み得る。少なくとも1つの実施例では、実行ユニット102は、パック命令セット109に対処するための論理を含み得る。少なくとも1つの実施例では、パック命令セット109を、命令を実行するための関連する回路要素とともに汎用プロセッサ102の命令セットに含めることによって、多くのマルチメディア・アプリケーションによって使用される演算が、汎用プロセッサ102中のパック・データを使用して実施され得る。少なくとも1つの実施例では、多くのマルチメディア・アプリケーションが、パック・データの演算を実施するためにプロセッサのデータ・バスの全幅を使用することによって加速され、より効率的に実行され得、これは、一度に1つのデータ要素ずつ1つ又は複数の演算を実施するために、プロセッサのデータ・バスにわたってより小さい単位のデータを転送する必要をなくし得る。
【0020】
少なくとも1つの実施例では、実行ユニットはまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用され得る。少なくとも1つの実施例では、コンピュータ・システム100は、限定はしないが、メモリ120を含み得る。少なくとも1つの実施例では、メモリ120は、DRAMデバイス、SRAMデバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装され得る。メモリ120は、プロセッサ102によって実行され得るデータ信号によって表される(1つ又は複数の)命令119及び/又はデータ121を記憶し得る。
【0021】
少なくとも1つの実施例では、システム論理チップが、プロセッサ・バス110及びメモリ120に結合され得る。少なくとも1つの実施例では、システム論理チップは、限定はしないが、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)116を含み得、プロセッサ102は、プロセッサ・バス110を介してMCH116と通信し得る。少なくとも1つの実施例では、MCH116は、命令及びデータ・ストレージのための、並びにグラフィックス・コマンド、データ及びテクスチャのストレージのための、高帯域幅メモリ経路118をメモリ120に提供し得る。少なくとも1つの実施例では、MCH116は、プロセッサ102と、メモリ120と、コンピュータ・システム100中の他の構成要素との間でデータ信号をダイレクトし、プロセッサ・バス110と、メモリ120と、システムI/O122との間でデータ信号をブリッジし得る。少なくとも1つの実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供し得る。少なくとも1つの実施例では、MCH116は、高帯域幅メモリ経路118を通してメモリ120に結合され得、グラフィックス/ビデオ・カード112は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続114を介してMCH116に結合され得る。
【0022】
少なくとも1つの実施例では、コンピュータ・システム100は、MCH116をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)130に結合するためのプロプライエタリ・ハブ・インターフェース・バスである、システムI/O122を使用し得る。少なくとも1つの実施例では、ICH130は、ローカルI/Oバスを介していくつかのI/Oデバイスに直接接続を提供し得る。少なくとも1つの実施例では、ローカルI/Oバスは、限定はしないが、周辺機器をメモリ120、チップセット、及びプロセッサ102に接続するための高速I/Oバスを含み得る。実例は、限定はしないが、オーディオ・コントローラ129と、ファームウェア・ハブ(「フラッシュBIOS」)128と、ワイヤレス・トランシーバ126と、データ・ストレージ124と、ユーザ入力インターフェース125及びキーボード・インターフェースを含んでいるレガシーI/Oコントローラ123と、USBなどのシリアル拡張ポート127と、ネットワーク・コントローラ134とを含み得る。データ・ストレージ124は、ハード・ディスク・ドライブ、フロッピー・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備え得る。
【0023】
図2は、少なくとも1つの実施例による、データ経路回路の改善された設計を生成するために強化学習を実施するための例示的なシステム200を示す。いくつかの実施例では、システムはQネットワークであるか、又はQネットワークを含む。いくつかの実施例では、システム200は深層Qネットワークであるか、又は深層Qネットワークを含む。
【0024】
強化学習(RL:reinforcement learning)は、逐次意思決定(sequential decision making)タスクに適用可能なアルゴリズムのクラスである。RLは、エージェント202がそれの環境204における関数を最適化することを試みるマルコフ決定過程(MDP:Markov Decision Process)形式論を利用する。MDPは、(状態s∈Sをもつ)状態空間Sと、アクション(action)空間A(a∈A)と、遷移関数T:S×A→Sと、報酬関数
【数1】

とによって完全に記述され得る。
MDPにおいて、エピソードが離散時間ステップt=0,1,2,...,nにわたって発展し、ここで、エージェント202は、状態s(206)を観測し、ポリシーπ(a│s)を使用してアクションa(210)で応答する。環境204は、エージェント202に、次の状態st+1~T(s,a)212と報酬r=R(s,a)214とを提供する。エージェント202は、最適ポリシーπを学習することによって利得(累積的な将来の報酬)を最大にするというタスクを与えられる。
【0025】
Qネットワークは、Q学習と呼ばれるプロセスを介して訓練され得る。Q学習は、モデルが、最終的に、最大総報酬を生成することになるアクションのシーケンスを実施することを引き起こす強化学習プロセスである。この総報酬はQ値とも呼ばれる。Q値を算出するための関数は、以下の通りであり得る。
Q(s,a)←r+γmaxQ(st+1,a)
【0026】
上式は、状態s(206)にあることと、アクションa(210)を実施することとからもたらされるQ値が、即時報酬r(s,a)(214)+次の状態st+1(212)からの状態の可能な最高Q値であることを示し、ここで、γは、さらに将来における報酬の寄与を制御する割引係数(discount factor)である。Q関数の再帰的定義は、Q(st+1,at+1)の式が、以下のように、将来の状態に広げられることを可能にする。
Q(s,a)=r+γrt+1+・・・+γn-1t+n-1+γQ(st+n,at+n
エージェント202の機械学習モデル240は、以下の更新ステップを実施することによってQ(s,a)を予測することを学習する。
【数2】

ここで、αは、新たに獲得された情報が古い情報をどの程度までオーバーライドするかを制御する、学習レート又はステップ・サイズを表す。
【0027】
実施例では、ポリシーπの下での状態アクション・ペア(s,a)のQ値は、以下に記載されるように、状態s206においてアクションa210がとられ、ポリシーπを使用して将来のアクションがとられる場合、予想される利得になるように定義される。
【数3】
【0028】
実施例では、割引係数γ∈[0,1]は、短期報酬と長期報酬とを平衡させる。Q学習アルゴリズムは、ランダム・ポリシーでエージェント202を開始し得、環境(s,a,r,st+1)204とのそれの対話中に集められた経験を使用して、学習レートα∈[0,1]でQを更新することによって最適ポリシーに向けて反復する。
【数4】
【0029】
Q学習エージェント202のためのポリシーは、π(・│s)=argmaxQ(s,a)として表され得る。一実施例では、状態空間における探査(exploration)を増加させるための確率∈をもつランダム・アクションaが選定される、a∈グリーディ・ポリシー(a ∈-greedy policy)が使用される。一実施例では、∈は、訓練の最中に0にアニールされ、評価を実施するときに0である。一実施例では、複数の探査が、ある範囲の∈値で並列に行われ得る。
【0030】
深層Q学習は、基本的に上述のQ値を近似するためにニューラル・ネットワークなどの1つ又は複数の機械学習モデル(たとえば、機械学習モデル240)を実装するQ学習の拡張である。深層Q学習では、上述のQ値関数を近似するために、1つ又は複数の人工ニューラル・ネットワーク(たとえば、機械学習モデル240)が使用され得る。人工ニューラル・ネットワークは、概して、特徴を所望の出力空間にマッピングする分類器又は回帰層をもつ特徴表現構成要素を含む。畳み込みニューラル・ネットワーク(CNN:convolutional neural network)は、たとえば、畳み込みフィルタの複数の層をホストする。下位層において、プーリングが実施され、非線形性が対処され得、その上に多層パーセプトロンが通常付加され、畳み込み層によって抽出された最上層特徴を判定(たとえば、プレフィックス回路の設計状態への修正)にマッピングする。深層学習は、特徴抽出及び変換のために非線形処理ユニットの複数の層のカスケードを使用する機械学習アルゴリズムのクラスである。各連続層が、前の層からの出力を入力として使用する。深層ニューラル・ネットワークは、教師あり(supervised)(たとえば、分類)様式で、及び/又は教師なし(unsupervised)(たとえば、パターン解析)様式で学習し得る。深層ニューラル・ネットワークは層の階層を含み、ここで、異なる層は、異なる抽象レベルに対応する異なる表現レベルを学習する。深層学習では、各レベルは、それの入力データをわずかにより抽象的な及び複合的な表現に変換することを学習する。特に、深層学習プロセスは、単独でどの特徴をどのレベルに最適に配置すべきかを学習することができる。「深層学習」における「深層」は、データが変換される層の数を指す。より正確には、深層学習システムは、実質的なクレジット割当て経路(CAP:credit assignment path)深度を有する。CAPは、入力から出力への変換のチェーンである。CAPは、入力と出力との間の潜在的因果関係を説明する。フィードフォワード・ニューラル・ネットワークの場合、CAPの深度は、ネットワークの深度であり得、隠れ層の数+1であり得る。信号が2回以上層を通って伝搬し得る、リカレント・ニューラル・ネットワークの場合、CAP深度は潜在的に無制限である。
【0031】
実施例では、深層Qネットワーク(DQN:deep Q-network)は、(st+1,a’)のQ値を推定するために第2のターゲット・ネットワークを使用して訓練を安定させ得る。第2のターゲット・ネットワークは、第1のネットワークよりも低い頻度で更新され得る。実施例では、DQNは、経験再生バッファをサンプリングし得る。一実施例では、第1の機械学習モデルが、予測を決定するために使用され、第2のニューラル・ネットワークが、ターゲットを決定するために使用される。第2のニューラル・ネットワークは、実施例では、第1のニューラル・ネットワークと同じアーキテクチャを有し得る。しかしながら、一実施例では、第2のニューラル・ネットワークは、凍結パラメータを有し得るが、第1のニューラル・ネットワークは、可変パラメータを有し得る。一実施例では、第2のニューラル・ネットワークは、第1のニューラル・ネットワークよりも低い頻度で更新される。一実施例では、ダブルDQNアルゴリズムが使用され、これは、さらに、DQNにおける過大推定を低減することによって訓練を改善し得る。
【0032】
いくつかの実施例では、システム200は、エージェント(たとえば、アクター、回路修正器など)202と、環境(たとえば、シミュレーション環境、回路シンセサイザなど)204とを含むことができる。いくつかの実施例では、エージェント202は、1つ又は複数の機械学習モデル240を含むことができる。機械学習モデル240は、たとえば、深層ニューラル・ネットワーク(たとえば、畳み込みニューラル・ネットワーク、変換器、グラフ・ニューラル・ネットワークなど)又は判定ツリーであり得る。たとえば、機械学習モデル240は、深層Qネットワークのニューラル・ネットワークであり得る。
【0033】
いくつかの実例では、システム200は、図1を参照しながら説明されたようにデータ経路回路108を設計するために利用され得る。実施例では、データ経路回路(たとえば、プレフィックス回路)の最適化は、それらの構築のためのMDPを作成することによってRLタスクとしてフレーム化される。たとえば、RLシステム200は、(たとえば、可能な接続された論理が含まれる加算器の面積遅延最小化パレート・フロンティア(area-delay minimized pareto frontier)を設計するために)並列プレフィックス加算器のための設計を選択するように訓練され得る。いくつかの実施例では、エージェント202は、データ経路回路の設計を修正し、その修正に基づいて機械学習モデル240を訓練するように構成される。いくつかの実施例では、エージェント202は、グラフィカル処理ユニット(GPU)又は中央処理ユニット(CPU:central processing unit)などの処理デバイス上で実行することができる。いくつかの実施例では、システム200は、並列に動作し、学習を共有し得る、複数のエージェント202を含むことができる。各エージェント202は、同じ又は異なる処理デバイス、及び/或いは処理デバイスの同じ又は異なるコア上で実行し得る。各エージェントは、データ経路回路の修正を並列に実施し得、たとえば、複数のエージェント202は、データ経路回路を同時に修正し得る。これは、ターゲット又は最適データ経路回路設計を見つけるためにかかる時間の量を減少させ得る。いくつかの実施例では、(1つ又は複数の)エージェント202は、データ経路回路の設計状態206を受信することができる。設計状態206を受信すると、(1つ又は複数の)エージェント202は、アクション210を介して設計状態206を修正することができる。各エージェント202は、実施例では、異なるアクション210を出力し得る。いくつかの実施例では、アクション210は、機械学習モデル240(たとえば、深層ニューラル・ネットワークなど)によってエージェント202のために決定され得る。エージェント202はまた、データ経路回路の修正された状態を環境204に出力するように構成され得る。
【0034】
実施例では、データ経路回路108(たとえば、並列プレフィックス加算器などのプレフィックス回路)の設計は、プレフィックス・グラフを使用して表され得る。プレフィックス・グラフは、エッジが信号又は信号対を表し得、ノードが論理演算子を表し得る、有向非巡回グラフ(DAG:directed acyclic graph)である。たとえば、並列プレフィックス算出が、有向非巡回並列プレフィックス・グラフとして表され得、ここで、あらゆる算出ユニットzi:jが、2つの入力に対して単一の演算を実施するグラフ・ノードであり、すなわち、zi:j=zi:k°zk-1:jであり、ここで、°は、和演算、キャリー演算、差演算などの演算を表す。
【0035】
したがって、エージェント202は、データ経路回路の初期設計状態206を表すプレフィックス・グラフを受信することができる。エージェント202は、次いで、(たとえば、機械学習モデル240を使用して)プレフィックス・グラフを修正し、アクション210を介してデータ経路回路の修正された状態を表す新しいプレフィックス・グラフを出力し得る。実施例では、プレフィックス・グラフを修正することは、プレフィックス・グラフにおいて、ノードを追加すること、ノードを除去すること、又はノードを移動することを含み得る。
【0036】
図3は、少なくともいくつかの実施例による、例示的なプレフィックス・グラフ修正を示す。データ経路回路が、プレフィックス・グラフ305、310によって表され得、ここで、プレフィックス・グラフ305は、データ経路回路(たとえば、加算器など)のための回路設計の初期状態を表し、プレフィックス・グラフ310は、データ経路回路の修正又は更新された状態を表す。プレフィックス問題では、n個の入力xn-1,xn-2,...x、及び任意の結合演算子(associative operator)°が、n個の出力y=x°xi-1°...°x、i=0,...,n-1を算出するために使用される。したがって、各出力yは、同じ又はより低いインデックス(j≦i)のすべての入力xに依存する。
【0037】
一実例では、N入力プレフィックス和算出が、演算子の結合性により、いくつかのやり方で実施され得る。たとえば、4入力プレフィックス和が算出され得るやり方のうちの2つは、以下の通りである。
=x,y=x°y,y=x°y,y=x°y
=x,y=x°y,y=x°y,z3:2=x°x,y=z3:2°y
【0038】
この実例では、追加の項z3:2を導入することは、yに対するyの依存性を壊し、それがyと並列に算出されることを可能にし、したがって、この項を並列プレフィックスにする。実施例は、x°xi-1°...°xを表すためにzi:jを示す。次いで、出力yは、zi:0として書き直され得、入力xは、zi:iとして書き直され得る。yとxとが両方ともz0:0に対応し得ることに留意されたい。
【0039】
並列プレフィックス算出が、有向非巡回並列プレフィックス・グラフとして表され得、ここで、あらゆる算出ユニットzi:jが、2つの入力に対して単一の演算を実施するグラフ・ノードであり、すなわち、zi:j=zi:k°zk-1:jである。実施例では、算出ノードzi:jの最上位ビット及び最下位ビット(MSB,LSB)は、(i,j)であり得る。この記法を使用すると、ノード(i,k)は(i,j)の上位親であり得、ノード(k-1;j)は(i,j)の下位親であり得る。上記の実例の4入力プレフィックス和算出に対応するプレフィックス・グラフは、プレフィックス・グラフ305及びプレフィックス・グラフ310として図4に示されている。両方のグラフでは、ノード(2,0)の上位親及び下位親は、(2,2)及び(1,0)である。
【0040】
少なくとも1つの実施例では、あらゆる有効N入力プレフィックス・グラフが、1≦i≦N-1について入力ノード(i,i)、出力ノード(i,0)を有し、入力/出力ノード(0,0)を有する。さらに、少なくとも1つの実施例では、あらゆる非入力ノードは、正確に1つの上位親(up)と1つの下位親(lp)とを有し、したがって、以下のようになる。
LSB(node)=LSB(lp(node))
LSB(lp(node))≦MSB(lp(node))
MSB(lp(node))=LSB(up(node))-1
LSB(up(node))≦MSB(up(node))
MSB(up(node))=MSB(node)
【0041】
一実例では、データ経路回路は、入力315-a~315-dを受信し、出力325-a~325-dを作り出すことができる。いくつかの実例では、各入力315及び出力325は、データ経路回路によって受信されるか又は作り出される信号、或いはデータ経路回路に来るワイヤを表すことができる。いくつかの実例では、各入力315は、データ経路回路が合成するように構成された要素(又は何らかのデータ)を表すことができる。たとえば、データ経路回路がバイナリ加算器である実施例では、各入力は、加算器回路が算出和を実施するための入力のビットを表すことができ、たとえば、入力315-aは、0番目のビット又は1の場所を表すことができ、入力315-dは、加算器回路がそれの和を見つけることになる数の第3のビット又は8の場所を表すことができる。したがって、各出力325は、データ経路回路によってそれの動作中に生成される値又はビットを表すことができる。いくつかの実施例では、各出力325は各前の入力から生成され得、たとえば、出力325-cは入力315-a~315-cから生成され得、出力325-dは入力315-a~315-dから生成され得る。
【0042】
いくつかの実施例では、各プレフィックス・グラフはまた、1つ又は複数のノードを含むことができる。たとえば、プレフィックス・グラフ305はノード320-a~320-cを含むことができる。いくつかの実施例では、各ノードは、1つ又は複数の演算を実施するデータ経路回路の1つ又は複数の構成要素を表すか、又はその構成要素に関連付けられる。たとえば、ノード320-aは、データ経路回路108の1つ又は複数の論理ゲート(たとえば、ANDゲート、NORゲート、XORゲートなど)を表すことができる。いくつかの実施例では、ノード320はまた、バッファ又は他のタイプのゲートを表すことができる。
【0043】
いくつかの実施例では、データ経路回路の面積は、データ経路回路を表すプレフィックス・グラフ中のノード320の数に関係することがあり、たとえば、ノード320の数が大きいほど、データ経路回路に関連付けられた面積は大きくなる。たとえば、プレフィックス・グラフ305によって表されるデータ経路回路の面積は、プレフィックス・グラフ310によって表されるデータ経路回路の面積よりも小さくなり得、たとえば、プレフィックス・グラフ305ではノード320がより少ない。いくつかの実施例では、プレフィックス・グラフはまた、データ経路回路に関連付けられた遅延を示すことができる。たとえば、データ経路回路の遅延は、入力315が出力325として生成されるために要する最長経路に関係することがある。たとえば、入力315-aは、プレフィックス・グラフ305において出力325-dを生成することにおいて利用される前に3つのノード320を通過するが、プレフィックス・グラフ310の各入力315は、せいぜい2つのノード320を通過する。そのような実施例では、プレフィックス・グラフ310に関連付けられたデータ経路回路の遅延は、プレフィックス・グラフ305に関連付けられたデータ経路回路108の遅延よりも少なくなり得る。
【0044】
図2及び図3を参照すると、いくつかの実例では、データ経路回路の各設計状態206は、固有のプレフィックス・グラフによって表され得る。そのような実施例では、エージェント202は、データ経路回路108の現在の設計状態206を表すプレフィックス・グラフを受信することができる。いくつかの実施例では、以下に詳細に記載されているように、及び図4を参照すると、プレフィックス・グラフのグリッド表現が受信される。一実例では、プレフィックス・グラフ305がデータ経路回路の初期設計状態206を表す場合、エージェント202は、それへの修正を実施する前に環境204からプレフィックス・グラフ305(又はプレフィックス・グラフのグリッド表現)を受信することができる。
【0045】
いくつかの実施例では、エージェント202は、データ経路回路の現在の設計状態206を表すプレフィックス・グラフのノード320を修正するアクション210をとるように構成され得る。少なくとも1つの実施例では、エージェント202は、ノード320を追加するか、又はデータ経路回路の現在の設計状態206を表すプレフィックス・グラフからノード320を除去することができる。たとえば、エージェント202は、ノード320-dをプレフィックス・グラフ305に追加することができる。いくつかの実施例では、機械学習モデル240は、どのノード320を除去すべきかを決定するか、又はどこでノード320をプレフィックス・グラフに追加すべきかを決定することができる。いくつかの実施例では、機械学習モデル240は、プレフィックス・グラフの入力グリッド表現を受信し、ノードが追加又は除去された、修正されたプレフィックス・グラフのグリッド表現を出力する。
【0046】
いくつかの実施例では、エージェント202は、グラフ有効性決定器244を含む。代替的に、グラフ有効性決定器244は環境204中に含まれ得る。グラフ有効性決定器244は、(たとえば、機械学習モデル240によって出力される)更新されたプレフィックス・グラフの有効性を査定(assess)し得る。更新されたプレフィックス・グラフが無効である場合、グラフ有効性決定器244は、プレフィックス・グラフへの1つ又は複数のさらなる修正を実施して、それが有効になることを引き起こす。そのような修正は、1つ又は複数のノードの、プレフィックス・グラフへの追加又はプレフィックス・グラフからの除去であり得る。いくつかの実施例では、グラフ有効性決定器244が、アクション210が無効状態(たとえば、無効プレフィックス・グラフ)を生じると決定した場合、グラフ有効性決定器244は、再び設計状態206を修正することができる。すなわち、グラフ有効性決定器244は、アクションに続いて更新された状態を検証することができる。いくつかの実施例では、グラフ有効性決定器244は、無効ノードを追加又は除去すること、及び/或いは各ノードが以下で指定されているルールに従うことを確認することによって、状態を検証することができる。
【0047】
実施例では、上記で説明されたように、有効N入力プレフィックス・グラフが、1≦i≦N-1について入力ノード(i,i)、出力ノード(i,0)を有し、入力/出力ノード(0,0)を有する。たとえば、プレフィックス・グラフ310において、入力ノード(1,1)~(3,3)が、インデックス1~3における入力315-b~315-dに対応し、出力ノード(1,0)~(3,0)が、ノード320-a~320-cに対応し、ノード320-a~320-cはインデックス1~3における出力325-b~325-dを供給し、入力/出力ノード(0,0)がインデックス0における入力315-aに対応し、入力315-aは同じくインデックス0における出力325-aを供給する。
【0048】
いくつかの実施例では、有効プレフィックス・グラフは、各非入力ノード(たとえば、(0,0)、(1,1)、(2,2)などでない各ノード)が、各非入力ノードがそこから値を直接受信する正確に2つの親、すなわち、上位親と下位親とを有するものであり得る。これらの親は、別の非入力ノード320又は入力315であり得る。すなわち、非入力ノード320が1つの親又は3つ以上の親を有するプレフィックス・グラフは無効である。いくつかの実施例では、有効プレフィックス・グラフはまた、各ノード320がそこから値を直接又は間接的に受信する入力インデックスの逐次連続範囲を有する各ノード320を有する。たとえば、ノード320-bはインデックス0、1及び2における入力から値を受信するように、範囲(2,0)をもつ有効ノードである。ノードについての(MSB、LSB)記法では、最上位ビット(MSB:most-significant bit)が、ノードの範囲の上端又は第1の要素を表し、最下位ビット(LSB:least-significant bit)が、ノードの範囲の下端又は第2の要素を表す。範囲(0,2)をもつノード320は、その範囲がMSBからLSBに増加するので、無効になる。いくつかの実施例では、範囲(6,3)を有するが、インデックス5において入力から値を受信しないノード320をもつプレフィックス・グラフは無効であり、たとえば、その範囲は、ノード320がインデックス3、4、及び6において入力を受信するが、5において受信しないので、連続でない。
【0049】
さらに、各非入力ノードは、連続である正確に1つの上位親と1つの下位親とから値を直接受信することができる。たとえば、ノード320が範囲(3,1)を有し、範囲(3,3)を有する上位親を有する場合、ノード320はまた、範囲(2,1)を有する下位親を有しなければならない。すなわち、ノード320の上位親の範囲は、ノード320の範囲としてのMSB(たとえば、3)を有しなければならず、ノード320の下位親の範囲は、ノード320の範囲と同じLSB(たとえば、1)を有しなければならず、同時に、同じく連続であり、たとえば、インデックス2における入力を含む。したがって、プレフィックス・グラフは、上位親と下位親とに関する上記のルールに従うことができる。
【0050】
実施例では、N入力プレフィックス・グラフについてのアクション空間Aは、任意の非入力/出力ノードについての2つのアクション(追加又は削除)からなり、たとえば、ここで、LSB∈[1,N-2]であり、MSB∈[LSB+1,N-1]である。したがって、|A|=(N-1)×(N-2)/2である。Tを通した環境発展は、1)有効性を維持するために追加のノードを追加又は削除し得るアクションの後に(たとえば、グラフ有効性決定器244によって実施される)検証プロシージャを適用すること、及び2)検証プロシージャによって元に戻されることになる冗長アクションを禁止することによって、有効プレフィックス・グラフを維持し得る。
【0051】
一実施例では、検証中に、ノードの上位親、up(node)は、同じMSBと次に高いLSBとをもつ既存のノードである。一実施例では、ノードの下位親、lp(node)は、以下に従って、ノードとそれの上位親とを使用して算出される。
(MSBlp(node),LSBlp(node))=(LSBup(node)-1,LSBnode
【0052】
一実施例では、ノードの下位親が存在しないとき、無効条件が起こる。そのような条件では、グラフ有効性決定器244は、消失した下位親ノードを追加するために検証プロシージャを実施する。
【0053】
一実施例では、システム200(たとえば、環境204又はエージェント202)は、有効プレフィックス・グラフにおけるすべてのノードのリストnodelistを維持する。一実施例では、nodelist中にすでに存在するノードを追加するアクションは冗長であり、禁止される。一実施例では、システム200(たとえば、環境204又はエージェント202)は、他のノードの下位親でない、nodelistからのノードの最小リストminlistを維持する。一実施例では、ノードを削除するアクションは、minlist中のノードに限定され、場合によっては、存在しないか又は別のノードの下位親であるかのいずれかであるノードは削除され得る。そのような修正のために、削除されたノードは、検証中に再追加され得る。
【0054】
環境204は、アクション210(たとえば、プレフィックス・グラフ更新)を受信し、現在の設計状態206に対するアクション210に関連付けられた次の設計状態212と報酬214とを決定する。環境204は初期状態Sで開始し得、初期状態Sは、いくつかの実施例ではランダムに選定され得る。いくつかの実例では、環境204は、CPU又はGPUなど、1つ又は複数の処理デバイス上で実行することができる。いくつかの実施例では、システム200は複数の環境204を含むことができ、それらの各々は、異なるアクション(たとえば、データ経路回路の異なる修正された状態)を受信し得る。一実例では、複数の環境204は、ターゲット・データ経路回路設計を見つけるための時間の量を減少させるために異なるエージェント202によって出力されるデータ経路回路の修正された状態を同時に受信し得る。少なくとも1つの実施例では、環境204は、機械学習モデル240によって選定されたアクション210に基づいて設計状態206を更新又は修正することができる。一実施例では、環境204は、アクション210の後の状態212についてのプレフィックス・グラフを生成することができ、たとえば、環境は、アクション210が、値(3,2)をもつノード320をプレフィックス・グラフ305に追加することを指定したとき、プレフィックス・グラフ310を生成することができる。いくつかの実施例では、エージェント202は、修正された状態に関連付けられたプレフィックス・グラフを受信することができ、たとえば、エージェント202は、プレフィックス・グラフ310、又はプレフィックス・グラフのグリッド表現を受信することができる。
【0055】
あらゆるアクション210について(たとえば、データ経路回路のあらゆる設計状態について)、環境204のプレフィックス・グラフ・アセッサ(assessor)242が、データ経路回路の1つ又は複数のパラメータを推定し得る。そのような推定されたパラメータは、たとえば、データ経路回路の面積、データ経路回路の電力消費、及び/又はデータ経路回路の遅延を含み得る。プレフィックス・グラフ・アセッサ242は、次いで、決定されたパラメータを、データ経路回路についての1つ又は複数の目標及び/又は制約と比較し得る。さらに、プレフィックス・グラフ・アセッサ242は、データ経路回路の前の状態(たとえば、設計状態206)についての同様のパラメータを推定し得る(又は前に推定していることがある)。プレフィックス・グラフ・アセッサ242は、さらに、データ経路回路の前の状態についてのパラメータを、制約及び/又は目標と比較し得る。プレフィックス・グラフ・アセッサ242は、初期設計状態206のパラメータ、及び/又はパラメータと目標との間の距離を、更新された設計状態212のパラメータ、及び/又はパラメータと目標との間の距離と比較し得る。そのような比較に基づいて、プレフィックス・グラフ・アセッサ242は報酬214を出力し得る。たとえば、更新された設計状態に関連付けられたパラメータが、前の設計状態に関連付けられたパラメータよりも目標に近い場合、正の報酬214が出力され得る。一方、更新された設計状態に関連付けられたパラメータが、前の設計状態に関連付けられたパラメータよりも目標から遠い場合、負の報酬214が出力され得る。環境204はまた、エージェント202に入力されるべき次の設計状態212を出力し得る。
【0056】
環境204が、現在の設計状態206を修正するためのアクション210に続いて次の設計状態212が有効であると決定するか、又は修正された設計状態を検証した場合、環境は、次の報酬214を計算することができる。いくつかの実施例では、報酬214は、アクション210の結果としてデータ経路回路108の面積、電力消費及び/又は遅延の純変化を予測する。すなわち、環境204は、初期状態(又は現在の設計状態206)についての遅延、面積、及び電力と、次の設計状態212についての遅延、面積、及び電力とを計算し、次の報酬214を計算するためにそれらの2つの間の差を決定することができる。一実施例では、環境204は、図8を参照しながら説明されるように報酬を決定することができる。いくつかの実施例では、環境204は、図7を参照しながら説明されるように第2の機械学習モデルを介して報酬を決定することができる。すなわち、環境204は、アクション210に続いてデータ経路回路の面積、遅延、及び電力の変化を予測する第2の機械学習モデルを含むことができる。いくつかの実例では、環境204は、図5を参照しながら説明されるように報酬208(又は次の報酬214)を決定することができる。
【0057】
たとえば、環境204は、プレフィックス・グラフ305によって表される設計を有するデータ経路回路108によって消費される面積、遅延、及び/又は電力を決定することができる。いくつかの実例では、環境204のプレフィックス・グラフ・アセッサ242は、プレフィックス・グラフ(たとえば、プレフィックス・グラフ305)が与えられれば、物理的データ経路回路の面積、遅延、及び/又は電力を算出する合成ツール505を利用することができる。いくつかの実例では、合成ツール505は、使用すべき論理ゲートのタイプを決定すること、使用すべき論理ゲートのサイズを決定すること、論理ゲートの接続性を決定すること、バッファ又は他の構成要素がプレフィックス・グラフを最適化することになるかどうかを決定することなどを行うことができる。いくつかの実例では、合成ツール505を介してプレフィックス・グラフから潜在的物理的データ経路回路を生成することは、データ経路回路の面積、遅延、又は電力消費を増加又は減少させることができる。すなわち、潜在的な物理的データ経路回路を生成することは、物理的制約及び製造制約によるプレフィックス・グラフからの特定の回路実装形態への変更及び修正を引き起こすことができる。たとえば、プレフィックス・グラフのノードが4つの他のノードへの入力であった(たとえば、4つの他のノードがそのノードから値を受信する)場合、合成ツール505は、潜在的な物理的データ経路回路を生成するときにバッファを挿入し、面積の増加を引き起こすことができる。
【0058】
いくつかの実施例では、環境204のプレフィックス・グラフ・アセッサ242はまた、エージェント202によって出力された(たとえば、入力プレフィックス・グラフの修正及び検証の結果である)プレフィックス・グラフ(たとえば、プレフィックス・グラフ310)によって表される設計を有するデータ経路回路によって消費される面積、遅延、及び/又は電力を決定することができる。データ経路回路の面積、遅延、及び/又は電力を決定するために、環境は、プレフィックス・グラフから、予測された物理的データ経路回路を生成するために合成ツール505を使用することができる。各計算について(たとえば、プレフィックス回路305などの初期プレフィックス回路の計算、及びプレフィックス回路310などの修正又は更新されたプレフィックス回路の計算について)、プレフィックス・グラフ・アセッサ242は、グラフ510についての面積/遅延曲線を決定することができる。すなわち、環境204は、それぞれの面積についての初期プレフィックス・グラフ(たとえば、プレフィックス・グラフ305)に関連付けられたデータ経路回路の遅延を表す曲線515を決定することができる。同様に、環境204は、それぞれの面積についての更新されたプレフィックス・グラフ(たとえば、プレフィックス・グラフ310)に関連付けられたデータ経路回路の遅延を表す曲線520を決定することができる。
【0059】
いくつかの実施例では、環境は、図6を参照しながら説明される重み制約に基づいて遅延及び面積の差を決定することによって、アクション210の報酬を計算することができる。たとえば、重みが1である場合、報酬は、たとえば、図6を参照しながら説明される重み曲線に基づいて、ポイント530とポイント535との間の差をとることによって計算され得る。この実施例では、アクション210を介したプレフィックス・グラフ305からプレフィックス・グラフ310への修正は、面積及び遅延を低減した。したがって、環境204は、アクション210を介して低減された面積の量と低減された遅延の量とを示す次の報酬214を計算することができる。他の実施例では、環境204は、増加された面積、減少された面積、増加された遅延、減少された遅延、又はそれらの組合せを示す次の報酬214を計算することができる。面積対遅延が図5に示されているが、環境204は、次の報酬214を計算するときに、面積、電力、遅延、又はそれらの任意の組合せの差を決定することができる。いくつかの実施例では、環境204は、次の報酬をエージェント202に、たとえば、機械学習モデル240に送出することができる。
【0060】
エージェント202は、次の報酬214を受信するように構成され得る。いくつかの実施例では、エージェント202は、とられたアクション210がデータ経路回路を最適化したかどうか、たとえば、アクション210がデータ経路回路の面積、電力、及び/又は遅延の低減を引き起こしたかどうかを決定することができる。いくつかの実施例では、エージェント202は、機械学習モデル240を訓練するために強化学習を使用することができる。すなわち、エージェント202は、受信された次の報酬214に基づいて機械学習モデル240を訓練することができる。一実施例では、エージェント202は、報酬214と前に出力されたアクション210とに基づいて(1つ又は複数の)機械学習モデル240を訓練する。訓練は、(たとえば、アクション及び報酬に基づいて)誤差を定義することと、誤差が最小限に抑えられるようにネットワークの重みをすべてのそれの層及びノードにわたって調整するために確率勾配降下及び逆伝搬などの技法を使用することとによって実施され得る。
【0061】
一実例では、次の報酬214が面積、電力、又は遅延の低減を示す場合、機械学習モデル240は、低減を生じたアクションと同様のアクション210をとり続けることができる。次の報酬214が面積、電力又は遅延の増加を示す場合、機械学習モデル240は、機械学習モデルにおけるノードの重みを調節することによって他のアクション210をとるように訓練され得る。いくつかの実施例では、機械学習モデルは、モデル(ベース/なし)、値/ポリシーベース、又はオン/オフ・ポリシー強化学習技法を使用して訓練され得る。
【0062】
上記で説明されたように、機械学習モデル240が深層Qネットワークの構成要素として使用される実施例では、機械学習モデル240は、設計状態206の入力を受信し、アクション210についての面積及び遅延低減を予測し得る。たとえば、機械学習モデル240は、状態s206を入力として受信し、以下を予測し得る。
∀a∈A:[Qarea(s,a),Qdelay(s,a)]
【0063】
機械学習モデルへの入力は、N×N×4テンソルであり得、ここで、4つのチャネルは、以下のようにノード特徴を符号化する。
1)nodelist中のノード(MSB,LSB)の場合1であり、他の場合0である、
2)minlist中のノード(MSB,LSB)の場合1であり、他の場合0である、
3)nodelist中のノード(MSB,LSB)のレベルであり、他の場合0である、
4)nodelist中のノード(MSB,LSB)のファンアウトであり、他の場合0である、
ここで、nodelistは、有効プレフィックス・グラフ中のすべてのノード320であり、minlistは、他のノードの下位親でないnodelist中のすべてのノード320であり、ノードのレベルは、プレフィックス・グラフ中の入力ノードからのトポロジー深度(たとえば、それとそれぞれの入力315との間のノード320の数)であり、ノードのファンアウトは、それに従属するノード320の数を指す。経時的に、強化学習技法を介した機械学習モデル240は、データ経路回路108の設計を最も最適化する、たとえば、データ経路回路108の面積、電力及び/又は遅延を低減するアクション210をとるように訓練される。
【0064】
いくつかの実施例では、エージェント202は、エージェント202が最適化することになる各固有の回路について機械学習モデル240の異なるインスタンスを別個に訓練するように構成され得る。たとえば、エージェント202が、32ビット加算器回路について機械学習モデル240を訓練し、64ビット加算器回路について機械学習モデル240の別のインスタンスを別個に訓練することができる。いくつかの実施例では、機械学習モデル240の異なるインスタンスは、各それぞれのプロパティについて訓練され、たとえば、できる限り面積を低減するようにデータ経路回路の各ターゲット遅延時間について訓練され得る。機械学習モデルとともに強化学習を利用することによって、データ経路回路の設計は、他のソリューションと比較してそれよりも最適化され得、たとえば、データ経路回路の遅延、面積、及び/又は電力は低減され得る。したがって、データ経路回路がより少ない電力を消費し、遅延がより少なくなり、メモリ・システムにおいてより少ない面積を占めるので、データ経路回路を組み込む任意のシステム(たとえば、メモリ・システム)の全体的性能は増加することができる。
【0065】
いくつかの実例では、エージェント202及び/又は環境204は、本明細書で説明されるように、データ経路回路108の面積、遅延、及び/又は電力を最適化するアクション210をとるように機械学習モデル240を訓練するために強化学習を使用することができる。いくつかの実施例では、機械学習モデル240は、プログラムされた制約又は値に基づいてノード320を追加すべきであるのか除去すべきであるのかを決定することができる。たとえば、機械学習モデル240は、データ経路回路の最大回路幅、最大到着時間、面積と遅延との間の重み(又は面積と電力との間の重み、電力と遅延との間の重み、電力と面積との間の重み、或いはそれらの任意の組合せ)、技術ライブラリ、合成ツール、回路生成器オプション、及び/又はデータ経路回路についての他のターゲット・パラメータによって制約され得る。そのような制約は、実施例では、環境204によって提供され、報酬214を決定するために使用され得る。
【0066】
一実例では、機械学習モデル240は、データ経路回路の遅延が最大回路遅延を超えることを引き起こさないノードを追加又は除去しないように訓練され得る。いくつかの実施例では、機械学習モデル240は、データ経路回路の入力315の到着時間、たとえば、データ経路回路自体に関連付けられた遅延ではなく、入力315を受信することに関連付けられた何らかの遅延によって制約され得る。いくつかの実施例では、機械学習モデル240は、ターゲット・パラメータによって制約され得る。たとえば、機械学習モデル240は、データ経路回路が所与の面積、電力消費及び/又は遅延に達するまで、データ経路回路を修正する(たとえば、設計する)ように訓練され得る。別の実例では、機械学習モデル240は、重みパラメータを使用して、面積目的での改善と、電力消費目的での改善と、遅延目的での改善との間の重み付けされた平衡のために最適化するためにデータ経路回路を修正する(たとえば、設計する)ように訓練され得る。他の実施例では、機械学習モデル240は、所与の面積、所与の電力消費、及び/又は所与の遅延についてデータ経路回路を修正するように訓練され得る。
【0067】
いくつかの実施例では、機械学習モデル240は、回路生成器オプションによって制約され得る。すなわち、同じ並列プレフィックス・グラフについてデータ経路回路を生成するための異なるやり方があり得、たとえば、データ経路回路の予測された物理的実装形態は、物理的実装形態を予測するためにどのオプションが選択されるかに基づいて変化することができる。たとえば、加算器データ経路回路について、プレフィックス加算器回路は、概して、以下の関数を実施する。
O(n+1)=A(n)+B(n)+C(1)
ここで、「O」は、長さn+1ビットを有する出力であり、「A」及び「B」は、長さ「n」ビットを有するバイナリ入力であり、「C」は、長さ1ビットを有する入力である。いくつかの実施例では、回路生成器は、異なる関数及び結果を引き起こす異なるオプションができる。たとえば、以下の関数が可能である。
1)キャリーインを有しない(たとえば、「C」値がない):O(n+1)=A(n)+B(n)、
2)キャリーアウトを有しない:O(n)=A(n)+B(n)+C(1)、
3)キャリーイン又はキャリーアウトを有しない:O(n)=A(n)+B(n)、
4)入力「A/B/C」の1つ又は複数のビットが値1及び0において固定されるとき。
いくつかの実施例では、システム200は、上記に記載したオプションのいずれかの間で選択することができる。そのような実例では、エージェント202又は環境204は、どのオプションが選択されるかに基づいて同じ並列プレフィックス・グラフから、異なるタイプの回路を生成することができ、たとえば、同じプレフィックス・グラフは、回路生成器についての選択された設定に基づいて異なる面積、遅延、電力消費、又はそれらの任意の組合せを生じることができる。したがって、エージェント202は、データ経路回路について選択された特定の設定及びオプションに基づいて訓練される。いくつかの実施例では、プレフィックス加算器生成はまた、再現(recurrence)の選定(たとえば、ワインバーガー又はリング)又はビット単位キャリー伝搬論理の選定(XOR又はOR)によって影響を及ぼされ得る。いくつかの実施例では、上記に記載した回路生成器についての様々なオプションは、加算器回路に適用され得、たとえば、優先度符号器回路などの他のデータ経路回路に適用され得ない。
【0068】
いくつかの実施例では、システム200は、データ経路回路108中に、接続された論理を含めることを選定することができる。たとえば、環境204は、プレフィックス回路の入力及び/又は出力に接続された追加の回路論理とともに、プレフィックス・グラフに対応するプレフィックス回路を生成する回路生成器を使用することができる。そのような実例では、エージェント202は、プレフィックス回路に接続された特定の追加の回路論理に基づいて訓練される。そのような実例では、プレフィックス・グラフ・アセッサ242は、プレフィックス回路及び組み合わせられた追加の回路論理の面積、電力消費及び/又は遅延を査定し得る。
【0069】
他の実施例では、機械学習モデル240は、面積を最適化すること、電力消費を最適化すること、及び/又は遅延を最適化することの間の重み付けされた平衡によって制約され得る。たとえば、プレフィックス・グラフ・アセッサは、報酬214を算出するときに、推定された面積、電力消費及び/又は遅延の間の重み付けされた平衡を使用し得る。すなわち、上記で説明されたように、データ経路回路に関連付けられた面積、又は電力、又は遅延を低減するためにデータ経路回路を修正することは、データ経路回路の異なるプロパティが増加することを引き起こすことがあり、たとえば、遅延を低減することは、データ経路回路の面積が増加することを引き起こすことがある。たとえば、プレフィックス・グラフ310を生成するためにプレフィックス・グラフ305を修正することは、データ経路回路の遅延が減少することを引き起こすが、データ経路回路の面積が増加することを引き起こすことがある。したがって、機械学習モデル240は、遅延及び面積に割り当てられたそれぞれの重みに従ってデータ経路回路を最適化するように訓練され得る。
【0070】
一実例では、図6は、データ経路回路についての遅延と面積との間の曲線上の可能な重み付けされた値を示す。いくつかの実施例では、重み付けされた値610は1の重み値を表す。そのような実施例では、機械学習モデル240が遅延だけを最適化しようとする(最小限に抑えようとする)ことを引き起こす報酬が決定され得、たとえば、強化学習は、データ経路回路の面積の得られた減少又は増加を顧慮せずに遅延を低減するアクション210をとるように機械学習モデル240を訓練する。いくつかの実施例では、重み付けされた値602は0の重み値を表す。そのような実施例では、機械学習モデル240は、データ経路回路の面積だけを最適化する(最小限に抑える)ように訓練され、たとえば、強化学習は、データ経路回路の遅延の得られた減少又は増加を顧慮せずに面積を低減するアクション210をとるように機械学習モデル240を訓練する。重み付けされた値608は、面積についてよりも遅延についてより最適化することを表すことができ、重み付けされた値604は、遅延についてよりも面積についてより最適化することを表すことができる。いくつかの実施例では、重み付けされた値606は、遅延と面積とについて等しく最適化することを表すことができる。
【0071】
いくつかの実施例では、機械学習モデル240及び/又は環境204は、遅延と面積との間でどのくらい最適化すべきかを決定するために、以下の式を使用することができる。
【数5】

ここにおいて、Qareaは、データ経路回路の面積を最適化することに関連付けられ、Qdelayは、データ経路回路の遅延を最適化することに関連付けられ、st+1は次の設計状態212を示し、「a」は、とられたアクション(たとえば、どのノード320が追加されたか又はプレフィックス・グラフから除去されたか)を示し、「w」は所定の重みを表す。そのような実施例では、重み「w」は、0と1との間の値を有することができる。重み付けされた平衡を利用することによって、機械学習モデル240は、遅延、又は面積、又は電力、又はそれらの任意の組合せについて最適化するように訓練され得る。すなわち、環境204は、データ経路回路についての遅延が同じであるが、面積が低減されるように、又はその逆も同様であるようにデータ経路回路についての設計を修正するように機械学習モデル240を訓練するために更新され得る。図6は、遅延を最適化することと面積を最適化することとの間の平衡を示すが、面積と電力との間の重み付けされた平衡、又は遅延と電力との間の重み付けされた平衡も可能である。いくつかの実施例では、面積と遅延と電力との間の重み付けされた平衡も可能であり、たとえば、グラフ600は、機械学習モデル240及び/又は環境204が電力と遅延と面積との間で最適化することにどのくらい重みを加えるべきかを表す3次元グラフであり得る。
【0072】
いくつかの実施例では、グリッド表現は、図4に示されているように、プレフィックス・グラフを表すために使用される。プレフィックス・グラフのグリッド表現の使用は、プレフィックス・グラフが機械学習モデルによって処理されることを可能にする。グリッド表現は、グリッドでの(たとえば、2次元グリッドでの)プレフィックス・グラフの簡潔な表現である。プレフィックス・グラフのグリッド表現の各行と各列とはプレフィックス・グラフの異なる入力に関連付けられ得、行と列との各交点はプレフィックス・グラフのノードに関連付けられ得る。一実施例では、システム200の状態空間Sは、すべての有効N入力プレフィックス・グラフからなる。N入力グラフは、MSBを表す行とLSBを表す列とをもつN×Nグリッドで表され得る。実施例では、入力ノード(MSB=LSB)が対角線上にあり、出力ノードが第1の列上にあることになり(LSB=0)、対角線の上方のロケーション(LSB>MSB)がノードを含んでいないことがあることに留意されたい。実施例では、非入力/出力ノードが存在することもしないこともある残りの(N-1)(N-2)/2個のロケーションは、N入力プレフィックス・グラフの
【数6】

状態空間を定義する。たとえば、32入力グラフが、|S|=O(2465)の状態空間を有し得、ここで、厳密な値は、ノードの可能な組合せのうちのいくつかが有効でないことにより、より低い。
【0073】
図3図4を参照すると、グリッドの各値は、プレフィックス・グラフ305上の入力315(たとえば、入力ノード)又は潜在的ノード320を表すことができる。そのような実施例では、各ノード320は、プレフィックス・グラフ305上のそれのロケーションに対応するグリッド405上の範囲(たとえば、位置)を有することができる。各範囲は、行インデックスをそれの第1の要素として含み、列インデックスをそれの第2の要素として含むことができる。たとえば、ノード320-aは、範囲420-a(1,0)によって表され得、たとえば、ノード320-aは、第1の入力(たとえば、1又は315-b)及び第2の入力(たとえば、0又は315-a)を受信する。
【0074】
図3を参照しながら説明されるように、プレフィックス・グラフの各出力325は、直接又は間接的にあらゆる前の入力315から値を受信する。有効プレフィックス・グラフは、連続範囲、たとえば、(2,0)又は(3,1)に関連付けられたノード320を有することになり、ここで、ノード320は、それぞれインデックス0~2又は1~3において入力を受信する。そのような実施例では、第1の要素が第2の要素よりも小さい範囲は可能でなく、たとえば、(0,3)は、ノードについての可能な範囲でない。
【0075】
いくつかの実施例では、機械学習モデル240は、データ経路回路の初期状態のグリッド表現を受信することができ、追加、又はプレフィックス・グラフからの除去のためにノード320を選択し得る。機械学習モデル240は、次いで、追加又は除去のためにノードのグリッド表現を出力し得る。たとえば、Qネットワークのための機械学習モデル240は、出力グリッド表現をあらゆるノード位置におけるQ値でポピュレートし得る。任意の位置におけるQ値は、その位置に対応するノード320についての、(ノードが存在しない場合)追加アクション又は(ノードが存在する場合)除去アクションについてのQ値に対応することになる。いくつかの実施例では、機械学習モデル240は、同じ次元の複数のグリッド表現を出力し得る。たとえば、機械学習モデル240が、データ経路回路108の面積及び遅延について最適化しているQネットワークである場合、機械学習モデル240は、Qareaについてのグリッド表現とQdelayについてのグリッド表現とを出力し得る。そのような実例では、最高に重み付けされたQ値をもつアクションが、ノード320を追加するか、又はプレフィックス・グラフからノード320を除去するために選定されることになる。
【0076】
いくつかの実施例では、機械学習モデル240は、現在の設計状態206のグリッド表現を受信することができる。たとえば、機械学習モデル240は、現在の設計状態206がプレフィックス・グラフ305によって表されるとき、生成されたグリッド405を受信することができる。いくつかの実施例では、機械学習モデル240は、追加すべき、又はグリッド405から除去すべきノードを選択することによって、プレフィックス・グラフ305を修正することができる。一実施例では、機械学習モデル240は、グリッド410を生成するために、ノード420-d(たとえば、(3,2))をグリッド405に追加することを選択することができる。少なくともいくつかの実施例では、グリッド410は、プレフィックス・グラフ305への修正を表すことができる。たとえば、範囲420-dをプレフィックス・グラフについてのグリッドに追加することによって、プレフィックス・グラフ305は、追加のノード320-dをもつプレフィックス・グラフ310についてのグリッドを生成するために修正され得る。
【0077】
実施例では、エージェント202(たとえば、エージェント202の機械学習モデル240)は、アクションを出力することができる。出力されたアクションは、プレフィックス・グラフを更新するためのアクション(たとえば、追加すべき新しいノード、又は削除すべき既存のノード)であり得る。一実例では、(3,2)においてノードが追加されるべきグリッド表現が出力される。環境204は、出力されたアクション210(たとえば、グリッド表現におけるノード・ロケーション(3,2)とともに追加アクション)を受信する。環境は、プレフィックス・グラフ上で、プレフィックス・グラフのグリッド表現上で、又はプレフィックス・グラフの他の表現上で動作するように構成され得る。いくつかの実施例では、環境204は、プレフィックス・グラフのグリッド表現上のノード・ロケーション(たとえば、(3,2))を受信し、前の状態のグリッド(たとえば、グリッド405)からグリッド(たとえば、グリッド410)に更新した後にプレフィックス・グラフ310を生成する。
【0078】
本開示中の他の場所で説明されるように、機械学習モデル240は、とられるアクション210が、面積、電力消費及び/又は遅延についてデータ経路回路を最適化するように、強化学習を使用して訓練され得る。すなわち、機械学習モデル240が、たとえば、データ経路回路に関連付けられた1つ又は複数のプロパティを最適化するために範囲(3,2)を有するノード320-dを追加することを決定するように、たとえば、それが、重み付けされた制約に従って遅延、面積、電力、及び/又はそれらの任意の組合せを低減するように、機械学習モデル240は訓練され得る。他の場所で説明されるように、いくつかの実施例では、割引係数など、強化学習アルゴリズムにおけるいくつかのパラメータは、データ経路回路108に関連付けられた1つ又は複数のプロパティを経時的に最適化するアクションのシーケンスを選定するように訓練される機械学習モデル240を訓練するように構成され得る。
【0079】
図7は、少なくとも1つの実施例による、強化及び機械学習を使用するデータ経路回路設計の例示的な図700を示す。図700に示されている強化学習は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せを備える処理論理によって実施され得る。少なくとも1つの実施例では、図700に示されている動作は、図2を参照しながら説明されたようにエージェント202、機械学習モデル240、及び/又は環境204によって実施される動作を含む。特定のシーケンス又は順序で示されているが、別段に規定されていない限り、プロセスの順序は修正され得る。したがって、図示の実施例は実例としてのみ理解されるべきであり、図示されたプロセスは、異なる順序で実施され得、いくつかのプロセスは並列に実施され得る。さらに、1つ又は複数のプロセスは、様々な実施例で省略され得る。したがって、すべてのプロセスがあらゆる実施例において必要とされるとは限らない。
【0080】
動作705において、エージェント202は、データ経路回路の現在の設計状態206を受信することができる。いくつかの実例では、エージェント202は、データ経路回路の現在の設計状態206に対応するプレフィックス・グラフを受信することができる。少なくとも1つの実施例では、エージェント202は、図4を参照しながら説明されたようにプレフィックス・グラフのグリッド表現を受信又は生成することができる。いくつかの実施例では、エージェント202は、現在の設計状態206のグリッド表現を機械学習モデル240に送出することができる。いくつかの実施例では、エージェント202はまた、報酬(たとえば、図2を参照しながら説明された報酬208)を受信することができる。そのような実施例では、エージェント202は、受信された報酬に基づいて強化技法を用いて機械学習モデル240を訓練することができる。たとえば、機械学習モデル240によってとられた前のアクションが、データ経路回路に関連付けられた面積、遅延、又は電力の低減を生じたことを報酬が示す場合、エージェントは、同様のアクションをとり続けるように機械学習モデル240を訓練することができる。
【0081】
動作710において、機械学習モデル240は、並列プレフィックス回路のグリッド表現を受信することができる。いくつかの実施例では、機械学習モデル240は、プレフィックス・グラフのグリッド表現を修正するためのアクションを選択することができる。いくつかの実施例では、機械学習モデル240は、ノードを追加する、又はプレフィックス・グラフからノードを除去するアクションを選択することができ、たとえば、機械学習モデルは、図2及び図4を参照しながら説明されたように、プレフィックス・グラフ上でノードを追加又は除去することに対応する、グリッド表現上の範囲を選択することができる。
【0082】
動作715において、エージェント202は、アクション(たとえば、(3,2)においてノードを追加すること)を環境204に送信することができる。
【0083】
動作720において、環境204は、プレフィックス・グラフのグリッド表現への修正に基づいて次の報酬214を計算することができ、たとえば、環境204は、エージェント202から受信されたアクションに基づいてグリッド表現を修正し、次いで、それに応じてプレフィックス・グラフを修正することができる。いくつかの実施例では、環境204は、最初に、図2を参照しながら説明されたように、受信されたアクションが、設計状態206が有効になることを引き起こすのか無効になることを引き起こすのかを決定することができる。いくつかの実施例では、環境204が、状態が無効になることをアクションが引き起こすと決定した場合、環境204は、プレフィックス・グラフに無効ノードを追加すること、又はプレフィックス・グラフから無効ノードを除去することによって状態を検証することができる。いくつかの実施例では、環境204は、エージェント202から受信されたアクションを適用した後の修正された状態が有効であると決定した後に、又はエージェント202から受信されたアクションを適用した後の修正された状態を検証した後に、次の設計状態212を表すプレフィックス・グラフを生成することができる。いくつかの実施例では、環境204は、次の設計状態212を表すプレフィックス・グラフを生成した後に、現在の設計状態206及び修正された次の設計状態212についての面積、遅延、及び/又は電力を計算することができる。一実施例では、環境204は、設計状態206及び次の設計状態212の各々に対して回路合成を実施することによって、次の報酬214を計算することができる。そのような実施例では、環境204は、設計状態206についての及び次の設計状態212についての面積、遅延、及び/又は電力を決定し、その2つの間の差を決定して、図5を参照しながら説明されたように次の報酬214を決定することができる。
【0084】
いくつかの実施例では、環境204は、次の報酬214を計算するためのメトリック予測器モデル(metrics predictor model)(たとえば、第2の機械学習モデル又は第2のモデル)を含むことができる。そのような実施例では、メトリック予測器モデルは、データ経路回路の各状態についての、たとえば、設計状態206についての及び次の設計状態212についての遅延、面積、及び/又は電力を予測するように訓練され得る。たとえば、最初に、環境204は、回路合成を使用することによって修正されたデータ経路回路の面積、電力、及び/又は遅延を決定することができる。データベースが、環境によって生成された各状態と、それぞれの状態に関連付けられた面積、電力、及び/又は遅延メトリックとを記憶することができる。たとえば、データベースは、設計状態206と、次の設計状態212と、設計状態206及び次の設計状態212についての面積、電力、及び/又は遅延とを記憶することができる。メトリック予測器モデルは、データベースにおいて記憶されたデータを処理し、それぞれの状態についての面積、電力、及び遅延を予測するように訓練され得る。すなわち、メトリック予測器モデルは、状態を入力として受信し、データベースにおいて記憶されたデータを処理することに基づいて、たとえば、前の状態とそれらのそれぞれの遅延、面積、及び電力とを処理することに基づいて、状態に関連付けられた面積、遅延、及び/又は電力を予測するように訓練され得る。メトリック予測器モデルは、実施例においてプレフィックス・グラフのグリッド表現を入力として受信するように訓練され得る。したがって、メトリック予測器モデルが訓練されるとき、環境は、所与の状態に関連付けられたプレフィックス・グラフ(又はグリッド表現)をメトリック予測器モデルに送出することができる。そのような実施例では、メトリック予測器モデルは、それぞれの状態についての遅延、面積、及び/又は電力を予測することができる。報酬を計算するために、環境204は、メトリック予測器モデルによって出力された予測された遅延、面積及び/又は電力間の差を見つけることができる。たとえば、環境204は、設計状態206及び次の設計状態212をメトリック予測器モデルに提供することができる。そのような実施例では、メトリック予測器モデルは、設計状態206についての及び次の設計状態212についての遅延、面積、及び/又は電力を予測することができる。環境204は、次いで、次の報酬214を決定するために、次の設計状態212についての遅延、面積及び/又は電力と、設計状態206の遅延、面積及び/又は電力との間の差を見つけることができる。いくつかの実施例では、環境204は、次いで、報酬214をエージェント202に返送することができる。そのような実施例では、エージェント202は、本明細書で説明されるように強化学習技法を介して機械学習モデル240を訓練するために次の報酬214を利用することができる。いくつかの実施例では、面積、遅延、及び電力を予測するために機械学習を使用することは、回路合成を実施することよりも、少ないリソースを要し、少ない時間を消費することができる。
【0085】
図8は、少なくとも1つの実施例による、機械学習モデル240を使用して強化学習を実施する例示的なシステム800を示す。いくつかの実施例では、システム800は、図2を参照しながら説明されたように、エージェント(たとえば、アクター、回路修正器など)202と、環境(たとえば、シミュレーション環境、回路シンセサイザなど)204とを含むことができる。いくつかの実施例では、システム800は、並列回路合成810と、データベース810と、オプティマイザ825とを含むことができる。いくつかの実施例では、エージェント202は、図2を参照しながら説明されたように機械学習モデル240を含むことができる。いくつかの実例では、オプティマイザ825は、エージェント202中に含まれ得る。少なくとも1つの実施例では、システム200は、図1を参照しながら説明されたようにデータ経路回路108を設計するために利用され得る。
【0086】
図2を参照しながら説明されたように、エージェント202は、データ経路回路の状態を修正するためのアクションを選択するように構成され得る。いくつかの実施例では、環境204は、修正を適用し、必要な場合、修正された状態を検証し、次の状態(たとえば、新しい状態805)をエージェント202に返すように構成され得る。いくつかの実例では、環境204はまた、エージェント202によってとられるアクション210を適用した後に生成される状態をプレフィックス・グラフにコンバートし、たとえば、図4を参照しながら説明されたように、エージェント202からのアクションを適用することによって生成されるグリッドをプレフィックス・グラフにコンバートすることができる。いくつかの実施例では、システム800は、図2を参照しながら説明されたようにデータ経路回路の設計が最適化されるまで、このプロセスを続けることができる。いくつかの実施例では、システム800は、プロセスを実施するための複数のエージェント202と複数の環境204とを含むことができる。
【0087】
少なくとも1つの実施例では、システム800は、エージェント202からのアクション805を適用することとは別個に、初期状態805から新しい状態805への遷移のための報酬を計算することができる。すなわち、システム800は、図2及び図7に示された方法と比較して、データ経路回路108を設計するために強化学習を利用するための代替方法を示す。
【0088】
たとえば、一実施例では、エージェント202は、とられるアクション(たとえば、ノードを追加又は除去すること)を環境204とデータベース820の両方に送出することができる。同様に、環境204は、現在状態をエージェント202に、同様にデータベース820に、及び並列回路合成810に送出することができる。そのような実施例では、環境204及びエージェント202は、報酬を決定するためにプレフィックス・グラフを予測された物理的データ経路回路にコンバートするために、回路合成810を待つことなしにアクション及び状態を循環することができ、たとえば、エージェント202及び環境204は、より短い持続時間において状態及びアクションを循環することができる。
【0089】
いくつかの実施例では、並列回路合成810は、プレフィックス・グラフを予測された物理的データ経路回路に合成する1つ又は複数のCPUを含むことができる。そのような実施例では、並列回路合成810はまた、環境204から受信された各状態805についての、たとえば、それぞれの状態805に関連付けられた各プレフィックス・グラフについての報酬を計算することができる。すなわち、並列回路合成810は、環境204から受信された各プレフィックス・グラフ及び状態805についての面積、電力、及び遅延を決定することができる。いくつかの実施例では、並列回路合成810は、複数の報酬815を計算し、同時に複数のプレフィックス・グラフを合成することができ、たとえば、並列回路合成810中に含まれる各CPUは、異なる状態805についての報酬815を計算することができる。いくつかの実例では、並列回路合成810を利用することは、各状態805についての報酬815を計算するための時間を低減することができる。いくつかの実施例では、並列回路合成810は、各状態805についての計算された報酬815をデータベース820に送出することができる。
【0090】
いくつかの実施例では、データベース820は、状態805と、アクション210と、報酬815、たとえば、第1の状態805から第2の状態805への遷移上でとられる各アクション210についての報酬815とを記憶するように構成され得る。いくつかの実施例では、データベースは、状態805とアクション210と報酬815とをデータベースに送出し、たとえば、第1の状態805と、第2の状態805と、第1の状態805から第2の状態805に進むために使用されたそれぞれのアクション210と、修正のために計算された報酬とを送出することができる。いくつかの実施例では、オプティマイザ825は、状態805と、アクション210と、報酬815とについてデータベースにアクセスすることができる。
【0091】
いくつかの実施例では、オプティマイザ825は、データベースから状態805と、アクション210と、報酬815とを受信することができる。たとえば、オプティマイザ825は、第1の状態805と、第2の状態805と、第1の状態805から第2の状態805に進むために使用されたそれぞれのアクション210と、修正のために計算された報酬815とを受信することができる。オプティマイザ825は、とられたアクション210がデータ経路回路の面積、遅延、又は電力の減少を生じたかどうかを決定することができる。いくつかの実例では、オプティマイザ825は、とられたアクション210がデータ経路回路108の面積、電力、及び/又は遅延を低減したかどうかを決定したことに応答して、機械学習モデル240を訓練することができる。たとえば、オプティマイザ825が、アクション210がデータ経路回路の面積、遅延、及び/又は電力を低減することができなかったと決定した場合、オプティマイザ825は、そのようなアクション210を再びとることを回避するように機械学習モデル240を更新又は訓練することができる。したがって、機械学習モデル240は、強化学習を使用して訓練され得る。そのような実施例では、更新された機械学習モデル240は、異なるアクション210をとり、たとえば、エージェント202が、訓練又は更新されたことに応答して異なるアクション210をとることを引き起こすことができる。それにおいて、最初に、エージェント202は、初期機械学習アルゴリズムを使用して複数のアクション802をとることができる。エージェント202が複数のアクションを循環する間、並列回路合成810は、とられた各アクション210についての報酬815を同時に計算することができる。合成が、アクション210を実施することよりも長くかかるので、エージェント202は、任意の報酬815が計算される前にいくつかのアクション210を循環させ続けることができる。いくつかの実施例では、報酬815が計算されたとき、データベースは、情報をオプティマイザ825に送出することができる。したがって、機械学習モデル240は、更新され、エージェントが、更新された機械学習アルゴリズムを使用してアクション210をとることを引き起こすことができる。エージェント202は、次いで、追加の報酬815が、機械学習アルゴリズムを2回目に更新するために、オプティマイザ825によって計算され、使用されるまで、更新された機械学習アルゴリズムを使用してアクション210を循環することができる。システム800は、本方法を使用すること、たとえば、データ経路回路108についての最適ターゲット・パラメータが満たされるまで、機械学習モデル240を周期的に更新しながら、アクション210が循環する、エージェント202及び環境204とは無関係に報酬を計算することを続けることができる。
【0092】
図9Aは、強化学習を用いてデータ経路回路を設計するための方法900のフロー図を示す。方法900は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せを備える処理論理によって実施され得る。少なくとも1つの実施例では、方法900は、図2を参照しながら説明されたようにシステム200によって実施される。特定のシーケンス又は順序で示されているが、別段に規定されていない限り、プロセスの順序は修正され得る。したがって、図示の実施例は実例としてのみ理解されるべきであり、図示されたプロセスは、異なる順序で実施され得、いくつかのプロセスは並列に実施され得る。さらに、1つ又は複数のプロセスは、様々な実施例で省略され得る。したがって、すべてのプロセスがあらゆる実施例において必要とされるとは限らない。データ経路回路を設計するための方法を示す他の図が可能である。
【0093】
動作905において、処理論理は、データ経路回路の第1の設計状態を受信することができる。一実施例では、データ経路回路は並列プレフィックス回路を備えることができる。少なくとも1つの実施例では、処理論理は、第1の設計状態を受信したことに応答して第1の設計状態を表す第1の並列プレフィックス・グラフを生成することができる。すなわち、処理論理は、第1の並列プレフィックス・グラフを利用して並列プレフィックス回路の第1の設計状態を表すことができる。少なくとも1つの実施例では、処理論理は、第1の並列プレフィックス・グラフのグリッド表現を生成することができる。
【0094】
動作910において、処理論理は、データ経路回路の第1の設計状態を機械学習モデルに入力することができる。少なくとも1つの実施例では、処理論理は、第1の並列プレフィックス・グラフのグリッド表現を生成した後に、そのグリッド表現を機械学習モデルに入力する。
【0095】
動作915において、処理論理は、機械学習モデルにデータ経路回路の最終設計状態を出力させるために、機械学習モデルを使用して強化学習を実施する。最終設計状態は、強化学習の複数の反復の後に達成され得、ここで、各反復について、異なる設計状態が生成及び査定され、ここで、各反復について、機械学習モデルは、前の設計状態よりも改善された新しい設計状態を作り出すように訓練される。いくつかの実施例では、データ・パッチ回路の最終設計状態は、第1の設計状態に関連付けられたターゲット・パラメータ値により近い最終パラメータ値に関連付けられる。すなわち、処理論理は、図2を参照しながら説明されたようにデータ経路回路の設計を最適化するために強化学習を使用することができる。いくつかの実施例では、第1のパラメータ値及び最終パラメータ値は、データ経路回路に関連付けられた面積、データ経路回路に関連付けられた遅延、データ経路回路に関連付けられた電力消費の予測、又はそれらの任意の組合せを表すことができる。したがって、データ・パッチ回路の最終設計状態は、第1のパラメータ値よりも小さい、面積、遅延、又は電力消費を有する最終パラメータ値に関連付けられる。いくつかの実施例では、第1のパラメータ値及び第2のパラメータ値は、重み付けされた値、たとえば、図6を参照しながら説明されたように重み付けされた値の予測を表すことができる。いくつかの実施例では、機械学習モデルは、処理論理が、最終設計状態を表す最終プレフィックス・グラフのグリッド表現を構築することを引き起こすアクションを出力する。すなわち、機械学習モデルはアクションを出力することができ、処理論理は、アクションを利用して、グリッド表現を生成し、グリッド表現を、最終設計状態を表すプレフィックス・グラフにコンバートすることができる。いくつかの実施例では、機械学習モデルは、データ経路回路の設計状態を第1の設計状態から最終設計状態に反復的に修正することができ、ここで、各反復中に、機械学習モデルは、データ経路回路のグラフのノードを除去又は追加し、グラフの各ノードは、データ経路回路の1つ又は複数の構成要素に、たとえば、データ経路回路の1つ又は複数の論理ゲートに関連付けられる。
【0096】
図9Bは、強化学習を用いてデータ経路回路を設計するための方法902のフロー図を示す。方法902は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せを備える処理論理によって実施され得る。少なくとも1つの実施例では、方法902は、図2を参照しながら説明されたようにシステム200によって実施される。特定のシーケンス又は順序で示されているが、別段に規定されていない限り、プロセスの順序は修正され得る。したがって、図示の実施例は実例としてのみ理解されるべきであり、図示されたプロセスは、異なる順序で実施され得、いくつかのプロセスは並列に実施され得る。さらに、1つ又は複数のプロセスは、様々な実施例で省略され得る。したがって、すべてのプロセスがあらゆる実施例において必要とされるとは限らない。データ経路回路を設計するための方法を示す他の図が可能である。
【0097】
方法902の動作920において、処理論理は、データ経路回路の設計状態を受信することができる。いくつかの実施例では、処理論理は、データ経路回路の第1の設計状態を受信することができる。いくつかの実施例では、処理論理は、設計状態を表す並列プレフィックス・グラフ、たとえば、第1の設計状態を表す第1の並列プレフィックス・グラフを生成することができる。いくつかの実施例では、処理論理は、並列プレフィックス・グラフのグリッド表現、たとえば、第1の並列プレフィックス・グラフの第1のグリッド表現を生成することができる。いくつかの実施例では、処理論理は、グリッド表現を機械学習モデルに入力することができる。
【0098】
動作925において、処理論理は、次の設計状態、たとえば、第2の設計状態を生成するために機械学習モデルを使用してデータ経路回路の設計状態を処理することができる。いくつかの実施例では、機械学習モデルは、環境が、第2の設計状態、たとえば、修正された設計状態を生成するためにデータ経路回路の設計状態に適用するアクションを出力する。いくつかの実施例では、機械学習モデルは、第2の設計状態を生成するために、第1の設計状態に追加すべき、又は第1の設計状態から削除すべきグリッド表現中のノードを出力することができる。すなわち、機械学習モデルは、処理論理が、第2の設計状態に関連付けられた第2のグラフのグリッド表現、たとえば、次の設計状態に関連付けられた第2の並列プレフィックス・グラフの第2のグリッド表現を構築するために利用することができるアクションを出力することができる。いくつかの実施例では、処理論理は、グラフの第2のグリッド表現を第2の並列プレフィックス・グラフにコンバートすることができる。
【0099】
動作928において、処理論理は、第2の設計状態が有効であるかどうかを決定することができる。第2の設計状態が無効である場合、本方法は動作929に進む。第2の設計状態が有効であると決定された場合、本方法は動作930に進む。動作929において、処理論理は、有効である更新された第2の設計状態を作り出すためにデータ経路回路の第2の設計状態を修正し、たとえば、追加のノードを追加及び/又は除去することによって、並列プレフィックス・グラフを検証する。いくつかの実施例では、処理論理は、第1及び第2の設計状態をデータ経路回路実装形態にコンバートすることができる。本方法は、次いで動作930に進む。
【0100】
動作930において、処理論理は、第1の設計状態についての第1のパラメータ値を決定し、第2の設計状態についての第2のパラメータ値を決定し、たとえば、第1の設計状態についての第1のパラメータ値を決定し、第2の設計状態についての第2のパラメータ値を決定することができる。いくつかの実施例では、処理論理は、設計状態と次の設計状態とに関連付けられた面積、遅延、及び電力を決定することができ、たとえば、第1のパラメータ値及び第2のパラメータ値は、面積、遅延、及び電力を表すことができる。処理論理は、次いで、第1のエリア、遅延及び/又は電力に基づいて(たとえば、これらの値の第1の重み付けされた組合せに基づいて)第1のパラメータ値を決定し、第2の面積、遅延及び/又は電力に基づいて(たとえば、これらの値の第1の重み付けされた組合せに基づいて)第2のパラメータ値を決定することができる。
【0101】
いくつかの実施例では、処理論理は、第2のモデル(たとえば、第2の機械学習モデル又はメトリック予測器モデル)を使用して第1の設計状態を処理することができ、ここで、第2のモデルは、第1の設計状態に関連付けられた第1のパラメータ値を出力する。同様に、処理論理は、第2のモデルを使用して第2の設計状態を処理することができ、ここで、第2のモデルは、第2の設計状態に関連付けられた第2のパラメータ値を出力し、たとえば、メトリック予測器モデルは、第1のパラメータ値と第2のパラメータ値とを出力するために第1の設計状態と第2の設計状態とを処理することができる。そのような実施例では、処理デバイスは、第1のパラメータ値を受信するために、第1の設計状態の第1のグラフのグリッド表現を第1の入力として第2のモデルに送出し、第2のパラメータ値を受信するために、第2の設計状態の第2のグラフのグリッド表現を第2の入力として第2のモデルに送出することができ、たとえば、メトリック予測器モデルは、第1のグラフのグリッドと第2のグラフのグリッド表現とを受信したことに基づいて第1のパラメータ値と第2のパラメータ値とを出力することができる。いくつかの実施例では、第2のモデルは、第1のパラメータ値を決定するために、第1の設計状態の回路実装形態を第1の入力として受信し、第2のパラメータ値を決定するために、第2の設計状態の回路実装形態を第2の入力として受信することができ、たとえば、メトリック予測器モデルは、第1の並列プレフィックス・グラフと第2の並列プレフィックス・グラフとを受信することができる。いくつかの実施例では、処理論理は、回路合成ツールを使用して第1の設計状態と第2の設計像とを処理することができる。そのような実施例では、回路合成ツールは、第1のパラメータ値と第2のパラメータ値とを出力することができる。そのような実施例では、回路合成ツールは、機械学習モデルがデータ経路回路の第2の設計状態を出力することと同時に、第1の設計状態を処理することができる。
【0102】
動作935において、処理論理は、たとえば、機械学習モデルによって選択された修正がデータ経路回路に関連付けられた面積、遅延、電力消費、又はそれらの任意の組合せを低減したのか増加させたのかに基づいて、機械学習モデルを更新することができる。機械学習モデルを更新した後に、動作938において、処理論理は、1つ又は複数の停止基準が満たされたかどうかを決定することができる。たとえば、設計状態のしきい値数の反復の後に、(たとえば、面積、電力及び/又は遅延についての)1つ又は複数のターゲット目標が満たされた後に、(1つ又は複数の)パラメータ値に対するさらなる改善なしに、しきい値数回の設計状態反復が実施された後になど、停止基準が満たされ得る。停止基準が満たされた場合、本方法は動作945に進み得、動作945において、データ経路回路についての最終設計状態が選択され得る。最終設計状態は、たとえば、直近の設計状態、或いは最良のデータ経路回路メトリック(たとえば、最良の面積、遅延、電力消費、又はそれらの任意の組合せ)又はターゲットに最も近いパラメータを取得した反復中に遭遇した設計状態であり得る。停止基準が満たされなかった場合、動作940において、処理論理は、機械学習モデルに入力されるべき次の設計状態を選択し得る。次の設計状態は、たとえば、直近の設計状態、又は反復中に遭遇した別の設計状態であり得る。本方法は動作925に戻り得、動作925において、次の設計状態は、機械学習モデルを使用して処理される。処理論理は、更新された機械学習モデルを利用することができる。たとえば、処理論理は、更新された機械学習モデルを使用して設計状態又は次の設計状態を処理することができ、たとえば、処理論理は、機械学習モデルを使用して第1の設計状態又は第2の設計状態を処理することができる。いくつかの実施例では、更新された機械学習モデルは、第1の設計状態又は第2の設計状態の修正であるデータ経路回路の第3の設計状態を出力する。少なくとも1つの実施例では、処理論理は、第3の設計状態に関連付けられた第3のパラメータ値を決定することができ、第3のパラメータ値は、第1のパラメータ値又は第2のパラメータ値よりもターゲットに近い。プロセスは、停止基準が満たされるまで、第4、第5、及びそれ以上の設計状態について繰り返すことができる。
【0103】
図10Aは、1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために使用される推論及び/又は訓練論理1015を示す。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。
【0104】
少なくとも1つの実施例では、推論及び/又は訓練論理1015は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層を構成するための順方向及び/若しくは出力の重み及び/又は入力/出力データ、並びに/或いは他のパラメータを記憶するためのコード及び/又はデータ・ストレージ1001を含み得る。少なくとも1つの実施例では、訓練論理1015は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1001を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ1001において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU:arithmetic logic unit))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。少なくとも1つの実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づいて、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの順方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0105】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ1001は、キャッシュ・メモリ、動的なランダムにアドレス指定可能なメモリ(「DRAM」:dynamic randomly addressable memory)、静的なランダムにアドレス指定可能なメモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ1001が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らか他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0106】
少なくとも1つの実施例では、推論及び/又は訓練論理1015は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層に対応する逆方向及び/若しくは出力の重み及び/又は入力/出力データを記憶するためのコード及び/又はデータ・ストレージ1005を含み得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1005は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの逆方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、訓練論理1015は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1005を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ1005において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。少なくとも1つの実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づいて、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1005の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1005の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1005は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1005が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らか他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0107】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005とは、別個のストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005とは、同じストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005とは、部分的に同じストレージ構造であり、部分的に別個のストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001コード及び/又はデータ・ストレージ1005の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0108】
少なくとも1つの実施例では、推論及び/又は訓練論理1015は、限定はしないが、訓練及び/又は推論コード(たとえば、グラフ・コード)に少なくとも部分的に基づく、又はそれによって示される論理演算及び/又は数学演算を実施するための、整数及び/又は浮動小数点ユニットを含む、1つ又は複数の算術論理ユニット(「ALU」)1010を含み得、その結果が、アクティブ化ストレージ1020に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層又はニューロンからの出力値)を作り出し得、これらのアクティブ化は、コード及び/又はデータ・ストレージ1001並びに/或いはコード及び/又はデータ・ストレージ1005に記憶される入力/出力及び/又は重みパラメータ・データの関数である。少なくとも1つの実施例では、アクティブ化ストレージ1020に記憶されるアクティブ化は、命令又は他のコードを実施したことに応答して(1つ又は複数の)ALU1010によって実施される線形代数及び又は行列ベースの数学に従って生成され、コード及び/又はデータ・ストレージ1005並びに/或いはコード及び/又はデータ・ストレージ1001に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、或いは他のパラメータ又はハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ1005又はコード及び/若しくはデータ・ストレージ1001、或いはオンチップ又はオフチップの別のストレージに記憶され得る。
【0109】
少なくとも1つの実施例では、(1つ又は複数の)ALU1010は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路内に含まれるが、別の実施例では、(1つ又は複数の)ALU1010は、それらを使用するプロセッサ或いは他のハードウェア論理デバイス又は回路(たとえば、コプロセッサ)の外部にあり得る。少なくとも1つの実施例では、ALU1010は、プロセッサの実行ユニット内に含まれるか、或いはさもなければ、同じプロセッサ内にあるか又は異なるタイプの異なるプロセッサ(たとえば、中央処理ユニット、グラフィックス処理ユニット、固定機能ユニットなど)間で分散されているかのいずれかであるプロセッサの実行ユニットによってアクセス可能なALUのバンク内に含まれ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005と、アクティブ化ストレージ1020とは、同じプロセッサ或いは他のハードウェア論理デバイス又は回路上にあり得るが、別の実施例では、それらは、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路中にあるか、或いは、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せ中にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ1020の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。さらに、推論及び/又は訓練コードが、プロセッサ或いは他のハードウェア論理又は回路にアクセス可能な他のコードとともに記憶され、プロセッサのフェッチ、復号、スケジューリング、実行、退去(retirement)及び/又は他の論理回路を使用してフェッチ及び/又は処理され得る。
【0110】
少なくとも1つの実施例では、アクティブ化ストレージ1020は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、アクティブ化ストレージ1020は、完全に又は部分的に、1つ又は複数のプロセッサ又は他の論理回路内にあるか、又はその外部にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ1020が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らか他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。少なくとも1つの実施例では、図10Aに示されている推論及び/又は訓練論理1015は、GoogleからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(「ASIC」:application-specific integrated circuit)と併せて使用され得る。少なくとも1つの実施例では、図10Aに示されている推論及び/又は訓練論理1015は、中央処理ユニット(「CPU」)ハードウェア、グラフィックス処理ユニット(「GPU」)ハードウェア、或いは、データ処理ユニット(「DPU」:data processing unit)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)などの他のハードウェアと併せて使用され得る。
【0111】
図10Bは、少なくとも1つ又は複数の実施例による、推論及び/又は訓練論理1015を示す。少なくとも1つの実施例では、推論及び/又は訓練論理1015は、限定はしないが、ハードウェア論理を含み得、このハードウェア論理において、算出リソース(computational resource)が専用であるか、或いはさもなければ、ニューラル・ネットワーク内のニューロンの1つ又は複数の層に対応する重み値又は他の情報と併せてのみ使用される。少なくとも1つの実施例では、図10Bに示されている推論及び/又は訓練論理1015は、GoogleからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(ASIC)と併せて使用され得る。少なくとも1つの実施例では、図10Bに示されている推論及び/又は訓練論理1015は、中央処理ユニット(CPU)ハードウェア、グラフィックス処理ユニット(GPU)ハードウェア、或いは、データ処理ユニット(「DPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと併せて使用され得る。少なくとも1つの実施例では、推論及び/又は訓練論理1015は、限定はしないが、コード及び/又はデータ・ストレージ1001とコード及び/又はデータ・ストレージ1005とを含み、それらは、コード(たとえば、グラフ・コード)、重み値、並びに/或いは、バイアス値、勾配情報、運動量値、及び/又は他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶するために使用され得る。図10Bに示されている少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001並びにコード及び/又はデータ・ストレージ1005の各々は、それぞれ、算出ハードウェア1002及び算出ハードウェア1006など、専用算出リソースに関連付けられる。少なくとも1つの実施例では、算出ハードウェア1002及び算出ハードウェア1006の各々は、線形代数関数などの数学関数を、それぞれコード及び/又はデータ・ストレージ1001並びにコード及び/又はデータ・ストレージ1005に記憶された情報に対してのみ実施する1つ又は複数のALUを備え、その結果が、アクティブ化ストレージ1020に記憶される。
【0112】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ1001及び1005の各々と、対応する算出ハードウェア1002及び1006とは、それぞれ、ニューラル・ネットワークの異なる層に対応し、それにより、コード及び/又はデータ・ストレージ1001と算出ハードウェア1002との1つの「ストレージ/算出ペア1001/1002」から生じたアクティブ化は、ニューラル・ネットワークの概念的組織化をミラーリングするために、コード及び/又はデータ・ストレージ1005と算出ハードウェア1006との「ストレージ/算出ペア1005/1006」への入力として提供される。少なくとも1つの実施例では、ストレージ/算出ペア1001/1002及び1005/1006は、2つ以上のニューラル・ネットワーク層に対応し得る。少なくとも1つの実施例では、ストレージ算出ペア1001/1002及び1005/1006の後に、又はそれらと並列に、追加のストレージ/算出ペア(図示せず)が、推論及び/又は訓練論理1015中に含められ得る。
【0113】
図11は、少なくとも1つの実施例が使用され得る例示的なデータ・センタ1100を示す。少なくとも1つの実施例では、データ・センタ1100は、データ・センタ・インフラストラクチャ層1110と、フレームワーク層1120と、ソフトウェア層1130と、アプリケーション層1240とを含む。
【0114】
少なくとも1つの実施例では、図11に示されているように、データ・センタ・インフラストラクチャ層1110は、リソース・オーケストレータ1112と、グループ化されたコンピューティング・リソース1114と、ノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)1116(1)~1116(N)とを含み得、ここで、「N」は、任意のすべての正の整数を表す。少なくとも1つの実施例では、ノードC.R.1116(1)~1116(N)は、限定はしないが、任意の数の中央処理ユニット(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、データ処理ユニット、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、動的読取り専用メモリ)、ストレージ・デバイス(たとえば、ソリッド・ステート又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電力モジュール、及び冷却モジュールなどを含み得る。少なくとも1つの実施例では、ノードC.R.1116(1)~1116(N)の中からの1つ又は複数のノードC.R.は、上述のコンピューティング・リソースのうちの1つ又は複数を有するサーバであり得る。
【0115】
少なくとも1つの実施例では、グループ化されたコンピューティング・リソース1114は、1つ又は複数のラック(図示せず)内に格納されたノードC.R.の別個のグループ化、又は様々な地理的ロケーション(同じく図示せず)においてデータ・センタ中に格納された多くのラックを含み得る。グループ化されたコンピューティング・リソース1114内のノードC.R.の別個のグループ化は、1つ又は複数のワークロードをサポートするように構成されるか又は割り振られ得る、グループ化されたコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含み得る。少なくとも1つの実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のワークロードをサポートするためのコンピュート・リソースを提供するために1つ又は複数のラック内でグループ化され得る。少なくとも1つの実施例では、1つ又は複数のラックはまた、任意の数の電力モジュール、冷却モジュール、及びネットワーク・スイッチを、任意の組合せで含み得る。
【0116】
少なくとも1つの実施例では、リソース・オーケストレータ1112は、1つ又は複数のノードC.R.1116(1)~1116(N)及び/又はグループ化されたコンピューティング・リソース1114を構成するか、又はさもなければ、制御し得る。少なくとも1つの実施例では、リソース・オーケストレータ1112は、データ・センタ1100のためのソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含み得る。少なくとも1つの実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はそれらの何らかの組合せを含み得る。
【0117】
少なくとも1つの実施例では、図11に示されているように、フレームワーク層1120は、ジョブ・スケジューラ1122と、構成マネージャ1124と、リソース・マネージャ1126と、分散型ファイル・システム1128とを含む。少なくとも1つの実施例では、フレームワーク層1120は、ソフトウェア層1130のソフトウェア1132、及び/又はアプリケーション層1140の1つ又は複数のアプリケーション1142をサポートするためのフレームワークを含み得る。少なくとも1つの実施例では、ソフトウェア1132又は(1つ又は複数の)アプリケーション1142は、それぞれ、アマゾン・ウェブ・サービス、Google Cloud、及びMicrosoft Azureによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含み得る。少なくとも1つの実施例では、フレームワーク層1120は、限定はしないが、大規模データ処理(たとえば、「ビック・データ」)のために分散型ファイル・システム1128を利用し得るApache Spark(商標)(以下「Spark」)など、無料でオープンソースのソフトウェア・ウェブ・アプリケーション・フレームワークのタイプであり得る。少なくとも1つの実施例では、ジョブ・スケジューラ1122は、データ・センタ1100の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。少なくとも1つの実施例では、構成マネージャ1124は、ソフトウェア層1130、並びに大規模データ処理をサポートするためのSpark及び分散型ファイル・システム1128を含むフレームワーク層1120など、異なる層を構成することが可能であり得る。少なくとも1つの実施例では、リソース・マネージャ1126は、分散型ファイル・システム1128及びジョブ・スケジューラ1122をサポートするようにマッピングされたか又は割り振られた、クラスタ化された又はグループ化されたコンピューティング・リソースを管理することが可能であり得る。少なくとも1つの実施例では、クラスタ化された又はグループ化されたコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1110において、グループ化されたコンピューティング・リソース1114を含み得る。少なくとも1つの実施例では、リソース・マネージャ1126は、リソース・オーケストレータ1112と協調して、これらのマッピングされた又は割り振られたコンピューティング・リソースを管理し得る。
【0118】
少なくとも1つの実施例では、ソフトウェア層1130中に含まれるソフトウェア1132は、ノードC.R.1116(1)~1116(N)、グループ化されたコンピューティング・リソース1114、及び/又はフレームワーク層1120の分散型ファイル・システム1128の少なくとも部分によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、限定はしないが、インターネット・ウェブ・ページ検索ソフトウェアと、電子メール・ウイルス・スキャン・ソフトウェアと、データベース・ソフトウェアと、ストリーミング・ビデオ・コンテンツ・ソフトウェアとを含み得る。
【0119】
少なくとも1つの実施例では、アプリケーション層1140中に含まれる(1つ又は複数の)アプリケーション1142は、ノードC.R.1116(1)~1116(N)、グループ化されたコンピューティング・リソース1114、及び/又はフレームワーク層1120の分散型ファイル・システム1128の少なくとも部分によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、限定はしないが、任意の数のゲノミクス・アプリケーション、コグニティブ・コンピュート、及び、訓練又は推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む、機械学習アプリケーション、又は、1つ又は複数の実施例と併せて使用される他の機械学習アプリケーションを含み得る。
【0120】
少なくとも1つの実施例では、構成マネージャ1124、リソース・マネージャ1126、及びリソース・オーケストレータ1112のいずれかが、任意の技術的に実現可能な様式で獲得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己修正アクションを実装し得る。少なくとも1つの実施例では、自己修正アクションは、データ・センタ1100のデータ・センタ・オペレータを、不良の恐れのある構成を判定し、十分に利用されていない及び/又は性能の低いデータ・センタの部分を場合によっては回避することから解放し得る。
【0121】
少なくとも1つの実施例では、データ・センタ1100は、1つ又は複数の機械学習モデルを訓練するか、或いは、本明細書で説明される1つ又は複数の実施例による1つ又は複数の機械学習モデルを使用して情報を予測又は推論するためのツール、サービス、ソフトウェア又は他のリソースを含み得る。たとえば、少なくとも1つの実施例では、機械学習モデルは、データ・センタ1100に関して上記で説明されたソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練され得る。少なくとも1つの実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練された機械学習モデルは、本明細書で説明される1つ又は複数の訓練技法を通して計算された重みパラメータを使用することによって、データ・センタ1100に関して上記で説明されたリソースを使用して、情報を推論又は予測するために使用され得る。
【0122】
少なくとも1つの実施例では、データ・センタは、上記で説明されたリソースを使用して訓練及び/又は推論を実施するために、CPU、特定用途向け集積回路(ASIC)、GPU、DPU、FPGA、又は他のハードウェアを使用し得る。その上、上記で説明された1つ又は複数のソフトウェア及び/又はハードウェア・リソースは、画像認識、音声認識、又は他の人工知能サービスなど、ユーザが、情報を訓練するか又は情報の推論を実施することを可能にするためのサービスとして構成され得る。
【0123】
1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理1015は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図11のシステムにおいて使用され得る。
【0124】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合(overfitting)を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0125】
図12は、例示的なコンピュータ・システムを示すブロック図であり、例示的なコンピュータ・システムは、少なくとも1つの実施例による、命令を実行するための実行ユニットを含み得るプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SOC:system-on-a-chip)又はそれらの何らかの組合せをもつシステム1200であり得る。少なくとも1つの実施例では、コンピュータ・システム1200は、限定はしないが、本明細書で説明される実施例などにおいて、本開示による、プロセス・データのためのアルゴリズムを実施するための論理を含む実行ユニットを採用するための、プロセッサ1202などの構成要素を含み得る。少なくとも1つの実施例では、コンピュータ・システム1200は、カリフォルニア州サンタクララのIntel Corporationから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含み得るが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含む)他のシステムも使用され得る。少なくとも1つの実施例では、コンピュータ・システム1200は、ワシントン州レドモンドのMicrosoft Corporationから入手可能なWINDOWS(登録商標)オペレーティング・システムのあるバージョンを実行し得るが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースも使用され得る。
【0126】
実施例は、ハンドヘルド・デバイス及び組み込みアプリケーションなど、他のデバイスにおいて使用され得る。ハンドヘルド・デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」)、及びハンドヘルドPCを含む。少なくとも1つの実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」)、セット・トップ・ボックス、ネットワーク・ハブ、ワイド・エリア・ネットワーク(「WAN」)スイッチ、エッジ・デバイス、モノのインターネット(「IoT」:Internet-of-Things)デバイス、又は少なくとも1つの実施例による1つ又は複数の命令を実施し得る任意の他のシステムを含み得る。
【0127】
少なくとも1つの実施例では、コンピュータ・システム1200は、限定はしないが、プロセッサ1202を含み得、プロセッサ1202は、限定はしないが、本明細書で説明される技法による機械学習モデル訓練及び/又は推論を実施するための1つ又は複数の実行ユニット1208を含み得る。少なくとも1つの実施例では、コンピュータ・システム1200は、シングル・プロセッサ・デスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1200は、マルチプロセッサ・システムであり得る。少なくとも1つの実施例では、プロセッサ1202は、限定はしないが、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」:reduced instruction set computing)マイクロプロセッサ、超長命令語(「VLIW」:very long instruction word)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は、たとえばデジタル信号プロセッサなど、任意の他のプロセッサ・デバイスを含み得る。少なくとも1つの実施例では、プロセッサ1202は、プロセッサ・バス1210に結合され得、プロセッサ・バス1210は、プロセッサ1202とコンピュータ・システム1200中の他の構成要素との間でデータ信号を送信し得る。
【0128】
少なくとも1つの実施例では、プロセッサ1202は、限定はしないが、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1204を含み得る。少なくとも1つの実施例では、プロセッサ1202は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ1202の外部に存在し得る。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せをも含み得る。少なくとも1つの実施例では、レジスタ・ファイル1206は、限定はしないが、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタを含む様々なレジスタに、異なるタイプのデータを記憶し得る。
【0129】
少なくとも1つの実施例では、限定はしないが、整数演算及び浮動小数点演算を実施するための論理を含む実行ユニット1208も、プロセッサ1202中に存在し得る。少なくとも1つの実施例では、プロセッサ1202は、いくつかのマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」)をも含み得る。少なくとも1つの実施例では、実行ユニット1208は、パック命令セット1209に対処するための論理を含み得る。少なくとも1つの実施例では、パック命令セット1209を、命令を実行するための関連する回路要素とともに汎用プロセッサ1202の命令セットに含めることによって、多くのマルチメディア・アプリケーションによって使用される演算が、汎用プロセッサ1202中のパック・データを使用して実施され得る。1つ又は複数の実施例では、多くのマルチメディア・アプリケーションが、パック・データの演算を実施するためにプロセッサのデータ・バスの全幅を使用することによって加速され、より効率的に実行され得、これは、一度に1つのデータ要素ずつ1つ又は複数の演算を実施するために、プロセッサのデータ・バスにわたってより小さい単位のデータを転送する必要をなくし得る。
【0130】
少なくとも1つの実施例では、実行ユニット1208はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用され得る。少なくとも1つの実施例では、コンピュータ・システム1200は、限定はしないが、メモリ1220を含み得る。少なくとも1つの実施例では、メモリ1220は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装され得る。少なくとも1つの実施例では、メモリ1220は、プロセッサ1202によって実行され得るデータ信号によって表される(1つ又は複数の)命令1219及び/又はデータ1221を記憶し得る。
【0131】
少なくとも1つの実施例では、システム論理チップが、プロセッサ・バス1210及びメモリ1220に結合され得る。少なくとも1つの実施例では、システム論理チップは、限定はしないが、メモリ・コントローラ・ハブ(「MCH」)1216を含み得、プロセッサ1202は、プロセッサ・バス1210を介してMCH1216と通信し得る。少なくとも1つの実施例では、MCH1216は、命令及びデータ・ストレージのための、並びにグラフィックス・コマンド、データ及びテクスチャのストレージのための、高帯域幅メモリ経路1218をメモリ1220に提供し得る。少なくとも1つの実施例では、MCH1216は、プロセッサ1202と、メモリ1220と、コンピュータ・システム1200中の他の構成要素との間でデータ信号をダイレクトし、プロセッサ・バス1210と、メモリ1220と、システムI/O1222との間でデータ信号をブリッジし得る。少なくとも1つの実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供し得る。少なくとも1つの実施例では、MCH1216は、高帯域幅メモリ経路1218を通してメモリ1220に結合され得、グラフィックス/ビデオ・カード1212は、アクセラレーテッド・グラフィックス・ポート(「AGP」)相互接続1214を介してMCH1216に結合され得る。
【0132】
少なくとも1つの実施例では、コンピュータ・システム1200は、MCH1216をI/Oコントローラ・ハブ(「ICH」)1230に結合するためのプロプライエタリ・ハブ・インターフェース・バスである、システムI/O1222を使用し得る。少なくとも1つの実施例では、ICH1230は、ローカルI/Oバスを介していくつかのI/Oデバイスに直接接続を提供し得る。少なくとも1つの実施例では、ローカルI/Oバスは、限定はしないが、周辺機器をメモリ1220、チップセット、及びプロセッサ1202に接続するための高速I/Oバスを含み得る。実例は、限定はしないが、オーディオ・コントローラ1229と、ファームウェア・ハブ(「フラッシュBIOS」)1228と、ワイヤレス・トランシーバ1226と、データ・ストレージ1224と、ユーザ入力及びキーボード・インターフェース1225を含んでいるレガシーI/Oコントローラ1223と、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート1227と、いくつかの実施例では、データ処理ユニットを含み得るネットワーク・コントローラ1234とを含み得る。データ・ストレージ1224は、ハード・ディスク・ドライブ、フロッピー・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備え得る。
【0133】
少なくとも1つの実施例では、図12は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、図12は、例示的なシステム・オン・チップ(「SoC」)を示し得る。少なくとも1つの実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、コンピュータ・システム1200の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続される。
【0134】
1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理1015は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図12のシステムにおいて使用され得る。
【0135】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0136】
図13は、少なくとも1つの実施例による、プロセッサ1310を利用するための電子デバイス1300を示すブロック図である。少なくとも1つの実施例では、電子デバイス1300は、たとえば、限定はしないが、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、エッジ・デバイス、IoTデバイス、又は任意の他の好適な電子デバイスであり得る。
【0137】
少なくとも1つの実施例では、システム1300は、限定はしないが、任意の好適な数又は種類の構成要素、周辺機器、モジュール、又はデバイスに通信可能に結合されたプロセッサ1310を含み得る。少なくとも1つの実施例では、プロセッサ1310は、1℃バス、システム管理バス(「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つの実施例では、図13は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、図13は、例示的なシステム・オン・チップ(「SoC」)を示し得る。少なくとも1つの実施例では、図13に示されているデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、図13の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続される。
【0138】
少なくとも1つの実施例では、図13は、ディスプレイ1324、タッチ・スクリーン1325、タッチ・パッド1330、ニア・フィールド通信ユニット(「NFC」:Near Field Communication)1345、センサ・ハブ1340、熱センサ1346、エクスプレス・チップセット(「EC」:Express Chipset)1335、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1338、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1322、DSP1360、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)又はハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1320、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network)1350、Bluetoothユニット1352、ワイヤレス・ワイド・エリア・ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network)1356、全地球測位システム(GPS:Global Positioning System)1355、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1354、及び/或いは、たとえばLPDDR3規格において実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1315を含み得る。これらの構成要素は、各々、任意の好適な様式で実装され得る。
【0139】
少なくとも1つの実施例では、上記で説明された構成要素を通して、他の構成要素がプロセッサ1310に通信可能に結合され得る。少なくとも1つの実施例では、加速度計1341と、周囲光センサ(「ALS」:Ambient Light Sensor)1342と、コンパス1343と、ジャイロスコープ1344とが、センサ・ハブ1340に通信可能に結合され得る。少なくとも1つの実施例では、熱センサ1339と、ファン1337と、キーボード1336と、タッチ・パッド1330とが、EC1335に通信可能に結合され得る。少なくとも1つの実施例では、スピーカー1363と、ヘッドフォン1364と、マイクロフォン(「mic」)1365とが、オーディオ・ユニット(「オーディオ・コーデック及びクラスdアンプ」)1362に通信可能に結合され得、オーディオ・ユニット1362は、DSP1360に通信可能に結合され得る。少なくとも1つの実施例では、オーディオ・ユニット1364は、たとえば、限定はしないが、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスD増幅器を含み得る。少なくとも1つの実施例では、SIMカード(「SIM」)1357は、WWANユニット1356に通信可能に結合され得る。少なくとも1つの実施例では、WLANユニット1350及びBluetoothユニット1352などの構成要素、並びにWWANユニット1356は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)において実装され得る。
【0140】
1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理1015は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図13のシステムにおいて使用され得る。
【0141】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0142】
図14は、少なくとも1つの実施例による、処理システムのブロック図である。少なくとも1つの実施例では、システム1400は、1つ又は複数のプロセッサ1402と1つ又は複数のグラフィックス・プロセッサ1408とを含み、単一プロセッサ・デスクトップ・システム、マルチプロセッサ・ワークステーション・システム、或いは多数のプロセッサ1402又はプロセッサ・コア1407を有するサーバ・システムであり得る。少なくとも1つの実施例では、システム1400は、モバイル・デバイス、ハンドヘルド・デバイス、エッジ・デバイス、又は組み込みデバイスにおいて使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0143】
少なくとも1つの実施例では、システム1400は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディア・コンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、ハンドヘルド・ゲーム・コンソール、又はオンライン・ゲーム・コンソールを含み得るか、或いはそれらの内部に組み込まれ得る。少なくとも1つの実施例では、システム1400は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス又はモバイル・インターネット・デバイスである。少なくとも1つの実施例では、処理システム1400はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、又は仮想現実デバイスなどのウェアラブル・デバイスを含み得るか、それらと結合し得るか、又はそれらの内部に組み込まれ得る。少なくとも1つの実施例では、処理システム1400は、1つ又は複数のプロセッサ1402と、1つ又は複数のグラフィックス・プロセッサ1408によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0144】
少なくとも1つの実施例では、1つ又は複数のプロセッサ1402は、各々、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実施する命令を処理するための1つ又は複数のプロセッサ・コア1407を含む。少なくとも1つの実施例では、1つ又は複数のプロセッサ・コア1407の各々は、特定の命令セット1409を処理するように構成される。少なくとも1つの実施例では、命令セット1409は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にし得る。少なくとも1つの実施例では、プロセッサ・コア1407は、各々、異なる命令セット1409を処理し得、命令セット1409は、他の命令セットのエミュレーションを容易にするための命令を含み得る。少なくとも1つの実施例では、プロセッサ・コア1407はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含み得る。
【0145】
少なくとも1つの実施例では、プロセッサ1402はキャッシュ・メモリ1404を含む。少なくとも1つの実施例では、プロセッサ1402は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ1402の様々な構成要素の間で共有される。少なくとも1つの実施例では、プロセッサ1402はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC:Last Level Cache))(図示せず)を使用し、外部キャッシュは、知られているキャッシュ・コヒーレンシ技法を使用してプロセッサ・コア1407の間で共有され得る。少なくとも1つの実施例では、追加として、レジスタ・ファイル1406がプロセッサ1402中に含まれ、レジスタ・ファイル1406は、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタ)を含み得る。少なくとも1つの実施例では、レジスタ・ファイル1406は、汎用レジスタ又は他のレジスタを含み得る。
【0146】
少なくとも1つの実施例では、1つ又は複数のプロセッサ1402は、アドレス、データ、又は制御信号などの通信信号を、プロセッサ1402とシステム1400中の他の構成要素との間で送信するために、1つ又は複数のインターフェース・バス1410と結合される。少なくとも1つの実施例では、1つの実施例におけるインターフェース・バス1410は、ダイレクト・メディア・インターフェース(DMI:Direct Media Interface)バスのバージョンなどのプロセッサ・バスであり得る。少なくとも1つの実施例では、インターフェース1410は、DMIバスに限定されず、1つ又は複数の周辺構成要素相互接続バス(たとえば、PCI、PCI Express)、メモリ・バス、又は他のタイプのインターフェース・バスを含み得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1402は、統合されたメモリ・コントローラ1416と、プラットフォーム・コントローラ・ハブ1430とを含む。少なくとも1つの実施例では、メモリ・コントローラ1416は、メモリ・デバイスとシステム1400の他の構成要素との間の通信を容易にし、プラットフォーム・コントローラ・ハブ(PCH:platform controller hub)1430は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0147】
少なくとも1つの実施例では、メモリ・デバイス1420は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとして働くのに好適な性能を有する何らかの他のメモリ・デバイスであり得る。少なくとも1つの実施例では、メモリ・デバイス1420は、1つ又は複数のプロセッサ1402がアプリケーション又はプロセスを実行するときの使用のためのデータ1422及び命令1421を記憶するために、システム1400のためのシステム・メモリとして動作し得る。少なくとも1つの実施例では、メモリ・コントローラ1416はまた、随意の外部グラフィックス・プロセッサ1412と結合し、外部グラフィックス・プロセッサ1412は、グラフィックス動作及びメディア動作を実施するために、プロセッサ1402中の1つ又は複数のグラフィックス・プロセッサ1408と通信し得る。少なくとも1つの実施例では、ディスプレイ・デバイス1411は、(1つ又は複数の)プロセッサ1402に接続し得る。少なくとも1つの実施例では、ディスプレイ・デバイス1411は、モバイル電子デバイス又はラップトップ・デバイスの場合のような内部ディスプレイ・デバイス、或いは、ディスプレイ・インターフェース(たとえば、DisplayPortなど)を介して取り付けられた外部ディスプレイ・デバイスのうちの1つ又は複数を含み得る。少なくとも1つの実施例では、ディスプレイ・デバイス1411は、仮想現実(VR:virtual reality)アプリケーション又は拡張現実(AR:augmented reality)アプリケーションにおいて使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD:head mounted display)を含み得る。
【0148】
少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1430は、周辺機器が高速I/Oバスを介してメモリ・デバイス1420及びプロセッサ1402に接続することを可能にする。少なくとも1つの実施例では、I/O周辺機器は、限定はしないが、オーディオ・コントローラ1446と、ネットワーク・コントローラ1434と、ファームウェア・インターフェース1428と、ワイヤレス・トランシーバ1426と、タッチ・センサ1425と、データ・ストレージ・デバイス1424(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)とを含む。少なくとも1つの実施例では、データ・ストレージ・デバイス1424は、ストレージ・インターフェース(たとえば、SATA)を介して、又は周辺構成要素相互接続バス(たとえば、PCI、PCI Express)などの周辺バスを介して、接続し得る。少なくとも1つの実施例では、タッチ・センサ1425は、タッチ・スクリーン・センサ、圧力センサ、又は指紋センサを含み得る。少なくとも1つの実施例では、ワイヤレス・トランシーバ1426は、Wi-Fiトランシーバ、Bluetoothトランシーバ、或いは3G、4G、又はロング・ターム・エボリューション(LTE:Long Term Evolution)トランシーバなどのモバイル・ネットワーク・トランシーバであり得る。少なくとも1つの実施例では、ファームウェア・インターフェース1428は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI:unified extensible firmware interface)であり得る。少なくとも1つの実施例では、ネットワーク・コントローラ1434は、ワイヤード・ネットワークへのネットワーク接続を可能にし得る。少なくとも1つの実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス1410と結合する。少なくとも1つの実施例では、オーディオ・コントローラ1446は、マルチチャネル高精細度オーディオ・コントローラである。少なくとも1つの実施例では、システム1400は、レガシー(たとえば、パーソナル・システム2(PS/2:Personal System 2))デバイスをシステムに結合するための随意のレガシーI/Oコントローラ1440を含む。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1430は、キーボードとマウス1443との組合せ、カメラ1444、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ1442接続入力デバイスにも接続し得る。
【0149】
少なくとも1つの実施例では、メモリ・コントローラ1416及びプラットフォーム・コントローラ・ハブ1430のインスタンスが、外部グラフィックス・プロセッサ1411などの慎重な外部グラフィックス・プロセッサに組み込まれ得る。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1430及び/又はメモリ・コントローラ1416は、1つ又は複数のプロセッサ1402の外部にあり得る。たとえば、少なくとも1つの実施例では、システム1400は、外部のメモリ・コントローラ1416とプラットフォーム・コントローラ・ハブ1430とを含み得、それらは、(1つ又は複数の)プロセッサ1402と通信しているシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺コントローラ・ハブとして構成され得る。
【0150】
1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理1015の部分又はすべてが、グラフィックス・プロセッサ1408に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、グラフィックス・プロセッサにおいて具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、図10A又は図10Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサのALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0151】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0152】
図15は、少なくとも1つの実施例による、1つ又は複数のプロセッサ・コア1502A~1502Nと、統合されたメモリ・コントローラ1513と、統合されたグラフィックス・プロセッサ1508とを有するプロセッサ1500のブロック図である。少なくとも1つの実施例では、プロセッサ1500は、破線ボックスによって表される追加コア1502Nまでの追加コアを含み得る。少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nの各々は、1つ又は複数の内部キャッシュ・ユニット1504A~1504Nを含む。少なくとも1つの実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット1506へのアクセスを有する。
【0153】
少なくとも1つの実施例では、内部キャッシュ・ユニット1504A~1504Nと共有キャッシュ・ユニット1506とは、プロセッサ1500内のキャッシュ・メモリ階層を表す。少なくとも1つの実施例では、キャッシュ・メモリ・ユニット1504A~1504Nは、各プロセッサ・コア内の命令及びデータ・キャッシュの少なくとも1つのレベル、及びレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含み得、ここで、外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも1つの実施例では、キャッシュ・コヒーレンシ論理は、様々なキャッシュ・ユニット1506及び1504A~1504N間でコヒーレンシを維持する。
【0154】
少なくとも1つの実施例では、プロセッサ1500は、1つ又は複数のバス・コントローラ・ユニット1516とシステム・エージェント・コア1510とのセットをも含み得る。少なくとも1つの実施例では、1つ又は複数のバス・コントローラ・ユニット1516は、1つ又は複数のPCI又はPCIエクスプレス・バスなどの周辺バスのセットを管理する。少なくとも1つの実施例では、システム・エージェント・コア1510は、様々なプロセッサ構成要素のための管理機能性を提供する。少なくとも1つの実施例では、システム・エージェント・コア1510は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合されたメモリ・コントローラ1513を含む。
【0155】
少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nのうちの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも1つの実施例では、システム・エージェント・コア1510は、マルチスレッド処理中にコア1502A~1502Nを協調させ、動作させるための構成要素を含む。少なくとも1つの実施例では、システム・エージェント・コア1510は、追加として、電力制御ユニット(PCU:power control unit)を含み得、PCUは、プロセッサ・コア1502A~1502N及びグラフィックス・プロセッサ1508の1つ又は複数の電力状態を調節するための論理及び構成要素を含む。
【0156】
少なくとも1つの実施例では、プロセッサ1500は、追加として、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ1508を含む。少なくとも1つの実施例では、グラフィックス・プロセッサ1508は、共有キャッシュ・ユニット1506、及び1つ又は複数の統合されたメモリ・コントローラ1513を含むシステム・エージェント・コア1510と結合する。少なくとも1つの実施例では、システム・エージェント・コア1510は、1つ又は複数の結合されたディスプレイへのグラフィックス・プロセッサ出力を駆動するためのディスプレイ・コントローラ1511をも含む。少なくとも1つの実施例では、ディスプレイ・コントローラ1511はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ1508と結合された別個のモジュールであり得るか、又はグラフィックス・プロセッサ1508内に組み込まれ得る。
【0157】
少なくとも1つの実施例では、プロセッサ1500の内部構成要素を結合するために、リング・ベースの相互接続ユニット1512が使用される。少なくとも1つの実施例では、ポイントツーポイント相互接続、切替え相互接続、又は他の技法などの代替相互接続ユニットが使用され得る。少なくとも1つの実施例では、グラフィックス・プロセッサ1508は、I/Oリンク1513を介してリング相互接続1512と結合する。
【0158】
少なくとも1つの実施例では、I/Oリンク1513は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール1518との間の通信を容易にするオン・パッケージI/O相互接続を含む、複数の種類のI/O相互接続のうちの少なくとも1つを表す。少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nの各々と、グラフィックス・プロセッサ1508とは、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール1518を使用する。
【0159】
少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nは、命令セット・アーキテクチャ(ISA:instruction set architecture)という観点から異種であり、ここで、プロセッサ・コア1502A~1502Nのうちの1つ又は複数は、共通の命令セットを実行し、プロセッサ・コア1502A~1502Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも1つの実施例では、プロセッサ・コア1502A~1502Nは、マイクロアーキテクチャという観点から異種であり、ここで、電力消費量が比較的高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数の電力コアと結合する。少なくとも1つの実施例では、プロセッサ1500は、1つ又は複数のチップ上に、又はSoC集積回路として実装され得る。
【0160】
1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理1015の部分又はすべてが、プロセッサ1500に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、グラフィックス・プロセッサ1508、(1つ又は複数の)グラフィックス・コア1502A~1502N、又は図15中の他の構成要素において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、図10A又は図10Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ1500のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0161】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0162】
図16は、少なくとも1つの実施例による、画像処理及び推論パイプラインを生成及び導入するプロセス1600のための例示的なデータ・フロー図である。少なくとも1つの実施例では、プロセス1600は、1つ又は複数の施設1602において、撮像デバイス、処理デバイス、及び/又は他のデバイス・タイプとともに使用するために導入され得る。プロセス1600は、訓練システム1604及び/又は導入システム1606内で実行され得る。少なくとも1つの実施例では、訓練システム1604は、導入システム1606における使用のための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装を実施するために使用され得る。少なくとも1つの実施例では、導入システム1606は、施設1602におけるインフラストラクチャ要件を低減するために、処理及びコンピュート・リソースを分散型コンピューティング環境の間でオフロードするように構成され得る。少なくとも1つの実施例では、パイプライン中の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム1606のサービス(たとえば、推論、視覚化、コンピュート、AIなど)を使用するか、又はコールし得る。
【0163】
少なくとも1つの実施例では、先進処理及び推論パイプラインにおいて使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実施するために機械学習モデル又は他のAIを使用し得る。少なくとも1つの実施例では、機械学習モデルは、施設1602において生成された(及び、施設1602において1つ又は複数のピクチャ・アーカイブ及び通信システム(PACS:picture archiving and communication system)サーバに記憶された)(撮像データなどの)データ1608を使用して、施設1602において訓練され得るか、1つ又は複数の別の施設からの撮像又はシーケンシング・データ1608を使用して訓練され得るか、或いはそれらの組合せであり得る。少なくとも1つの実施例では、訓練システム1604は、導入システム1606のための実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースを提供するために使用され得る。
【0164】
少なくとも1つの実施例では、モデル・レジストリ1624は、バージョン管理及び物体メタデータをサポートし得る物体ストレージによってバックアップされ得る。少なくとも1つの実施例では、物体ストレージは、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図17のクラウド1726)互換アプリケーション・プログラミング・インターフェース(API:application programming interface)を通してアクセス可能であり得る。少なくとも1つの実施例では、モデル・レジストリ1624内の機械学習モデルは、システムの開発者又はパートナーがAPIと対話することによって、アップロード、リスト化、修正、又は削除され得る。少なくとも1つの実施例では、APIは、適切な資格をもつユーザがモデルをアプリケーションに関連付けることを可能にする方法へのアクセスを提供し得、それにより、モデルは、アプリケーションのコンテナ化されたインスタンス化の実行の一部として実行され得る。
【0165】
少なくとも1つの実施例では、訓練パイプライン1704(図17)は、施設1602がそれ自体の機械学習モデルを訓練しているか、或いは、最適化又は更新される必要がある既存の機械学習モデルを有するシナリオを含み得る。少なくとも1つの実施例では、(1つ又は複数の)撮像デバイス、シーケンシング・デバイス、及び/又は他のデバイス・タイプによって生成された撮像データ1608が受信され得る。少なくとも1つの実施例では、撮像データ1608が受信されると、機械学習モデルについてのグランド・トゥルース・データとして使用されるべき撮像データ1608に対応するアノテーションを生成するのを補助するために、AI支援アノテーション1610が使用され得る。少なくとも1つの実施例では、AI支援アノテーション1610は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含み得、1つ又は複数の機械学習モデルは、(たとえば、いくつかのデバイスからの)いくつかのタイプの撮像データ1608に対応するアノテーションを生成するように訓練され得る。少なくとも1つの実施例では、次いで、AI支援アノテーション1610は、グランド・トゥルース・データを生成するために、直接使用され得るか、或いは、アノテーション・ツールを使用して調整又は微調整され得る。少なくとも1つの実施例では、AI支援アノテーション1610、ラベル付きクリニック・データ1612、又はそれらの組合せが、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、訓練された機械学習モデルは出力モデル1616と呼ばれることがあり、本明細書で説明されるように、導入システム1606によって使用され得る。
【0166】
少なくとも1つの実施例では、訓練パイプライン1704(図17)は、施設1602が、導入システム1606中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とするが、施設1602は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)シナリオを含み得る。少なくとも1つの実施例では、既存の機械学習モデルが、モデル・レジストリ1624から選択され得る。少なくとも1つの実施例では、モデル・レジストリ1624は、撮像データに対して様々な異なる推論タスクを実施するように訓練された機械学習モデルを含み得る。少なくとも1つの実施例では、モデル・レジストリ1624中の機械学習モデルは、施設1602とは異なる施設(たとえば、離れた場所にある施設)からの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、機械学習モデルは、1つのロケーション、2つのロケーション、又は任意の数のロケーションからの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、特定のロケーションからの撮像データに関して訓練されているとき、訓練は、そのロケーションにおいて行われ得るか、或いは少なくとも、撮像データの機密性を保護するか又は撮像データが構外へ転送されるのを制限する様式で、行われ得る。少なくとも1つの実施例では、1つのロケーションにおいてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ1624に追加され得る。少なくとも1つの実施例では、次いで、機械学習モデルは、任意の数の他の施設において再訓練又は更新され得、再訓練又は更新されたモデルが、モデル・レジストリ1624において利用可能にされ得る。少なくとも1つの実施例では、次いで、機械学習モデルは、モデル・レジストリ1624から選択され得、出力モデル1616と呼ばれることがあり、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施するために導入システム1606において使用され得る。
【0167】
少なくとも1つの実施例では、訓練パイプライン1704(図17)、シナリオは、施設1602が、導入システム1606中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とすることを含み得るが、施設1602は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)。少なくとも1つの実施例では、モデル・レジストリ1624から選択された機械学習モデルは、母集団、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題における差異のために、施設1602において生成される撮像データ1608のために微調整又は最適化されないことがある。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用されるべき撮像データ1608に対応するアノテーションを生成するのを補助するために、AI支援アノテーション1610が使用され得る。少なくとも1つの実施例では、ラベル付きデータ1612が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練1614と呼ばれることがある。少なくとも1つの実施例では、モデル訓練1614、たとえばAI支援アノテーション1610、ラベル付きクリニック・データ1612、又はそれらの組合せは、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、訓練された機械学習モデルは出力モデル1616と呼ばれることがあり、本明細書で説明されるように、導入システム1606によって使用され得る。
【0168】
少なくとも1つの実施例では、導入システム1606は、ソフトウェア1618、サービス1620、ハードウェア1622、並びに/又は他の構成要素、特徴、及び機能性を含み得る。少なくとも1つの実施例では、導入システム1606は、ソフトウェア「スタック」を含み得、それにより、ソフトウェア1618は、サービス1620の上に築かれ得、サービス1620を使用して処理タスクのいくつか又はすべてを実施し得、サービス1620及びソフトウェア1618は、ハードウェア1622の上に築かれ、ハードウェア1622を使用して、導入システム1606の処理、ストレージ、及び/又は他のコンピュート・タスクを実行し得る。少なくとも1つの実施例では、ソフトウェア1618は、任意の数の異なるコンテナを含み得、各コンテナは、アプリケーションのインスタンス化を実行し得る。少なくとも1つの実施例では、各アプリケーションは、先進処理及び推論パイプライン中の1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実施し得る。少なくとも1つの実施例では、先進処理及び推論パイプラインは、(たとえば、使用可能なデータ・タイプに出力をコンバートするために)パイプラインを通して処理した後に、各コンテナによる使用及び/又は施設1602による使用のための撮像データを受信及び構成するコンテナに加えて、撮像データ1608を処理するために所望されるか又は必要とされる異なるコンテナの選択に基づいて、定義され得る。少なくとも1つの実施例では、(たとえば、パイプラインを作り上げる)ソフトウェア1618内のコンテナの組合せは、(本明細書でより詳細に説明されるように)仮想機器と呼ばれることがあり、仮想機器は、サービス1620及びハードウェア1622を活用して、コンテナにおいてインスタンス化されたアプリケーションのいくつか又はすべての処理タスクを実行し得る。
【0169】
少なくとも1つの実施例では、データ処理パイプラインは、推論要求(たとえば、導入システム1606のユーザからの要求)に応答して、特定のフォーマットで入力データ(たとえば、撮像データ1608)を受信し得る。少なくとも1つの実施例では、入力データは、1つ又は複数の撮像デバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表し得る。少なくとも1つの実施例では、データは、1つ又は複数のアプリケーションによる処理のためにデータを準備するために、データ処理パイプラインの一部としての事前処理を受け得る。少なくとも1つの実施例では、次のアプリケーションのための出力データを準備するために、並びに/或いは、(たとえば、推論要求への応答としての)ユーザによる送信及び/又は使用のための出力データを準備するために、パイプラインの1つ又は複数の推論タスク又は他の処理タスクの出力に対して後処理が実施され得る。少なくとも1つの実施例では、推論タスクは、訓練システム1604の出力モデル1616を含み得る、訓練された又は導入されたニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実施され得る。
【0170】
少なくとも1つの実施例では、データ処理パイプラインのタスクは、(1つ又は複数の)コンテナ中にカプセル化され得、(1つ又は複数の)コンテナは、各々、アプリケーションの個別の完全に機能的なインスタンス化と、機械学習モデルを参照することが可能である仮想化コンピューティング環境とを表す。少なくとも1つの実施例では、コンテナ又はアプリケーションは、(本明細書でより詳細に説明される)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)エリアに公開され得、訓練された又は導入されたモデルは、モデル・レジストリ1624に記憶され、1つ又は複数のアプリケーションに関連付けられ得る。少なくとも1つの実施例では、アプリケーションの画像(たとえば、コンテナ画像)は、コンテナ・レジストリにおいて利用可能であり得、パイプラインにおける導入のためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムによる使用のためのアプリケーションのインスタンス化のためのコンテナを生成するために使用され得る。
【0171】
少なくとも1つの実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実施するためのアプリケーションを(たとえばコンテナとして)開発、公開、及び記憶し得る。少なくとも1つの実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナがシステムに準拠するか又はシステムと互換性があることを確実にするために)システムに関連付けられたソフトウェア開発キット(SDK:software development kit)を使用して実施され得る。少なくとも1つの実施例では、開発されたアプリケーションは、システム(たとえば、図17のシステム1700)としてサービス1620のうちの少なくともいくつかをサポートし得るSDKを用いて、ローカルに(たとえば、第1の施設において、第1の施設からのデータに対して)テストされ得る。少なくとも1つの実施例では、DICOM物体は、1つから数百個の画像又は他のデータ・タイプをどこにでも含んでいることがあるので、及びデータの変動により、開発者は、入って来るデータの抽出及び準備を管理すること(たとえば、アプリケーションのための構築物を設定すること、事前処理をアプリケーションに組み込むことなど)について責任を負うことがある。少なくとも1つの実施例では、システム1700によって(たとえば、精度について)検証されると、アプリケーションは、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクを実施するために、ユーザによる選択及び/又は実装のためにコンテナ・レジストリにおいて利用可能になり得る。
【0172】
少なくとも1つの実施例では、次いで、開発者は、アプリケーション又はコンテナを、システム(たとえば、図17のシステム1700)のユーザによるアクセス及び使用のためにネットワークを通して共有し得る。少なくとも1つの実施例では、完成した及び検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶され得、関連する機械学習モデルは、モデル・レジストリ1624に記憶され得る。少なくとも1つの実施例では、推論又は画像処理要求を提供する要求元エンティティは、アプリケーション、コンテナ、データセット、機械学習モデルなどについてコンテナ・レジストリ及び/又はモデル・レジストリ1624をブラウズし、データ処理パイプライン中に含めるための要素の所望の組合せを選択し、撮像処理要求をサブミットし得る。少なくとも1つの実施例では、要求は、要求を実施するために必要である入力データ(及び、いくつかの実例では、関連する患者データ)を含み得、並びに/或いは、要求を処理する際に実行されるべき(1つ又は複数の)アプリケーション及び/又は機械学習モデルの選択を含み得る。少なくとも1つの実施例では、次いで、要求は、データ処理パイプラインの処理を実施するために導入システム1606(たとえば、クラウド)の1つ又は複数の構成要素に渡され得る。少なくとも1つの実施例では、導入システム1606による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ1624からの選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含み得る。少なくとも1つの実施例では、パイプラインによって結果が生成されると、結果は、参照のために(たとえば、ローカルの、構内のワークステーション又は端末上で実行している視聴アプリケーション・スイートにおいて視聴するために)ユーザに返され得る。
【0173】
少なくとも1つの実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を補助するために、サービス1620が活用され得る。少なくとも1つの実施例では、サービス1620は、コンピュート・サービス、人工知能(AI:artificial intelligence)サービス、視覚化サービス、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、サービス1620は、ソフトウェア1618中の1つ又は複数のアプリケーションに共通である機能性を提供し得、したがって、機能性は、アプリケーションによってコール又は活用され得るサービスに対して抽象化され得る。少なくとも1つの実施例では、サービス1620によって提供される機能性は、動的に及びより効率的に稼働し得、また、(たとえば、並列コンピューティング・プラットフォーム1730(図17)を使用して)アプリケーションが並列にデータを処理することを可能にすることによって、良好にスケーリングし得る。少なくとも1つの実施例では、サービス1620によって与えられる同じ機能性を共有する各アプリケーションが、サービス1620のそれぞれのインスタンスを有することを必要とされるのではなく、サービス1620は、様々なアプリケーション間で及びそれらの間で共有され得る。少なくとも1つの実施例では、サービスは、非限定的な実例として、検出又はセグメント化タスクを実行するために使用され得る推論サーバ又はエンジンを含み得る。少なくとも1つの実施例では、機械学習モデル訓練及び/又は再訓練能力(capability)を提供し得るモデル訓練サービスが含まれ得る。少なくとも1つの実施例では、GPU加速データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)抽出、リサイジング、スケーリング、及び/又は他の拡張を提供し得るデータ拡張サービスがさらに含まれ得る。少なくとも1つの実施例では、2次元(2D)及び/又は3次元(3D)のモデルにリアル感を追加するために、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を追加し得る視覚化サービスが使用され得る。少なくとも1つの実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを提供する仮想機器サービスが含まれ得る。
【0174】
少なくとも1つの実施例では、サービス1620がAIサービス(たとえば、推論サービス)を含む場合、1つ又は複数の機械学習モデルは、(1つ又は複数の)機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)を(たとえば、APIコールとして)コールすることによって、実行され得る。少なくとも1つの実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、アプリケーションは、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実施するための機械学習モデルを実行するように、推論サービスをコールし得る。少なくとも1つの実施例では、セグメント化アプリケーションと異常検出アプリケーションとを含む先進処理及び推論パイプラインを実装するソフトウェア1618は、1つ又は複数の推論タスクを実施するために各アプリケーションが同じ推論サービスをコールし得るので、合理化され得る。
【0175】
少なくとも1つの実施例では、ハードウェア1622は、GPU、CPU、DPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含み得る。少なくとも1つの実施例では、異なるタイプのハードウェア1622が、導入システム1606中のソフトウェア1618及びサービス1620の効率的で専用のサポートを提供するために使用され得る。少なくとも1つの実施例では、画像処理及び生成の効率、精度、及び有効性を改善するために、AI/深層学習システム内、クラウド・システム中、及び/又は導入システム1606の他の処理構成要素中で、ローカルで(たとえば、施設1602において)処理するためのGPU処理の使用が実装され得る。少なくとも1つの実施例では、ソフトウェア1618及び/又はサービス1620は、非限定的な実例として、深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化され得る。少なくとも1つの実施例では、導入システム1606及び/又は訓練システム1604のコンピューティング環境の少なくとも一部は、データセンタの1つ又は複数のスーパーコンピュータ又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアとの組合せ)を用いて実行され得る。少なくとも1つの実施例では、ハードウェア1622は、任意の数のGPUを含み得、それらのGPUは、本明細書で説明されるように、データの並列処理を実施するためにコールされ得る。少なくとも1つの実施例では、クラウド・プラットフォームは、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化実行のためのGPU処理をさらに含み得る。少なくとも1つの実施例では、クラウド・プラットフォームは、ネットワークを介して、及び/或いはネットワーク・コントローラ又は他のネットワーク・インターフェースを通して受信されたデータを直接1つ又は複数のGPU(たとえば、それのメモリ)に送信するためのDPU処理をさらに含み得る。少なくとも1つの実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステム上で提供される)(1つ又は複数の)AI/深層学習スーパーコンピュータ及び/又はGPU最適化ソフトウェアを、ハードウェア抽象化及びスケーリング・プラットフォームとして使用して、実行され得る。少なくとも1つの実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合し得る。
【0176】
図17は、少なくとも1つの実施例による、撮像導入パイプラインを生成及び導入するための例示的なシステム1700のためのシステム図である。少なくとも1つの実施例では、システム1700は、図16のプロセス1600、並びに/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用され得る。少なくとも1つの実施例では、システム1700は、訓練システム1604と導入システム1606とを含み得る。少なくとも1つの実施例では、訓練システム1604及び導入システム1606は、本明細書で説明されるように、ソフトウェア1618、サービス1620、及び/又はハードウェア1622を使用して実装され得る。
【0177】
少なくとも1つの実施例では、システム1700(たとえば、訓練システム1604及び/又は導入システム1606)は、(たとえば、クラウド1726を使用する)クラウド・コンピューティング環境において実装され得る。少なくとも1つの実施例では、システム1700は、ヘルスケア・サービス施設に関してローカルに、又はクラウド・コンピューティング・リソースとローカル・コンピューティング・リソースの両方の組合せとして、実装され得る。少なくとも1つの実施例では、クラウド1726中のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを通して、許可されたユーザに限定され得る。少なくとも1つの実施例では、セキュリティ・プロトコルはウェブ・トークンを含み得、ウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)サービスによって署名され得、適切な許可を持ち得る。少なくとも1つの実施例では、(本明細書で説明される)仮想機器のAPI、又はシステム1700の他のインスタンス化は、対話について検査又は許可されたパブリックIPのセットに限定され得る。
【0178】
少なくとも1つの実施例では、システム1700の様々な構成要素は、ワイヤード及び/又はワイヤレス通信プロトコルを介して、限定はしないがローカル・エリア・ネットワーク(LAN)及び/又はワイド・エリア・ネットワーク(WAN)を含む様々な異なるネットワーク・タイプのいずれかを使用して、互いの間で通信し得る。少なくとも1つの実施例では、(たとえば、推論要求を送信するための、推論要求の結果を受信するためのなど)施設とシステム1700の構成要素との間の通信は、(1つ又は複数の)データ・バス、ワイヤレス・データ・プロトコル(Wi-Fi)、ワイヤード・データ・プロトコル(たとえば、イーサネット)などを介して通信され得る。
【0179】
少なくとも1つの実施例では、訓練システム1604は、図16に関して本明細書で説明されたものと同様の訓練パイプライン1704を実行し得る。少なくとも1つの実施例では、1つ又は複数の機械学習モデルが導入システム1606によって導入パイプライン1710において使用されるべきである場合、訓練パイプライン1704は、1つ又は複数の(たとえば、事前訓練された)モデルを訓練又は再訓練し、並びに/或いは、事前訓練されたモデル1706のうちの1つ又は複数を(たとえば、再訓練又は更新の必要なしに)実装するために、使用され得る。少なくとも1つの実施例では、訓練パイプライン1704の結果として、(1つ又は複数の)出力モデル1616が生成され得る。少なくとも1つの実施例では、訓練パイプライン1704は、限定はしないが、撮像データ(又は他の入力データ)コンバージョン又は適応など、任意の数の処理ステップを含み得る。少なくとも1つの実施例では、導入システム1606によって使用される異なる機械学習モデルについて、異なる訓練パイプライン1704が使用され得る。少なくとも1つの実施例では、図16に関して説明された第1の実例と同様の訓練パイプライン1704は、第1の機械学習モデルのために使用され得、図16に関して説明された第2の実例と同様の訓練パイプライン1704は、第2の機械学習モデルのために使用され得、図16に関して説明された第3の実例と同様の訓練パイプライン1704は、第3の機械学習モデルのために使用され得る。少なくとも1つの実施例では、各それぞれの機械学習モデルについて何が必要とされるかに応じて、訓練システム1604内のタスクの任意の組合せが使用され得る。少なくとも1つの実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練され、導入の準備ができていることがあり、したがって、機械学習モデルは、訓練システム1604によるいかなる処理をも受けないことがあり、導入システム1606によって実装され得る。
【0180】
少なくとも1つの実施例では、(1つ又は複数の)出力モデル1616及び/又は(1つ又は複数の)事前訓練されたモデル1706は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含み得る。少なくとも1つの実施例では、及び限定はしないが、システム1700によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、判定ツリー、サポート・ベクター・マシン(SVM)、単純ベイズ、k近傍法(Knn:k-nearest neighbor)、k平均クラスタリング、ランダム・フォレスト、次元低減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、リカレント、パーセプトロン、長/短期メモリ(LSTM:Long/Short Term Memory)、ホップフィールド、ボルツマン、深層信念、逆畳み込み、敵対的生成、液体状態機械など)を使用する(1つ又は複数の)機械学習モデル、及び/又は他のタイプの機械学習モデルを含み得る。
【0181】
少なくとも1つの実施例では、訓練パイプライン1704は、少なくとも図16Bに関して本明細書でより詳細に説明されるように、AI支援アノテーションを含み得る。少なくとも1つの実施例では、ラベル付きデータ1612(たとえば、従来のアノテーション)は、任意の数の技法によって生成され得る。少なくとも1つの実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD:computer aided design)プログラム、ラベル付けプログラム、グランド・トゥルースのためのアノテーション又はラベルを生成するのに好適な別のタイプのプログラム内で生成され得、及び/或いは、いくつかの実例では、手書きされ得る。少なくとも1つの実施例では、グランド・トゥルース・データは、合成的に作り出され(たとえば、コンピュータ・モデル又はレンダリングから生成され)、現実的に作り出され(たとえば、実世界のデータから設計され、作り出され)、(たとえば、データから特徴を抽出し、次いでラベルを生成するために、特徴分析及び学習を使用して)機械自動化され、人間によりアノテーション付けされ(たとえば、ラベラ、又はアノテーション専門家が、ラベルのロケーションを定義し)、及び/又はそれらの組合せであり得る。少なくとも1つの実施例では、撮像データ1608の各インスタンス(又は機械学習モデルによって使用される他のデータ・タイプ)について、訓練システム1604によって生成される対応するグランド・トゥルース・データがあり得る。少なくとも1つの実施例では、訓練パイプライン1704中に含まれるAI支援アノテーションに加えて、又はその代わりにのいずれかで、導入パイプライン1710の一部としてAI支援アノテーションが実施され得る。少なくとも1つの実施例では、システム1700は多層プラットフォームを含み得、多層プラットフォームは、1つ又は複数の医療撮像及び診断機能を実施し得る診断アプリケーション(又は他のアプリケーション・タイプ)のソフトウェア層(たとえば、ソフトウェア1618)を含み得る。少なくとも1つの実施例では、システム1700は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合され得る。少なくとも1つの実施例では、システム1700は、機械学習モデルを訓練すること、機械学習モデルを導入すること、画像処理、推論、及び/又は他の動作などの動作を実施するために、PACSサーバからのデータにアクセスし、それを参照するように構成され得る。
【0182】
少なくとも1つの実施例では、ソフトウェア層は、セキュアな、暗号化された、及び/又は認証されたAPIとして実装され得、このAPIを通して、アプリケーション又はコンテナが、(1つ又は複数の)外部環境(たとえば、施設1602)から呼び出され(たとえば、コールされ)得る。少なくとも1つの実施例では、次いで、アプリケーションは、それぞれのアプリケーションに関連付けられたコンピュート、AI、又は視覚化タスクを実施するために1つ又は複数のサービス1620をコール又は実行し得、ソフトウェア1618及び/又はサービス1620は、ハードウェア1622を活用して、処理タスクを有効で効率的な様式で実施し得る。
【0183】
少なくとも1つの実施例では、導入システム1606は、導入パイプライン1710を実行し得る。少なくとも1つの実施例では、導入パイプライン1710は任意の数のアプリケーションを含み得、それらのアプリケーションは、上記で説明されたように、AI支援アノテーションを含む、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のデータ・タイプ)に連続的に、非連続的に、又は他のやり方で適用され得る。少なくとも1つの実施例では、本明細書で説明されるように、個々のデバイスのための導入パイプライン1710は、デバイスのための仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれることがある。少なくとも1つの実施例では、デバイスによって生成されるデータから所望される情報に応じて、単一のデバイスについて、2つ以上の導入パイプライン1710があり得る。少なくとも1つの実施例では、異常の検出がMRIマシンから所望される場合、第1の導入パイプライン1710があり得、画像強調がMRIマシンの出力から所望される場合、第2の導入パイプライン1710があり得る。
【0184】
少なくとも1つの実施例では、画像生成アプリケーションは、機械学習モデルの使用を含む処理タスクを含み得る。少なくとも1つの実施例では、ユーザは、ユーザ自身の機械学習モデルを使用すること、又はモデル・レジストリ1624から機械学習モデルを選択することを所望し得る。少なくとも1つの実施例では、ユーザは、処理タスクを実施するために、ユーザ自身の機械学習モデルを実装するか、又はアプリケーション中に含めるための機械学習モデルを選択し得る。少なくとも1つの実施例では、アプリケーションは選択可能及びカスタマイズ可能であり得、アプリケーションの構築を定義することによって、特定のユーザのためのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも1つの実施例では、サービス1620及びハードウェア1622など、システム1700の他の特徴を活用することによって、導入パイプライン1710は、なお一層ユーザ・フレンドリになり、より容易な統合を提供し、より正確で、効率的で、タイムリーな結果を作り出し得る。
【0185】
少なくとも1つの実施例では、導入システム1606はユーザ・インターフェース1714(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含み得、ユーザ・インターフェース1714は、(1つ又は複数の)導入パイプライン1710中に含めるためのアプリケーションを選択し、アプリケーションを配置し、アプリケーション又はそのパラメータ若しくは構築を修正又は変更し、セットアップ及び/又は導入中に(1つ又は複数の)導入パイプライン1710を使用し、それと対話し、並びに/或いは他のやり方で導入システム1606と対話するために使用され得る。少なくとも1つの実施例では、訓練システム1604に関して示されていないが、ユーザ・インターフェース1714(又は異なるユーザ・インターフェース)は、導入システム1606における使用のためのモデルを選択するために、訓練システム1604において訓練又は再訓練するためのモデルを選択するために、及び/或いは訓練システム1604と他のやり方で対話するために使用され得る。
【0186】
少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1710のアプリケーション又はコンテナと、サービス1620及び/又はハードウェア1622との間で対話を管理するために、アプリケーション・オーケストレーション・システム1728に加えてパイプライン・マネージャ1712が使用され得る。少なくとも1つの実施例では、パイプライン・マネージャ1712は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス1620への対話、及び/或いはアプリケーション又はサービスからハードウェア1622への対話を容易にするように構成され得る。少なくとも1つの実施例では、ソフトウェア1618中に含まれるように示されているが、これは限定を意図しておらず、(たとえば、図15に示されている)いくつかの実例では、パイプライン・マネージャ1712は、サービス1620中に含まれ得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1728(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含み得、コンテナ・オーケストレーション・システムは、アプリケーションを、協調、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1710からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることよって、各アプリケーションは、自己完結型環境(たとえば、カーネル・レベル)において実行して、スピード及び効率を向上させ得る。
【0187】
少なくとも1つの実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入され得(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し得、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入し得)、これは、(1つ又は複数の)別のアプリケーション又は(1つ又は複数の)コンテナのタスクに邪魔されることなしに単一のアプリケーション及び/又は(1つ又は複数の)コンテナのタスクに集中し、注意を払うことを可能にする。少なくとも1つの実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ1712及びアプリケーション・オーケストレーション・システム1728によって補助され得る。少なくとも1つの実施例では、各コンテナ又はアプリケーションの予想される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構築に基づいて)システムによって知られている限り、アプリケーション・オーケストレーション・システム1728及び/又はパイプライン・マネージャ1712は、アプリケーション又はコンテナの各々の間の通信、及びそれらの間のリソースの共有を容易にし得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1710中のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有し得るので、アプリケーション・オーケストレーション・システム1728は、様々なアプリケーション又はコンテナの間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定し得る。少なくとも1つの実施例では、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性を追跡するために、スケジューラが使用され得る。少なくとも1つの実施例では、したがって、スケジューラは、異なるアプリケーションにリソースを割り振り、システムの要件及び利用可能性を考慮してアプリケーションの間でリソースを分散させ得る。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム1728の他の構成要素)は、サービス品質(QoS:quality of service)、(たとえば、リアルタイム処理を実行すべきか遅延処理を実行すべきかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づいて、リソースの利用可能性及び分散を決定し得る。
【0188】
少なくとも1つの実施例では、導入システム1606中のアプリケーション又はコンテナによって活用及び共有されるサービス1620は、コンピュート・サービス1716、AIサービス1718、視覚化サービス1720、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、アプリケーションは、サービス1620のうちの1つ又は複数をコール(たとえば、実行)して、アプリケーションのための処理動作を実施し得る。少なくとも1つの実施例では、コンピュート・サービス1716は、スーパーコンピューティング又は他の高性能コンピューティング(HPC:high-performance computing)タスクを実施するために、アプリケーションによって活用され得る。少なくとも1つの実施例では、アプリケーションのうちの1つ又は複数を通してデータを、及び/又は単一のアプリケーションの1つ又は複数のタスクを実質的に同時に処理するための(たとえば、並列コンピューティング・プラットフォーム1730を使用する)並列処理を実施するために、(1つ又は複数の)コンピュート・サービス1716が活用され得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1730(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU1722)上での汎用コンピューティング(GPGPU)を可能にし得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1730のソフトウェア層は、コンピュート・カーネルの実行のために、仮想命令セット及びGPUの並列算出要素へのアクセスを提供し得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1730はメモリを含み得、いくつかの実施例では、メモリは、複数のコンテナの間で、及び/又は1つのコンテナ内の異なる処理タスクの間で共有され得る。少なくとも1つの実施例では、(たとえば、アプリケーションの複数の異なる段階又は複数のアプリケーションが同じ情報を処理している場合)並列コンピューティング・プラットフォーム1730のメモリの共有セグメントからの同じデータを使用するために、複数のコンテナについて及び/又はコンテナ内の複数のプロセスについて、プロセス間通信(IPC:inter-process communication)コールが生成され得る。少なくとも1つの実施例では、データのコピーをとり、データをメモリ中の異なるロケーションに移動すること(たとえば、読取り/書込み動作)ではなく、メモリの同じロケーション中の同じデータが、任意の数の処理タスクのために(たとえば、同じ時間、異なる時間などに)使用され得る。少なくとも1つの実施例では、データが使用されて、処理の結果として新しいデータが生成されるとき、データの新しいロケーションのこの情報は、様々なアプリケーション間で記憶及び共有され得る。少なくとも1つの実施例では、データのロケーションと、更新された又は修正されたデータのロケーションとは、コンテナ内でペイロードがどのように理解されるかの定義の一部であり得る。
【0189】
少なくとも1つの実施例では、AIサービス1718は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実施する役割を課された)(1つ又は複数の)機械学習モデルを実行するための推論サービスを実施するために活用され得る。少なくとも1つの実施例では、AIサービス1718は、AIシステム1724を活用して、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための(1つ又は複数の)機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1710のアプリケーションは、訓練システム1604からの出力モデル1616及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データに関して推論を実施し得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1728(たとえば、スケジューラ)を使用する推論の2つ又はそれ以上の実例が利用可能であり得る。少なくとも1つの実施例では、第1のカテゴリは、緊急時の至急の要求に関して推論を実施するための、又は診断時の放射線医のためのなど、より高いサービス・レベルの合意を達成し得る高優先度/低レイテンシ経路を含み得る。少なくとも1つの実施例では、第2のカテゴリは、至急でないことがある要求のために、又は分析が後で実施され得る場合に使用され得る標準優先度経路を含み得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1728は、AIサービス1718の異なる推論タスクのための優先度経路に基づいて、リソース(たとえば、サービス1620及び/又はハードウェア1622)を分散させ得る。
【0190】
少なくとも1つの実施例では、共有ストレージが、システム1700内でAIサービス1718に取り付けられ得る。少なくとも1つの実施例では、共有ストレージは、キャッシュ(又は他のストレージ・デバイス・タイプ)として動作し得、アプリケーションからの推論要求を処理するために使用され得る。少なくとも1つの実施例では、推論要求がサブミットされたとき、要求は、導入システム1606のAPIインスタンスのセットによって受信され得、要求を処理するために、1つ又は複数のインスタンスが(たとえば、最良な適合のために、ロード・バランシングのためになど)選択され得る。少なくとも1つの実施例では、要求を処理するために、要求がデータベースに入れられ得、機械学習モデルは、まだキャッシュにない場合、モデル・レジストリ1624から位置特定され得、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)にロードされ、及び/又はモデルのコピーがキャッシュに保存され得ることを確実にし得る。少なくとも1つの実施例では、アプリケーションがまだ稼働していない場合又はアプリケーションの十分なインスタンスがない場合、(たとえば、パイプライン・マネージャ1712の)スケジューラが、要求において参照されたアプリケーションを起動するために使用され得る。少なくとも1つの実施例では、モデルを実行するための推論サーバがまだ起動されていない場合、推論サーバが起動され得る。任意の数の推論サーバがモデルごとに起動され得る。少なくとも1つの実施例では、推論サーバがクラスタ化されたプル・モデルにおいて、ロード・バランシングが有利であるときはいつでもモデルがキャッシュされ得る。少なくとも1つの実施例では、推論サーバは、対応する分散型サーバに静的にロードされ得る。
【0191】
少なくとも1つの実施例では、推論は、コンテナ中で稼働する推論サーバを使用して実施され得る。少なくとも1つの実施例では、推論サーバのインスタンスは、モデル(随意に、モデルの複数のバージョン)に関連付けられ得る。少なくとも1つの実施例では、モデルに対して推論を実施するための要求が受信されたとき、推論サーバのインスタンスが存在しない場合、新しいインスタンスがロードされ得る。少なくとも1つの実施例では、推論サーバを開始するとき、モデルが推論サーバに渡され得、それにより、推論サーバが異なるインスタンスとして稼働している限り、異なるモデルにサービスするために同じコンテナが使用され得る。
【0192】
少なくとも1つの実施例では、アプリケーション実行中、所与のアプリケーションについての推論要求が受信され得、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていない場合)ロードされ得、開始プロシージャがコールされ得る。少なくとも1つの実施例では、コンテナ中の前処理論理が、(たとえば、(1つ又は複数の)CPU及び/又は(1つ又は複数の)GPU及び/又は(1つ又は複数の)DPUを使用して)入って来るデータに対する任意の追加の前処理をロード、復号、及び/又は実施し得る。少なくとも1つの実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに関して推論を実施し得る。少なくとも1つの実施例では、これは、1つの画像(たとえば、手のX線)に対する単一の推論コールを含み得るか、又は何百もの画像(たとえば、胸のCT)に関する推論を必要とし得る。少なくとも1つの実施例では、アプリケーションは、完了する前に結果を要約し得、これは、限定はしないが、単一の信頼性スコア、ピクセル・レベル・セグメント化、ボクセル・レベル・セグメント化、視覚化を生成すること、又は所見を要約するためにテキストを生成することを含み得る。少なくとも1つの実施例では、異なるモデル又はアプリケーションは、異なる優先度を割り当てられ得る。たとえば、リアルタイム(TAT<1分)の優先度を有するモデルもあれば、低優先度(たとえば、TAT<12分)を有するモデルもある。少なくとも1つの実施例では、モデル実行時間は、要求元の機関又はエンティティから測定され得、パートナー・ネットワーク・トラバーサル時間、並びに推論サービスに対する実行を含み得る。
【0193】
少なくとも1つの実施例では、サービス1620と推論アプリケーションとの間での要求の転送は、ソフトウェア開発キット(SDK)の後ろに隠され得、キューを通してロバストなトランスポートが提供され得る。少なくとも1つの実施例では、個々のアプリケーション/テナントIDの組合せについて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも1つの実施例では、SDKが要求をピックアップする環境において、キューの名称が提供され得る。少なくとも1つの実施例では、キューを通した非同期通信は、その通信が、ワークが利用可能になったときに、アプリケーションの任意のインスタンスがそのワークをピックアップすることを可能にし得るので、有用であり得る。結果は、データが失われないことを確実にするために、キューを通して返送され得る。少なくとも1つの実施例では、最高優先度のワークは、アプリケーションのほとんどのインスタンスがキューに接続された、キューに進み得、一方で、最低優先度のワークは、単一のインスタンスがキューに接続された、受信された順番にタスクを処理するキューに進み得るので、キューは、ワークをセグメント化するアビリティをも提供し得る。少なくとも1つの実施例では、アプリケーションは、クラウド1726において生成されたGPU加速インスタンス上で稼働し得、推論サービスは、GPU上で推論を実施し得る。
【0194】
少なくとも1つの実施例では、視覚化サービス1720が、アプリケーション及び/又は(1つ又は複数の)導入パイプライン1710の出力を見るための視覚化を生成するために活用され得る。少なくとも1つの実施例では、視覚化を生成するために視覚化サービス1720によってGPU1722が活用され得る。少なくとも1つの実施例では、レイ・トレーシングなどのレンダリング効果が、より高品質の視覚化を生成するために視覚化サービス1720によって実装され得る。少なくとも1つの実施例では、視覚化は、限定はしないが、2D画像レンダリング、3Dボリューム・レンダリング、3Dボリューム再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを含み得る。少なくとも1つの実施例では、仮想化された環境が、システムのユーザ(たとえば、医師、看護師、放射線医など)による対話のための仮想インタラクティブ表示又は環境(たとえば、仮想環境)を生成するために使用され得る。少なくとも1つの実施例では、視覚化サービス1720は、内部ビジュアライザ、シネマティクス、及び/或いは他のレンダリング又は画像処理能力又は機能性(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含み得る。
【0195】
少なくとも1つの実施例では、ハードウェア1622は、GPU1722、AIシステム1724、クラウド1726、並びに/或いは訓練システム1604及び/又は導入システム1606を実行するために使用される任意の他のハードウェアを含み得る。少なくとも1つの実施例では、GPU1722(たとえば、NVIDIAのTESLA及び/又はQUADRO GPU)は、任意の数のGPUを含み得、任意の数のGPUは、コンピュート・サービス1716、AIサービス1718、視覚化サービス1720、他のサービス、及び/或いはソフトウェア1618の特徴又は機能性のいずれかの処理タスクを実行するために使用され得る。たとえば、AIサービス1718に関して、GPU1722が、撮像データ(又は機械学習モデルによって使用される他のデータ・タイプ)に対する前処理、機械学習モデルの出力に対する後処理を実施するために、及び/又は推論を実施するために(たとえば、機械学習モデルを実行するために)使用され得る。少なくとも1つの実施例では、クラウド1726、AIシステム1724、及び/又はシステム1700の他の構成要素は、GPU1722を使用し得る。少なくとも1つの実施例では、クラウド1726は、深層学習タスクのためのGPU最適化プラットフォームを含み得る。少なくとも1つの実施例では、AIシステム1724は、GPUを使用し得、クラウド1726、或いは深層学習又は推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム1724を使用して実行され得る。したがって、ハードウェア1622は個別構成要素として示されているが、これは、限定を意図しておらず、ハードウェア1622の任意の構成要素が、ハードウェア1622の任意の他の構成要素と組み合わせられ、それらによって活用され得る。
【0196】
少なくとも1つの実施例では、AIシステム1724は、推論、深層学習、機械学習、及び/又は他の人工知能タスクのために構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含み得る。少なくとも1つの実施例では、AIシステム1724(たとえば、NVIDIAのDGX)は、GPU最適化ソフトウェア(たとえば、ソフトウェア・スタック)を含み得、GPU最適化ソフトウェアは、DPU、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、又は機能性に加えて、複数のGPU1722を使用して実行され得る。少なくとも1つの実施例では、1つ又は複数のAIシステム1724は、システム1700のAIベースの処理タスクのいくつか又はすべてを実施するために、(たとえば、データ・センタにおいて)クラウド1726において実装され得る。
【0197】
少なくとも1つの実施例では、クラウド1726は、GPU加速インフラストラクチャ(たとえば、NVIDIAのNGC)を含み得、GPU加速インフラストラクチャは、システム1700の処理タスクを実行するためのGPU最適化プラットフォームを提供し得る。少なくとも1つの実施例では、クラウド1726は、システム1700のAIベースのタスクのうちの1つ又は複数を実施するための(1つ又は複数の)AIシステム1724を(たとえば、ハードウェア抽象化及びスケーリング・プラットフォームとして)含み得る。少なくとも1つの実施例では、クラウド1726は、アプリケーションとサービス1620との間でシームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUを活用してアプリケーション・オーケストレーション・システム1728と統合し得る。少なくとも1つの実施例では、クラウド1726は、本明細書で説明されるように、コンピュート・サービス1716、AIサービス1718、及び/又は視覚化サービス1720を含む、システム1700のサービス1620の少なくともいくつかを実行する役割を課され得る。少なくとも1つの実施例では、クラウド1726は、大小のバッチ推論(たとえば、NVIDIAのTENSOR RTを実行すること)を実施し、加速並列コンピューティングAPI及びプラットフォーム1730(たとえば、NVIDIAのCUDA)を提供し、アプリケーション・オーケストレーション・システム1728(たとえば、KUBERNETES)を実行し、(たとえば、より高品質のシネマティクスを作り出すためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法のための)グラフィックス・レンダリングAPI及びプラットフォームを提供し得、及び/又はシステム1700のための他の機能性を提供し得る。
【0198】
図18Aは、少なくとも1つの実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス1800のデータ・フロー図を示す。少なくとも1つの実施例では、プロセス1800は、図17のシステム1700を非限定的な実例として使用して、実行され得る。少なくとも1つの実施例では、プロセス1800は、本明細書で説明されるように、システム1700のサービス1620及び/又はハードウェア1622を活用し得る。少なくとも1つの実施例では、プロセス1800によって生成される改良されたモデル1812は、導入パイプライン1710中の1つ又は複数のコンテナ化アプリケーションのために、導入システム1606によって実行され得る。
【0199】
少なくとも1つの実施例では、モデル訓練1614は、新しい訓練データ(たとえば、顧客データセット1806、及び/又は入力データに関連付けられた新しいグランド・トゥルース・データなどの新しい入力データ)を使用して、初期モデル1804(たとえば、事前訓練されたモデル)を再訓練又は更新することを含み得る。少なくとも1つの実施例では、初期モデル1804を再訓練又は更新するために、初期モデル1804の(1つ又は複数の)出力又は損失層がリセット又は削除され得、及び/或いは、(1つ又は複数の)更新された又は新しい出力又は損失層と置き換えられ得る。少なくとも1つの実施例では、初期モデル1804は、前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有し得、したがって、訓練又は再訓練1614は、最初からモデルを訓練するほど長い時間がかからないか、又は多くの処理を必要としないことがある。少なくとも1つの実施例では、モデル訓練1614中に、初期モデル1804の(1つ又は複数の)リセットされた又は置き換えられた出力又は損失層を有することによって、パラメータは、新しい顧客データセット1806(たとえば、図16の画像データ1608)に関して予測を生成する際の(1つ又は複数の)出力又は損失層の精度に関連付けられた損失計算に基づいて、新しいデータ・セットのために更新又は再調整され得る。
【0200】
少なくとも1つの実施例では、事前訓練されたモデル1706は、データ・ストア又はレジストリ(たとえば、図16のモデル・レジストリ1624)に記憶され得る。少なくとも1つの実施例では、事前訓練されたモデル1706は、少なくとも部分的に、プロセス1800を実行する施設以外の1つ又は複数の施設において訓練されていることがある。少なくとも1つの実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練されたモデル1706は、構内で生成された顧客又は患者データを使用して、構内で訓練されていることがある。少なくとも1つの実施例では、事前訓練されたモデル1706は、クラウド1726及び/又は他のハードウェア1622を使用して訓練され得るが、プライバシー保護された機密の患者データは、クラウド1726(又は他の構外のハードウェア)の任意の構成要素に転送されないか、それらの構成要素によって使用されないか、又はそれらの構成要素にとってアクセス不可能であり得る。少なくとも1つの実施例では、事前訓練されたモデル1706が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練されたモデル1706は、各施設について個々に訓練されてから、別の施設からの患者又は顧客データに関して訓練され得る。少なくとも1つの実施例では、顧客又は患者データが(たとえば、権利放棄によって、実験での使用のために、など)プライバシー問題から解放された場合、或いは、顧客又は患者データがパブリック・データ・セット中に含まれる場合など、任意の数の施設からの顧客又は患者データが、データセンタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練されたモデル1706を訓練するために使用され得る。
【0201】
少なくとも1つの実施例では、導入パイプライン1710における使用のためのアプリケーションを選択するとき、ユーザは、特定のアプリケーションのために使用されるべき機械学習モデルをも選択し得る。少なくとも1つの実施例では、ユーザは、使用のためのモデルを有しないことがあり、したがって、ユーザは、アプリケーションとともに使用するために事前訓練されたモデル1706を選択し得る。少なくとも1つの実施例では、事前訓練されたモデル1706は、(たとえば、患者の多様性、人口統計、使用される医療撮像デバイスのタイプなどに基づいて)ユーザの施設の顧客データセット1806に関して正確な結果を生成するために最適化されないことがある。少なくとも1つの実施例では、事前訓練されたモデル1706を、(1つ又は複数の)アプリケーションとともに使用するために導入パイプライン1710に導入する前に、事前訓練されたモデル1706は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整され得る。
【0202】
少なくとも1つの実施例では、ユーザは、更新、再訓練、及び/又は微調整されるべきである事前訓練されたモデル1706を選択し得、事前訓練されたモデル1706は、プロセス1800内の訓練システム1604のための初期モデル1804と呼ばれることがある。少なくとも1つの実施例では、顧客データセット1806(たとえば、施設におけるデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のデータ・タイプ)が、初期モデル1804に関して(限定はしないが、転移学習(transfer learning)を含み得る)モデル訓練1614を実施して、改良されたモデル1812を生成するために、使用され得る。少なくとも1つの実施例では、顧客データセット1806に対応するグランド・トゥルース・データが、訓練システム1604によって生成され得る。少なくとも1つの実施例では、グランド・トゥルース・データは、(たとえば、図16のラベル付きクリニック・データ1612として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成され得る。
【0203】
少なくとも1つの実施例では、グランド・トゥルース・データを生成するために、AI支援アノテーション1610がいくつかの実例において使用され得る。少なくとも1つの実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション1610は、機械学習モデル(たとえば、ニューラル・ネットワーク)を活用して、顧客データセットについて示唆又は予測されるグランド・トゥルース・データを生成し得る。少なくとも1つの実施例では、ユーザ1810は、コンピューティング・デバイス1808上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI:graphical user interface))内でアノテーション・ツールを使用し得る。
【0204】
少なくとも1つの実施例では、ユーザ1810は、コンピューティング・デバイス1808を介してGUIと対話して、(自動)アノテーションを編集又は微調整し得る。少なくとも1つの実施例では、ポリゴン編集特徴が、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動するために使用され得る。
【0205】
少なくとも1つの実施例では、顧客データセット1806が、関連するグランド・トゥルース・データを有すると、(たとえば、AI支援アノテーション、手動ラベル付けなどからの)グランド・トゥルース・データが、改良されたモデル1812を生成するために、モデル訓練1614中によって使用され得る。少なくとも1つの実施例では、顧客データセット1806は、初期モデル1804に任意の回数適用され得、グランド・トゥルース・データは、改良されたモデル1812について、許容可能なレベルの精度が達成されるまで、初期モデル1804のパラメータを更新するために使用され得る。少なくとも1つの実施例では、改良されたモデル1812が生成されると、改良されたモデル1812は、医療撮像データに対して1つ又は複数の処理タスクを実施するために、施設において1つ又は複数の導入パイプライン1710内で導入され得る。
【0206】
少なくとも1つの実施例では、改良されたモデル1812は、別の施設によって選択されるべきモデル・レジストリ1624において事前訓練されたモデル1706にアップロードされ得る。少なくとも1つの実施例では、彼のプロセスは任意の数の施設において完了され得、それにより、改良されたモデル1812は、より普遍的なモデルを生成するように新しいデータセットに関して任意の回数さらに改良され得る。
【0207】
図18Bは、少なくとも1つの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャ1832の例示的な図である。少なくとも1つの実施例では、AI支援アノテーション・ツール1836は、クライアントサーバ・アーキテクチャ1832に基づいてインスタンス化され得る。少なくとも1つの実施例では、撮像アプリケーション中のアノテーション・ツール1836は、放射線医が、たとえば、器官及び異常を識別するのを補助し得る。少なくとも1つの実施例では、撮像アプリケーションは、非限定的な実例として、(たとえば、3D MRI又はCTスキャンにおける)生画像1834において、関心のある特定の器官上の数個の極値点をユーザ1810が識別するのを助け、特定の器官のすべての2Dスライスについて自動アノテーション付けされた結果を受信する、ソフトウェア・ツールを含み得る。少なくとも1つの実施例では、結果は、訓練データ1838としてデータ・ストアに記憶され、(たとえば、限定はしないが)訓練のためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、コンピューティング・デバイス1808が、AI支援アノテーション1610のために極値点を送出するとき、たとえば、深層学習モデルがこのデータを入力として受信し、セグメント化された器官又は異常の推論結果を返し得る。少なくとも1つの実施例では、図18B中のAI支援アノテーション・ツール1836Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された、事前訓練されたモデル1842のセットを含み得るアノテーション支援サーバ1840などのサーバに、APIコール(たとえば、APIコール1844)を行うことによって、拡張され得る。少なくとも1つの実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実施するように事前訓練された、事前訓練されたモデル1842(たとえば、深層学習モデルなどの機械学習モデル)を記憶し得る。これらのモデルは、訓練パイプライン1704を使用することによって、さらに更新され得る。少なくとも1つの実施例では、事前インストールされたアノテーション・ツールは、新しいラベル付きクリニック・データ1612が追加されるにつれて、経時的に改善され得る。
【0208】
そのような構成要素は、ネットワーク訓練プロセスにおける障害事例を模倣する合成データを生成するために使用され得、これは、過剰適合を回避するために合成データの量を制限しながらネットワークの性能を改善するのを助け得る。
【0209】
他の変形形態は、本開示の範囲内にある。したがって、開示される技法は、様々な修正及び代替構築が可能であるが、それらのいくつかの例示的な実施例が図面に示され、上記で詳細に説明された。しかしながら、特定の1つ又は複数の開示された形態に本開示を限定する意図はなく、その反対に、添付の特許請求の範囲において定義されるように、開示の趣旨及び範囲に入るすべての修正形態、代替構築、及び等価物を網羅することを意図している。
【0210】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「含む、備える(comprising)」、「有する(having)」、「含む(including)」、「含んでいる(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「限定はしないが、~を含む(including, but not limited to,)」を意味する)と解釈されるべきである。「接続される」は、修飾されず、物理的接続を指しているとき、何か介在するものがある場合でも、部分的に又は完全に中に含まれているか、取り付けられるか、又は互いに接合されるものとして解釈されるべきである。本明細書で値の範囲を詳述することは、本明細書に別段の記載のない限り、及び各別個の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に入る各別個の値を個々に参照する簡潔な方法として働くことを単に意図しているにすぎない。少なくとも1つの実施例では、「セット」(たとえば、「項目のセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がないか又は否定されない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がないか又は否定されない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すとは限らず、サブセットと、対応するセットとは、等しくなり得る。
【0211】
「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つの実施例では、複数(plurality)における項目の数は、少なくとも2つであるが、明示的に、又は文脈によってのいずれかでそのように示されているとき、それよりも多いことがある。さらに、別段の記載がないか又はさもなければ文脈から明らかでない限り、「~に基づいて」という言い回しは、「少なくとも部分的に~に基づいて」を意味し、「~のみに基づいて」を意味しない。
【0212】
本明細書で説明されるプロセスの動作は、本明細書に別段の記載がないか又はさもなければ文脈によって明確に否定されない限り、任意の好適な順序で実施され得る。少なくとも1つの実施例では、本明細書で説明されるプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行するコード(たとえば、実行可能命令、1つ又は複数のコンピュータ・プログラム、又は1つ又は複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードは、たとえば、1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形態で、コンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、一時的信号(たとえば、伝搬する一時的な電気又は電磁送信)を除外するが、一時的信号のトランシーバ内の非一時的データ・ストレージ回路要素(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的コンピュータ可読記憶媒体である。少なくとも1つの実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的コンピュータ可読記憶媒体のセットに記憶され、この記憶媒体は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書で説明される動作を実施させる実行可能命令を記憶している(又は、実行可能命令を記憶するための他のメモリを有する)。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体のセットは、複数の非一時的コンピュータ可読記憶媒体を備え、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数は、コードのすべてがないが、複数の非一時的コンピュータ可読記憶媒体は、集合的にコードのすべてを記憶している。少なくとも1つの実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行される。
【0213】
したがって、少なくとも1つの実施例では、コンピュータ・システムは、本明細書で説明されるプロセスの動作を単独で又は集合的に実施する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、動作の実施を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、分散型コンピュータ・システムが本明細書で説明される動作を実施するように、及び単一のデバイスがすべての動作を実施しないように、異なるやり方で動作する複数のデバイスを備える分散型コンピュータ・システムである。
【0214】
本明細書で提供されるあらゆる実例、又は例示的な言葉(たとえば、「など、などの(such as)」)の使用は、本開示の実施例をより明らかにすることのみを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0215】
本明細書で引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0216】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用され得る。これらの用語は、互いに同義語として意図されていないことがあることが理解されるべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ又はそれ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用され得る。「結合される」はまた、2つ又はそれ以上の要素が直接互いに接触していないが、それでもなお互いに連動又は対話することを意味し得る。
【0217】
別段の具体的な記載がない限り、明細書全体を通して、「処理する(processing)」、「算出する(computing)」、「計算する(calculating)」、又は「決定する(determining)」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータを、コンピューティング・システムのメモリ、レジスタ又は他のそのような情報ストレージ、送信、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるように操作及び/又は変換する、コンピュータ又はコンピューティング・システム、或いは同様の電子コンピューティング・デバイスのアクション及び/又はプロセスを指す。
【0218】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶され得る他の電子データに変換する任意のデバイス、又はデバイスの一部分を指し得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用される「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実施するソフトウェア及び/又はハードウェア・エンティティを含み得る。また、各プロセスは、命令を直列で又は並列で、連続的に又は断続的に行うための複数のプロセスを指し得る。少なくとも1つの実施例では、「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化し得、方法がシステムと考えられ得る場合に限り、本明細書において交換可能に使用される。
【0219】
本明細書では、アナログ・データ又はデジタル・データを取得すること、獲得すること、受信すること、或いはそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及し得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、関数コール、又はアプリケーション・プログラミング・インターフェースへのコールのパラメータとしてデータを受信することによってなど、様々なやり方で実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、直列又は並列インターフェースを介してデータを転送することによって実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、提供するエンティティから獲得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現され得る。少なくとも1つの実施例では、アナログ・データ又はデジタル・データを提供すること、出力すること、送信すること、送出すること、又は提示することにも言及し得る。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送出する、又は提示するプロセスは、関数コールの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェース又はプロセス間通信機構のパラメータとしてデータを転送することによって実現され得る。
【0220】
本明細書の説明は、説明された技法の例示的な実施例について述べているが、他のアーキテクチャが、説明された機能性を実装するために使用され得、本開示の範囲内にあることが意図される。さらに、説明を目的として、責任の具体的な分散が定義され得るが、様々な機能及び責任は、状況に応じて異なるやり方で分散及び分割され得る。
【0221】
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲で特許請求される主題は、説明された特有の特徴又は行為に必ずしも限定されるとは限らないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形態として開示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10A
図10B
図11
図12
図13
図14
図15
図16
図17
図18A
図18B
【外国語明細書】