IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 之江実験室の特許一覧

特表2024-529206インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング
<>
  • 特表-インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング 図1
  • 特表-インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング 図2
  • 特表-インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング 図3
  • 特表-インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング 図4
  • 特表-インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-06
(54)【発明の名称】インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240730BHJP
   G06F 9/455 20180101ALI20240730BHJP
   G06F 9/46 20060101ALI20240730BHJP
【FI】
G06F9/50 150E
G06F9/455 150
G06F9/46 420A
G06F9/50 150C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023547139
(86)(22)【出願日】2023-06-19
(85)【翻訳文提出日】2023-08-02
(86)【国際出願番号】 CN2023101093
(87)【国際公開番号】W WO2024007849
(87)【国際公開日】2024-01-11
(31)【優先権主張番号】202310461389.9
(32)【優先日】2023-04-26
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.VERILOG
(71)【出願人】
【識別番号】521162399
【氏名又は名称】之江実験室
(74)【代理人】
【識別番号】110000729
【氏名又は名称】弁理士法人ユニアス国際特許事務所
(72)【発明者】
【氏名】李 勇
(72)【発明者】
【氏名】程 穏
(72)【発明者】
【氏名】呉 運翔
(72)【発明者】
【氏名】陳 光
(72)【発明者】
【氏名】朱 世強
(72)【発明者】
【氏名】曾 令倣
(57)【要約】
本開示は、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法提供し、当該方法は、対象モデルを分割して複数のサブモデルを得るステップと、前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するステップと、前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするステップと、前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するステップと、前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するステップと、を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
サンプルデータおよび対象モデルを取得するステップと、
前記対象モデルを分割して複数のサブモデルを得るステップであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、ステップと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するステップと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするステップと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得するステップと、
前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するステップと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するステップと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するステップと、を含む
ことを特徴とするインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法。
【請求項2】
前記対象モデルを分割して複数の前記サブモデルを得るステップは、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定するステップと、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するステップと、を含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップは、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定するステップと、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップと、を含み、
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得るステップと、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとするステップと、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップと、を含む
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを第1のノードとして決定するステップと、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定するステップと、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップと、を含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップを含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するステップを含む
ことを特徴とする請求項4に記載の方法。
【請求項7】
前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップは、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得るステップと、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定するステップと、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを、作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するステップと、を含む
ことを特徴とする請求項6に記載の方法。
【請求項8】
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定するステップと、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定するステップと、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定するステップと、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するステップと、をさらに含む
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを決定するステップと、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするステップであって、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである、ステップと、を含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するステップを含む
ことを特徴とする請求項4に記載の方法。
【請求項10】
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップを含む
ことを特徴とする請求項1~9のいずれか1項に記載の方法。
【請求項11】
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュールと、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュールであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュールと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュールと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュールと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュールと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュールと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュールと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュールと、を備える
ことを特徴とするインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置。
【請求項12】
前記分割モジュールは、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定し、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するように構成される
ことを特徴とする請求項11に記載の装置。
【請求項13】
前記第2の取得モジュールは、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定し、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するように構成され、
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される、
ことを特徴とする請求項11に記載の装置。
【請求項14】
前記第2の決定モジュールは、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される
ことを特徴とする請求項11に記載の装置。
【請求項15】
前記第2の決定モジュールは、
前記対象コンテナが配置された計算ノードを第1のノードとして決定し、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定し、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される
ことを特徴とする請求項14に記載の装置。
【請求項16】
前記第2の決定モジュールは、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成され、
前記調整モジュールは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するように構成される
ことを特徴とする請求項14に記載の装置。
【請求項17】
前記第2の決定モジュールは、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定し、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するように構成される
ことを特徴とする請求項16に記載の装置。
【請求項18】
前記第2の決定モジュールは、さらに、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定し、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定し、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するように構成される
ことを特徴とする請求項17に記載の装置。
【請求項19】
前記第2の決定モジュールは、
前記対象コンテナが配置された計算ノードを決定し、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするように構成され、
前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じであり、
前記調整モジュールは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するように構成される
ことを特徴とする請求項14に記載の装置。
【請求項20】
前記調整モジュールは、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される
ことを特徴とする請求項11~19のいずれか1項に記載の装置。
【請求項21】
コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1~10のいずれか1項に記載の方法が実施される、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項22】
メモリと、プロセッサと、前記メモリに記憶され、前記プロセッサ上で実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサが前記コンピュータプログラムを実行すると、請求項1~10のいずれか1項に記載の方法を実施する、
ことを特徴とする電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野に関し、特に、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニングの方法、装置、記憶媒体および電子デバイスに関する。
【背景技術】
【0002】
人工知能の発展に伴い、機械学習の応用分野は広さから深さへと発展し、モデルトレーニングと応用への要求が高まっている。モデルサイズとトレーニングデータ量の大幅な増加に伴い、モデルのトレーニング効率を向上させるために、コンテナに基づく分散トレーニングが広く利用されるようになっている。
【0003】
具体的に、モデルトレーニングを行う一般的な方法は、サーバがモデルに基づいて分割されたサブモデルを1つまたは複数のコンテナに配置し、複数のコンテナが物理マシン上の計算ノード(GPUなど)の計算リソースを共有してモデルトレーニングを行うことである。しかし、モデルトレーニングの過程において、各計算ノードの計算リソースが動的に変化する可能性があり、また、複数のコンテナが1台の物理マシンを共有しているため、コンテナの性能は他のコンテナの影響を受け、分散トレーニングの効率が低下する可能性がある。
【0004】
そのため、計算ノード内のサブモデルのトレーニング時間を近づけて、計算ノード間の負荷不均衡を軽減させるように、モデルをトレーニングするときに計算ノードに配置されるコンテナの分布をいかに動的に調整するかが喫緊の課題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は先行技術の上記問題点を解決するためのインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法、装置、記憶媒体および電子デバイスを提供する。
【課題を解決するための手段】
【0006】
本開示に用いられる技術的解決手段は、以下のとおりである。
【0007】
本開示はインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を提供し、前記方法は、
サンプルデータおよび対象モデルを取得するステップと、
前記対象モデルを分割して複数のサブモデルを得るステップであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、得るステップと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するステップと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするステップと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するステップと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するステップと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するステップと、を含む。
【0008】
オプションで、前記対象モデルを分割して複数の前記サブモデルを得るステップは、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定するステップと、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するステップと、を含む。
【0009】
オプションで、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップは、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定するステップと、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップと、を含む。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0010】
オプションで、前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得るステップと、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとするステップと、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップと、を含む。
【0011】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを第1のノードとして決定するステップと、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定するステップと、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップと、を含む。
【0012】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップを含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するステップを含む。
【0013】
オプションで、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップは、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得るステップと、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定するステップと、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを、作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するステップと、を含む。
【0014】
オプションで、前記方法は、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定するステップと、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定するステップと、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定するステップと、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するステップと、をさらに含む。
【0015】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを決定するステップと、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするステップであって、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである、ステップと、を含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するステップを含む。
【0016】
オプションで、前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、
前記対象コンテナに対応する演算時間が他のコンテナに対応する演算時間より大きいコンテナの数は第1の閾値を超える場合、前記対象コンテナに対応する計算ノードを第1の対象ノードとするステップと、
前記各計算ノードのうちの任意の2つの計算ノードの負荷データの差が第2の閾値より大きい場合、前記任意の2つの計算ノードから負荷の軽い計算ノードを第2の対象ノードとして決定するステップと、を含む。
【0017】
本開示はインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置を提供し、前記装置は、
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュールと、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュールであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュールと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュールと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュールと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュールと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュールと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュールと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュールと、を備える。
【0018】
オプションで、前記分割モジュールは、具体的に、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定し、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するように構成される。
【0019】
オプションで、前記第2の取得モジュールは、具体的に、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定し、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するように構成される。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0020】
オプションで、前記第2の決定モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される。
【0021】
オプションで、前記第2の決定モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される。
【0022】
オプションで、前記第2の決定モジュールは、具体的に、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するように構成される。
【0023】
オプションで、前記第2の決定モジュールは、具体的に、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定し、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するように構成される。
【0024】
オプションで、前記第2の決定モジュールは、さらに、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定し、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定し、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するように構成される。
【0025】
オプションで、前記第2の決定モジュールは、具体的に、
前記対象コンテナが配置された計算ノードを決定し、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするように構成され、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである。
前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するように構成される。
【0026】
オプションで、前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される。
【0027】
本開示はコンピュータ可読記憶媒体を提供し、前記コンピュータ可読記憶媒体はコンピュータプログラムを記憶しており、前記コンピュータプログラムがプロセッサによって実行されると、上記インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法が実施される。
【0028】
本開示は電子デバイスを提供し、前記電子デバイスは、メモリと、プロセッサと、前記メモリに記憶され、前記プロセッサ上で実行可能なコンピュータプログラムとを含み、前記プロセッサが前記コンピュータプログラムを実行すると、上記インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実施する。
【発明の効果】
【0029】
本開示で用いられる上記技術的解決手段の少なくとも1つは、以下の有益な効果を達成することができる。
【0030】
本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法は、対象モデルを分割して各サブモデルを得、各サブモデルに基づいて、各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各コンテナにそれぞれ配置し、サンプルデータを用いてモデルトレーニングタスクを実行して、各コンテナ内に配置されたサブモデルをトレーニングし、各計算ノードの負荷データと各コンテナに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整し、対象モデルのトレーニングタスクの実行を継続する。
【0031】
上記方法から分かるように、モデルトレーニングタスクを実行するとき、まず対象モデルを複数のサブモデルに分割し、次に各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各前記コンテナにそれぞれ配置して、各計算ノードを通じてトレーニングタスクを完了する。モデルトレーニングの過程において、本開示は、各計算ノードの負荷データを測定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、各前記ノードにおける各コンテナの分布を動的に調整し、これにより、各計算ノード間の負荷分散に有利となり、モデルレーニングの効率をさらに向上させることができる。
【図面の簡単な説明】
【0032】
ここで説明される添付図面は、本開示の理解を深めるために用いられ、本開示の一部を構成し、本開示の例示的な実施形態およびその説明は、本開示を説明するために用いられ、本開示の不当な限定を構成するものではない。
【0033】
図1】本開示の実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法のフローを示す概略図である。
図2】本開示の実施形態にて提供されるシステム関係を示す概略図である。
図3】本開示の実施形態にて提供されるコンテナ調整を示す概略図である。
図4】本開示の実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置の構成を示す概略図である。
図5】本開示の実施形態にて提供される電子デバイスを示す概略図である。
【発明を実施するための形態】
【0034】
本開示の目的、技術的解決手段および利点をより明確にするために、以下、本開示の特定の実施形態および対応する添付図面と併せて、本開示の技術的解決手段を明確かつ完全に説明する。明らかに、説明された実施形態は、本開示の実施形態の一部に過ぎず、そのすべてではない。本開示の実施形態に基づいて、当業者が創作的な労力を要することなく得られる他のすべての実施形態は、いずれも本開示の保護範囲に属する。
【0035】
以下、添付図面と併せて、本開示の各実施形態にて提供される技術的解決手段を詳細に説明する。
【0036】
図1は、本開示実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法のフローを示す概略図であり、以下のステップを含む。
【0037】
S100において、サンプルデータおよび対象モデルを取得する。
【0038】
S102において、前記対象モデルを分割して複数のサブモデルを得、各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む。
【0039】
モデルサイズとトレーニングデータ量の大幅な増加に伴い、大規模モデルは1台の物理マシン上で完全に配置できない可能性があり、1枚のGPUカードのメモリ容量も大規模モデルトレーニングの要求を満たすことができない。本開示は、モデルのトレーニング効率を向上させるために、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を提供し、マルチマシン・マルチGPU方式を用いてモデルの分散トレーニングを実行する。
【0040】
本開示の実行主体は、システムであってもよく、ノートパソコン、デスクトップパソコンなどの電子デバイスであってもよく、モデルトレーニングタスクを実行するためのシステム(当該システムは、複数の端末デバイスからなるデバイスクラスタで構成されてもよい)であってもよい。説明の便宜上、以下、実行主体としてシステムのみを例に、本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法について説明する。
【0041】
システムが、サンプルデータおよび対象モデルを取得し、対象モデルを分割して複数のサブモデルを得てもよく、ここで、各サブモデルは、対象モデルにおけるネットワーク層の一部を含む。
【0042】
本開示では、システムが対象モデルの分割を実行できる様々な方法がある。
【0043】
具体的に、システムは、モデルトレーニングタスクを実行するときの対象モデルの演算時間を、対象モデルの演算時間として決定してもよい。システムは、決定された対象モデルの演算時間に基づいて、モデルのトレーニングタスクを実行するときの各サブモデルの演算時間が近いことを調整目標として、対象モデルに含まれる異なるネットワーク層を分割してもよい。
【0044】
例えば、対象モデルに含まれるネットワーク層が30層であると仮定すると、システムは、対象モデルの演算時間に従って分割を行い、分割後の2つのサブモデルを得、そのうちの1つのサブモデルには対象モデルの最初の10層のネットワーク層が含まれ、もう1つのサブモデルには対象モデルの最後の20層のネットワーク層が含まれるようにしてもよい。この場合、システムは、この2つのサブモデルのトレーニングタスクを実行するとき、2つのサブモデルの演算時間長が近い、すなわち、この2つのサブモデルの演算時間の差が所定の範囲内にある。
【0045】
もちろん、システムは、対象モデルに含まれるネットワーク層の数に基づいて、対象モデルを直接分割してもよい。対象モデルに含まれるネットワーク層が30層であると仮定すると、システムは、対象モデルのネットワーク層の数を均等に分け、分割された2つのサブモデルのうち、1つのサブモデルには対象モデルの最初の15層のネットワーク層が含まれ、もう1つのサブモデルには対象モデルの最後の15層のネットワーク層が含まれるようにしてもよい。本開示は、モデルを分割する方法を限定しない。
【0046】
S104において、前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置する。
【0047】
システムは、複数のサブモデルに基づいて、複数のサブモデルを配置するための計算ノードを決定し、これらの計算ノード上に複数のコンテナを作成して、複数のサブモデルを前記複数のコンテナにそれぞれデ配置してもよい。
【0048】
例えば、現在、5台の物理マシンがモデルトレーニングタスクを共同で完了し、各物理マシン上に2つの計算ノード(例えば、GPU)があると仮定すると、対象モデルを20個のサブモデルに分割した後、システムは、各計算ノード上に合計20個のコンテナを作成して、分割によって得られた20個のサブモデルをそれぞれ20個のコンテナに配置してもよい。
【0049】
S106において、前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された複数のサブモデルをトレーニングする。
【0050】
システムは、サンプルデータを用いてモデルトレーニングタスクを実行して、各コンテナ内に配置されたサブモデルをトレーニングしてもよい。
【0051】
具体的に、各サブモデルに対してモデルトレーニングを行うとき、システムは、ログ収集フレームワークを用いて、各サブモデルのトレーニング過程における関連データを収集してもよく、関連データは、各サブモデルがトレーニング過程で生成したすべてのデータが含まれ、各サブモデルのコンテナ上での計算および実行状況を反映するために用いられる。
【0052】
具体的に、システムは、ロギング(Logging)方式を用いて関連データを収集してもよい。各サブモデルがトレーニングを行うとき、システムは、モデル計算の開始と終了、メモリアクセスの開始と終了などの時点をトレーニング統計情報としてログ出力してもよい。
【0053】
関連データからトレーニング統計情報をフィルタリングするために、ログを出力するとき、システムは、コンテナアドレス情報やスレッド番号などのトレーニングスレッドを一意に識別できる情報をログコンテンツに追加してもよく、また、container-adaptive-adjustなど、他のログコンテンツと区別するキーワードをログコンテンツに追加してもよい。
【0054】
各サブモデルに対してモデルのトレーニングを行うとき、システムは新たに生成されたログを連続的にスキャンしてもよい。開始時点のログがスキャンされた場合、システムは今回のトレーニング過程におけるサブモデルの実行(計算、ストレージアクセスなど)時間とスレッド番号などの一意の識別情報を記録し、その後、終了時点のログがスキャンされるまでスキャンを継続し、今回のトレーニング過程の実行時間を計算してもよい。
【0055】
システムは、キーワードに基づいてモデルトレーニングのために生成された対象ログをフィルタリングし、対象ログに基づいてサブモデルの実行開始時刻および終了時刻を決定し、対象ログに記録されたサブモデルの実行時間およびスレッド番号などの情報を、サブモデルの対応するコンテナに対応するトレーニング統計情報として共有ストレージシステムに送信して記憶してもよい。
【0056】
具体的に、モデルトレーニングタスクを実行する各計算ノードに対して、各計算ノードはフィルタリングされた対象ログを通じて、各サブモデルのトレーニング統計情報を取得する。トレーニング統計情報の数が所定の閾値を超えていない場合、システムはトレーニング統計情報の数が所定の閾値を超えるまでログをスキャンし続けてもよい。このとき、システムはトレーニング統計情報を所定の共有ストレージシステムに一括送信する。
【0057】
なお、各計算ノードがトレーニング統計情報を共有ストレージシステムに一括送信した後、システムは、各計算ノードが保有するトレーニング統計情報を削除し、分散トレーニングが終了するまで各コンテナに対応するトレーニング統計情報を記録し続けてもよい。
【0058】
もちろん、システムは一括送信時間を予め設定してもよく、システムが前回トレーニング統計情報を共有ストレージシステムに一括送信した時間が予め設定された送信時間を超えた場合、トレーニング統計情報を共有ストレージシステムに一括送信してもよい。例えば、予め設定された送信時間が15分である場合、システムは、各サブモデルのトレーニング過程において、15分ごとにトレーニング統計情報を共有ストレージシステムに一括送信してもよい。
【0059】
すなわち、共有ストレージシステムに記憶された各トレーニング統計情報は、モデルトレーニングタスクを実行するときに各計算ノードによって生成された対象ログに基づいて決定され、対象ログは、予め定められた指定キーワードに従って各計算ノードによって生成されたログからフィルタリングされ、トレーニング統計情報は、特定数を蓄積した後、または予め設定された時間に達した後、共有ストレージシステムに書き込まれ、各計算ノードから削除される。
【0060】
S108において、モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定する。
【0061】
システムは、モデルトレーニングタスクを実行するときの各計算ノードの負荷データを取得し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定してもよい。
【0062】
その後、システムは、各コンテナに対応する演算時間と各計算ノードの負荷データに基づいてコンテナの動作状態を分析し、コンテナの分布を調整してもよい。
【0063】
具体的に、システムは、所定の共有ストレージシステムから、各コンテナに対応するトレーニング統計情報を読み出してもよい。各コンテナについて、システムは、トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定してもよい。
【0064】
モデルトレーニングの過程において、システムはトレーニング統計情報を共有ストレージシステムに継続的に書き込み、分散トレーニングへの影響を低減するために、システムが共有ストレージシステムからシステムが各コンテナに対応するトレーニング統計情報を読み出してコンテナの状態を分析するとき、各サブモデルの前回のトレーニング時に生成されたトレーニング統計情報を取得してもよい。
【0065】
つまり、システムがコンテナの動作状態を分析するときに使用するデータに対応するトレーニング反復順序は、現在のモデルトレーニングのトレーニング反復順序より1つ遅れている。例えば、現在のモデルトレーニングのトレーニング反復順序がiであると仮定すると、システムが共有ストレージシステムから読み出したトレーニング統計情報に対応するトレーニング反復順序はi-1である。
【0066】
なお、共有ストレージシステムの性能を向上させるために、システムは、同じ反復順序に対応するトレーニング統計情報が連続的に格納されるように、トレーニング反復順序もキーワードの1つとして共有ストレージシステムに格納してもよい。
【0067】
S110において、前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定する。
【0068】
S112において、前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整する。
【0069】
各計算ノードの負荷データと各コンテナの対応する演算時間を決定した後、システムはコンテナの分布を調整する必要がある計算ノードを対象ノードとして決定してもよい。
【0070】
具体的に、システムは、複数のコンテナのそれぞれに対応する演算時間の大きい順に、コンテナをソートして第1のソート結果を得、第1のソート結果において、所定の順位より前にある1つまたは複数のコンテナを1つまたは複数の対象コンテナとしてもよい。
システムは、各コンテナに対応する演算時間で各コンテナの動作状態を反映し、その後、各コンテナに対応する演算時間に基づいてコンテナの分布を調整する必要がある計算ノードを決定することができる。
【0071】
例えば、所定の順位の具体的な値を5であると仮定すると、システムは、各計算ノードにおける各コンテナに対応する演算時間の大きい順に、第1のソート結果を得、そしてソート結果における最初の5つのコンテナを対象コンテナとしてもよい。
【0072】
もちろん、システムは他の方法で対象コンテナを決定してもよい。
【0073】
例えば、システムは各計算ノードの負荷情報を取得し、各計算ノードの負荷情報に基づいて、計算ノードにおけるGPU使用率が最も低い計算ノードを決定し、当該計算ノードのGPU使用率が所定の閾値よりも低い場合、当該計算ノードにおけるI/O負荷が最も高いコンテナを対象コンテナとしてもよい。
【0074】
対象コンテナを決定した後、システムは対象コンテナと各計算ノードの負荷データに基づいて、ココンテナの分布を調整する必要がある計算ノードを決定してもよい。
【0075】
具体的に、システムは、対象コンテナが配置された計算ノードを第1のノードとして決定し、第1のノードの負荷データに基づいて、第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定してもよい。
【0076】
システムは、第1のノードおよび第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、第1のノードにおける対象コンテナを第2のノードに移行させることができる。
【0077】
ここで、第1の設定閾値は、予め設定されてもよく、第1のノード以外の計算ノードの負荷の平均値であってもよい。
【0078】
例えば、システムは、第1のノードの負荷データに基づいて、第1のノードの負荷値が20である(負荷値は、負荷の高さを表すために使用され、負荷値は負荷と正の相関がある)と決定し、第1の設定閾値が10である場合、または、この時点の各計算ノードの負荷の平均値が10である場合、システムは、第1のノード以外の計算ノードから、第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定する必要がある。
【0079】
具体的に、システムは、まず、第1のノードにおけるI/O負荷が最も高い対象コンテナを決定し、次に、第1のノード以外の計算ノードの負荷データに基づいて、I/O負荷が最も低い計算ノードを第2のノードとして決定し、このとき、第1のノードにおける対象コンテナを第2のノードに移行して、各計算ノードにおけるコンテナの分布を調整してもよい。
【0080】
もちろん、本開示では、コンテナの分布の調整が必要な計算ノードを他の方法によって決定してもよい。
【0081】
システムが、対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定した場合、システムは、各計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定してもよい。
【0082】
ここで、第2の設定閾値は、予め設定されてもよく、各コンテナの対応する演算時間に対応する平均値であってもよい。
【0083】
例えば、対象コンテナの数が1で、当該対象コンテナに対応する演算時間が20minで、当該対象コンテナ以外のコンテナに対応する演算時間が10minであると決定された場合、システムは、対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値(例えば、5min)を超えていると判定し、このとき、システムは、各計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードである対象ノードとして決定してもよい。
【0084】
この場合、システムが対象ノードを決定する方法は様々かある。
【0085】
具体的に、システムは、計算ノードの負荷データが小さい順に、対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定してもよい。
【0086】
上記の他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にないと判定された場合、システムは、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを判定してもよい。
【0087】
ここで、各計算ノードの負荷データは、GPU使用率、CPU使用率、メモリ使用率、およびストレージデバイスの帯域幅で表すことができる。
【0088】
例えば、システムは、各計算ノードのGPU使用率が小さい順に、対象コンテナが配置された計算ノード以外の計算ノードをソートしてもよい。
【0089】
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、GPU使用率の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にあるかどうかを判定する。
【0090】
第2のソート結果において、各ソートされた隣接する2つの計算ノードのGPU使用率の差が所定の範囲内にある場合、システムは、各計算ノードのGPU使用率が小さい順に、対象コンテナが配置された計算ノード以外の計算ノードを再度ソートして、第2のソート結果を再度得てもよい。
【0091】
このとき、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、GPU使用率の低いノードを作成すべき新しいコンテナを配置する計算ノードとする。
【0092】
このように、システムは、作成すべき新しいコンテナを配置する計算ノードが決定されるまで、計算ノードのGPU使用率、CPU使用率、メモリ使用率、ストレージデバイスの帯域幅などのデータサイズを順次比較してもよい。
【0093】
システムが、計算ノードのGPU使用率、CPU使用率、メモリ使用率、ストレージデバイスの帯域幅などのデータサイズを順次比較しても、作成すべき新しいコンテナを配置する計算ノードを決定していない場合、システムは、他の方法で作成すべき新しいコンテナを配置する計算ノードを決定してもよい。
【0094】
具体的に、システムが前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあると判定した場合、システムは、作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定してもよい。例えば、あるサブモデルの出力が別のサブモデルの入力である場合、この2つのサブモデルを関連サブモデルとすることができる。
【0095】
また、システムは、関連サブモデルが配置された計算ノードを、関連ノードとして決定しともよい。システムは、関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定してもよい。
【0096】
例えば、システムは、関連ノードとの間のネットワーク遅延が最も小さい計算ノードを、作成すべき新しいコンテナを配置する計算ノードとしてもよい。あるいは、システムは、関連ノードと他の計算ノードとの間のネットワーク遅延の平均値を決定し、関連ノードとのネットワーク遅延が当該平均値より低い他の計算ノードを、作成すべき新しいコンテナを配置する計算ノードとしてもよい。
【0097】
作成すべき新しいコンテナを配置する計算ノードが決定された後、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードに新しいコンテナを作成し、対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを新しいコンテナに配置してもよい。
【0098】
これに加えて、システムは、他の方法で対象ノードを決定してもよい。
【0099】
具体的に、システムは、まず対象コンテナが配置された計算ノードを決定し、対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとしてもよい。ここで、指定コンテナに配置されたサブモデルは、対象コンテナに配置されたサブモデルと同じである。
【0100】
対象ノードが決定された後、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象コンテナが配置された計算ノードにおける対象コンテナまたは指定コンテナを削除してもよい。
【0101】
すなわち、サブモデルのモデルパラメータが同じである複数のコンテナが同時に1つの物理ノード(例えば、同じ物理マシン)上に配置されている場合、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、その物理ノード上のコンテナを削除し、当該物理ノード上に配置されているサブモデルのモデルパラメータが同じである1つのコンテナだけを保持してもよい。
【0102】
なお、本開示では、対象ノードにおける各コンテナの分布を調整するとき、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近く、かつ、コンテナが配置された計算ノードの負荷が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整する。
【0103】
S114において、コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行する。
【0104】
システムが対象ノードにおける各コンテナの分布を調整した後、コンテナの分布が調整された各計算ノードに基づいて、システムは、サンプルデータを使用して、対象モデルのトレーニングタスクを引き続き実行してもよい。
【0105】
なお、対象ノードにおけるコンテナの分布を調整する前に、システムは、現在のすべてのコンテナに対してチェックポイント(checkpoint)操作を実行し、現在のトレーニング反復順序のトレーニング情報を保存してもよい。
【0106】
コンテナの分布が調整された各計算ノードに基づいて、ロード(load)操作により、システムは、以前に保存されるトレーニング情報を取得し、次に、すべてのコンテナ内のサブモデルに対するトレーニングスレッドを起動して、各サブモデルのトレーニングを継続してもよい。なお、新しく作成されたコンテナ内のサブモデルの中間トレーニング変数は、当該サブモデルのモデルデータと同じである他のコンテナからコピーしてもよい。
【0107】
なお、本開示で述べた上記の内容は、実行主体としてシステムのみを例に、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法について説明したものである。しかし、実際には、当該システムは、複数の計算ノード、アナライザ、およびスケジューラから構成されてもよい。
【0108】
図2は、本開示にて提供されるシステム関係を示す概略図である。
【0109】
図2に示すように、各計算ノードが各サブモデルに対して分散トレーニングを行う過程において、各計算ノードはトレーニング統計情報を共有ストレージシステムに一括書き込み続ける。
【0110】
各計算ノードに含まれるコンテナの分布を調整する前に、アナライザは、モデルトレーニングタスクを実行するときの各計算ノードの負荷データを取得するために、共有ストレージシステムからトレーニング統計情報を読み出し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定してもよい。
【0111】
アナライザが各計算ノードの負荷データと各コンテナに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定した後に、スケジューラは、各計算ノードにおけるコンテナの分布を調整してもよい。
【0112】
図3は、本開示にて提供されるコンテナ調整を示す概略図である。
【0113】
図3に示すように、スケジューラは、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整してもよい。具体的な調整方法については、ステップS110~ステップS112で詳細に説明した。
【0114】
スケジューラがコンテナの分布を調整した後、コンテナの分布が調整された各計算ノードに基づいて、各計算ノードは対象モデルの学習タスクを継続して実行してもよい。
【0115】
上記の方法から分かるように、モデルトレーニングタスクを実行するとき、まず対象モデルを複数のサブモデルに分割し、次に各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各前記コンテナにそれぞれ配置して、各計算ノードを通じてトレーニングタスクを完了する。モデルトレーニングの過程において、本開示は、各計算ノードの負荷データを測定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、各前記ノードにおける各コンテナの分布を動的に調整し、これにより、各計算ノード間の負荷分散に有利となり、モデルレーニングの効率をさらに向上させることができる。
【0116】
以上が、本開示の1つまたは複数の実施形態にて提供される方法であり、同じ考えに基づいて、本開示は図4に示すような、対応するインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置をさらに提供する。
【0117】
図4は、本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置を示す概略図であり、前記装置は、
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュール400と、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュール402であって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュール402と、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュール404と、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュール406と、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュール408と、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュール410と、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュール412と、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュール414と、を備える。
【0118】
オプションで、前記分割モジュール402は、具体的に、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定し、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するように構成される。
【0119】
オプションで、前記第2の取得モジュール408は、具体的に、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定し、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するように構成される。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0120】
オプションで、前記第2の決定モジュール410は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される。
【0121】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナが配置された計算ノードを第1のノードとして決定し、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定し、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
【0122】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するように構成される。
【0123】
オプションで、前記第2の決定モジュール410は、具体的に、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定し、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するように構成される。
【0124】
オプションで、前記第2の決定モジュール410は、さらに、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定し、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定し、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するように構成される。
【0125】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナが配置された計算ノードを決定し、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするように構成され、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである。
前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するように構成される。
【0126】
オプションで、前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される。
【0127】
本開示はコンピュータ可読記憶媒体をさらに提供し、当該コンピュータ可読記憶媒体はコンピュータプログラムを記憶しており、コンピュータプログラムは上記図1にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実行するために用いられる。
【0128】
本開示は図5に示す電子デバイスをさらに提供する。図5に示すように、ハードウェアレベルでは、当該電子デバイスは、プロセッサ、内部バス、ネットワークインタフェース、内部メモリ、および不揮発性メモリを含み、もちろん、他の動作に必要なハードウェアも含み得る。プロセッサは、不揮発性メモリから対応するコンピュータプログラムを内部メモリに読み込んで実行し、上記の図1で説明したインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実施する。
【0129】
もちろん、ソフトウェアによる実現の他に、本開示は、論理デバイスやハードウェアとソフトウェアの組み合わせなど、他の実現方式を排除するものではなく、つまり、以下の処理プロセスの実行主体は、各の論理ユニットに限定されず、ハードウェアや論理デバイスであってもよい。
【0130】
1990年代には、ある技術の改良は、ハードウェアの改良(ダイオード、トランジスタ、スイッチなどの回路構造の改良など)とソフトウェアの改良(方法フローの改良)に明確に区別することができる。しかし、技術の発展に伴い、現在の方法フローの改良の多くは、ハードウェア回路構造に対する直接的な改良と見なすことができるようになった。設計者は、改良された方法フローをハードウェア回路にプログラミングすることで、対応するハードウェア回路構造を得ることがほとんどである。従って、方法フローの改良がハードウェア物理モジュールにより実現できないとは言い切れない。例えば、プログラマブルロジックデバイス(Programmable Logic Device、PLD)(例えばフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA))はこのような集積回路であり、その論理機能がデバイスのユーザーによるプログラミングによって決定される。チップメーカーが専用の集積回路チップを設計・製造する代わりに、設計者がプログラミングしてデジタルシステムを1枚のPLD上に「集積」する。そして、現在では、集積回路チップを手作りする代わりに、このプログラミングは「論理コンパイラ(logic compiler)」というソフトウェアを使って実現されることがほとんどであり、これは、プログラムを書くときに使うソフトウェアコンパイラと類似し、前のオリジナルコードをコンパイルするためには、特定のプログラミング言語で書く必要があり、これはハードウェア記述言語(Hardware Description Language、HDL)と呼ばれ、HDLは1種類だけではなく、ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)など、多くの種類があり、現在最もよく使われているのはVHDL(Very-High-Speed Integrated Circuit Hardware Description Language)とVerilogである。方法フローを、上記のハードウェア記述言語のいくつかでちょっと論理的にプログラミングして集積回路にプログラミングするだけで、論理的な方法フローを実現するハードウェア回路は簡単に得られることは、当業者には明らかであろう。
【0131】
コントローラは、任意の適切な方法で実現されてもよく、例えば、コントローラはマイクロプロセッサまたはプロセッサと、当該(マイクロ)プロセッサによって実行可能なコンピュータ可読プログラムコード(例えば、ソフトウェアまたはファームウェア)を記憶するコンピュータ可読記憶媒体と、論理ゲート、スイッチ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、プログラマブルロジックコントローラおよび埋め込みマイクロコントローラの形態を採用してもよく、コントローラの例として、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、Silicone Labs C8051F320などのマイクロコントローラを含むが、これらに限定されず、メモリコントローラはさらに、メモリの制御ロジックの一部として実現されることも可能である。また、純粋なコンピュータ可読プログラムコードでコントローラを実現することに加えて、方法ステップを論理的にプログラミングすることで、コントローラに、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブルロジックコントローラおよび埋め込みマイクロコントローラなどの形態で同じ機能を実行させることも完全に可能であることは、当業者には明らかであろう。従って、このようなコントローラを、ハードウェアコンポーネントとみなしてもよく、様々な機能を実現するためのその中に含まれる装置も、ハードウェアコンポーネント内の構造とみなしてもよい。または、さらに、様々な機能を実現するための装置を、方法を実現するソフトウェアモジュールであってもよいし、ハードウェアコンポーネント内の構造であってもよいと、みなしてもよい。
【0132】
上記実施形態で説明したシステム、装置、モジュールまたはユニットは、具体的に、コンピュータチップ、エンティティ、または何らかの機能を有する製品によって実現されてもよい。典型的な実現デバイスはコンピュータである。具体的に、コンピュータは例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレット、ウェアラブルデバイス、またはこれらのデバイスの任意のいくつかの組み合わせであってもよい。
【0133】
なお、説明の便宜上、上記の装置を説明するときに機能によって様々なユニットに分けてそれぞれ説明する。もちろん、本開示を実施する際に、各ユニットの機能を同一または複数のソフトウェアおよび/またはハードウェアで実現することも可能である。
【0134】
当業者であれば分かるように、本開示の実施形態が、方法、システム、またはコンピュータプログラム製品として提供されてもよい。従って、本開示は、ハードウェアだけからなる実施形態、ソフトウェアだけからなる実施形態、またはソフトウェアとハードウェアを組み合わせた実施形態なる形態を用いてもよい。さらに、本開示は、コンピュータで使用可能なプログラムコードを含む1つまたは複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0135】
本開示は、本開示の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図における各フローおよび/またはブロック、並びにフローチャートおよび/またはブロック図におけるフローおよび/またはブロックの組み合わせは、コンピュータプログラム命令によって実現されてもよいことが理解されるべきである。これらのコンピュータプログラム命令は、マシンを生成するために、汎用コンピュータ、専用コンピュータ、埋め込みプロセッサ、または他のプログラム可能なデータ処理デバイスのプロセッサに提供されてもよく、それにより、コンピュータまたは他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令により、フローチャートの1つまたは複数のフロー、および/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現するための装置が生成される。
【0136】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理デバイスに特定の方法で作業するように指示することができるコンピュータ可読メモリに記憶されてもよく、その結果、当該コンピュータ可読メモリに記憶されている命令により、フローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現する命令装置を含む製品が生成される。
【0137】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理デバイスにロードしてもよく、それにより、一連の動作ステップがコンピュータまたは他のプログラム可能なデバイス上で実行されることで、コンピュータにより実施される処理が生成され、それにより、コンピュータまたは他のプログラム可能なデバイス上で実行される命令により、フローチャートの1つまたは複数のフロー、および/またはブロック図の1つまたは複数のブロック内で指定される機能を実現するためのステップが提供される。
【0138】
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)、入力/出力インタフェース、ネットワークインタフェース、およびメモリを含む。
【0139】
メモリは、コンピュータ可読記憶媒体のうちの揮発性メモリ、ランダムアクセスメモリ(RAM)および/または不揮発性メモリなどの形態を含み得、例えば、読み出し専用メモリ(ROM)またはフラッシュメモリ(flash RAM)である。メモリは、コンピュータ可読記憶媒体の一例である。
【0140】
コンピュータ可読記憶媒体は不揮発性および揮発性媒体、移動可能および非移動可能な媒体を含み、任意の方法または技術により情報記憶を実現し得る。情報はコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータであってもよい。コンピュータの記憶媒体は、相変化メモリ(Phase Change RAM、PRAM)、スタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラマブル読み出し専用メモリ(Electrically Erasable Programmable Read Only Memory、EEPROM)、フラッシュメモリ(flash Memory)または他のメモリ技術、コンパクトディスク読み出し専用メモリ(Compact Disc Read Only Memory、CD-ROM)、デジタル多用途ディスク(Digital Versatile Disc、DVD)または他の光学記憶、磁気カセットテープ、磁気テープ磁気ディスク記憶または他の磁気記憶デバイス、またはコンピューティングデバイスからアクセス可能な情報を記憶するために使用され得る任意の他の非伝送媒体を含むがそれらに限定されない。本明細書の定義によれば、コンピュータ可読記憶媒体は一時記憶コンピュータ可読記憶媒体(transitory Media)、例えば変調されたデータ信号およびキャリアを含まない。
【0141】
また、用語「含む」、「含有」またはそのいずれかの他の変形は、非排他的な含有を含むことを意図し、それにより一連の要素を含むプロセス、方法、物品またはデバイスはそれらの要素を含むだけでなく、また明確に列挙されていない他の要素も含み、またはこのようなプロセス、方法、物品またはデバイスの固有の要素も含む。より多くの制限がない場合、文「1つの…を含む」により限定された要素は、前記要素を含むプロセス、方法、物品またはデバイスにさらに他の同じ要素が存在することを排除するものではない。
【0142】
当業者であれば分かるように、本開示の実施形態が、方法、システム、またはコンピュータプログラム製品として提供されてもよい。従って、本開示は、ハードウェアだけからなる実施形態、ソフトウェアだけからなる実施形態、またはソフトウェアとハードウェアを組み合わせた実施形態なる形態を用いてもよい。さらに、本開示は、コンピュータで使用可能なプログラムコードを含む1つまたは複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0143】
本開示は、プログラムモジュールのようなコンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈で記述され得る。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本開示は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実施され得る。分散コンピューティング環境において、プログラムモジュールは、記憶デバイスを含むローカルおよびリモートコンピュータ記憶媒体に配置され得る。
【0144】
本開示における各実施形態はいずれも漸進の方式で説明され、各実施形態の間の同じまたは類似する部分は互いに参照すればよく、各実施形態の重点的に説明されたのは他の実施形態との相違点である。特に、システムの実施形態に対して、それは基本的に方法の実施形態と類似するため、簡単に説明し、関連する部分は方法の実施形態の一部の説明を参照すればよい。
【0145】
上記は、本開示の実施形態にすぎず、本開示を限定するために使用されるものではない。当業者にとって、本開示は、様々な変更および変化があり得る。本開示の趣旨と原理から逸脱せず行った任意の修正、同等な置換、改善など、いずれも本開示の特許請求の範囲に含まれるものとするべきである。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-08-02
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野に関し、特に、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニングの方法、装置、記憶媒体および電子デバイスに関する。
【背景技術】
【0002】
人工知能の発展に伴い、機械学習の応用分野は広さから深さへと発展し、モデルトレーニングと応用への要求が高まっている。モデルサイズとトレーニングデータ量の大幅な増加に伴い、モデルのトレーニング効率を向上させるために、コンテナに基づく分散トレーニングが広く利用されるようになっている。
【0003】
具体的に、モデルトレーニングを行う一般的な方法は、サーバがモデルに基づいて分割されたサブモデルを1つまたは複数のコンテナに配置し、複数のコンテナが物理マシン上の計算ノード(GPUなど)の計算リソースを共有してモデルトレーニングを行うことである。しかし、モデルトレーニングの過程において、各計算ノードの計算リソースが動的に変化する可能性があり、また、複数のコンテナが1台の物理マシンを共有しているため、コンテナの性能は他のコンテナの影響を受け、分散トレーニングの効率が低下する可能性がある。
【0004】
そのため、計算ノード内のサブモデルのトレーニング時間を近づけて、計算ノード間の負荷不均衡を軽減させるように、モデルをトレーニングするときに計算ノードに配置されるコンテナの分布をいかに動的に調整するかが喫緊の課題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は先行技術の上記問題点を解決するためのインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法、装置、記憶媒体および電子デバイスを提供する。
【課題を解決するための手段】
【0006】
本開示に用いられる技術的解決手段は、以下のとおりである。
【0007】
本開示はインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を提供し、前記方法は、
サンプルデータおよび対象モデルを取得するステップと、
前記対象モデルを分割して複数のサブモデルを得るステップであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、得るステップと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するステップと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするステップと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するステップと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するステップと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するステップと、を含む。
【0008】
オプションで、前記対象モデルを分割して複数の前記サブモデルを得るステップは、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定するステップと、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するステップと、を含む。
【0009】
オプションで、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップは、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定するステップと、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップと、を含む。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0010】
オプションで、前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得るステップと、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとするステップと、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップと、を含む。
【0011】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを第1のノードとして決定するステップと、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定するステップと、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップと、を含む。
【0012】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップを含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するステップを含む。
【0013】
オプションで、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップは、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得るステップと、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定するステップと、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを、作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するステップと、を含む。
【0014】
オプションで、前記方法は、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定するステップと、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定するステップと、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定するステップと、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するステップと、をさらに含む。
【0015】
オプションで、前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを決定するステップと、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするステップであって、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである、ステップと、を含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するステップを含む。
【0016】
オプションで、前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップ含む。
【0017】
本開示はインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置を提供し、前記装置は、
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュールと、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュールであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュールと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュールと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュールと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュールと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュールと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュールと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュールと、を備える。
【0018】
オプションで、前記分割モジュールは、具体的に、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定し、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するように構成される。
【0019】
オプションで、前記第2の取得モジュールは、具体的に、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定し、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するように構成される。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0020】
オプションで、前記第2の決定モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される。
【0021】
オプションで、前記第2の決定モジュールは、具体的に、
前記対象コンテナが配置された計算ノードを第1のノードとして決定し、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定し、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
【0022】
オプションで、前記第2の決定モジュールは、具体的に、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するように構成される。
【0023】
オプションで、前記第2の決定モジュールは、具体的に、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定し、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するように構成される。
【0024】
オプションで、前記第2の決定モジュールは、さらに、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定し、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定し、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するように構成される。
【0025】
オプションで、前記第2の決定モジュールは、具体的に、
前記対象コンテナが配置された計算ノードを決定し、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするように構成され、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである。
前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するように構成される。
【0026】
オプションで、前記調整モジュールは、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される。
【0027】
本開示はコンピュータ可読記憶媒体を提供し、前記コンピュータ可読記憶媒体はコンピュータプログラムを記憶しており、前記コンピュータプログラムがプロセッサによって実行されると、上記インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法が実施される。
【0028】
本開示は電子デバイスを提供し、前記電子デバイスは、メモリと、プロセッサと、前記メモリに記憶され、前記プロセッサ上で実行可能なコンピュータプログラムとを含み、前記プロセッサが前記コンピュータプログラムを実行すると、上記インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実施する。
【発明の効果】
【0029】
本開示で用いられる上記技術的解決手段の少なくとも1つは、以下の有益な効果を達成することができる。
【0030】
本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法は、対象モデルを分割して各サブモデルを得、各サブモデルに基づいて、各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各コンテナにそれぞれ配置し、サンプルデータを用いてモデルトレーニングタスクを実行して、各コンテナ内に配置されたサブモデルをトレーニングし、各計算ノードの負荷データと各コンテナに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整し、対象モデルのトレーニングタスクの実行を継続する。
【0031】
上記方法から分かるように、モデルトレーニングタスクを実行するとき、まず対象モデルを複数のサブモデルに分割し、次に各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各前記コンテナにそれぞれ配置して、各計算ノードを通じてトレーニングタスクを完了する。モデルトレーニングの過程において、本開示は、各計算ノードの負荷データを測定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、各前記ノードにおける各コンテナの分布を動的に調整し、これにより、各計算ノード間の負荷分散に有利となり、モデルレーニングの効率をさらに向上させることができる。
【図面の簡単な説明】
【0032】
ここで説明される添付図面は、本開示の理解を深めるために用いられ、本開示の一部を構成し、本開示の例示的な実施形態およびその説明は、本開示を説明するために用いられ、本開示の不当な限定を構成するものではない。
【0033】
図1】本開示の実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法のフローを示す概略図である。
図2】本開示の実施形態にて提供されるシステム関係を示す概略図である。
図3】本開示の実施形態にて提供されるコンテナ調整を示す概略図である。
図4】本開示の実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置の構成を示す概略図である。
図5】本開示の実施形態にて提供される電子デバイスを示す概略図である。
【発明を実施するための形態】
【0034】
本開示の目的、技術的解決手段および利点をより明確にするために、以下、本開示の特定の実施形態および対応する添付図面と併せて、本開示の技術的解決手段を明確かつ完全に説明する。明らかに、説明された実施形態は、本開示の実施形態の一部に過ぎず、そのすべてではない。本開示の実施形態に基づいて、当業者が創作的な労力を要することなく得られる他のすべての実施形態は、いずれも本開示の保護範囲に属する。
【0035】
以下、添付図面と併せて、本開示の各実施形態にて提供される技術的解決手段を詳細に説明する。
【0036】
図1は、本開示実施形態にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法のフローを示す概略図であり、以下のステップを含む。
【0037】
S100において、サンプルデータおよび対象モデルを取得する。
【0038】
S102において、前記対象モデルを分割して複数のサブモデルを得、各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む。
【0039】
モデルサイズとトレーニングデータ量の大幅な増加に伴い、大規模モデルは1台の物理マシン上で完全に配置できない可能性があり、1枚のGPUカードのメモリ容量も大規模モデルトレーニングの要求を満たすことができない。本開示は、モデルのトレーニング効率を向上させるために、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を提供し、マルチマシン・マルチGPU方式を用いてモデルの分散トレーニングを実行する。
【0040】
本開示の実行主体は、システムであってもよく、ノートパソコン、デスクトップパソコンなどの電子デバイスであってもよく、モデルトレーニングタスクを実行するためのシステム(当該システムは、複数の端末デバイスからなるデバイスクラスタで構成されてもよい)であってもよい。説明の便宜上、以下、実行主体としてシステムのみを例に、本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法について説明する。
【0041】
システムが、サンプルデータおよび対象モデルを取得し、対象モデルを分割して複数のサブモデルを得てもよく、ここで、各サブモデルは、対象モデルにおけるネットワーク層の一部を含む。
【0042】
本開示では、システムが対象モデルの分割を実行できる様々な方法がある。
【0043】
具体的に、システムは、モデルトレーニングタスクを実行するときの対象モデルの演算時間を、対象モデルの演算時間として決定してもよい。システムは、決定された対象モデルの演算時間に基づいて、モデルのトレーニングタスクを実行するときの各サブモデルの演算時間が近いことを調整目標として、対象モデルに含まれる異なるネットワーク層を分割してもよい。
【0044】
例えば、対象モデルに含まれるネットワーク層が30層であると仮定すると、システムは、対象モデルの演算時間に従って分割を行い、分割後の2つのサブモデルを得、そのうちの1つのサブモデルには対象モデルの最初の10層のネットワーク層が含まれ、もう1つのサブモデルには対象モデルの最後の20層のネットワーク層が含まれるようにしてもよい。この場合、システムは、この2つのサブモデルのトレーニングタスクを実行するとき、2つのサブモデルの演算時間長が近い、すなわち、この2つのサブモデルの演算時間の差が所定の範囲内にある。
【0045】
もちろん、システムは、対象モデルに含まれるネットワーク層の数に基づいて、対象モデルを直接分割してもよい。対象モデルに含まれるネットワーク層が30層であると仮定すると、システムは、対象モデルのネットワーク層の数を均等に分け、分割された2つのサブモデルのうち、1つのサブモデルには対象モデルの最初の15層のネットワーク層が含まれ、もう1つのサブモデルには対象モデルの最後の15層のネットワーク層が含まれるようにしてもよい。本開示は、モデルを分割する方法を限定しない。
【0046】
S104において、前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置する。
【0047】
システムは、複数のサブモデルに基づいて、複数のサブモデルを配置するための計算ノードを決定し、これらの計算ノード上に複数のコンテナを作成して、複数のサブモデルを前記複数のコンテナにそれぞれデ配置してもよい。
【0048】
例えば、現在、5台の物理マシンがモデルトレーニングタスクを共同で完了し、各物理マシン上に2つの計算ノード(例えば、GPU)があると仮定すると、対象モデルを20個のサブモデルに分割した後、システムは、各計算ノード上に合計20個のコンテナを作成して、分割によって得られた20個のサブモデルをそれぞれ20個のコンテナに配置してもよい。
【0049】
S106において、前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された複数のサブモデルをトレーニングする。
【0050】
システムは、サンプルデータを用いてモデルトレーニングタスクを実行して、各コンテナ内に配置されたサブモデルをトレーニングしてもよい。
【0051】
具体的に、各サブモデルに対してモデルトレーニングを行うとき、システムは、ログ収集フレームワークを用いて、各サブモデルのトレーニング過程における関連データを収集してもよく、関連データは、各サブモデルがトレーニング過程で生成したすべてのデータが含まれ、各サブモデルのコンテナ上での計算および実行状況を反映するために用いられる。
【0052】
具体的に、システムは、ロギング(Logging)方式を用いて関連データを収集してもよい。各サブモデルがトレーニングを行うとき、システムは、モデル計算の開始と終了、メモリアクセスの開始と終了などの時点をトレーニング統計情報としてログ出力してもよい。
【0053】
関連データからトレーニング統計情報をフィルタリングするために、ログを出力するとき、システムは、コンテナアドレス情報やスレッド番号などのトレーニングスレッドを一意に識別できる情報をログコンテンツに追加してもよく、また、container-adaptive-adjustなど、他のログコンテンツと区別するキーワードをログコンテンツに追加してもよい。
【0054】
各サブモデルに対してモデルのトレーニングを行うとき、システムは新たに生成されたログを連続的にスキャンしてもよい。開始時点のログがスキャンされた場合、システムは今回のトレーニング過程におけるサブモデルの実行(計算、ストレージアクセスなど)時間とスレッド番号などの一意の識別情報を記録し、その後、終了時点のログがスキャンされるまでスキャンを継続し、今回のトレーニング過程の実行時間を計算してもよい。
【0055】
システムは、キーワードに基づいてモデルトレーニングのために生成された対象ログをフィルタリングし、対象ログに基づいてサブモデルの実行開始時刻および終了時刻を決定し、対象ログに記録されたサブモデルの実行時間およびスレッド番号などの情報を、サブモデルの対応するコンテナに対応するトレーニング統計情報として共有ストレージシステムに送信して記憶してもよい。
【0056】
具体的に、モデルトレーニングタスクを実行する各計算ノードに対して、各計算ノードはフィルタリングされた対象ログを通じて、各サブモデルのトレーニング統計情報を取得する。トレーニング統計情報の数が所定の閾値を超えていない場合、システムはトレーニング統計情報の数が所定の閾値を超えるまでログをスキャンし続けてもよい。このとき、システムはトレーニング統計情報を所定の共有ストレージシステムに一括送信する。
【0057】
なお、各計算ノードがトレーニング統計情報を共有ストレージシステムに一括送信した後、システムは、各計算ノードが保有するトレーニング統計情報を削除し、分散トレーニングが終了するまで各コンテナに対応するトレーニング統計情報を記録し続けてもよい。
【0058】
もちろん、システムは一括送信時間を予め設定してもよく、システムが前回トレーニング統計情報を共有ストレージシステムに一括送信した時間が予め設定された送信時間を超えた場合、トレーニング統計情報を共有ストレージシステムに一括送信してもよい。例えば、予め設定された送信時間が15分である場合、システムは、各サブモデルのトレーニング過程において、15分ごとにトレーニング統計情報を共有ストレージシステムに一括送信してもよい。
【0059】
すなわち、共有ストレージシステムに記憶された各トレーニング統計情報は、モデルトレーニングタスクを実行するときに各計算ノードによって生成された対象ログに基づいて決定され、対象ログは、予め定められた指定キーワードに従って各計算ノードによって生成されたログからフィルタリングされ、トレーニング統計情報は、特定数を蓄積した後、または予め設定された時間に達した後、共有ストレージシステムに書き込まれ、各計算ノードから削除される。
【0060】
S108において、モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定する。
【0061】
システムは、モデルトレーニングタスクを実行するときの各計算ノードの負荷データを取得し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定してもよい。
【0062】
その後、システムは、各コンテナに対応する演算時間と各計算ノードの負荷データに基づいてコンテナの動作状態を分析し、コンテナの分布を調整してもよい。
【0063】
具体的に、システムは、所定の共有ストレージシステムから、各コンテナに対応するトレーニング統計情報を読み出してもよい。各コンテナについて、システムは、トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定してもよい。
【0064】
モデルトレーニングの過程において、システムはトレーニング統計情報を共有ストレージシステムに継続的に書き込み、分散トレーニングへの影響を低減するために、システムが共有ストレージシステムからシステムが各コンテナに対応するトレーニング統計情報を読み出してコンテナの状態を分析するとき、各サブモデルの前回のトレーニング時に生成されたトレーニング統計情報を取得してもよい。
【0065】
つまり、システムがコンテナの動作状態を分析するときに使用するデータに対応するトレーニング反復順序は、現在のモデルトレーニングのトレーニング反復順序より1つ遅れている。例えば、現在のモデルトレーニングのトレーニング反復順序がiであると仮定すると、システムが共有ストレージシステムから読み出したトレーニング統計情報に対応するトレーニング反復順序はi-1である。
【0066】
なお、共有ストレージシステムの性能を向上させるために、システムは、同じ反復順序に対応するトレーニング統計情報が連続的に格納されるように、トレーニング反復順序もキーワードの1つとして共有ストレージシステムに格納してもよい。
【0067】
S110において、前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定する。
【0068】
S112において、前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整する。
【0069】
各計算ノードの負荷データと各コンテナの対応する演算時間を決定した後、システムはコンテナの分布を調整する必要がある計算ノードを対象ノードとして決定してもよい。
【0070】
具体的に、システムは、複数のコンテナのそれぞれに対応する演算時間の大きい順に、コンテナをソートして第1のソート結果を得、第1のソート結果において、所定の順位より前にある1つまたは複数のコンテナを1つまたは複数の対象コンテナとしてもよい。
システムは、各コンテナに対応する演算時間で各コンテナの動作状態を反映し、その後、各コンテナに対応する演算時間に基づいてコンテナの分布を調整する必要がある計算ノードを決定することができる。
【0071】
例えば、所定の順位の具体的な値を5であると仮定すると、システムは、各計算ノードにおける各コンテナに対応する演算時間の大きい順に、第1のソート結果を得、そしてソート結果における最初の5つのコンテナを対象コンテナとしてもよい。
【0072】
もちろん、システムは他の方法で対象コンテナを決定してもよい。
【0073】
例えば、システムは各計算ノードの負荷情報を取得し、各計算ノードの負荷情報に基づいて、計算ノードにおけるGPU使用率が最も低い計算ノードを決定し、当該計算ノードのGPU使用率が所定の閾値よりも低い場合、当該計算ノードにおけるI/O負荷が最も高いコンテナを対象コンテナとしてもよい。
【0074】
対象コンテナを決定した後、システムは対象コンテナと各計算ノードの負荷データに基づいて、ココンテナの分布を調整する必要がある計算ノードを決定してもよい。
【0075】
具体的に、システムは、対象コンテナが配置された計算ノードを第1のノードとして決定し、第1のノードの負荷データに基づいて、第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定してもよい。
【0076】
システムは、第1のノードおよび第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、第1のノードにおける対象コンテナを第2のノードに移行させることができる。
【0077】
ここで、第1の設定閾値は、予め設定されてもよく、第1のノード以外の計算ノードの負荷の平均値であってもよい。
【0078】
例えば、システムは、第1のノードの負荷データに基づいて、第1のノードの負荷値が20である(負荷値は、負荷の高さを表すために使用され、負荷値は負荷と正の相関がある)と決定し、第1の設定閾値が10である場合、または、この時点の各計算ノードの負荷の平均値が10である場合、システムは、第1のノード以外の計算ノードから、第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定する必要がある。
【0079】
具体的に、システムは、まず、第1のノードにおけるI/O負荷が最も高い対象コンテナを決定し、次に、第1のノード以外の計算ノードの負荷データに基づいて、I/O負荷が最も低い計算ノードを第2のノードとして決定し、このとき、第1のノードにおける対象コンテナを第2のノードに移行して、各計算ノードにおけるコンテナの分布を調整してもよい。
【0080】
もちろん、本開示では、コンテナの分布の調整が必要な計算ノードを他の方法によって決定してもよい。
【0081】
システムが、対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定した場合、システムは、各計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定してもよい。
【0082】
ここで、第2の設定閾値は、予め設定されてもよく、各コンテナの対応する演算時間に対応する平均値であってもよい。
【0083】
例えば、対象コンテナの数が1で、当該対象コンテナに対応する演算時間が20minで、当該対象コンテナ以外のコンテナに対応する演算時間が10minであると決定された場合、システムは、対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値(例えば、5min)を超えていると判定し、このとき、システムは、各計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードである対象ノードとして決定してもよい。
【0084】
この場合、システムが対象ノードを決定する方法は様々かある。
【0085】
具体的に、システムは、計算ノードの負荷データが小さい順に、対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定してもよい。
【0086】
上記の他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にないと判定された場合、システムは、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを判定してもよい。
【0087】
ここで、各計算ノードの負荷データは、GPU使用率、CPU使用率、メモリ使用率、およびストレージデバイスの帯域幅で表すことができる。
【0088】
例えば、システムは、各計算ノードのGPU使用率が小さい順に、対象コンテナが配置された計算ノード以外の計算ノードをソートしてもよい。
【0089】
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、GPU使用率の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にあるかどうかを判定する。
【0090】
第2のソート結果において、各ソートされた隣接する2つの計算ノードのGPU使用率の差が所定の範囲内にある場合、システムは、各計算ノードのGPU使用率が小さい順に、対象コンテナが配置された計算ノード以外の計算ノードを再度ソートして、第2のソート結果を再度得てもよい。
【0091】
このとき、ソートされた隣接する任意の2つの計算ノードについて、当該ソートされた隣接する2つの計算ノード間のGPU使用率の差が所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、GPU使用率の低いノードを作成すべき新しいコンテナを配置する計算ノードとする。
【0092】
このように、システムは、作成すべき新しいコンテナを配置する計算ノードが決定されるまで、計算ノードのGPU使用率、CPU使用率、メモリ使用率、ストレージデバイスの帯域幅などのデータサイズを順次比較してもよい。
【0093】
システムが、計算ノードのGPU使用率、CPU使用率、メモリ使用率、ストレージデバイスの帯域幅などのデータサイズを順次比較しても、作成すべき新しいコンテナを配置する計算ノードを決定していない場合、システムは、他の方法で作成すべき新しいコンテナを配置する計算ノードを決定してもよい。
【0094】
具体的に、システムが前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあると判定した場合、システムは、作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定してもよい。例えば、あるサブモデルの出力が別のサブモデルの入力である場合、この2つのサブモデルを関連サブモデルとすることができる。
【0095】
また、システムは、関連サブモデルが配置された計算ノードを、関連ノードとして決定しともよい。システムは、関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定してもよい。
【0096】
例えば、システムは、関連ノードとの間のネットワーク遅延が最も小さい計算ノードを、作成すべき新しいコンテナを配置する計算ノードとしてもよい。あるいは、システムは、関連ノードと他の計算ノードとの間のネットワーク遅延の平均値を決定し、関連ノードとのネットワーク遅延が当該平均値より低い他の計算ノードを、作成すべき新しいコンテナを配置する計算ノードとしてもよい。
【0097】
作成すべき新しいコンテナを配置する計算ノードが決定された後、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードに新しいコンテナを作成し、対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを新しいコンテナに配置してもよい。
【0098】
これに加えて、システムは、他の方法で対象ノードを決定してもよい。
【0099】
具体的に、システムは、まず対象コンテナが配置された計算ノードを決定し、対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとしてもよい。ここで、指定コンテナに配置されたサブモデルは、対象コンテナに配置されたサブモデルと同じである。
【0100】
対象ノードが決定された後、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象コンテナが配置された計算ノードにおける対象コンテナまたは指定コンテナを削除してもよい。
【0101】
すなわち、サブモデルのモデルパラメータが同じである複数のコンテナが同時に1つの物理ノード(例えば、同じ物理マシン)上に配置されている場合、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、その物理ノード上のコンテナを削除し、当該物理ノード上に配置されているサブモデルのモデルパラメータが同じである1つのコンテナだけを保持してもよい。
【0102】
なお、本開示では、対象ノードにおける各コンテナの分布を調整するとき、システムは、サブモデルが配置された計算ノードにおけるコンテナに対応する演算時間が近く、かつ、コンテナが配置された計算ノードの負荷が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整する。
【0103】
S114において、コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行する。
【0104】
システムが対象ノードにおける各コンテナの分布を調整した後、コンテナの分布が調整された各計算ノードに基づいて、システムは、サンプルデータを使用して、対象モデルのトレーニングタスクを引き続き実行してもよい。
【0105】
なお、対象ノードにおけるコンテナの分布を調整する前に、システムは、現在のすべてのコンテナに対してチェックポイント(checkpoint)操作を実行し、現在のトレーニング反復順序のトレーニング情報を保存してもよい。
【0106】
コンテナの分布が調整された各計算ノードに基づいて、ロード(load)操作により、システムは、以前に保存されるトレーニング情報を取得し、次に、すべてのコンテナ内のサブモデルに対するトレーニングスレッドを起動して、各サブモデルのトレーニングを継続してもよい。なお、新しく作成されたコンテナ内のサブモデルの中間トレーニング変数は、当該サブモデルのモデルデータと同じである他のコンテナからコピーしてもよい。
【0107】
なお、本開示で述べた上記の内容は、実行主体としてシステムのみを例に、インテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法について説明したものである。しかし、実際には、当該システムは、複数の計算ノード、アナライザ、およびスケジューラから構成されてもよい。
【0108】
図2は、本開示にて提供されるシステム関係を示す概略図である。
【0109】
図2に示すように、各計算ノードが各サブモデルに対して分散トレーニングを行う過程において、各計算ノードはトレーニング統計情報を共有ストレージシステムに一括書き込み続ける。
【0110】
各計算ノードに含まれるコンテナの分布を調整する前に、アナライザは、モデルトレーニングタスクを実行するときの各計算ノードの負荷データを取得するために、共有ストレージシステムからトレーニング統計情報を読み出し、各コンテナについて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定してもよい。
【0111】
アナライザが各計算ノードの負荷データと各コンテナに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定した後に、スケジューラは、各計算ノードにおけるコンテナの分布を調整してもよい。
【0112】
図3は、本開示にて提供されるコンテナ調整を示す概略図である。
【0113】
図3に示すように、スケジューラは、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、対象ノードにおける各コンテナの分布を調整してもよい。具体的な調整方法については、ステップS110~ステップS112で詳細に説明した。
【0114】
スケジューラがコンテナの分布を調整した後、コンテナの分布が調整された各計算ノードに基づいて、各計算ノードは対象モデルの学習タスクを継続して実行してもよい。
【0115】
上記の方法から分かるように、モデルトレーニングタスクを実行するとき、まず対象モデルを複数のサブモデルに分割し、次に各サブモデルを配置するための各計算ノードを決定し、各計算ノード上にコンテナを作成して、各サブモデルを各前記コンテナにそれぞれ配置して、各計算ノードを通じてトレーニングタスクを完了する。モデルトレーニングの過程において、本開示は、各計算ノードの負荷データを測定し、サブモデルが配置された各計算ノードにおけるコンテナに対応する演算時間が近いことを調整目標として、各前記ノードにおける各コンテナの分布を動的に調整し、これにより、各計算ノード間の負荷分散に有利となり、モデルレーニングの効率をさらに向上させることができる。
【0116】
以上が、本開示の1つまたは複数の実施形態にて提供される方法であり、同じ考えに基づいて、本開示は図4に示すような、対応するインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置をさらに提供する。
【0117】
図4は、本開示にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置を示す概略図であり、前記装置は、
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュール400と、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュール402であって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュール402と、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュール404と、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュール406と、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュール408と、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュール410と、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュール412と、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュール414と、を備える。
【0118】
オプションで、前記分割モジュール402は、具体的に、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定し、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するように構成される。
【0119】
オプションで、前記第2の取得モジュール408は、具体的に、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定し、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するように構成される。
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される。
【0120】
オプションで、前記第2の決定モジュール410は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとし、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するように構成される。
【0121】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナが配置された計算ノードを第1のノードとして決定し、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定し、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
【0122】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するように構成される。
前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するように構成される。
【0123】
オプションで、前記第2の決定モジュール410は、具体的に、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定し、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するように構成される。
【0124】
オプションで、前記第2の決定モジュール410は、さらに、
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定し、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定し、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定し、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するように構成される。
【0125】
オプションで、前記第2の決定モジュール410は、具体的に、
前記対象コンテナが配置された計算ノードを決定し、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするように構成され、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである。
前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するように構成される。
【0126】
オプションで、前記調整モジュール412は、具体的に、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される。
【0127】
本開示はコンピュータ可読記憶媒体をさらに提供し、当該コンピュータ可読記憶媒体はコンピュータプログラムを記憶しており、コンピュータプログラムは上記図1にて提供されるインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実行するために用いられる。
【0128】
本開示は図5に示す電子デバイスをさらに提供する。図5に示すように、ハードウェアレベルでは、当該電子デバイスは、プロセッサ、内部バス、ネットワークインタフェース、内部メモリ、および不揮発性メモリを含み、もちろん、他の動作に必要なハードウェアも含み得る。プロセッサは、不揮発性メモリから対応するコンピュータプログラムを内部メモリに読み込んで実行し、上記の図1で説明したインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法を実施する。
【0129】
もちろん、ソフトウェアによる実現の他に、本開示は、論理デバイスやハードウェアとソフトウェアの組み合わせなど、他の実現方式を排除するものではなく、つまり、以下の処理プロセスの実行主体は、各の論理ユニットに限定されず、ハードウェアや論理デバイスであってもよい。
【0130】
1990年代には、ある技術の改良は、ハードウェアの改良(ダイオード、トランジスタ、スイッチなどの回路構造の改良など)とソフトウェアの改良(方法フローの改良)に明確に区別することができる。しかし、技術の発展に伴い、現在の方法フローの改良の多くは、ハードウェア回路構造に対する直接的な改良と見なすことができるようになった。設計者は、改良された方法フローをハードウェア回路にプログラミングすることで、対応するハードウェア回路構造を得ることがほとんどである。従って、方法フローの改良がハードウェア物理モジュールにより実現できないとは言い切れない。例えば、プログラマブルロジックデバイス(Programmable Logic Device、PLD)(例えばフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA))はこのような集積回路であり、その論理機能がデバイスのユーザーによるプログラミングによって決定される。チップメーカーが専用の集積回路チップを設計・製造する代わりに、設計者がプログラミングしてデジタルシステムを1枚のPLD上に「集積」する。そして、現在では、集積回路チップを手作りする代わりに、このプログラミングは「論理コンパイラ(logic compiler)」というソフトウェアを使って実現されることがほとんどであり、これは、プログラムを書くときに使うソフトウェアコンパイラと類似し、前のオリジナルコードをコンパイルするためには、特定のプログラミング言語で書く必要があり、これはハードウェア記述言語(Hardware Description Language、HDL)と呼ばれ、HDLは1種類だけではなく、ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)など、多くの種類があり、現在最もよく使われているのはVHDL(Very-High-Speed Integrated Circuit Hardware Description Language)とVerilogである。方法フローを、上記のハードウェア記述言語のいくつかでちょっと論理的にプログラミングして集積回路にプログラミングするだけで、論理的な方法フローを実現するハードウェア回路は簡単に得られることは、当業者には明らかであろう。
【0131】
コントローラは、任意の適切な方法で実現されてもよく、例えば、コントローラはマイクロプロセッサまたはプロセッサと、当該(マイクロ)プロセッサによって実行可能なコンピュータ可読プログラムコード(例えば、ソフトウェアまたはファームウェア)を記憶するコンピュータ可読記憶媒体と、論理ゲート、スイッチ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、プログラマブルロジックコントローラおよび埋め込みマイクロコントローラの形態を採用してもよく、コントローラの例として、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、Silicone Labs C8051F320などのマイクロコントローラを含むが、これらに限定されず、メモリコントローラはさらに、メモリの制御ロジックの一部として実現されることも可能である。また、純粋なコンピュータ可読プログラムコードでコントローラを実現することに加えて、方法ステップを論理的にプログラミングすることで、コントローラに、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブルロジックコントローラおよび埋め込みマイクロコントローラなどの形態で同じ機能を実行させることも完全に可能であることは、当業者には明らかであろう。従って、このようなコントローラを、ハードウェアコンポーネントとみなしてもよく、様々な機能を実現するためのその中に含まれる装置も、ハードウェアコンポーネント内の構造とみなしてもよい。または、さらに、様々な機能を実現するための装置を、方法を実現するソフトウェアモジュールであってもよいし、ハードウェアコンポーネント内の構造であってもよいと、みなしてもよい。
【0132】
上記実施形態で説明したシステム、装置、モジュールまたはユニットは、具体的に、コンピュータチップ、エンティティ、または何らかの機能を有する製品によって実現されてもよい。典型的な実現デバイスはコンピュータである。具体的に、コンピュータは例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレット、ウェアラブルデバイス、またはこれらのデバイスの任意のいくつかの組み合わせであってもよい。
【0133】
なお、説明の便宜上、上記の装置を説明するときに機能によって様々なユニットに分けてそれぞれ説明する。もちろん、本開示を実施する際に、各ユニットの機能を同一または複数のソフトウェアおよび/またはハードウェアで実現することも可能である。
【0134】
当業者であれば分かるように、本開示の実施形態が、方法、システム、またはコンピュータプログラム製品として提供されてもよい。従って、本開示は、ハードウェアだけからなる実施形態、ソフトウェアだけからなる実施形態、またはソフトウェアとハードウェアを組み合わせた実施形態なる形態を用いてもよい。さらに、本開示は、コンピュータで使用可能なプログラムコードを含む1つまたは複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0135】
本開示は、本開示の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図における各フローおよび/またはブロック、並びにフローチャートおよび/またはブロック図におけるフローおよび/またはブロックの組み合わせは、コンピュータプログラム命令によって実現されてもよいことが理解されるべきである。これらのコンピュータプログラム命令は、マシンを生成するために、汎用コンピュータ、専用コンピュータ、埋め込みプロセッサ、または他のプログラム可能なデータ処理デバイスのプロセッサに提供されてもよく、それにより、コンピュータまたは他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令により、フローチャートの1つまたは複数のフロー、および/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現するための装置が生成される。
【0136】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理デバイスに特定の方法で作業するように指示することができるコンピュータ可読メモリに記憶されてもよく、その結果、当該コンピュータ可読メモリに記憶されている命令により、フローチャートの1つまたは複数のフローおよび/またはブロック図の1つまたは複数のブロックにおいて指定される機能を実現する命令装置を含む製品が生成される。
【0137】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理デバイスにロードしてもよく、それにより、一連の動作ステップがコンピュータまたは他のプログラム可能なデバイス上で実行されることで、コンピュータにより実施される処理が生成され、それにより、コンピュータまたは他のプログラム可能なデバイス上で実行される命令により、フローチャートの1つまたは複数のフロー、および/またはブロック図の1つまたは複数のブロック内で指定される機能を実現するためのステップが提供される。
【0138】
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)、入力/出力インタフェース、ネットワークインタフェース、およびメモリを含む。
【0139】
メモリは、コンピュータ可読記憶媒体のうちの揮発性メモリ、ランダムアクセスメモリ(RAM)および/または不揮発性メモリなどの形態を含み得、例えば、読み出し専用メモリ(ROM)またはフラッシュメモリ(flash RAM)である。メモリは、コンピュータ可読記憶媒体の一例である。
【0140】
コンピュータ可読記憶媒体は不揮発性および揮発性媒体、移動可能および非移動可能な媒体を含み、任意の方法または技術により情報記憶を実現し得る。情報はコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータであってもよい。コンピュータの記憶媒体は、相変化メモリ(Phase Change RAM、PRAM)、スタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラマブル読み出し専用メモリ(Electrically Erasable Programmable Read Only Memory、EEPROM)、フラッシュメモリ(flash Memory)または他のメモリ技術、コンパクトディスク読み出し専用メモリ(Compact Disc Read Only Memory、CD-ROM)、デジタル多用途ディスク(Digital Versatile Disc、DVD)または他の光学記憶、磁気カセットテープ、磁気テープ磁気ディスク記憶または他の磁気記憶デバイス、またはコンピューティングデバイスからアクセス可能な情報を記憶するために使用され得る任意の他の非伝送媒体を含むがそれらに限定されない。本明細書の定義によれば、コンピュータ可読記憶媒体は一時記憶コンピュータ可読記憶媒体(transitory Media)、例えば変調されたデータ信号およびキャリアを含まない。
【0141】
また、用語「含む」、「含有」またはそのいずれかの他の変形は、非排他的な含有を含むことを意図し、それにより一連の要素を含むプロセス、方法、物品またはデバイスはそれらの要素を含むだけでなく、また明確に列挙されていない他の要素も含み、またはこのようなプロセス、方法、物品またはデバイスの固有の要素も含む。より多くの制限がない場合、文「1つの…を含む」により限定された要素は、前記要素を含むプロセス、方法、物品またはデバイスにさらに他の同じ要素が存在することを排除するものではない。
【0142】
本開示は、プログラムモジュールのようなコンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈で記述され得る。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本開示は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実施され得る。分散コンピューティング環境において、プログラムモジュールは、記憶デバイスを含むローカルおよびリモートコンピュータ記憶媒体に配置され得る。
【0143】
本開示における各実施形態はいずれも漸進の方式で説明され、各実施形態の間の同じまたは類似する部分は互いに参照すればよく、各実施形態の重点的に説明されたのは他の実施形態との相違点である。特に、システムの実施形態に対して、それは基本的に方法の実施形態と類似するため、簡単に説明し、関連する部分は方法の実施形態の一部の説明を参照すればよい。
【0144】
上記は、本開示の実施形態にすぎず、本開示を限定するために使用されるものではない。当業者にとって、本開示は、様々な変更および変化があり得る。本開示の趣旨と原理から逸脱せず行った任意の修正、同等な置換、改善など、いずれも本開示の特許請求の範囲に含まれるものとするべきである。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
サンプルデータおよび対象モデルを取得するステップと、
前記対象モデルを分割して複数のサブモデルを得るステップであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、ステップと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するステップと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするステップと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得するステップと、
前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するステップと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するステップと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するステップと、を含む
ことを特徴とするインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング方法。
【請求項2】
前記対象モデルを分割して複数の前記サブモデルを得るステップは、
モデルトレーニングタスクを実行するときの前記対象モデルの演算時間を決定するステップと、
前記対象モデルの演算時間に基づいて、前記対象モデルに含まれるネットワーク層を分割して、前記複数のサブモデルを取得するステップと、を含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップは、
所定の共有ストレージシステムから、当該コンテナに対応するトレーニング統計情報を決定するステップと、
前記トレーニング統計情報に含まれる、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行する開始時刻と終了時刻に基づいて、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を決定するステップと、を含み、
前記共有ストレージシステムに記憶されたトレーニング統計情報は、モデルトレーニングタスクを実行するときに前記少なくとも1つの計算ノードの各計算ノードによって生成された対象ログに基づいて決定され、前記対象ログは、予め定められた指定キーワードに従って前記少なくとも1つの計算ノードの各計算ノードによって生成されたログからフィルタリングされ、前記トレーニング統計情報は、特定数を蓄積した後に前記共有ストレージシステムに書き込まれ、前記少なくとも1つの計算ノードから削除される、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記複数のコンテナのそれぞれに対応する演算時間の大きい順に、前記複数のコンテナをソートして第1のソート結果を得るステップと、
前記第1のソート結果において、所定の順位より前にあるコンテナを対象コンテナとするステップと、
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップと、を含む
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを第1のノードとして決定するステップと、
前記第1のノードの負荷データに基づいて、前記第1のノードの負荷が第1の設定閾値より高いと判定された場合、他の計算ノードから、前記第1のノードにおけるコンテナの一部を配置するための計算ノードを第2のノードとして決定するステップと、
前記第1のノードおよび前記第2のノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップと、を含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナに対応する演算時間と、他のコンテナに対応する演算時間との差が第2の設定閾値を超えると判定された場合、前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップを含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードに新しいコンテナを作成し、前記対象コンテナに配置されたサブモデルのモデルデータのコピーを作成し、コピーによって得られたサブモデルを前記新しいコンテナに配置するステップを含む
ことを特徴とする請求項4に記載の方法。
【請求項7】
前記少なくとも1つの計算ノードの負荷データに基づいて、作成すべき新しいコンテナを配置する計算ノードを、コンテナの分布を調整する必要がある計算ノードとして決定するステップは、
前記少なくとも1つの計算ノードの負荷データが小さい順に、前記対象コンテナが配置された計算ノード以外の計算ノードをソートして第2のソート結果を得るステップと、
前記第2のソート結果に従って、ソートされた隣接する2つの計算ノード間の負荷差が所定の範囲内にあるかどうかを順次判定するステップと、
前記他の計算ノードのうち、ソートされた隣接する任意の2つの計算ノードについて、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にないと判定された場合、当該ソートされた隣接する2つの計算ノードのうち、負荷の低いノードを、作成すべき新しいコンテナを配置する計算ノードとし、
当該ソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあると判定された場合、前記第2のソート結果におけるすべての計算ノードがトラバースされるまで、または作成すべき新しいコンテナを配置する計算ノードが決定されるまで、次のソートされた隣接する2つの計算ノード間の負荷差が前記所定の範囲内にあるかどうかを判定するステップと、を含む
ことを特徴とする請求項6に記載の方法。
【請求項8】
前記第2のソート結果におけるソートされた隣接する2つの計算ノード間の各負荷差が前記所定の範囲内にあると判定された場合、前記作成すべき新しいコンテナに対応するサブモデルとネットワーク層の依存関係を有するサブモデルを、関連サブモデルとして決定するステップと、
前記関連サブモデルが配置された計算ノードを、関連ノードとして決定するステップと、
前記関連ノードと、前記関連ノード以外の他の計算ノードとの間のネットワーク遅延を測定するステップと、
測定によって得られたネットワーク遅延に基づいて、前記関連ノード以外の計算ノードから、作成すべき新しいコンテナを配置する計算ノードを決定するステップと、をさらに含む
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記対象コンテナと前記少なくとも1つの計算ノードの負荷データとに基づいて、コンテナの分布を調整する必要がある計算ノードを決定するステップは、
前記対象コンテナが配置された計算ノードを決定するステップと、
前記対象コンテナが配置された計算ノードに指定コンテナが配置されたと判定された場合、前記対象コンテナが配置された計算ノードを、コンテナの分布を調整する必要がある計算ノードとするステップであって、前記指定コンテナに配置されたサブモデルは、前記対象コンテナに配置されたサブモデルと同じである、ステップと、を含み、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象コンテナが配置された計算ノードにおける前記対象コンテナまたは前記指定コンテナを削除するステップを含む
ことを特徴とする請求項4に記載の方法。
【請求項10】
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップは、
前記複数のコンテナのそれぞれに対応する演算時間が近く、かつ、前記少なくとも1つの計算ノードのそれぞれの負荷が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するステップを含む
ことを特徴とする請求項1~9のいずれか1項に記載の方法。
【請求項11】
サンプルデータおよび対象モデルを取得するように構成される第1の取得モジュールと、
前記対象モデルを分割して複数のサブモデルを得るように構成される分割モジュールであって、前記複数のサブモデルの各サブモデルは、前記対象モデルにおけるネットワーク層の一部を含む、分割モジュールと、
前記複数のサブモデルに基づいて、前記複数のサブモデルを配置するための少なくとも1つの計算ノードを決定し、前記少なくとも1つの計算ノード上に複数のコンテナを作成して、前記複数のサブモデルを前記複数のコンテナにそれぞれ配置するように構成される第1の決定モジュールと、
前記サンプルデータを用いてモデルトレーニングタスクを実行して、前記複数のコンテナ内に配置された前記複数のサブモデルをトレーニングするように構成される第1のトレーニングモジュールと、
モデルトレーニングタスクを実行するときの前記少なくとも1つの計算ノードの負荷データを取得し、前記複数のコンテナの各々について、当該コンテナ内に配置されたサブモデルのトレーニングタスクを実行するときの当該サブモデルの演算時間を、当該コンテナに対応する演算時間として決定するように構成される第2の取得モジュールと、
前記少なくとも1つの計算ノードの負荷データと、前記複数のコンテナのそれぞれに対応する演算時間とに基づいて、コンテナの分布を調整する必要がある計算ノードを対象ノードとして決定するように構成される第2の決定モジュールと、
前記複数のコンテナのそれぞれに対応する演算時間が近いことを調整目標として、前記対象ノードにおけるコンテナの分布を調整するように構成される調整モジュールと、
コンテナの分布が調整された各計算ノードに基づいて、前記対象モデルのトレーニングタスクを実行するように構成される第2のトレーニングモジュールと、を備える
ことを特徴とするインテリジェントコンピューティング向けのコンテナスケジューリングのための分散トレーニング装置。
【請求項12】
コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1~10のいずれか1項に記載の方法が実施される、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項13】
メモリと、プロセッサと、前記メモリに記憶され、前記プロセッサ上で実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサが前記コンピュータプログラムを実行すると、請求項1~10のいずれか1項に記載の方法を実施する、
ことを特徴とする電子デバイス。
【国際調査報告】