JP7094262B2 - 計算グラフの修正 - Google Patents

計算グラフの修正 Download PDF

Info

Publication number
JP7094262B2
JP7094262B2 JP2019227507A JP2019227507A JP7094262B2 JP 7094262 B2 JP7094262 B2 JP 7094262B2 JP 2019227507 A JP2019227507 A JP 2019227507A JP 2019227507 A JP2019227507 A JP 2019227507A JP 7094262 B2 JP7094262 B2 JP 7094262B2
Authority
JP
Japan
Prior art keywords
node
devices
subgraph
action
represented
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019227507A
Other languages
English (en)
Other versions
JP2020057422A (ja
Inventor
ヴィジェイ・ヴァスデヴァン
ジェフリー・アドゲート・ディーン
サンジェイ・ゲマワット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2020057422A publication Critical patent/JP2020057422A/ja
Application granted granted Critical
Publication of JP7094262B2 publication Critical patent/JP7094262B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/042Knowledge-based neural networks; Logical representations of neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本明細書は、ニューラル・ネットワークを表す計算グラフの修正および/またはモデル入力を処理するための修正された計算グラフの利用に関する。
ニューラル・ネットワークは、1つまたは複数のモデルのレイヤを使用して、受信された入力に対する出力、例えば、1つまたは複数の分類を生成する機械学習モデルである。幾つかのニューラル・ネットワークは、出力レイヤに加えて1つまたは複数の隠れレイヤを含む。各隠れレイヤの出力は、当該ネットワーク内の次のレイヤへの入力、即ち、当該ネットワークの次の隠れレイヤまたは出力レイヤとして使用される。当該ネットワークの各レイヤは、当該レイヤに対する夫々の1組のパラメータの現在値に従う受信された入力から出力を生成する。
ニューラル・ネットワークのレイヤを個々のデバイスにより処理することができる。当該デバイスは、動作を実施、例えば、レイヤでの出力を入力から生成し、当該動作からの出力をメモリに格納するプロセッサを有することができる。当該ニューラル・ネットワーク内の出力を生成するための多数のおよび大きなサイズの一般的に要求された動作のため、1つのデバイスは、当該ニューラル・ネットワークのレイヤを処理するのに大幅な時間を要することがある。
一般に、本明細書は、ニューラル・ネットワークおよび他の機械学習モデルを表す計算グラフを修正するためのシステムを説明する。
本明細書で説明した主題の特定の実施形態を、以下の利点の1つまたは複数を実現するために実装することができる。ニューラル・ネットワークの動作、例えば、入力から推論を生成するかまたは当該ニューラル・ネットワークをトレーニングするための動作を、ノードおよび有向エッジからなる計算グラフとして表すことができる。システムはこの計算グラフ表現を処理して、当該ニューラル・ネットワークの動作を効率的に実施する。例として、当該計算グラフのサブグラフを、その各々が当該各サブグラフ内の動作を実施する一意なデバイスに割り当て、当該ニューラル・ネットワークの動作を実施するために要求される総時間を削減することができる。当該計算グラフの異なるサブグラフの動作を実施する一意なデバイスの間の通信を、送信ノードおよび受信ノードを各サブグラフに挿入することで効率的に扱うことができる。実行時に、これらの送信ノードおよび受信ノードが表す動作により、一意なデバイスのペアは、自己満足的に互いと通信を行うことができる。これは、通信の協調の負荷を当該バックエンドからシフトし、この計算グラフ表現を処理するシステムに、デバイスがサブグラフを実行している間に1つまたは複数の他のプロセスを実施する機会を与える。送信ノードおよび受信ノードは、かかるサブグラフにより表されるニューラル・ネットワークまたはニューラル・ネットワークの一部を1つのデバイス上でトレーニングし、後に別のデバイスに割り当てられることを可能とするようにサブグラフを区分ける役割を果たす。少なくともこれらの理由のため、送信ノードおよび受信ノードのペアを含むように計算グラフを修正するステップは、計算グラフを分散方式で処理するのに必要なネットワーク通信の時間コストと量を削減するのを支援しうる。
1態様では、本明細書で説明した主題は、計算グラフを表すデータを取得するステップであって、当該計算グラフは複数のノードおよび有向エッジを含み、各ノードは各動作を表し、各有向エッジは各第1のノードを、入力として各第1のノードにより表される動作の出力を受信する動作を表す各第2のノードに接続する、ステップと、複数のデバイスにわたる当該計算グラフの割当てを識別するデータを取得するステップであって、当該割当ては、当該計算グラフ内の各ノードを当該複数のデバイスの各デバイスに割り当てる、ステップと、当該計算グラフ内の1つまたは複数のクロス・デバイス有向エッジを識別するステップであって、各クロス・デバイス有向エッジは、各第1のノードを当該割当てにおいて各第1のノードと異なるデバイスに割り当てられた各第2のノードに接続する、ステップと、各クロス・デバイス有向エッジに対して、各第1のノードおよび各第2のノードの間の送信ノードを当該計算グラフに挿入するステップと、当該送信ノードおよび各第2のノードの間の受信ノードを当該動作グラフに挿入するステップと、当該送信ノードを各第1のノードと同一のデバイスに割り当て、当該受信ノードを各第2のノードと同一のデバイスに割り当てるように当該割当てを修正するステップと、当該修正された割当てに従って、当該計算グラフ内の当該ノードにより表される当該動作を当該複数のデバイスに割り当てるステップとからなるアクションを含みうる方法で具現化されてもよい。当該方法はコンピュータ実行型の方法であってもよい。
1実装において、当該方法はさらに、モデル入力を受信するステップと、当該修正された計算グラフにより表される動作に従って当該モデル入力を処理するステップとを含む。
別の態様において、本明細書で説明した主題は、第1の態様の方法により取得された修正された計算グラフに対応する機械学習モデルを提供するステップと、当該機械学習モデルを用いて、モデル入力を処理するステップとからなるアクションを含みうる方法で具現化されてもよい。当該処理は当該機械学習モデルのトレーニングを構成してもよく、または、当該モデル入力から推論を生成するステップを構成してもよい。
別の態様において、本明細書で説明した主題は、複数のデバイスにより、第1の態様の方法により取得された修正された計算グラフを実行するアクションを含みうる方法で具現化されてもよい。
これらの態様において、当該計算グラフは、例えば、ニューラル・ネットワークのような機械学習モデルの表現であってもよい。
別の態様において、本明細書で説明した主題は、複数のデバイスを用いて計算グラフに従ってモデル入力を処理するステップであって、当該計算グラフは複数のノードおよび有向エッジを含み、各ノードは各動作を表し、各有向エッジは各第1のノードを、入力として各第1のノードにより表される動作の出力を受信する動作を表す各第2のノードに接続する、ステップを含みうる方法で具体化されうる。当該方法は、当該複数のデバイスの第1のデバイスに対して、第1のデバイスに割り当てられた当該計算グラフのサブグラフを表すデータを受信するステップであって、当該サブグラフは当該計算グラフからの複数のノードおよび有向エッジを含む、ステップと、(1)当該サブグラフ内の各第1のノードにより表される動作を実施して第1の出力を生成するステップと、第1のノードが有向エッジにより当該サブグラフ内の送信ノードに接続されると判定するステップと、当該送信ノードにより表される当該動作を実施して、各第1のノードにより表される当該動作の第1の出力を当該複数のデバイスの別のデバイスに送信するステップ、および/または(2)当該サブグラフ内の受信ノードにより表される動作を実施して、当該複数のデバイス内の別のデバイスに割り当てられた第2のノードにより表される動作から第2の出力を取得するステップと、当該受信ノードが有向エッジにより当該サブグラフ内の第3のノードに接続されると判定するステップと、第3のノードにより表される動作を、入力として当該取得された第2の出力を用いて実施するステップとを含む、当該サブグラフ内の当該ノードにより表される当該動作を実施するステップとを含む。当該態様において、当該計算グラフは本発明の別の態様の方法により取得されてもよい。
この態様および他の態様の他の実装は、コンピュータ記憶デバイス(非一時的記憶デバイスであってもなくてもよい)で符号化された方法のアクションを実施するように構成された対応するシステム、装置、およびコンピュータ・プログラムを含む。1つまたは複数のコンピュータからなるシステムを、動作において当該システムに当該アクションを実施させるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによりそのように構成することができる。1つまたは複数のコンピュータ・プログラムは、データ処理装置により実行されたとき、当該装置に当該アクションを実施させる命令によりそのように構成することができる。
これらの他のバージョンは各場合によっては以下の特徴の1つまたは複数を含んでもよい。例えば、当該送信ノードは、(i)入力として、各第1のノードにより表される当該動作の出力を受信し、(ii)各第1のノードにより表される当該動作の出力を、出力として、当該受信ノードに提供し、当該受信ノードは、(i)入力として、当該送信ノードにより表される当該動作の出力を受信し、(ii)当該送信ノードにより表される当該動作の出力を、出力として、各第2のノードに提供する動作を表してもよい。幾つかの実装では、当該受信ノードにより表される当該動作はさらに、(iii)当該送信ノードにより表される当該動作の出力の要求を、出力として、当該送信ノードに提供してもよく、当該送信ノードにより表される当該動作はさらに、(ii)各第1のノードにより表される当該動作の出力を、出力として、当該受信ノードから受信された1つまたは複数の要求に応答して当該受信ノードに提供してもよい。幾つかの例では、各第1のノードにより表される当該動作の出力が、テンソルを含んでもよい。
幾つかの実装では、当該複数のデバイスにわたる当該計算グラフの割当てを識別するデータを取得するステップが、1つまたは複数のマシンに含まれるハードウェア・リソースにわたる当該計算グラフの割当てを識別するデータを取得するステップを含んでもよい。これらの実装において、送信ノードおよび受信ノードのペア内の各ノードは、例えば、入力として、各ハードウェア・リソースおよび送信ノードおよび受信ノードのペアが割り当てられるマシンに対応するプロトコルに従って通信される当該ペア内の他のノードにより表される当該動作の出力を受信する動作を表してもよい。
幾つかの例では、各第1のノードおよび各第2のノードの間の送信ノードを当該計算グラフに挿入するステップがさらに、各クロス・デバイス有向エッジに対して、当該送信ノードおよび各第1のノードの間に有向エッジを挿入するステップを含んでもよい。さらに、当該送信ノードおよび各第2のノードの間の受信ノードを当該動作グラフに挿入するステップがさらに、各クロス・デバイス有向エッジに対して、当該受信ノードおよび各第2のノードの間に有向エッジを挿入するステップを含んでもよい。
幾つかの実装では、当該複数のデバイスによる当該計算グラフにより表される動作の実行の間に、送信ノードおよび受信ノードの各ペアにより表される動作は、当該複数のデバイスが、当該複数のデバイスにおけるデバイスにわたる計算グラフ内の他のノードにより表される動作の入力および出力を独立に通信できるようにしてもよい。幾つかの例では、データを、送信ノードおよび受信ノードのペア内の各ノードにより表される動作の間で独立に交換してもよい。
本明細書の主題の1つまたは複数の実施形態の詳細を添付図面および以下の説明で説明する。当該主題の他の特徴、態様、および利点は詳細な説明、添付図面、および添付の特許請求の範囲から明らかになろう。態様および実装を組み合わせることができ、1態様のコンテキストで説明した特徴または実装を他の態様または実装のコンテキストで実装できることは理解される。
計算グラフとして表されたニューラル・ネットワークに対する動作を分散するための計算グラフ・システムの1例を示す図である。 システム内の計算グラフとして表されたニューラル・ネットワークに対する動作を分散するための例示的なフレームワークのための概念図である。 例示的な計算グラフの図である。 例示的な計算グラフの図である。 例示的な計算グラフの図である。 計算グラフに含まれる例示的な送信ノードおよび受信ノードの実行を通じて提供された例示的なプロセスの流れ図である。 デバイスに割り当てられた計算グラフの例示的な部分の図である。 デバイスに割り当てられた計算グラフの例示的な部分の図である。 計算グラフを修正するための例示的なプロセスの流れ図である。
様々な図面における同様な参照番号および指定は同様な要素を示す。
本明細書は一般には、分散方式で計算グラフにより表される動作を実施する計算グラフ・システムを説明する。特に、本明細書は、デバイスの間のシームレスな通信を可能とする方式で計算グラフを修正するための技術を説明する。かかる技術は、各計算グラフが複数のデバイスにより迅速かつ効果的な方式で集合的に実行されるのを保証するのを支援してもよい
当該計算グラフは有向エッジにより接続されたノードを含む。当該計算グラフ内の各ノードは動作を表す。ノードへの入ってくるエッジは、当該ノードへの入力のフロー、即ち、当該ノードにより表される動作への入力を表す。ノードから出るエッジは、別のノードにより表される動作への入力として使用されるべき、当該ノードにより表される動作の出力のフローを表す。したがって、当該グラフ内の第1のノードを当該グラフ内の第2のノードに接続する有向エッジは、第1のノードにより表される動作により生成された出力が、第2のノードにより表される動作への入力として使用されることを示す。
一般的に、当該計算グラフ内の有向エッジに沿って流れる入力および出力はテンソルである。テンソルは、当該アレイの次元に対応する特定の次元を有する、数値または他の値、例えば、文字列の多次元アレイである。例えば、スカラ値は0次テンソルであり、数値のベクトルは1次テンソルであり、行列は2次テンソルである。
幾つかの実装では、当該計算グラフで表される動作は、ニューラル・ネットワーク動作または異なる種類の機械学習モデルに対する動作である。ニューラル・ネットワークは、非線形ユニットの1つまたは複数のレイヤを使用して、受信された入力に対する出力を予測する機械学習モデルである。幾つかのニューラル・ネットワークは、出力レイヤに加えて1つまたは複数の隠れレイヤを含むディープニューラル・ネットワークである。各隠れレイヤの出力は、当該ネットワーク内の別のレイヤ、即ち、別の隠れレイヤ、出力レイヤ、またはその両方に対する入力として使用される。当該ネットワークの幾つかのレイヤは、夫々の1組のパラメータの現在値に従って出力を受信された入力から生成し、当該ネットワークの他のレイヤはパラメータを有さなくてもよい。
例えば、当該計算グラフにより表される動作は、当該ニューラル・ネットワークが推論を計算、即ち、当該ニューラル・ネットワークのレイヤを通じて入力を処理し当該入力に対するニューラル・ネットワーク出力を生成するのに必要な動作であってもよい。別の例として、当該計算グラフにより表される動作は、ニューラル・ネットワーク・トレーニング手続きを実施して当該ニューラル・ネットワークのパラメータの値を調節、例えば、当該パラメータのトレーニングされた値を当該パラメータの初期値から決定することで、当該ニューラル・ネットワークをトレーニングするのに必要な動作であってもよい。幾つかのケースでは、例えば、当該ニューラル・ネットワークのトレーニングの間に、当該計算グラフにより表される動作は、当該ニューラル・ネットワークの複数のレプリカにより実施される動作を含むことができる。
例として、入力を以前のレイヤから受信するニューラル・ネットワーク・レイヤは、パラメータ行列を使用して当該パラメータ行列と当該入力の間の行列乗算を実施することができる。幾つかのケースでは、この行列乗算を、当該計算グラフ内の複数のノードとして表すことができる。例えば、行列乗算を複数の乗算および追加動作に分割でき、各動作は当該計算グラフ内の異なるノードにより表されることができる。各ノードにより表される動作は有向エッジ上で後続のノードに流れる夫々の出力を生成することができる。最終ノードにより表される動作が当該行列乗算の結果を生成した後、結果が、有向エッジ上で別のノードに流れる。当該結果は、当該行列乗算を実施するニューラル・ネットワーク・レイヤの出力と等価である。
幾つかの他のケースでは、当該行列乗算は当該グラフ内の1つのノードとして表される。当該ノードにより表される動作は、入力として、第1の有向エッジおよび重みテンソル上の入力テンソル、例えば、第2の有向エッジ上のパラメータ行列を受信することができる。当該ノードは、例えば、当該入力および重みテンソルの行列乗算を実施して、第3の有向エッジに、当該ニューラル・ネットワーク・レイヤの出力に等価な出力テンソルを出力することができる。
当該計算グラフ内のノードにより表されうる他のニューラル・ネットワーク動作は他の数学的動作、例えば、差、商、および勾配計算と、行列演算、例えば、連結、スプライス、分割、または順位付けと、ニューラル・ネットワーク・ビルディング・ブロック演算、例えば、SoftMax、Sigmoid、整形線形ユニット(ReLU)、または畳込みを含む。
ニューラル・ネットワークを計算グラフとして表すステップは、特に当該ニューラル・ネットワークに対する動作が異なるハードウェア・プロフィールを有する複数のデバイスにわたって分散されている場合に、当該ニューラル・ネットワークを効率的に実装するための柔軟で粒度の細かい方法を提供する。
図1Aは、計算グラフとして表されたニューラル・ネットワークに対する動作を分散するための計算グラフ・システム100の1例を示す。システム100は、1つまたは複数の位置における1つまたは複数のコンピュータ上のコンピュータ・プログラムとして実装されるシステムの例であり、以下で説明されるシステム、コンポーネント、および技術を実装することができる。
クライアント102のユーザは、ニューラル・ネットワークを表す計算グラフで動作を実施するように要求することができる。クライアント102はコンピュータで実行されるアプリケーションであることができる。
当該要求の一部として、クライアント102は、計算グラフを識別するデータをシステム100に提供し、当該計算グラフに実施すべき動作のタイプを指定する。
例えば、当該要求は、特定のニューラル・ネットワークに対する推論を表す計算グラフを識別でき、当該推論を実施すべき入力を識別することができる。
別の例として、当該要求は、特定のニューラル・ネットワークに対するトレーニング手続きを表す計算グラフを識別でき、当該トレーニングを実施すべきトレーニング・データのような入力を識別することができる。この例において、トレーニング手続きを表す計算グラフを処理するための要求を受信すると、システム100は、当該計算グラフの1つまたは複数のエッジに対するパラメータの修正された値を、例えば、従来の後方伝播または他のニューラル・ネットワーク・トレーニング技術を用いて決定することができる。システム100は当該修正されたパラメータをデバイスのメモリに格納でき、実行器106は、システム100で、修正された重みのアドレスを取り出し、格納することができる。推論、トレーニング、または当該修正された重みを要する他の動作に対するクライアント102からのさらなる要求に応じて、システム100は当該アドレスを用いて当該修正された重みにアクセスすることができる。
幾つかのケースでは、当該要求は当該要求に応答して送信されるべき応答を指定してもよい。例えば、ニューラル・ネットワーク・トレーニング要求に対して、クライアント102は、要求されたニューラル・ネットワーク・トレーニング動作が完了したとの指示、場合によっては、当該ニューラル・ネットワークのパラメータのトレーニングされた値または当該トレーニングされた値にそこからクライアント102によりアクセスしうるメモリ位置の指示を要求することができる。別の例として、ニューラル・ネットワーク推論要求に対して、クライアント102は、推論動作を表す出力値を当該計算グラフの1つまたは複数の特定のノードに要求することができる。
システム100は、当該計算グラフにより表される動作を複数のデバイス116乃至122にわたって分割することで当該特定の出力を生成するための動作を実施する。システム100は当該動作を複数のデバイス116乃至122にデータ通信ネットワーク114、例えば、ローカル・エリアネットワーク(LAN)または広域ネットワーク(WAN)上で分割する。デバイス116乃至122は当該動作を実施し、適用可能な場合、夫々の出力または指示をシステム100に返し、システム100は当該要求された出力または指示をクライアント102に返すことができる。
ニューラル・ネットワーク動作を実施する任意のデバイス、例えば、デバイス116乃至122は、命令およびデータを格納するためのメモリ、例えば、ランダム・アクセスメモリ(RAM)および格納された命令を実行するためのプロセッサを含むことができる。一般的に、各デバイスは、他のデバイスと独立に動作を実施するハードウェア・リソースである。例えば、各デバイスはその処理ユニットを有することができる。当該処理ユニットはグラフィカル処理ユニット(GPU)または中央演算装置(CPU)であることができる。例として、1つのマシンは1つまたは複数のデバイス、例えば、複数のCPUおよびGPUをホストすることができる。かかるデバイスおよびマシンの例を図1Bに見いだすことができる。
図1Bは、システム100における計算グラフとして表されたニューラル・ネットワークに対する動作を分散するための例示的なフレームワークの概念図である。次に図1Bを参照すると、マシンの例が、コンピューティング・デバイス126、パーソナル・コンピュータ128、モバイル・デバイス130、およびサーバ132を含んでもよい。各マシンは、例えば、GPU116およびCPU118のような1つまたは複数のデバイスを含んでもよい。
各デバイスはまた、夫々の計算能力を有することができる。即ち、デバイスは異なる量のメモリ、処理速度、または他のアーキテクチャ特性を有することができる。したがって、幾つかのデバイスは他のデバイスができない動作を実施することができる。例えば、幾つかの動作は特定のデバイスのみを有する或る量のメモリを要求し、または、幾つかのデバイスは、特定のタイプの動作、例えば、推論動作のみを実施するように構成される。
図1Aを再度参照すると、システム100内のセッション・マネージャ104は、当該計算グラフの動作がその間に実施されるセッションを開始する要求をクライアント102から受信してもよい。セッション・マネージャ104は、当該計算グラフの動作を実施できる1組のデバイス、例えば、デバイス116乃至122を管理し、動作を実施するために利用できるプレーサ108を当該1組のデバイスに提供することができる。
プレーサ108は、当該計算グラフで実施されるべき動作ごとに、当該動作を実施する夫々のターゲット・デバイス、例えば、デバイス116、および幾つかの実装では、当該夫々のターゲット・デバイスが当該動作を実施するための時間を決定する。幾つかの動作を並列に実施でき、他の動作は、当該計算グラフ内の以前の動作を完了すること、例えば、他の動作が、入力として、当該以前の動作の出力を処理することを要求する。
当該デバイスがプレーサ108により割り当てられた動作を実施して出力を生成した後、実行器106は当該出力を取り出すことができる。実行器106は、当該要求に対する適切な応答、例えば、当該処理が完了したとの出力または指示を生成することができる。ついで、実行器106は当該応答をクライアント102に返すことができる。
セッション・マネージャ104はまた、当該計算グラフで実施すべき動作のセットを実行器106に提供する。実行器106は、動作のグラフ実行に関するランタイム統計値をデバイス116乃至122から定期的に取り出す。実行器106は当該ランタイム統計値をプレーサ108に提供し、プレーサ108はさらなる動作の配置とスケジューリングを再最適化することができる。
動作において、システム100は計算グラフを処理するための要求をクライアント102から受信してもよい。例えば、当該要求は、上述のように、当該計算グラフにより表されるニューラル・ネットワーク推論を指定された入力で実施する要求、当該計算グラフにより表されるニューラル・ネットワーク・トレーニング動作を指定された1組のトレーニング・データで実施する要求、または当該計算グラフにより表される他のニューラル・ネットワーク動作を実施する要求であることができる。
当該要求を受信すると、システム100は当該計算グラフを表すデータを取得してもよい。幾つかのケースでは、当該データが当該クライアントからの要求とともに送信される。他のケースでは、当該要求は当該計算グラフを識別し、システム100は、当該識別されたグラフを表すデータをメモリから取り出す。例として、当該グラフを表すデータは当該グラフ内のノードのアレイであることができる。各ノードは、動作タイプを示す情報、名前、および当該ノードに対する入ってくるエッジおよび当該ノードから出ていくエッジのリストを含むことができる。
システム100は、要求された動作を実施するための複数の利用可能なデバイスを識別してもよい。デバイスを、当該デバイスが現在他の動作を実施しておりさらに動作を割り当てることができないかまたはグラフ処理動作を実施するのに利用できない場合に、ビジーであると考えてもよい。当該デバイスを、当該デバイスにさらなる動作を割り当てられうる場合、例えば、当該さらに動作を当該デバイスによる動作のために待ち行列に入れることができる場合に、利用可能であると考えてもよい。
システム100は当該計算グラフを複数のサブグラフに分割してもよい。各サブグラフは当該計算グラフ内の1つまたは複数のノードを含む。システム100は、幾つかの例において、互いに隣接するが異なるデバイスに割り当てられる当該計算グラフ内のノードのペアを分解することで、これらのサブグラフを取得してもよい。
システム100は、サブグラフごとに、当該サブグラフ内の当該1つまたは複数のノードにより表される動作を夫々の利用可能なデバイスに割り当ててもよい。幾つかの実装では、システム100は、各サブグラフを、当該サブグラフ内のノードにより表される動作を実施するのに必要な計算能力を有するデバイスに割り当ててもよい。幾つかの実装では、当該クライアントからの要求は、特定のノードに対する動作を実施する特定のタイプのデバイスを識別するユーザにより指定されたデータを含む。
したがって、システム100は、当該計算グラフ内の各ノードを当該複数のデバイスの各デバイスに割り当てる複数のデバイスにわたる当該計算グラフの割当てを生成する。各サブグラフは、当該計算グラフ内の1つまたは複数のノードの所与のグループを含み、これは上述のように同一のデバイスに割り当てられてもよい。デバイス・マッピングに対する例示的なサブグラフを図1Bに見いだすことができる。この例において、計算グラフ140の例示的なサブグラフ140および140がそれぞれGPU116およびCPU118に割り当てられてもよい。GPU116およびCPU118はマシン126乃至132のうち異なるまたは同一のものに存在してもよい。動作において、GPU116およびCPU118はシステム100がそれらに割り当てた当該サブグラフに含まれるノードにより表される動作を実施してもよい。
システム100は当該デバイスに、それぞれ当該デバイスに割り当てられた当該サブグラフに含まれるノードの動作を実施させてもよい。幾つかの実装では、システム100は各デバイスに要求を送信して、当該各デバイスに割り当てられた当該サブグラフに含まれるノードの動作を開始してもよい。かかる要求をシステム100から受信したことに応答して、各デバイスは、当該デバイスに割り当てられた当該サブグラフに含まれるノードの動作を実施することに進んでもよい。
様々な依存性が当該計算グラフ内のノードおよびノードのグループの間に存在するとすると、かかるデバイスが当該計算グラフを集合的に実行できるようにするために様々なデバイスの間の通信を強調する必要があることになる。例えば、第1のデバイスで実行されている動作を表すノードは、入力として、第2の、遠隔に配置されたデバイス上で実行されている動作を表す別のノードの出力を受信してもよい。この例において、他のノードにより表される動作の出力の、第2のデバイスから第1のデバイスへの通信を、当該計算グラフの正確でタイムリな実行を保証するために効果的に協調する必要があってもよい。
幾つかの例では、当該デバイスが、入力および出力の互いとの交換を必要に応じて協調してもよい。これらの例において、当該デバイスの間の通信をシステム100と独立に行ってもよい。即ち、システム100は、その各サブグラフの動作を実行する要求を各デバイスに送信してもよく、当該要求に応答して、各デバイスはシステム100の要求に応答してその各サブグラフの動作を実行することに進んでもよく、それが、システム100による追加の介入なしに他のデバイスとの通信を協調することを含んでもよい。
幾つかの実装では、当該デバイスがシステム100と独立に通信できるようにするために、システム100は当該計算グラフを、それがノードの間の通信動作を表す追加のノードを含むように、修正する。特に、デバイスの各サブグラフが、当該デバイスにより実行されたとき、当該デバイスがシームレスに相手の動作を実行している別のデバイスと通信できるようにする動作を表すノードを含んでもよい。受信されたモデル入力がついで、修正された計算グラフにより表される動作に従って処理されてもよい。
具体的には、システム100は「送信」および「受信」ノードを当該計算グラフに挿入してもよい。各送信ノードは動作を表し、テンソルのようなデータが、当該送信ノードのデバイスと異なるデバイスに割り当てられる受信ノードに中継される。システム100は、当該グラフ内の任意のクロス・デバイス有向エッジを識別することで送信ノードおよび受信ノードのペアを挿入する当該グラフ内の位置を決定してもよい。クロス・デバイス有向エッジは、2つの異なるデバイスに割り当てるべき当該計算グラフ内のノードを接続する当該計算グラフ内の有向エッジである。システム100は、当該計算グラフの当該割当てを決定する間またはその後に、かかるクロス・デバイス有向エッジを識別してもよい。当該グラフに含まれる各クロス・デバイス有向エッジを識別すると、システム100は、各クロス・デバイス有向エッジを分割し、当該クロス・デバイス有向エッジの代わりに送信ノードおよび受信ノードのペアを挿入することで当該計算グラフを修正してもよい。この修正プロセスを、図2A乃至Cを参照して以下でさらに説明する。
図2A乃至Cは例示的な計算グラフを示す。例として、計算グラフ・システム、例えば、図1のシステム100Aは、所与の1組の入力が与えられたとき、計算グラフ200Aを用いて推論を計算する要求をクライアントから受信することができる。計算グラフ200Aは入力を例示的なソース201から受信し、出力を例示的なシンク215に提供してもよい。例示的なソース201およびシンク215は、例えば、当該計算グラフの1つまたは複数の他のノードであってもよい。
当該システムは、例えば、3つの異なるデバイスにわたって計算グラフ200Aを割り当てると決定してもよい。この決定を行うため、当該システムは計算グラフ200Aを分析して、サブグラフに分割し利用可能なデバイスに割り当てうる1つまたは複数のノードを識別してもよい。例えば、当該システムは、ノード204、212および214により形成された第1のチェーンを第1のデバイスに割り当て、ノード206、208、および210により形成された第2のチェーンを第2のデバイスに割り当て、ノード202を第3のデバイスに割り当てると決定してもよい。ノードの他の可能なチェーンが可能であるが、当該システムはサブグラフの数を最小化するチェーンを選択することができる。
この特定の割当てのもとで、当該システムは有向エッジ220Aおよび230Aをクロス・デバイス有向エッジとして識別してもよい。即ち、当該システムは、有向エッジ220Aおよび230Aがそれぞれ、当該システムが割り当てるとして決定したノードを異なるデバイスに接続すると認識してもよい。例えば、有向エッジ220Aはノード202をノード208に接続し、当該システムはそれらをそれぞれ第3のデバイスおよび第2のデバイスに割り当てると決定していることが分かる。同様に、有向エッジ230Aは、第2のデバイスに対応するノード208を第1のデバイスに対応するノード212に拡張することでデバイス境界と交差する。
計算グラフ200Aに含まれる各クロス・デバイス有向エッジを識別したことに応答して、当該システムは、計算グラフ200Aを修正して、修正された計算グラフ、例えば、図2Bに示された修正された計算グラフ200Bを生成することに進んでもよい。さらに、当該システムは、ノード202および208の間の送信ノードおよび受信ノードのペアを有向エッジ220Aの代わりに挿入してもよい。同様な方式で、当該システムはまた、ノード208および212の間の送信ノードおよび受信ノードのペアを有向エッジ230Aの代わりに挿入してもよい。有向エッジは各送信ノードまたは受信ノードとかかる送信ノードまたは受信ノードに隣接する各ノードとの間に挿入されることが分かる。
次に図2Bを参照すると、修正された計算グラフ200Bは、当該システムにより修正された計算グラフ200Aのバージョンを表し、送信ノードおよび受信ノードの2つのペアを含むことが分かる。特に、第1の送信ノードSはノード202および208の間に挿入されており、対応する第1の受信ノードRが第1の送信ノードSおよびノード208の間に挿入されている。これらの挿入により、当該システムは、第1の送信ノードSをノード202と同一のデバイス(即ち、第3のデバイス)に割り当て、第1の受信ノードRをノード208と同一のデバイス(即ち、第2のデバイス)に割り当てる。双方向ブリッジ220Bは第1の送信ノードSを第1の受信ノードRに接続する。ブリッジ220Bを、第1の送信ノードSおよび第1の受信ノードRの間の通信チャネルを表すとみなすことができる。
実行時に、第1の送信ノードSおよび第1の受信ノードRにより表される動作は、第2のおよび第3のデバイスが所定の方式で通信できるようにする。例えば、かかる動作の実行が、特定の通信プロトコルに従う第2のおよび第3のデバイスを含んでもよい。各デバイスにより実行される各デバイスおよび/またはノードのアドレス情報がまた、これらの動作に組み込まれてもよい。このように、第1の送信ノードSおよび第1の受信ノードRは、それらの各サブグラフが満足に実行されるように第2のおよび第3のデバイスの間で実施される必要がありうる全ての通信プロセスをカプセル化してもよい。これらの通信プロセスを、図3および4AおよびBを参照して以下でさらに説明する。
同様に、第2の送信ノードSがノード208および212の間に挿入されており、対応する第2の受信ノードRが第2の送信ノードSおよびノード212の間に挿入されている。これらの挿入により、当該システムは第2の送信ノードSをノード208と同一のデバイス(即ち、第2のデバイス)に割り当て、第1の受信ノードRをノード208と同一のデバイス(即ち、第1のデバイス)に割り当てる。双方向ブリッジ230Bは第2の送信ノードSを第2の受信ノードRに接続し、第2の送信ノードSおよび第2の受信ノードRの間の通信チャネルを表すとみなすことができる。第1の送信ノードSおよび第1の受信ノードRのように、第2の送信ノードSおよび第2の受信ノードRは通信を、第2のおよび第1のデバイスの間で容易に協調させることができる。
図2Cにおける修正された計算グラフ200Cにより示されるように、システム100は、各送信ノードが1つの各サブグラフに割り当てられ、各受信ノードが別の各サブグラフに割り当てられるように、割当てを修正してもよい。例えば、第1の送信ノードSが、当該システムが第3のデバイスに割り当てたサブグラフ240の一部として、ノード202とともに、マシン130に含まれる第3のデバイスに割り当てられてもよい。同様に、第1の受信ノードRおよび第2の送信ノードSが、当該システムが第2のデバイスに割り当てたサブグラフ246の一部として、ノード206、208、および210とともに、マシン126に含まれる第2のデバイスに割り当てられてもよい。さらに、第2の受信ノードRが、当該システムが第1のデバイスに割り当てたサブグラフ242の一部として、ノード204、212、および214とともに、マシン132に含まれる第1のデバイスに割り当てられてもよい。
実行時に、第1の送信ノードSにより表される動作が、ノード202の出力を第1の受信ノードRに中継するステップを含んでもよい。この交換が、例えば、マシン130および126がアクセスを有するネットワーク215上のチャネル220Bにより発生してもよい。ネットワーク215は、図1と関連して上述したようにネットワーク114と同様であってもよい。この通信を行うために利用されるプロトコルが、送信ノードおよび受信ノードSおよびRの第1のペアにより表される動作に反映されてもよく、サブグラフ240および246の実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に依存してもよい。第1の受信ノードRにより表される動作は、それが第1の送信ノードSから受信するノード202により表される動作の出力を入力としてノード208に渡すステップを含んでもよい。
同様に、第2の送信ノードSにより表される動作が、ノード208により表される動作の出力を第2の受信ノードRに中継するステップを含んでもよい。この交換が、例えば、マシン132および126がアクセスを有するネットワーク215上のチャネル230Bにより生じてもよい。この通信を行うために利用されるプロトコルが、送信ノードSおよび受信ノードおよびRの第2のペアにより表される動作に反映されてもよく、サブグラフ246および242の実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に依存してもよい。第2の受信ノードRにより表される動作は、それが第2の送信ノードSから受信するノード208により表される動作の出力を入力としてノード212に渡すステップを含んでもよい。
図3は、計算グラフに含まれる例示的な送信ノードおよび受信ノードの実行を通じて提供された例示的なプロセス300の流れ図である。簡単のため、プロセス300を、1つまたは複数の位置に配置された1つまたは複数のコンピュータのシステムにより実施されているとして説明する。プロセス300と関連して説明した計算グラフおよび動作は上述したものであってもよい。例えば、プロセス300を、図1と関連して上述したシステム100により提供される計算グラフの1つまたは複数の部分の実行を通じて実施してもよい。
上述のように、送信ノードおよび受信ノードにより表される動作が、それらが割り当てられているデバイス間の双方向通信を生み出してもよい。それぞれ送信ノードSおよび受信ノードおよびRにより表される動作330および340が、最初にかかる双方向通信(332および342)に対して使用するための通信プロトコルの決定を含んでもよい。送信ノードおよび受信ノードのペアにより表される動作により利用される通信プロトコルが、手元の当該サブグラフの実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に依存してもよい。この決定プロセスを、図4AおよびBを参照して以下でさらに説明する。
送信ノードSにより表される動作330はついで、上流ノード310の動作の出力が提供されているかどうかを判定するように動作してもよい(310)。かかる出力が、割り当てられたデバイスによるノード310および送信ノードSを含むサブグラフの実行により生成されたテンソルを含んでもよい。いったん提供されると、送信ノードSにより表される動作330が、ノード310により表される動作の出力を入力として受信ノードRにより表される動作340に提供するように動作してもよく、動作340が、ノード320により表される動作への入力と同一のものを提供するように動作してもよい。
受信ノードRにより表される動作340の実行は、1つまたは複数のメッセージを対応する送信ノードSに送信するステップを含んでもよい(344)。かかるメッセージが、受信ノードRが属するサブグラフが対応する送信ノードSの実行により入力を受信する準備ができているとの指示としての役割を果たしてもよい。このように、これらのメッセージを、1つまたは複数の上流動作によりデータ出力を受信する要求とみなすことができる。図3の例において、受信ノードRにより表される動作340が、ノード310により表される動作の出力を含む入力を送信ノードSから受信してもよい。
実行時に、送信ノードSにより表される動作330が、かかるメッセージの受信に応答してデータを中継することを含んでもよい。幾つかの例では、送信ノードSにより表される動作330は、かかるメッセージが受信されるまで、ノード310の出力により表される動作を中継しなくてもよい(336)。このように、デバイスの間の情報のフローを、テンソルの交換が成功することを保証するように規制してもよい。これらの例において、ノード310により表される動作の出力を、送信ノードSを実行しているデバイスにローカルな1つまたは複数のメモリ領域にキャッシュまたは格納してもよい(337)。幾つかの実装では、当該動作のこの出力を、当該デバイスが属するマシン、または1つまたは複数のネットワークアクセス可能デバイス上のどこかに格納してもよい。受信ノードのメッセージが受信されると、当該動作の格納された出力を、受信ノードRに関連付けられたパーティに通信し(336乃至338)、続いてメモリからフラッシュまたは削除してもよい。送信ノードSにより表される動作からの出力が入力として受信されると判定すると(346)、受信ノードRにより表される動作は、かかる出力を入力として下流ノード320により表される動作に提供するように動作してもよい(348)。
それぞれ送信ノードSおよび受信ノードおよびRにより表される動作330および340の実行を通じて、関連付けられたサブグラフに対応するニューラル・ネットワークまたは他の機械学習モデルの一部の実行(これは簡単のため「関連付けられたサブグラフの実行」と称される)に対して要求された全てのデータ交換を、当該デバイスが当該サブグラフを実行することにより協調し実行してもよいことが分かる。動作330および340を実行しているデバイスのペアに提供される通信オートノミーが、協調通信の負荷をバックエンドからシフトする役割を果たしてもよい。このように、システム100のような計算グラフ・システムは、かかるデバイスの間の通信をアクティブに規制するのではなく、デバイスがサブグラフを実行している間に1つまたは複数の他のプロセスを実施できてもよい。少なくともこの理由のため、送信ノードおよび受信ノードのペアを含むように計算グラフを修正することで、計算グラフを分散方式で処理するのに必要なネットワーク通信の時間コストと量を削減するのを支援してもよい。
幾つかの実装では、送信ノードSおよび受信ノードおよびRにより表される動作330および340を、所与のデバイスの全ての入ってくるおよび/または出ていく通信を扱う際に利用してもよい。例えば、受信ノードRにより表される動作340は、入ってくる通信を送信ノードSにより表される動作330から、ならびに1つまたは複数の他の送信ノードにより表される動作から、受信するように動作してもよい。同様に、送信ノードSにより表される動作330は、出ていく通信を入力として受信ノードRにより表される動作340、ならびに1つまたは複数の他の受信ノードにより表される動作に提供するように動作してもよい。このように、送信ノードSおよび受信ノードおよびRにより表される動作330および340は、ハブ風の関数をそれらが割り当てられたデバイスに提供するように動作してもよい。
送信ノードSおよび受信ノードおよびRは、かかるサブグラフにより表されるニューラル・ネットワークまたはニューラル・ネットワークの一部を1つのデバイスでトレーニングし、のちに別のデバイス割り当てることを可能とする方式でサブグラフを区分ける役割を果たしてもよい。送信ノードSおよび受信ノードおよびRはまた、1つまたは複数のサブグラフにより表されるニューラル・ネットワークまたはニューラル・ネットワークの部分を新たな方法でトレーニングまたはテストできるようにしてもよい。例えば、受信ノードRにより表される動作340は、受信ノードRから下流の計算グラフの1つまたは複数の部分をトレーニングするために、ノード310により表される動作により出力されているテンソルをシミュレートする入力をノード320により表される動作に提供してもよい。幾つかの実装では、図1を参照して上述したクライアント・デバイス102のようなクライアント・デバイスが、受信ノードRにかかる入力を提供するために利用されてもよい。これらの実装において、当該クライアント・デバイスは、所定のテンソルを出力として動作330に提供する特殊ノードにより表される動作を実行してもよく、動作330が当該クライアント・デバイスで実行されてもよい。かかる特殊ノードを、計算グラフの上流にあるノードの受信ノードRおよびノード320からの置き換えとみなすことができる。このように、ユーザが、特殊ノードおよび動作330により表される動作をそれらのクライアント・デバイスで実行することで、1つまたは複数の下流サブグラフにより表されるニューラル・ネットワークまたはニューラル・ネットワークの一部を遠隔にテストおよび/またはトレーニングできてもよい。このタイプの特殊ノードにより表される動作によるテンソル出力が、例えば、手元の当該サブグラフの実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に基づいて静的な、ユーザ定義された、ランダムに生成された、または決定されたものであってもよい。
幾つかの実装では、送信ノードSおよび受信ノードおよびRと関連してデバイスの間で交換されるデータが圧縮されてもよい。即ち、送信ノードSにより表される動作330は、ノード310により表される動作の出力に対して1つまたは複数の圧縮プロセスを実施するように動作してもよい。同様に、受信ノードRにより表される動作340が、送信ノードSにより表される動作330の実行による出力として提供される圧縮されたデータへの1つまたは複数の解凍プロセスを実施するように動作してもよい。実施される当該圧縮動作が、当該2つのデバイスの間のデータを送信するのに適した任意の従来の圧縮アルゴリズムを含んでもよい。例えば、当該デバイスの間で交換されるデータに下方変換、切詰め、またはそれらの組合せを行ってもよい。同様に、かかるデータが運搬するデータはまた、確率的丸めを受けてもよい。かかる圧縮動作が、手元の当該サブグラフの実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に基づいて選択されてもよい。例えば、圧縮動作が、機械学習モデルの雑音耐性に基づいて選択されてもよい。圧縮を動作330および340と関連して説明したが、かかる動作が、様々な信号処理および条件付け技術の何れかを利用してもよいことは理解されるべきである。
上述のように、送信ノードおよび受信ノードのペアにより表される動作により利用される通信プロトコルは、手元の当該サブグラフの実行に関連付けられたデバイス、マシン、ノード、およびネットワークの1つまたは複数の特性に依存しうる。図4AおよびBは、送信ノードおよび受信ノードを含みデバイスに割り当てられる計算グラフ400Aおよび400Bの2つの部分を示す。計算グラフ400Aに含まれる送信ノードがデバイス412Aに割り当てられており、この例ではそれはGPUであり、計算グラフ400Aに含まれる受信ノードがデバイス414Aに割り当てられており、この例でもそれがGPUであることが分かる。この例において、GPU412AおよびGPU414Aは同一のマシン410A内に存在する。計算グラフ400Aの送信ノードおよび受信ノードを送信するデバイスは両方ともGPUであり両方とも同一のマシン410A内に存在するので、それらの交換を、リモート・プロシージャ・コール(RPC)または他の局所化された要求/応答プロトコルのもとで行うのが有利であるかもしれない。
幾つかの実装では、使用される当該特定の通信プロトコルが、サブグラフ割当ての後に送信ノードおよび受信ノードにより表される動作の実行を通じて決定されてもよい。かかる決定を、例えば、これらの動作に既知なアドレス情報に基づいて行ってもよい。この例において、GPU412AおよびGPU414Aは当該2つのデバイスが両方ともマシン410A内に存在することを示す送信ノードおよび受信ノードに関連付けられた動作を実行してもよく、続いてRPCの下での通信を協調する。他の実装において、通信プロトコルが、それらの挿入時に各送信ノードおよび受信ノードにより表される動作内であらかじめ決定され、示されてもよい。これらの実装において、各通信プロトコルを、上述したものと同様に決定してもよい。
計算グラフ400Bに含まれる送信ノードがデバイス422Bに割り当てられ、これがCPUまたはGPUであってもよいこと、計算グラフ400Bに含まれる受信ノードがデバイス442Bに割り当てられ、これがCPUまたはGPUであってもよいことが分かる。デバイス422Bがマシン420Bと存在してもよく、デバイス442Bがマシン440Bと存在してもよい。通信プロトコルが、上述したのと同様な技術の使用を通じてこれらのデバイスに対して決定されてもよい。この例において、デバイス422Bおよび442Bの間の交換がリモート直接メモリアクセス(RDMA)プロトコルのもとで行われてもよい。このプロトコルは、それが各デバイスに関連付けられたオペレーティング・システムを含むことなく通信を実施できるという点で、2つの異なるマシンのデバイスに対して有利であるかもしれない。この例において、デバイス422Bおよび442Bは、当該2つのデバイスが異なるデバイスに存在することを示す送信ノードおよび受信ノードに関連付けられた動作を実行し、続いてRDMAのもとで通信を協調してもよい。
図5は、送信ノードおよび受信ノードを含むように計算グラフを修正するための例示的なプロセス500の流れ図である。簡単のため、プロセス500を、1つまたは複数の位置に配置された1つまたは複数のコンピュータのシステムにより実施されるとして説明する。例えば、適切にプログラムされた計算グラフ・システム、例えば、図1の計算グラフ・システム100がプロセス500を実施することができる。
当該システムは、複数のノードおよび有向エッジを含む計算グラフを表すデータを取得してもよい(502)。例えば、計算グラフは、要求を1つまたは複数のクライアント・デバイスから受信した後に、計算グラフ・システムにより取得されてもよい。幾つかの例では、当該計算グラフ内の各ノードは動作のインスタンスである。
当該システムは複数のデバイスにわたる当該計算グラフの割当てを識別するデータを取得してもよい(504)。例えば、計算グラフ・システムは、取得された計算グラフに含まれる各ノードがどのように複数の利用可能なデバイスにわたって割り当てられるかを判定してもよい。幾つかの実装では、これが、1つまたは複数のマシンに含まれるハードウェア・リソースにわたる当該計算グラフの割当てを識別するデータを取得するステップを含んでもよい。
当該システムは、異なるデバイスに割り当てられたノードを接続する当該計算グラフ内の1つまたは複数の有向エッジを識別してもよい(506)。例えば、計算グラフ・システムは1つまたは複数のクロス・デバイス有向エッジを識別してもよい。
当該システムは、識別された有向エッジにより接続されたノードのペアの間に送信ノードおよび受信ノードを挿入してもよい(508)。例えば、計算グラフ・システムは、各識別されたクロス・デバイス有向エッジを、双方向ブリッジにより接続された送信ノードおよび受信ノードのペアで置き換えてもよい。そうする際、当該システムはさらに、有向エッジを当該送信ノードおよび各第1のノードの間に挿入し、有向エッジを当該受信ノードおよび各第2のノードの間に挿入してもよい。
幾つかの実装では、データを、送信ノードおよび受信ノードのペア内の各ノードにより表される動作の間で独立に交換されてもよい。幾つかの事例では、送信ノードおよび受信ノードのペア内の各ノードは、入力として、送信ノードおよび受信ノードのペアが割り当てられている各ハードウェア・リソースとマシンに対応するプロトコルに従って通信される当該ペア内の他のノードにより表される動作の出力を受信する動作を表してもよい。上述のように、かかるプロトコルは、例えば、RPCおよびRDMAを含んでもよい。
各送信ノードは、例えば、入力として、各第1のノードにより表される動作の出力を受信し、各第1のノードにより表される動作の出力を、出力として、受信ノードに提供する動作を表してもよい。各第1のノードにより表される動作の出力は例えば、テンソルであってもよい。同様に、各受信ノードは、入力として、当該送信ノードにより表される動作の出力を受信し、当該送信ノードにより表される動作の出力を、出力として、各第2のノードに提供する動作を表してもよい。幾つかの実装では、当該受信ノードにより表される動作はさらに、当該送信ノードにより表される動作の出力の要求を、出力として、当該送信ノードに提供してもよい。これらの実装において、当該送信ノードにより表される動作は、各第1のノードにより表される動作の出力を、出力として、当該受信ノードから受信された1つまたは複数の要求に応答して当該受信ノードに提供してもよい。
当該システムは、割当てを修正して送信ノードおよび受信ノードをデバイスに割り当ててもよい(510)。例えば、計算グラフ・システムは、各送信ノードを当該送信ノードから上流のノードと同一のデバイスに割り当ててもよく、同様に各受信ノードを当該受信ノードから下流のノードと同一のデバイスに割り当ててもよい。
当該システムは、当該ノードにより表される動作を当該複数のデバイスに当該修正された割当てに従って割り当ててもよい(512)。例えば、計算グラフ・システムは、複数のデバイスの各々が各サブグラフに含まれる動作を実施することを要求してもよい。幾つかの実装では、当該システムは当該計算グラフを複数のサブグラフに分割してもよい。
本明細書で説明した主題および当該機能的動作の実施形態をデジタル電子回路で、有形に-具現化されたコンピュータソフトウェアまたはファームウェア、当該構造開示された本明細書およびそれらの構造的な均等物で、またはそれらの1つまたは複数の組合せでを含めて、コンピュータ・ハードウェアで実装することができる。本明細書で説明した主題の実施形態を、1つまたは複数のコンピュータ・プログラム、即ち、コンピュータ可読プログラム・キャリア、例えば、データ処理装置により実行するためのまたはその動作を制御するための有形非一時的プログラム・キャリアで符号化されたコンピュータ・プログラム命令の1つまたは複数のモジュールとして実装することができる。あるいはまたはさらに、当該プログラム命令は、データ処理装置により実行するための適切な受信機装置に送信するための情報を符号化するために生成される、人工的に生成された伝播信号、例えば、マシン生成された電気的、光学的、または電磁気信号で符号化されることができる。当該コンピュータ記憶媒体は、マシン可読記憶デバイス、マシン可読記憶基板、ランダムまたはシリアル・アクセス・メモリデバイス、またはそれらの1つまたは複数の組合せであることができる。当該コンピュータ記憶媒体は、しかし、伝播信号ではない。
「データ処理装置」という用語はデータを処理するための全ての種類の装置、デバイス、およびマシンを包含し、例としてプログラム可能プロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む。当該装置は特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特殊用途向け集積回路)を含むことができる。当該装置はまた、ハードウェアに加えて、問題の当該コンピュータ・プログラムに対する実行環境、例えば、プロセッサファームウェア、プロトコル・スタック、データベース管理システム、オペレーティング・システム、またはそれらの1つまたは複数の組合せを構成するコードを生成するコードを含むことができる。
コンピュータ・プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと称するかまたはそれとして説明されてもよい)は、コンパイル型またはインタプリタ型言語、または宣言型または手続型言語を含む任意の形態のプログラミング言語で書かれることができ、スタンドアロンプログラムまたはモジュールとして、コンピューティング環境で使用するのに適したコンポーネント、サブルーチン、または他のユニットとしてを含めて、任意の形態で展開されることができる。コンピュータ・プログラムはファイルシステム内のファイルに対応してもよいがその必要はない。プログラムを、他のプログラムまたはデータを保持するファイルの一部、例えば、マークアップ言語ドキュメントに格納された1つまたは複数のスクリプトに、問題となっているプログラム専用の単一のファイルに、または複数の協調ファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を格納するファイルに、格納することができる。コンピュータ・プログラムは、1つのコンピュータで実行されるか、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散し通信ネットワークにより相互接続される複数のコンピュータで実行されるように展開されることができる。
本明細書で使用される際、「エンジン」、または「ソフトウェアエンジン」は、入力と異なる出力を提供する、ソフトウェアで実装された入出力システムである。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトのような機能の符号化されたブロックであることができる。各エンジンを、1つまたは複数のプロセッサおよびコンピュータ可読媒体を含む、任意の適切なタイプのコンピューティング・デバイス、例えば、サーバ、モバイル・フォン、タブレットコンピュータ、ノートブックコンピュータ、音楽プレイヤ、電子書籍リーダ、ラップトップまたはデスクトップコンピュータ、PDA、スマートフォン、または他の静的またはポータブルデバイスで実装することができる。さらに、2つ以上の当該エンジンを同一のコンピューティング・デバイス、または異なるコンピューティング・デバイスで実装してもよい。
本明細書で説明した当該プロセスおよび論理フローを、入力データで動作し出力を生成することで機能を実施するための1つまたは複数のコンピュータ・プログラムを実行する1つまたは複数のプログラム可能コンピュータにより実施することができる。当該プロセスおよび論理フローはまた、特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特殊用途向け集積回路)により実施でき、装置を特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特殊用途向け集積回路)として実装することもできる。
コンピュータ・プログラムの実行に適したコンピュータは、例として、汎用目的または特殊目的マイクロプロセッサまたはその両方、または任意の他種の中央演算装置を含み、または、それに基づくことができる。一般的に、中央演算装置は、読取専用メモリまたはランダム・アクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令を実施または実行するための中央演算装置および命令およびデータを格納するための1つまたは複数のメモリデバイスである。一般的に、コンピュータはまた、データを格納するための1つまたは複数の大容量記憶デバイス、例えば、磁気、磁気光ディスク、または光ディスクを含むか、またはデータを送受信するようにそれらに動作可能に接続される。しかし、コンピュータはかかるデバイスを有する必要はない。さらに、コンピュータを、幾つか例を挙げると、別のデバイス、例えば、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイル・オーディオまたはビデオ・プレイヤ、ゲーム・コンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、例えば、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブに埋め込むことができる。
コンピュータ・プログラム命令およびデータを格納するのに適したコンピュータ可読媒体は、例えば、EPROM、EEPROM、およびフラッシュ・メモリデバイスと、磁気ディスク、例えば、内部ハード・ディスクまたは取外し可能ディスクと、磁気光ディスクと、CDROMおよびDVD-ROMディスクにより、例示的な半導体メモリデバイスを含む、全ての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。当該プロセッサおよび当該メモリは特殊目的論理回路により補完するかまたは当該回路に組み込むことができる。
ユーザとの対話を提供するために、本明細書で説明した主題の実施形態を、ディスプレイデバイス、例えば、CRT(カソード・レイ・チューブ)モニタ、LCD(液晶ディスプレイ)モニタ、または、情報を当該ユーザに表示するためのOLEDディスプレイ、ならびに入力を当該コンピュータに提供するための入力デバイス、例えば、キーボード、マウス、または存在センシティブディスプレイまたは他のサーフェスを有するコンピュータで実装することができる。他種のデバイスをユーザとの対話を提供するためにも使用でき、例えば、当該ユーザに提供されるフィードバックは、センサフィードバック、例えば、視覚的フィードバック、可聴フィードバック、または触覚フィードバックからなる任意の形態であることができ、および当該ユーザからの入力を音響、会話、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、リソースを当該ユーザにより使用されるデバイスと送受信することで、例えば、ユーザのクライアント・デバイス上のウェブ・ブラウザに当該ウェブ・ブラウザから受信された要求に応答してウェブ・ページを送信することで、ユーザと対話することができる。
本明細書で説明した主題の実施形態を、バックエンドコンポーネントを、例えば、データサーバとして含むか、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含むか、またはフロントエンドコンポーネント、例えば、ユーザがそれを通じて本明細書で説明した主題の実装と対話できるグラフィカルユーザ・インタフェースまたはウェブ・ブラウザを有するクライアントコンピュータ、または1つまたは複数のかかるバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティング・システムで実装することができる。当該システムのコンポーネントは任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークにより相互接続されることができる。通信ネットワークの例はローカル・エリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、例えば、インターネットを含む。
当該コンピューティング・システムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般に互いから離れており、一般に通信ネットワークを通じて対話する。クライアントおよびサーバの当該関係は、当該夫々のコンピュータ上で実行され互いに対してクライアントサーバ関係を有するコンピュータ・プログラムにより生ずる。
本明細書は多数の具体的な実装詳細を含むが、これらを、クレームされうるもの任意の発明の範囲に対する制限として解釈すべきではなく、特定の発明の特定の実施形態に固有でありうる特徴の説明として理解すべきである。別々の実施形態の文脈において本明細書で説明した特定の特徴をまた、単一の実施形態における組合せで実装することができる。反対に、単一の実施形態の文脈で説明した様々な特徴をまた、複数の実施形態で別々にまたは任意の適切な部分的組合せで実装することができる。さらに、特徴は特定の組合せで動作するように上述され最初にそのようにクレームされているかもしれないが、クレームされた組合せからの1つまたは複数の特徴を幾つかのケースでは当該組合せから実施してもよく当該クレームされた組合せは部分的組合せまたは部分的組合せの変形に関連してもよい。
同様に、動作を図面において特定の順序で説明したが、これは、所望の結果を実現するために、かかる動作を示した特定の順序でまたは逐次的順序で実施されること、または全ての示された動作が実施されることを要求するものと理解されるべきではない。特定の環境において、マルチタスキングおよび並列処理が有利であるかもしれない。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの当該分離は、全ての実施形態においてかかる分離を要求するものと理解されるべきではなく、当該説明されたプログラムコンポーネントおよびシステムを一般に単一のソフトウェア製品に統合するかまたは複数のソフトウェア製品にパッケージ化できることは理解されるべきである。
当該主題の特定の実施形態を説明した。他の実施形態は添付の特許請求の範囲内にある。例えば、特許請求の範囲で記載した動作を異なる順序で実施して、依然として所望の結果を実現することができる。1例として、添付図面に示したプロセスは、所望の結果を実現するために示した特定の順序、または逐次的順序を必ずしも要求しない。特定の実装において、マルチタスキングおよび並列処理が有利であるかもしれない。
100 計算グラフ・システム
102 クライアント
104 セッション・マネージャ
106 実行器
108 プレーサ
114 ネットワーク
116 デバイス
118 デバイス
120 デバイス
122 デバイス

