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

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

▶ グーグル インコーポレイテッドの特許一覧

特許7242847光ネットワークを用いた再構成可能な計算ポッド
<>
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図1
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図2
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図3
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図4
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図5
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図6
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図7
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図8
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図9
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図10
  • 特許-光ネットワークを用いた再構成可能な計算ポッド 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-10
(45)【発行日】2023-03-20
(54)【発明の名称】光ネットワークを用いた再構成可能な計算ポッド
(51)【国際特許分類】
   G06F 15/177 20060101AFI20230313BHJP
   G06F 15/173 20060101ALI20230313BHJP
【FI】
G06F15/177 A
G06F15/173 682
G06F15/173 683D
【請求項の数】 20
(21)【出願番号】P 2021522036
(86)(22)【出願日】2019-12-18
(65)【公表番号】
(43)【公表日】2022-04-18
(86)【国際出願番号】 US2019067100
(87)【国際公開番号】W WO2020180387
(87)【国際公開日】2020-09-10
【審査請求日】2021-06-17
(31)【優先権主張番号】62/814,757
(32)【優先日】2019-03-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/381,951
(32)【優先日】2019-04-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】パティル,ニシャント
(72)【発明者】
【氏名】ジョウ,シアン
(72)【発明者】
【氏名】スウィング,アンドリュー
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2006-146864(JP,A)
【文献】特開2016-091069(JP,A)
【文献】特表2017-527031(JP,A)
【文献】特表2016-504668(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/16-15/177
(57)【特許請求の範囲】
【請求項1】
1つ以上のデータ処理装置によって実行される方法であって、前記方法は、
第1の計算ワークロードを実行するために要求される計算ノードを指定する要求データを受信することを含み、前記要求データは、前記計算ノードのn(nは、2以上である)次元目標構成を指定し、
各々がm(mは、2以上である)次元構成の計算ノードを含む1組のビルディングブロックを含むスーパポッドから、組み合わせられると、前記要求データによって指定された前記n次元目標構成に一致する前記ビルディングブロックの部分セットを選択することを含み、前記1組のビルディングブロックは、前記n次元の各次元のための1つ以上の光回路スイッチを含む光ネットワークに接続され、各ビルディングブロックは、当該ビルディングブロックの各次元に沿った複数のセグメントの計算ノードを含み、
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを含む計算ノードの第1のワークロードクラスタを生成することを含み、
前記生成することは、
前記第1のワークロードクラスタの各次元について、当該次元のための前記1つ以上の光回路スイッチに含まれるそれぞれのルーティングデータを前記計算ノードのn次元目標構成に基づいて更新することによって、当該次元のための前記1つ以上の光回路スイッチを構成することを含み、前記第1のワークロードクラスタの各次元にそれぞれ対応する前記1つ以上の光回路スイッチの前記それぞれのルーティングデータは、前記第1のワークロードクラスタの前記次元に沿って、前記第1の計算ワークロードのデータをどのように前記計算ノードの間にルーティングするを指定し、
前記第1のワークロードクラスタの前記計算ノードに、前記第1の計算ワークロードを実行させることを含む、方法。
【請求項2】
前記要求データは、異なる種類の計算ノードを指定し、
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを選択することは、前記要求データによって指定される各種類の計算ノードについて、前記指定された種類の1つ以上の計算ノードを含むビルディングブロックを選択することを含む、請求項1に記載の方法。
【請求項3】
前記スーパポッドの各次元の前記それぞれのルーティングデータは、当該次元に対応する前記1つ以上の光回路スイッチのうちの1つについて光回路スイッチルーティングテーブルを含む、請求項1または2に記載の方法。
【請求項4】
前記光ネットワークは、前記n次元の各次元について、当該次元に沿った計算ノードの間にデータをルーティングする当該光ネットワークの1つ以上の光回路スイッチを含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
記光ネットワークは、各次元の各セグメントについて、前記第1のワークロードクラスタ内の各ビルディングブロックに対応する計算ノードセグメントの間にデータをルーティングする当該光ネットワークの光回路スイッチを含む、請求項4に記載の方法。
【請求項6】
各ビルディングブロックは、3次元トーラス状計算ノードまたはメッシュ状計算ノードのうちの1つを含む、請求項1から5のいずれか1項に記載の方法。
【請求項7】
前記スーパポッドは、複数のワークロードクラスタを含み、
各ワークロードクラスタは、前記ビルディングブロックの異なる部分セットを含み、他のワークロードクラスタとは異なるワークロードを実行する、請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記第1のワークロードクラスタの特定のビルディングブロックが故障したことを示すデータを受信することと、
利用可能なビルディングブロックを用いて前記特定のビルディングブロックを置換することとをさらに含む、請求項1から7のいずれか1項に記載の方法。
【請求項9】
利用可能なビルディングブロックを用いて前記特定のビルディングブロックを置換することは、
前記第1のワークロードクラスタの前記特定のビルディングブロックと1つ以上の他のビルディングブロックとの間のデータルーティングを停止するように、前記光ネットワークの1つ以上の光回路スイッチのデータルーティングを更新することと、
前記第1のワークロードクラスタの前記利用可能なビルディングブロックと前記1つ以上の他のビルディングブロックとの間にデータをルーティングするように、前記光ネットワークの前記1つ以上の光回路スイッチのデータルーティングを更新することとを含む、請求項8に記載の方法。
【請求項10】
組み合わせられると、前記要求データによって指定される前記n次元目標構成に一致する前記ビルディングブロックの部分セットを選択することは、
前記要求データによって指定された前記n次元目標構成が、前記スーパポッド内の利用可能且つ健全な第2の量のビルディングブロックを超える第1の量のビルディングブロックを必要とすることを判断することと、
前記要求データによって指定された前記n次元目標構成が、前記スーパポッド内の利用可能且つ健全な前記第2の量のビルディングブロックを超える前記第1の量のビルディングブロックを必要とするという判断に応じて、
前記第1の計算ワークロードより低い優先度を有し且つ前記スーパポッドの1つ以上の第2のビルディングブロックによって実行されている1つ以上の第2の計算ワークロードを特定すること、前記1つ以上の第2のビルディングブロックは、前記スーパポッド内の利用可能且つ健全なビルディングブロックとは異なり、および、
前記1つ以上の第2の計算ワークロードの前記1つ以上の第2のビルディングブロックを、前記第1の計算ワークロードのための前記ワークロードクラスタに割り当て直すこととを含み、
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを含む前記計算ノードの前記第1のワークロードクラスタを生成することは、当該ビルディングブロックの部分セットを生成するために、前記1つ以上の第2の計算ワークロードの前記1つ以上の第2のビルディングブロックと前記利用可能且つ健全なビルディングブロックを組み合わせることを有する、請求項1から9のいずれか1項に記載の方法。
【請求項11】
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを含む計算ノードの前記ワークロードクラスタを生成することは、前記ワークロードクラスタの各次元について、前記1つ以上の第2の計算ワークロードの前記1つ以上の第2のビルディングブロックの各ビルディングブロックが、前記1つ以上の第2の計算ワークロードのビルディングブロックではなく、前記第1のワークロードクラスタに割り当てられた前記利用可能且つ健全なビルディングブロックと通信するように、当該次元のための前記1つ以上の光回路スイッチの各々のルーティングデータを再構成することを含む、請求項10に記載の方法。
【請求項12】
システムであって、
データ処理装置、
コンピュータプログラムをエンコードしたコンピュータ記憶媒体とを備え、
前記プログラムは、前記データ処理装置によって実行されると、前記データ処理装置に以下の動作を実行させるデータ処理装置命令を含み、前記動作は、
第1の計算ワークロードを実行するために要求される計算ノードを指定する要求データを受信することを含み、前記要求データは、前記計算ノードのn(nは、2以上である)次元目標構成を指定し、
各々がm(mは、2以上である)次元構成の計算ノードを含む1組のビルディングブロックを含むスーパポッドから、組み合わせられると、前記要求データによって指定された前記n次元目標構成に一致する前記ビルディングブロックの部分セットを選択することを含み、前記1組のビルディングブロックは、前記n次元の各次元のための1つ以上の光回路スイッチを含む光ネットワークに接続され、各ビルディングブロックは、当該ビルディングブロックの各次元に沿った複数のセグメントの計算ノードを含み、
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを含む計算ノードの第1のワークロードクラスタを生成することを含み、
前記生成することは、
前記第1のワークロードクラスタの各次元について当該次元のための前記1つ以上の光回路スイッチに含まれるそれぞれのルーティングデータを前記計算ノードの前記n次元目標構成に基づいて更新することによって、当該次元のための前記1つ以上の光回路スイッチを構成することを含み、前記第1のワークロードクラスタの各次元にそれぞれ対応する前記1つ以上の光回路スイッチの前記それぞれのルーティングデータは、前記第1のワークロードクラスタの前記次元に沿って、前記第1の計算ワークロードのデータをどのように前記計算ノードの間にルーティングするを指定し、
前記第1のワークロードクラスタの前記計算ノードに、前記第1の計算ワークロードを実行させることを含む、システム。
【請求項13】
前記要求データは、異なる種類の計算ノードを指定し、
前記n次元目標構成に一致する前記ビルディングブロックの部分セットを選択することは、前記要求データによって指定された各種類の計算ノードについて、前記指定された種類の1つ以上の計算ノードを含むビルディングブロックを選択することを含む、請求項12に記載のシステム。
【請求項14】
前記スーパポッドの各次元の前記それぞれのルーティングデータは、当該次元に対応する前記1つ以上の光回路スイッチのうちの1つについて光回路スイッチルーティングテーブルを含む、請求項12または13に記載のシステム。
【請求項15】
前記光ネットワークは、前記n次元の各次元について、当該次元に沿った計算ノードの間にデータをルーティングする当該光ネットワークの1つ以上の光回路スイッチを含む、請求項12から14のいずれか1項に記載のシステム。
【請求項16】
記光ネットワークは、各次元の各セグメントについて、前記第1のワークロードクラスタ内の各ビルディングブロックに対応する計算ノードセグメントの間にデータをルーティングする当該光ネットワークの光回路スイッチを含む、請求項15に記載のシステム。
【請求項17】
各ビルディングブロックは、3次元トーラス状計算ノードまたはメッシュ状計算ノードのうちの1つを含む、請求項12から16のいずれか1項に記載のシステム。
【請求項18】
前記スーパポッドは、複数のワークロードクラスタを含み、
各ワークロードクラスタは、前記ビルディングブロックの異なる部分セットを含み、他のワークロードクラスタとは異なるワークロードを実行する、請求項12から17のいずれか1項に記載のシステム。
【請求項19】
前記動作は、
前記第1のワークロードクラスタの特定のビルディングブロックが故障したことを示すデータを受信することと、
利用可能なビルディングブロックを用いて前記特定のビルディングブロックを置換することとを含む、請求項12から18のいずれか1項に記載のシステム。
【請求項20】
請求項1から11のいずれか1項に記載の方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
いくつかの計算ワークロード、例えば機械学習トレーニングは、ワークロードを効率的に処理するために多くの処理ノードを必要とする。処理ノードは、相互接続ネットワークを介して互いに通信することができる。例えば、機械学習トレーニングの場合、処理ノードは、互いに通信することによって、最適な深層学習モデルに収束することができる。相互接続ネットワークは、処理ユニットが収束を達成する速度および効率にとって重要である。
【0002】
機械学習および他のワークロードのサイズおよび複雑性が変化するため、複数の処理ノードを含むスーパコンピュータの固定した構成は、スーパコンピュータの利用可能性、拡張性および性能を制限してしまう場合がある。例えば、複数の処理ノードからなる特定の構成を接続する固定の相互接続ネットワークを有するスーパコンピュータのいくつかの処理ノードが故障した場合、スーパコンピュータは、故障した処理ノードを置換することができないため、利用可能性および性能が低下する。また、いくつかの特定の構成の性能は、故障したノードに関係なく他の構成の性能よりも高くなる場合がある。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
本明細書は、光ネットワークを用いて、ワークロードクラスタを生成する計算ノードのスーパポートを再構成できる技術を説明する。
【0004】
概して、本明細書に記載された主題の1つの発明的態様は、計算ワークロードを実行するために要求される計算ノードを指定する要求データを受信することを含む方法に具現化することができる。要求データは、計算ノードのn(nは、2以上である)次元目標構成を指定する。各々がm(mは、2以上である)次元構成の計算ノードを含む1組のビルディングブロックを含むスーパポッドから、組み合わせられると、要求データによって指定されたn次元目標構成に一致するビルディングブロックの部分セットを選択する。上記の1組のビルディングブロックは、n次元の各次元のための1つ以上の光回路スイッチを含む光ネットワークに接続される。ビルディングブロックの部分セットを含む計算ノードのワークロードクラスタを生成する。ワークロードクラスタは、特定の計算ワークロードの計算または実行に専用の計算ノードのクラスタである。生成することは、ワークロードクラスタの各次元について、当該次元のための1つ以上の光回路スイッチのそれぞれのルーティングデータを構成することを含む。ワークロードクラスタの各次元にそれぞれ対応するルーティングデータは、ワークロードクラスタの各次元に沿って、計算ワークロードのデータをどのように計算ノードの間にルーティングすることを指定する。ワークロードクラスタ内の計算ノードは、計算ワークロードを実行する。
【0005】
これらおよび他の実装は、必要に応じて、以下の特徴のうち、1つ以上を含むことができる。いくつかの態様において、要求データは、異なる種類の計算ノードを指定する。ビルディングブロックの部分セットを選択することは、要求データによって指定される各種類の計算ノードについて、指定された種類の1つ以上の計算ノードを含むビルディングブロックを選択することを含むことができる。
【0006】
いくつかの態様において、スーパポッドの各次元のそれぞれのルーティングデータは、1つ以上の光回路スイッチのうちの1つについて光回路スイッチルーティングテーブルを含む。いくつかの態様において、光ネットワークは、n次元の各次元について、当該次元に沿った計算ノードの間にデータをルーティングする当該光ネットワークの1つ以上の光回路スイッチを含む。各ビルディングブロックは、当該ビルディングブロックの各次元に沿った複数のセグメントの計算ノードを含むことができる。光ネットワークは、各次元の各セグメントについて、ワークロードクラスタ内の各ビルディングブロックに対応する計算ノードセグメントの間にデータをルーティングする当該光ネットワークの光回路スイッチを含むことができる。
【0007】
いくつかの態様において、各ビルディングブロックは、3次元トーラス状計算ノードまたはメッシュ状計算ノードのうちの1つを含む。いくつかの態様において、スーパポッドは、複数のワークロードクラスタを含み、各ワークロードクラスタは、ビルディングブロックの異なる部分セットを含み、他のワークロードクラスタとは異なるワークロードを実行することができる。
【0008】
いくつかの態様は、ワークロードクラスタの特定のビルディングブロックが故障したことを示すデータを受信することと、利用可能なビルディングブロックを用いて特定のビルディングブロックを置換することとを含む。利用可能なビルディングブロックを用いて特定のビルディングブロックを置換することは、ワークロードクラスタの特定のビルディングブロックと1つ以上の他のビルディングブロックとの間のデータルーティングを停止するように、光ネットワークの1つ以上の光回路スイッチのデータルーティングを更新することと、ワークロードクラスタの利用可能なビルディングブロックと1つ以上の他のビルディングブロックとの間にデータをルーティングするように、光ネットワークの1つ以上の光回路スイッチのデータルーティングを更新することとを含むことができる。
【0009】
いくつかの態様において、組み合わせられると、要求データによって指定されたn次元目標構成に一致するビルディングブロックの部分セットを選択することは、要求データによって指定されたn次元構成が、スーパポッド内の利用可能且つ健全な第2の量のビルディングブロックを超える第1の量のビルディングブロックを必要とすることを判断することと、要求データによって指定されたn次元構成が、スーパポッド内の利用可能且つ健全な第2の量のビルディングブロックを超える第1の量のビルディングブロックを必要とするという判断に応じて、計算ワークロードより低い優先度を有し且つスーパポッドの他のビルディングブロックによって実行されている1つ以上の第2の計算ワークロードを特定こと、および1つ以上の第2の計算ワークロードの1つ以上のビルディングブロックを、計算ワークロードのワークロードクラスタに割り当て直すこととを含む。ビルディングブロックの部分セットを含む計算ノードのワークロードクラスタを生成することは、1つ以上の第2の計算ワークロードの1つ以上のビルディングブロックをビルディングブロックの部分セットに含めることを有することができる。
【0010】
いくつかの態様において、ビルディングブロックの部分セットを含む計算ノードのワークロードクラスタを生成することは、ワークロードクラスタの各次元について、1つ以上の第2の計算ワークロードの1つ以上のビルディングブロックの各ビルディングブロックが、1つ以上の第2の計算ワークロードのビルディングブロックではなく、ワークロードクラスタの他のビルディングブロックと通信するように、当該次元のための1つ以上の光回路スイッチの各々のルーティングデータを再構成することを含む。
【0011】
本明細書に記載された主題は、以下の1つ以上の利点を実現するように、特定の実施形態に実装されてもよい。光ネットワークを用いて、ワークロードを実行するための計算ノードのクラスタを動的に構成することによって、他の計算ノードで故障したまたはオフラインした計算ノードを容易に置換できるため、計算ノードの利用可能性がより高くなる。計算ノードの柔軟構成によって、計算ノードの性能がより高くなり、各ワークロードを実行するための計算ノードの適切な数をより効率で割り当てることができ、各ワークロードを実行するための計算ノードの構成を最適化(または改善)することができる。複数の種類の計算ノードを含むスーパポッドを使用して、例えば、データセンタまたは他の場所において互いに物理的に近接する(例えば、同一のラックにおいて互いに接続されるおよび/または隣接する)計算ノードに限定されず、計算ノードの適切な数および構成だけでなく、各ワークロードを実行するための計算ノードの適切な種類を含むワークロードクラスタを生成することができる。代わりに、光ネットワークは、様々な形状のワークロードクラスタを可能にする。これらのワークロードクラスタにおいて、計算ノードは、互いに任意の物理的位置に配置されても、互いに隣接するように動作する。
【0012】
また、光ネットワークを用いてポッドを構成することによって、故障の隔離およびワークロードのより良いセキュリティを提供する。例えば、いくつかの従来のスーパコンピュータは、スーパコンピュータを構成する様々なコンピュータの間にトラフィックをルーティングする。1台のコンピュータが故障すると、通信経路が中断する。光ネットワークを用いてデータを迅速に再ルーティングすることができ、および/または利用可能な計算ノードを用いて故障した計算ノードを置換することができる。また、光回路スイッチング(OCS)スイッチによって提供されたワークロード間の物理的分離、例えば、異なる光路の物理的分離は、脆弱なソフトウェアを使用した分離を管理することに比べて、同一のスーパポートに実行されている様々なワークロード間により良いセキュリティを提供する。
【0013】
また、光ネットワークを用いてビルディングブロックを接続することによって、パケットスイッチングネットワークに比べて、ビルディングブロックの間にデータを送信する遅延を低減することができる。例えば、パケットスイッチングの場合、スイッチがパケットを受信し、バッファリングし、別のポートで再び送信する必要があるため、遅延が長くなる。OCSスイッチを用いてビルディングブロックを接続することによって、途中でパケットスイッチングまたはバッファリングを行わない真のエンドツーエンド光路を提供することができる。
【0014】
以下、図面を参照して、前述した主題の様々な特徴および利点を説明する。さらなる特徴および利点は、本明細書および特許請求の範囲に記載された主題から明らかである。
【図面の簡単な説明】
【0015】
図1】例示的な処理システムが、計算ノードのワークロードクラスタを生成し、ワークロードクラスタを用いて計算ワークロードを実行する環境を示すブロック図である。
図2】例示的な論理スーパポッド、およびスーパポッド内の一部のビルディングブロックから生成された例示的なワークロードクラスタを示す図である。
図3】例示的なビルディングブロック、およびビルディングブロックを用いて生成された例示的なワークロードクラスタを示す図である。
図4】計算ノードから光回路スイッチング(OCS)スイッチまでの例示的な光リンクを示す図である。
図5】ビルディングブロックを形成するための論理的計算トレイを示す図である。
図6】1つの次元を省略した例示的なビルディングブロックのサブブロックを示す図である。
図7】例示的なビルディングブロックを示す図である。
図8】スーパポッドのOCSファブリックトポロジを示す図である。
図9】例示的なスーパポッドの構成要素を示す図である。
図10】ワークロードクラスタを生成し、ワークロードクラスタを用いて計算ワークロードを実行するための例示的なプロセスを示す流れ図である。
図11】故障したビルディングブロックを置換するように、光ネットワークを再構成するための例示的なプロセスを示す流れ図である。
【発明を実施するための形態】
【0016】
詳細な説明
様々な図面において、同様の参照番号および名称は、同様の要素を示す。
【0017】
一般的に、本明細書に記載されたシステムおよび技術は、光ネットワークファブリックを構成することによって、スーパポッドから計算ノードのワークロードクラスタを生成することができる。スーパポッドとは、光ネットワークを介して互いに接続されている計算ノードからなる複数のビルディングブロックのグループである。例えば、スーパポッドは、相互に接続された1組のビルディングブロックを含むことができる。各ビルディングブロックは、m次元構成、例えば2次元構成または3次元構成の複数の計算ノードを含むことができる。
【0018】
ユーザは、特定のワークロードを実行するために目標構成の計算ノードを指定することができる。例えば、ユーザは、機械学習ワークロードを提供し、機械学習演算を実行するための目標構成の計算ノードを指定することができる。目標構成は、n(nは、例えば2以上である)次元の各次元に沿った計算ノードの数を定義することができる。すなわち、目標構成は、ワークロードクラスタのサイズおよび形状を定義することができる。例えば、一部の機械学習モデルおよび計算は、非正方形トポロジでより良好に機能する。
【0019】
また、帯域幅の断面積は、例えば、データの転送を待機する計算ノードまたはアイドル計算サイクルから離脱する計算ノードにわたる計算を制限する可能性がある。計算ノードの全体にわたってワークをどのように割り当てるかおよびネットワークを介して様々な次元でどのくらいのデータを転送する必要があるかによって、ワークロードクラスタの形状は、ワークロードクラスタ内の計算ノードの性能に影響を及ぼす可能性がある。
【0020】
全ての計算ノードを用いて全ての計算ノードデータトラフィックを計算するワークロードの場合、立方体状のワークロードクラスタは、計算ノード間のホップ数を最小化することができる。ワークロードは、多くのローカル通信を有し、特定の次元に沿ってデータを隣接する1組の計算ノードに転送し、これらの隣接通信の多くを一体に連鎖する場合、他の次元よりも特定の次元に沿ってより多くの計算ノードを有する構成が有利である。したがって、ワークロードクラスタ内の計算ノードの構成を指定することをユーザに可能にさせることよって、ユーザは、ワークロードを実行するためにより良い性能をもたらす構成を指定することができる。
【0021】
異なる種類の計算ノードがスーパポッドに含まれる場合、要求は、ワークロードクラスタに含まれる各種類の計算ノードの数を指定することもできる。これによって、ユーザは、特定のワークロードを実行するためにより良好に動作する計算ノードの構成を指定することができる。
【0022】
ワークロードスケジューラは、例えば、ビルディングブロックの利用可能性、ビルディングブロックの健全性(例えば、動作中または故障中)、および/またはスーパポッド内のワークロードの優先度(例えば、スーパポッドの計算ノードによって実行されるワークロードの優先度)に基づいて、ワークロードクラスタのビルディングブロックを選択することができる。ワークロードスケジューラは、選択されたビルディングブロックを特定するデータおよびビルディングブロックの目標構成を光回路スイッチング(OCS)マネージャに提供することができる。OCSマネージャは、ビルディングブロックを互いに接続するように、光ネットワークの1つ以上のOCSスイッチを構成することによって、ワークロードクラスタを生成することができる。その後、ワークロードスケジューラは、ワークロードクラスタ内の計算ノード上で計算ワークロードを実行することができる。
【0023】
ワークロードクラスタ内のビルディングブロックのうちの1つが故障した場合、単にOCSスイッチを再構成することによって、別のビルディングブロックを用いて故障したビルディングブロックを迅速に置換することができる。例えば、ワークロードスケジューラは、故障したビルディングブロックを置換するように、スーパポッドから、利用可能なビルディングブロックを選択することができる。ワークロードスケジューラは、選択されたビルディングブロックを用いて故障したビルディングブロックを置換するように、OCSマネージャに命令することができる。その後、OCSマネージャは、選択されたビルディングブロックをワークロードクラスタ内の他のビルディングブロックに接続し、故障したビルディングブロックをワークロードクラスタ内のビルディングブロックに接続しないように、OCSスイッチを再構成することができる。
【0024】
図1は、例示的な処理システム130が、計算ノードのワークロードクラスタを生成し、ワークロードクラスタを用いて計算ワークロードを実行する環境100を示すブロック図である。処理システム130は、データ通信ネットワーク120、例えばローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組み合わせを介して、ユーザ装置110から、計算ワークロード112を受信することができる。例示として、ワークロード112は、ソフトウェアアプリケーション、機械学習モデル、例えば、機械学習モデルのトレーニングおよび/または使用、ビデオの符号化および復号、ならびにデジタル信号処理ワークロードを含む。
【0025】
ユーザは、ワークロード112を実行するために要求される計算ノードのクラスタ114を指定することができる。例えば、ユーザは、要求される計算ノードのクラスタの目標形状および目標サイズを指定することができる。すなわち、ユーザは、複数の次元に沿った計算ノードの数量および計算ノードの形状を指定することができる。例えば、計算ノードが3次元x、yおよびzに沿って配置されている場合、ユーザは、各次元の計算ノードの数を指定することができる。また、ユーザは、クラスタに含まれる1つ以上の種類の計算ノードを指定することができる。以下で説明するように、処理システム130は、異なる種類の計算ノードを含むことができる。
【0026】
以下で説明するように、処理システム130は、ビルディングブロックを用いて、目標形状および目標サイズのクラスタに合致するワークロードクラスタを生成することができる。各ビルディングブロックは、m次元、例えば3次元に配置された複数の計算ノードを含むことができる。したがって、ユーザは、複数の次元の各次元のビルディングブロックの数を指定することにより、目標形状および目標サイズを指定することができる。例えば、処理システム130は、ユーザ装置110にユーザインターフェイスを提供することができる。このユーザインターフェイスによって、ユーザは、各次元に沿った最大数のビルディングブロックを選択することができる。
【0027】
ユーザ装置110は、ワークロード112と、要求されるクラスタ114を指定するデータとを処理システム130に提供することができる。例えば、ユーザ装置110は、ネットワーク120を介して、ワークロード112と、要求されるクラスタ114を指定するデータとを含む要求データを処理システム130に提供することができる。
【0028】
処理システム130は、セルスケジューラ140および1つ以上のセル150を含む。セル150は、1つ以上のスーパポッドからなるグループである。例えば、図示されたセル150は、4つのスーパポッド152~158を含む。各スーパポッド152~158は、本明細書においてビルディングブロックプールとも称される1組のビルディングブロック160を含む。この例において、各スーパポッド152~158は、64個のビルディングブロック160を含む。しかしながら、スーパポッド152~158は、他の数のビルディングブロック160、例えば、20、50、100、または別の適切な数のビルディングブロック160を含むことができる。また、スーパポッド152~158は、異なる数のビルディングブロック160を含むことができる。例えば、スーパポッド152は、64個のビルディングブロックを含むことができ、スーパポッド152は、100個のビルディングブロックを含む。
【0029】
以下でより詳細に説明するように、各ビルディングブロック160は、2次元以上に配置された複数の計算ノードを含むことができる。例えば、ビルディングブロック160は、3次元に沿って配置された64個の計算ノード、具体的には各次元に沿って配置された4つの計算ノードを含むことができる。本明細書において、このような計算ノードの構成は、x次元に沿って配置された4つの計算ノード、y次元に沿って配置された4つの計算ノード、およびz次元沿って配置された4つの計算ノードを含む4×4×4ビルディングブロックとして呼ばれる。他の数の次元、例えば2次元および各次元に沿って他の数の計算ノード、例えば3×1、2×2×2、6×2、2×3×4も可能である。
【0030】
また、ビルディングブロックは、1つのみの計算ノードを含んでもよい。しかしながら、後述するように、ワークロードクラスタを生成するために、ビルディングブロック間の光リンクは、ビルディングブロックを互いに接続するように構成されている。したがって、より小さいビルディングブロック、例えば1つのみの計算ノードを含むビルディングブロックは、より高い柔軟性でワークロードクラスタを生成することができるが、より多くのOCSスイッチ構成およびより多くの光ネットワーク要素(例えば、ケーブルおよびスイッチ)を必要とする。ビルディングブロック内の計算ノードの数は、所望のワークロードクラスタの柔軟性と、ワークロードクラスタを生成するために互いに接続する必要のあるビルディングブロックと、必要なOCSスイッチの数との間のトレードオフに基づいて、選択されてもよい。
【0031】
ビルディングブロック160の各計算ノードは、特定用途向け集積回路(ASIC)、例えば機械学習ワークロード用のテンソル処理ユニット(TPU)、グラフィック処理ユニット(GPU)、または他の種類の処理ユニットを含むことができる。例えば、各計算ノードは、処理ユニットを含む単一のプロセッサチップであってもよい。
【0032】
いくつかの実装形態において、スーパポッド内の全てのビルディングブロック160は、同様の計算ノードを有する。例えば、スーパポッド152は、機械学習ワークロードを実行するために、64個のビルディングブロックを含み、各ビルディングブロックは、4×4×4構成の64個のTPUを有することができる。また、スーパポッドは、異なる種類の計算ノードを含むことができる。例えば、スーパポッド154は、TPUを有する60個のビルディングブロックと、機械学習ワークロード以外のタスクを実行する専用処理ユニットを有する4個のビルディングブロックとを含むことができる。このようにして、ワークロードを実行するためのワークロードクラスタは、異なる種類の計算ノードを含むことができる。スーパポッドは、冗長性のためにおよび/またはスーパポッド内で複数のワークロードの実行を可能にするために、各種類の計算ノードからなる複数のビルディングブロックを含むことができる。
【0033】
いくつかの実装形態において、スーパポッド内の全てのビルディングブロック160は、同様の構成、例えば同様のサイズおよび形状を有する。例えば、スーパポッド152内の各ビルディングブロック160は、4×4×4構成を有することができる。また、スーパポッドは、異なる構成のビルディングブロックを含むことができる。例えば、スーパポッド154は、32個の4×4×4構成のビルディングブロックと、32個の16×8×16構成のビルディングブロックとを含むことができる。異なるビルディングブロック構成は、同様のまたは異なる計算ノードを含むことができる。例えば、TPUを含むビルディングブロックは、GPUを含むビルディングブロックとは異なる構成を有してもよい。
【0034】
スーパポッドは、異なる階層のビルディングブロックを含むことができる。例えば、スーパポッド152は、4×4×4構成を有する基本ビルディングブロックを含むことができる。また、スーパポッド152は、より多くの計算ノードからなる中級ビルディングブロックを含むことができる。例えば、中級ビルディングブロックは、例えば8つの基本ビルディングブロックから形成された8×8×8構成を有することができる。このようにして、基本ビルディングブロックを接続することによってより大きなワークロードクラスタを生成することよりも、中級ビルディングブロックを用いて、少ないリンクでより大きなワークロードクラスタを生成することができる。また、スーパポッドに基本ビルディングブロックを含むことによって、中級ビルディングブロック内の計算ノードの数を必要としないより小さなワークロードクラスタを柔軟的に形成することができる。
【0035】
セル150内のスーパポッド152~158は、同様のまたは異なる種類の計算ノードからなるビルディングブロックを含むことができる。例えば、セル150は、TPUビルディングブロックからなる1つ以上のスーパポッドと、GPUビルディングブロックからなる1つ以上のスーパポッドとを含むことができる。セル150内の異なるスーパポッド152~158のビルディングブロックのサイズおよび形状は、同様であってもよく、異なってもよい。
【0036】
また、各セル150は、共有データストレージ162および共有補助計算要素164を含む。セル150内の各スーパポッド152~158は、共有データストレージ162を使用して、例えばスーパポッド152~158に実行されているワークロードによって生成されたデータを記憶することができる。共有データストレージ162は、ハードドライブ、ソリッドステートドライブ、フラッシュメモリ、および/または他の適切なデータ記憶装置を含むことができる。共有補助計算要素は、セル150内で共有されるCPU(例えば、汎用CPU装置)、GPU、および/または他のアクセラレータ(例えば、ビデオ復号アクセラレータまたは画像復号アクセラレータ)を含むことができる。また、補助計算要素164は、ストレージ機器、メモリ機器、および/またはネットワークを介して計算ノードによって共有され得る他の計算要素を含むことができる。
【0037】
セルスケジューラ140は、ユーザ装置110から受信した各ワークロードを実行するために、セル150および/またはセル150のスーパポッド152~158を選択することができる。セルスケジューラ140は、ワークロードを実行するために指定された目標構成、スーパポッド152~158内のビルディングブロック160の利用可能性、およびスーパポッド152~158内のビルディングブロックの健全性に基づいて、スーパポッドを選択することができる。例えば、セルスケジューラ140は、ワークロードを実行するために、目標構成のワークロードクラスタを生成するように十分な数の利用可能且つ健全なビルディングブロックを少なくとも含むスーパポッドを選択することができる。要求データが計算ノードの種類を指定する場合、セルスケジューラ140は、指定された種類の計算ノードを含む十分な数の利用可能且つ健全なビルディングブロックを少なくとも含むスーパポッドを選択することができる。
【0038】
以下で説明するように、各スーパポッド152~158は、ワークロードスケジューラおよびOCSマネージャを含んでもよい。セルスケジューラ140がセル150のスーパポッドを選択する場合、セルスケジューラ140は、そのスーパポッド150のワークロードスケジューラに、ワークロードおよび要求されたクラスタを指定するデータを提供することができる。以下でより詳細に説明するように、ワークロードスケジューラは、ビルディングブロックの利用可能性および健全性、必要に応じてスーパポッド内のワークロードの優先度に基づいて、スーパポッドのビルディングブロックから、ワークロードクラスタを生成するように接続すべき1組のビルディングブロックを選択することができる。例えば、以下で説明するように、ワークロードスケジューラがスーパポッド内の利用可能且つ健全なビルディングブロックの数よりも多くのビルディングブロックを含むワークロードクラスタを要求する要求を受信する場合、ワークロードスケジューラは、より低い優先度ワークロードを実行するためのビルディングブロックを、要求されたワークロードクラスタに割り当て直すことができる。ワークロードスケジューラは、選択されたビルディングブロックを特定するデータを、OCSマネージャに提供することができる。OCSマネージャは、ビルディングブロックを互いに接続するように1つ以上のOCSスイッチを構成することによって、ワークロードクラスタを生成することができる。その後、ワークロードスケジューラは、ワークロードクラスタ内の計算ノード上でワークロードを実行することができる。
【0039】
いくつかの実装形態において、セルスケジューラ140は、例えば、ワークロードを実行するためにスーパポッド152~158を選択するときに、様々なセル150とスーパポッド152~158との間のロードをバランスする。例えば、ワークロードを処理する能力のあるビルディングブロックを含む2つ以上のスーパポッドの間に1つのスーパポッドを選択する場合、セルスケジューラ140は、最も高い能力を有するスーパポッド、例えば、最も利用可能且つ健全なビルディングブロック、または全体的な能力が最も高いセルのスーパポッドを選択することができる。利用可能且つ健全なビルディングブロックは、別のワークロードを実行していないまたは起動中のワークロードクラスタの一部ではない且つ故障していないビルディングブロックである。セルスケジューラは、ビルディングブロックのインデックスを記憶することができる。各ビルディングブロックのインデックスは、ビルディングブロックが健全(例えば、故障していない)であるかおよび/または利用可能(例えば、別のワークロードを実行していないまたは起動中のワークロードクラスタの一部)であるかを示すデータを含むことができる。
【0040】
いくつかの実装形態において、セルスケジューラ140は、ワークロードを実行するための目標構成を決定することができる。例えば、セルスケジューラ140は、ワークロードの推定される計算需要および利用可能な1つ以上の種類の計算ノードのスループットに基づいて、ビルディングブロックの目標構成を決定することができる。この例において、セルスケジューラ140は、決定された目標構成をスーパポッドのワークロードスケジューラに提供することができる。
【0041】
図2は、例示的な論理スーパポッド210と、スーパポッド210内の一部のビルディングブロックから生成された例示的なワークロードクラスタ220、230、および240とを示す図である。この例において、スーパポッド210は、64個のビルディングブロックを含み、各ビルディングブロックは、4×4×4構成を有する。本明細書の多くの例において、4×4×4構成のビルディングブロックを説明したが、当該技術は、他の構成のビルディングブロックに適用されてもよい。
【0042】
後述するように、スーパポッド210内の斜線付きビルディングブロックは、ワークロードに割り当てられるビルディングブロックである。白いビルディングブロックは、利用可能且つ健全なビルディングブロックである。黒いビルディングブロックは、例えば故障によってワークロードクラスタの生成に使用できない不健全なビルディングブロックである。
【0043】
ワークロードクラスタ220は、スーパポッド210のビルディングブロックのうち、4つの4×4×4ビルディングブロックを含む8×8×4ポッドである。すなわち、ワークロードクラスタ220は、x次元に沿った8つの計算ノードと、y次元に沿った8つの計算ノードと、z次元に沿った4つの計算ノードとを有する。各ビルディングブロックが各次元に沿って4つの計算ノードを有するため、ワークロードクラスタ220は、x次元に沿った2つのビルディングブロックと、y次元に沿った2つのビルディングブロックと、z次元に沿った1つのビルディングブロックとを含む。
【0044】
スーパポッド210内での、それらの位置を示すように、ワークロードクラスタ220の4つのビルディングブロックは、斜線で示されている。図示のように、ワークロードクラスタ220のビルディングブロックは、互いに隣接していない。以下でより詳細に説明するように、光ネットワークを使用することによって、スーパポッド210内のビルディングブロックの相対位置に関係なく、スーパポッド210内のビルディングブロックの任意の組み合わせから、ワークロードクラスタを生成することができる。
【0045】
ワークロードクラスタ230は、スーパポッド210のビルディングブロックのうち、8つのビルディングブロックを含む8×8×8ポッドである。具体的には、ワークロードクラスタ230は、各次元に沿って2つのビルディングブロックを含む。これによって、ワークロードクラスタ230は、各次元に沿って8つの計算ノードを含む。スーパポッド210内での、それらの位置を示すように、ワークロードクラスタ230内のビルディングブロックは、縦線で示されている。
【0046】
ワークロードクラスタ240は、スーパポッド210のビルディングブロックのうち、32個のビルディングブロックを含む16×8×16ポッドである。具体的には、ワークロードクラスタ240は、x次元に沿った4つのビルディングブロックと、y次元に沿った2つのビルディングブロックと、z次元に沿った4つのビルディングブロックとを含む。これによって、このワークロードクラスタは、x次元に沿った16個の計算ノードと、y次元に沿った8つの計算ノードと、z次元に沿った16個の計算ノードとを含む。スーパポッド210内での、それらの位置を示すように、ワークロードクラスタ240内のビルディングブロックは、網目で示されている。
【0047】
ワークロードクラスタ220、230および240は、単にワークロードを実行するために生成され得るスーパポッド210のクラスタのいくつかの例である。ワークロードクラスタは、多くの他の構成を有してもよい。例示のワークロードクラスタ220、230および240は、矩形を有するが、他の形状を有してもよい。
【0048】
ワークロードクラスタ220、230および240を含むワークロードクラスタの形状は、物理的な形状ではなく、論理的な形状である。光ネットワークは、論理構成においてワークロードクラスタが物理的に接続されるように、ビルディングブロックが各次元に沿って互いに通信するように構成される。しかしながら、物理的なビルディングブロックおよび対応する計算ノードは、様々な方法でデータセンタ内で物理的に配置されてもよい。ワークロード220、230および240のビルディングブロックは、スーパポッド210内の全てのビルディングブロックが光ネットワークに接続されることを除いて、スーパポッド210内のビルディングブロック間の物理的関係に関係なく、任意の利用可能且つ健全なビルディングブロックから選択することができる。例えば、上記で説明され、図2に図示されたように、ワークロードクラスタ220、230および240は、物理的に隣接していないビルディングブロックを含む。
【0049】
さらに、ワークロードクラスタの論理構成は、スーパポッド内のビルディングブロックの物理的構成によって制限されない。例えば、8行および8列のビルディングブロックを配置すると共に、z次元に沿って1つのみのビルディングブロックを配置してもよい。しかしながら、z次元に沿って複数のビルディングブロックを含む論理構成を作成するように光ネットワークを構成することによって、ワークロードクラスタを構成することができる。
【0050】
図3は、例示的なビルディングブロック310、およびビルディングブロック310を用いて生成された例示的なワークロードクラスタ320、330および340を示す図である。ビルディングブロック310は、各次元に沿った4つの計算ノードを含む4×4×4ビルディングブロックである。この例において、各次元のビルディングブロック310の各次元は、16個のセグメントを含み、各セグメントは、4つの計算ノードを含む。例えば、ビルディングブロック310の上部には、16個の計算ノードがある。16個の計算ノードのうち、y次元に沿ったセグメントは、1つの計算ノードと、ビルディングブロック310の底部の対応する最後の計算ノードを含む3つの他の計算ノードとを含む。例えば、y次元に沿った1つのセグメントは、計算ノード301~304を含む。
【0051】
ビルディングブロック310内の計算ノードは、導電性材料作られた内部リンク318、例えば銅ケーブルを介して互いに接続することができる。各次元の各セグメント内の計算ノードは、内部リンク318を介して接続することができる。例えば、1つの内部リンク318は、計算ノード301を計算ノード302に接続する。また、1つの内部リンク318は、計算ノード302を計算ノード303に接続する。別の内部リンク318は、計算ノード303を計算ノード304に接続する。同様に、他のセグメント内の計算ノードを接続することによって、ビルディングブロック310の計算ノード間の内部データ通信を提供することができる。
【0052】
また、ビルディングブロック310は、ビルディングブロック310を光ネットワークに接続するための外部リンク311~316を含む。光ネットワークは、ビルディングブロック310を他のビルディングブロックに接続する。この例において、ビルディングブロック310は、x次元に16個の外部入力リンク311を含む。すなわち、ビルディングブロック310は、x次元に沿った16個のセグメントの各セグメントについて外部入力リンク311を含む。同様に、ビルディングブロック310は、x次元に沿った各セグメントについて外部出力リンク312と、y次元に沿った各セグメントについて外部入力リンク313と、y次元に沿った各セグメントについて外部出力リンク314と、z次元に沿った各セグメントについて外部入力リンク315と、z次元に沿った各セグメントについて外部出力リンク316とを含む。いくつかのビルディングブロックは、4次元以上の構成、例えばトーラスを有することができるため、ビルディングブロック310は、ビルディングブロック310の各次元について同様の外部リンクを含むことができる。
【0053】
各外部リンク311~316は、対応する計算ノードのセグメント上の計算ノードを光ネットワークに接続するための光ファイバリンクであってもよい。例えば、各外部リンク311~316は、対応する計算ノードを光ネットワークのOCSスイッチに接続することができる。以下で説明するように、光ネットワークは、ビルディングブロック310のセグメントの各次元について1つ以上のOCSスイッチを含むことができる。すなわち、x次元の外部リンク311、312は、外部リンク313および314とは異なるOCSスイッチに接続される。以下に詳細に説明するように、OCSスイッチは、ビルディングブロックを他のビルディングブロックに接続することによって、ワークロードクラスタを生成するように構成されてもよい。
【0054】
ビルディングブロック310は、4×4×4メッシュ構成を有する。4×4×4(または他のサイズ)のビルディングブロックは、他の構成を有してもよい。例えば、ビルディングブロック310は、ワークロードクラスタ320と同様に、ラップアラウンドトーラスリンクを含む3次元トーラス構成を有してもよい。ワークロードクラスタ320は、ラップアラウンドトーラスリンク321~323を形成するように光ネットワークを構成することによって、単一のメッシュビルディングブロック310から生成されてもよい。
【0055】
トーラスリンク321~323は、各セグメントの一端と当該セグメントの他端との間のラップアラウンドデータ通信を提供する。例えば、トーラスリンク321は、x次元に沿った各セグメントの各端部に配置された計算ノードを、当該セグメントの他方の端部に配置された計算ノードに接続する。トーラスリンク321は、計算ノード325を計算ノード326に接続するリンクを含むことができる。同様に、トーラスリンク322は、計算ノード325を計算ノード327に接続するリンクを含むことができる。
【0056】
トーラスリンク321~323は、導電性ケーブル、例えば銅ケーブルであってもよく、または光リンクであってもよい。例えば、トーラスリンク321~323の光リンクは、対応する計算ノードを1つ以上のOCSスイッチに接続することができる。OCSスイッチは、各セグメントの一端から各セグメントの他端にデータをルーティングするように構成することができる。ビルディングブロック310は、各次元についてOCSスイッチを含むことができる。例えば、トーラスリンク321は、第1のOCSスイッチに接続することができ、第1のOCSスイッチは、x次元に沿った各セグメントの一端とx次元に沿った各セグメントの他端との間にデータをルーティングすることができる。同様に、トーラスリンク322は、第2のOCSスイッチに接続することができ、第2のOCSスイッチは、y次元に沿った各セグメントの一端とy次元に沿った各セグメントの他端との間にデータをルーティングすることができる。トーラスリンク322は、第3のOCSスイッチに接続することができ、第3のOCSスイッチは、z次元に沿った各セグメントの一端とz次元に沿った各セグメントの他端との間にデータをルーティングすることができる。
【0057】
ワークロードクラスタ330は、4×8×4ポッドを生成する2つのビルディングブロック338および339を含む。ビルディングブロック338および339の各々は、ビルディングブロック310またはワークロードクラスタ320と同様であってもよい。2つのビルディングブロックは、外部リンク337を介してy次元に沿って接続される。例えば、1つ以上のOCSスイッチは、ビルディングブロック338のy次元セグメントとビルディングブロック339のy次元セグメントとの間にデータをルーティングするように構成されてもよい。
【0058】
また、1つ以上のOCSスイッチは、全ての3次元に沿って、各セグメントの一端と各セグメントの他端との間にラップアラウンドリンク331~333を形成するように構成されてもよい。この例において、ラップアラウンドリンク333は、ビルディングブロック338のy次元セグメントの一端をビルディングブロック339のy次元セグメントの一端に接続することによって、2つのビルディングブロック338および339を組み合わせることによって生成されたy次元セグメントに完全なラップアラウンド通信を提供する。
【0059】
ワークロードクラスタ340は、8×8×8クラスタを生成する8つのビルディングブロック(1つは図示せず)を含む。各ビルディングブロック348は、ビルディングブロック310と同様であってもよい。x次元に沿って接続されたビルディングブロックは、外部リンク345A~354Cを介して接続される。同様に、y次元に沿って接続されたビルディングブロックは、外部リンク344A~344Cを介して接続され、z次元に沿って接続されたビルディングブロックは、外部リンク346A~346Cを介して接続される。例えば、1つ以上のOCSスイッチは、x次元セグメントの間にデータをルーティングするように構成されてもよく、1つ以上のOCSスイッチは、y次元セグメントの間にデータをルーティングするように構成されてもよく、1つ以上のOCSスイッチは、z次元セグメントの間にデータをルーティングするように構成されてもよい。各次元に沿って、図3に示されていないビルディングブロックを隣接するビルディングブロックに接続する追加の外部リンクがある。また、1つ以上のOCSスイッチは、3次元の全てに沿って、各セグメントの一端と各セグメントの他端との間にラップアラウンドリンク341~343を形成するように構成されてもよい。
【0060】
図4は、計算ノードからOCSスイッチまでの例示的な光リンク400を示す図である。スーパポッドの計算ノードは、データセンタラックのトレイに設置されてもよい。各計算ノードは、6つの高速電気リンクを含むことができる。そのうち2つの電気リンクは、計算ノードの回路基板に接続されてもよく、4つの電気リンクは、ポート410、例えばOSFP(Octal Small Form Factor Pluggable)ポートに接続されている外部電気コネクタ、例えばOSFPコネクタにルーティングされてもよい。この例において、ポート410は、電気リンク412を介して光モジュール420に接続される。光モジュール420は、必要に応じて、大きなデータセンタに配置された計算ノード間のデータ通信を提供するために、電気リンクを、外部リンクの長さで延在する、例えば1キロメートル(km)を超えて延長する光リンクに変換することができる。光モジュールの種類は、ビルディングブロックとOCSスイッチとの間の必要な長さおよびリンクの所望の速度および帯域幅に基づいて、変更されてもよい。
【0061】
光モジュール420は、光ファイバケーブル422および424介してサーキュレータ430に接続される。光ファイバケーブル422は、光モジュール420からサーキュレータ430にデータを送信するための1つ以上の光ファイバケーブルを含むことができる。光ファイバケーブル424は、サーキュレータ430からデータを受信するための1つ以上の光ファイバケーブルを含むことができる。例えば、光ファイバケーブル422および424は、双方向光ファイバまたは単方向TX/RX光ファイバの対を含むことができる。サーキュレータ430は、光ファイバの数を減らすことができる(例えば、単方向光ファイバを双方向光ファイバに変換することによって、2対の光ファイバケーブル432を一対に減らすことができる)。これは、典型的に、一体に変換された一対の光路(2つのファイバ)を収容する、OCSスイッチ440の単一のOCSポート445に一致する。いくつかの実装形態において、サーキュレータ430は、光モジュール420に一体化されてもよく、または光リンク400から省略されてもよい。
【0062】
図5~7は、複数の計算トレイを用いて4×4×4ビルディングブロックを形成する方法を示す。同様の技術を用いて、他のサイズおよび形状のビルディングブロックを形成することができる。
【0063】
図5は、4×4×4ビルディングブロックを形成するための論理的計算トレイ500を示す。4×4×4ビルディングブロックの基本ハードウェアブロックは、2×2×1トポロジを有する単一の計算トレイ500である。この例では、計算トレイ500は、x次元に沿った2つの計算ノード、y次元に沿った2つの計算ノード、およびz次元に沿った1つの計算ノードを含む。例えば、計算ノード501および502は、x次元セグメントを形成し、計算ノード503および504は、x次元セグメントを形成する。同様に、計算ノード501および503は、y次元セグメントを形成し、計算ノード502および504は、y次元セグメントを形成する。
【0064】
各計算ノード501~504は、内部リンク510、例えばプリント回路基板上の銅ケーブルまたはトレースを介して、2つの他の計算ノードに接続される。また、各計算ノードは、4つの外部ポートに接続される。計算ノード501は、外部ポート521に接続される。同様に、計算ノード502は、外部ポート522に接続され、計算ノード503は、外部ポート523に接続され、計算ノード504は、外部ポート524に接続される。上述したように、外部ポート521~524は、計算ノードをOCSスイッチに接続するOSFPポートまたは他のポートであってもよい。これらのポートは、銅ケーブルまたは光ファイバケーブルに取り付けられた光ファイバモジュールを収容することができる。
【0065】
計算ノード501~504の各々の外部ポート521~524は、1つのx次元ポートと、1つのy次元ポートと、2つのz次元ポートとを含む。その理由は、各計算ノード501~504は、既に内部リンク510を介してx次元およびy次元に沿った別の計算ノードに接続されているからである。2つのz次元外部ポートを含むことによって、各計算ノード501~504は、z次元に沿った2つの計算ノードに接続することができる。
【0066】
図6は、1次元(z次元)を省略した例示的なビルディングブロックのサブブロック600を示す図である。具体的には、サブブロック600は、2×2構成の計算トレイ、例えば、図1の2×2構成の計算トレイ500によって形成された4×4×1ブロックである。サブブロック600は、4つの2×2構成の計算トレイ620A~620Dを含む。各計算トレイ620A~620Dは、4つの2×2×1構成の計算ノード622を含む図5の計算トレイ500と同様であってもよい。
【0067】
計算トレイ620A~620Dの計算ノード622は、内部リンク631~634、例えば銅ケーブルを介して接続されてもよい。例えば、計算トレイ620Aの2つの計算ノード622は、内部リンク632を介して、y次元に沿って計算トレイ620Bの2つの計算ノード622に接続される。
【0068】
また、各計算トレイ620A~620Dの2つの計算ノード622は、x次元に沿って外部リンク640に接続される。同様に、各計算トレイ620A~620Dの2つの計算ノードは、y次元に沿って外部リンク641に接続される。具体的には、各x次元セグメントの端部に配置された計算ノードおよび各y次元セグメントの端部に配置された計算ノードは、外部リンク640に接続される。これらの外部リンク640は、例えば図4の光リンク400を介して、計算ノード、すなわち、計算ノードを含むビルディングブロックをOCSスイッチに接続する光ファイバケーブルであってもよい。
【0069】
4×4×4ビルディングブロックは、z次元に沿って、サブブロック600のうちの4つを互いに接続することによって形成されてもよい。例えば、各計算トレイ620A~620Aの計算ノード622は、内部リンクを介して、z次元に配置された他のサブブロック600上の対応する計算トレイの1つまたは2つの計算ノードに接続することができる。各z次元セグメントの端部に配置された計算ノードは、x次元セグメントおよびy次元セグメントの端部に配置された計算ノードと同様に、OCSスイッチに接続されている外部リンク640を含むことができる。
【0070】
図7は、例示的なビルディングブロック700を示す図である。ビルディングブロック700は、z次元に沿って接続された4つのサブブロック710A~710Dを含む。各サブブロック710A~710Dは、図6のサブブロック600と同様であってもよい。図7は、z次元に沿ったサブブロック710A~710Dの間の接続の一部を示している。
【0071】
具体的には、ビルディングブロック700は、z次元に沿って、サブブロック710A~710Dの計算トレイ715の対応する計算ノード716の間の内部リンク730~733を含む。例えば、内部リンク730は、z次元に沿った計算ノード0のセグメントを接続する。同様に、内部リンク731は、z次元に沿った計算ノード1のセグメントを接続し、内部リンク732は、z次元に沿った計算ノード8のセグメントを接続し、内部リンク733は、z次元に沿った計算ノード9のセグメントを接続する。図示されていないが、同様の内部リンクは、計算ノード2~7およびA~Fのセグメントを接続する。
【0072】
また、ビルディングブロック700は、z次元に沿った各セグメントの端部に配置された外部リンク720を含む。図示は、計算ノード0、1、8および9のセグメントの外部リンク720のみを示しているが、計算ノード2~7およびA~Fの各他のセグメントも外部リンク720を含む。外部リンクは、x次元およびy次元セグメントの端部に配置された外部リンクと同様に、セグメントをOCSスイッチに接続することができる。
【0073】
図8は、スーパポッドのOCSファブリックトポロジ800を示す図である。この例において、OCSファブリックトポロジは、64個のビルディングブロック805、すなわち、ビルディングブロック0~63を含むスーパポッドの4×4×4ビルディングブロックの各次元に沿って、各セグメントの別個のOCSスイッチを含む。4×4×4ビルディングブロック805は、x次元に沿った16個のセグメントと、y次元に沿った16個のセグメントと、z次元に沿った16個のセグメントとを含む。この例において、OCSファブリックトポロジは、16個のx次元OCSスイッチと、16個のy次元OCSスイッチと、16個のz次元OCSスイッチとを含み、合計で48個のOCSスイッチは、様々なワークロードクラスタを形成するように構成することができる。
【0074】
x次元の場合、OCSファブリックトポロジ800は、OCSスイッチ810を含む16個のOCSスイッチを含む。各ビルディングブロック805は、x次元に沿った各セグメントのOCSスイッチ810に接続された外部入力リンク811および外部出力リンク812を含む。これらの外部リンク811および812は、図4の光学リンク400と同様であってもよく、類似であってもよい。
【0075】
y次元の場合、OCSファブリックトポロジ800は、OCSスイッチ820を含む16個のOCSスイッチを含む。各ビルディングブロック805は、y次元に沿った各セグメントのOCSスイッチ810に接続された外部入力リンク821および外部出力リンク822を含む。これらの外部リンク821および822は、図4の光学リンク400と同様であってもよく、類似であってもよい。
【0076】
z次元の場合、OCSファブリックトポロジ800は、OCSスイッチ830を含む16個のOCSスイッチを含む。各ビルディングブロック805は、y次元に沿った各セグメントのOCSスイッチ810に接続された外部入力リンク821および外部出力リンク822を含む。これらの外部リンク821および822は、図4の光学リンク400と同様であってもよく、類似であってもよい。
【0077】
他の例において、複数のセグメントは、例えば、スーパポッド内のOCSの基数および/またはビルディングブロックの数に応じて、同一のOCSスイッチを共有することができる。例えば、1つのOCSスイッチがスーパポッド内の全てのビルディングブロックの全てのx次元セグメントについて十分な数のポートを有する場合、全てのx次元セグメントを当該OCSスイッチに接続することができる。別の例において、1つのOCSスイッチが十分な数のポートを有する場合、各次元の2つのセグメントは、当該OCSスイッチを共有することができる。しかしながら、スーパポッドの全てのビルディングブロックのセグメントを同一のOCSスイッチに接続することによって、単一のルーティングテーブルを用いて、これらのセグメントの計算ノードの間のデータ通信を行うことができる。また、各セグメントまたは各次元の別個のOCSスイッチを使用することによって、故障の対応および診断を単純化することができる。例えば、特定のセグメントまたは特定の次元のデータ通信に問題が存在する場合、特定のセグメントまたは特定の次元に複数のOCSを使用した場合よりも、潜在的に故障したOCSを特定することがより容易であろう。
【0078】
図9は、例示的なスーパポッド900の構成要素を示す図である。例えば、スーパポッド900は、図1の処理システム130のスーパポッドのうち、1つのスーパポッドであってもよい。例示的なスーパポッド900は、64個の4×4×4ビルディングブロック960を含み、これらのビルディングブロック960を使用して、計算ワークロード、例えば機械学習ワークロードを実行するためのワークロードクラスタを形成することができる。上述したように、各4×4×4ビルディングブロック960は、3次元の各次元に沿って配置された4つの計算ノードからなる32個の計算ノードを含む。例えば、ビルディングブロック960は、上述したビルディングブロック310、ワークロードクラスタ320、またはビルディングブロック700と同様であってもよく、類似であってもよい。
【0079】
例示的なスーパポッド900は、光ネットワーク970を含み、光ネットワーク970は、各ビルディングブロック960の96個の外部リンク931、932および933を介して、ビルディングブロックに接続された48個のOCSスイッチ930、940および950を含む。各外部リンクは、図4の光学リンク400と同様または類似の光ファイバリンクであってもよい。
【0080】
光ネットワーク970は、図8のOCSファブリックトポロジ800と同様に、各ビルディングブロックの各次元の各セグメントについてOCSスイッチを含む。x次元の場合、光ネットワーク970は、x次元に沿った各セグメントに1つずつ配置された16個のOCSスイッチ950を含む。また、光ネットワーク970は、各ビルディングブロック960について、x次元に沿ったビルディングブロック960の各セグメントに対応する入力外部リンクおよび出力外部リンクを含む。これらの外部リンクは、セグメント上の計算ノードを当該セグメントのOCSスイッチ950に接続する。各ビルディングブロック960がx次元に沿った16個のセグメントを含むため、光ネットワーク970は、各ビルディングブロック960のx次元セグメントを当該セグメントに対応するOCSスイッチ950に接続するための32個の外部リンク933(すなわち、16の入力リンクおよび16の出力リンク)を含む。
【0081】
y次元の場合、光ネットワーク970は、y次元に沿った各セグメントに1つずつ配置された16個のOCSスイッチ930を含む。また、光ネットワーク970は、各ビルディングブロック960について、y次元に沿ったビルディングブロック960の各セグメントに対する入力外部リンクおよび出力外部リンクを含む。これらの外部リンクは、セグメント上の計算ノードを当該セグメントのOCSスイッチ930に接続する。各ビルディングブロック960がy次元に沿った16個のセグメントを含むため、光ネットワーク970は、各ビルディングブロック960のy次元セグメントを当該セグメントに対応するOCSスイッチ930に接続するための32個の外部リンク931(すなわち、16の入力リンクおよび16の出力リンク)を含む。
【0082】
z次元の場合、光ネットワーク970は、y次元に沿った各セグメントに1つずつ配置された16個のOCSスイッチ932を含む。また、光ネットワーク970は、各ビルディングブロック960に対して、z次元に沿ったビルディングブロック960の各セグメントに対応する入力外部リンクおよび出力外部リンクを含む。これらの外部リンクは、セグメント上の計算ノードを当該セグメントのOCSスイッチ940に接続する。各ビルディングブロック960がz次元に沿った16個のセグメントを含むため、光ネットワーク970は、各ビルディングブロック960のz次元セグメントを当該セグメントに対応するOCSスイッチ940に接続するための32個の外部リンク932(すなわち、16の入力リンクおよび16の出力リンク)を含む。
【0083】
ワークロードスケジューラ910は、ワークロードと、ワークロードを実行するために要求されるビルディングブロック960のクラスタを指定するデータとを含む要求データを受信することができる。要求データは、ワークロードの優先度を含んでもよい。優先度は、高、中または低のレベルで表すことができ、また例えば1~100の範囲または別の適切な範囲で数値的に表すことができる。例えば、ワークロードスケジューラ910は、ユーザ装置またはセルスケジューラ、例えば図1のユーザ装置110またはセルスケジューラ140から、要求データを受信することができる。上述したように、要求データは、計算ノードのn次元目標構成、例えば計算ノードを含むビルディングブロックの目標構成を指定することができる。
【0084】
ワークロードスケジューラ910は、要求データによって指定された目標構成に一致するワークロードクラスタを生成するために、1組のビルディングブロック960を選択することができる。例えば、ワークロードスケジューラ910は、スーパポッド900において利用可能且つ健全な1組のビルディングブロックを特定することができる。上述したように、利用可能且つ健全なビルディングブロックは、別のワークロードを実行していないまたは起動中のワークロードクラスタの一部ではない且つ故障していないビルディングブロックである。
【0085】
例えば、ワークロードスケジューラ910は、スーパポッド内の各ビルディングブロック960の状態を示す状態データを、例えばデータベースの形で記憶および更新することができる。ビルディングブロック960の利用可能状態は、ビルディングブロック960がワークロードクラスタに割り当てられるか否かを示すことができる。ビルディングブロック960の健全状態は、当該ビルディングブロックが動作中であるかまたは故障中であるかを示すことができる。ワークロードスケジューラ910は、ワークロードに割り当てられていないことを示す利用可能状態および動作中であることを示す健全状態を有するビルディングブロック960を特定することができる。ビルディングブロック960がワークロードに割り当てられた場合、例えば、ワークロードを実行するためのワークロードクラスタを生成するために使用されている場合、または健全状態が動作中から故障中にもしくはその逆に変化した場合、ワークロードスケジューラは、それに応じてビルディングブロック960の状態データを更新することができる。
【0086】
ワークロードスケジューラ910は、特定された複数のビルディングブロック960から、目標構成によって定義された数に一致する数のビルディングブロック960を選択することができる。要求データが1つ以上の種類の計算ノードを指定する場合、ワークロードスケジューラ910は、特定されたビルディングブロック960から、要求された種類の計算ノードを含むビルディングブロックを選択することができる。例えば、要求データが、2つのTPUビルディングブロックおよび2つのGPUビルディングブロックからなる2×2構成のビルディングブロックを指定する場合、ワークロードスケジューラ910は、2つの利用可能且つ健全なTPUビルディングブロックと、2つの利用可能且つ健全なGPUビルディングブロックとを選択することができる。
【0087】
また、ワークロードスケジューラ910は、スーパポッド内で実行中の各ワークロードの優先度と、要求データに含まれたワークロードの優先度とに基づいて、ビルディングブロック960を選択することができる。スーパポッド900が要求されたワークロードを実行するためのワークロードクラスタを生成するのに十分の利用可能且つ健全なビルディングブロックを有しない場合、ワークロードスケジューラ910は、要求されたワークロードよりも低い優先度を有するワークロードがスーパポッド900内で実行されているか否かを判断することができる。要求されたワークロードよりも低い優先度を有するワークロードが実行されている場合、ワークロードスケジューラ910は、1つ以上のより低い優先度のワークロードを実行するワークロードクラスタのビルディングブロックを、要求されるワークロードを実行するためのワークロードクラスタに割り当て直すことができる。例えば、ワークロードスケジューラ910は、より低い優先度のワークロードを終了させる、より低い優先度のワークロードを遅らせる、またはより低い優先度のワークロードのためのワークロードクラスタのサイズを減らすことによって、より高い優先度のワークロードのためのビルディングブロックを解放することができる。
【0088】
ワークロードスケジューラ910は、単に光ネットワークを再構成すること(例えば、以下で説明するようにOCSスイッチを構成すること)によって、ビルディングブロックを1つのワークロードクラスタから別のワークロードクラスタに割り当て直すことができる。これによって、このビルディングブロックは、より低い優先度のワークロードを実行するためのビルディングブロックではなく、より高い優先度のワークロードを実行するためのビルディングブロックに接続される。同様に、より高い優先度のワークロードを実行するためのビルディングブロックが故障した場合、ワークロードスケジューラ910は、光ネットワークを再構成することによって、より低い優先度のワークロードを実行するためのワークロードクラスタ内のビルディングブロックを、より高い優先度のワークロードを実行するためのワークロードクラスタに割り当て直すことができる。
【0089】
ワークロードスケジューラ910は、ジョブごとの構成データ912を生成して、スーパポッド900のOCSマネージャ920に提供することができる。ジョブごとの構成データ912は、ワークロードを実行するために選択されたビルディングブロック960およびビルディングブロックの構成を指定することができる。例えば、構成は、2×2構成である場合、ビルディングブロック配置するするための4つのスポットを含む。ジョブごとの構成データは、選択されたビルディングブロック960を4つのスポットにそれぞれ配置することを指定することができる。
【0090】
ジョブごとの構成データ912は、各ビルディングブロックの論理識別子を用いて、選択されたビルディングブロック960を特定することができる。例えば、各ビルディングブロック960は、固有の論理識別子を含むことができる。特定の実施例において、64個のビルディングブロック960に0~63の数字を付与することができ、これらの数字は、固有の論理識別子であってもよい。
【0091】
OCSマネージャ920は、ジョブごとの構成データ912を用いてOCSスイッチ930、940および/または950を構成することによって、ジョブごとの構成データによって指定された構成に一致するワークロードクラスタを生成する。各OCSスイッチ930、940および950は、OCSスイッチの物理ポートの間にデータをルーティングするときに使用されるルーティングテーブルを含む。例えば、第1のビルディングブロックのx次元セグメントの出力外部リンクが、対応する第2のビルディングブロックのx次元セグメントの入力外部リンクに接続されていると仮定する。この場合、x次元セグメントのOCSスイッチ950のルーティングテーブルは、これらのセグメントが接続されているOCSスイッチの物理ポートの間のデータがこれらの物理ポートの間にルーティングされることを示す。
【0092】
OCSマネージャ920は、各OCSスイッチ920、930および940の各ポートを各ビルディングブロックの各論理ポートにマッピング(対応付け)するポートデータを記憶することができる。ビルディングブロックの各x次元セグメントのポートデータは、外部入力リンクがOCSスイッチ950のどの物理ポートに接続されているか、外部出力リンクがOCSスイッチ950のどの物理ポートに接続されているかを指定することができる。スーパポッド900の各ビルディングブロック960の各次元のポートデータは、同様のデータを含むことができる。
【0093】
OCSマネージャ920は、ポートデータを用いてOCSスイッチ930、940および/または950のルーティングテーブルを構成することによって、ワークロードを実行するためのワークロードクラスタを生成することができる。例えば、第1のビルディングブロックがx次元に沿って第2のビルディングブロックの左側に配置される2×1構成で、第1のビルディングブロックを第2のビルディングブロックに接続しようとすると仮定する。OCSマネージャ920は、第1のビルディングブロックのx次元セグメントと第2のビルディングブロックのx次元セグメントとの間にデータをルーティングするために、x次元のOCSスイッチ950のルーティングテーブルを更新する。ビルディングブロックの各x次元セグメントを接続する必要があるため、OCSマネージャ920は、各OCSスイッチ950のルーティングテーブルを更新することができる。
【0094】
OCSマネージャ920は、各x次元セグメントのOCSスイッチ950のルーティングテーブルを更新することができる。具体的には、OCSマネージャ920は、ルーティングテーブルを更新することによって、第1のビルディングブロックのセグメントが接続されているOCSスイッチ950の物理ポートを、第2のビルディングブロックのセグメントが接続されているOCSスイッチの物理ポートにマッピングすることができる。各x次元セグメントが入力リンクおよび出力リンクを含むため、OCSマネージャ920は、第1のビルディングブロックの入力リンクが第2のビルディングブロックの出力リンクに接続され、第1のビルディングブロックの出力リンクが第2のビルディングブロックの入力リンクに接続されるように、ルーティングテーブルを更新することができる。
【0095】
OCSマネージャ920は、各OCSスイッチから現在のルーティングテーブルを取得することによって、ルーティングテーブルを更新することができる。他の例において、OCSマネージャ920は、適切なルーティングテーブルを更新し、更新されたルーティングテーブルを適切なOCSスイッチに送信することができる。他の例において、OCSマネージャ920は、更新を指定する更新データをOCSスイッチに送信することができ、OCSスイッチは、更新データに従ってルーティングテーブルを更新することができる。
【0096】
更新されたルーティングテーブルでOCSスイッチを構成した後、ワークロードクラスタが生成される。次いで、ワークロードスケジューラ910は、ワークロードクラスタ内の計算ノードに、ワークロードを実行させることができる。例えば、ワークロードスケジューラ910は、ワークロードをワークロードクラスタ内の計算ノードに提供して実行させることができる。
【0097】
ワークロードの実行が終了した後、ワークロードスケジューラ910は、ワークロードクラスタを生成するために使用された各ビルディングブロックの状態を利用可能状態に戻すように、各ビルディングブロックの状態を更新することができる。また、ワークロードスケジューラ910は、ワークロードクラスタを生成するために使用されたビルディングブロックの間の接続を解除するように、OCSマネージャ920に命令することができる。したがって、OCSマネージャ920は、ビルディングブロックの間にデータをルーティングするために使用されたOCSスイッチの物理ポート間のマッピングを解除するように、ルーティングテーブルを更新することができる。
【0098】
このように、OCSスイッチを用いて光ファブリックトポロジを構成することにより、ワークロードを実行するためのワークロードクラスタを生成することによって、スーパポッドは、複数のワークロードを動的且つ安全にホストすることができる。ワークロードスケジューラ920は、新しいワークロードが受信されると、即座にワークロードクラスタを生成し、ワークロードが処理されると、即座にワークロードクラスタを解放することができる。OCSスイッチによって提供されたセグメント間のルーティングは、従来のスーパコンピュータよりも、同一のスーパポッドに実行されている異なるワークロードの間により良好なセキュリティを提供する。例えば、OCSスイッチは、ワークロードの間のエアギャップを用いて、ワークロードを物理的に分離する。従来のスーパコンピュータは、ソフトウェアを用いてワークロードを分離する。このため、情報が漏洩しやすい。
【0099】
図10は、ワークロードクラスタを生成し、ワークロードクラスタを用いて計算ワークロードを実行するための例示的なプロセス1000を示す流れ図である。プロセス1000の動作は、1つ以上のデータ処理装置を含むシステムによって実行されてもよい。例えば、プロセス1000の動作は、図1の処理システム130によって実行されてもよい。
【0100】
システムは、要求される計算ノードのクラスタを指定する要求データを受信する(1010)。要求データは、ユーザ装置から受信されてもよい。要求データは、計算ワークロードと、計算ノードのn次元目標構成を指定するデータとを含むことができる。例えば、要求データは、計算ノードを含むビルディングブロックのn次元目標構成を指定することができる。
【0101】
いくつかの実装形態において、要求データは、ビルディングブロックを生成するための計算ノードの種類を指定することができる。スーパポッドは、異なる種類の計算ノードからなるビルディングブロックを含むことができる。例えば、スーパポッドは、各々が4×4×4構成のTPUを含む90個のビルディングブロックと、2×1構成の専用計算ノードを含む10個の専用ビルディングブロックとを含むことができる。要求データは、各種類の計算ノードからなるビルディングブロックの数およびこれらのビルディングブロックの構成を指定することができる。
【0102】
システムは、1組のビルディングブロックを含むスーパポッドから、要求されたクラスタを生成するためのビルディングブロックの部分セット(サブセット)を選択する(1020)。上記で説明したように、スーパポッドは、3次元構成の計算ノード、例えば4×4×4構成の計算ノードを含む1組のビルディングブロックを含むことができる。システムは、目標構成によって定義された数量に一致する数量のビルディングブロックを選択することができる。上述したように、システムは、健全であり且つ要求されたクラスタを生成するために利用可能なビルディングブロックを選択することができる。
【0103】
ビルディングブロックの部分セットは、ビルディングブロックの適切な部分セットであってもよい。適切な部分セットは、1組のビルディングブロックのうちの全てのメンバーを含まない部分セットである。例えば、全てのビルディングブロックよりも少ないビルディングブロックは、目標構成の計算ノードに一致するワークロードクラスタを生成するために必要とされてもよい。
【0104】
システムは、選択された計算ノードの部分セットを含むワークロードクラスタを生成する(1030)。このワークロードクラスタは、要求データによって指定された目標構成に一致する構成のビルディングブロックを含むことができる。例えば、要求データが4×8×4構成の計算ノードを指定する場合、ワークロードクラスタは、図3のワークロードクラスタ330のように配置された2つのビルディングブロックを含むことができる。
【0105】
ワークロードクラスタを生成するために、システムは、ワークロードクラスタの各次元についてルーティングデータを構成することができる。例えば、上述したように、スーパポッドは、ビルディングブロックの各次元について1つ以上のOCSスイッチを含む光ネットワークを含むことができる。ある次元のためにルーティングデータは、1つ以上のOCSスイッチのためにルーティングテーブルを含むことができる。図9を参照して上述したように、OCSスイッチのルーティングテーブルは、各次元に沿った計算ノードの適切なセグメントの間にデータをルーティングするように構成されてもよい。
【0106】
システムは、ワークロードクラスタ内の計算ノードに、計算ワークロードを実行させる(1040)。例えば、システムは、計算ワークロードをワークロードクラスタ内の計算ノードに提供することができる。計算ワークロードが実行されている間に、構成されたOCSスイッチは、ワークロードクラスタのビルディングブロックの間にデータをルーティングすることができる。構成されたOCSスイッチは、計算ノードが目標構成において物理的に接続されていなくても物理的に接続されていたように、ビルディングブロックの計算ノードの間にデータをルーティングすることができる。
【0107】
例えば、ある次元の各セグメントの計算ノードは、異なるビルディングブロック内のセグメントの他の計算ノードと単一の物理セグメントに物理的に接続されるように、OCSスイッチを介して、データを異なるビルディングブロック内のセグメントの他の計算ノードに通信することができる。この構成のワークロードクラスタは、途中でパケットスイッチングまたはバッファリングを行わない真のエンドツーエンド光路を提供することができるため、パケットスイッチングネットワークとは異なる。パケットスイッチングの場合、スイッチがパケットを受信し、バッファリングし、別のポートで再び送信する必要があるため、遅延が長くなる。
【0108】
計算ワークロードの実行が終了した後、システムは、他のワークロードを実行するために、例えばビルディングブロックの状態を利用可能な状態に更新し、ワークロードクラスタのビルディングブロックの間にデータをルーティングしないようにデータルーティングを更新することによって、ビルディングブロックを解放することができる。
【0109】
図11は、故障したビルディングブロックを置換するように、光ネットワークを再構成するための例示的なプロセス1100を示す流れ図である。プロセス1100の動作は、1つ以上のデータ処理装置を含むシステムによって実行されてもよい。例えば、プロセス1100の動作は、図1の処理システム130によって実行されてもよい。
【0110】
システムは、ワークロードクラスタ内の計算ノードに、計算ワークロードを実行させる(1110)。例えば、システムは、ワークロードクラスタを生成し、計算ノードに、図10のプロセス1000に従って計算ワークロードを実行させることができる。
【0111】
システムは、ワークロードクラスタのビルディングブロックが故障したことを示すデータを受信する(1120)。例えば、ビルディングブロックの1つ以上の計算ノードが故障した場合、別の要素、例えば監視要素は、ビルディングブロックが故障したと判断し、ビルディングブロックが故障したことを示すデータをシステムに送信することができる。
【0112】
システムは、利用可能なビルディングブロックを特定する(1130)。例えば、システムは、ワークロードクラスタの他のビルディングブロックと同様のスーパポッドにおいて、利用可能且つ健全なビルディングブロックを特定することができる。システムは、例えば、システムによって記憶されたビルディングブロックの状態データに基づいて、利用可能且つ健全なビルディングブロックを特定することができる。
【0113】
システムは、特定された利用可能なビルディングブロックを用いて、故障したビルディングブロックを置換する(1140)。システムは、特定された利用可能なビルディングブロックで故障したビルディングブロックを置換するように、ビルディングブロックを接続する光ネットワークの1つ以上のOCSスイッチのデータルーティングを更新することができる。例えば、システムは、ワークロードクラスタの他のビルディングブロックと故障したビルディングブロックとの間の接続を解除するように、1つ以上のOCSスイッチのルーティングテーブルを更新することができる。また、システムは、特定されたビルディングブロックをワークロードクラスタの他のビルディングブロックに接続するように、1つ以上のOCSスイッチのルーティングテーブルを更新するができる。
【0114】
システムは、特定されたビルディングブロックを、故障したビルディングブロックスポットの論理スポットに論理的に配置することができる。上述したように、OCSスイッチのルーティングテーブルは、あるビルディングブロックのセグメントに接続されたOCSスイッチの物理ポートを、対応する別のビルディングブロックのセグメントに接続されたOCSスイッチの物理ポートにマッピングすることができる。この場合、システムは、故障したビルディングブロックではなく、特定された利用可能なビルディングブロックの対応するセグメントとのマッピングを更新することによって、置換を行うことができる。
【0115】
例えば、故障したビルディングブロックの特定のx次元セグメントの入力外部リンクがOCSスイッチの第1のポートに接続され、特定された利用可能なビルディングブロックの対応するx次元セグメントの入力外部リンクがOCSスイッチの第2のポートに接続されていると仮定する。さらに、ルーティングテーブルが第1のポートを、別のビルディングブロックの対応するx次元セグメントに接続されているOCSスイッチの第3のポートにマッピングすると仮定する。置換を行うために、システムは、第1のポートを第3のポートにマッピングするのではなく、第2のポートを第3のポートにマッピングすることによって、ルーティングテーブルのマッピングを更新することができる。システムは、故障したビルディングブロックの各セグメントに対して同様のことを行うことができる。
【0116】
本明細書に記載された主題および動作の実施形態は、本明細書に開示された構造およびそれらの均等物を含むデジタル電子回路、コンピュータソフトウェア、ファームウェア、ハードウェア、またはそれらの1つ以上の組み合わせで実現されてもよい。本明細書に記載された主題の実施形態は、1つ以上のコンピュータプログラム、すなわち、コンピュータ記憶媒体上にエンコードされ、データ処理装置によって実行されるまたはデータ処理装置の動作を制御するためのコンピュータプログラム命令の1つ以上のモジュールとして実現されてもよい。代替的にまたは追加的に、プログラム命令は、データ処理装置によって実行されるために、適切な受信装置に送信される情報をエンコードするように人工的に生成された伝搬信号、例えば機械によって生成された電気信号、光信号、または電磁信号にエンコードされてもよい。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムアクセスメモリアレイもしくは装置またはシリアルアクセスメモリアレイもしくは装置、またはそれらの1つ以上の組み合わせであってもよく、またはそれらに含まれてもよい。さらに、コンピュータ記憶媒体は、伝搬信号ではないが、人工的に生成された伝搬信号にエンコードされるコンピュータプログラム命令のソースまたはインストール先であってもよい。また、コンピュータ記憶媒体は、1つ以上の別個の物理的な要素または媒体(例えば、複数のCD、ディスク、または他の記憶装置)であってもよく、またはそれらに含まれてもよい。
【0117】
本明細書に記載された動作は、データ処理装置によって1つ以上のコンピュータ可読ストレージ装置に記憶されたデータまたは他のソースから受信されたデータに対して実行された動作として実現されてもよい。
【0118】
「データ処理装置」という用語は、例えば、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、またはそれらの組み合わせを含む、データを処理するための全ての種類の機器、装置、およびマシンを含む。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。また、装置は、ハードウェアのほかに、当該コンピュータプログラムの実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの組み合わせを構成するコードを含むことができる。装置および実行環境は、様々な異なるコンピューティングモデルインフラストラクチャ、例えばウェブサービス、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャを実現することができる。
【0119】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)コンピュータプログラムは、コンパイル型またはインタプリタ型言語、宣言または手続き型言語を含む任意のプログラミング言語で記述されてもよく、独立型プログラム、モジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境に適切に使用できる他のユニット含む任意の形で展開されてもよい。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、必ずしも対応する必要はない。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部、当該プログラム専用の単一のファイル、または複数の連携ファイル(例えば、1つ以上のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に格納されてもよい。コンピュータプログラムは、1台のコンピュータ、または一箇所に配置されもしくは複数の箇所に分散され、通信ネットワークによって相互接続された複数のコンピュータ上で展開され、実行されてもよい。
【0120】
本明細書に記載されたプロセスおよび論理フローは、1つ以上のプログラム可能なプロセッサによって実行されてもよい。1つ以上のプログラム可能なプロセッサは、動作を実行するように、入力データを処理して、出力を生成することによって1つ以上のコンピュータプログラムを実行する。また、プロセスおよび論理フローは、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されてもよく、装置は、専用論理回路として実装されてもよい。
【0121】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ、専用マイクロプロセッサ、および任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、読み取り専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従って動作を実行するためのプロセッサと、命令およびデータを記憶するための1つ以上のメモリ装置とを含む。一般的に、コンピュータはまた、データを記憶するための1つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクを含むか、または1つ以上の大容量記憶装置からデータを受信する、または1つ以上の大容量記憶装置にデータを転送する、またはその両方を行うように1つ以上の大容量記憶装置に動作可能に結合される。しかしながら、コンピュータは、そのような装置を有する必要はない。さらに、コンピュータは、別の装置、例えば携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、または携帯記憶装置(例えば、USBフラッシュドライブ)に組み込むことができる。コンピュータプログラム命令およびデータの記憶に適した装置は、例えば、EPROM、EEPROMおよびフラッシュメモリ装置などの半導体メモリ装置、例えば内部ハードディスクまたは取外し可能なディスクなどの磁気ディスク、光磁気ディスク、CD ROMおよびDVD-ROMディスクを含む全ての不揮発性メモリ、媒体、およびメモリ装置を含む。プロセッサおよびメモリは、専用論理回路によって補足されてもよく、または専用論理回路に組み込まれてもよい。
【0122】
ユーザとの対話を提供するために、本明細書に記載された主題の実施形態は、情報をユーザに表示するための表示装置、例えばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置、例えばマウスまたはトラックボールを含むコンピュータ上で実装されてもよい。他の種類の装置を使用して、ユーザとの相互作用を提供することもできる。ユーザに提供されるフィードバックは、例えば、任意の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよい。ユーザから受信される入力は、音響入力、音声入力、または触覚入力を含んでもよい。さらに、コンピュータは、ユーザによって使用されている装置に文書を送信し、当該装置から文書を受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアント装置上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【0123】
本明細書に記載された主題の実施形態は、バックエンドコンポーネントを含むコンピューティングシステム、例えばデータサーバに実装されてもよく、またはミドルウェアコンポーネントを含むコンピューティングシステム、例えばアプリケーションサーバに実装されてもよく、またはフロントエンドコンポーネントを含むコンピューティングシステム、例えばユーザが本明細書に記載された主題の実装形態と相互作用することができるグラフィカルユーザインターフェイスまたはウェブブラウザ、または上述したバックエンドコンポーネント、ミドルウェアコンポーネントもしくはフロントエンドコンポーネントの任意の組み合わせを備えるクライアントコンピュータに実装されてもよい。システムの構成要素は、任意のデジタルデータ通信媒体、例えば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、インターネットワーク(例えば、インターネット)、およびピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
【0124】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般的に互いに遠隔であり、一般的に通信ネットワークを介して相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって形成される。いくつかの実施形態において、サーバは、(例えば、クライアント装置と対話するユーザにデータを表示させ、ユーザ入力を受信するために)データ(例えば、HTMLページ)をクライアント装置に送信する。サーバは、クライアント装置で生成されたデータ(例えば、ユーザインタラクションの結果)をクライアント装置から受信することができる。
【0125】
本明細書は、多くの具体的な実装詳細を含むが、これらの実装詳細は、発明の範囲または請求範囲に対する限定として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態に関して本明細書に記載された特定の特徴は、任意の組み合わせで単一の実施形態に実装されてもよい。逆に、単一の実施形態に関して記載された様々な特徴は、別々にまたは任意の適切なサブコンビネーションで複数の実施形態に実装されてもよい。さらに、特徴がある組み合わせで作用し、その組み合わせで作用すると主張したとしても、必要に応じて、主張した組み合わせから1つ以上の特徴を除去することができ、主張した組み合わせをサブコンビネーションに分割することができる。
【0126】
同様に、特定の順序で動作を図面に示しているが、これは、望ましい結果を達成するために、これらの動作を図示された特定の順序でまたは順次に実行する必要、または図示された全ての動作を実行する必要があるとして理解すべきではない。特定の状況によって、マルチタスクおよび並列処理が有利であり得る。さらに、上述した実施形態における様々なシステム要素の分離は、全ての実施形態においてそのような分離が必要であるとして理解すべきではなく、記載されたプログラム要素およびシステムは、一般的に、単一のソフトウェア製品に一体化されてもよく、または複数のソフトウェア製品にパッケージ化されてもよいと理解すべきである。
【0127】
したがって、本発明の特定の実施形態を説明してきた。他の実施形態は、特許請求の範囲に含まれる。場合によって、特許請求の範囲に記載された動作は、異なる順序で実行されても、望ましい結果を達成することができる。さらに、添付の図面に示されたプロセスは、望ましい結果を達成するために、必ずしも図示された特定の順序でまたは順次に実行される必要がない。いくつかの実装形態において、マルチタスクおよび並列処理が有利であり得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11