(57)【特許請求の範囲】
【請求項１】
ジョブサーバを備えるコンピュータシステムにおいて複数の機械学習モデルをトレーニングするための方法であって、前記ジョブサーバはネットワークを介して複数の計算ノードと通信し、各機械学習モデルはパラメータのセットを含み、前記方法は、
前記ジョブサーバは、前記機械学習モデルをトレーニングするための複数のトレーニングジョブを受信することと、
前記ジョブサーバは、前記トレーニングジョブの現在の要件と前記計算ノードの現在の状態に基づいて、前記トレーニングジョブを１つ以上の計算ノードからなるトレーニンググループに割り当てることであって、前記ジョブサーバは、どの計算ノードがどのトレーニンググループに含まれるかを決定することと、
前記トレーニンググループが、前記トレーニンググループに割り当てられたトレーニングジョブを実行することと、を含み、
前記実行は、
前記機械学習モデルの前記パラメータの値を更新することと、及び
２つ以上の計算ノードを含む少なくとも１つのトレーニンググループについて、トレーニンググループの計算ノードの間で前記パラメータの更新値を交換して、交換された更新値を使用して前記トレーニングジョブを進めることとを含む、前記方法。
【請求項２】
前記コンピュータシステムは、マスターワーカーアーキテクチャを有し、前記ジョブサーバは、各トレーニンググループのマスタとして動作し、各トレーニンググループは、前記ジョブサーバのワーカーとして動作する、
請求項１に記載の方法。
【請求項３】
２つ以上の計算ノードを有する少なくとも１つのトレーニンググループ内にもマスターワーカーアーキテクチャを備え、前記トレーニンググループ中の１つの計算ノードは、前記トレーニンググループ中の残りの計算ノードのマスタとして動作し、前記残りの計算ノードは、この１つの計算ノードのワーカーとして動作する、
請求項２に記載の方法。
【請求項４】
２つ以上の計算ノードを有する少なくとも１つのトレーニンググループ内には、ピアツーピアアーキテクチャを有する、
請求項２に記載の方法。
【請求項５】
２つ以上の計算ノードを有する少なくとも１つのトレーニンググループにおいて、前記トレーニングジョブは、前記パラメータの初期値で開始し、前記パラメータの最終値で終了し、前記トレーニンググループ中の１つの計算ノードは、前記パラメータに対して前記初期値を前記最終値に更新され、格納される、
請求項２に記載の方法。
【請求項６】
前記ジョブサーバは、前記トレーニングジョブの現在の要件と前記計算ノードの現在の状態に基づいて、トレーニンググループに含まれた計算ノードを変更することをさらに含む、
請求項１に記載の方法。
【請求項７】
前記計算ノードの現在の状態に基づいて、前記トレーニングジョブをトレーニンググループに割り当てることは、前記計算ノードの現在の能力と前記計算ノードの現在の可用性に基づいて、前記トレーニングジョブをトレーニンググループに割り当てることを含む、
請求項１に記載の方法。
【請求項８】
前記ジョブサーバは、前記計算ノードの計算能力及び／または可用性に基づいて、前記計算ノードのデータストレージ能力及び／または可用性に基づいて、及び／または、前記計算ノードの通信能力及び／または可用性に基づいて、前記トレーニングジョブをトレーニンググループに割り当てる、
請求項１に記載の方法。
【請求項９】
前記トレーニンググループにおいて、前記ジョブサーバは、前記更新値が計算ノード間で交換されることを指定する、
請求項１に記載の方法。
【請求項１０】
前記トレーニングジョブは、前記パラメータの初期値で始まり、前記パラメータの遷移値によって実行され、前記パラメータの最終値によって終了し、前記パラメータの遷移値と最終値は、前記ジョブサーバではなくて、前記トレーニンググループ中の計算ノードによって決定される、
請求項１に記載の方法。
【請求項１１】
前記トレーニングジョブ中の少なくとも１つのトレーニングジョブに対して、前記ジョブサーバは、前記最終値にアクセスしない、
請求項１０に記載の方法。
【請求項１２】
前記ジョブサーバは、前記トレーニンググループに割り当てられたトレーニングジョブを前記トレーニンググループが実行することを監視することをさらに含む、
請求項１に記載の方法。
【請求項１３】
前記ジョブサーバは、前記トレーニングジョブ中の少なくとも１つのトレーニングジョブのパラメータを視覚的に表示することをさらに含む、
請求項１に記載の方法。
【請求項１４】
前記ジョブサーバは、前記計算ノードの現在の状態及び／または前記計算ノードの現在の可用性を視覚的に表示することをさらに含む、
請求項１に記載の方法。
【請求項１５】
複数の機械学習モデルをトレーニングするための実行可能なコンピュータプログラム命令を格納する非一時的なコンピュータ可読記憶媒体であって、各機械学習モデルはパラメータのセットを含み、前記命令はプロセッサによって実行されて前記プロセッサに方法を実行させ、
前記方法は、
前記機械学習モデルをトレーニングするための複数のトレーニングジョブを受信することと、
前記トレーニングジョブの現在の要件と計算ノードの現在の状態に基づいて、前記トレーニングジョブを１つ以上の計算ノードからなるトレーニンググループに割り当てることと、
トレーニンググループが、前記トレーニンググループに割り当てられたトレーニングジョブを実行することと、を含み、
前記実行は、
前記機械学習モデルの前記パラメータの値を更新することと、及び
２つ以上の計算ノードを含む少なくとも１つのトレーニンググループについて、トレーニンググループの計算ノードの間で前記パラメータの更新値を交換して、交換された更新値を使用して前記トレーニングジョブを進めることと、を含む、前記非一時的なコンピュータ可読記憶媒体。
【請求項１６】
複数の機械学習モデルをトレーニングするためのコンピュータシステムであって、各機械学習モデルはパラメータのセットを含み、前記コンピュータシステムは、
ジョブサーバと、及び
ジョブサーバと通信する複数の計算ノードとを備え、
前記ジョブサーバは、前記機械学習モデルをトレーニングするための複数のトレーニングジョブを受信し、前記ジョブサーバが、前記トレーニングジョブの現在の要件と前記計算ノードの現在の状態に基づいて、前記トレーニングジョブを１つ以上の計算ノードからなるトレーニンググループに割り当てて、そして、前記ジョブサーバは、トレーニンググループに含まれた計算ノードを決定し、
前記トレーニンググループが、前記トレーニンググループに割り当てられたトレーニングジョブを実行し、前記実行は、前記機械学習モデルの前記パラメータの値を更新することと、及び、２つ以上の計算ノードを含む少なくとも１つのトレーニンググループについて、トレーニンググループの計算ノードの間で前記パラメータの更新値を交換し、交換された更新値を使用して前記トレーニングジョブを進めることとを含む、前記コンピュータシステム。
【請求項１７】
前記ジョブサーバ及び前記複数の計算ノードは、合計で少なくとも１０００個のプロセッサユニットを備える、
請求項１６に記載のコンピュータシステム。
【請求項１８】
前記コンピュータシステムはさらに、表示ノードを含み、
前記表示ノードは、前記ジョブサーバと通信し、前記トレーニングジョブ中の少なくとも１つのトレーニングジョブのパラメータを視覚的に表示する、
請求項１６に記載のコンピュータシステム。
【請求項１９】
前記コンピュータシステムはさらに、バッファノードを備え、
前記バッファノードは、前記計算ノードと通信し、前記計算ノードによって実行される次のトレーニングジョブで使用されるデータをバッファリングする、
請求項１６に記載のコンピュータシステム。
【請求項２０】
前記トレーニンググループ中の前記２つ以上の計算ノードは、前記計算ノードによって共有されるメモリを含み、前記計算ノードは、前記共有メモリ中の前記更新値の位置を交換することにより、前記パラメータの前記更新値を交換する、
請求項１６に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、機械学習に関し、より具体的には、機械学習モデルをトレーニングするための分散アーキテクチャに関する。
【背景技術】
【０００２】
大規模なデータ集合トレーニングに基づいて得られた最新の深層学習アーキテクチャは、音声及び画像認識、画像セグメンテーション、画像／ビデオの理解と分析、自然言語処理及び不正検出、医療システムと推奨システムなどの様々なアプリケーションを含む広い分野で印象的なパフォーマンスを得ることができる。しかしながら、これらの機械学習モデルをトレーニングすることは、計算に対して厳しく要求している。1台の機械でトレーニングすることは、実用的ではなく、長い時間がかかる場合がある。
【０００３】
したがって、複数の機械を含む分散システムによって機械学習モデルをトレーニングするタスクを割り当てることができる。しかしながら、このような方法には、自体の問題を生じる。トレーニングには、多数のデータが含まれる。代表的に、トレーニングセットには大量のトレーニングサンプルが含まれており、画像、ビデオ、テキストまたはオーディオなどの各トレーニングサンプルが非常に大きい場合がある。機械学習モデル自体も非常に大きい可能性があり、重み、偏差など多数のパラメータ及び多数のレイヤーなどの多数のパラメータをトレーニングする必要がある。現在のトレーニング方法では、代表的に、１台の機械（パラメータサーバ）を割り当てることにより、機械学習モデルの各パラメータのマスターバージョンを格納し、トレーニングタスク全体について、これらのパラメータを同期及び更新する。したがって、多数のデータが、パラメータサーバとその他の機械との間に交換される。大規模な分散システムで大規模なモデルをトレーニングする場合、膨大な通信帯域幅が必要である。
【０００４】
大規模な分散システム中の複数の機械で１つのモデルまたは複数の機械学習モデルを同時に効率的かつ効果的にトレーニングすることが望まれる場合、もっと多くの通信帯域幅が必要となり、かつパラメータサーバがすぐにトレーニングのボトルネックになる。したがって、通信帯域幅への巨額の投資が必要であり、そうでなければ、通信帯域幅が制限されている場合、全体的なトレーニング容量も制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、大規模な分散システムで機械学習モデルをトレーニングする方法を改善する必要がある。
【課題を解決するための手段】
【０００６】
本開示は、ジョブサーバ及び複数の計算ノードを含む大規模な分散コンピュータシステムを使用することにより、先行技術の制限を克服する。ジョブサーバは、機械学習モデルをトレーニングするジョブを１つ以上の計算ノードからなるグループに割り当てるために使用される。これらのトレーニンググループは、トレーニングジョブを実行する。ただし、モデルのパラメータの値の更新と更新値の交換は、トレーニンググループの計算ノード内（トレーニンググループとジョブサーバとの間ではなく）で完成することが好ましい。これにより、ジョブサーバに対する通信要件が軽減される。
【０００７】
ある実施形態において、ジョブサーバは、異なる機械学習モデルをトレーニングするための複数のジョブを受信する。ジョブサーバは、トレーニングジョブの現在の要件と計算ノードの現在の状態に基づいて、トレーニングジョブを１つ以上の計算ノードからなるトレーニンググループに割り当てる。トレーニング要件の例には、計算能力、データストレージ、通信帯域幅及び／または専用機能の要件が含まれる。一般的に、ノード状態には、ノードの能力とノードの可用性が含まれる。トレーニンググループは、前記トレーニンググループに割り当てられたトレーニングジョブを実行する。トレーニングの進行に伴い、この実行は、代表的に、モデルの重み、偏差などのパラメータの値の更新が含まれる。トレーニンググループには、２つ以上の計算ノードを含むことが好ましい。この更新及び更新値の交換は、トレーニンググループ内の計算ノード内で完成されるため、グループ外との通信が削減される。
【０００８】
各トレーニンググループ内のアーキテクチャは、グループごとに異なることができ、説明された方法は、階層的である。例えば、計算ノードのうちの一は、トレーニンググループのローカルジョブサーバ及び／またはパラメータサーバとして機能されてもよく、残りの計算ノードはサブグループに編成される。トレーニングの進行、トレーニングジョブの順序付けまたは完成、及び計算ノードの使用可能または使用不可能につれて、トレーニングジョブのトレーニンググループの間での割り当てと、トレーニンググループの構成も動的に変化する。
【発明の効果】
【０００９】
作業量が軽減された後、ジョブサーバ（及び他のサーバ）は、機械学習モデル及びそのトレーニングの視覚化または報告システムにおける計算ノードの状態などの追加タスクを実行することができる。
【００１０】
他の側面には、コンポーネント、装置、システム、改良、方法、プロセス、アプリケーション、コンピュータ読み取り可能な媒体及び上記に関連する他のいずれの技術が含まれる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係るジョブ（ｊｏｂ）サーバを含む大規模な分散コンピュータシステムのブロック図である。
【図２】図２Ａないし図２Ｃは、本発明に係る異なるアーキテクチャを有するトレーニンググループのブロック図である。
【図３】本発明に係るジョブサーバの動作を例示する。
【図４】本発明に係るジョブサーバを備える他の１つのコンピュータシステムのブロック図である。
【図５】本発明に係るジョブサーバのブロック図である。
【図６】本発明に係る計算ノードのブロック図である。
【発明を実施するための形態】
【００１２】
本開示の実施例の有する他の有利な効果と特徴は、添付の図面と併せて、以下の発明を実施するための形態と請求の範囲によると、より容易に理解されるだろう。
【００１３】
図面は、例示のことだけ目的として様々な実施例を説明する。以下の議論から、当業者は、本明細書に記載された原理から逸脱することなく、本明細書に例示された構造および方法を代替実施例で置き換えることができることを容易に認識するであろう。
【００１４】
図面及び以下の説明は、ただ例示的に好ましい実施例に関する。以下の議論から、本明細書に開示された構造及び方法の代替実施例は、特許請求の原理から逸脱することなく採用できる実行可能な代替方案として容易に認識されることに留意されたい。
【００１５】
図１は、本発明に係るジョブサーバ１１０を含む大規模な分散コンピュータシステム１００のブロック図である。コンピュータシステム１００は、さらに計算ノード１３０と、異なるコンポーネントを接続するネットワーク１２０とも含む。代表的な大規模な分散コンピュータシステムは、ジョブサーバ１１０と計算ノード１３０との間に分散された１０００個以上のプロセッサユニット（例えば、例如ＣＰＵとＧＰＵ）を有することが好ましいが、実際の数は状況と使用される技術によって異なる。以下により詳細に説明されるように、トレーニングジョブを、異なるグループ１４０の計算ノードに割り当てることにより、コンピュータシステム１００は、複数の機械学習モデルを同時にトレーニングすることができる。図１は、４つのトレーニンググループ１４０Ａ〜１４０Ｄに編成された計算ノード１３０を示す。トレーニンググループ１４０Ａは、計算ノード１３０Ａ１〜１３０ＡＮを含む。トレーニンググループ１４０Ｂ、１４０Ｃ及び１４０Ｄは、同様の番号を使用する。グループ１４０Ｄは単一の計算ノード１３０Ｄ１のみを含むことに留意されたい。より具体的には、計算ノード１３０をトレーニンググループ１４０に割り当てたことについて以下に説明する。未使用の計算ノード１３０Ｐは、利用可能な計算ノードのプール１４２を形成する。
【００１６】
コンピュータシステム１００は、機械学習モデルのトレーニングに使用される。機械学習モデルの例として、畳み込みニューラルネットワーク（ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ：ＣＮＮ）、リカレントニューラルネットワーク（ｒｅｃｕｒｒｅｎｔ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ：ＲＮＮ）、ニューラルネットワーク及びサポートベクターマシンが含まれる。
【００１７】
代表的なトレーニングジョブにおいて、機械学習モデルには、一定数のレイヤーとノード、ノードの間の重み付き接続を持つアーキテクチャを備える。代表的に、機械学習モデルのトレーニングには、トレーニングサンプルのセットに基づいて、モデルのパラメータ（例えば、重みと偏差）の値を決定することが含まれる。教師あり学習は、トレーニングサンプルは、一対の入力と既知の優良な出力（即ち、基本的な事実）である。機械学習モデルに入力を提示すると、機械学習モデルは、例えば、入力が目標属性を示すか、または入力が目標属性の信頼レベルを示すかなどの出力を生成する。機械学習モデルの出力と既知の優良な出力との差は、モデルの値を調整するために使用される。このプロセスは、機械学習モデルのパフォーマンスが十分になるまで、多くの異なるトレーニングサンプルに対して繰り返される。機械学習モデルが充分にトレーニングされているかどうかを判断する過程を検証と称する。トレーニングが完了すると、新しい入力を示すときに、機械学習モデルは、満足できる正しい出力を予測することができる。アクティブな動作に使用されている場合でも、機械学習モデルは、トレーニングを継続することができる。その他の種類の機械学習方法には、半教師あり学習、教師なし学習、強化学習が含まれる。
【００１８】
システム全体において、ジョブサーバ１１０は、トレーニングジョブを計算ノード１３０に割り当てることを管理及び監視する役割をより多く果たし、計算ノード１３０はトレーニングタスクを実行する役割をより多く果たす。これらのコンポーネント１１０、１３０は、データストレージとある処理能力を含む（共有することもできる）が，実際の実施形態は、大きく異なる（共有することもできる）。例えば、処理能力は、通常の中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、専用プロセッサ、カスタムＡＳIＣ、マルチプロセッサ構成及びトレーニングと推論用に設計されたチップによって提供することができる。これらのコンポーネントは、ブレードサーバなどの実際の物理コンポーネントとして実施することができるか、または仮想化によって実施することができる。コンポーネント１１０、１３０は、完全に同一である必要がない。例えば、異なる計算ノード１３０は異なる能力を有してもよく、または特定のタスク専用であってもよい。
ネットワーク１２０は、異なるコンポーネント間の接続を提供する。用語「ネットワーク」は、広く解釈されるべきである。イーサネット、インフィニバンド（ＩｎｆｉｎｉＢａｎｄ）などの基準定義プロトコルを備えた公式ネットワークが含まれることができる。例えば、サーバーラック上のバックプレーン接続、リモートダイレクトメモリアクセス（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＲＤＭＡ）及び高性能コンピューティングファブリックフレームワークなど、コンポーネント間の他の種類の接続も含まれる。ネットワーク１２０は、異なる種類の接続を組み合わせることもできる。有線及び／または無線リンクを使用するローカルエリアネットワーク及び／またはワイドエリアネットワークの組み合わせを含んでもよい。コンポーネント１１０、１３０間で交換されるデータは、任意の適当なフォーマットを使用して示すことができる。ある実施例において、データ及び通信の全部または一部は暗号化されてもよい。
【００１９】
したがって、コンピュータシステム１１０全体を異なる方法で実施することができる。例えば、独自のシステムとして実施することができる。または、サードパーティのサービスまたはクラウドサービス上に構築することができる。
【００２０】
図１中の破線矢印は、コンピュータシステム１００の動作を示す。この例において、コンピュータシステム１００は、ジョブサーバ１１０が各トレーニンググループ１４０のマスタとして動作し、各トレーニンググループがジョブサーバのワーカーとして動作するマスターワーカ（ｍａｓｔｅｒ−ｗｏｒｋｅｒ）アーキテクチャを備える。ジョブサーバ１１０は、機械学習モデルのトレーニングをするためにジョブ１１５を受信する。これは、ジョブ１２５Ａ-Ｄを計算ノード１３０のグループに割り当てて、これらのグループをトレーニンググループ１４０Ａ-Ｄと称する。トレーニングジョブ１２５Ａは、トレーニンググループ１４０Ａの計算ノード１３０Ａｘに割り当てられ、トレーニングジョブ１２５Ｂは、トレーニンググループ１４０Ｂの計算ノード１３０Ｂｘに割り当てられ、以下は同様である。好ましくは、ジョブサーバ１１０は、どのトレーニンググループ１４０がどの計算ノード１３０を含むかも決定する。
【００２１】
ジョブサーバ１１０は、トレーニングジョブの現在の要件及び計算ノード１３０の現在の状態に基づいて、トレーニングジョブを割り当てる。ある実施例において、ジョブがトレーニンググループに割り当てられると、ジョブサーバ１１０は、モデルの初期パラメータのセット（及び／またはトレーニングジョブの他の態様）もトレーニンググループに送信する。または，ジョブサーバ１１０は、トレーニンググループにパラメータを物理的に送信せず、代わりにパラメータへのポインタを提供するか、または他の方法でトレーニンググループと初期値を交換してもよい。トレーニングが完成すると、パラメータの最終値はジョブサーバ１１０に送信されてもよいし、ジョブサーバに送信されなくてもよい。パラメータの遷移値は、ジョブサーバ１１０に送信されないことが好ましい。ジョブサーバ１１０は、トレーニング計算を実行しないことが好ましい。ただし、ジョブサーバ１１０は、代表的に、各トレーニンググループの進度を監視し、表示または監視の目的でパラメータの遷移値にアクセスする場合がある。
【００２２】
この例において、各トレーニングタスクは、モデルのパラメータの適応など、異なる機械学習モデルをトレーニングすることである。したがって、トレーニンググループ１４０Ａは、機械学習モデルＡをトレーニングし、トレーニンググループ１４０Ｂは、別の１つの機械学習モデルＢをトレーニングし、以下は同様である。トレーニングジョブ１１５は、異なる時間に順序付けされることができる。したがって、トレーニングジョブ１２５Ａ-Ｄをいつでも割り当てることができる。
【００２３】
各トレーニンググループ１４０中の計算ノード１３０は、１４３が前記トレーニンググループに割り当てたトレーニングジョブを実行するように、共同に働く。これには、１４３のモデルのパラメータの更新値を計算し、これらの更新されたパラメータを相互に交換１４７することが含まれる。例として、トレーニンググループ１４０Ａを説明する。トレーニンググループ中の計算ノード１３０Ａ１-Ｎは、トレーニングジョブを実行して、機械学習モデルＡをトレーニングする。このジョブの一部として、トレーニングセットの異なる一部は、異なる計算ノード１３０Ａｘに割り当てられることができ、その中の各計算ノードは、そのトレーニングサンプルを使用してトレーニング１４３を実行する。計算ノード１３０Ａｘは、それらのトレーニングに基づいて１４３パラメータの更新値を生成する。これらの値は、計算ノード間で交換１４７され、すべての計算ノード１３０Ａｘからのトレーニングを集約する。パラメータの遷移値と最終値は、トレーニンググループ中の計算ノード１３０によって計算されることが好ましい。１つ以上の計算ノード１３０は、トレーニンググループのトレーニングジョブに対して、ローカル制御及び監視も実行し得る。
【００２４】
ジョブサーバ１１０は、トレーニングジョブの現在の要件及び計算ノード１３０の現在の状態に基づいて、トレーニングジョブを１つ以上の計算ノード１３０のトレーニンググループに割り当てる１２５。トレーニング要件の例として、計算能力、データストレージ、通信帯域幅及び／または専用機能の要件を含む。トレーニングジョブのサイズは、多くの場合、トレーニングサンプルの数とトレーニングサンプルのサイズ、機械学習モデルのサイズ、モデル中パラメータの数及びトレーニングアルゴリズムの有効性等要因に依存する。
【００２５】
計算ノードの状態には、ノードの能力とノードの可用性が含まれる。これらは、計算能力、データストレージ、通信帯域幅及び／または専用機能のメトリクスにもなる。計算能力のメトリックは、プロセッサコアまたはプロセッサの数、プロセッサの種類及び処理能力、フロップレート（ｆｌｏｐｓ  ｒａｔｅ、即ち、１秒あたりの浮動小数点演算）などの処理スループット、クロック速度が含まれる。データストレージのメトリックには、データストレージの種類と数、読み取り/書き込み帯域幅、アクセス時間、プリロード容量、低メモリ警告の数及び最後の低メモリ警告からの経過時間が含まれる。バスインターフェイスＰＣＩ  ｅｘｐｒｅｓｓの他の接続の帯域幅及びＮＵＭＡとＳＭＰなどのマザーボードトポロジなどの要因も、データ伝送転送に影響を与える可能性がある。通信帯域幅のメトリックには、ネットワーク接続の種類と数、最近のデータ転送速度の平均値などのデータ転送速度、最近の接続に基づくネットワーク接続可用性の確率などのネットワーク接続信頼性及びデータ転送遅延が含まれる。
【００２６】
ある実施例において、ジョブサーバ１１０は、計算ノード１３０の能力に基づいて、それらを異なるカテゴリに分類する。例えば、いくつかの計算ノード１３０は、他の計算ノード１３０よりも多くの処理能力またはより大きいメモリまたは専用機能を有し得る。これらは、「専用」計算ノードとして分類され、残りは「通常の」計算ノードとして分類される。カテゴリごとに追加の規定がある場合がある。例えば、「通常の」計算ノードには、処理能力とメモリ容量を示す数字が含まれることができる。
【００２７】
ある実施例において、計算ノード１３０の可用性は、「可用」、「一部可用」及び「利用不可」として分類される。例えば、トレーニングジョブを実行しない計算ノードは可用であり、トレーニングジョブを実行するが１００％容量で実行されない計算ノードは一部可用であり、全容量でトレーニングジョブを実装する計算ノードは不可用である。別の１つの方法において、可用性は、０から１または０から１００などの範囲内の数字で示される。ジョブサーバ１１０は、異なるカテゴリで各トレーニングジョブに割り当てられた計算ノードの数及び割り当てられた具体的な計算ノードを決定することができる。
【００２８】
図１は、異なるトレーニンググループ１４０に割り当てられた異なる計算ノード１３０を示したが、各トレーニンググループの内部アーキテクチャは示していない。異なるトレーニンググループ１４０は、異なるアーキテクチャを使用することができる。同じアーキテクチャを使用する必要はない。ジョブサーバ１１０は、トレーニンググループのアーキテクチャを規定することができ、またはトレーニンググループは、アーキテクチャに従ってすでに編成されることができ、またはトレーニンググループはトレーニングジョブを受信したら、アーキテクチャは選択されることができる。図２Ａ-２Ｃは、それぞれマスターオペレータアーキテクチャ、ピアツーピアアーキテクチャ及びクライアントサーバアーキテクチャのトレーニンググループのブロック図である。
【００２９】
図２Ａは、マスターワーカーアーキテクチャ（ｍａｓｔｅｒ−ｗｏｒｋｅｒ  ａｒｃｈｉｔｅｃｔｕｒｅ）を備えるトレーニンググループ２１０のブロック図である。トレーニンググループ２１０は、４つの計算ノード２１０Ｍと２１０Ｗ１-３を有する。計算ノード２１０Ｍは、マスタとして機能し、計算ノード２１０Ｗ１-３は、ワーカーとして機能する。マスタ２１０Ｍは、代表的に、ワーカー２１０Ｗのワークフローを制御する。この例において、マスタ２１０Ｍは、トレーニングジョブを受信し、トレーニングジョブを各ワーカー２１０Ｗによって完成する小さなタスクに分割し、機械学習モデルのパラメータの値を更新する。マスタ２１０Ｍは、パラメータの初期値を記憶することができ，その後、ワーカー２１０Ｗから遷移トレーニング結果を受信すると、これらの値を更新することができる。一方法において、マスタ２１０Ｍは、そのローカルメモリにパラメータを格納し、必要に応じてこれらの値をワーカー２１０Ｗに送信する。または，パラメータは、計算ノード２１０Ｍ及び２１０Ｗによって共有メモリに格納されてもよい。
【００３０】
ある実施例において、トレーニングジョブは、トレーニングサンプルのセットを含む。マスタ２１０Ｍは、トレーニングサンプルのサブセットは、異なるワーカー２１０Ｗに割り当てることにより、トレーニングジョブをより小さなタスクに分割する。例えば、トレーニングジョブが３００,０００個のトレーニングサンプルを含むと、マスタ２１０Ｍは各ワーカー２１０Ｗに１００,０００個のトレーニングサンプルを割り当てることができる。マスタ２１０Ｍは、各ワーカーに同数のトレーニングサンプルを割り当てない場合がある。マスタは、ワーカーの状態に基づいて、トレーニングサンプルをワーカー２１０Ｗに割り当てることができる。例えば、マスタは、トレーニングジョブを１０個のブロックに分割して、各ブロックには、３０,０００個のトレーニングサンプルが含まれる。次に、マスタは、３０,０００個のトレーニングサンプルを含むそれぞれの最初の３つのブロックをワーカー２１０Ｗ１-３に割り当て、ワーカー２１０Ｗ可用になって時に、残りのブロックを再び割り当てる。マスタ２１０Ｍの自体も何らかのトレーニングを実行することができる。
【００３１】
代替のセグメントにおいて、機械学習モデルは、異なるコンポーネントに細かく分割されることができる。マスタ２１０Ｍは、異なるモデル構成部分を異なるワーカー２１０Ｗに割り当てることにより、トレーニングジョブを分割する。例えば、モデルが分離可能な場合、一部のワーカー２１０Ｗはモデル中の以前のレイヤーをトレーニングすることができ、他の一部のワーカーは、モデル中の後続のレイヤーをトレーニングすることができる。または，一部のモデルコンポーネントは、個別にトレーニングされることができる特性を検出するように設計される。
【００３２】
図２Ｂは、ピアツーピアアーキテクチャで配置された４つの計算ノード２２０Ｐ１-４のトレーニンググループ２２０のブロック図である。トレーニンググループ２２０は、分散アルゴリズムを使用して、トレーニングジョブをピア（ｐｅｅｒｓ）２２０Ｐによって実行される小さなタスクに分割する。ピア２２０Ｐはお互いに協調して、タスクを実行し、機械学習モデルのパラメータを更新する。例えば、トレーニングジョブが１０個のタスクに分割されると、ピア２２０Ｐは、現在のタスクの完了後に共有パラメータセットを更新してから、共通キューに入って次の可用タスクを取得することができる。
【００３３】
也可以使用混合方法。例えば、１つの計算ノード２２０Ｐ１は、ジョブサーバ１１０に接続するための単一の連絡先として機能することができる。この計算ノード２２０Ｐ１は、ジョブサーバからトレーニングジョブを受信し、トレーニングジョブを最初に小さなタスクに分割する。この計算ノードは、初期タスクを他の計算ノード２２０Ｐに割り当てることもできる。その後、計算ノード２２０Ｐは、タスクを実行し、機械学習モデルのパラメータを更新するピアとして機能する。プライマリ計算ノード２２０Ｐ１は、パラメータマスタセット及び保留中のタスクのキューを維持することができる。
図２Ｃは、クライアントサーバアーキテクチャを備えるトレーニンググループ２３０のブロック図である。計算ノード２３０Ｓは、サーバとして機能し、計算ノード２３０Ｃ１-３は、クライアントとして機能する。サーバ２３０Ｓはトレーニングサンプルを提供する。クライアント２３０Ｃは、サーバ２３０Ｓからトレーニングサンプルを取得し、それらのトレーニングタスクを実行する。サーバ２３０Ｓは、さらに、パラメータの値をクライアント２３０Ｃに提供し、クライアント２３０Ｃからのトレーニング結果に基づいて、パラメータの値を更新するために使用することができる。
【００３４】
前述のように、ジョブサーバ１１０は、トレーニングジョブを計算ノードグループに割り当てる。便宜上、これらのグループはトレーニンググループと呼ばれる。ジョブサーバ１１０は、どの計算ノードがどのトレーニンググループに含まれているかを決定することが好ましい。ある実施例において、このような「含む」関係は、トレーニングジョブの現在の要件及び／または計算ノードの現在の状態の変化に応じて、時間とともに変化し得る。
【００３５】
図３は、ジョブサーバがトレーニングジョブを計算ノードに割り当てる例を示す。この例において、１２つの通常の計算ノード１３０Ｒ１-Ｒ１２と３つの専用計算ノード１３０Ｓ１-Ｓ３を含む最大１５つの計算ノードがある。ジョブサーバ１１０は、計算ノードによって実行される４つのトレーニングジョブＡ-Ｄを受信する。表３００は、各トレーニングジョブの要件を示す。トレーニングジョブＡには、１つの通常の計算ノード１３０Ｒ及び１つの専用計算ノード１３０Ｓなどが必要とし、以下は同様である。この例において、これらは最小要件である。この数より多い計算ノードを使用することができるが、この数未満の計算ノードは使用することができない。ジョブ要件は、範囲、最小値及び最大値、推奨値、許容値などの他の方法でも規定することができる。
【００３６】
トレーニングジョブは、異なる時間において順序付けている。ジョブサーバ１１０がトレーニングジョブを受け取った場合、ジョブサーバ１１０は、トレーニングジョブの現在の要件及び計算ノード１３０の現在の状態に基づいて、トレーニングジョブを計算ノード１３０に割り当てる。表３５０は、トレーニングジョブの計算ノードへの割り当てを示すタイムログである。表３５０において、ジョブに割り当てられた計算ノード１３０にジョブレターでマークされ、オンラインかつ可用な計算ノードマークは空白セルとしてマークされ、オフラインの計算ノードは用ツイルパターンでマークされる。この例において、コンピュータシステムがある程度の動的再割り当てが可能であると想定される。つまり、トレーニングジョブの実行時に、トレーニングジョブに割り当てられた計算ノードを変更することができる。ただし、ジョブサーバの使用は静的状況にも適用することができ、即ち、トレーニンググループが固定的であり、ジョブの最初から最後まで同じ状態を維持しなければならない。この場合、割り当てポリシーは、この追加の制約に基づいて変更される。
【００３７】
時間ｔ０では、５つの通常ノードＲ１-Ｒ５と３つの専用ノードＳ１-Ｓ３がオンラインで利用可能であるが、トレーニングジョブはまだ受信されない。ツイルパターンで示されたように、ノードＲ６-Ｒ１２はオフラインである。時間ｔ１では、トレーニングジョブＡが順序付けされ、開始される。ジョブＡは、１つの通常ノードＲと１つの専用ノードＳを必要とするが、ジョブサーバ１１０はこのトレーニングジョブを２つの通常ノードＲ１-２と２つの専用ノードＳ１-２に割り当てる。残りの計算ノードＲ３-５とＳ３は将来のジョブに使用でき、他の２つの計算ノードＲ６-７は既にオンラインされた。
【００３８】
トレーニングジョブＡに割り当てられた計算ノード１３０は、時間ｔ１で多数の可用な計算リソースがあるため、このトレーニングジョブの要件に必要な数よりも多い。したがって、トレーニングジョブを完成するのに必要な時間はより短くなる。同時に、近い将来、他のトレーニングジョブが期待されるため、可用なすべての計算リソースがトレーニングジョブＡに割り当てられるわけではない。例えば、ジョブを事前にスケジュールしたり、または過去の履歴に基づいて将来のジョブの需要を予測したりすることができる。別の１つの方法において、ジョブＡを最小要件の計算ノードに割り当てることができる。この方法は、ジョブ中に計算ノードを切り替えることが困難な場合、または現在のジョブを完成する前に多数のジョブがあると予想される場合に適している。逆の方法において、ジョブＡをすべての可用な計算ノードに割り当てて、新しいジョブが順序付けられると、動的に再割り当てを行うことができる。
【００３９】
時間ｔ２では、ジョブＡがまだ実行されている時、トレーニングジョブＢが開始する。ジョブサーバ１１０は、トレーニングジョブＢを最小要件の５つの通常ノードＲ３-７と１つの専用ノードＳ３に割り当てる。このように、トレーニンググループの計算リソースは、ジョブの要件と同じである。同時に、通常ノードＲ１-２と専用ノードＳ１-２がトレーニングタスクＡを実行し続く。時間ｔ２では、アイドル状態の計算ノードは存在しない。
時間ｔ３では、追加ノードＲ８-１２がオンラインになる。これらのノードは、以前と同じように実行を続ける既存のジョブＡまたはＢに割り当てられない。時間ｔ４では、トレーニングジョブＣが順序付けられる。しかしながら、トレーニングジョブＣは、６つの通常ノード１３０Ｒと１つの専用ノード１３０Ｓが必要であるが、５つの通常ノードＲ８-１２のみがあり、可用な専用ノードはない。現在の可用な計算ノードは、ジョブＣの要件に満たすのに十分ではない。ジョブサーバ１１０は、時間ｔ３とｔ４との行の間の矢印で示されるように、ノードＲ２とＳ２をジョブＡからジョブＣに動的に再割り当てをする。これは、ジョブＡの最小要件を依然として満足し、同時にリソースを解放することにより、ジョブＣの最小要件を満足する。トレーニングジョブＢのトレーニンググループは、余計な計算ノードがため、トレーニングジョブＢは、依然として同じ計算ノードによって実行される。現在、可用なプールに計算ノードがない。
【００４０】
時間ｔ５では、トレーニングタスクＤが順序付けられる。ただし、可用な計算ノードがないため、ジョブＤは、実行を開始しない。他のジョブのいずれかが完成するまで待機しなければならない。時間ｔ６では、ジョブＢが完成し、ノードＲ３-Ｒ７とＳ３が解放される。ジョブサーバは、ジョブＤをノードＲ３-Ｒ５に割り当てる。これは、基本的に先着順の方法である。
【００４１】
代替の実施例において、コンピュータシステムがオーバーサブスクライブ（ｏｖｅｒｓｕｂｓｃｒｉｂｅｄ）されると、ジョブサーバ１１０は優先度に基づいてトレーニングジョブにリソースを割り当てることができる。ジョブＤの優先度がジョブＣより高ければ、時間ｔ５では、ジョブサーバが計算ノードをジョブＣからジョブＤに動的に再割り当てする。トレーニングジョブの優先度は、トレーニングジョブの緊急度、トレーニングジョブの重要性、実行トレーニングジョブに必要な期間など、様々な要因によって決定する。別の１つの方法において、比例的に割り当てを行うことができる。
【００４２】
時間ｔ７では、計算ノードＲ８-９が意外にオフラインする。したがって、ジョブＣは、必要な数の計算ノードを備えない。ただし、計算ノードＲ６-７は、可用であるため、ジョブＣに割り当てることができる。この例において、ジョブＣは、ノードＲ３-７に再割り当てられ、ジョブＤがノードＲ１０-１２に移動される。例えば、ノードＲ３-７が１つのデータセンタにあるが、ノードＲ８-１２は他の１つのデータセンタにあると、このように実行することができる。こうして、ジョブに割り当てられたすべての通常ノードは、同一なデータセンタにある。
【００４３】
上記の例では、ジョブサーバ１１０が主にトレーニングジョブの実行に対する管理を担当し、計算ノード１３０が主にトレーニングジョブ中に必要な計算、更新及び機械学習モデルのパラメータの交換を担当する。ある実施例において、ジョブサーバ１１０はそのほかの機能も完成する。例えば、ジョブサーバは、トレーニンググループに割り当てたトレーニングジョブに対する前記トレーニンググループの実行及び／または計算ノード１３０の状態を監視する。ジョブサーバ１１０は、さらにレーニングジョブのパラメータ及び／または計算ノード１３０の状態を視覚的に表示することもできる。
【００４４】
ある実施形態において、ジョブサーバ１１０は、可用な計算ノードは、緑色のアイコンでマークされ、不可用な計算ノードは、赤色のアイコンでマークされ、いくつかの可用な計算ノードは、黄色なアイコンでマークされる視覚的な表示を提供する。視覚的な表示は、トレーニンググループの内部アーキテクチャ及び／またはアクティビティレベルも表示することができる。コンピュータシステム１００のユーザは、視覚的な表示を使用して、トレーニングジョブの進度を制御し、ジョブサーバ１１０に新しいトレーニングジョブを送信するかどうかを決定することができる。
【００４５】
図４は、本発明に係る他の１つのコンピュータシステム４００のブロック図である。図１に示すコンポーネントに加えて、コンピュータシステム４００は、表示ノード４４０とバッファノード４５０も含む。上記のように、ジョブサーバは、トレーニングジョブの進度の監視、トレーニング中のパラメータのインスタンス化、コンピュータシステム全体の容量の表示等、様々な視覚的な表示を提供することができる。図４には、これらの機能を表示ノード４４０によって完成される。
【００４６】
バッファノード４５０は、計算ノード１３０によって実行された次のトレーニングジョブで使用されるデータをバッファリングする。例えば、ジョブサーバ４１０は、トレーニングサンプル、モデルのパラメータの初期値等データをバッファノード４５０にプリロードする。計算ノード１３０は、次にバッファノード４５０からデータにアクセスする。バッファノード４５０は、システム全体にキャッシング機能を提供して、システム全体のパフォーマンスを改善する。
【００４７】
図５と図６は、それぞれジョブサーバと計算ノードの例のブロック図である。図示されたコンポーネントは、規定された機能を提供するためのコンピュータプログラム命令及び他のロジックを指す。これらのコンポーネントは、ハードウェア、ファームウェア及び／またはソフトウェアによって実施される。ある実施例において、それらは、記憶装置に格納され、メモリにロードされ、プロセッサによって実行される実行可能なコンピュータプログラム命令として実装される。
【００４８】
図５において、ジョブサーバ５００は、インターフェースモジュール５１０、システムモニタ５２０、割り当てエンジン５３０、計算ノードマネージャ５４０、ジョブモニタ５５０及び表示モジュール５６０を含む。ジョブサーバは、コンピュータシステム及びトレーニングジョブに関連する情報を格納する（機械学習モデルのパラメータ及びトレーニングサンプルを含む）ためのデータストレージをさらに含むことができる。
【００４９】
インターフェースモジュール５１０は、他の装置及び／またはユーザとの通信が容易にする。トレーニングジョブはインターフェースモジュール５１０を介して受信され、計算ノードの命令はインターフェースモジュール５１０を介してディスパッチされる。データもインターフェースモジュール５１０を介して転送される。インターフェースモジュール５１０は、ユーザインターフェースを含むことができる。
【００５０】
システムモニタ５２０は計算ノードの状態（能力及び／または可用性）を監視する。システムモニタ５２０は、計算能力、ストレージ、通信などの計算ノードの能力を自動的に発見することができる。システムモニタ５２０はまた、どの計算ノードがオンラインであるかを決定し、オンライン計算ノードが可用であるか、一部可用であるか、それとも不可用であるかを決定する。
【００５１】
割り当てエンジン５３０は、トレーニングジョブの要件を決定し、トレーニングジョブの要件及び計算ノードの状態に基づいて、トレーニングジョブを計算ノードに割り当てる。ある実施例において、割り当てエンジン５３０は、各トレーニングジョブに必要な計算ノードの数を決定し、可用な計算ノードまたは一部可用な計算ノードの数も確認する。割り当てエンジンは、対応的にトレーニングジョブを計算ノードに割り当てる。トレーニングジョブの割り当てには、再割り当てを含み、動的に完成することができる。
【００５２】
計算ノードマネージャ５４０は、計算ノードを制御及び指示するためのロジックを提供する。計算ノードマネージャは、計算ノードがトレーニングジョブを実行するための命令を生成する。この命令は、トレーニングジョブの機械学習モデル（例えば、IＤ、目的、数学アルゴリズム及びパラメータの初期値）、トレーニングジョブのトレーニングサンプルの位置及びトレーニンググループ中の他の計算ノードに関連する情報を記述することができる。
【００５３】
計算ノードマネージャ５４０は、計算ノードに対するジョブサーバの制御量に応じて、他の態様も管理することができる。例えば、命令は、トレーニンググループ中のマスタ計算ノードとワーカー計算ノードを識別するなど、トレーニンググループのアーキテクチャを追加的に制限することができる。なお、命令は、トレーニンググループ中の計算ノード間のトレーニングジョブの分割を規定することができる。ある実施例において、命令は、計算ノード間にパラメータの更新値を更新するように規定することができる。例えば、命令は、具体的な計算ノードは、トレーニンググループ中の他の計算ノードから更新値を受信するように規定することができ、更なるトレーニングのために、この計算ノードはトレーニング結果を調整し、更新されたパラメータのセットを生成し、更新値を他の計算ノードに送り返す。
【００５４】
ジョブモニタ５５０は、様々なトレーニングジョブの進度を監視する。ジョブモニタは、進行状況レポートを照会したり、またはトレーニンググループがその進度を自主的に報告したりすることができる。
【００５５】
表示モジュール５６０は、トレーニングジョブの実行及び／またはコンピュータシステムの状態に関連する情報を表示する。ある実施例において、表示モジュール５６０は、計算ノードの状態を表示する。ユーザは、表示の状態に基づいて、もっと多いトレーニングジョブをコンピュータシステムに送信するか、それとも特定のノードに送信するかを決定することができる。他の実施例において、表示モジュール５６０は、機械学習モデルのパラメータの値を表示する。例えば、表示モジュール５６０は、機械学習モデルのパラメータの初期値と最終値を表示することができる。表示モジュール５６０は、トレーニングの進行につれてパラメータの更新値を表示することができる。
【００５６】
図６では、計算ノード６００は、インターフェースモジュール６１０、制御モジュール６２０、トレーニングモジュール６３０及びパラメータ一貫性モジュール６４０を含む。計算ノードは、例えば、モデルのパラメータ、トレーニングセットの統計パラメータ、モデルトレーニングの進度及び他の情報などのデータストレージをさらに含むことができる。インターフェースモジュール６１０は、他の装置及び／またはユーザとの通信を容易にする。例えば、ジョブサーバからのトレーニングジョブと命令がインターフェースモジュール６１０を介して受信される。同様に、インターフェースモジュールを介して他の計算ノードと通信には、トレーニング中に使用されるパラメータの交換を含む。
【００５７】
制御モジュール６２０は、ジョブサーバと他の計算ノード相互作用を含む、計算ノードを制御するためのロジックを提供する。制御モジュールは、ジョブサーバの計算ノードマネージャ５４０に部分的に対応する。
【００５８】
トレーニングモジュール６３０は、トレーニングジョブを実行する。この例において、トレーニングモジュール６３０は、適応エンジン６３２及び検証エンジン６３４を含む。トレーニングモジュール６３０は、トレーニングサンプルを使用して、機械学習モデルをトレーニングする。一方法において、トレーニングモジュール６３０は、関心のある目標属性を有するトレーニングサンプルのポジティブトレーニングセットと、関心の少ない目標属性を有するトレーニングサンプルのネガティブトレーニングセットを形成する。適応エンジン６３２は、機械学習モデルのパラメータの値を更新して、適合ポジティブトレーニングセットとネガティブトレーニングセットに適合させる。異なる実施例で、線形サポートベクターマシン（線形ＳＶＭ）等、ＡｄａＢｏｏｓｔ等他のアルゴリズムに対するブースト、ニューラルネットワーク、ロジック回帰、単純ベイズ（ｎａiｖｅ  Ｂａｙｅｓ）、メモリベースの学習、ランダムフォレスト、バギングツリー、決定ツリー、ブースト木またはブーストされた切り株（ｂｏｏｓｔｅｄ  ｓｔｕｍｐｓ）など、様々な機械学習技術を使用することができる。
【００５９】
検証エンジン６３４は、追加サンプルに基づいて、トレーニングされた機械学習モデルを検証する。検証エンジン６３４は、トレーニングされたモデルを検証サンプルに適用して、トレーニングのモデルの正確度を定量化する。正確度メトリクス中の共通メトリクス基準は、精度＝ＴＰ／（ＴＰ＋ＦＰ）及びリコール率（ｒｅｃａｌｌ）＝ＴＰ／（ＴＰ＋ＦＮ）を含み、ここで、ＴＰは真陽性の数（ｎｕｍｂｅｒ  ｏｆ  ｔｒｕｅ  ｐｏｓｉｔｉｖｅ）であり、ＦＰは偽陽性の数（ｎｕｍｂｅｒ  ｏｆ  ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）であり、ＦＮは偽陰性の数（ｎｕｍｂｅｒ  ｏｆ  ｆａｌｓｅ  ｎｅｇａｔｉｖｅ）である。精度は、トレーニングされたモデルによって予測された目標属性（ＴＰ＋ＦＰ）を有する総数のうち、トレーニングされたモデルによって正しく予測された目標属性（ＴＰ）のある結果の数である。リコール率は、確実に目標属性（ＴＰ＋ＦＮ）有する検証サンプルの総数のうち、トレーニングされたモデルによって正しく予測された属性（ＴＰ）の有する結果の数である。Ｆ分数（Ｆ分数＝２×精度×リコール率／（精度＋リコール率））は、精度とリコール率を単一のメトリクスに統合する。正確度メトリクスに適用されるアプリケーションの共通メトリクス基準には、上位１位の正確度と、上位５位の正確度を含む。上位１位の正確度では、トレーニングされたモデルによって予測された上位１位の予測（即ち、最も可能性のある予測）が正しい場合、このトレーニングされたモデルは正確である。上位５位の正確度では、現在の５位の予測（例えば、最も可能性のある５つの予測）のうちの１つが正しい場合、トレーニングされたモデルは正確である。検証エンジン６３４は、他の種類のメトリクス基準を使用して、トレーニングされたモデルの正確度を定量化する。ある実施例において、トレーニングモジュール６３０は、モデルが十分に正確であるという正確度メトリクス指示、または既に行われたいくつかのトレーニングラウンドなどの停止条件が現れるまで機械学習モデルを繰り返して再トレーニングする。
パラメータ一貫性モジュール６４０は、異なる計算ノードのからのトレーニング結果を集約する。例えば、１つの計算ノード上のトレーニングは、パラメータの更新値のセットを作成し、別の１つの計算ノード上のトレーニングは、別の１つの更新値のセットを作成することができる。パラメータ一貫性モジュール６４０は、これらの結果を単一の更新値のセットに組み合わせる。
【００６０】
発明を実施するための形態は、多くの特定の詳細を含むが、これらは、本発明の範囲を制限するものとして解釈されてはいけなく、単に本発明の異なる例と態様を例示するものであり。本発明の範囲は、上記で具体的に論じられていない他の実施例を含むことが理解されるであろう。例えば、計算ノードのセットに対して、複数のジョブサーバを使用し得る。添付の特許請求の範囲によって定義される本発明の精神および範囲から逸脱することなく、本明細書に開示される本発明の方法および装置の配置、動作、および詳細に対する様々な修正、変更及び変形は、当業者にとっては自明である。したがって、本発明的範囲は、添付の特許請求の範囲およびその法律的の均等物によって決定されるべきである。
【００６１】
代替実施例は、コンピュータハードウェア、ファームウェア、ソフトウェア及び／またはそれらの組み合わせとして実装される。実施形態は、プログラム可能なプロセッサによる実行のために、機械可読記憶装置に有形に具現化されたコンピュータプログラム製品として実装することができる。方法のステップは、入力データを操作して出力を生成することにより機能を実行する命令のプログラムを実行するプログラム可能なプロセッサによって実行できる。実施例は、データを受信するように結合された少なくとも１つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能な１つ以上のコンピュータプログラムで有利に実装することができる。各コンピュータプログラムは、高いレベルの過程またはオブジェクト指向プログラミング言語として実施される。または、必要に応じて、アセンブリまたはマシン言語として実施される。いずれの場合でも、言語はコンパイル言語またはインタープリター言語になる。適切なプロセッサには、一例として、汎用および専用のマイクロプロセッサが含まれる。一般的に、プロセッサは読み取り専用メモリおよび/またはランダムアクセスメモリから命令とデータを受信する。通常は、コンピュータには、データファイルを保存するための1つまたは複数の大容量記憶装置が含まれる。このようなデバイスには、内蔵ハードディスクやリムーバブルディスク、光磁気ディスク、光ディスクなどのディスクが含まれる。コンピュータプログラムの命令とデータを具体的に具現するのに適したストレージデバイスには、たとえば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、光ディスクなどを含むあらゆる形態の不揮発性メモリが含まれる。上記のいずれも、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ：特定用途向け集積回路）およびその他の形式のハードウェアで補完（または統合）できる。
【符号の説明】
【００６２】
１  計算ノード
１００  コンピュータシステム
１１０  コンポーネント
１１５  ジョブ
１２０  ネットワーク
１２５Ａ-Ｄ  トレーニングジョブ
１３０  計算ノード
１４０  トレーニンググループ
４００  コンピュータシステム
４１０  ジョブサーバ
４４０  表示ノード
４５０  バッファノード
５００  ジョブサーバ
５４０計算ノードマネージャ
５５０  ジョブモニタ
５６０  表示モジュール
６００  計算ノード
６１０  インターフェースモジュール
６２０  制御モジュール
６３０  トレーニングモジュール
６３４  検証エンジン
６４０  パラメータ一貫性モジュール
【図１】
0006894532.tif 000002
【図２Ａ】
0006894532.tif 000003
【図２Ｂ】
0006894532.tif 000004
【図２Ｃ】
0006894532.tif 000005
【図３】
0006894532.tif 000006
【図４】
0006894532.tif 000007
【図５】
0006894532.tif 000008
【図６】
0006894532.tif 000009