Claims (25)

  1. 計算グラフを表すデータを取得するステップであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、ステップと、
    前記計算グラフにより表された計算を実行するための要求を受信するステップであって、前記要求が前記計算のための入力を識別する、ステップと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するステップであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、ステップと、
    前記計算グラフを複数のサブグラフに分割するステップであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、ステップと、
    通信動作を表す通信ノードを各サブグラフに加えるステップであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信し、第1のデバイスおよび第2のデバイスの間の入力または出力データを通信するための通信動作を表す前記通信ノードの各々は、前記第1および第2のデバイスの各々に関連付けられるオペレーティングシステムが関与することなく前記第1のデバイスおよび前記第2のデバイスの間の通信を実施することができるように構成される、ステップと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるステップと
    を含む、方法。
  2. 前記複数のデバイスが、単一のマシンでホストされる2以上のデバイスを含む、請求項1に記載の方法。
  3. 前記複数のデバイスは、グラフィカル処理ユニット(GPU)である演算装置を有するデバイスと中央演算装置(CPU)である演算装置を有するデバイスとを含む、請求項1に記載の方法。
  4. 計算グラフを表すデータを取得するステップであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、ステップと、
    前記計算グラフにより表された計算を実行するための要求を受信するステップであって、前記要求が前記計算のための入力を識別する、ステップと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するステップであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、ステップと、
    前記計算グラフを複数のサブグラフに分割するステップであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、ステップと、
    通信動作を表す通信ノードを各サブグラフに加えるステップであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信する、ステップと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるステップと
    を含み、
    前記通信ノードは、第1のデバイスに割り当てられた第1のサブグラフに加えられた送信ノードと、第2のデバイスに割り当てられた第2のサブグラフに加えられた受信ノードとを含み、
    前記第1のサブグラフを前記第2のサブグラフに接続する前記計算グラフにおけるエッジは、前記第1のサブグラフの1つまたは複数のノードから前記送信ノードへの1つまたは複数のエッジと、前記送信ノードおよび前記受信ノードとの間の双方向エッジと、前記受信ノードから前記第2のサブグラフの1つまたは複数のノードへの1つまたは複数のエッジとによって置き換えられる、方法。
  5. 前記第1のデバイスおよび前記第2のデバイスは、同じマシンにおいてホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が局所化された要求および応答プロトコルのもとで行われる、請求項4記載の方法。
  6. 前記局所化された要求および応答プロトコルが、リモート・プロシージャ・コール・プロトコルである、請求項5に記載の方法。
  7. 前記第1のデバイスおよび前記第2のデバイスが、異なるマシンでホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が、リモート直接メモリアクセスプロトコルのもとで行われる、請求項4に記載の方法。
  8. 前記通信ノードの各々が、送信ノードまたは受信ノードのいずれかであり、
    各送信ノードは、前記送信ノードから上流のノードと同じデバイスに割り当てられ、
    各受信ノードは、前記受信ノードから下流のノードと同じデバイスに割り当てられる、請求項1に記載の方法。
  9. 1つまたは複数の位置における1つまたは複数のコンピュータを含むシステムであって、前記1つまたは複数のコンピュータは、前記システムに複数のアクションを実行させるように動作可能な命令を記憶し、前記複数のアクションが、
    計算グラフを表すデータを取得するアクションであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、アクションと、
    前記計算グラフにより表された計算を実行するための要求を受信するアクションであって、前記要求が前記計算のための入力を識別する、アクションと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するアクションであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、アクションと、
    前記計算グラフを複数のサブグラフに分割するアクションであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、アクションと、
    通信動作を表す通信ノードを各サブグラフに加えるアクションであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信し、第1のデバイスおよび第2のデバイスの間の入力または出力データを通信するための通信動作を表す前記通信ノードの各々は、前記第1および第2のデバイスの各々に関連付けられるオペレーティングシステムが関与することなく前記第1のデバイスおよび前記第2のデバイスの間の通信を実施することができるように構成される、アクションと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるアクションと
    を含む、システム。
  10. 前記複数のデバイスが、単一のマシンでホストされる2以上のデバイスを含む、請求項9に記載のシステム。
  11. 前記複数のデバイスは、グラフィカル処理ユニット(GPU)である演算装置を有するデバイスと中央演算装置(CPU)である演算装置を有するデバイスとを含む、請求項9に記載のシステム。
  12. 1つまたは複数の位置における1つまたは複数のコンピュータを含むシステムであって、前記1つまたは複数のコンピュータは、前記システムに複数のアクションを実行させるように動作可能な命令を記憶し、前記複数のアクションが、
    計算グラフを表すデータを取得するアクションであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、アクションと、
    前記計算グラフにより表された計算を実行するための要求を受信するアクションであって、前記要求が前記計算のための入力を識別する、アクションと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するアクションであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、アクションと、
    前記計算グラフを複数のサブグラフに分割するアクションであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、アクションと、
    通信動作を表す通信ノードを各サブグラフに加えるアクションであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信する、アクションと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるアクションと
    を含み、
    前記通信ノードは、第1のデバイスに割り当てられた第1のサブグラフに加えられた送信ノードと、第2のデバイスに割り当てられた第2のサブグラフに加えられた受信ノードとを含み、
    前記第1のサブグラフを前記第2のサブグラフに接続する前記計算グラフにおけるエッジは、前記第1のサブグラフの1つまたは複数のノードから前記送信ノードへの1つまたは複数のエッジと、前記送信ノードおよび前記受信ノードとの間の双方向エッジと、前記受信ノードから前記第2のサブグラフの1つまたは複数のノードへの1つまたは複数のエッジとによって置き換えられる、システム。
  13. 前記第1のデバイスおよび前記第2のデバイスは、同じマシンにおいてホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が局所化された要求および応答プロトコルのもとで行われる、請求項12に記載のシステム。
  14. 前記局所化された要求および応答プロトコルが、リモート・プロシージャ・コール・プロトコルである、請求項13に記載のシステム。
  15. 前記第1のデバイスおよび前記第2のデバイスが、異なるマシンでホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が、リモート直接メモリアクセスプロトコルのもとで行われる、請求項12に記載のシステム。
  16. 前記通信ノードの各々が、送信ノードまたは受信ノードのいずれかであり、
    各送信ノードは、前記送信ノードから上流のノードと同じデバイスに割り当てられ、
    各受信ノードは、前記受信ノードから下流のノードと同じデバイスに割り当てられる、請求項9に記載のシステム。
  17. 計算を実行するための前記要求がクライアントから受信され、
    前記計算グラフの前記ノードが、前記要求において識別される入力を受信するためのリソースを表す1つまたは複数のノードを含み、
    前記計算グラフの前記ノードが、前記複数のデバイスにより実行される前記要求された計算の出力を提供するためのシンクを表す1つまたは複数のノードを含み、
    前記複数のアクションは、前記要求に応答して、前記シンクから受信された出力を前記クライアントに提供するアクションを含む、請求項9に記載のシステム。
  18. 命令を記録する非一時的コンピュータ可読記録デバイスであって、前記命令は、1つまたは複数のコンピュータのシステムにより実行されたときに、前記システムに複数のアクションを実行させ、前記アクションが、
    計算グラフを表すデータを取得するアクションであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、アクションと、
    前記計算グラフにより表された計算を実行するための要求を受信するアクションであって、前記要求が前記計算のための入力を識別する、アクションと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するアクションであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、アクションと、
    前記計算グラフを複数のサブグラフに分割するアクションであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、アクションと、
    通信動作を表す通信ノードを各サブグラフに加えるアクションであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信し、第1のデバイスおよび第2のデバイスの間の入力または出力データを通信するための通信動作を表す前記通信ノードの各々は、前記第1および第2のデバイスの各々に関連付けられるオペレーティングシステムが関与することなく前記第1のデバイスおよび前記第2のデバイスの間の通信を実施することができるように構成される、アクションと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるアクションと
    を含む、記録デバイス。
  19. 前記複数のデバイスが、単一のマシンでホストされる2以上のデバイスを含む、請求項18に記載の記録デバイス。
  20. 前記複数のデバイスは、グラフィカル処理ユニット(GPU)である演算装置を有するデバイスと中央演算装置(CPU)である演算装置を有するデバイスとを含む、請求項18に記載の記録デバイス。
  21. 命令を記録する非一時的コンピュータ可読記録デバイスであって、前記命令は、1つまたは複数のコンピュータのシステムにより実行されたときに、前記システムに複数のアクションを実行させ、前記アクションが、
    計算グラフを表すデータを取得するアクションであって、
    前記計算グラフは複数のノードとノードのペアを接続する有効エッジとを含み、
    各ノードは夫々の動作を表し、
    ノードから出るエッジは、前記ノードにより表された動作から、前記エッジにより接続された他方のノードにより表された動作への出力のフローを表す、アクションと、
    前記計算グラフにより表された計算を実行するための要求を受信するアクションであって、前記要求が前記計算のための入力を識別する、アクションと、
    複数のデバイスにわたって前記計算グラフの前記ノードを分割するアクションであって、前記複数のデバイスの各々が、前記複数のデバイスのうちの他のデバイスとは独立して動作を実行するハードウェア・リソースを含み、各デバイスは、データ処理動作を実行するように動作可能なハードウェア・リソースであり、各ノードと前記ノードにより表された動作は、夫々のデバイスに割り当てられる、アクションと、
    前記計算グラフを複数のサブグラフに分割するアクションであって、各サブグラフは、別々のデバイスに割り当てられたノードを別々のサブグラフに割り当てることにより、1つまたは複数のノードを含む、アクションと、
    通信動作を表す通信ノードを各サブグラフに加えるアクションであって、前記通信動作は、(i)前記サブグラフが割り当てられた前記デバイスと(ii)他のデバイスにおけるサブグラフへ加えられた通信ノードにより表された通信動作との間で、入力または出力データを通信する、アクションと、
    前記複数のデバイスに、前記複数のデバイスの夫々に割り当てられた前記サブグラフの動作を実行することにより、前記計算グラフにより表された動作を実行させるアクションと
    を含み、
    前記通信ノードは、第1のデバイスに割り当てられた第1のサブグラフに加えられた送信ノードと、第2のデバイスに割り当てられた第2のサブグラフに加えられた受信ノードとを含み、前記第1のサブグラフを前記第2のサブグラフに接続する前記計算グラフにおけるエッジは、前記第1のサブグラフの1つまたは複数のノードから前記送信ノードへの1つまたは複数のエッジと、前記送信ノードおよび前記受信ノードとの間の双方向エッジと、前記受信ノードから前記第2のサブグラフの1つまたは複数のノードへの1つまたは複数のエッジとによって置き換えられる、記録デバイス。
  22. 前記第1のデバイスおよび前記第2のデバイスは、同じマシンにおいてホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が局所化された要求および応答プロトコルのもとで行われる、請求項21に記載の記録デバイス。
  23. 前記局所化された要求および応答プロトコルが、リモート・プロシージャ・コール・プロトコルである、請求項22に記載の記録デバイス。
  24. 前記第1のデバイスおよび前記第2のデバイスが、異なるマシンでホストされ、
    前記送信ノードおよび前記受信ノードの間の通信が、リモート直接メモリアクセスプロトコルのもとで行われる、請求項21に記載の記録デバイス。
  25. 前記通信ノードの各々が、送信ノードまたは受信ノードのいずれかであり、
    各送信ノードは、前記送信ノードから上流のノードと同じデバイスに割り当てられ、
    各受信ノードは、前記受信ノードから下流のノードと同じデバイスに割り当てられる、請求項18に記載の記録デバイス。
