JP2018533795A - 計算グラフのストリームベースのアクセラレータ処理 - Google Patents
計算グラフのストリームベースのアクセラレータ処理 Download PDFInfo
- Publication number
- JP2018533795A JP2018533795A JP2018522024A JP2018522024A JP2018533795A JP 2018533795 A JP2018533795 A JP 2018533795A JP 2018522024 A JP2018522024 A JP 2018522024A JP 2018522024 A JP2018522024 A JP 2018522024A JP 2018533795 A JP2018533795 A JP 2018533795A
- Authority
- JP
- Japan
- Prior art keywords
- node
- subgraph
- nodes
- stream
- memory
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims description 35
- 238000004364 calculation method Methods 0.000 title claims description 18
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000013528 artificial neural network Methods 0.000 claims description 41
- 238000012549 training Methods 0.000 claims description 18
- 239000003550 marker Substances 0.000 claims description 3
- 230000009471 action Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000007781 signaling event Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
り当てることを行わせる。
102 クライアント
104 セッションマネージャ
106 エグゼキュータ
108 プレーサ
114 データ通信ネットワーク
116〜122 デバイス
200 プロセス
203 アクセラレータ
302 アクセラレータ
304、306 ストリーム
308〜314 ノード
316 部分グラフ
400 プロセス
Claims (41)
- 計算グラフを処理する要求を受け取るステップと、
前記計算グラフの部分グラフを表すデータを取得するステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは第1のデバイスに割り当てられる、ステップと、
前記第1のデバイスは複数のストリームを有するハードウェアアクセラレータを備えていると決定するステップと、
前記第1のデバイスが複数のストリームを有するハードウェアアクセラレータを備えているとの決定に応答して、前記第1のデバイスによって実行されたときに前記第1のデバイスに、
前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当て、
前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行すること
を行わせる命令を生成するステップと、
前記命令および前記データを前記第1のデバイスに提供するステップと
を含む、コンピュータ実装方法。 - 前記要求は、前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別することを指定し、
前記第1のデバイスから、前記1つまたは複数の特定の出力を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項1に記載の方法。 - 前記命令は、前記第1のデバイスに、前記1つまたは複数の特定の出力を前記第1のデバイスのメモリ内に記憶することをさらに行わせる、請求項1または2に記載の方法。
- 前記部分グラフに対する前記オペレーションは、ニューラルネットワークに対する部分的推論または訓練計算を含む、請求項1、2、または3に記載の方法。
- 前記部分グラフを分析して、連鎖構造内の前記部分グラフの中のノードのグループを識別するステップであって、
前記命令は、前記第1のデバイスに、ノードの前記グループを1つのストリームに割り当てることを行わせる、ステップ
をさらに含む、請求項1から4のいずれか一項に記載の方法。 - 前記割り当てることは、
前記部分グラフを分析して、複数の有向エッジを出力として有する前記部分グラフ内の第1のノードを識別するステップであって、
前記命令は、前記有向エッジの各々について、前記ハードウェアアクセラレータの互いに素なストリームに前記有向エッジの終点であるノードを割り当てることを前記第1のデバイスに行わせる、ステップ
を含む、請求項1から5のいずれか一項に記載の方法。 - 前記命令は、前記第1のデバイスに、各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定することを行わせ、前記割り当てることは、少なくともメモリリソースの前記それぞれの量に基づく、請求項1から6のいずれか一項に記載の方法。
- 前記命令は、前記第1のデバイスに、ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定し、
前記特定のオペレーションが終了したとの決定に応答して、
解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定し、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって表されるオペレーションによって消費されるメモリのそれぞれの推定量を決定し、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する、前記ハードウェアアクセラレータのストリーム上で実行されるオペレーションを表す、第1の割り当てられていないノードを決定し、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てる
ことを行わせる、請求項1から7のいずれか一項に記載の方法。 - 前記命令は、前記第1のデバイスに、ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定し、
前記特定のオペレーションが終了したとの決定に応答して、
前記特定のオペレーションの前記出力を入力として使用する少なくとも1つの後続オペレーションを決定し、
前記少なくとも1つの後続オペレーションが実行された後に前記特定のオペレーションの前記出力に対して割り振られたメモリを再利用すること
を行わせる、請求項1から8のいずれか一項に記載の方法。 - 前記特定のオペレーションの前記出力を入力として使用する少なくとも1つの後続オペレーションを決定することは、
少なくとも2つの後続オペレーション、第1のストリームにおける第1のオペレーション、および第2のストリームにおける第2のオペレーションは、前記特定のオペレーションの前記出力を入力として使用すると決定するステップと、
前記第1のオペレーションがいつ前記特定のオペレーションを入力として使用したかを指示する第1のストリームに第1のマーカーを配置するステップと、
前記第2のオペレーションがいつ前記特定のオペレーションを入力として使用したかを指示する第2のストリームに第2のマーカーを配置するステップと、
両方のオペレーションが前記第1および第2のマーカーからの指示に基づき前記特定のオペレーションを使用したと決定するステップと
を含む、請求項9に記載の方法。 - モデル入力を受け取るステップと、前記ハードウェアアクセラレータによって、前記部分グラフ内の前記ノードによって表されるオペレーションに従って前記モデル入力を処理するステップとをさらに含む、請求項1から10のいずれか一項に記載の方法。
- 1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合され、前記1つまたは複数のコンピュータによって実行されたときに、前記1つまたは複数のコンピュータにオペレーションを実行させる命令が記憶されるコンピュータ可読記録媒体であって、前記オペレーションは、
計算グラフシステムによって、計算グラフを処理する要求を受け取るステップと、
前記計算グラフの部分グラフを表すデータを取得するステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは第1のデバイスに割り当てられる、ステップと、
前記第1のデバイスは複数のストリームを有するハードウェアアクセラレータを備えていると決定するステップと、
前記第1のデバイスが複数のストリームを有するハードウェアアクセラレータを備えているとの決定に応答して、前記第1のデバイスによって実行されたときに前記第1のデバイスに、
前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当て、
前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行すること
を行わせる命令を生成するステップと、
前記命令および前記データを前記第1のデバイスに提供するステップと
を含む、コンピュータ可読記録媒体と
を備える、システム。 - 前記要求は、前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別することを指定し、前記オペレーションは、
前記第1のデバイスから、前記1つまたは複数の特定の出力を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項12に記載のシステム。 - 前記オペレーションは、
前記部分グラフを分析して、連鎖構造内の前記部分グラフの中のノードのグループを識別するステップであって、
前記命令は、前記第1のデバイスに、ノードの前記グループを1つのストリームに割り当てることを行わせる、ステップ
をさらに含む、請求項12または13に記載のシステム。 - 前記割り当てることは、
前記部分グラフを分析して、前記部分グラフ内の第1のノードが複数の有向エッジを出力として有することを識別するステップであって、
前記命令は、前記有向エッジの各々について、前記ハードウェアアクセラレータの一意的なストリームに前記有向エッジの終点であるノードを割り当てることを前記第1のデバイスに行わせる、ステップ
を含む、請求項12、13、または14に記載のシステム。 - 前記命令は、前記第1のデバイスに、各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定することを行わせ、前記割り当てることは、少なくともメモリリソースの前記それぞれの量に基づく、請求項12から15のいずれか一項に記載のシステム。
- 前記命令は、前記第1のデバイスに、ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定し、
前記特定のオペレーションが終了したとの決定に応答して、
解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定し、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって消費されるメモリのそれぞれの推定量を決定し、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する第1の割り当てられていないノードを決定し、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てる
ことを行わせる、請求項12から16のいずれか一項に記載のシステム。 - 1つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラムであって、1つまたは複数のコンピュータによって実行されたときに、前記1つまたは複数のコンピュータに、
計算グラフシステムによって、計算グラフを処理する要求を受け取るステップと、
前記計算グラフの部分グラフを表すデータを取得するステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは第1のデバイスに割り当てられる、ステップと、
前記第1のデバイスは複数のストリームを有するハードウェアアクセラレータを備えていると決定するステップと、
前記第1のデバイスが複数のストリームを有するハードウェアアクセラレータを備えているとの決定に応答して、前記第1のデバイスによって実行されたときに前記第1のデバイスに、
前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当て、
前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行すること
を行わせる命令を生成するステップと、
前記命令および前記データを前記第1のデバイスに提供するステップと
を含むオペレーションを実行させる命令を含む、コンピュータプログラム。 - 前記要求は、前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別することを指定し、前記オペレーションは、
前記第1のデバイスから、前記1つまたは複数の特定の出力を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項18に記載のコンピュータプログラム。 - 前記オペレーションは、
前記部分グラフを分析して、連鎖構造内の前記部分グラフの中のノードのグループを識別するステップであって、
前記命令は、前記第1のデバイスに、ノードの前記グループを1つのストリームに割り当てることを行わせる、ステップ
をさらに含む、請求項18または19に記載のコンピュータプログラム。 - 前記割り当てることは、
前記部分グラフを分析して、前記部分グラフ内の第1のノードが複数の有向エッジを出力として有することを識別するステップであって、
前記命令は、前記有向エッジの各々について、前記ハードウェアアクセラレータの一意的なストリームに前記有向エッジの終点であるノードを割り当てることを前記第1のデバイスに行わせる、ステップ
を含む、請求項18、19、または20に記載のコンピュータプログラム。 - 前記命令は、前記第1のデバイスに、各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定することを行わせ、前記割り当てることは、少なくともメモリリソースの前記それぞれの量に基づく、請求項18から21のいずれか一項に記載のコンピュータプログラム。
- 前記命令は、前記第1のデバイスに、ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定し、
前記特定のオペレーションが終了したとの決定に応答して、
解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定し、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって消費されるメモリのそれぞれの推定量を決定し、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する第1の割り当てられていないノードを決定し、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てる
ことを行わせる、請求項18から22のいずれか一項に記載のコンピュータプログラム。 - 複数のストリームを有するハードウェアアクセラレータによって、計算グラフの部分グラフを表すデータを受け取るステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは計算グラフシステム内のプレーサによってハードウェアアクセラレータに割り当てられる、ステップと、
前記ハードウェアアクセラレータによって、前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当てるステップと、
前記ハードウェアアクセラレータによって、前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行するステップと
を含む、方法。 - 前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別する要求を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項24に記載の方法。 - 連鎖構造内の前記部分グラフの中のノードのグループを識別するデータを受け取るステップと、
ノードの前記グループを1つのストリームに割り当てるステップと
をさらに含む、請求項24または25に記載の方法。 - 割り当てる前記ステップは、
複数の有向エッジを出力として有する前記部分グラフ内の第1のノードを識別するデータを受け取るステップと、
前記有向エッジの各々について、前記ハードウェアアクセラレータの一意的なストリームに前記有向エッジの終点であるノードを割り当てるステップと
を含む、請求項24、25、または26に記載の方法。 - 各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定するステップであって、割り当てる前記ステップは、少なくともメモリリソースの前記それぞれの量に基づく、ステップをさらに含む、請求項24から27のいずれか一項に記載の方法。
- ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定するステップと、
前記特定のオペレーションが終了したとの決定に応答して、解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定するステップと、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって消費されるメモリのそれぞれの推定量を決定するステップと、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する第1の割り当てられていないノードを決定するステップと、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てるステップと
をさらに含む、請求項24から28のいずれか一項に記載の方法。 - 1つまたは複数の非一時的コンピュータ記憶媒体上に符号化されたコンピュータプログラムであって、複数のストリームを有するハードウェアアクセラレータを備えるコンピュータによって実行されたときに、前記コンピュータに、
計算グラフの部分グラフを表すデータを受け取るステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは計算グラフシステム内のプレーサによってハードウェアアクセラレータに割り当てられる、ステップと、
前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当てるステップと、
前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行するステップと
を含むオペレーションを実行させる命令を含む、コンピュータプログラム。 - 前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別する要求を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項30に記載のコンピュータプログラム。 - 連鎖構造内の前記部分グラフの中のノードのグループを識別するデータを受け取るステップと、
ノードの前記グループを1つのストリームに割り当てるステップと
をさらに含む、請求項30または31に記載のコンピュータプログラム。 - 割り当てる前記ステップは、
複数の有向エッジを出力として有する前記部分グラフ内の第1のノードを識別するデータを受け取るステップと、
前記有向エッジの各々について、前記ハードウェアアクセラレータの一意的なストリームに前記有向エッジの終点であるノードを割り当てるステップと
を含む、請求項30、31、または32に記載のコンピュータプログラム。 - 各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定するステップであって、割り当てる前記ステップは、少なくともメモリリソースの前記それぞれの量に基づく、ステップをさらに含む、請求項30から33のいずれか一項に記載のコンピュータプログラム。
- ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定するステップと、
前記特定のオペレーションが終了したとの決定に応答して、解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定するステップと、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって消費されるメモリのそれぞれの推定量を決定するステップと、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する第1の割り当てられていないノードを決定するステップと、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てるステップと
をさらに含む、請求項30から34のいずれか一項に記載のコンピュータプログラム。 - ハードウェアアクセラレータを備えるシステムであって、前記ハードウェアアクセラレータは、複数のストリームを備え、前記システムは、オペレーションを実行するように構成され、前記オペレーションは、
計算グラフの部分グラフを表すデータを受け取るステップであって、前記計算グラフは複数のノードおよび有向エッジを含み、各ノードは、それぞれのオペレーションを表し、各有向エッジは、それぞれの第1のノードを、入力として前記それぞれの第1のノードによって表されるオペレーションの出力を受け取るオペレーションを表すそれぞれの第2のノードに接続し、前記部分グラフは計算グラフシステム内のプレーサによってハードウェアアクセラレータに割り当てられる、ステップと、
前記部分グラフ内の各ノードによって表される前記オペレーションを前記ハードウェアアクセラレータの前記複数のストリーム内のそれぞれのストリームに割り当てるステップと、
前記割り当てに従って前記部分グラフ内の前記ノードによって表される前記オペレーションを実行するステップと
を含む、システム。 - 前記部分グラフ内の1つまたは複数のそれぞれのノードから1つまたは複数の特定の出力を識別する要求を受け取るステップと、
前記1つまたは複数の特定の出力をクライアントに提供するステップと
をさらに含む、請求項36に記載のシステム。 - 連鎖構造内の前記部分グラフの中のノードのグループを識別するデータを受け取るステップと、
ノードの前記グループを1つのストリームに割り当てるステップと
をさらに含む、請求項36または37に記載のシステム。 - 割り当てる前記ステップは、
複数の有向エッジを出力として有する前記部分グラフ内の第1のノードを識別するデータを受け取るステップと、
前記有向エッジの各々について、前記ハードウェアアクセラレータの一意的なストリームに前記有向エッジの終点であるノードを割り当てるステップと
を含む、請求項36、37、または38に記載のシステム。 - 各ノードについて、前記ノードへの前記有向エッジに基づき前記ノードによって表される前記オペレーションによって消費される前記ハードウェアアクセラレータ内のメモリリソースのそれぞれの量を決定するステップであって、割り当てる前記ステップは、少なくともメモリリソースの前記それぞれの量に基づく、ステップ
をさらに含む、請求項36から39のいずれか一項に記載のシステム。 - ノードによって表される特定のオペレーションが特定のストリームにおいて終了していると決定するステップと、
前記特定のオペレーションが終了したとの決定に応答して、解放される前記特定のオペレーションによって消費されるメモリの第1の量を決定するステップと、
割り当てられていないノードのグループの各々について、前記割り当てられていないノードによって消費されるメモリのそれぞれの推定量を決定するステップと、
割り当てられていないノードの前記グループから、前記第1の量のメモリの使用を最大化する前記推定量のメモリを有する第1の割り当てられていないノードを決定するステップと、
前記第1の割り当てられていないノードによって表されるオペレーションを前記特定のストリームに割り当てるステップと
をさらに含む、請求項36から40のいずれか一項に記載のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562247703P | 2015-10-28 | 2015-10-28 | |
US62/247,703 | 2015-10-28 | ||
US201562253046P | 2015-11-09 | 2015-11-09 | |
US62/253,046 | 2015-11-09 | ||
PCT/US2016/059334 WO2017075360A1 (en) | 2015-10-28 | 2016-10-28 | Stream-based accelerator processing of computational graphs |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018533795A true JP2018533795A (ja) | 2018-11-15 |
JP6672456B2 JP6672456B2 (ja) | 2020-03-25 |
Family
ID=57354431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018522024A Active JP6672456B2 (ja) | 2015-10-28 | 2016-10-28 | 計算グラフのストリームベースのアクセラレータ処理 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11151446B2 (ja) |
EP (1) | EP3353655B1 (ja) |
JP (1) | JP6672456B2 (ja) |
KR (2) | KR102081952B1 (ja) |
CN (2) | CN115840643A (ja) |
WO (1) | WO2017075360A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021183135A1 (en) * | 2020-03-13 | 2021-09-16 | Hewlett-Packard Development Company, L.P. | Transmitting node instructions |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180032568A1 (en) * | 2016-07-29 | 2018-02-01 | Sysomos L.P. | Computing System with Multi-Processor Platform for Accelerating Influence Maximization Computation and Related Methods |
US10241956B2 (en) * | 2016-09-12 | 2019-03-26 | International Business Machines Corporation | Virtualizing coherent hardware accelerators |
EP3559868A1 (en) * | 2017-03-24 | 2019-10-30 | Google LLC | Device placement optimization with reinforcement learning |
US11138494B2 (en) * | 2017-05-02 | 2021-10-05 | International Business Machines Corporation | Storage controller acceleration for neural network training and inference |
US10585703B2 (en) * | 2017-06-03 | 2020-03-10 | Apple Inc. | Dynamic operation allocation for neural networks |
US11138516B2 (en) * | 2017-06-30 | 2021-10-05 | Visa International Service Association | GPU enhanced graph model build and scoring engine |
CN107480080B (zh) * | 2017-07-03 | 2021-03-23 | 深圳致星科技有限公司 | 一种基于rdma的零拷贝数据流 |
US10887235B2 (en) | 2017-08-24 | 2021-01-05 | Google Llc | Method of executing a tuple graph program across a network |
US10599482B2 (en) * | 2017-08-24 | 2020-03-24 | Google Llc | Method for intra-subgraph optimization in tuple graph programs |
US10642582B2 (en) | 2017-08-24 | 2020-05-05 | Google Llc | System of type inference for tuple graph programs method of executing a tuple graph program across a network |
US11568218B2 (en) * | 2017-10-17 | 2023-01-31 | Xilinx, Inc. | Neural network processing system having host controlled kernel acclerators |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
FI130232B (en) * | 2018-04-18 | 2023-05-03 | Meeshkan Oy | Procedure for distributed processing of information and distributed information processing system |
US11948073B2 (en) * | 2018-04-20 | 2024-04-02 | Advanced Micro Devices, Inc. | Machine learning inference engine scalability |
US20190333506A1 (en) | 2018-04-30 | 2019-10-31 | Avnera Corporation | Personal interactive speaker device having audio recognition neural net processor architecture |
US11615289B2 (en) * | 2018-06-28 | 2023-03-28 | Oracle International Corporation | Configuration price quote with enhanced approval control |
CN111079907B (zh) * | 2018-10-19 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111079916B (zh) * | 2018-10-19 | 2021-01-15 | 安徽寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
US11769041B2 (en) | 2018-10-31 | 2023-09-26 | Advanced Micro Devices, Inc. | Low latency long short-term memory inference with sequence interleaving |
CN111353575A (zh) | 2018-12-20 | 2020-06-30 | 超威半导体公司 | 用于卷积神经网络的图块化格式 |
CN109669772B (zh) * | 2018-12-28 | 2020-03-31 | 第四范式(北京)技术有限公司 | 计算图的并行执行方法和设备 |
US11645358B2 (en) * | 2019-01-29 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Generation of executable files corresponding to neural network models |
US11687795B2 (en) * | 2019-02-19 | 2023-06-27 | International Business Machines Corporation | Machine learning engineering through hybrid knowledge representation |
CN111723918A (zh) | 2019-03-18 | 2020-09-29 | 超威半导体公司 | 用于卷积内核的自动生成和调谐工具 |
US11537939B2 (en) * | 2019-05-03 | 2022-12-27 | Google Llc | Reshape and broadcast optimizations to avoid unnecessary data movement |
CN111915002B (zh) * | 2019-05-09 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
US11521042B2 (en) * | 2019-05-21 | 2022-12-06 | Anil Ravindranath | System and method to dynamically and automatically sharing resources of coprocessor AI accelerators |
CN112016681B (zh) * | 2019-05-31 | 2024-04-30 | 苹果公司 | 机器学习操作的分解 |
CN112070221B (zh) * | 2019-05-31 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
US11836635B2 (en) | 2019-05-31 | 2023-12-05 | Apple Inc. | Mutable parameters for machine learning models during runtime |
US11494237B2 (en) | 2019-06-26 | 2022-11-08 | Microsoft Technology Licensing, Llc | Managing workloads of a deep neural network processor |
WO2021012215A1 (zh) * | 2019-07-24 | 2021-01-28 | 华为技术有限公司 | 神经网络切分方法、预测方法及相关装置 |
US10884755B1 (en) * | 2019-07-31 | 2021-01-05 | International Business Machines Corporation | Graph rewriting for large model support using categorized topological sort |
US11521062B2 (en) * | 2019-12-05 | 2022-12-06 | International Business Machines Corporation | Neural network training using a data flow graph and dynamic memory management |
CN111611087B (zh) * | 2020-06-30 | 2023-03-03 | 中国人民解放军国防科技大学 | 一种资源调度方法、装置和系统 |
US20220051085A1 (en) * | 2020-08-11 | 2022-02-17 | Mediatek Inc. | Runtime hyper-heterogeneous optimization for processing circuits executing inference model |
CN114169491A (zh) * | 2020-09-10 | 2022-03-11 | 阿里巴巴集团控股有限公司 | 一种模型处理方法、装置、设备及计算机可读存储介质 |
CN114565102A (zh) * | 2020-11-27 | 2022-05-31 | 伊姆西Ip控股有限责任公司 | 部署机器学习模型的方法、电子设备和计算机程序产品 |
CN112734011B (zh) * | 2021-01-04 | 2021-12-28 | 北京大学 | 一种基于增量综合的深度神经网络加速器协同设计方法 |
CN115934306A (zh) * | 2021-08-08 | 2023-04-07 | 联发科技股份有限公司 | 一种电子设备、生成输出数据的方法及机器可读存储介质 |
CN114004347A (zh) | 2021-08-30 | 2022-02-01 | 平头哥(上海)半导体技术有限公司 | 用于加速图神经网络属性访问的硬件加速器、系统和方法 |
US20240104341A1 (en) * | 2022-09-27 | 2024-03-28 | Zhejiang Lab | Memory optimization method and apparatus for neural network compilation |
CN115759233B (zh) * | 2022-11-24 | 2023-10-20 | 北京百度网讯科技有限公司 | 模型的训练方法、图数据处理方法、装置及电子设备 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317734A (en) | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US7350055B2 (en) | 2004-10-20 | 2008-03-25 | Arm Limited | Tightly coupled accelerator |
US7343482B2 (en) | 2004-10-20 | 2008-03-11 | Arm Limited | Program subgraph identification |
US7870556B2 (en) | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
EP2527983A3 (en) | 2006-08-10 | 2013-06-12 | Ab Initio Technology LLC | Distributing services in graph-based computations |
KR101607495B1 (ko) | 2008-07-10 | 2016-03-30 | 로케틱 테크놀로지즈 리미티드 | 디펜던시 문제의 효율적인 병렬 계산 |
US8881141B2 (en) * | 2010-12-08 | 2014-11-04 | Intenational Business Machines Corporation | Virtualization of hardware queues in self-virtualizing input/output devices |
WO2014009031A2 (en) | 2012-07-09 | 2014-01-16 | Toyota Motor Europe Nv/Sa | Artificial memory system and method for use with a computational machine for interacting with dynamic behaviours |
CN102609298B (zh) * | 2012-01-11 | 2016-01-13 | 中国科学技术大学苏州研究院 | 基于硬件队列扩展的网卡虚拟化系统及其方法 |
CN102790777B (zh) * | 2012-08-07 | 2016-06-15 | 华为技术有限公司 | 网络接口适配器注册方法及驱动设备、服务器 |
CN103970604B (zh) | 2013-01-31 | 2017-05-03 | 国际商业机器公司 | 基于MapReduce架构实现图处理的方法和装置 |
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 |
US9645575B2 (en) | 2013-11-27 | 2017-05-09 | Adept Ai Systems Inc. | Method and apparatus for artificially intelligent model-based control of dynamic processes using probabilistic agents |
CN104615488B (zh) * | 2015-01-16 | 2018-01-19 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
-
2016
- 2016-10-27 US US15/336,673 patent/US11151446B2/en active Active
- 2016-10-28 CN CN202211570829.6A patent/CN115840643A/zh active Pending
- 2016-10-28 KR KR1020187015068A patent/KR102081952B1/ko active IP Right Grant
- 2016-10-28 EP EP16798590.2A patent/EP3353655B1/en active Active
- 2016-10-28 WO PCT/US2016/059334 patent/WO2017075360A1/en active Application Filing
- 2016-10-28 CN CN201680063365.6A patent/CN108351805B/zh active Active
- 2016-10-28 JP JP2018522024A patent/JP6672456B2/ja active Active
- 2016-10-28 KR KR1020207004981A patent/KR20200021104A/ko active Application Filing
-
2018
- 2018-04-27 US US15/965,670 patent/US10373053B2/en active Active
-
2021
- 2021-10-12 US US17/499,330 patent/US20220027202A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021183135A1 (en) * | 2020-03-13 | 2021-09-16 | Hewlett-Packard Development Company, L.P. | Transmitting node instructions |
Also Published As
Publication number | Publication date |
---|---|
KR102081952B1 (ko) | 2020-04-23 |
US10373053B2 (en) | 2019-08-06 |
US20180247196A1 (en) | 2018-08-30 |
EP3353655B1 (en) | 2023-01-11 |
CN108351805B (zh) | 2022-12-23 |
EP3353655A1 (en) | 2018-08-01 |
CN115840643A (zh) | 2023-03-24 |
WO2017075360A1 (en) | 2017-05-04 |
US20220027202A1 (en) | 2022-01-27 |
KR20200021104A (ko) | 2020-02-27 |
JP6672456B2 (ja) | 2020-03-25 |
CN108351805A (zh) | 2018-07-31 |
US20170124451A1 (en) | 2017-05-04 |
US11151446B2 (en) | 2021-10-19 |
KR20180073669A (ko) | 2018-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6672456B2 (ja) | 計算グラフのストリームベースのアクセラレータ処理 | |
US20240160948A1 (en) | Processing computational graphs | |
JP7094262B2 (ja) | 計算グラフの修正 | |
US10789544B2 (en) | Batching inputs to a machine learning model | |
EP4202782A1 (en) | Training neural networks represented as computational graphs | |
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: 20180626 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190724 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190805 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20191105 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191203 |
|
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: 20200203 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200304 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6672456 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |