(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-04
(54)【発明の名称】知的計算向けの分散型トレーニングタスクのスケジューリング方法、システム及び装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20240927BHJP
G06N 3/098 20230101ALI20240927BHJP
【FI】
G06F9/50 150D
G06N3/098
G06F9/50 150C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023571766
(86)(22)【出願日】2023-07-04
(85)【翻訳文提出日】2023-11-17
(86)【国際出願番号】 CN2023105626
(87)【国際公開番号】W WO2024060789
(87)【国際公開日】2024-03-28
(31)【優先権主張番号】202211148202.1
(32)【優先日】2022-09-21
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】521162399
【氏名又は名称】之江実験室
(74)【代理人】
【識別番号】100128347
【氏名又は名称】西内 盛二
(72)【発明者】
【氏名】朱 世▲強▼
(72)【発明者】
【氏名】李 勇
(72)【発明者】
【氏名】程 ▲穏▼
(72)【発明者】
【氏名】▲陳▼ 光
(72)【発明者】
【氏名】曾 令▲倣▼
(57)【要約】
【課題】本発明は知的計算向けの分散型トレーニングタスクのスケジューリング方法、システム及び装置を提供する。
【解決手段】
システムはモデル性能予測及び分解モジュールと、グローバルGPUリソーススケジューラと、各計算ノードにいずれも配置されるローカルGPUリソーススケジューラとを備え、グローバルGPUリソーススケジューラはモデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じて、サブタスクのスケジューリングを制御する。本発明は計算クラスタのGPU及びネットワークなどのリソースの利用率を向上させて、サブタスクトレーニングの待ち時間を短縮することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
知的計算向けの分散型トレーニングタスクのスケジューリングシステムであって、
計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記システムは、モデル性能予測及び分解モジュール、グローバルGPUリソーススケジューラ、及び各計算ノードにいずれも配置されるローカルGPUリソーススケジューラを含み、
前記モデル性能予測及び分解モジュールは、ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定することに用いられ、前記分散型トレーニング方式はデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列はデータ並列及びパイプライン並列を含み、前記リソース消費情報は計算消費及びメモリ消費を含み、
前記グローバルGPUリソーススケジューラは、前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御することに用いられ、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれ、
前記ローカルGPUリソーススケジューラは、前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることに用いられ、
前記計算リソース実行状況はサブタスクの待ち時間及びGPU利用率を含み、
前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、前記バックアップノードが、複数の前記計算ノードのうちの前記待ち時間がプリセット時間閾値以上のサブタスクに対応する現在計算ノード以外の計算ノードであり、且つ前記バックアップノードのGPU利用率がプリセット利用率閾値以下であること、及び
前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加することに用いられる
ことを特徴とする知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項2】
前記グローバルGPUリソーススケジューラは、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加するとき、具体的に、前記バックアップノードのローカルGPUリソーススケジューラに第1スケジューリング情報を送信することに用いられ、前記第1スケジューリング情報には前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータが含まれ、
前記バックアップノードのローカルGPUリソーススケジューラは、前記第1スケジューリング情報を受信した後、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加する
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項3】
前記サブタスクに対応する分散型トレーニング方式がデータ並列である場合、前記サブタスクのトレーニング過程は勾配計算段階及び勾配同期段階を含み、前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項4】
前記グローバルGPUリソーススケジューラは、全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御するとき、具体的に、
パラメータサーバが全てのデータ並列のサブタスクのグローバル勾配情報を計算し始めることを受信した後、第2スケジューリング情報をデータ並列のサブタスクに対応する計算ノードに送信することにより、前記第2スケジューリング情報によって前記計算ノードが対応するデータ並列のサブタスクを優先的に実行するように提示し、且つ前記計算ノードのGPUメインメモリから前記対応するデータ並列のサブタスクに対応する最新のモデルパラメータ及び中間変数を前記計算ノードのGPUグラフィックメモリにコピーすること、及び
前記対応するデータ並列のサブタスクに対応する最新のモデルパラメータ及び中間変数については、前記対応するデータ並列のサブタスクがサブタスクに依存する他の計算結果を待つとき、予想された待ち時間が前記計算ノードのCPU-GPUメモリのコピー時間を超える場合、前記計算ノードが前記対応するデータ並列のサブタスクに対応するモデルパラメータ及び中間変数を前記計算ノードのGPUグラフィックメモリから前記計算ノードのCPUメインメモリに一時的に移動することに用いられる
ことを特徴とする請求項3に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項5】
前記グローバルGPUリソーススケジューラは、各計算ノードのGPUの計算リソース実行状況をモニタリングするとき、具体的に、
各計算ノードのGPUの計算リソース実行状況を周期的に取得することに用いられる
ことを特徴とする請求項1~4のいずれか1項に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項6】
前記グローバルGPUリソーススケジューラは具体的に、各計算ノードが前記グローバルGPUリソーススケジューラにフィードバックした、該計算ノードのGPUの計算リソース実行状況を周期的に受信することに用いられる
ことを特徴とする請求項5に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項7】
前記グローバルGPUリソーススケジューラは更に、
前記トレーニング対象モデルのトレーニングが完了した後、前記トレーニング対象モデルの各サブタスクの履歴割り当て情報に基づいて各サブタスクの位置する計算ノードを決定すること、
各サブタスクの位置する計算ノードが該計算ノードにおいて対応するサブタスクをトレーニングする際に用いるローカルリソースを回収するように制御すること、及び
全ての計算ノードによるリソース回収が終了したことを特定した後、グローバルGPUリソーススケジューラにおいて前記トレーニング対象モデルをトレーニングする際に用いるリソースを解放することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項8】
各計算ノードにいずれも配置される前記ローカルGPUリソーススケジューラは、前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングするとき、具体的に、
前記分散型トレーニング方式に基づいて、ローカルに割り当てられるサブタスクのトレーニングタイプを決定し、前記トレーニングタイプがデータ並列タスク及びパイプライン並列タスクを含むこと、
前記したローカルに割り当てられるサブタスクのトレーニングタイプに基づいて、前記したローカルに割り当てられるサブタスクのローカルスケジューリングポリシーを決定すること、及び
前記ローカルスケジューリングポリシーに基づいて、前記したローカルに割り当てられるサブタスクをローカルにスケジューリングすることに用いられ、
前記トレーニングタイプがデータ並列タスクである場合、前記サブタスクのローカルスケジューリングポリシーは第1スケジューリングポリシーであり、
前記トレーニングタイプがパイプライン並列タスクである場合、前記サブタスクのローカルスケジューリングポリシーは第2スケジューリングポリシーである
ことを特徴とする請求項5に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項9】
前記トレーニングタイプがデータ並列タスクである場合、前記サブタスクのトレーニング過程は勾配計算段階及び勾配同期段階を含み、
前記第1スケジューリングポリシーは、
現在サブタスクの前記勾配計算段階における第1計算需要及び現在計算ノードにおける他のサブタスクの第2計算需要を取得することと、
前記第1計算需要及び前記第2計算需要に応じて、計算効率に基づいて前記現在計算ノードの全てのサブタスクのトレーニング順序を決定することと、を含む
ことを特徴とする請求項8に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項10】
前記第1スケジューリングポリシーは、
前記現在計算ノードのローカル計算リソースが現在サブタスクの計算需要を超える場合、前記グローバルGPUリソーススケジューラに該計算ノードのGPUの計算リソース実行状況をフィードバックすることにより、前記グローバルGPUリソーススケジューラには計算リソースが前記現在サブタスクの計算需要を超えない他の計算ノードがあるかどうかを照会することを更に含み、
ここで、計算ノードのローカル計算リソースが前記現在サブタスクの計算需要を超える場合、前記現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間を超え、計算ノードのローカル計算リソースが前記現在サブタスクの計算需要よりも少ない場合、前記現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間よりも短い
ことを特徴とする請求項9に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項11】
前記第1スケジューリングポリシーは、
前記グローバルGPUリソーススケジューラは前記他の計算ノードがないことをフィードバックした場合、前記現在計算ノードが高優先度キュー及び低優先度キューを構築し、且つ前記現在サブタスクの勾配計算段階タスクを前記高優先度キューに入れて、前記現在サブタスクの勾配同期段階タスクを低優先度キューに入れることと、
前記現在計算ノードのGPUが前記勾配計算段階タスクを実行し、前記現在計算ノードのCPUが前記勾配同期段階タスクを実行することと、を更に含む
ことを特徴とする請求項10に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項12】
前記第1スケジューリングポリシーは、
前記勾配計算段階タスクの実行が完了した場合、前記勾配計算段階タスクに対応するモデルパラメータ及び中間変数を前記現在計算ノードのCPUメインメモリにコピーし、前記勾配計算段階タスク及び前記勾配同期段階タスクがいずれも完了した場合、対応するサブタスクのモデルパラメータ及び中間変数を前記現在計算ノードのGPUグラフィックメモリにコピーすること、
及び/又は、
前記現在計算ノードは前記グローバルGPUリソーススケジューラが送信した第1スケジューリング情報を受信した後、前記低優先度キューのサブタスクにプリフェッチマークを付け、各計算ノードのGPUが前記プリフェッチマークを付けたサブタスクを優先的に実行することを更に含む
ことを特徴とする請求項11に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項13】
前記トレーニングタイプがパイプライン並列タスクである場合、現在サブタスクは複数のタスク段階を含み、ここで、前記現在サブタスクの最後の段階の計算タスクは完全な計算タスクであり、前記現在サブタスクの他の段階の計算タスクは順方向計算タスク及び逆方向計算タスクを含み、
前記第2スケジューリングポリシーは、
現在計算ノードはローカルGPUリソース実行状況に応じて、前記計算ノードのGPUリソースが前記現在サブタスクの計算需要を満足できるかどうかを判断し、NOの場合、前記グローバルGPUリソーススケジューラには前記現在サブタスクの計算需要を満足できる他の計算ノードがあるかどうかを照会することと、
前記グローバルGPUリソーススケジューラは前記他の計算ノードがないことをフィードバックした場合、前記現在計算ノードが前記現在サブタスクを高優先度キューに入れることと、を含む
ことを特徴とする請求項8に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項14】
前記第2スケジューリングポリシーは、
前記現在サブタスクの順方向計算タスク段階及び逆方向計算タスク段階のアイドル時間に基づいて、他のサブタスクの計算タスクを挿入すること、
及び/又は、
前記現在サブタスクの順方向計算タスクが完了した後、前記現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数を前記現在計算ノードのGPUから前記現在計算ノードのCPUメインメモリにコピーし、且つ予想アイドル時間に基づいて前記現在サブタスクの順方向計算タスクに関連する逆方向計算タスクに事前実行時間をマークするが、前記事前実行時間が終了した後、前記関連する逆方向計算タスクがまだ実行され始めていない場合、対応する前記現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数を前記CPUメインメモリから前記現在計算ノードのGPUに再びコピーすることを更に含む
ことを特徴とする請求項13に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項15】
前記モデル性能予測及び分解モジュールは、ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定することに用いられるとき、具体的に、
前記トレーニング対象モデルを事前トレーニングして、前記トレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを決定すること、
各層のパラメータに必要な計算時間及びメモリオーバーヘッドに基づいて、異なる分散型トレーニング方式を用いる際にそれぞれ必要なGPUリソース及びタスク完了時間を決定すること、及び
前記目標完了時間及び前記目標投入リソースに基づいて、タスク完了時間が最も短い分散型トレーニング方式を前記トレーニング対象モデルに対応する分散型トレーニング方式として選択することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項16】
前記モデル性能予測及び分解モジュールは、前記トレーニング対象モデルを事前トレーニングして、前記トレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを決定するとき、具体的に、
前記トレーニング対象モデルにおける各層のパラメータをそれぞれ複数回トレーニング反復して、各層のパラメータが各回トレーニング反復を行う計算時間及びメモリオーバーヘッドを決定すること、
各層のパラメータの複数回反復トレーニングによる計算時間の平均値に基づいて、該層のパラメータに必要な計算時間を決定すること、及び
各層のパラメータの複数回反復トレーニングによるメモリオーバーヘッドの平均値に基づいて、該層のパラメータに必要なメモリオーバーヘッドを決定することに用いられる
ことを特徴とする請求項15に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項17】
知的計算向けの分散型トレーニングタスクのスケジューリング方法であって、
計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記スケジューリング方法は、
モデル性能予測及び分解モジュールはユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定し、前記分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列がデータ並列及びパイプライン並列を含み、前記リソース消費情報が計算消費及びメモリ消費を含むことと、
グローバルGPUリソーススケジューラは前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御し、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれることと、
各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることと、を含み、
前記計算リソース実行状況はサブタスクの待ち時間及びGPU利用率を含み、
前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、前記バックアップノードは複数の前記計算ノードのうちの前記待ち時間がプリセット時間閾値以上のサブタスクに対応する現在計算ノード以外の計算ノードであり、且つ前記バックアップノードのGPU利用率がプリセット利用率閾値以下であること、及び
前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加することに用いられる
ことを特徴とする知的計算向けの分散型トレーニングタスクのスケジューリング方法。
【請求項18】
知的計算向けの分散型トレーニングタスクのスケジューリング装置であって、
記憶装置及び1つ又は複数のプロセッサを備え、前記記憶装置に実行可能なコードが記憶され、前記1つ又は複数のプロセッサが前記実行可能なコードを実行するとき、請求項17に記載の知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行することに用いられる
ことを特徴とする知的計算向けの分散型トレーニングタスクのスケジューリング装置。
【請求項19】
コンピュータ読み取り可能な記憶媒体であって、
プログラムが記憶され、該プログラムがプロセッサにより実行されるとき、請求項17に記載の知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行する
ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は知的計算の分野に関し、特に知的計算向けの分散型トレーニングタスクのスケジューリング方法、システム及び装置に関する。
【背景技術】
【0002】
深層学習の出現は自然言語処理、音声/ビデオ処理、メディアコンバージェンスなどの分野に大きなアップデートをもたらすが、深層学習モデルが大きくなるにつれて、ひいてはパラメータ量が数百億を超える大きなモデルは出現することになり、このような大規模なモデルは常に分散型機械学習システムを構築することによりモデルトレーニングを完了する。同時に、単枚のGPUの計算能力が限られるため、モデルトレーニング時に複数台の機械及び複数枚のGPUカードに分散型トレーニング方法を構築することによりモデルトレーニングを加速することは、既に非常に普及している方法となっている。
【0003】
分散型トレーニングにおいて、1つの計算タスクは複数のサブタスクに分けられ、且つ異なるGPUに割り当てて実行されることとなり、且つ異なる分散型トレーニング方法の通信効率及び計算効率が異なり、複数のモデルが計算クラスタにおいて同時にトレーニングされるとき、簡単なスケジューリング方法は知的計算クラスタの最適な性能を発揮できないことが明らかである。分散型トレーニングモデルが知的計算クラスタにおいて同時にトレーニングされるとき、ローカルリソーススケジューラのみに依存すれば、トレーニングタスク同士にウェイト、GPUアイドル、通信輻輳などの問題が生じる恐れがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は知的計算向けの分散型トレーニングタスクのスケジューリング方法、システム及び装置を提供することにあり、従来技術におけるシングルカード・シングルタスクのスケジューリングにより分散型トレーニング方法の協調スケジューリング特徴を十分に利用できず、且つ分散型トレーニングの知的計算クラスタにおける性能上の潜在力を十分にマイニングできないという問題を解決したのである。
【課題を解決するための手段】
【0005】
本発明が用いる技術案は以下のとおりである。
【0006】
本発明の実施例は知的計算向けの分散型トレーニングタスクのスケジューリングシステムを提供し、計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記スケジューリングシステムは、
ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定することに用いられ、前記分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列がデータ並列及びパイプライン並列を含み、前記リソース消費情報が計算消費及びメモリ消費を含むモデル性能予測及び分解モジュールと、
前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御することに用いられ、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれるグローバルGPUリソーススケジューラと、
前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングするための各計算ノードにいずれも配置されるローカルGPUリソーススケジューラと、を備える。
【0007】
本発明の実施例は知的計算向けの分散型トレーニングタスクのスケジューリング方法を更に提供し、計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記スケジューリング方法は、
モデル性能予測及び分解モジュールはユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定し、前記分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列がデータ並列及びパイプライン並列を含み、前記リソース消費情報が計算消費及びメモリ消費を含むことと、
グローバルGPUリソーススケジューラは前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御し、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれることと、
各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることと、を含む。
【0008】
本発明の実施例は知的計算向けの分散型トレーニングタスクのスケジューリング装置を更に提供し、記憶装置及び1つ又は複数のプロセッサを備え、前記記憶装置に実行可能なコードが記憶され、前記1つ又は複数のプロセッサが前記実行可能なコードを実行するとき、上記いずれか1項に記載の知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行することに用いられる。
【0009】
本発明の実施例はコンピュータ読み取り可能な記憶媒体を更に提供し、プログラムが記憶され、該プログラムがプロセッサにより実行されるとき、上記いずれか1項に記載の知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行する。
【発明の効果】
【0010】
本発明の有益な効果は、グローバルGPUリソーススケジューラを設置することにより、サブタスクの割り当て、各サブタスク間の通信トポロジー、各計算ノードのGPUの計算リソース実行状況のモニタリング及びサブタスクのスケジューリングを行い、計算クラスタのGPU及びネットワークなどのリソースの利用率を向上させ、サブタスクトレーニングの待ち時間を短縮することである。
【図面の簡単な説明】
【0011】
【
図1】
図1は本発明の一実施例に係る計算クラスタの構造模式図である。
【
図2】
図2は本発明の他の実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリングシステムの構造模式図である。
【
図3】
図3は本発明の一実施例に係るモデル性能予測及び分解モジュールがユーザーの入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、トレーニング対象モデルに対応する分散型トレーニング方式を決定する実行方法のフローチャートである。
【
図4】
図4は本発明の一実施例に係るグローバルGPUリソーススケジューラが全ての計算ノードのGPUの計算リソース実行状況に応じて、サブタスクのスケジューリングを制御する実行方法のフローチャートである。
【
図5】
図5は本発明の一実施例に係るグローバルGPUリソーススケジューラの機能及びグローバルGPUリソーススケジューラとローカルリソーススケジューラとの相互作用を示す模式図である。
【
図6】
図6は本発明の一実施例に係る各計算ノードにいずれも配置されるローカルGPUリソーススケジューラが分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングする実行方法のフローチャートである。
【
図7】
図7は本発明の一実施例に係る第1スケジューリングポリシーのフローチャートである。
【
図8】
図8は本発明の一実施例に係る第2スケジューリングポリシーのフローチャートである。
【
図9】
図9は本発明の一実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリング方法のフローチャートである。
【
図10】
図10は本発明の一実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリング装置のブロック図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施例の図面を参照しながら、本発明の実施例の技術案を明確且つ完全に説明し、無論、説明される実施例は本発明の実施例の一部であり、実施例の全部ではない。本発明の実施例に基づいて、当業者が進歩性のある労働を必要とせずに取得する他の実施例は、いずれも本発明の保護範囲に属する。
【0013】
モデルパラメータトレーニング方法はデータ並列及びパイプライン並列を含んでもよく、データ並列はモデルを複数のGPUにコピーし、集団通信又はパラメータサーバにより勾配相互作用及びパラメータ更新を行い、トレーニング過程が勾配計算及び勾配同期の2つの段階に分けられてもよく、勾配計算の計算効果がより高く、GPU利用率がより高く、基本的に通信量がないが、勾配同期段階において計算オーバーヘッドがより低く、通信オーバーヘッドが非常に高い。パイプライン並列はモデルを層ごとに複数の段階に分割し、各段階をGPUに配置し、複数の段階において実行順序で順方向計算を実行し、且つ最後の段階において損失関数を計算し、更に最後の段階から1番目の段階まで順に逆方向計算を行い、過程全体において異なる段階の順方向計算と逆方向計算との間のアイドル待ち時間が異なる。
【0014】
現在の分散型トレーニングにおいて、GPU計算リソースのスケジューリングは常にシングルカードをスケジューリング単位とし、分散型トレーニング方法の協調スケジューリング特徴を十分に利用できず、分散型トレーニングの知的計算クラスタにおける性能上の潜在力を十分にマイニングできない。
【0015】
以上に対して、本発明はグローバルGPUリソーススケジューラ20を設置することにより、サブタスクの割り当て、各サブタスク間の通信トポロジー、各計算ノードのGPUの計算リソース実行状況のモニタリング及びサブタスクのスケジューリングを行い、計算クラスタのGPU及びネットワークなどのリソースの利用率を向上させ、サブタスクトレーニングの待ち時間を短縮する。
【0016】
なお、矛盾しない限り、下記実施例及び実施形態の特徴は互いに組み合わせられることができる。
【0017】
図1を参照し、本発明の実施例における計算クラスタは複数の計算ノードを含んでもよく、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含む。
図1に示すように、計算クラスタは計算ノード1、計算ノード2、…、計算ノードNを含んでもよく、Nが正の整数であり、且つNが3以上である。
【0018】
なお、本発明の実施例における知的計算向けの分散型トレーニングタスクのスケジューリング方法、システム及び装置は
図1に示される計算クラスタの分散型タスクスケジューリングに適用される。
【0019】
具体的に、
図2を参照し、本発明の実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリングシステムはモデル性能予測及び分解モジュール10と、グローバルGPUリソーススケジューラ20と、ローカルGPUリソーススケジューラ30とを備えてもよく、本発明の実施例では、各計算ノードにいずれもローカルGPUリソーススケジューリングが配置され、
図2に示すように、計算クラスタは計算ノード1、計算ノード2、…、計算ノードNを含んでもよく、Nが正の整数であり、且つNが3以上であり、計算ノード1、計算ノード2、…、計算ノードNにそれぞれローカルGPUリソーススケジューラ31、ローカルGPUリソーススケジューラ32、…、ローカルGPUリソーススケジューラ3Nが配置される。
【0020】
モデル性能予測及び分解モジュール10は、ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、トレーニング対象モデルに対応する分散型トレーニング方式を決定し、且つトレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定することに用いられ、分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、ハイブリッド並列がデータ並列及びパイプライン並列を含み、リソース消費情報が計算消費及びメモリ消費を含む。
【0021】
グローバルGPUリソーススケジューラ20は、モデル性能予測及び分解モジュール10が送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御することに用いられ、サブタスク要求にはトレーニング対象モデルに対応する分散型トレーニング方式、複数のサブタスク及び各サブタスクのリソース消費情報が含まれる。
【0022】
各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは、分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることに用いられる。
【0023】
本発明の実施例では、トレーニング対象モデルはニューラルネットワークモデルであってもよく、他のタイプのモデル例えばトレーニング対象の数学モデルであってもよい。
【0024】
また、トレーニング対象モデルは1つのモデルを含んでもよく、複数のモデルを含んでもよい。
【0025】
目標完了時間の長さは予測されたトレーニング対象モデルのトレーニングを完了するために必要な時間によって決定されてもよく、例えば、目標完了時間の長さは予測されたトレーニング対象モデルのトレーニングを完了するために必要な時間に等しくてもよく、又は目標完了時間の長さが予測されたトレーニング対象モデルのトレーニングを完了するために必要な時間よりも少し長い。予測されたトレーニング対象モデルのトレーニングを完了するために必要な時間は経験によって予測されてもよく、例えば履歴トレーニングデータによって予測される。
【0026】
目標投入リソースは予測されたトレーニング対象モデルのトレーニングを完了するために必要なリソースの大きさによって決定されてもよく、例えば、目標投入リソースの大きさは予測されたトレーニング対象モデルのトレーニングを完了するために必要なリソースの大きさに等しくてもよく、又は目標投入リソースの大きさは予測されたトレーニング対象モデルのトレーニングを完了するために必要なリソースの大きさよりも少し大きい。予測されたトレーニング対象モデルのトレーニングを完了するために必要なリソースの大きさは経験によって予測されてもよく、例えば履歴トレーニングデータによって予測される。
【0027】
実行可能な実行方式において、
図3を参照し、モデル性能予測及び分解モジュール10はユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、トレーニング対象モデルに対応する分散型トレーニング方式を決定するとき、下記ステップS11~S13を用いて実行してもよい。
【0028】
ステップS11では、トレーニング対象モデルを事前トレーニングして、トレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを決定する。
【0029】
モデルトレーニングの時間差がより少ないため、モデル性能予測及び分解モジュール10は1つの機器において事前トレーニングすることでトレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを取得する。なお、該ステップにおける事前トレーニングはトレーニングを完了することではなく、トレーニング対象モデルを複数回トレーニング反復してから平均値を取って各層のパラメータの計算時間及びメモリオーバーヘッドを予測することである。
【0030】
具体的な実行において、トレーニング対象モデルを事前トレーニングして、トレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを決定する過程は、トレーニング対象モデルにおける各層のパラメータをそれぞれ複数回トレーニング反復して、各層のパラメータの各回トレーニング反復による計算時間及びメモリオーバーヘッドを決定することと、各層のパラメータの複数回反復トレーニングによる計算時間の平均値に基づいて、該層のパラメータに必要な計算時間を決定することと、各層のパラメータの複数回反復トレーニングによるメモリオーバーヘッドの平均値に基づいて、該層のパラメータに必要なメモリオーバーヘッドを決定することと、を含んでもよい。
【0031】
例えば、トレーニング対象モデルはそれぞれ第1層、第2層及び第3層の3層を含み、モデル性能予測及び分解モジュール10はまずトレーニング対象モデルにおける第1層パラメータ、第2層パラメータ及び第3層パラメータをそれぞれ10回トレーニング反復して、第1層パラメータの各回トレーニング反復による計算時間T1i及びメモリオーバーヘッドR1i(ここで、iが反復の回数である)、第2層パラメータの各回トレーニング反復による計算時間T2i及びメモリオーバーヘッドR2i(ここで、iが反復の回数である)、並びに第3層パラメータの各回トレーニング反復による計算時間T3i及びメモリオーバーヘッドR3i(ここで、iが反復の回数の番号であり、i=0、1、2、…、9である)を決定する。
【0032】
第1層パラメータの10回反復トレーニングによる計算時間の平均値はT1=(T10+T11+…+T19)/10であり、第1層パラメータの10回反復トレーニングによるメモリオーバーヘッドの平均値はR1=(R10+R11+…+R19)/10であり、第2層パラメータ、第3層パラメータの10回反復トレーニングによる計算時間の平均値及びメモリオーバーヘッドの平均値の計算方式は類似するため、詳細な説明は省略する。
【0033】
各層のパラメータに必要な計算時間の長さは該層のパラメータの複数回反復トレーニングによる計算時間の平均値に等しくてもよく、又は各層のパラメータに必要な計算時間の長さは該層のパラメータの複数回反復トレーニングによる計算時間の平均値よりも少し大きくてもよい。上記実施例を援用し、第1層パラメータに必要な計算時間の長さはT1に等しく、又はT1よりも少し大きくてもよい。
【0034】
各層のパラメータに必要なメモリオーバーヘッドの大きさは該層のパラメータの複数回反復トレーニングによるメモリオーバーヘッドの平均値に等しくてもよく、又は各層のパラメータに必要なメモリオーバーヘッドの大きさは該層のパラメータの複数回反復トレーニングによるメモリオーバーヘッドの平均値よりも少し大きくてもよい。上記実施例を援用し、第1層パラメータに必要なメモリオーバーヘッドの大きさはR1に等しく、又はR1よりも少し大きくてもよい。
【0035】
ステップS12では、各層のパラメータに必要な計算時間及びメモリオーバーヘッドに基づいて、異なる分散型トレーニング方式を用いる際にそれぞれ必要なGPUリソース及びタスク完了時間を決定する。
【0036】
なお、上記ステップS11における各回反復トレーニングはデータ並列又はパイプライン並列を用いてもよく、各層のパラメータは1つの反復トレーニング方式を用いてもよく、データ並列及びパイプライン並列を用いてもよい(データ並列とパイプライン並列とを含むトレーニング方式がハイブリッドトレーニング方式と称されてもよい)。
【0037】
該ステップS12において、まずトレーニング対象モデルの複数層のパラメータの反復トレーニングに対して順列組合せを行い、各種類の順列組合せが1種類の分散型トレーニング方式に相当し、次にトレーニング対象モデルの複数層のパラメータが各種類の順列組合せにおいてそれぞれ必要なGPUリソース及びタスク完了時間を評価する。
【0038】
ステップS13では、目標完了時間及び目標投入リソースに基づいて、タスク完了時間が最も短い分散型トレーニング方式をトレーニング対象モデルに対応する分散型トレーニング方式として選択する。
【0039】
選択肢として、上記ステップS12におけるGPUリソースが目標投入リソースを超える順列組合せを排除し、次に残りの順列組合せからタスク完了時間が最も短い順列組合せをトレーニング対象モデルの分散型トレーニング方式として選択し、それにより最適なトレーニング効率を確保する。当然ながら、他の実施例では、上記ステップS12におけるGPUリソースが目標投入リソースを超える順列組合せを排除し、残りの順列組合せからタスク完了時間が二番目に短い順列組合せをトレーニング対象モデルの分散型トレーニング方式として選択してもよく、それにより異なるトレーニング要件を満足する。
【0040】
トレーニング対象モデルの分散型トレーニング方式を選択した後、モデル性能予測及び分解モジュール10は更にトレーニング対象モデルを計算クラスタにおける複数の計算ノードのGPUに応じて複数のサブタスクに分割する。データ並列の場合、各サブタスクはいずれも1つの完全なモデルであり、各GPUにおけるサブタスクは集団通信又はパラメータサーバにより勾配交換及びパラメータ更新を行い、パイプライン並列の場合、各GPUにおけるサブタスクは複数層のパラメータを含む1つのサブモデルであり、各GPUにおけるサブモデルはポイントツーポイントの方式で中間パラメータ通信を行う。
【0041】
モデル性能予測及び分解モジュール10は、割り当てられたサブタスク及び各サブタスクのリソース消費情報などの記述情報をグローバルGPUリソーススケジューラ20に送信し、グローバルGPUリソーススケジューラ20が適切な計算ノードのGPUを検索して通信トポロジーを実行及び構築する。
【0042】
グローバルGPUリソーススケジューラ20は、モデル性能予測及び分解モジュール10から送信されたサブタスク要求を受信した後、計算クラスタの現在のGPU実行状況(即ち、計算クラスタにおける各計算ノードのGPU実行状況)に応じて、該モデルの全てのサブタスクの計算時間及びメモリ要件(即ち、各サブタスクのリソース消費情報)と組み合わせて、サブタスクを適切なGPUに割り当てて実行するとともに、各サブタスク間の通信トポロジーを構築する。次に、各計算ノードのGPUはそれに割り当てられたサブタスクをトレーニングする。即ち、本発明の実施例に係るグローバルGPUリソーススケジューラ20はグローバルリソース割り当て機能を備える。
【0043】
選択肢として、グローバルGPUリソーススケジューラ20は、モデル性能予測及び分解モジュール10が分解した後のサブタスクを具体的なGPUにマッピングすることにより、複数のモデルのサブタスクがGPUを共有できるようにするとともに、1つのモデルの複数のサブタスク間の待ち時間をできる限り短縮する。
【0044】
本発明の実施例における計算リソース実行状況はサブタスクの待ち時間及びGPU利用率を含んでもよく、理解されるように、計算リソース実行状況は上記サブタスクの待ち時間及びGPU利用率に限らず、他のもの例えば計算ノードのCPU利用率を更に含んでもよい。
【0045】
グローバルGPUリソーススケジューラ20が各計算ノードのGPUの計算リソース実行状況をモニタリングする手段は必要に応じて選択してもよく、例えば、いくつかの実施例では、グローバルGPUリソーススケジューラ20は計算クラスタにおける各計算ノードからGPUの計算リソース実行状況を能動的に取得し、他のいくつかの実施例では、計算クラスタにおける各計算ノードは該計算ノードが取得したGPUの計算リソース実行状況をグローバルGPUリソーススケジューラ20に能動的に報告する。
【0046】
選択肢として、いくつかの実施例では、グローバルGPUリソーススケジューラ20は各計算ノードのGPUの計算リソース実行状況を周期的に取得する。例えば、グローバルGPUリソーススケジューラ20は各計算ノードがグローバルGPUリソーススケジューラ20にフィードバックした該計算ノードのGPUの計算リソース実行状況を周期的に受信し、即ち各計算ノードはグローバルGPUリソーススケジューラ20に該計算ノードのGPUの計算リソース実行状況を周期的に報告する。更に例えば、グローバルGPUリソーススケジューラ20は計算クラスタにおける各計算ノードからGPUの計算リソース実行状況を周期的に取得し、即ちグローバルGPUリソーススケジューラ20は計算クラスタにおける各計算ノードからGPUの計算リソース実行状況を能動的且つ周期的に取得する。計算ノードのGPUの計算リソース実行状況の取得周期時間の長さは必要に応じて設定されてもよく、例えば10分間である。
【0047】
理解すべきことは、他のいくつかの実施例では、グローバルGPUリソーススケジューラ20は各計算ノードのGPUの計算リソース実行状況を非周期的に取得する。本実施例では、グローバルGPUリソーススケジューラ20は必要な場合に各計算ノードのGPUの計算リソース実行状況を取得することができる。
【0048】
本発明の実施例に係るグローバルGPUリソーススケジューラ20はサブタスクの協調スケジューリング機能を備える。実行可能な実行方式において、
図4を参照し、グローバルGPUリソーススケジューラ20は全ての計算ノードのGPUの計算リソース実行状況に応じて、サブタスクのスケジューリングを制御するとき、下記ステップS21及びS22を含んでもよいが、それらに限らない。
【0049】
ステップS21では、待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、バックアップノードは複数の計算ノードのうちの待ち時間がプリセット時間閾値以上のサブタスクに対応する現在計算ノード以外の計算ノードであり、且つバックアップノードのGPU利用率がプリセット利用率閾値以下である。
【0050】
プリセット時間閾値、プリセット利用率閾値などの大きさは実際の要件に応じてユーザーにより設定されてもよい。
【0051】
例えば、プリセット時間閾値が5分間であり、プリセット利用率閾値が70%であり、計算ノード1のGPUがサブタスク11及びサブタスク12を実行し、計算ノード2がサブタスク13を実行し、計算ノード3がサブタスク14及びサブタスク15を実行し、サブタスク12の待ち時間が5分間よりも長く、計算ノード2のGPU利用率が70%よりも小さく、計算ノード3の利用率が70%よりも大きく、そうすると、計算ノード2をバックアップノードとしてもよい。
【0052】
ステップS22では、待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをバックアップノードにコピーすることにより、待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式でバックアップノードに追加して次の反復において該タスクのトレーニングに参加する。
【0053】
上記実施例を援用し、なお、サブタスク12を計算ノード2にスケジューリングする前に、計算ノード1は既にサブタスク12に対して対応トレーニングを行った可能性があり、従って、ここでサブタスク12の最新のモデルパラメータを計算ノード2にコピーする。
【0054】
待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、且つ待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをバックアップノードにコピーすることにより、待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式でバックアップノードに追加して次の反復において該タスクのトレーニングに参加し、これにより、待ち時間がプリセット時間閾値以上のサブタスクのトレーニング待ち時間を短縮し、バックアップノードのアイドル時間を十分に利用し、最終的に全体のトレーニング待ち時間を短縮し、トレーニング効率を向上させる。
【0055】
該ステップにおいて、待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式でバックアップノードに追加して次の反復において該タスクのトレーニングに参加し、具体的に、現在計算ノード及びバックアップノードの2つのノードに1つの狭い範囲のデータ並列を構築し、現在計算ノードが次の反復においてデータの半分をトレーニングすればよく、現在計算ノードの負荷を軽減することができる。
【0056】
ステップS22を実行するとき、選択肢として、グローバルGPUリソーススケジューラ20はバックアップノードのローカルGPUリソーススケジューラに第1スケジューリング情報を送信し、第1スケジューリング情報には待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータが含まれ、バックアップノードのローカルGPUリソーススケジューラは第1スケジューリング情報を受信した後、待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式でバックアップノードに追加して次の反復において該タスクのトレーニングに参加する。
【0057】
上記実施例を援用し、グローバルGPUリソーススケジューラ20は計算ノード2のローカルGPUリソーススケジューラに第1スケジューリング情報を送信し、第1スケジューリング情報にサブタスク12の最新のモデルパラメータが含まれ、計算ノード2のローカルGPUリソーススケジューラは第1スケジューリング情報を受信した後、サブタスク12の最新のモデルパラメータをデータ並列方式で計算ノード2に追加して、データ並列の1つの新たなノードとして次の反復において該タスクのトレーニングに参加する。
【0058】
グローバルGPUリソーススケジューラ20は全ての計算ノードのGPUの計算リソース実行状況に応じて、サブタスクのスケジューリングを制御するとき、更にサブタスクに対応する分散型トレーニング方式を考慮してもよく、例えば、いくつかの実施例では、サブタスクに対応する分散型トレーニング方式がデータ並列である場合、サブタスクのトレーニング過程が勾配計算段階及び勾配同期段階を含み、グローバルGPUリソーススケジューラ20は全ての計算ノードのGPUの計算リソース実行状況に応じて、サブタスクのスケジューリングを制御するとき、全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御する。具体的に、グローバルGPUリソーススケジューラ20は全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御するとき、パラメータサーバが全てのデータ並列のサブタスクのグローバル勾配情報を計算し始めることを受信した後、第2スケジューリング情報をデータ並列のサブタスクに対応する計算ノードに送信することにより、第2スケジューリング情報によって前記データ並列のサブタスクに対応する計算ノードが対応するデータ並列のサブタスクを優先的に実行するように提示し、且つ前記データ並列のサブタスクに対応する計算ノードのGPUメインメモリから対応するデータ並列のサブタスクに対応する最新のモデルパラメータ及び中間変数を計算ノードのGPUグラフィックメモリにコピーするのであり、対応するデータ並列のサブタスクがサブタスクに依存する他の計算結果を待つとき、予想された待ち時間が前記対応するデータ並列の計算ノードのCPU-GPUメモリコピー時間を超える場合、前記対応するデータ並列の計算ノードは対応するデータ並列のサブタスクに対応するモデルパラメータ及び中間変数を前記対応するデータ並列の計算ノードのGPUグラフィックメモリから前記対応するデータ並列の計算ノードのCPUメインメモリに一時的に移動する。CPUメインメモリのメモリがより大きい特徴を利用して、1つのモデルのGPUにおけるサブタスクがタスクに依存する他の計算結果を待つとき、予想された待ち時間がCPU-GPUメモリコピー時間を超える場合、該サブタスクのモデルパラメータ及び中間変数をCPUメインメモリに一時的に移動し、次に次回計算する前にプリフェッチし、このようにすると、計算クラスタにおけるGPU及びネットワークなどのリソースの利用率を向上させることができる。CPU-GPUメモリコピーはPCI-Eチャネルを介して伝送し、且つ伝送速度が比較的一定であり、従って、CPU-GPUメモリコピー時間は伝送するデータ量の大きさをPCI-Eチャネル伝送速度で割ることで算出できる。グローバルGPUリソーススケジューラ20は計算クラスタのパラメータサーバがグローバル勾配情報を計算し始めることを受信すると、第2スケジューリング情報を対応するサブタスクの計算ノード(上記データ並列のサブタスクに対応する計算ノード)に送信し、対応するサブタスクの計算ノードは第2スケジューリング情報を受信した後、該サブタスクを優先的に実行するように提示してCPUメインメモリからそのモデルパラメータ及び中間変数をGPUグラフィックメモリにできる限り早くコピーすることとなり、それによりGPUの計算効率を向上させるとともにサブタスク計算の待ち時間をできる限り短縮する。本実施例におけるグローバルGPUリソーススケジューラ20は計算リソース調整機能を備える。なお、グローバル勾配情報は各サブタスクの勾配情報によって決定され、選択肢として、グローバル勾配情報は各サブタスクの勾配情報を含み、選択肢として、グローバル勾配情報は各サブタスクの勾配情報に基づいて処理して取得したものである。勾配情報は勾配計算情報及び勾配同期情報を含む。
【0059】
いくつかの実施例では、グローバルGPUリソーススケジューラ20は更にタスクリソース回収機能を備え、具体的に、グローバルGPUリソーススケジューラ20は更に、トレーニング対象モデルのトレーニングが完了した後、トレーニング対象モデルの各サブタスクの履歴割り当て情報に基づいて各サブタスクの位置する計算ノードを決定し、各サブタスクの位置する計算ノードが該計算ノードにおいて対応するサブタスクをトレーニングする際に用いるローカルリソースを回収するように制御し、全ての計算ノードによるリソース回収が終了したことを決定した後、グローバルGPUリソーススケジューラ20においてトレーニング対象モデルをトレーニングする際に用いるリソースを解放することに用いられる。
【0060】
図5を参照し、本発明の一実施例におけるグローバルGPUリソーススケジューラ20にグローバルリソース割り当て、サブタスク協調スケジューリング、計算リソース調整及びタスクリソース回収機能が統合される。
【0061】
図6を参照し、各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングするとき、下記ステップS31~S33を含むが、それらに限らない。
【0062】
ステップS31では、分散型トレーニング方式に基づいて、ローカルに割り当てられるサブタスクのトレーニングタイプを決定し、トレーニングタイプがデータ並列タスク及びパイプライン並列タスクを含む。
【0063】
例えば、ステップS13において決定された順列組合せにおける対応する該計算ノードローカルのサブタスクのトレーニングタイプが挙げられる。
【0064】
ステップS32では、ローカルに割り当てられるサブタスクのトレーニングタイプに基づいて、ローカルに割り当てられるサブタスクのローカルスケジューリングポリシーを決定し、
ステップS33では、ローカルスケジューリングポリシーに基づいて、ローカルに割り当てられるサブタスクをローカルにスケジューリングする。
【0065】
トレーニングタイプがデータ並列タスクである場合、サブタスクのローカルスケジューリングポリシーが第1スケジューリングポリシーであり、トレーニングタイプがパイプライン並列タスクである場合、サブタスクのローカルスケジューリングポリシーが第2スケジューリングポリシーである。
【0066】
第1スケジューリングポリシーは必要に応じて設定されてもよく、例えば、いくつかの実施例では、トレーニングタイプがデータ並列タスクである場合、サブタスクのトレーニング過程は勾配計算段階及び勾配同期段階を含む。勾配計算段階は計算効率が高く、通信オーバーヘッドが非常に低いが、勾配同期段階は計算効率がより低く、通信オーバーヘッドがより高い。第1スケジューリングポリシーにおいて、上記特徴に基づいてサブタスクのスケジューリング及び管理を行うことにより、最適なスケジューリングを実現し、計算クラスタのGPU及びネットワークなどのリソースの利用率を向上させ、サブタスクトレーニングの待ち時間を短縮する。具体的に、
図7を参照し、第1スケジューリングポリシーは、現在サブタスクの勾配計算段階における第1計算需要及び現在計算ノードにおける他のサブタスクの第2計算需要を取得することと、第1計算需要及び第2計算需要に応じて、計算効率に基づいて現在計算ノードの全てのサブタスクのトレーニング順序を決定することと、を含む。理解すべきことは、計算効率が計算需要の大きさに負相関し、即ち、計算需要が大きければ大きいほど、計算効率が低くなり、計算需要が小さければ小さいほど、計算効率が高くなる。選択肢として、計算効率が高ければ高いほど、トレーニング順序が上位になり、計算効率が低ければ低いほど、トレーニング順序が下位になる。
【0067】
現在、現在計算ノードのローカル計算リソースが既に新たなタスクの計算需要を満足できなくなるため、ユーザーが予想したタスク完了時間に影響する恐れがある場合、現在計算ノードのこの判断結果と現在計算ノードのGPUの計算リソース使用状況とを併せてグローバルGPUリソーススケジューラ20にフィードバックして、グローバルGPUリソーススケジューラ20にはユーザーが予想したタスク完了時間を満足できる他の計算ノードがあるかどうかを照会する。
【0068】
グローバルGPUリソーススケジューラ20を他の計算ノードに配置する場合、該新たなタスクのスケジューリングを終了することとなり、更に、
図7を参照し、第1スケジューリングポリシーは、現在計算ノードのローカル計算リソースが現在サブタスクの計算需要を超える場合、グローバルGPUリソーススケジューラ20に該現在計算ノードのGPUの計算リソース実行状況をフィードバックすることにより、グローバルGPUリソーススケジューラ20には計算リソースが現在サブタスクの計算需要を超えない他の計算ノードがあるかどうかを照会することを更に含む。計算ノードのローカル計算リソースが現在サブタスクの計算需要を超える場合、現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間を超え、計算ノードのローカル計算リソースが現在サブタスクの計算需要よりも少ない場合、現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間よりも短い。
【0069】
グローバルGPUリソーススケジューラ20を他の計算ノードに配置しない場合、更に、
図7を参照し、第1スケジューリングポリシーは、グローバルGPUリソーススケジューラ20は他の計算ノードがないことをフィードバックした場合、現在計算ノードが高優先度キュー及び低優先度キューを構築し、且つ現在サブタスクの勾配計算段階タスクを高優先度キューに入れて、現在サブタスクの勾配同期段階タスクを低優先度キューに入れることと、現在計算ノードのGPUが勾配計算段階タスクを実行し、現在計算ノードのCPUが勾配同期段階タスクを実行することと、を更に含む。更に、第1スケジューリングポリシーは、勾配計算段階タスクの実行が完了した場合、勾配計算段階タスクに対応するモデルパラメータ及び中間変数を現在計算ノードのCPUメインメモリにコピーすることと、勾配計算段階タスク及び勾配同期段階タスクがいずれも完了した場合、対応するサブタスクのモデルパラメータ及び中間変数を現在計算ノードのGPUグラフィックメモリにコピーし、及び/又は、現在計算ノードはグローバルGPUリソーススケジューラ20が送信した第1スケジューリング情報を受信した後、低優先度キューのサブタスクにプリフェッチマークを付け、各計算ノードのGPUがプリフェッチマークを付けたサブタスクを優先的に実行することと、を更に含む。例えば、グローバルGPUリソーススケジューラ20は他の計算ノードがないことをフィードバックした場合、現在計算ノードは2つの優先度があるキューを構築し、データ並列タスクを勾配計算段階タスク及び勾配同期段階タスクに分割し、勾配計算段階タスクを高優先度キューに入れて、勾配同期段階タスクを低優先度キューに入れる。現在計算ノードのGPUの計算リソースが逼迫する場合、現在計算ノードのCPUが勾配同期段階タスクを担う。現在計算ノードはグローバルGPUリソーススケジューラ20が送信した第1スケジューリング情報を受信した後、低優先度キューの該現在サブタスクにプリフェッチマークを付ける。現在計算ノードのローカルスケジューリングポリシーはタスクを選択する際にプリフェッチマークを付けたサブタスクを優先的に実行することとなり、該現在サブタスクの勾配同期が完了した場合、該現在サブタスクのモデルパラメータ及び中間変数を現在計算ノードのCPUホストメモリから現在計算ノードのGPUグラフィックメモリにコピーし、そうでない場合、勾配同期が完了するまでモニタリングし続けてコピーし始める。
【0070】
他のいくつかの実施例では、トレーニングタイプがパイプライン並列タスクである場合、現在サブタスクは複数のタスク段階を含み、現在サブタスクの最後の段階の計算タスクが完全な計算タスクであり、現在サブタスクの他の段階の計算タスクが順方向計算タスク及び逆方向計算タスクを含む。パイプライン並列タスクはトレーニング過程を複数の段階に分割し、且つ1つの双方向のパイプライン並列であり、順方向計算を1番目の段階から最後の段階まで行ってから損失関数を計算し、次に逆方向計算を最後の段階から1番目のノードまで行い、且つ異なる段階のアイドル時間が異なる。1番目の段階のアイドル時間が最も長く、次に順に短縮し、最後の段階の順方向計算及び逆方向計算が連続体でアイドル時間がない。第2スケジューリングポリシーにおいて、この特徴に基づいてサブタスクのスケジューリング及び管理を行うことにより最適なスケジューリングを実現し、計算クラスタのGPU及びネットワークなどのリソースの利用率を向上させ、サブタスクトレーニングの待ち時間を短縮する。
【0071】
選択肢として、現在計算ノードはGPUリソースグローバルスケジューラのスケジューリング要求を受信した後、該現在サブタスクの属する段階に基づいてそれを順方向及び逆方向の2つの計算タスクに分割するかどうかを決定する。最後の段階の場合、該現在サブタスクは1つの完全な計算タスクとされ、他の段階が順方向及び逆方向の2つの計算タスクに分けられる。現在計算ノードは更に該現在計算ノードの現在のローカルGPUリソース実行状況に応じて、該現在サブタスクの計算需要を満足できるかどうかを判断し、NOの場合、グローバルGPUリソーススケジューラ20にはユーザーが予想したタスク完了時間を満足できる他の計算ノードがあるかどうかを照会する。グローバルGPUリソーススケジューラ20が他の計算ノードに配置される場合、該モデルサブタスクのスケジューリングを終了する。グローバルGPUリソーススケジューラ20は他の計算ノードがないことをフィードバックした場合、現在計算ノードは現在サブタスクを高優先度キューに入れる。選択肢として、
図8を参照し、第2スケジューリングポリシーは、現在計算ノードはローカルGPUリソース実行状況に応じて、現在計算ノードのGPUリソースが現在サブタスクの計算需要を満足できるかどうかを判断し、NOの場合、グローバルGPUリソーススケジューラ20には現在サブタスクの計算需要を満足できる他の計算ノードがあるかどうかを照会することと、グローバルGPUリソーススケジューラ20は他の計算ノードがないことをフィードバックした場合、現在計算ノードが現在サブタスクを高優先度キューに入れることと、を含む。更に、GPU計算効率を十分に発揮するために、順方向及び逆方向段階のアイドル時間に他のタスクの計算タスクを挿入してもよく、
図8を参照し、本実施例の第2スケジューリングポリシーは、現在サブタスクの順方向計算タスク段階及び逆方向計算タスク段階のアイドル時間に基づいて他のサブタスクの計算タスクを挿入し、及び/又は、現在サブタスクの順方向計算タスクが完了した後、現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数を現在計算ノードのGPUから現在計算ノードのCPUメインメモリにコピーし、且つ予想アイドル時間に基づいて現在サブタスクの順方向計算タスクに関連する逆方向計算タスクに事前実行時間をマークすることと、事前実行時間が終了した後、関連する逆方向計算タスクがまだ実行され始めていない場合、対応する現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数をCPUメインメモリから現在計算ノードのGPUに再びコピーすることにより、逆方向計算の待ち時間を短縮することと、を更に含んでもよい。
【0072】
本発明の実施例は知的計算向けの分散型トレーニングタスクのスケジューリング方法を更に提供し、
図9を参照し、本発明の実施例における知的計算向けの分散型トレーニングタスクのスケジューリング方法は、
モデル性能予測及び分解モジュールはユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、トレーニング対象モデルに対応する分散型トレーニング方式を決定し、且つトレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定し、分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、ハイブリッド並列がデータ並列及びパイプライン並列を含み、リソース消費情報が計算消費及びメモリ消費を含むステップS100と、
グローバルGPUリソーススケジューラはモデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御し、サブタスク要求にはトレーニング対象モデルに対応する分散型トレーニング方式、複数のサブタスク及び各サブタスクのリソース消費情報が含まれるステップS200と、
各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングするステップS300と、を含んでもよい。
【0073】
上記知的計算向けの分散型トレーニングタスクのスケジューリング方法の実施例に対応して、本発明は知的計算向けの分散型トレーニングタスクのスケジューリング装置の実施例を更に提供する。
【0074】
図10を参照し、本発明の実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリング装置は記憶装置及び1つ又は複数のプロセッサを備え、前記記憶装置に実行可能なコードが記憶され、前記1つ又は複数のプロセッサが前記実行可能なコードを実行するとき、上記実施例における知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行することに用いられる。
【0075】
本発明の実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリング装置の実施例はデータ処理能力を有するいかなる装置に応用されてもよく、該データ処理能力を有するいかなる装置はコンピュータなどの機器又は装置であってもよい。装置実施例はソフトウェアにより実現されてもよく、ハードウェア又はソフトウェアとハードウェアとの組合せにより実現されてもよい。ソフトウェアによる実現を例とし、1つの論理意味上の装置として、その位置するデータ処理能力を有するいかなる装置のプロセッサにより不揮発性メモリにおける対応するコンピュータプログラム命令をメモリに読み込んで実行して形成したものである。ハードウェアの側面から言えば、
図10は本発明の実施例に係る知的計算向けの分散型トレーニングタスクのスケジューリング装置の位置するデータ処理能力を有するいかなる装置のハードウェア構造図であり、
図10に示されるプロセッサ、メモリ、ネットワークインターフェース及び不揮発性メモリ以外に、実施例における装置の位置するデータ処理能力を有するいかなる装置は一般的に該データ処理能力を有するいかなる装置の実際の機能によって他のハードウェアを更に備えてもよく、これについて詳細な説明は省略する。
【0076】
上記装置の各ユニットの機能及び作用の実現過程は具体的に上記方法における対応ステップの実現過程を参照してもよく、ここで詳細な説明は省略する。
【0077】
装置実施例は、基本的に方法実施例に対応するため、関連箇所が方法実施例の説明の一部を参照すればよい。以上に記載する装置実施例は模式的なものに過ぎず、分離部材として説明される前記ユニットは物理的に分離してもよく、物理的に分離しなくてもよく、ユニットとして表示される部材は物理ユニットであってもよく、物理ユニットでなくてもよく、即ち、一箇所に位置してもよく、複数のネットワークユニットに配置されてもよい。実際の必要に応じて、その一部又は全部のモジュールを選択して本発明案の目的を実行してもよい。当業者であれば、創造的な労力を要することなく、理解して実施することができる。
【0078】
本発明の実施例はコンピュータ読み取り可能な記憶媒体を更に提供し、プログラムが記憶され、該プログラムがプロセッサにより実行されるとき、上記実施例における知的計算向けの分散型トレーニングタスクのスケジューリング方法を実行する。
【0079】
前記コンピュータ読み取り可能な記憶媒体は上記いずれか1つの実施例に記載のデータ処理能力を有するいかなる装置の内部記憶ユニット、例えばハードディスク又はメモリであってもよい。前記コンピュータ読み取り可能な記憶媒体は更にデータ処理能力を有するいかなる装置の外部記憶装置、例えば前記装置に配置されるプラグインハードディスク、スマートメディアカード(SMC、Smart Media Card)、SDカード、フラッシュカード(Flash Card)などであってもよい。更に、前記コンピュータ読み取り可能な記憶媒体はデータ処理能力を有するいかなる装置の内部記憶ユニットのほか、外部記憶装置を更に含んでもよい。前記コンピュータ読み取り可能な記憶媒体は前記コンピュータプログラムと、前記データ処理能力を有するいかなる装置に必要な他のプログラム及びデータとを記憶することに用いられ、更に既に出力した又は出力しようとするデータを一時的に記憶するためのものであってもよい。
【符号の説明】
【0080】
10 モデル性能予測及び分解モジュール
20 グローバルGPUリソーススケジューラ
30 ローカルGPUリソーススケジューラ
【手続補正書】
【提出日】2023-11-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
知的計算向けの分散型トレーニングタスクのスケジューリングシステムであって、
計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記システムは、モデル性能予測及び分解モジュール、グローバルGPUリソーススケジューラ、及び各計算ノードにいずれも配置されるローカルGPUリソーススケジューラを含み、
前記モデル性能予測及び分解モジュールは、ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定することに用いられ、前記分散型トレーニング方式はデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列はデータ並列及びパイプライン並列を含み、前記リソース消費情報は計算消費及びメモリ消費を含み、
前記グローバルGPUリソーススケジューラは、前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御することに用いられ、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれ、
前記ローカルGPUリソーススケジューラは、前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることに用いられ、
前記計算リソース実行状況はサブタスクの待ち時間及びGPU利用率を含み、
前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、前記バックアップノードが、複数の前記計算ノードのうちの前記待ち時間がプリセット時間閾値以上のサブタスクに対応する現在計算ノード以外の計算ノードであり、且つ前記バックアップノードのGPU利用率がプリセット利用率閾値以下であること、及び
前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加することに用いられる
ことを特徴とする知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項2】
前記グローバルGPUリソーススケジューラは、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加するとき、具体的に、前記バックアップノードのローカルGPUリソーススケジューラに第1スケジューリング情報を送信することに用いられ、前記第1スケジューリング情報には前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータが含まれ、
前記バックアップノードのローカルGPUリソーススケジューラは、前記第1スケジューリング情報を受信した後、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加する
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項3】
前記サブタスクに対応する分散型トレーニング方式がデータ並列である場合、前記サブタスクのトレーニング過程は勾配計算段階及び勾配同期段階を含み、前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項4】
前記グローバルGPUリソーススケジューラは、全てのデータ並列のサブタスクの位置する計算ノードのGPUの計算リソース実行状況に応じて、対応するサブタスクのモデルパラメータ及び中間変数のプリフェッチを制御するとき、具体的に、
パラメータサーバが全てのデータ並列のサブタスクのグローバル勾配情報を計算し始めることを受信した後、第2スケジューリング情報をデータ並列のサブタスクに対応する計算ノードに送信することにより、前記第2スケジューリング情報によって前記計算ノードが対応するデータ並列のサブタスクを優先的に実行するように提示し、且つ前記計算ノードのGPUメインメモリから前記対応するデータ並列のサブタスクに対応する最新のモデルパラメータ及び中間変数を前記計算ノードのGPUグラフィックメモリにコピーすること、及び
前記対応するデータ並列のサブタスクに対応する最新のモデルパラメータ及び中間変数については、前記対応するデータ並列のサブタスクがサブタスクに依存する他の計算結果を待つとき、予想された待ち時間が前記計算ノードのCPU-GPUメモリのコピー時間を超える場合、前記計算ノードが前記対応するデータ並列のサブタスクに対応するモデルパラメータ及び中間変数を前記計算ノードのGPUグラフィックメモリから前記計算ノードのCPUメインメモリに一時的に移動することに用いられる
ことを特徴とする請求項3に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項5】
前記グローバルGPUリソーススケジューラは更に、
前記トレーニング対象モデルのトレーニングが完了した後、前記トレーニング対象モデルの各サブタスクの履歴割り当て情報に基づいて各サブタスクの位置する計算ノードを決定すること、
各サブタスクの位置する計算ノードが該計算ノードにおいて対応するサブタスクをトレーニングする際に用いるローカルリソースを回収するように制御すること、及び
全ての計算ノードによるリソース回収が終了したことを特定した後、グローバルGPUリソーススケジューラにおいて前記トレーニング対象モデルをトレーニングする際に用いるリソースを解放することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項6】
各計算ノードにいずれも配置される前記ローカルGPUリソーススケジューラは、前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングするとき、具体的に、
前記分散型トレーニング方式に基づいて、ローカルに割り当てられるサブタスクのトレーニングタイプを決定し、前記トレーニングタイプがデータ並列タスク及びパイプライン並列タスクを含むこと、
前記したローカルに割り当てられるサブタスクのトレーニングタイプに基づいて、前記したローカルに割り当てられるサブタスクのローカルスケジューリングポリシーを決定すること、及び
前記ローカルスケジューリングポリシーに基づいて、前記したローカルに割り当てられるサブタスクをローカルにスケジューリングすることに用いられ、
前記トレーニングタイプがデータ並列タスクである場合、前記サブタスクのローカルスケジューリングポリシーは第1スケジューリングポリシーであり、
前記トレーニングタイプがパイプライン並列タスクである場合、前記サブタスクのローカルスケジューリングポリシーは第2スケジューリングポリシーである
ことを特徴とする請求項
1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項7】
前記トレーニングタイプがデータ並列タスクである場合、前記サブタスクのトレーニング過程は勾配計算段階及び勾配同期段階を含み、
前記第1スケジューリングポリシーは、
現在サブタスクの前記勾配計算段階における第1計算需要及び現在計算ノードにおける他のサブタスクの第2計算需要を取得することと、
前記第1計算需要及び前記第2計算需要に応じて、計算効率に基づいて前記現在計算ノードの全てのサブタスクのトレーニング順序を決定することと、
前記現在計算ノードのローカル計算リソースが現在サブタスクの計算需要を超える場合、前記グローバルGPUリソーススケジューラに該計算ノードのGPUの計算リソース実行状況をフィードバックすることにより、前記グローバルGPUリソーススケジューラには計算リソースが前記現在サブタスクの計算需要を超えない他の計算ノードがあるかどうかを照会することと、
ここで、計算ノードのローカル計算リソースが前記現在サブタスクの計算需要を超える場合、前記現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間を超え、計算ノードのローカル計算リソースが前記現在サブタスクの計算需要よりも少ない場合、前記現在サブタスクのトレーニング時間はユーザーが予想したタスク完了時間よりも短いことと、
前記グローバルGPUリソーススケジューラは前記他の計算ノードがないことをフィードバックした場合、前記現在計算ノードが高優先度キュー及び低優先度キューを構築し、且つ前記現在サブタスクの勾配計算段階タスクを前記高優先度キューに入れて、前記現在サブタスクの勾配同期段階タスクを低優先度キューに入れることと、
前記現在計算ノードのGPUが前記勾配計算段階タスクを実行し、前記現在計算ノードのCPUが前記勾配同期段階タスクを実行することと、
前記勾配計算段階タスクの実行が完了した場合、前記勾配計算段階タスクに対応するモデルパラメータ及び中間変数を前記現在計算ノードのCPUメインメモリにコピーし、前記勾配計算段階タスク及び前記勾配同期段階タスクがいずれも完了した場合、対応するサブタスクのモデルパラメータ及び中間変数を前記現在計算ノードのGPUグラフィックメモリにコピーすることと、
及び/又は、
前記現在計算ノードは前記グローバルGPUリソーススケジューラが送信した第1スケジューリング情報を受信した後、前記低優先度キューのサブタスクにプリフェッチマークを付け、各計算ノードのGPUが前記プリフェッチマークを付けたサブタスクを優先的に実行することと、を含む
ことを特徴とする請求項
6に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項8】
前記トレーニングタイプがパイプライン並列タスクである場合、現在サブタスクは複数のタスク段階を含み、ここで、前記現在サブタスクの最後の段階の計算タスクは完全な計算タスクであり、前記現在サブタスクの他の段階の計算タスクは順方向計算タスク及び逆方向計算タスクを含み、
前記第2スケジューリングポリシーは、
現在計算ノードはローカルGPUリソース実行状況に応じて、前記計算ノードのGPUリソースが前記現在サブタスクの計算需要を満足できるかどうかを判断し、NOの場合、前記グローバルGPUリソーススケジューラには前記現在サブタスクの計算需要を満足できる他の計算ノードがあるかどうかを照会することと、
前記グローバルGPUリソーススケジューラは前記他の計算ノードがないことをフィードバックした場合、前記現在計算ノードが前記現在サブタスクを高優先度キューに入れることと、
前記現在サブタスクの順方向計算タスク段階及び逆方向計算タスク段階のアイドル時間に基づいて、他のサブタスクの計算タスクを挿入することと、
及び/又は、
前記現在サブタスクの順方向計算タスクが完了した後、前記現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数を前記現在計算ノードのGPUから前記現在計算ノードのCPUメインメモリにコピーし、且つ予想アイドル時間に基づいて前記現在サブタスクの順方向計算タスクに関連する逆方向計算タスクに事前実行時間をマークするが、前記事前実行時間が終了した後、前記関連する逆方向計算タスクがまだ実行され始めていない場合、対応する前記現在サブタスクの順方向計算タスクに対応するモデルパラメータ及び中間変数を前記CPUメインメモリから前記現在計算ノードのGPUに再びコピーすることと、を含む
ことを特徴とする請求項
6に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項9】
前記モデル性能予測及び分解モジュールは、ユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定することに用いられるとき、具体的に、
前記トレーニング対象モデルを事前トレーニングして、前記トレーニング対象モデルにおける各層のパラメータに必要な計算時間及びメモリオーバーヘッドを決定
し、具体的に、前記トレーニング対象モデルにおける各層のパラメータをそれぞれ複数回トレーニング反復して、各層のパラメータが各回トレーニング反復を行う計算時間及びメモリオーバーヘッドを決定し、ここで、各層のパラメータの複数回反復トレーニングによる計算時間の平均値に基づいて、該層のパラメータに必要な計算時間を決定すること、及び各層のパラメータの複数回反復トレーニングによるメモリオーバーヘッドの平均値に基づいて、該層のパラメータに必要なメモリオーバーヘッドを決定することに用いられること、
各層のパラメータに必要な計算時間及びメモリオーバーヘッドに基づいて、異なる分散型トレーニング方式を用いる際にそれぞれ必要なGPUリソース及びタスク完了時間を決定すること、及び
前記目標完了時間及び前記目標投入リソースに基づいて、タスク完了時間が最も短い分散型トレーニング方式を前記トレーニング対象モデルに対応する分散型トレーニング方式として選択することに用いられる
ことを特徴とする請求項1に記載の知的計算向けの分散型トレーニングタスクのスケジューリングシステム。
【請求項10】
知的計算向けの分散型トレーニングタスクのスケジューリング方法であって、
計算クラスタが複数の計算ノードを含み、複数の計算ノード同士が互いに通信でき、各計算ノードが少なくとも1つのCPU及び少なくとも1つのGPUを含み、前記スケジューリング方法は、
モデル性能予測及び分解モジュールはユーザーが入力したトレーニング対象モデル、目標完了時間及び目標投入リソースに基づいて、前記トレーニング対象モデルに対応する分散型トレーニング方式を決定して、前記トレーニング対象モデルを複数のサブタスクに分割し、及び、各サブタスクのリソース消費情報を決定し、前記分散型トレーニング方式がデータ並列、パイプライン並列及びハイブリッド並列のうちの1つを含み、前記ハイブリッド並列がデータ並列及びパイプライン並列を含み、前記リソース消費情報が計算消費及びメモリ消費を含むことと、
グローバルGPUリソーススケジューラは前記モデル性能予測及び分解モジュールが送信したサブタスク要求を受信した後、各サブタスクのリソース消費情報及び複数の前記計算ノードのGPU実行状況に応じて、各サブタスクを対応する計算ノードのGPUに割り当ててトレーニングを行い、各サブタスク間の通信トポロジーを構築し、且つ各計算ノードのGPUが対応するサブタスクをトレーニングする過程において、各計算ノードのGPUの計算リソース実行状況をモニタリングし、及び、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御し、前記サブタスク要求には前記トレーニング対象モデルに対応する分散型トレーニング方式、複数の前記サブタスク及び各サブタスクのリソース消費情報が含まれることと、
各計算ノードにいずれも配置されるローカルGPUリソーススケジューラは前記分散型トレーニング方式に基づいて、該計算ノードに割り当てられるサブタスクをローカルにスケジューリングすることと、を含み、
前記計算リソース実行状況はサブタスクの待ち時間及びGPU利用率を含み、
前記グローバルGPUリソーススケジューラは、全ての計算ノードのGPUの計算リソース実行状況に応じてサブタスクのスケジューリングを制御するとき、具体的に、
待ち時間がプリセット時間閾値以上のサブタスクにバックアップノードを追加し、前記バックアップノードは複数の前記計算ノードのうちの前記待ち時間がプリセット時間閾値以上のサブタスクに対応する現在計算ノード以外の計算ノードであり、且つ前記バックアップノードのGPU利用率がプリセット利用率閾値以下であること、及び
前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータを前記バックアップノードにコピーすることにより、前記待ち時間がプリセット時間閾値以上のサブタスクに対応する最新のモデルパラメータをデータ並列方式で前記バックアップノードに追加して次の反復において該タスクのトレーニングに参加することに用いられる
ことを特徴とする知的計算向けの分散型トレーニングタスクのスケジューリング方法。
【国際調査報告】