JP2019227507A 2015-10-28 2019-12-17 計算グラフの修正 Active JP7094262B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562247713P 2015-10-28 2015-10-28
US62/247,713 2015-10-28
US201562253029P 2015-11-09 2015-11-09
US62/253,029 2015-11-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2018521841A Division JP6636630B2 (ja) 2015-10-28 2016-10-28 計算グラフの修正

Publications (2)

Publication Number Publication Date
JP2020057422A JP2020057422A (ja) 2020-04-09
JP7094262B2 true JP7094262B2 (ja) 2022-07-01

Family

ID=57822015

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018521841A Active JP6636630B2 (ja) 2015-10-28 2016-10-28 計算グラフの修正
JP2019227507A Active JP7094262B2 (ja) 2015-10-28 2019-12-17 計算グラフの修正

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018521841A Active JP6636630B2 (ja) 2015-10-28 2016-10-28 計算グラフの修正

Country Status (6)

Country Link
US (4) US10783435B2 (ja)
EP (2) EP3353718B1 (ja)
JP (2) JP6636630B2 (ja)
KR (2) KR102327615B1 (ja)
CN (1) CN108351983A (ja)
WO (1) WO2017075346A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615285B2 (en) * 2017-01-06 2023-03-28 Ecole Polytechnique Federale De Lausanne (Epfl) Generating and identifying functional subnetworks within structural networks
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US11138516B2 (en) * 2017-06-30 2021-10-05 Visa International Service Association GPU enhanced graph model build and scoring engine
US11481638B2 (en) 2017-09-15 2022-10-25 Google Llc Augmenting neural networks
KR102569086B1 (ko) * 2017-11-20 2023-08-22 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기
US20190286973A1 (en) * 2018-03-14 2019-09-19 Microsoft Technology Licensing, Llc Hardware accelerated neural network subgraphs
FI130232B (en) * 2018-04-18 2023-05-03 Meeshkan Oy Procedure for distributed processing of information and distributed information processing system
US11645493B2 (en) 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
US11893471B2 (en) 2018-06-11 2024-02-06 Inait Sa Encoding and decoding information and artificial neural networks
US11972343B2 (en) 2018-06-11 2024-04-30 Inait Sa Encoding and decoding information
US11663478B2 (en) 2018-06-11 2023-05-30 Inait Sa Characterizing activity in a recurrent artificial neural network
US10891758B2 (en) 2018-07-23 2021-01-12 Google Llc Geometry encoder
US10318891B1 (en) * 2018-07-23 2019-06-11 Google Llc Geometry encoder
CN110766147B (zh) * 2018-07-25 2022-10-11 赛灵思公司 神经网络编译器架构及编译方法
US11263529B2 (en) * 2018-10-10 2022-03-01 Google Llc Modifying machine learning models to improve locality
CN111078624B (zh) * 2018-10-18 2022-03-25 上海寒武纪信息科技有限公司 片上网络处理系统和片上网络数据处理方法
CN111078625B (zh) * 2018-10-18 2022-03-29 上海寒武纪信息科技有限公司 片上网络处理系统和片上网络数据处理方法
KR20200053318A (ko) * 2018-11-08 2020-05-18 삼성전자주식회사 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법
US10922790B2 (en) * 2018-12-21 2021-02-16 Intel Corporation Apparatus and method for efficient distributed denoising of a graphics frame
US20210232969A1 (en) * 2018-12-24 2021-07-29 Intel Corporation Methods and apparatus to process a machine learning model in a multi-process web browser environment
US11569978B2 (en) 2019-03-18 2023-01-31 Inait Sa Encrypting and decrypting information
US11652603B2 (en) 2019-03-18 2023-05-16 Inait Sa Homomorphic encryption
CN111832714B (zh) * 2019-04-19 2023-11-17 上海寒武纪信息科技有限公司 运算方法及装置
US11231961B2 (en) * 2019-05-22 2022-01-25 Fujitsu Limited Scheduling operations
CN110210614B (zh) * 2019-05-31 2020-08-25 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN110162337B (zh) * 2019-05-31 2020-07-03 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11694075B2 (en) * 2019-09-05 2023-07-04 Alibaba Group Holding Limited Partitioning control dependency edge in computation graph
US11797827B2 (en) 2019-12-11 2023-10-24 Inait Sa Input into a neural network
US11580401B2 (en) 2019-12-11 2023-02-14 Inait Sa Distance metrics and clustering in recurrent neural networks
US11816553B2 (en) 2019-12-11 2023-11-14 Inait Sa Output from a recurrent neural network
US11651210B2 (en) 2019-12-11 2023-05-16 Inait Sa Interpreting and improving the processing results of recurrent neural networks
US20230229509A1 (en) * 2020-05-08 2023-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Configuring a resource for executing a computational operation
US11815943B1 (en) * 2020-06-05 2023-11-14 State Farm Mutual Automobile Insurance Company Systems and methods for processing using directed acyclic graphs
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182785A (ja) 2003-12-09 2005-07-07 Microsoft Corp グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法
US20060095722A1 (en) 2004-10-20 2006-05-04 Arm Limited Program subgraph identification
JP2007164504A (ja) 2005-12-14 2007-06-28 Fuji Heavy Ind Ltd ストリームデータ処理方法およびストリームデータ処理装置
JP2009537908A (ja) 2006-05-16 2009-10-29 アビニシオ ソフトウェア エルエルシー グラフ型計算における計算リソースの管理法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8923285B2 (en) * 2008-04-30 2014-12-30 Qualcomm Incorporated Apparatus and methods for transmitting data over a wireless mesh network
KR101048546B1 (ko) * 2009-03-05 2011-07-11 엔에이치엔(주) 온톨로지를 이용한 컨텐츠 검색 시스템 및 방법
EP2629247B1 (en) * 2012-02-15 2014-01-08 Alcatel Lucent Method for mapping media components employing machine learning
US9256823B2 (en) * 2012-07-27 2016-02-09 Qualcomm Technologies Inc. Apparatus and methods for efficient updates in spiking neuron network
US11061539B2 (en) 2013-03-15 2021-07-13 The Mathworks, Inc. Reference nodes in a computational graph
US9424079B2 (en) * 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine
JP6007430B2 (ja) 2015-05-20 2016-10-12 大澤 昇平 機械学習モデル設計支援装置、機械学習モデル設計支援方法、機械学習モデル設計支援装置用プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182785A (ja) 2003-12-09 2005-07-07 Microsoft Corp グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法
US20060095722A1 (en) 2004-10-20 2006-05-04 Arm Limited Program subgraph identification
JP2007164504A (ja) 2005-12-14 2007-06-28 Fuji Heavy Ind Ltd ストリームデータ処理方法およびストリームデータ処理装置
JP2009537908A (ja) 2006-05-16 2009-10-29 アビニシオ ソフトウェア エルエルシー グラフ型計算における計算リソースの管理法

