(57)【要約】【課題】動作のスケジューリングのための方法等を提供する。【解決手段】方法は、機能を実装するように連続的に実行されるよう構成される複数の動作を取得することを含んでよい。いくつかの実施形態で、各動作はパラメータ及び入力に関して実行されてよい。方法は、動作を実行するよう構成される複数のリソースと、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間との指示を取得することも含んでよい。方法は、複数の動作を実行する全体の存続期間を減らす、複数の動作を実行するためのリソースのスケジューリングを、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間に基づき、バイナリ最適化としてモデル化することも含んでよい。方法は、バイナリ最適化を解いて複数のリソースのスケジュールを決定することと、複数のリソースによって、機能を実装するようにスケジュールに従って複数の動作を実行することとを更に含んでよい。【選択図】図５
2020191074.tif 000002
【特許請求の範囲】
【請求項１】
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記複数のリソースのスケジュールを決定することと、
前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する方法。
【請求項２】
前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
請求項１に記載の方法。
【請求項３】
前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
請求項２に記載の方法。
【請求項４】
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第１動作の完了時間を定義するバイナリ最適化式を、前記第１動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第１動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
請求項３に記載の方法。
【請求項５】
前記複数の動作の中の第１動作のための入力は、前記複数の動作の中の第２動作の出力であり、該第２動作は、前記複数の動作の連続実行において前記第１動作の直前である、
請求項１に記載の方法。
【請求項６】
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
請求項１に記載の方法。
【請求項７】
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
請求項１に記載の方法。
【請求項８】
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
請求項７に記載の方法。
【請求項９】
前記パラメータの夫々は、前記複数の動作のうちの２つによって使用される、
請求項１に記載の方法。
【請求項１０】
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
当該方法は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
請求項１に記載の方法。
【請求項１１】
システムによって実行される場合に、該システムに動作を実行させる命令を記憶するよう構成された１以上のコンピュータ可読媒体であって、
前記動作は、
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される前記システム内の複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記システムの前記複数のリソースのスケジュールを決定することと、
前記システムの前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する、コンピュータ可読媒体。
【請求項１２】
前記動作は、前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記動作は、前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第１動作の完了時間を定義するバイナリ最適化式を、前記第１動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第１動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記複数の動作の中の第１動作のための入力は、前記複数の動作の中の第２動作の出力であり、該第２動作は、前記複数の動作の連続実行において前記第１動作の直前である、
請求項１１に記載のコンピュータ可読媒体。
【請求項１６】
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
請求項１１に記載のコンピュータ可読媒体。
【請求項１７】
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
請求項１１に記載のコンピュータ可読媒体。
【請求項１８】
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記パラメータの夫々は、前記複数の動作のうちの２つによって使用される、
請求項１１に記載のコンピュータ可読媒体。
【請求項２０】
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
前記動作は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
請求項１１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示で論じられている実施形態は、動作をスケジューリングすることに関係がある。
【背景技術】
【０００２】
タスクグラフは、特定のタスクを実行するための動作及び動作間のデータのフローを表し得る。例えば、タスクグラフは、機械学習アルゴリズムが機械学習モデルを生成するための動作及びデータフローを表し得る。タスクグラフは、タスクグラフ内の動作を実行するために使用され得るサーバのクラスタのようなデバイスのクラスタをスケジューリングするために使用されてよい。
【０００３】
本開示で請求される対象は、上述されたような環境でしか動作しない実施形態又は上述されたようなあらゆる欠点を解消する実施形態に制限されない。むしろ、この背景は、本開示で記載されているいくつかの実施形態が実施され得る技術分野の一例を説明するためにのみ設けられている。
【発明の概要】
【０００４】
実施形態の態様に従って、方法は、機能を実装するように連続的に実行されるよう構成される複数の動作を取得することを含んでよい。いくつかの実施形態で、各動作は、パラメータ及び入力に関して実行されてよい。方法は、パラメータ及び入力に関して動作を実行するよう構成される複数のリソースと、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間との指示を取得することも含んでよい。方法は、複数の動作を実行する全体の存続期間を減らす、複数の動作を実行するためのリソースのスケジューリングを、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間に基づき、バイナリ最適化としてモデル化することも含んでよい。方法は、バイナリ最適化を解いて複数のリソースのスケジュールを決定することと、複数のリソースによって、機能を実装するようにスケジュールに従って複数の動作を実行することとを更に含んでよい。
【０００５】
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって、実現及び達成される。
【０００６】
上記の概要及び下記の詳細な説明はいずれも、例として与えられており、請求される発明を説明するためのものであって、限定するものではない。
【０００７】
図面を使用して、更なる特定及び詳細をもって、例となる実施形態が記載及び説明される。
【図面の簡単な説明】
【０００８】
【図１】動作をスケジューリングすることに関連した環境の例を表す図である。
【図２ａ】例となる動作フローを表す。
【図２ｂ】例となるリソースを表す。
【図３】動作をスケジューリングすることを支援するよう構成され得るコンピューティングシステムの例を表す。
【図４】動作のスケジューリングを使用する方法の例のフローチャートである。
【図５】動作をスケジューリングする方法の例のフローチャートである。
【発明を実施するための形態】
【０００９】
データに対して実行される動作はますます増えている。例えば、深層学習ネットワークのような機械学習アルゴリズムは、訓練中にデータに対して数百万という動作を実行する。結果として、いくつかの状況において、単一のデバイスに動作を実行させることは、動作の実行を遅くすることがある。本開示で請求されるシステム及び方法は、動作を実行するための時間を減らすように多数の異なったリソースにわたる動作のスケジューリングに向けられ得る。これら及び他の実施形態で、動作は、リソースの利用可能性及び動作のフローに基づき、リソースにわたってスケジューリングされてよい。リソースが動作を処理するためのスケジュールを決定することは、非決定性多項式時間（Non-deterministic Polynomial time，ＮＰ）完全問題であってよい。よって、動作を実行するための時間を減らし得るスケジュールを決定することは、難しいことがある。
【００１０】
本開示の１以上の実施形態は、リソースが動作を実行するためのスケジュールを決定し得るシステム及び／又は方法に関係があってよい。スケジュールは、動作と、動作を実行するよう構成されるリソースと、リソースの夫々が動作の夫々を個別的に実行するための存続期間との指示を用いて決定されてよい。
【００１１】
いくつかの実施形態で、複数の動作を実行するための全体の存続期間を減らす、複数の動作を実行するためのスケジュールは、動作を実行するためのリソースのスケジューリングをバイナリ最適化によりモデル化することによって決定されてよい。バイナリ最適化は、リソースが動作の夫々を個別的に実行するための存続期間に基づき、複数の動作を実行するようにモデル化されてよい。これら及び他の実施形態では、２次制約付き（quadratic  constrained）バイナリ最適化が、スケジュールを決定するように解かれてよく、動作は、スケジュールに従って実行されてよい。
【００１２】
そのようなものとして、本開示の１以上の実施形態に従って、ここで記載される動作は、動作の実行をスケジューリングすることを改善することができる。動作の実行をスケジューリングすることの改善は、動作を実行している可能性があるデバイス及び／又はシステムのようなリソースのより良い利用をもたらし得る。代替的に、又は追加的に、動作の実行をスケジューリングすることの改善は、リソースが動作を実行するための時間を減らし得る。代替的に、又は追加的に、動作の実行をスケジューリングすることの改善は、動作を実行しているリソースの性能を高め得る。例えば、機械学習アルゴリズムのための動作の実行をスケジューリングすることの改善は、サーバのようなコンピュータシステムが機械学習モデルを訓練するレイテンシ及び時間を減らし得る。代替的に、又は追加的に、機械学習アルゴリズムのための動作の実行をスケジューリングすることの改善は、機械学習モデルが改善され得るように、機械学習モデルを生成するときに使用される可能性がある入力の数を増やし得る。よって、ここで開示される実施形態は、機械学習、タスクグラフのような多数の動作のためのリソースのスケジューリング、及びコンピューティングシステムリソースの利用の技術分野における問題を解消し得る。更に、ここで開示される実施形態は、動作を実行するよう働くコンピューティングシステムリソースの処理時間及びレイテンシを低減し得る。
【００１３】
本開示の実施形態は、添付の図面を参照して説明される。
【００１４】
図１は、本開示で記載される少なくとも１つの実施形態に従って配置される、動作をスケジューリングすることに関連した環境１００を例示する図である。環境１００は、スケジューリングモジュール１２０及び実行環境１３０を含んでよい。
【００１５】
スケジューリングモジュール１２０及び／又は実行環境１３０は、１以上のコンピューティングデバイスがそれらとともに記載される動作のうちの１以上を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。これら及び他の実施形態で、スケジューリングモジュール１２０及び／又は実行環境１３０は、任意数のプロセッサ、マイクロプロセッサ（例えば、１以上の動作を実行するか若しくはその実行を制御するためのもの）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、又はそれらのうちの２以上の任意の適切な組み合わせを含むハードウェアを用いて実装されてよい。代替的に、又は追加的に、スケジューリングモジュール１２０及び実行環境１３０は、ハードウェアとソフトウェアとの組み合わせにより実装されてもよい。本開示において、スケジューリングモジュール１２０及び実行環境１３０によって実行されるものとして記載される動作は、スケジューリングモジュール１２０及び実行環境１３０が対応するシステムに実行するよう仕向け得る動作を含んでよい。
【００１６】
いくつかの実施形態で、環境１００は、動作データ１１０、リソースデータ１１２、及び入力データ１１４を取得してよい。動作データ１１０は、特定の機能を実装するための動作及び動作間のデータのフローを表してよい。例えば、動作データ１１０は、どのような入力及び／又はパラメータが異なった動作に供給されるかと、第１動作の出力が第２動作の出力に供給されるかどうかとを表してよい。代替的に、又は追加的に、動作データ１１０は、動作間の直列又は並列な関係を示してよい。直列な関係は、第２動作が完了するまでは第１動作が開始し得ないことを示してよい。並列な関係は、第１動作及び第２動作が重複した期間に実行され得ることを示してよい。入力データ１１４は、動作によって生成されない１以上の入力、１以上のパラメータ、及び動作を実行するために使用される他のデータのような、動作を実行するために使用され得る情報を表してよい。
【００１７】
図２ａは、本開示の少なくとも１つの実施形態に従う動作フロー２００を例示する。動作フロー２００は、機械学習アルゴリズムを訓練する動作フローを表してよい。例えば、動作フロー２００は、単一の入力を用いて機械学習アルゴリズムを訓練することを表してよい。いくつかの実施形態で、動作フロー２００は、単入力機械学習訓練で使用され得るタスクグラフを表してよい。
【００１８】
動作フロー２００は、第１入力２１２と、第２入力２１４と、第１パラメータ２２０ａ、第２パラメータ２２０ｂ、及び第３パラメータ２２０ｃを含むパラメータ２２０と、第１転送動作２３０ａ、第２転送動作２３０ｂ、及び第３転送動作２３０ｃを含む転送動作２３０と、第１フィードバック動作２４０ａ、第２フィードバック動作２４０ｂ、及び第３フィードバック動作２４０ｃを含むフィードバック動作２４０と、中間動作２５０と、第１出力２６０ａ、第２出力２６０ｂ、及び第３出力２６０ｃを含む出力２６０とを含んでよい。
【００１９】
転送動作２３０は、連続的に実行されてよい。例えば、第１転送動作２３０ａは、第１入力２１２及び第１パラメータ２２０ａを取得し、それらに対して第１動作を実行して第１転送出力を生成してよい。第２転送動作２３０ｂは、第１転送動作２３０ａの完了後に実行されてよい。第２転送動作２３０ｂは、第１転送出力及び第２パラメータ２２０ｂを取得し、それらに対して第２動作を実行して第２転送出力を生成してよい。第３転送動作２３０ｃは、第２転送動作２３０ｂの完了後に実行されてよい。
【００２０】
第３転送動作２３０ｃは、第２転送出力及び第３パラメータ２２０ｃを取得し、それらに対して第３動作を実行して第３転送出力を生成してよい。中間動作２５０は、第３転送動作２３０ｃの完了後に実行されてよい。中間動作２５０は、第３転送出力及び第２入力２１４を取得し、それらに対して中間動作を実行して第１フィードバック出力を生成してよい。
【００２１】
第３フィードバック動作２４０ｃは、中間動作２５０の完了後に実行されてよい。第３フィードバック動作２４０ｃは、第１フィードバック出力、第３転送出力、及び第３パラメータ２２０ｃを取得し、それらに対して第４動作を実行して第３出力２６０ｃを生成してよい。
【００２２】
第２フィードバック動作２４０ｂは、第３フィードバック動作２４０ｃの完了後に実行されてよい。第２フィードバック動作２４０ｂは、第３出力２６０ｃ、第２転送出力、及び第２パラメータ２２０ｂを取得し、それらに対して第５動作を実行して第２出力２６０ｂを生成してよい。
【００２３】
第１フィードバック動作２４０ａは、第２フィードバック動作２４０ｂの完了後に実行されてよい。第１フィードバック動作２４０ａは、第２出力２６０ｂ、第１入力２１２、及び第１パラメータ２２０ａを取得し、それらに対して第６動作を実行して第１出力２６０ａを生成してよい。
【００２４】
いくつかの実施形態で、転送動作２３０によって実行される動作は、同じ又は同様の動作であってよい。代替的に、又は追加的に、フィードバック動作２４０によって実行される動作は、同じ又は同様の動作であってよい。
【００２５】
一例として、動作フロー２００は、画像にラベルを付すために機械学習モデルを訓練することに関係があってよい。これら及び他の実施形態で、第１入力２１２は、画像であってよく、パラメータ２２０は、機械学習アルゴリズムに関連した数値であってよく、第２入力２１４は、画像のラベルであってよく、出力２６０は、パラメータの変化に対するエラーの変化を表してよい。
【００２６】
動作フロー２００は、６つの動作を含むフローを表す。しかし、動作フロー２００は、任意の数の動作を含んでよい。例えば、動作フロー２００は、Ｎ個の転送動作２３０、Ｎ個のフィードバック動作２４０、Ｎ個のパラメータ２２０、及びＮ個の出力２６０を含んでよい。よって、動作フロー２００は、２×Ｎ＋１個の動作を表してよい。
【００２７】
図１の議論に戻ると、いくつかの実施形態で、動作データ１１０は、繰り返しである動作を表してよい。例えば、動作データ１１０は、多数の入力に対する機械学習アルゴリズムのための動作をスケジューリングするために使用され得る動作を表してよい。一例として、図２ａの動作フロー２００は、入力の夫々について一度実行されてよい。いくつかの実施形態で、スケジューリングモジュール１２０によって決定されるスケジュール１２２は、リソース１３２により機械学習アルゴリズムの入力のために多様な動作フローを実行するためのスケジュールであってよい。これら及び他の実施形態で、リソース１３２によって重複した期間に実行され得る多重動作フローは、同じ構成の動作を含んでよく、入力について互いに依存しなくてよい。
【００２８】
例えば、１つの特定の動作フローのための処理時間は、その特定の動作フローの処理が終了するまではリソース１３２が他の動作を実行していないとして、時間Ｔ１であってよい。２つの動作フローのための処理時間は、それらの動作フローの処理が終了するまではリソース１３２が他の動作を実行していないとして、時間Ｔ２であってよい。なお、リソース１３２の構成及び複数のリソースにわたるパイプライン処理の性質を考えると、Ｔ２＜（２×Ｔ１）である。よって、重複した期間におけるリソース１３２による処理のために１よりも多い動作フローをスケジューリングすることは、効率の良さをもたらし得る。
【００２９】
重複した期間における多くの動作フローのためのスケジューリングを実行する例として、機械学習アルゴリズムの訓練はＭ個の訓練画像を含むと仮定する。画像ごとの訓練は、Ｎが１つの画像に関する訓練へのパラメータの数であるとして、図２ａに関して上述されたように、（２×Ｎ＋１）個の動作を含んでよい。よって、Ｍ個の訓練画像に対して機械学習アルゴリズムを訓練するための動作は、Ｍ×（２×Ｎ＋１）であってよい。Ｍ個全ての訓練画像について動作をスケジューリングする代わりに、環境１００は、ＫがＭよりも小さく１よりも大きいとして、Ｋ個の訓練画像のような、Ｍ個の訓練画像のサブセットのためのスケジュールを生成してもよい。これら及び他の実施形態で、スケジューリングモジュール１２０は、Ｋ×（２×Ｎ＋１）個の動作のためのスケジュールがスケジューリングされるように、Ｋ個の訓練画像のためのスケジュールを生成し得る。これら及び他の実施形態で、スケジューリングモジュール１２０は、Ｋ個の訓練画像のスケジューリングをバイナリ最適化としてモデル化し、バイナリ最適化を解くことによって、Ｋ個の訓練画像のためのスケジュールを生成し得る。
【００３０】
いくつかの実施形態で、リソースデータ１１２は、動作データ１１０内の動作を実行するために使用され得る実行環境１３０内のリソース１３２を表してよい。いくつかの実施形態で、リソースデータ１１２によって表されるリソース１３２のうちの１つは、入力データ１１４に基づいて動作データ１１０内の動作の一部、全て、又は複数を実行するよう構成された物理デバイスを表してよい。入力データ１１４及び動作データ１１０内の動作を使用して、リソース１３２のうちの１つは、動作データ１１０において表されている動作の出力を生成し得る。
【００３１】
これら及び他の実施形態で、リソース１３２のうちの１つは、コンピューティングユニットを含んでもよい。例えば、コンピューティングユニットは、中央演算処理装置（ＣＰＵ）、グラフィクス処理ユニット（ＧＰＵ）、プロセッサ、マルチコアプロセッサのプロセッサコア、ＦＰＧＡ、ＡＳＩＣ、又はハードウェア要素の他の組み合わせを含んでよい。これら及び他の実施形態で、単一のデバイスが複数のコンピューティングユニットを、よって複数のリソースを含んでもよい。代替的に、又は追加的に、リソース１３２のうちの１つはデバイスを含んでもよい。デバイスは、とりわけ、モバイルデバイス、サーバ、パーソナルコンピュータなどの、プロセッサとメモリとの組み合わせのようなコンピューティングシステムを含んでよい。
【００３２】
図２ｂは、本開示の少なくとも１つの実施形態に従うリソース２１０を例示する。リソース２１０は、リソースＲ１、Ｒ２、及びＲ３を表し得る３つの頂点を含み得るリソースグラフにおいて配置されてよい。頂点間の辺は、リソース間のネットワーク接続を、よって、どのリソースが他のリソースと通信し得るかを表してよい。図示されるように、リソースの夫々は、他のリソースと通信してよい。なお、いくつかのリソースグラフでは、リソースの夫々は相互接続されなくてもよい。
【００３３】
いくつかの実施形態で、辺はまた、リソース間のネットワーク接続の速さに関する情報も含んでよい。図示されるように、リソースＲ１とリソースＲ２との間のネットワーク接続は１０ＧＢ／ｓであってよい。リソースＲ２とリソースＲ３との間のネットワーク接続は１５ＧＢ／ｓであってよく、リソースＲ１とリソースＲ３との間のネットワーク接続は５ＧＢ／ｓであってよい。図示されるように、ネットワーク接続は全て異なっている。代替的に、又は追加的に、ネットワーク接続の夫々は同じであってもよく、あるいは、ネットワーク接続のいくつかが同じであってよく、他は異なってよい。
【００３４】
図１の議論に戻ると、いくつかの実施形態で、リソースデータ１１２はまた、リソース１３２に関して動作の実行に関する情報も含んでよい。例えば、リソースデータ１１２は、リソース１３２の夫々が特定の動作を実行するための時間に関する情報を含んでよい。代替的に、又は追加的に、リソースデータ１１２は、リソースの夫々のメモリ容量と、リソース１３２の夫々が特定の動作を実行するためのメモリ要件とに関する情報を含んでもよい。
【００３５】
いくつかの実施形態で、リソースデータ１１２は、特定の動作の総処理時間を決定するために使用されてよい。代替的に、又は追加的に、リソースデータ１１２は、リソース１３２を用いて処理するための動作のスケジューリングを決定するために使用されてよい。これら及び他の実施形態で、動作のスケジューリングは、リソース１３２の制約と、動作データ１１０に従う動作の動作フローとに基づき、動作の夫々を実行し得るリソースを選択することを指し得る。
【００３６】
例えば、いくつかの実施形態で、リソースデータ１１２は、どのリソース１３２が動作フロー内の動作を実行し得るかを決定するのを助けるために使用されてよい。例えば、ある動作が特定のリソースのメモリ容量よりも多いメモリ量を使用する場合に、その動作は、その特定のリソースには割り当てられ得ない。代替的に、又は追加的に、特定のリソースが、あるメモリ量を使用する特定の動作を実行中である場合に、その特定のリソースは、その特定の動作のメモリ使用量と組み合わせたときに特定のリソースのメモリ量よりも多いメモリ量を使用する可能性がある他の動作を重複した時間インターバル中に実行しなくてよい。
【００３７】
他の例として、いくつかの実施形態で、リソースデータ１１２はまた、他の動作からの出力に基づく動作がいつ開始し得るかを、リソースの動作時間及びリソース間のネットワークレイテンシに基づき決定するためにも使用されてよい。例えば、第１リソースが第１動作を実行し、第２リソースが第１動作からの出力に基づき第２動作を実行する場合に、リソースデータ１１２は、第１リソースと第２リソースとの間で情報を送信する時間遅延と、第１リソースが第１動作を実行するための時間とを決定するために使用されてよい。よって、リソースデータ１１２は、第２リソースが第２動作を処理し始め得る時を、第１リソースによって第１動作を実行するための時間と、第１リソースと第２リソースとの間のネットワーク接続とに基づき決定するために、使用されてよい。
【００３８】
いくつかの実施形態で、動作データ１１０及びリソースデータ１１２は、スケジューリングモジュール１２０へ供給されてよい。スケジューリングモジュール１２０は、リソースデータ１１２において表されているリソース１３２によって動作データ１１０内の動作を実行するスケジュール１２２を決定するよう構成されてよい。スケジュール１２２は、動作ごとに、動作の開始時間と、リソース１３２のうちのどの１つ以上がその動作を実行し得るかとを示してよい。スケジュール１２２はまた、動作データ１１０内の全ての動作を処理するための総処理時間も規定してよい。
【００３９】
いくつかの実施形態で、スケジューリングモジュール１２０は、スケジュール１２２が処理時間を削減し、且つ／あるいは、動作データ１１０によって表される全ての動作をリソース１３２により処理するための時間を最小限とするように、スケジュール１２２を決定するよう構成されてよい。上述されたように、いくつかの動作について、それらの動作及びリソースデータ１１２のためのスケジュールを生成することは、ＮＰ完全問題であってよい。よって、全ての動作を用いてスケジュールを生成することは、困難であり、時間がかかることがある。
【００４０】
いくつかの実施形態で、スケジュールは、２次制約付きバイナリ最適化のようなバイナリ最適化を解くことによって決定されてよい。これら及び他の実施形態で、動作データ１１０及びリソースデータ１１２に基づくリソース１３２のスケジューリングは、バイナリ最適化としてモデル化されてよい。バイナリ最適化のモデル化の後、バイナリ最適化は解かれてよい。バイナリ最適化の解は、リソース１３２をスケジューリングするスケジュール１２２を決定するために使用されてよい。
【００４１】
如何なる既知の方法も、バイナリ最適化を解くために使用されてよい。例えば、いくつかの実施形態で、バイナリ最適化を２次制約なし（unconstrained）バイナリ最適化に変換するための技術が、バイナリ最適化に適用されてもよい。２次制約なしバイナリ最適化は、富士通によって提供されるデジタルアニーラ（digital  annealer）ソルバのようなデジタルアニーラソルバを用いて解かれてよい。代替的に、又は追加的に、とりわけ、Ｃｐｌｅｘ、Ｇｕｒｏｂｉのような組み合わせ最適化ソルバが、バイナリ最適化に対する近似解を求めるために使用されてもよい。代替的に、又は追加的に、バイナリ最適化は、タブー（Tabu）探索又は焼きなまし法（simulated  annealing）のようなヒューリスティクスを用いて解かれてもよい。代替的に、又は追加的に、バイナリ最適化は、ＧｏｏｇｌｅのＯＲツールで提供されるＳＡＴソルバのような制約付き充足可能性（satisfiability，ＳＡＴ）ソルバを用いて解かれてもよい。
【００４２】
動作データ１１０のスケジューリングを、２次制約付きバイナリ最適化のようなバイナリ最適化としてモデル化することに関する例が、これより与えられる。いくつかの実施形態で、動作データ１１０は、単一の入力に関連した動作に関連してよい。例えば、機械学習訓練プロセス中に、動作は、単一の入力のための訓練及びその入力のラベルに関連付けられてよい。単一の入力の例の後で、複数の入力のために動作をスケジューリングすることに関する例も与えられる。
【００４３】
この例において、Ｎが１よりも大きい整数であるとして、ｍ個のリソースと、２Ｎ＋１個の動作とが存在すると仮定する。いくつかの実施形態で、Ｎは、図２ａに関して記載されたフィードバック動作及び／又は転送動作の数であってよい。これら及び他の実施形態で、動作データ１１０の各動作ｉが、リソースデータ１１２において記述されているリソース１３２の中のリソースｊによって実行されるときに完了するための時間量は、ｔ（ｉ，ｊ）によって示されてよい。動作が実行されるための時間は、リソースが受け取られた入力に基づき出力を生成するための時間を含んでよい。ビットごとのいずれかの第１リソースｊといずれかの第２リソースｋとの間の通信時間は、ｃ（ｊ，ｋ）によって示されてよい。よって、ｃ（ｊ、ｊ）については、通信時間は０である。これら及び他の実施形態で、通信時間は、異なるリソース間で情報を送る時間遅延であってよい。
【００４４】
いくつかの実施形態で、動作ｉによって使用される入力のサイズは、Ｉ（ｉ）によって示されてよく、動作ｉによって使用されるパラメータのサイズは、Ｐ（ｉ）によって示されてよい。入力のサイズ及びパラメータのサイズは、入力及びパラメータのビットでのサイズであってよい。また、各リソースｊのメモリ容量は、Ｍ（ｊ）によって示されてよい。
【００４５】
いくつかの実施形態で、動作データ１１０の全ての動作は夫々、リソース１３２のうちの１つによって実行されてよい。よって、ある動作の第１部分が第１リソースによって実行される場合に、その動作の第２部分は第１リソースによって実行され、他のリソースによっては実行されない。各動作が単一のリソースによって実行されるならば、ブール変数ｘによって、動作ｉがリソースｊによって実行されるべきかどうかを表してよい。ここで、動作ｉがリソースｊに割り当てられる場合には、ｘは１であり、動作ｉがリソースｊに割り当てられない場合には、ｘは０である。上記を鑑み、バイナリ最適化に対する次の制約が決定されてよい：
【数１】
2020191074.tif 000003
いくつかの実施形態で、この制約は、ホットコンディション（hot  condition）と呼ばれ得る。
【００４６】
動作を完了する時間は、Ｃ（ｉ）と示されてよい。Ｃ（ｉ）は、複数の動作の中の第１動作が実行中である時間から測定される、ある動作を完了するまでの時間であってよい。よって、Ｃ（ｉ）によって記述される、第３動作を完了するまでの時間は、第２動作の終了から第３動作の終了までの時間でなくてもよい。むしろ、第３動作を完了するまでの時間は、第１動作が開始した時から、第３動作が完了する時までの時間であってよい。よって、Ｃ（ｉ）は、複数の動作が連続的に実行される場合に動作ｉの直前の動作を完了するための時間に基づき、記述されてよい。例えば、図２ａの第２転送動作２３０ｂの完了時間は、図２ａの第１転送動作２３０ａを完了するための時間に基づき記述されてよい。Ｃ（ｉ）はまた、リソースｊが動作ｉを完了する時間と、リソースｊが、動作ｉを実行するための入力を取得するための時間とに基づき、次の式により記述されてもよい：
【数２】
2020191074.tif 000004
ここで、右側の最初の項は、動作ｉの前の動作の完了時間を表し、２番目の項は、リソースｊによって動作ｉを実行するための計算時間を表し、３番目の項は、リソースｊが動作ｉを実行するための入力を取得するための時間を表す。
【００４７】
動作のスケジューリングに対する更なる制約は、入力及びパラメータのサイズを管理するための十分なメモリ容量をリソースが有していることを含んでよい。よって、次の式は、所与の動作のためにメモリ容量が十分でないリソースに動作が割り当てられないことを表す制約として使用されてよい：
【数３】
2020191074.tif 000005
【００４８】
議論されているように、スケジューリングモジュール１２０は、実行環境１３０が動作データ１１０の動作を実行する時間を減らすスケジュール１２２を生成するよう構成される。よって、スケジューリングモジュール１２０は、動作の実行の開始から最終の動作の完了までの時間の量を減らすよう構成される。上述されたように、Ｃ（ｉ）は、全ての動作の実行の開始からのある動作の完了時間として定義される。よって、スケジューリングモジュール１２０は、最後の動作の完了時間を最小限とし、すなわち、２Ｎ＋１が最後の動作であるとして、Ｃ（２Ｎ＋１）を最小限とし得る。Ｃ（２Ｎ＋１）を最小限とすることの目的関数は、次のように表される：
【数４】
2020191074.tif 000006
【００４９】
動作を実行するための時間を最小限とする動作のスケジューリングをモデル化するために、Ｃ（ｉ）を定義する上記の式は、次の式をもたらすように前述の式中の項を置換するために使用されてよい：
【数５】
2020191074.tif 000007
すなわち、２次バイナリ最適化問題は、動作は単一のリソースにしか割り当てられず、単一のリソースがその動作の全体を実行し、リソースはその動作のための入力を扱うためのメモリ容量を含む、という上記の制約を受ける。
【００５０】
いくつかの実施形態で、２次バイナリ最適化問題を解くために、２次バイナリ最適化問題は、２次制約なしバイナリ最適化に変換されてよい。２次バイナリ最適化問題を２次制約なしバイナリ最適化に変換するために、不等式制約は等式制約に変換されてよい。不等式制約を等式制約に変換するために、スラック変数が導入されてよく、制約が違反されるときには不等式制約にペナルティを科す。リソース１３２のリソース容量に関して不等式制約を変換するために導入され得るスラック変数の一例は、以下で与えられる：
【数６】
2020191074.tif 000008
スラック変数は、そのバイナリ構成を用いて分解されてよい。上述されたバイナリ最適化問題及び２つの制約とともに上記のスラック変数を導入することは、２次制約なしバイナリ最適化をもたらし得る。２次制約なしバイナリ最適化は、動作データ１１０内の動作を実行するための時間を減らすスケジュール１２２を生成するために、上述されたように解かれ得る。
【００５１】
いくつかの実施形態で、同じ入力を使用するいくつかの動作は、同じリソースによって実行されてよい。例えば、図２ａに表されるように、第１転送動作２３０ａ及び第１フィードバック動作２４０ａは両方とも、第１入力２１２及び第１パラメータ２２０ａを使用してよい。この理解に基づけば、２次最適化を解く間に導入される変数の数は、次に基づき減らされ得る：
【数７】
2020191074.tif 000009
【００５２】
単一の入力に関して動作をスケジューリングする例が上述された。概念は、複数の入力に関して動作をスケジューリングすることにも適用されてよい。複数の入力は夫々、単一の入力に類似している動作を含んでよい。複数の入力のスケジュールは、単一の入力に使用された動作のｎ個のコピーをスケジューリングすることを考えることであってよい。更には、問題の複雑さを低減するために、１つの動作がスケジュールされるべきであるときに１つのリソースが利用可能であるように、リソースの数ｍは入力の数ｎよりも大きくてよい。
【００５３】
ｎ個の入力の動作のスケジューリングをモデル化するために、入力のうちの１つを表す追加の変数ｒが導入されてよい。これら及び他の実施形態で、ｘ（ｉ，ｊ）のブール型インジケータ変数はｘｒ（ｉ，ｊ）と表現されてよい。変数ｘは、入力ｒの動作ｉがリソースｊに割り当てられる場合に１に設定されてよい。よって、次の制約は真である：
【数８】
2020191074.tif 000010
いくつかの実施形態で、この制約は、ホットコンディションと呼ばれ得る。
【００５４】
前の通り、入力ｒの動作ｉを完了する時間はＣｒ（ｉ）と表され、次のように表現されてよい：
【数９】
2020191074.tif 000011
ここで、右側の最初の項は、入力ｒの動作ｉの前の動作の完了時間を表し、２番目の項は、入力ｒの動作ｉを実行するための計算時間を表し、３番目の項は、リソースｊが入力ｒの動作ｉを実行するための入力を取得する時間を表す。
【００５５】
上記の式に対する制約に関して、リソースは同じ動作の複数のコピーを実行し得るので、入力の単一のコピー及びパラメータのリストが、複数のコピーを実行するために記憶されてもよい。上記の概念は、次のように記述され得る：
【数１０】
2020191074.tif 000012
ここで、ｙ（ｉ，ｊ）は、ｘｒ（ｉ，ｊの）ブール論理和（Boolean  OR）である。
【００５６】
単一の入力に関する議論と同様に、メモリ容量が不十分であるリソースには動作を割り当てないことに関する制約は、次のように定義されてよい：
【数１１】
2020191074.tif 000013
【００５７】
単一の入力に関して、目的は、最終の動作が実行される時間を最小限とすることである。複数の入力に関して、目的は、ｎ個の入力の１つごとに動作を終えるための時間を最小限とすることである。この目的は：
【数１２】
2020191074.tif 000014
と記述され得る。これは、上述されたようにｎがｍ以下であるときに、ミニマックス（minmax）のより高次のバイナリ最適化をもたらす。我々は、次の制約：
【数１３】
2020191074.tif 000015
を加えることによって、上記のミニマックス問題を単なる最小化問題へと軽減することができる。
【００５８】
上記のスラック変数のような追加の補助変数が、より高次のバイナリ最適化を２次制約付きバイナリ最適化へと軽減するために使用されてもよい。導入され得るスラック変数の数は、一緒にスケジューリングされ得る入力の数ｎに関係があり得る。２次制約付きバイナリ最適化は、動作データ１１０内の動作を実行するための時間を減らすスケジュール１２２を生成するように、上述されたように解かれ得る。
【００５９】
実行環境１３０は、スケジュール１２２及び入力データ１１４を取得してよい。実行環境１３０は、スケジュール１２２に従って入力データ１１４に基づき動作データ１１０の動作をリソース１３２により実行するよう構成されてよい。入力データ１１４は、動作データ１１０の動作が設計されるためのデータであってよい。実行環境１３０は、動作の実行に基づき出力１４０を生成してよい。
【００６０】
環境１００の例となる動作が、これより与えられる。この例において、動作データ１１０は、機械学習モデルを生成する機械学習アルゴリズムのタスクグラフを含んでよい。タスクグラフは、ＴｅｎｓｏｒＦｌｏｗ及びＯＮＮＸによって使用されるもののような既知のソフトウェア技術を用いて生成されてよい。入力データ１１４は、機械学習モデルが構築され得る入力を含んでよい。入力データ１１４は、入力の夫々に対するラベルを更に含んでもよい。例えば、入力は、画像であってよく、ラベルは、何が画像に含まれるかの記述であってよい。入力データ１１４は、機械学習アルゴリズムによって使用されるパラメータの初期値を更に含んでもよい。
【００６１】
スケジューリングモジュール１２０は、２次制約付きバイナリ最適化としてスケジュールをモデル化するために動作データ１１０及びリソースデータ１１２を使用してよい。スケジューリングモジュール１２０は、２次制約付きバイナリ最適化を解いてスケジュール１２２を生成し得る。実行環境１３０は、スケジュール１２２に従い、入力として動作データ１１０及び入力データ１１４とともにリソース１３２を使用して機械学習モデルを生成し得る。機械学習モデルは、入力データ１１４を使用した訓練に基づき、未知の入力を分類するよう構成されてよい。例えば、機械学習モデルは、動物の画像に関して訓練する場合に、未知の動物の画像を識別し得る。これら及び他の実施形態で、本開示で記載される方法及び／又はシステムを使用することは、より大きいサイズの画像が機械学習モデルのために使用されることを可能にし得る。目下の方法の出現以前、より大きいサイズの画像は処理を増大させ、それにより、機械学習モデルを訓練することにおいて使用することは実際的でなかった。しかし、本開示で論じられているようにスケジューリングし、画像を処理するために複数のリソースを使用する能力を持つことによって、より大きいサイズの画像が、機械学習モデルを訓練するために使用され得る。
【００６２】
環境１００は、機械学習アルゴリズムのスケジューリング及び処理以外の他の目的のために使用されてもよい。例えば、環境１００は、深層畳み込みニューラルネットワーク（convolutional  neural  networks，ＣＮＮ）、回帰型ニューラルネット（recurrent  neural  nets，ＲＲＮ）、ＣＮＮやＲＲＮの変形、全結合ネットワーク（fully  connected  networks）、タスクグラフにおいて繰り返しサブタスクグラフを含み得る他のディープアーキテクチャを処理するために使用されてよい。他の例として、環境１００は、コンピュータビジョンアプリケーションを処理するために使用されてもよい。コンピュータビジョンアプリケーションは、本開示で記載される方法でスケジューリングされ得る動作を含み得る。
【００６３】
本開示の適用範囲から逸脱することなしに、図１に対して、変更、追加、又は削除が行われてよい。例えば、環境１００は、本開示で図示及び記載されているものよりも多い又は少ない要素を含んでもよい。
【００６４】
図３は、本開示の少なくとも１つの実施形態に従って、動作をスケジューリングすることを支援するよう構成され得る、例となるコンピューティングシステム３０２のブロック図を表す。コンピューティングシステム３０２は、スケジューリングモジュール（例えば、図１のスケジューリングモジュール１２０）及び／又は実行環境（例えば、図１の実行環境１３０）に関連した１以上の動作を実装又は案内するよう構成されてよい。コンピューティングシステム３０２は、プロセッサ３５０、メモリ３５２、及びデータストレージ３５４を含んでよい。プロセッサ３５０、メモリ３５２、及びデータストレージ３５４は、通信上結合されてよい。
【００６５】
一般に、プロセッサ３５０は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な特別目的又は汎用のコンピュータ、コンピューティングエンティティ、又はプロセッシングデバイスを含んでよく、任意の適用可能なコンピュータ可読記憶媒体に記憶されている命令を実行するよう構成されてよい。例えば、プロセッサ３５０は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは、プログラム命令を解釈及び／若しくは実行するよう並びに／又はデータを処理するよう構成された任意の他のデジタル又はアナログ回路構成を含んでよい。図３には単一のプロセッサとして表されているが、プロセッサ３５０は、本開示で記載される任意数の動作を個別的に又は集合的に実行するか又はその実行を指示するよう構成された任意数のプロセッサを含んでよい。更に、１以上のプロセッサが、異なるサーバのような、１以上の異なる電子デバイスに存在してもよい。
【００６６】
いくつかの実施形態で、プロセッサ３５０は、メモリ３５２、データストレージ３５４、又はメモリ３５２及びデータストレージ３５４に記憶されているプログラム命令を解釈及び／若しくは実行するよう並びに／又は記憶されているデータを処理するよう構成されてよい。いくつかの実施形態で、プロセッサ３５０は、データストレージ３５４からプログラム命令をフェッチし、プログラム命令をメモリ３５２にロードしてよい。プログラム命令がメモリ３５２内にロードされた後、プロセッサ３５０はプログラム命令を実行してよい。
【００６７】
メモリ３５２及びデータストレージ３５４は、コンピュータ実行可能な命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読記憶媒体を含んでよい。かようなコンピュータ可読記憶媒体は、プロセッサ３５０のような汎用又は特別目的のコンピュータによってアクセスされ得る任意の利用可能な非一時媒体を含んでよい。一例として、制限なしに、かようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能なプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、コンパクトディスク・リードオンリーメモリ（ＣＤ−ＲＯＭ）若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）、あるいは、コンピュータ実行可能な命令又はデータ構造の形で特定のプログラムコードを搬送又は記憶するために使用され得且つ汎用又は特別目的のコンピュータによってアクセスされ得る任意の他の非一時記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体を含んでよい。これら及び他の実施形態で、本開示で説明される「非一時的」（non-transitory）との用語は、In  re  Nuijtenの連邦巡回判決（Federal  Circuit  decision）500  F.  3d  1346  (Fed.  Cir.  2007)）で特許可能な主題の範囲に入らないと認められたタイプの一時媒体のみを除外すると解釈されるべきである。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれ得る。
【００６８】
上記のものの組み合わせも、コンピュータ可読記憶媒体の範囲内に含まれ得る。コンピュータ実行可能命令は、例えば、プロセッサ３５０に特定の動作又は動作群を実行させるよう構成された命令及びデータを含んでよい。
【００６９】
本開示の適用範囲を逸脱することなしに、コンピューティングシステム３０２に対して変更、追加、又は削除が行われてよい。例えば、いくつかの実施形態で、コンピューティングシステム３０２は、明示的に図示又は記載されていないことがある任意数の他の構成要素を含んでもよい。
【００７０】
図４は、本開示で記載される少なくとも１つの実施形態に従って、動作のスケジューリングを使用する、例となる方法４００のフローチャートである。方法４００は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、方法４００の１以上の動作は、図１の環境１００の１以上の要素によって、又は図３のコンピューティングシステム３０２若しくは図３のコンピューティングシステム３０２の複数によって、実行されてよい。別個のブロックで表されているが、方法４００のブロックの１つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、又は削除されてもよい。
【００７１】
方法４００はブロック４０２から開始してよく、ブロック４０２では、タスクグラフが取得されてよい。タスクグラフは、特定の機能を完了するための動作及び動作間のデータのフローを表し得る。タスクグラフの動作の配置及びデータのフローは、特定の動作が他の動作の終了に基づき開始し得る場合に関する制限を表し得る。例えば、タスクグラフは、第１動作及び第２動作を表し、第２動作が使用し得るデータを第１動作が生成することに基づき第１動作と第２動作との間の関係をモデル化してよい。結果として、第２動作は、第１動作が完了するまでは開始し得ない。
【００７２】
ブロック４０４で、タスクグラフ内のサブタスクグラフが識別されてよい。いくつかの実施形態で、繰り返しサブタスクグラフが識別されてよい。これら及び他の実施形態で、繰り返しサブタスクグラフの数が決定されてよい。代替的に、又は追加的に、繰り返しサブタスクグラフの実行を可能にするよう実行される動作が決定されてよい。例えば、タスクグラフは、Ｎ個の入力に関して機械学習モデルを訓練する多入力訓練タスクグラフを含んでよい。サブタスクグラフは、Ｎ個の入力の中の１つの入力に関して機械学習モデルを訓練する単入力訓練タスクグラフを含んでよい。これら及び他の実施形態で、サブタスクグラフは、入力及び入力のためのラベルを含む２つの入力ノードを含んでよい。サブタスクグラフはまた、機械学習モデルのパラメータについてのＭ個のモデルリーフノードと、入力に基づく機械学習モデルのパラメータ重みについてのＭ個の出力リーフノードと、パラメータ重みを決定する動作についての２Ｍ＋１個のタスク非リーフノードとを含んでもよい。非リーフノードの夫々は、サブタスクグラフ内のタスクを表してよい。
【００７３】
これら及び他の実施形態で、タスクグラフは、各サブタスクグラフからのパラメータ重みを平均することを実行するためのノードが後に続くサブタスクグラフのＮ個のコピーを含んでよい。結果として、タスクグラフは、２Ｎ個の入力リーフノードと、Ｍ個のモデルリーフノードと、サブタスクグラフのＮ個のコピーの夫々からのパラメータ重みの平均であるＭ個の出力リーフノードと、Ｎ（２Ｍ＋１）個のタスク非リーフノードとを含んでよい。非リーフノードの夫々は、タスクグラフ内のタスクを表してよい。
【００７４】
ブロック４０６で、リソースデータが取得されてよい。リソースデータは、タスクグラフに含まれる動作を実行するために使用され得るリソースを示してよい。リソースデータは、タスクグラフ内の動作を実行するときのリソースの処理時間及びメモリ使用量、並びにデバイス間でタスクの出力をやりとりするための時間のような、付加的な情報を含んでもよい。
【００７５】
ブロック４０８で、カウンタｉが１に設定されてよい。これら及び他の実施形態で、カウンタｉは、他の整数に設定されてもよい。例えば、カウンタｉは、５、１０、２０、３０、又はその他の数に設定されてよい。いくつかの実施形態で、数は、タスクグラフのサイズに関する因子に基づき選択されてよい。
【００７６】
ブロック４１０で、繰り返しサブタスクグラフの数がｉに等しいことに基づき、リソースデータを用いて繰り返しサブタスクグラフを処理するサブスケジュールについて、最小処理時間が決定されてよい。いくつかの実施形態で、サブスケジュールは、パイプラインのような方法でｉ個の繰り返しサブタスクグラフの動作を実行するための、リソースデータからのリソースのスケジュールを含んでよい。最小処理時間は、ｉ個の繰り返しサブタスクグラフの動作の夫々の並列処理に基づいてよい。例えば、サブタスクグラフは、機械学習モデルを訓練する単入力訓練タスクグラフを表すと仮定する。結果として、最小処理時間は、ｉ個のサブタスクグラフについて決定され得る。ｉ個のサブタスクグラフは、２ｉ個の入力リーフノードと、Ｍ個のモデルリーフノードと、Ｍ個の出力リーフノードと、ｉ（２Ｍ＋１）個の非リーフノードとを含んでよい。よって、ｉ個のサブタスクグラフは、ｉ（２Ｍ＋１）個のタスクを含んでよい。
【００７７】
最小処理時間は、ｉ個のサブタスクグラフのタスクを並行して実行するための推定値であってよい。例えば、ｉ（２Ｍ＋１）個のタスクの夫々についての最小個別処理時間は、リソースデータ内のリソースの１つによって個別的に処理が実行される場合に、決定されてよい。タスクごとの最小個別処理時間は合計され、ｉ（２Ｍ＋１）個のタスクで除されてよい。最小個別処理時間は、ｉ個のサブタスクグラフについての最小処理時間の推定値であってよい点に留意されたい。
【００７８】
ブロック４１２で、繰り返しサブタスクグラフの数がｉに等しいことに基づき、リソースデータを用いて繰り返しサブタスクグラフを処理するサブスケジュールについて、処理時間が決定されてよい。処理時間は、図１に関して上述されたスケジューリング方法を用いて決定されるスケジュールに基づき、決定されてよい。
【００７９】
例えば、サブタスクグラフは、機械学習モデルを訓練する単入力訓練タスクグラフを表すと仮定する。結果として、処理時間は、ｉ個のサブタスクグラフについて決定され得る。ｉ個のサブタスクグラフは、２ｉ個の入力リーフノードと、Ｍ個のモデルリーフノードと、Ｍ個の出力リーフノードと、ｉ（２Ｍ＋１）個の非リーフノードとを含んでよい。よって、ｉ個のサブタスクグラフは、ｉ（２Ｍ＋１）個のタスクを含んでよい。決定された処理時間は、リソースデータ内のリソースがｉ個のサブタスクグラフを処理するための最小の又は削減された処理時間であってよい。
【００８０】
ブロック４１４で、最小処理時間と処理時間との間の差が閾値を満足するかどうかが決定されてよい。差が閾値を満足しない場合には、方法４００はブロック４１６に進んでよい。差が閾値を満足する場合には、方法４００はブロック４１８に進んでよい。例えば、処理時間と最小処理時間との間の差は、処理時間と最小処理時間との間の比を決定することを含んでよい。比が０．８から１．２の範囲内にあることに応答して、差は閾値を満足し得る。
【００８１】
ブロック４１６で、ｉのカウントが調整され、例えば、１だけ増やされてよい。いくつかの実施形態で、カウントは、とりわけ、２、３、５、１０、又は２０のような、１よりも大きい整数によって増やされてもよい。代替的に、又は追加的に、カウントは、ある整数によって減らされてもよい。カウントが増やされるのか、それとも減らされるのかは、ｉの現在の値及びｉのカウントへの１つ以上の前の変化の値に依存してよい。ブロック４１６の後には、ブロック４１０及び４１２が続いてよい。ブロック４１０、４１２、４１４、及び４１６は、最小処理時間と処理時間との間の差が閾値を満足するまで繰り返されてよい。
【００８２】
ブロック４１８で、サブスケジュールは、タスクグラフの動作を実行するスケジュールを決定するために複製されてよい。いくつかの実施形態で、サブスケジュールは、繰り返しサブタスクグラフの大部分についての動作をスケジューリングするようにサブスケジュールをスケジュールに順次に適用することによって複製されてよい。例えば、タスクグラフは、Ｎ個の入力に関して機械学習モデルを訓練する多入力訓練タスクグラフを含んでよいと仮定する。サブスケジュールは、リソースデータのリソースがタスクグラフのｉ個のサブタスクグラフを処理するためのスケジュールを表し得る。これら及び他の実施形態で、サブスケジュールは、Ｎ／ｉ回実行されてよく、夫々のサブスケジュールは、サブタスクグラフのＮ／ｉ個のグループのうちの異なる１つを処理してよく、このとき、サブタスクグラフの各グループはｉ個のサブタスクグラフを含む。いくつかの実施形態で、サブタスクグラフのグループのサブスケジュールは、サブタスクグラフのグループの処理がタイル状にされ得るように構成されてよく、それにより、サブタスクグラフの各グループの処理は、サブタスクグラフの直前のグループの処理の終了前に開始する。
【００８３】
ブロック４２０で、タスクグラフの動作は、リソースデータ内のリソースを用いて、ブロック４１８で決定されたスケジュールに従って実行されてよい。タスクグラフ及び図４に関して記載された動作に関する更なる詳細は、“Scheduling  Task  Graph  Operations”と題されて２０１８年１２月６日付けで出願された米国特許出願第１６／２１２３５４号で見つけられ得る。この米国特許出願は、その全文を参照により本願に援用される。
【００８４】
本開示の適用範囲から逸脱することなしに、方法４００に対して変更、追加、又は削除が行われてよい。例えば、方法４００の動作は別の順序で実施されてもよい。追加的に、又は代替的に、２つ以上の動作は同時に実行されてもよい。更には、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態の本質から外れることなしに、任意であっても、より少ない操作及び動作へとまとめられても、又は更なる操作及び動作に拡張されてもよい。例えば、方法４００は、サブスケジュール間のより良いタイリングを提供するようにリソースデータを調整することを更に含んでもよい。
【００８５】
図５は、本開示で記載される少なくとも１つの実施形態に従って、動作をスケジューリングする、他の例となる方法５００のフローチャートである。方法５００は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、方法５００の１以上の動作は、図１の環境１００の１以上の要素によって、又は図３のコンピューティングシステム３０２若しくは図３のコンピューティングシステム３０２の複数によって、実行されてよい。別個のブロックで表されているが、方法５００のブロックの１つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、又は削除されてもよい。
【００８６】
方法５００はブロック５０２から開始してよく、ブロック５０２で、機能を実装するように連続的に実行されるよう構成される複数の動作が、取得されてよい。これら及び他の実施形態で、各動作は、パラメータ及び入力に関して実行されてよい。
【００８７】
いくつかの実施形態で、複数の動作の中の第１動作のための入力は、複数の動作の中の第２動作の出力であってよい。これら及び他の実施形態で、第２動作は、複数の動作の連続実行において第１動作の直前であってよい。
【００８８】
ブロック５０４で、パラメータ及び入力に関して動作を実行するよう構成される複数のリソースと、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間との指示が、取得されてよい。
【００８９】
ブロック５０６で、複数のリソースの夫々が複数の動作の夫々を個別的に実行するための存続期間に基づき、複数の動作を実行する全体の存続期間を減らす、複数の動作を実行するためのリソースのスケジューリングが、バイナリ最適化としてモデル化されてよい。
【００９０】
バイナリ最適化としてリソースのスケジューリングをモデル化することは、複数の動作の中の第１動作の完了時間を定義するバイナリ最適化式を、第１動作の前に位置する複数の動作の中の動作を実行するための実行時間と、第１動作のための入力を取得するための通信遅延とを用いて生成することを含んでよい。
【００９１】
リソースのスケジューリングをモデル化することは、複数の動作の夫々がリソースのうちの１つによって実行されることをモデル化することと、複数の動作の夫々がリソースのうちの１つによって実行されることをモデル化することを、バイナリ最適化を解くときに制約として適用することとを含んでよい。
【００９２】
複数の動作は、複数のサブタスクの中のあるサブタスクに関連付けられてよい。これら及び他の実施形態で、複数のサブタスクの夫々は、異なった動作に関連付けられてよい。これら及び他の実施形態で、複数の動作を実行するためのリソースのスケジューリングをモデル化することは、複数のリソースによって複数のサブタスクの夫々について異なった動作を実行するようにリソースのスケジューリングをバイナリ最適化としてモデル化することを含んでよい。これら及び他の実施形態で、複数のリソースの数は、複数のサブタスクの数よりも多くてよい。
【００９３】
ブロック５０８で、バイナリ最適化は、複数のリソースのスケジュールを決定するように解かれてよい。ブロック５１０で、複数の動作は、複数のリソースによって、機能を実装するようにスケジュールに従って実行されてよい。
【００９４】
いくつかの実施形態で、複数の動作の実行によって実装される機能は、機械学習モデルを生成してよい。これら及び他の実施形態で、方法５００は、分類されていない入力に機械学習モデルを適用して、入力の分類に関してそれら分類されていない入力を分類することを更に含んでもよい。
【００９５】
本開示の適用範囲から逸脱することなしに、方法５００に対して変更、追加、又は削除が行われてよい。例えば、方法５００の動作は別の順序で実施されてもよい。追加的に、又は代替的に、２つ以上の動作は同時に実行されてもよい。更には、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態の本質から外れることなしに、任意であっても、より少ない操作及び動作へとまとめられても、又は更なる操作及び動作に拡張されてもよい。
【００９６】
例えば、方法５００は、複数のリソース間で情報を伝える通信遅延を取得することを更に含んでもよい。これら及び他の実施形態で、リソースのスケジューリングをモデル化することは、通信遅延にさらに基づいてもよい。
【００９７】
代替的に、又は追加的に、方法５００は、リソースの夫々に関連したメモリ容量と、パラメータのメモリ要件及び入力のメモリ要件とを取得することを更に含んでもよい。これら及び他の実施形態で、リソースのスケジューリングをモデル化することは、パラメータのメモリ要件及び入力のメモリ要件に基づき、複数の動作の夫々に関してリソースの夫々に関連したメモリ容量制約をモデル化することを含んでよい。これら及び他の実施形態で、モデル化されたメモリ容量制約は、バイナリ最適化を解くときに適用されてよい。
【００９８】
上述されたように、本開示で記載される実施形態は、以下でより詳細に論じられるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特別目的の又は汎用のコンピュータ（例えば、図３のプロセッサ３５０）の使用を含んでよい。更に、本開示で記載される実施形態は、コンピュータ実行可能な命令又はデータ構造を運ぶか又は記憶しているコンピュータ可読媒体（例えば、図３のメモリ３５２又はデータストレージ３５４）を用いて実装されてもよい。
【００９９】
本開示で使用されるように、「モジュール」又は「コンポーネント」との語は、モジュール若しくはコンポーネントの動作を実行するよう構成された特定のハードウェア実施、及び／又はコンピューティングシステムの汎用のハードウェア（例えば、コンピュータ可読媒体、プロセッシングデバイス、など）によって記憶及び／又は実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを指し得る。いくつかの実施形態で、本開示で記載される種々のコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムで（例えば、別個のスレッドとして）実行されるオブジェクト又はプロセスとして実施されてもよい。本開示で記載されるシステム及び方法の一部は、（汎用のハードウェアによって記憶及び／又は実行される）ソフトウェアにおいて実施されるものとして概して記載されているが、特定のハードウェア実施又はソフトウェアと特定のハードウェア実施との組み合わせも可能であり企図される。本明細書中、「コンピューティングエンティティ」は、本開示で先に定義されている任意のコンピューティングシステム、又はコンピューティングシステムで実行される任意のモジュール若しくはモジュールの組み合わせであってよい。
【０１００】
本開示で、特に添付の特許請求の範囲（例えば、添付の特許請求の本文）で使用される語は、一般的に、“非限定的な（open）”用語として意図されている（例えば、語「含んでいる（including）」は、“〜を含んでいるが、〜に制限されない”との意に解釈されるべきであり、語「備えている（having）」は、「少なくとも〜を備えている」との意に解釈されるべきであり、語「含む（includes）」は、“〜を含むが、〜に制限されない”との意に解釈されるべきである、等。）。
【０１０１】
更に、導入されたクレーム記載（introduced  claim  recitation）において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しない。例えば、理解を促すために、後続の添付された特許請求の範囲では、「少なくとも１つの（at  least  one）」及び「１以上の（one  or  more）」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって、「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「１つ以上の」又は「少なくとも１つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を１しか含まない例に限定されるということが示唆されると解釈されるべきではない（例えば、「a」及び／又は「an」は、「少なくとも１つの」又は「１つ以上の」を意味すると解釈されるべきである。）。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。
【０１０２】
更には、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、通常、少なくとも記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう（例えば、他に修飾語のない、単なる「２つの記載事項」という記載がある場合、この記載は、少なくとも２つの記載事項、又は２つ以上の記載事項を意味する。）。更に、「Ａ、Ｂ及びＣ等のうち少なくとも１つ」又は「Ａ、Ｂ及びＣ等のうちの１つ以上」に類する表記が使用される場合、一般的に、そのような構造は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、及び／又はＡとＢとＣの全て、等を含むよう意図される。
【０１０３】
更に、２つ以上の選択可能な用語を表す如何なる離接語及び／又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの１つ、それらの用語のうちのいずれか、あるいは、それらの用語の両方を含む可能性を意図すると理解されるべきである。例えば、「Ａ又はＢ」という句は、「Ａ又はＢ」、あるいは、「Ａ及びＢ」の可能性を含むことが理解されるべきである。
【０１０４】
ここで挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本開示の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
【０１０５】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記複数のリソースのスケジュールを決定することと、
前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する方法。
（付記２）
前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
付記１に記載の方法。
（付記３）
前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
付記２に記載の方法。
（付記４）
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第１動作の完了時間を定義するバイナリ最適化式を、前記第１動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第１動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
付記３に記載の方法。
（付記５）
前記複数の動作の中の第１動作のための入力は、前記複数の動作の中の第２動作の出力であり、該第２動作は、前記複数の動作の連続実行において前記第１動作の直前である、
付記１に記載の方法。
（付記６）
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
付記１に記載の方法。
（付記７）
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
付記１に記載の方法。
（付記８）
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
付記７に記載の方法。
（付記９）
前記パラメータの夫々は、前記複数の動作のうちの２つによって使用される、
付記１に記載の方法。
（付記１０）
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
当該方法は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
付記１に記載の方法。
（付記１１）
システムによって実行される場合に、該システムに動作を実行させる命令を記憶するよう構成された１以上のコンピュータ可読媒体であって、
前記動作は、
機能を実装するように連続的に実行されるよう構成され、各動作がパラメータ及び入力に関して実行される複数の動作を取得することと、
パラメータ及び入力に関して前記複数の動作を実行するよう構成される前記システム内の複数のリソースと、該複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための存続期間との指示を取得することと、
前記複数の動作を実行する全体の存続期間を減らす、前記複数の動作を実行するための前記複数のリソースのスケジューリングを、前記複数のリソースの夫々が前記複数の動作の夫々を個別的に実行するための前記存続期間に基づき、バイナリ最適化としてモデル化することと、
前記バイナリ最適化を解いて前記システムの前記複数のリソースのスケジュールを決定することと、
前記システムの前記複数のリソースによって、前記機能を実装するように前記スケジュールに従って前記複数の動作を実行することと
を有する、コンピュータ可読媒体。
（付記１２）
前記動作は、前記複数のリソース間で情報を伝える通信遅延を取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記通信遅延に更に基づく、
付記１１に記載のコンピュータ可読媒体。
（付記１３）
前記動作は、前記複数のリソースの夫々に関連したメモリ容量と、前記パラメータのメモリ要件及び前記入力のメモリ要件とを取得することを更に有し、
前記複数のリソースの前記スケジューリングをモデル化することは、前記パラメータのメモリ要件及び前記入力のメモリ要件に基づき、前記複数の動作の夫々に関して前記複数のリソースの夫々に関連したメモリ容量制約をモデル化することを含み、該モデル化されたメモリ容量制約は、前記バイナリ最適化を解くときに適用される、
付記１２に記載のコンピュータ可読媒体。
（付記１４）
前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することは、前記複数の動作の中の第１動作の完了時間を定義するバイナリ最適化式を、前記第１動作の前に位置する前記複数の動作の中の動作を実行するための実行時間と、前記第１動作のための入力を取得するための前記通信遅延とを用いて生成することを含む、
付記１３に記載のコンピュータ可読媒体。
（付記１５）
前記複数の動作の中の第１動作のための入力は、前記複数の動作の中の第２動作の出力であり、該第２動作は、前記複数の動作の連続実行において前記第１動作の直前である、
付記１１に記載のコンピュータ可読媒体。
（付記１６）
前記複数のリソースの前記スケジューリングをモデル化することは、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することと、
前記複数の動作の夫々が前記複数のリソースのうちの１つによって実行されることをモデル化することを、前記バイナリ最適化を解くときに制約として適用することと
を含む、
付記１１に記載のコンピュータ可読媒体。
（付記１７）
前記複数の動作は、複数のサブタスクの中のあるサブタスクに関連し、該複数のサブタスクの夫々は、異なった複数の動作に関連し、
前記複数の動作を実行するための前記複数のリソースの前記スケジューリングをモデル化することは、前記複数のリソースによって前記複数のサブタスクの夫々について前記異なった複数の動作を実行するように前記複数のリソースの前記スケジューリングを前記バイナリ最適化としてモデル化することを含む、
付記１１に記載のコンピュータ可読媒体。
（付記１８）
前記複数のリソースの数は、前記複数のサブタスクの数よりも多い、
付記１７に記載のコンピュータ可読媒体。
（付記１９）
前記パラメータの夫々は、前記複数の動作のうちの２つによって使用される、
付記１１に記載のコンピュータ可読媒体。
（付記２０）
前記複数の動作の実行によって実装される前記機能は、機械学習モデルを生成し、
前記動作は、分類されていない入力に前記機械学習モデルを適用して、前記入力の分類に関して前記分類されていない入力を分類することを更に有する、
付記１１に記載のコンピュータ可読媒体。
【符号の説明】
【０１０６】
１００          環境
１１０          動作データ
１１２          リソースデータ
１１４          入力データ
１２０          スケジューリングモジュール
１２２          スケジュール
１３０          実行環境
１３２，２１０  リソース
１４０          出力
３０２          コンピューティングシステム
３５０          プロセッサ
３５２          メモリ
３５４          データストレージ
【図１】
2020191074.tif 000016
【図２ａ】
2020191074.tif 000017
【図２ｂ】
2020191074.tif 000018
【図３】
2020191074.tif 000019
【図４】
2020191074.tif 000020
【図５】
2020191074.tif 000021