(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-22
(45)【発行日】2024-01-30
(54)【発明の名称】動作のスケジューリング
(51)【国際特許分類】
G06F 9/48 20060101AFI20240123BHJP
G06N 3/10 20060101ALI20240123BHJP
G06N 99/00 20190101ALI20240123BHJP
【FI】
G06F9/48 300A
G06N3/10
G06N99/00 180
(21)【出願番号】P 2020047864
(22)【出願日】2020-03-18
【審査請求日】2022-12-08
(32)【優先日】2019-05-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】マンダル・アブラディップ
(72)【発明者】
【氏名】ウパデアーエ・サルバギア
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2018-533792(JP,A)
【文献】米国特許出願公開第2020/0401897(US,A1)
【文献】米国特許出願公開第2018/0285254(US,A1)
【文献】特表2020-515989(JP,A)
【文献】国際公開第2019/079008(WO,A1)
【文献】特表2020-537784(JP,A)
【文献】米国特許出願公開第2016/0071018(US,A1)
【文献】国際公開第2016/174725(WO,A1)
【文献】米国特許第10685295(US,B1)
【文献】中島 重義 Shigeyoshi NAKAJIMA,モジュール化されたフローグラフの静的割当て Statical Allocation of a Modularized Flow Graph,電子情報通信学会技術研究報告 Vol.90 No.143 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,1990年07月19日,第90巻 第143号, 65~70
【文献】片山謙吾、成久洋介,メタヒューリスティックスの現状,岡山理科大学紀要.A, 自然科学,巻 36,日本,岡山理科大学,2001年03月31日,119-128,https://ous.repo.nii.ac.jp/records/1661,2023年12月12日検索
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06N 3/10
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
タスク実行のための動作をスケジューリングするための、プロセッサによって実行される方法であって、
特定のタスクを実行するように連続的に実行されるよう構成され
る複数の動作に関する動作データを取得することであり、
前記動作データは、動作ごとにどのようなパラメータ及び入力
が供給されるかを表し、前記特定のタスクは複数のサブタスクを含み、前記複数の動作は前記複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は異なった複数の動作に関連する、ことと、
前記複数の動作を実行する
ために使用される複数の
計算リソースと、該複数の
計算リソースの夫々が前記複数の動作の夫々を個別的に実行する
のに要する処理時間と
に関するリソースデータを取得することと、
前記複数の動作を実行する
総処理時間を減らす
ように、
前記複数の計算リソースの夫々が前記複数の動作の夫々を個別的に実行するのに要する前記処理時間に基づき、前記複数の動作を実行するための前記複数の
計算リソースのスケジューリング
をバイナリ最適化
問題として
定式化することと、
前記バイナリ最適化
問題の解に基づいて、前記リソースデータにおいて表されている前記複数の
計算リソース
によって前記動作データにおいて表されている前記複数の動作を実行するスケジュールを決定することと、
前記複数の
計算リソースによって、前記
特定のタスクを実行するように前記スケジュールに従って前記複数の動作を実行することと
を有
し、
前記複数の計算リソースはメモリを含み、前記リソースデータは、前記メモリのメモリ容量と、前記複数の動作の夫々の前記パラメータ及び入力のためのメモリ要件とを含み、
前記複数の計算リソースの前記スケジューリングを前記バイナリ最適化問題として定式化することは、前記メモリ容量及び前記パラメータ及び入力のための前記メモリ要件に基づき、前記複数の動作の夫々に関して、前記複数の計算リソースのうち、当該動作の実行に十分なメモリ容量を持たない計算リソースは割り当てられないことを定めるメモリ容量制約を定式化して、メモリ容量制約式を取得することを含み、該メモリ容量制約式は、前記バイナリ最適化問題を解くときに適用される、方法。
【請求項2】
前記リソースデータに基づいて、前記複数の
計算リソース間で情報を伝える通信遅延を
決定することを更に有し、
前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、前記通信遅延に更に基づく、
請求項1に記載の方法。
【請求項3】
前記複数の
計算リソースの前記スケジューリングを前記バイナリ最適化
問題として
定式化することは、前記複数の動作の中の
いずれか1つの動作である第1動作の完了時間を定義するバイナリ最適化式を、前記第1動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、
前記第1動作の前に位置する前記複数の動作の中の前記動作から前記第1動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
請求項
2に記載の方法。
【請求項4】
前記複数の動作の中の
前記第1動作のための
前記入力は、前記複数の動作の中の第2動作の出力であり、該第2動作は、前記複数の動作の連続実行において前記第1動作の直前である、
請求項
3に記載の方法。
【請求項5】
前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、
前記複数の動作の夫々が前記複数の
計算リソースのうちの1つによって実行されること
定める制約を
定式化して、制約式を取得すること
を有し、
前記制約式は、前記バイナリ最適化
問題を解くとき
に適用される、
請求項1に記載の方法。
【請求項6】
前記複数の動作を実行するための前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、前記複数の
計算リソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数の
計算リソースの前記スケジューリングを前記バイナリ最適化
問題として
定式化することを含む、
請求項1に記載の方法。
【請求項7】
前記複数の
計算リソースの数は、前記複数のサブタスクの数よりも多い、
請求項
6に記載の方法。
【請求項8】
前記パラメータの夫々は、前記複数の動作のうちの2つによって使用される、
請求項1に記載の方法。
【請求項9】
前記複数の動作の
連続的な実行によって
実行される前記
特定のタスクは、機械学習モデルを生成し、
当該方法は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
請求項1に記載の方法。
【請求項10】
システムによって実行される場合に、該システムに動作を実行させる命令を記憶するよう構成された1以上のコンピュータ可読媒体であって、
前記動作は、
特定のタスクを実行するように連続的に実行されるよう構成され
る複数の動作に関する動作データを取得することであり、
前記動作データは、動作ごとにどのようなパラメータ及び入力
が供給されるかを表し、前記特定のタスクは複数のサブタスクを含み、前記複数の動作は前記複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は異なった複数の動作に関連する、ことと、
前記複数の動作を実行する
ために使用される複数の
計算リソースと、該複数の
計算リソースの夫々が前記複数の動作の夫々を個別的に実行する
のに要する処理時間と
に関するリソースデータを取得することと、
前記複数の動作を実行する
総処理時間を減らす
ように、
前記複数の計算リソースの夫々が前記複数の動作の夫々を個別的に実行するのに要する前記処理時間に基づき、前記複数の動作を実行するための前記複数の
計算リソースのスケジューリング
をバイナリ最適化
問題として
定式化することと、
前記バイナリ最適化
問題の解に基づいて、前記リソースデータにおいて表されている前記複数の
計算リソース
によって前記動作データにおいて表されている前記複数の動作を実行するスケジュールを決定することと、
前記システムの前記複数の
計算リソースによって、前記
特定のタスクを実行するように前記スケジュールに従って前記複数の動作を実行することと
を有
し、
前記複数の計算リソースはメモリを含み、前記リソースデータは、前記メモリのメモリ容量と、前記複数の動作の夫々の前記パラメータ及び入力のためのメモリ要件とを含み、
前記複数の計算リソースの前記スケジューリングを前記バイナリ最適化問題として定式化することは、前記メモリ容量及び前記パラメータ及び入力のための前記メモリ要件に基づき、前記複数の動作の夫々に関して、前記複数の計算リソースのうち、当該動作の実行に十分なメモリ容量を持たない計算リソースは割り当てられないことを定めるメモリ容量制約を定式化して、メモリ容量制約式を取得することを含み、該メモリ容量制約式は、前記バイナリ最適化問題を解くときに適用される、コンピュータ可読媒体。
【請求項11】
前記動作は、
前記リソースデータに基づいて、前記複数の
計算リソース間で情報を伝える通信遅延を
決定することを更に有し、
前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、前記通信遅延に更に基づく、
請求項
10に記載のコンピュータ可読媒体。
【請求項12】
前記複数の
計算リソースの前記スケジューリングを前記バイナリ最適化
問題として
定式化することは、前記複数の動作の中の
いずれか1つの動作である第1動作の完了時間を定義するバイナリ最適化式を、前記第1動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、
前記第1動作の前に位置する前記複数の動作の中の前記動作から前記第1動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
請求項
11に記載のコンピュータ可読媒体。
【請求項13】
前記複数の動作の中の
前記第1動作のための
前記入力は、前記複数の動作の中の第2動作の出力であり、該第2動作は、前記複数の動作の連続実行において前記第1動作の直前である、
請求項
12に記載のコンピュータ可読媒体。
【請求項14】
前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、
前記複数の動作の夫々が前記複数の
計算リソースのうちの1つによって実行されること
定める制約を
定式化して、制約式を取得すること
を有し、
前記制約式は、前記バイナリ最適化
問題を解くとき
に適用される、
請求項
10に記載のコンピュータ可読媒体。
【請求項15】
前記複数の動作を実行するための前記複数の
計算リソースの前記スケジューリングを
前記バイナリ最適化問題として定式化することは、前記複数の
計算リソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数の
計算リソースの前記スケジューリングを前記バイナリ最適化
問題として
定式化することを含む、
請求項
10に記載のコンピュータ可読媒体。
【請求項16】
前記複数の
計算リソースの数は、前記複数のサブタスクの数よりも多い、
請求項
15に記載のコンピュータ可読媒体。
【請求項17】
前記パラメータの夫々は、前記複数の動作のうちの2つによって使用される、
請求項
10に記載のコンピュータ可読媒体。
【請求項18】
前記複数の動作の
連続的な実行によって
実行される前記
特定のタスクは、機械学習モデルを生成し、
前記動作は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
請求項
10に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示で論じられている実施形態は、動作をスケジューリングすることに関係がある。
【背景技術】
【0002】
タスクグラフは、特定のタスクを実行するための動作及び動作間のデータのフローを表し得る。例えば、タスクグラフは、機械学習アルゴリズムが機械学習モデルを生成するための動作及びデータフローを表し得る。タスクグラフは、タスクグラフ内の動作を実行するために使用され得るサーバのクラスタのようなデバイスのクラスタをスケジューリングするために使用されてよい。
【0003】
本開示で請求される対象は、上述されたような環境でしか動作しない実施形態又は上述されたようなあらゆる欠点を解消する実施形態に制限されない。むしろ、この背景は、本開示で記載されているいくつかの実施形態が実施され得る技術分野の一例を説明するためにのみ設けられている。
【発明の概要】
【0004】
実施形態の態様に従って、方法は、機能を実装するように連続的に実行されるよう構成される複数の動作を取得することを含んでよい。いくつかの実施形態で、各動作は、パラメータ及び入力に関して実行されてよい。方法は、パラメータ及び入力に関して動作を実行するよう構成される複数のリソースと、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間との指示を取得することも含んでよい。方法は、複数の動作を実行する全体の存続期間を減らす、複数の動作を実行するためのリソースのスケジューリングを、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間に基づき、バイナリ最適化としてモデル化することも含んでよい。方法は、バイナリ最適化を解いて複数のリソースのスケジュールを決定することと、複数のリソースによって、機能を実装するようにスケジュールに従って複数の動作を実行することとを更に含んでよい。
【0005】
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって、実現及び達成される。
【0006】
上記の概要及び下記の詳細な説明はいずれも、例として与えられており、請求される発明を説明するためのものであって、限定するものではない。
【0007】
図面を使用して、更なる特定及び詳細をもって、例となる実施形態が記載及び説明される。
【図面の簡単な説明】
【0008】
【
図1】動作をスケジューリングすることに関連した環境の例を表す図である。
【
図3】動作をスケジューリングすることを支援するよう構成され得るコンピューティングシステムの例を表す。
【
図4】動作のスケジューリングを使用する方法の例のフローチャートである。
【
図5】動作をスケジューリングする方法の例のフローチャートである。
【発明を実施するための形態】
【0009】
データに対して実行される動作はますます増えている。例えば、深層学習ネットワークのような機械学習アルゴリズムは、訓練中にデータに対して数百万という動作を実行する。結果として、いくつかの状況において、単一のデバイスに動作を実行させることは、動作の実行を遅くすることがある。本開示で請求されるシステム及び方法は、動作を実行するための時間を減らすように多数の異なったリソースにわたる動作のスケジューリングに向けられ得る。これら及び他の実施形態で、動作は、リソースの利用可能性及び動作のフローに基づき、リソースにわたってスケジューリングされてよい。リソースが動作を処理するためのスケジュールを決定することは、非決定性多項式時間(Non-deterministic Polynomial time,NP)完全問題であってよい。よって、動作を実行するための時間を減らし得るスケジュールを決定することは、難しいことがある。
【0010】
本開示の1以上の実施形態は、リソースが動作を実行するためのスケジュールを決定し得るシステム及び/又は方法に関係があってよい。スケジュールは、動作と、動作を実行するよう構成されるリソースと、リソースの夫々が動作の夫々を個別的に実行するための存続期間との指示を用いて決定されてよい。
【0011】
いくつかの実施形態で、複数の動作を実行するための全体の存続期間を減らす、複数の動作を実行するためのスケジュールは、動作を実行するためのリソースのスケジューリングをバイナリ最適化によりモデル化することによって決定されてよい。バイナリ最適化は、リソースが動作の夫々を個別的に実行するための存続期間に基づき、複数の動作を実行するようにモデル化されてよい。これら及び他の実施形態では、2次制約付き(quadratic constrained)バイナリ最適化が、スケジュールを決定するように解かれてよく、動作は、スケジュールに従って実行されてよい。
【0012】
そのようなものとして、本開示の1以上の実施形態に従って、ここで記載される動作は、動作の実行をスケジューリングすることを改善することができる。動作の実行をスケジューリングすることの改善は、動作を実行している可能性があるデバイス及び/又はシステムのようなリソースのより良い利用をもたらし得る。代替的に、又は追加的に、動作の実行をスケジューリングすることの改善は、リソースが動作を実行するための時間を減らし得る。代替的に、又は追加的に、動作の実行をスケジューリングすることの改善は、動作を実行しているリソースの性能を高め得る。例えば、機械学習アルゴリズムのための動作の実行をスケジューリングすることの改善は、サーバのようなコンピュータシステムが機械学習モデルを訓練するレイテンシ及び時間を減らし得る。代替的に、又は追加的に、機械学習アルゴリズムのための動作の実行をスケジューリングすることの改善は、機械学習モデルが改善され得るように、機械学習モデルを生成するときに使用される可能性がある入力の数を増やし得る。よって、ここで開示される実施形態は、機械学習、タスクグラフのような多数の動作のためのリソースのスケジューリング、及びコンピューティングシステムリソースの利用の技術分野における問題を解消し得る。更に、ここで開示される実施形態は、動作を実行するよう働くコンピューティングシステムリソースの処理時間及びレイテンシを低減し得る。
【0013】
本開示の実施形態は、添付の図面を参照して説明される。
【0014】
図1は、本開示で記載される少なくとも1つの実施形態に従って配置される、動作をスケジューリングすることに関連した環境100を例示する図である。環境100は、スケジューリングモジュール120及び実行環境130を含んでよい。
【0015】
スケジューリングモジュール120及び/又は実行環境130は、1以上のコンピューティングデバイスがそれらとともに記載される動作のうちの1以上を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。これら及び他の実施形態で、スケジューリングモジュール120及び/又は実行環境130は、任意数のプロセッサ、マイクロプロセッサ(例えば、1以上の動作を実行するか若しくはその実行を制御するためのもの)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又はそれらのうちの2以上の任意の適切な組み合わせを含むハードウェアを用いて実装されてよい。代替的に、又は追加的に、スケジューリングモジュール120及び実行環境130は、ハードウェアとソフトウェアとの組み合わせにより実装されてもよい。本開示において、スケジューリングモジュール120及び実行環境130によって実行されるものとして記載される動作は、スケジューリングモジュール120及び実行環境130が対応するシステムに実行するよう仕向け得る動作を含んでよい。
【0016】
いくつかの実施形態で、環境100は、動作データ110、リソースデータ112、及び入力データ114を取得してよい。動作データ110は、特定の機能を実装するための動作及び動作間のデータのフローを表してよい。例えば、動作データ110は、どのような入力及び/又はパラメータが異なった動作に供給されるかと、第1動作の出力が第2動作の出力に供給されるかどうかとを表してよい。代替的に、又は追加的に、動作データ110は、動作間の直列又は並列な関係を示してよい。直列な関係は、第2動作が完了するまでは第1動作が開始し得ないことを示してよい。並列な関係は、第1動作及び第2動作が重複した期間に実行され得ることを示してよい。入力データ114は、動作によって生成されない1以上の入力、1以上のパラメータ、及び動作を実行するために使用される他のデータのような、動作を実行するために使用され得る情報を表してよい。
【0017】
図2aは、本開示の少なくとも1つの実施形態に従う動作フロー200を例示する。動作フロー200は、機械学習アルゴリズムを訓練する動作フローを表してよい。例えば、動作フロー200は、単一の入力を用いて機械学習アルゴリズムを訓練することを表してよい。いくつかの実施形態で、動作フロー200は、単入力機械学習訓練で使用され得るタスクグラフを表してよい。
【0018】
動作フロー200は、第1入力212と、第2入力214と、第1パラメータ220a、第2パラメータ220b、及び第3パラメータ220cを含むパラメータ220と、第1転送動作230a、第2転送動作230b、及び第3転送動作230cを含む転送動作230と、第1フィードバック動作240a、第2フィードバック動作240b、及び第3フィードバック動作240cを含むフィードバック動作240と、中間動作250と、第1出力260a、第2出力260b、及び第3出力260cを含む出力260とを含んでよい。
【0019】
転送動作230は、連続的に実行されてよい。例えば、第1転送動作230aは、第1入力212及び第1パラメータ220aを取得し、それらに対して第1動作を実行して第1転送出力を生成してよい。第2転送動作230bは、第1転送動作230aの完了後に実行されてよい。第2転送動作230bは、第1転送出力及び第2パラメータ220bを取得し、それらに対して第2動作を実行して第2転送出力を生成してよい。第3転送動作230cは、第2転送動作230bの完了後に実行されてよい。
【0020】
第3転送動作230cは、第2転送出力及び第3パラメータ220cを取得し、それらに対して第3動作を実行して第3転送出力を生成してよい。中間動作250は、第3転送動作230cの完了後に実行されてよい。中間動作250は、第3転送出力及び第2入力214を取得し、それらに対して中間動作を実行して第1フィードバック出力を生成してよい。
【0021】
第3フィードバック動作240cは、中間動作250の完了後に実行されてよい。第3フィードバック動作240cは、第1フィードバック出力、第3転送出力、及び第3パラメータ220cを取得し、それらに対して第4動作を実行して第3出力260cを生成してよい。
【0022】
第2フィードバック動作240bは、第3フィードバック動作240cの完了後に実行されてよい。第2フィードバック動作240bは、第3出力260c、第2転送出力、及び第2パラメータ220bを取得し、それらに対して第5動作を実行して第2出力260bを生成してよい。
【0023】
第1フィードバック動作240aは、第2フィードバック動作240bの完了後に実行されてよい。第1フィードバック動作240aは、第2出力260b、第1入力212、及び第1パラメータ220aを取得し、それらに対して第6動作を実行して第1出力260aを生成してよい。
【0024】
いくつかの実施形態で、転送動作230によって実行される動作は、同じ又は同様の動作であってよい。代替的に、又は追加的に、フィードバック動作240によって実行される動作は、同じ又は同様の動作であってよい。
【0025】
一例として、動作フロー200は、画像にラベルを付すために機械学習モデルを訓練することに関係があってよい。これら及び他の実施形態で、第1入力212は、画像であってよく、パラメータ220は、機械学習アルゴリズムに関連した数値であってよく、第2入力214は、画像のラベルであってよく、出力260は、パラメータの変化に対するエラーの変化を表してよい。
【0026】
動作フロー200は、6つの動作を含むフローを表す。しかし、動作フロー200は、任意の数の動作を含んでよい。例えば、動作フロー200は、N個の転送動作230、N個のフィードバック動作240、N個のパラメータ220、及びN個の出力260を含んでよい。よって、動作フロー200は、2×N+1個の動作を表してよい。
【0027】
図1の議論に戻ると、いくつかの実施形態で、動作データ110は、繰り返しである動作を表してよい。例えば、動作データ110は、多数の入力に対する機械学習アルゴリズムのための動作をスケジューリングするために使用され得る動作を表してよい。一例として、
図2aの動作フロー200は、入力の夫々について一度実行されてよい。いくつかの実施形態で、スケジューリングモジュール120によって決定されるスケジュール122は、リソース132により機械学習アルゴリズムの入力のために多様な動作フローを実行するためのスケジュールであってよい。これら及び他の実施形態で、リソース132によって重複した期間に実行され得る多重動作フローは、同じ構成の動作を含んでよく、入力について互いに依存しなくてよい。
【0028】
例えば、1つの特定の動作フローのための処理時間は、その特定の動作フローの処理が終了するまではリソース132が他の動作を実行していないとして、時間T1であってよい。2つの動作フローのための処理時間は、それらの動作フローの処理が終了するまではリソース132が他の動作を実行していないとして、時間T2であってよい。なお、リソース132の構成及び複数のリソースにわたるパイプライン処理の性質を考えると、T2<(2×T1)である。よって、重複した期間におけるリソース132による処理のために1よりも多い動作フローをスケジューリングすることは、効率の良さをもたらし得る。
【0029】
重複した期間における多くの動作フローのためのスケジューリングを実行する例として、機械学習アルゴリズムの訓練はM個の訓練画像を含むと仮定する。画像ごとの訓練は、Nが1つの画像に関する訓練へのパラメータの数であるとして、
図2aに関して上述されたように、(2×N+1)個の動作を含んでよい。よって、M個の訓練画像に対して機械学習アルゴリズムを訓練するための動作は、M×(2×N+1)であってよい。M個全ての訓練画像について動作をスケジューリングする代わりに、環境100は、KがMよりも小さく1よりも大きいとして、K個の訓練画像のような、M個の訓練画像のサブセットのためのスケジュールを生成してもよい。これら及び他の実施形態で、スケジューリングモジュール120は、K×(2×N+1)個の動作のためのスケジュールがスケジューリングされるように、K個の訓練画像のためのスケジュールを生成し得る。これら及び他の実施形態で、スケジューリングモジュール120は、K個の訓練画像のスケジューリングをバイナリ最適化としてモデル化し、バイナリ最適化を解くことによって、K個の訓練画像のためのスケジュールを生成し得る。
【0030】
いくつかの実施形態で、リソースデータ112は、動作データ110内の動作を実行するために使用され得る実行環境130内のリソース132を表してよい。いくつかの実施形態で、リソースデータ112によって表されるリソース132のうちの1つは、入力データ114に基づいて動作データ110内の動作の一部、全て、又は複数を実行するよう構成された物理デバイスを表してよい。入力データ114及び動作データ110内の動作を使用して、リソース132のうちの1つは、動作データ110において表されている動作の出力を生成し得る。
【0031】
これら及び他の実施形態で、リソース132のうちの1つは、コンピューティングユニットを含んでもよい。例えば、コンピューティングユニットは、中央演算処理装置(CPU)、グラフィクス処理ユニット(GPU)、プロセッサ、マルチコアプロセッサのプロセッサコア、FPGA、ASIC、又はハードウェア要素の他の組み合わせを含んでよい。これら及び他の実施形態で、単一のデバイスが複数のコンピューティングユニットを、よって複数のリソースを含んでもよい。代替的に、又は追加的に、リソース132のうちの1つはデバイスを含んでもよい。デバイスは、とりわけ、モバイルデバイス、サーバ、パーソナルコンピュータなどの、プロセッサとメモリとの組み合わせのようなコンピューティングシステムを含んでよい。
【0032】
図2bは、本開示の少なくとも1つの実施形態に従うリソース210を例示する。リソース210は、リソースR1、R2、及びR3を表し得る3つの頂点を含み得るリソースグラフにおいて配置されてよい。頂点間の辺は、リソース間のネットワーク接続を、よって、どのリソースが他のリソースと通信し得るかを表してよい。図示されるように、リソースの夫々は、他のリソースと通信してよい。なお、いくつかのリソースグラフでは、リソースの夫々は相互接続されなくてもよい。
【0033】
いくつかの実施形態で、辺はまた、リソース間のネットワーク接続の速さに関する情報も含んでよい。図示されるように、リソースR1とリソースR2との間のネットワーク接続は10GB/sであってよい。リソースR2とリソースR3との間のネットワーク接続は15GB/sであってよく、リソースR1とリソースR3との間のネットワーク接続は5GB/sであってよい。図示されるように、ネットワーク接続は全て異なっている。代替的に、又は追加的に、ネットワーク接続の夫々は同じであってもよく、あるいは、ネットワーク接続のいくつかが同じであってよく、他は異なってよい。
【0034】
図1の議論に戻ると、いくつかの実施形態で、リソースデータ112はまた、リソース132に関して動作の実行に関する情報も含んでよい。例えば、リソースデータ112は、リソース132の夫々が特定の動作を実行するための時間に関する情報を含んでよい。代替的に、又は追加的に、リソースデータ112は、リソースの夫々のメモリ容量と、リソース132の夫々が特定の動作を実行するためのメモリ要件とに関する情報を含んでもよい。
【0035】
いくつかの実施形態で、リソースデータ112は、特定の動作の総処理時間を決定するために使用されてよい。代替的に、又は追加的に、リソースデータ112は、リソース132を用いて処理するための動作のスケジューリングを決定するために使用されてよい。これら及び他の実施形態で、動作のスケジューリングは、リソース132の制約と、動作データ110に従う動作の動作フローとに基づき、動作の夫々を実行し得るリソースを選択することを指し得る。
【0036】
例えば、いくつかの実施形態で、リソースデータ112は、どのリソース132が動作フロー内の動作を実行し得るかを決定するのを助けるために使用されてよい。例えば、ある動作が特定のリソースのメモリ容量よりも多いメモリ量を使用する場合に、その動作は、その特定のリソースには割り当てられ得ない。代替的に、又は追加的に、特定のリソースが、あるメモリ量を使用する特定の動作を実行中である場合に、その特定のリソースは、その特定の動作のメモリ使用量と組み合わせたときに特定のリソースのメモリ量よりも多いメモリ量を使用する可能性がある他の動作を重複した時間インターバル中に実行しなくてよい。
【0037】
他の例として、いくつかの実施形態で、リソースデータ112はまた、他の動作からの出力に基づく動作がいつ開始し得るかを、リソースの動作時間及びリソース間のネットワークレイテンシに基づき決定するためにも使用されてよい。例えば、第1リソースが第1動作を実行し、第2リソースが第1動作からの出力に基づき第2動作を実行する場合に、リソースデータ112は、第1リソースと第2リソースとの間で情報を送信する時間遅延と、第1リソースが第1動作を実行するための時間とを決定するために使用されてよい。よって、リソースデータ112は、第2リソースが第2動作を処理し始め得る時を、第1リソースによって第1動作を実行するための時間と、第1リソースと第2リソースとの間のネットワーク接続とに基づき決定するために、使用されてよい。
【0038】
いくつかの実施形態で、動作データ110及びリソースデータ112は、スケジューリングモジュール120へ供給されてよい。スケジューリングモジュール120は、リソースデータ112において表されているリソース132によって動作データ110内の動作を実行するスケジュール122を決定するよう構成されてよい。スケジュール122は、動作ごとに、動作の開始時間と、リソース132のうちのどの1つ以上がその動作を実行し得るかとを示してよい。スケジュール122はまた、動作データ110内の全ての動作を処理するための総処理時間も規定してよい。
【0039】
いくつかの実施形態で、スケジューリングモジュール120は、スケジュール122が処理時間を削減し、且つ/あるいは、動作データ110によって表される全ての動作をリソース132により処理するための時間を最小限とするように、スケジュール122を決定するよう構成されてよい。上述されたように、いくつかの動作について、それらの動作及びリソースデータ112のためのスケジュールを生成することは、NP完全問題であってよい。よって、全ての動作を用いてスケジュールを生成することは、困難であり、時間がかかることがある。
【0040】
いくつかの実施形態で、スケジュールは、2次制約付きバイナリ最適化のようなバイナリ最適化を解くことによって決定されてよい。これら及び他の実施形態で、動作データ110及びリソースデータ112に基づくリソース132のスケジューリングは、バイナリ最適化としてモデル化されてよい。バイナリ最適化のモデル化の後、バイナリ最適化は解かれてよい。バイナリ最適化の解は、リソース132をスケジューリングするスケジュール122を決定するために使用されてよい。
【0041】
如何なる既知の方法も、バイナリ最適化を解くために使用されてよい。例えば、いくつかの実施形態で、バイナリ最適化を2次制約なし(unconstrained)バイナリ最適化に変換するための技術が、バイナリ最適化に適用されてもよい。2次制約なしバイナリ最適化は、富士通によって提供されるデジタルアニーラ(digital annealer)ソルバのようなデジタルアニーラソルバを用いて解かれてよい。代替的に、又は追加的に、とりわけ、Cplex、Gurobiのような組み合わせ最適化ソルバが、バイナリ最適化に対する近似解を求めるために使用されてもよい。代替的に、又は追加的に、バイナリ最適化は、タブー(Tabu)探索又は焼きなまし法(simulated annealing)のようなヒューリスティクスを用いて解かれてもよい。代替的に、又は追加的に、バイナリ最適化は、GoogleのORツールで提供されるSATソルバのような制約付き充足可能性(satisfiability,SAT)ソルバを用いて解かれてもよい。
【0042】
動作データ110のスケジューリングを、2次制約付きバイナリ最適化のようなバイナリ最適化としてモデル化することに関する例が、これより与えられる。いくつかの実施形態で、動作データ110は、単一の入力に関連した動作に関連してよい。例えば、機械学習訓練プロセス中に、動作は、単一の入力のための訓練及びその入力のラベルに関連付けられてよい。単一の入力の例の後で、複数の入力のために動作をスケジューリングすることに関する例も与えられる。
【0043】
この例において、Nが1よりも大きい整数であるとして、m個のリソースと、2N+1個の動作とが存在すると仮定する。いくつかの実施形態で、Nは、
図2aに関して記載されたフィードバック動作及び/又は転送動作の数であってよい。これら及び他の実施形態で、動作データ110の各動作iが、リソースデータ112において記述されているリソース132の中のリソースjによって実行されるときに完了するための時間量は、t(i,j)によって示されてよい。動作が実行されるための時間は、リソースが受け取られた入力に基づき出力を生成するための時間を含んでよい。ビットごとのいずれかの第1リソースjといずれかの第2リソースkとの間の通信時間は、c(j,k)によって示されてよい。よって、c(j、j)については、通信時間は0である。これら及び他の実施形態で、通信時間は、異なるリソース間で情報を送る時間遅延であってよい。
【0044】
いくつかの実施形態で、動作iによって使用される入力のサイズは、I(i)によって示されてよく、動作iによって使用されるパラメータのサイズは、P(i)によって示されてよい。入力のサイズ及びパラメータのサイズは、入力及びパラメータのビットでのサイズであってよい。また、各リソースjのメモリ容量は、M(j)によって示されてよい。
【0045】
いくつかの実施形態で、動作データ110の全ての動作は夫々、リソース132のうちの1つによって実行されてよい。よって、ある動作の第1部分が第1リソースによって実行される場合に、その動作の第2部分は第1リソースによって実行され、他のリソースによっては実行されない。各動作が単一のリソースによって実行されるならば、ブール変数xによって、動作iがリソースjによって実行されるべきかどうかを表してよい。ここで、動作iがリソースjに割り当てられる場合には、xは1であり、動作iがリソースjに割り当てられない場合には、xは0である。上記を鑑み、バイナリ最適化に対する次の制約が決定されてよい:
【数1】
いくつかの実施形態で、この制約は、ホットコンディション(hot condition)と呼ばれ得る。
【0046】
動作を完了する時間は、C(i)と示されてよい。C(i)は、複数の動作の中の第1動作が実行中である時間から測定される、ある動作を完了するまでの時間であってよい。よって、C(i)によって記述される、第3動作を完了するまでの時間は、第2動作の終了から第3動作の終了までの時間でなくてもよい。むしろ、第3動作を完了するまでの時間は、第1動作が開始した時から、第3動作が完了する時までの時間であってよい。よって、C(i)は、複数の動作が連続的に実行される場合に動作iの直前の動作を完了するための時間に基づき、記述されてよい。例えば、
図2aの第2転送動作230bの完了時間は、
図2aの第1転送動作230aを完了するための時間に基づき記述されてよい。C(i)はまた、リソースjが動作iを完了する時間と、リソースjが、動作iを実行するための入力を取得するための時間とに基づき、次の式により記述されてもよい:
【数2】
ここで、右側の最初の項は、動作iの前の動作の完了時間を表し、2番目の項は、リソースjによって動作iを実行するための計算時間を表し、3番目の項は、リソースjが動作iを実行するための入力を取得するための時間を表す。
【0047】
動作のスケジューリングに対する更なる制約は、入力及びパラメータのサイズを管理するための十分なメモリ容量をリソースが有していることを含んでよい。よって、次の式は、所与の動作のためにメモリ容量が十分でないリソースに動作が割り当てられないことを表す制約として使用されてよい:
【数3】
【0048】
議論されているように、スケジューリングモジュール120は、実行環境130が動作データ110の動作を実行する時間を減らすスケジュール122を生成するよう構成される。よって、スケジューリングモジュール120は、動作の実行の開始から最終の動作の完了までの時間の量を減らすよう構成される。上述されたように、C(i)は、全ての動作の実行の開始からのある動作の完了時間として定義される。よって、スケジューリングモジュール120は、最後の動作の完了時間を最小限とし、すなわち、2N+1が最後の動作であるとして、C(2N+1)を最小限とし得る。C(2N+1)を最小限とすることの目的関数は、次のように表される:
【数4】
【0049】
動作を実行するための時間を最小限とする動作のスケジューリングをモデル化するために、C(i)を定義する上記の式は、次の式をもたらすように前述の式中の項を置換するために使用されてよい:
【数5】
すなわち、2次バイナリ最適化問題は、動作は単一のリソースにしか割り当てられず、単一のリソースがその動作の全体を実行し、リソースはその動作のための入力を扱うためのメモリ容量を含む、という上記の制約を受ける。
【0050】
いくつかの実施形態で、2次バイナリ最適化問題を解くために、2次バイナリ最適化問題は、2次制約なしバイナリ最適化に変換されてよい。2次バイナリ最適化問題を2次制約なしバイナリ最適化に変換するために、不等式制約は等式制約に変換されてよい。不等式制約を等式制約に変換するために、スラック変数が導入されてよく、制約が違反されるときには不等式制約にペナルティを科す。リソース132のリソース容量に関して不等式制約を変換するために導入され得るスラック変数の一例は、以下で与えられる:
【数6】
スラック変数は、そのバイナリ構成を用いて分解されてよい。上述されたバイナリ最適化問題及び2つの制約とともに上記のスラック変数を導入することは、2次制約なしバイナリ最適化をもたらし得る。2次制約なしバイナリ最適化は、動作データ110内の動作を実行するための時間を減らすスケジュール122を生成するために、上述されたように解かれ得る。
【0051】
いくつかの実施形態で、同じ入力を使用するいくつかの動作は、同じリソースによって実行されてよい。例えば、
図2aに表されるように、第1転送動作230a及び第1フィードバック動作240aは両方とも、第1入力212及び第1パラメータ220aを使用してよい。この理解に基づけば、2次最適化を解く間に導入される変数の数は、次に基づき減らされ得る:
【数7】
【0052】
単一の入力に関して動作をスケジューリングする例が上述された。概念は、複数の入力に関して動作をスケジューリングすることにも適用されてよい。複数の入力は夫々、単一の入力に類似している動作を含んでよい。複数の入力のスケジュールは、単一の入力に使用された動作のn個のコピーをスケジューリングすることを考えることであってよい。更には、問題の複雑さを低減するために、1つの動作がスケジュールされるべきであるときに1つのリソースが利用可能であるように、リソースの数mは入力の数nよりも大きくてよい。
【0053】
n個の入力の動作のスケジューリングをモデル化するために、入力のうちの1つを表す追加の変数rが導入されてよい。これら及び他の実施形態で、x(i,j)のブール型インジケータ変数はx
r(i,j)と表現されてよい。変数xは、入力rの動作iがリソースjに割り当てられる場合に1に設定されてよい。よって、次の制約は真である:
【数8】
いくつかの実施形態で、この制約は、ホットコンディションと呼ばれ得る。
【0054】
前の通り、入力rの動作iを完了する時間はC
r(i)と表され、次のように表現されてよい:
【数9】
ここで、右側の最初の項は、入力rの動作iの前の動作の完了時間を表し、2番目の項は、入力rの動作iを実行するための計算時間を表し、3番目の項は、リソースjが入力rの動作iを実行するための入力を取得する時間を表す。
【0055】
上記の式に対する制約に関して、リソースは同じ動作の複数のコピーを実行し得るので、入力の単一のコピー及びパラメータのリストが、複数のコピーを実行するために記憶されてもよい。上記の概念は、次のように記述され得る:
【数10】
ここで、y(i,j)は、x
r(i,jの)ブール論理和(Boolean OR)である。
【0056】
単一の入力に関する議論と同様に、メモリ容量が不十分であるリソースには動作を割り当てないことに関する制約は、次のように定義されてよい:
【数11】
【0057】
単一の入力に関して、目的は、最終の動作が実行される時間を最小限とすることである。複数の入力に関して、目的は、n個の入力の1つごとに動作を終えるための時間を最小限とすることである。この目的は:
【数12】
と記述され得る。これは、上述されたようにnがm以下であるときに、ミニマックス(minmax)のより高次のバイナリ最適化をもたらす。我々は、次の制約:
【数13】
を加えることによって、上記のミニマックス問題を単なる最小化問題へと軽減することができる。
【0058】
上記のスラック変数のような追加の補助変数が、より高次のバイナリ最適化を2次制約付きバイナリ最適化へと軽減するために使用されてもよい。導入され得るスラック変数の数は、一緒にスケジューリングされ得る入力の数nに関係があり得る。2次制約付きバイナリ最適化は、動作データ110内の動作を実行するための時間を減らすスケジュール122を生成するように、上述されたように解かれ得る。
【0059】
実行環境130は、スケジュール122及び入力データ114を取得してよい。実行環境130は、スケジュール122に従って入力データ114に基づき動作データ110の動作をリソース132により実行するよう構成されてよい。入力データ114は、動作データ110の動作が設計されるためのデータであってよい。実行環境130は、動作の実行に基づき出力140を生成してよい。
【0060】
環境100の例となる動作が、これより与えられる。この例において、動作データ110は、機械学習モデルを生成する機械学習アルゴリズムのタスクグラフを含んでよい。タスクグラフは、TensorFlow及びONNXによって使用されるもののような既知のソフトウェア技術を用いて生成されてよい。入力データ114は、機械学習モデルが構築され得る入力を含んでよい。入力データ114は、入力の夫々に対するラベルを更に含んでもよい。例えば、入力は、画像であってよく、ラベルは、何が画像に含まれるかの記述であってよい。入力データ114は、機械学習アルゴリズムによって使用されるパラメータの初期値を更に含んでもよい。
【0061】
スケジューリングモジュール120は、2次制約付きバイナリ最適化としてスケジュールをモデル化するために動作データ110及びリソースデータ112を使用してよい。スケジューリングモジュール120は、2次制約付きバイナリ最適化を解いてスケジュール122を生成し得る。実行環境130は、スケジュール122に従い、入力として動作データ110及び入力データ114とともにリソース132を使用して機械学習モデルを生成し得る。機械学習モデルは、入力データ114を使用した訓練に基づき、未知の入力を分類するよう構成されてよい。例えば、機械学習モデルは、動物の画像に関して訓練する場合に、未知の動物の画像を識別し得る。これら及び他の実施形態で、本開示で記載される方法及び/又はシステムを使用することは、より大きいサイズの画像が機械学習モデルのために使用されることを可能にし得る。目下の方法の出現以前、より大きいサイズの画像は処理を増大させ、それにより、機械学習モデルを訓練することにおいて使用することは実際的でなかった。しかし、本開示で論じられているようにスケジューリングし、画像を処理するために複数のリソースを使用する能力を持つことによって、より大きいサイズの画像が、機械学習モデルを訓練するために使用され得る。
【0062】
環境100は、機械学習アルゴリズムのスケジューリング及び処理以外の他の目的のために使用されてもよい。例えば、環境100は、深層畳み込みニューラルネットワーク(convolutional neural networks,CNN)、回帰型ニューラルネット(recurrent neural nets,RRN)、CNNやRRNの変形、全結合ネットワーク(fully connected networks)、タスクグラフにおいて繰り返しサブタスクグラフを含み得る他のディープアーキテクチャを処理するために使用されてよい。他の例として、環境100は、コンピュータビジョンアプリケーションを処理するために使用されてもよい。コンピュータビジョンアプリケーションは、本開示で記載される方法でスケジューリングされ得る動作を含み得る。
【0063】
本開示の適用範囲から逸脱することなしに、
図1に対して、変更、追加、又は削除が行われてよい。例えば、環境100は、本開示で図示及び記載されているものよりも多い又は少ない要素を含んでもよい。
【0064】
図3は、本開示の少なくとも1つの実施形態に従って、動作をスケジューリングすることを支援するよう構成され得る、例となるコンピューティングシステム302のブロック図を表す。コンピューティングシステム302は、スケジューリングモジュール(例えば、
図1のスケジューリングモジュール120)及び/又は実行環境(例えば、
図1の実行環境130)に関連した1以上の動作を実装又は案内するよう構成されてよい。コンピューティングシステム302は、プロセッサ350、メモリ352、及びデータストレージ354を含んでよい。プロセッサ350、メモリ352、及びデータストレージ354は、通信上結合されてよい。
【0065】
一般に、プロセッサ350は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な特別目的又は汎用のコンピュータ、コンピューティングエンティティ、又はプロセッシングデバイスを含んでよく、任意の適用可能なコンピュータ可読記憶媒体に記憶されている命令を実行するよう構成されてよい。例えば、プロセッサ350は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは、プログラム命令を解釈及び/若しくは実行するよう並びに/又はデータを処理するよう構成された任意の他のデジタル又はアナログ回路構成を含んでよい。
図3には単一のプロセッサとして表されているが、プロセッサ350は、本開示で記載される任意数の動作を個別的に又は集合的に実行するか又はその実行を指示するよう構成された任意数のプロセッサを含んでよい。更に、1以上のプロセッサが、異なるサーバのような、1以上の異なる電子デバイスに存在してもよい。
【0066】
いくつかの実施形態で、プロセッサ350は、メモリ352、データストレージ354、又はメモリ352及びデータストレージ354に記憶されているプログラム命令を解釈及び/若しくは実行するよう並びに/又は記憶されているデータを処理するよう構成されてよい。いくつかの実施形態で、プロセッサ350は、データストレージ354からプログラム命令をフェッチし、プログラム命令をメモリ352にロードしてよい。プログラム命令がメモリ352内にロードされた後、プロセッサ350はプログラム命令を実行してよい。
【0067】
メモリ352及びデータストレージ354は、コンピュータ実行可能な命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読記憶媒体を含んでよい。かようなコンピュータ可読記憶媒体は、プロセッサ350のような汎用又は特別目的のコンピュータによってアクセスされ得る任意の利用可能な非一時媒体を含んでよい。一例として、制限なしに、かようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能なプログラム可能リードオンリーメモリ(EEPROM)、コンパクトディスク・リードオンリーメモリ(CD-ROM)若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、あるいは、コンピュータ実行可能な命令又はデータ構造の形で特定のプログラムコードを搬送又は記憶するために使用され得且つ汎用又は特別目的のコンピュータによってアクセスされ得る任意の他の非一時記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体を含んでよい。これら及び他の実施形態で、本開示で説明される「非一時的」(non-transitory)との用語は、In re Nuijtenの連邦巡回判決(Federal Circuit decision)500 F. 3d 1346 (Fed. Cir. 2007))で特許可能な主題の範囲に入らないと認められたタイプの一時媒体のみを除外すると解釈されるべきである。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれ得る。
【0068】
上記のものの組み合わせも、コンピュータ可読記憶媒体の範囲内に含まれ得る。コンピュータ実行可能命令は、例えば、プロセッサ350に特定の動作又は動作群を実行させるよう構成された命令及びデータを含んでよい。
【0069】
本開示の適用範囲を逸脱することなしに、コンピューティングシステム302に対して変更、追加、又は削除が行われてよい。例えば、いくつかの実施形態で、コンピューティングシステム302は、明示的に図示又は記載されていないことがある任意数の他の構成要素を含んでもよい。
【0070】
図4は、本開示で記載される少なくとも1つの実施形態に従って、動作のスケジューリングを使用する、例となる方法400のフローチャートである。方法400は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、方法400の1以上の動作は、
図1の環境100の1以上の要素によって、又は
図3のコンピューティングシステム302若しくは
図3のコンピューティングシステム302の複数によって、実行されてよい。別個のブロックで表されているが、方法400のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、又は削除されてもよい。
【0071】
方法400はブロック402から開始してよく、ブロック402では、タスクグラフが取得されてよい。タスクグラフは、特定の機能を完了するための動作及び動作間のデータのフローを表し得る。タスクグラフの動作の配置及びデータのフローは、特定の動作が他の動作の終了に基づき開始し得る場合に関する制限を表し得る。例えば、タスクグラフは、第1動作及び第2動作を表し、第2動作が使用し得るデータを第1動作が生成することに基づき第1動作と第2動作との間の関係をモデル化してよい。結果として、第2動作は、第1動作が完了するまでは開始し得ない。
【0072】
ブロック404で、タスクグラフ内のサブタスクグラフが識別されてよい。いくつかの実施形態で、繰り返しサブタスクグラフが識別されてよい。これら及び他の実施形態で、繰り返しサブタスクグラフの数が決定されてよい。代替的に、又は追加的に、繰り返しサブタスクグラフの実行を可能にするよう実行される動作が決定されてよい。例えば、タスクグラフは、N個の入力に関して機械学習モデルを訓練する多入力訓練タスクグラフを含んでよい。サブタスクグラフは、N個の入力の中の1つの入力に関して機械学習モデルを訓練する単入力訓練タスクグラフを含んでよい。これら及び他の実施形態で、サブタスクグラフは、入力及び入力のためのラベルを含む2つの入力ノードを含んでよい。サブタスクグラフはまた、機械学習モデルのパラメータについてのM個のモデルリーフノードと、入力に基づく機械学習モデルのパラメータ重みについてのM個の出力リーフノードと、パラメータ重みを決定する動作についての2M+1個のタスク非リーフノードとを含んでもよい。非リーフノードの夫々は、サブタスクグラフ内のタスクを表してよい。
【0073】
これら及び他の実施形態で、タスクグラフは、各サブタスクグラフからのパラメータ重みを平均することを実行するためのノードが後に続くサブタスクグラフのN個のコピーを含んでよい。結果として、タスクグラフは、2N個の入力リーフノードと、M個のモデルリーフノードと、サブタスクグラフのN個のコピーの夫々からのパラメータ重みの平均であるM個の出力リーフノードと、N(2M+1)個のタスク非リーフノードとを含んでよい。非リーフノードの夫々は、タスクグラフ内のタスクを表してよい。
【0074】
ブロック406で、リソースデータが取得されてよい。リソースデータは、タスクグラフに含まれる動作を実行するために使用され得るリソースを示してよい。リソースデータは、タスクグラフ内の動作を実行するときのリソースの処理時間及びメモリ使用量、並びにデバイス間でタスクの出力をやりとりするための時間のような、付加的な情報を含んでもよい。
【0075】
ブロック408で、カウンタiが1に設定されてよい。これら及び他の実施形態で、カウンタiは、他の整数に設定されてもよい。例えば、カウンタiは、5、10、20、30、又はその他の数に設定されてよい。いくつかの実施形態で、数は、タスクグラフのサイズに関する因子に基づき選択されてよい。
【0076】
ブロック410で、繰り返しサブタスクグラフの数がiに等しいことに基づき、リソースデータを用いて繰り返しサブタスクグラフを処理するサブスケジュールについて、最小処理時間が決定されてよい。いくつかの実施形態で、サブスケジュールは、パイプラインのような方法でi個の繰り返しサブタスクグラフの動作を実行するための、リソースデータからのリソースのスケジュールを含んでよい。最小処理時間は、i個の繰り返しサブタスクグラフの動作の夫々の並列処理に基づいてよい。例えば、サブタスクグラフは、機械学習モデルを訓練する単入力訓練タスクグラフを表すと仮定する。結果として、最小処理時間は、i個のサブタスクグラフについて決定され得る。i個のサブタスクグラフは、2i個の入力リーフノードと、M個のモデルリーフノードと、M個の出力リーフノードと、i(2M+1)個の非リーフノードとを含んでよい。よって、i個のサブタスクグラフは、i(2M+1)個のタスクを含んでよい。
【0077】
最小処理時間は、i個のサブタスクグラフのタスクを並行して実行するための推定値であってよい。例えば、i(2M+1)個のタスクの夫々についての最小個別処理時間は、リソースデータ内のリソースの1つによって個別的に処理が実行される場合に、決定されてよい。タスクごとの最小個別処理時間は合計され、i(2M+1)個のタスクで除されてよい。最小個別処理時間は、i個のサブタスクグラフについての最小処理時間の推定値であってよい点に留意されたい。
【0078】
ブロック412で、繰り返しサブタスクグラフの数がiに等しいことに基づき、リソースデータを用いて繰り返しサブタスクグラフを処理するサブスケジュールについて、処理時間が決定されてよい。処理時間は、
図1に関して上述されたスケジューリング方法を用いて決定されるスケジュールに基づき、決定されてよい。
【0079】
例えば、サブタスクグラフは、機械学習モデルを訓練する単入力訓練タスクグラフを表すと仮定する。結果として、処理時間は、i個のサブタスクグラフについて決定され得る。i個のサブタスクグラフは、2i個の入力リーフノードと、M個のモデルリーフノードと、M個の出力リーフノードと、i(2M+1)個の非リーフノードとを含んでよい。よって、i個のサブタスクグラフは、i(2M+1)個のタスクを含んでよい。決定された処理時間は、リソースデータ内のリソースがi個のサブタスクグラフを処理するための最小の又は削減された処理時間であってよい。
【0080】
ブロック414で、最小処理時間と処理時間との間の差が閾値を満足するかどうかが決定されてよい。差が閾値を満足しない場合には、方法400はブロック416に進んでよい。差が閾値を満足する場合には、方法400はブロック418に進んでよい。例えば、処理時間と最小処理時間との間の差は、処理時間と最小処理時間との間の比を決定することを含んでよい。比が0.8から1.2の範囲内にあることに応答して、差は閾値を満足し得る。
【0081】
ブロック416で、iのカウントが調整され、例えば、1だけ増やされてよい。いくつかの実施形態で、カウントは、とりわけ、2、3、5、10、又は20のような、1よりも大きい整数によって増やされてもよい。代替的に、又は追加的に、カウントは、ある整数によって減らされてもよい。カウントが増やされるのか、それとも減らされるのかは、iの現在の値及びiのカウントへの1つ以上の前の変化の値に依存してよい。ブロック416の後には、ブロック410及び412が続いてよい。ブロック410、412、414、及び416は、最小処理時間と処理時間との間の差が閾値を満足するまで繰り返されてよい。
【0082】
ブロック418で、サブスケジュールは、タスクグラフの動作を実行するスケジュールを決定するために複製されてよい。いくつかの実施形態で、サブスケジュールは、繰り返しサブタスクグラフの大部分についての動作をスケジューリングするようにサブスケジュールをスケジュールに順次に適用することによって複製されてよい。例えば、タスクグラフは、N個の入力に関して機械学習モデルを訓練する多入力訓練タスクグラフを含んでよいと仮定する。サブスケジュールは、リソースデータのリソースがタスクグラフのi個のサブタスクグラフを処理するためのスケジュールを表し得る。これら及び他の実施形態で、サブスケジュールは、N/i回実行されてよく、夫々のサブスケジュールは、サブタスクグラフのN/i個のグループのうちの異なる1つを処理してよく、このとき、サブタスクグラフの各グループはi個のサブタスクグラフを含む。いくつかの実施形態で、サブタスクグラフのグループのサブスケジュールは、サブタスクグラフのグループの処理がタイル状にされ得るように構成されてよく、それにより、サブタスクグラフの各グループの処理は、サブタスクグラフの直前のグループの処理の終了前に開始する。
【0083】
ブロック420で、タスクグラフの動作は、リソースデータ内のリソースを用いて、ブロック418で決定されたスケジュールに従って実行されてよい。タスクグラフ及び
図4に関して記載された動作に関する更なる詳細は、“Scheduling Task Graph Operations”と題されて2018年12月6日付けで出願された米国特許出願第16/212354号で見つけられ得る。この米国特許出願は、その全文を参照により本願に援用される。
【0084】
本開示の適用範囲から逸脱することなしに、方法400に対して変更、追加、又は削除が行われてよい。例えば、方法400の動作は別の順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更には、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態の本質から外れることなしに、任意であっても、より少ない操作及び動作へとまとめられても、又は更なる操作及び動作に拡張されてもよい。例えば、方法400は、サブスケジュール間のより良いタイリングを提供するようにリソースデータを調整することを更に含んでもよい。
【0085】
図5は、本開示で記載される少なくとも1つの実施形態に従って、動作をスケジューリングする、他の例となる方法500のフローチャートである。方法500は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、方法500の1以上の動作は、
図1の環境100の1以上の要素によって、又は
図3のコンピューティングシステム302若しくは
図3のコンピューティングシステム302の複数によって、実行されてよい。別個のブロックで表されているが、方法500のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、又は削除されてもよい。
【0086】
方法500はブロック502から開始してよく、ブロック502で、機能を実装するように連続的に実行されるよう構成される複数の動作が、取得されてよい。これら及び他の実施形態で、各動作は、パラメータ及び入力に関して実行されてよい。
【0087】
いくつかの実施形態で、複数の動作の中の第1動作のための入力は、複数の動作の中の第2動作の出力であってよい。これら及び他の実施形態で、第2動作は、複数の動作の連続実行において第1動作の直前であってよい。
【0088】
ブロック504で、パラメータ及び入力に関して動作を実行するよう構成される複数のリソースと、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間との指示が、取得されてよい。
【0089】
ブロック506で、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間に基づき、複数の動作を実行する全体の存続期間を減らす、複数の動作を実行するためのリソースのスケジューリングが、バイナリ最適化としてモデル化されてよい。
【0090】
バイナリ最適化としてリソースのスケジューリングをモデル化することは、複数の動作の中の第1動作の完了時間を定義するバイナリ最適化式を、第1動作の前に位置する複数の動作の中の動作を実行するための実行時間と、第1動作のための入力を取得するための通信遅延とを用いて生成することを含んでよい。
【0091】
リソースのスケジューリングをモデル化することは、複数の動作の夫々がリソースのうちの1つによって実行されることをモデル化することと、複数の動作の夫々がリソースのうちの1つによって実行されることをモデル化することを、バイナリ最適化を解くときに制約として適用することとを含んでよい。
【0092】
複数の動作は、複数のサブタスクの中のあるサブタスクに関連付けられてよい。これら及び他の実施形態で、複数のサブタスクの夫々は、異なった動作に関連付けられてよい。これら及び他の実施形態で、複数の動作を実行するためのリソースのスケジューリングをモデル化することは、複数のリソースによって複数のサブタスクの夫々について異なった動作を実行するようにリソースのスケジューリングをバイナリ最適化としてモデル化することを含んでよい。これら及び他の実施形態で、複数のリソースの数は、複数のサブタスクの数よりも多くてよい。
【0093】
ブロック508で、バイナリ最適化は、複数のリソースのスケジュールを決定するように解かれてよい。ブロック510で、複数の動作は、複数のリソースによって、機能を実装するようにスケジュールに従って実行されてよい。
【0094】
いくつかの実施形態で、複数の動作の実行によって実装される機能は、機械学習モデルを生成してよい。これら及び他の実施形態で、方法500は、分類されていない入力に機械学習モデルを適用して、入力の分類に関してそれら分類されていない入力を分類することを更に含んでもよい。
【0095】
本開示の適用範囲から逸脱することなしに、方法500に対して変更、追加、又は削除が行われてよい。例えば、方法500の動作は別の順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更には、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態の本質から外れることなしに、任意であっても、より少ない操作及び動作へとまとめられても、又は更なる操作及び動作に拡張されてもよい。
【0096】
例えば、方法500は、複数のリソース間で情報を伝える通信遅延を取得することを更に含んでもよい。これら及び他の実施形態で、リソースのスケジューリングをモデル化することは、通信遅延にさらに基づいてもよい。
【0097】
代替的に、又は追加的に、方法500は、リソースの夫々に関連したメモリ容量と、パラメータのメモリ要件及び入力のメモリ要件とを取得することを更に含んでもよい。これら及び他の実施形態で、リソースのスケジューリングをモデル化することは、パラメータのメモリ要件及び入力のメモリ要件に基づき、複数の動作の夫々に関してリソースの夫々に関連したメモリ容量制約をモデル化することを含んでよい。これら及び他の実施形態で、モデル化されたメモリ容量制約は、バイナリ最適化を解くときに適用されてよい。
【0098】
上述されたように、本開示で記載される実施形態は、以下でより詳細に論じられるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特別目的の又は汎用のコンピュータ(例えば、
図3のプロセッサ350)の使用を含んでよい。更に、本開示で記載される実施形態は、コンピュータ実行可能な命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読媒体(例えば、
図3のメモリ352又はデータストレージ354)を用いて実装されてもよい。
【0099】
本開示で使用されるように、「モジュール」又は「コンポーネント」との語は、モジュール若しくはコンポーネントの動作を実行するよう構成された特定のハードウェア実施、及び/又はコンピューティングシステムの汎用のハードウェア(例えば、コンピュータ可読媒体、プロセッシングデバイス、など)によって記憶及び/又は実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを指し得る。いくつかの実施形態で、本開示で記載される種々のコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムで(例えば、別個のスレッドとして)実行されるオブジェクト又はプロセスとして実施されてもよい。本開示で記載されるシステム及び方法の一部は、(汎用のハードウェアによって記憶及び/又は実行される)ソフトウェアにおいて実施されるものとして概して記載されているが、特定のハードウェア実施又はソフトウェアと特定のハードウェア実施との組み合わせも可能であり企図される。本明細書中、「コンピューティングエンティティ」は、本開示で先に定義されている任意のコンピューティングシステム、又はコンピューティングシステムで実行される任意のモジュール若しくはモジュールの組み合わせであってよい。
【0100】
本開示で、特に添付の特許請求の範囲(例えば、添付の特許請求の本文)で使用される語は、一般的に、“非限定的な(open)”用語として意図されている(例えば、語「含んでいる(including)」は、“~を含んでいるが、~に制限されない”との意に解釈されるべきであり、語「備えている(having)」は、「少なくとも~を備えている」との意に解釈されるべきであり、語「含む(includes)」は、“~を含むが、~に制限されない”との意に解釈されるべきである、等。)。
【0101】
更に、導入されたクレーム記載(introduced claim recitation)において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しない。例えば、理解を促すために、後続の添付された特許請求の範囲では、「少なくとも1つの(at least one)」及び「1以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって、「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「1つ以上の」又は「少なくとも1つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を1しか含まない例に限定されるということが示唆されると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである。)。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。
【0102】
更には、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、通常、少なくとも記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載がある場合、この記載は、少なくとも2つの記載事項、又は2つ以上の記載事項を意味する。)。更に、「A、B及びC等のうち少なくとも1つ」又は「A、B及びC等のうちの1つ以上」に類する表記が使用される場合、一般的に、そのような構造は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又はAとBとCの全て、等を含むよう意図される。
【0103】
更に、2つ以上の選択可能な用語を表す如何なる離接語及び/又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの1つ、それらの用語のうちのいずれか、あるいは、それらの用語の両方を含む可能性を意図すると理解されるべきである。例えば、「A又はB」という句は、「A又はB」、あるいは、「A及びB」の可能性を含むことが理解されるべきである。
【0104】
ここで挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本開示の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
【0105】
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記複数のリソースのスケジュールを決定することと、
前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する方法。
(付記2)
前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
付記1に記載の方法。
(付記3)
前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
付記2に記載の方法。
(付記4)
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第1動作の完了時間を定義するバイナリ最適化式を、前記第1動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第1動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
付記3に記載の方法。
(付記5)
前記複数の動作の中の第1動作のための入力は、前記複数の動作の中の第2動作の出力であり、該第2動作は、前記複数の動作の連続実行において前記第1動作の直前である、
付記1に記載の方法。
(付記6)
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの1つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの1つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
付記1に記載の方法。
(付記7)
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
付記1に記載の方法。
(付記8)
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
付記7に記載の方法。
(付記9)
前記パラメータの夫々は、前記複数の動作のうちの2つによって使用される、
付記1に記載の方法。
(付記10)
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
当該方法は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
付記1に記載の方法。
(付記11)
システムによって実行される場合に、該システムに動作を実行させる命令を記憶するよう構成された1以上のコンピュータ可読媒体であって、
前記動作は、
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される前記システム内の複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記システムの前記複数のリソースのスケジュールを決定することと、
前記システムの前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する、コンピュータ可読媒体。
(付記12)
前記動作は、前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
付記11に記載のコンピュータ可読媒体。
(付記13)
前記動作は、前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
付記12に記載のコンピュータ可読媒体。
(付記14)
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第1動作の完了時間を定義するバイナリ最適化式を、前記第1動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第1動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
付記13に記載のコンピュータ可読媒体。
(付記15)
前記複数の動作の中の第1動作のための入力は、前記複数の動作の中の第2動作の出力であり、該第2動作は、前記複数の動作の連続実行において前記第1動作の直前である、
付記11に記載のコンピュータ可読媒体。
(付記16)
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの1つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの1つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
付記11に記載のコンピュータ可読媒体。
(付記17)
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
付記11に記載のコンピュータ可読媒体。
(付記18)
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
付記17に記載のコンピュータ可読媒体。
(付記19)
前記パラメータの夫々は、前記複数の動作のうちの2つによって使用される、
付記11に記載のコンピュータ可読媒体。
(付記20)
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
前記動作は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
付記11に記載のコンピュータ可読媒体。
【符号の説明】
【0106】
100 環境
110 動作データ
112 リソースデータ
114 入力データ
120 スケジューリングモジュール
122 スケジュール
130 実行環境
132,210 リソース
140 出力
302 コンピューティングシステム
350 プロセッサ
352 メモリ
354 データストレージ