Also Published As

Publication number Publication date
KR102204887B1 (ko) 2021-01-19
CN108351983A (zh) 2018-07-31
EP3353718B1 (en) 2023-07-19
EP4242845A1 (en) 2023-09-13
EP3353718A1 (en) 2018-08-01
JP6636630B2 (ja) 2020-01-29
KR20210008150A (ko) 2021-01-20
JP2018533792A (ja) 2018-11-15
US10354186B2 (en) 2019-07-16
JP2020057422A (ja) 2020-04-09
US20220019896A1 (en) 2022-01-20
WO2017075346A1 (en) 2017-05-04
KR102327615B1 (ko) 2021-11-17
US20170124454A1 (en) 2017-05-04
US20180247198A1 (en) 2018-08-30
US11087216B2 (en) 2021-08-10
KR20180069881A (ko) 2018-06-25
US10783435B2 (en) 2020-09-22
US20200401897A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
JP7094262B2 (ja) 計算グラフの修正
JP6898496B2 (ja) 計算グラフの処理
US20210295161A1 (en) Training neural networks represented as computational graphs
JP6672456B2 (ja) 計算グラフのストリームベースのアクセラレータ処理
US11763146B1 (en) Processing loops in computational graphs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210608

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220218

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220302

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220307

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220621

R150 Certificate of patent or registration of utility model

Ref document number: 7094262

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150