(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-29
(45)【発行日】2024-04-08
(54)【発明の名称】組み込みリング領域を有するネットワークコンピュータ
(51)【国際特許分類】
G06F 15/173 20060101AFI20240401BHJP
【FI】
G06F15/173 683E
G06F15/173 660C
(21)【出願番号】P 2021557203
(86)(22)【出願日】2020-03-26
(86)【国際出願番号】 EP2020058623
(87)【国際公開番号】W WO2020193732
(87)【国際公開日】2020-10-01
【審査請求日】2021-11-24
【前置審査】
(73)【特許権者】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】サイモン ノウルズ
(72)【発明者】
【氏名】オラ トルドゥバッケン
(72)【発明者】
【氏名】ステファン フェリックス
(72)【発明者】
【氏名】ラーズ ポール ヒューズ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開昭60-140457(JP,A)
【文献】特表平09-506456(JP,A)
【文献】国際公開第2014/045444(WO,A1)
【文献】米国特許出願公開第2019/0045003(US,A1)
【文献】特表2006-521593(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/16-15/177
(57)【特許請求の範囲】
【請求項1】
処理ノードの複数の対向するペアを含むラダー構成をとるように配置された複数の相互接続された処理ノードを含むコンピュータであって、各ペアの前記処理ノードは、2つのリンクによって互いに接続され、各ペアにおける処理ノードは、少なくとも1つのリンクにより、隣接するペアにおける対応する処理ノードに接続され、前記処理ノードは、処理ノード及びリンクのそれぞれの組によって形成された2つの組み込み1次元リングを周回してデータを送信するように前記ラダー構成を動作させるようにプログラムされ、
各リングは、前記ラダー構成内の全ての処理ノードのうち1つの処理ノードから開始し、他の全ての処理ノードを1回のみ通り、前記1つの処理ノードに戻るように構成さ
れ、
各処理ノードは、
当該処理ノードに記憶された部分ベクトルをフラグメントに分割し、連続的なフラグメントを、各リングを周回して送信するようにプログラムされ、
Allreduceコレクティブのreduce-scatterフェーズにおいて、2つの入力フラグメントを、前記処理ノードにおける前記部分ベクトルの2つの対応する局所的に保存されたフラグメントに集約し、集約されたフラグメントを2つのリンクで同時に送信するように構成される、
コンピュータ。
【請求項2】
各リングを論理リングの組として動作させるようにプログラムされ、前記連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される、請求項
1に記載のコンピュータ。
【請求項3】
各処理ノードは、フラグメントを2つのリンクの各々で同時に出力するように構成される、請求項
1又は2に記載のコンピュータ。
【請求項4】
各処理ノードは、フラグメントを2つのリンクの各々で同時に受信するように構成される、請求項
1~3のいずれか一項に記載のコンピュータ。
【請求項5】
各リンクは双方向性である、請求項1~
4のいずれか一項に記載のコンピュータ。
【請求項6】
各処理ノードは、完全に集約されたフラグメントをAllreduceコレクティブのAllgatherフェーズにおいて2つのリンクで同時に送信するように構成される、請求項
1に記載のコンピュータ。
【請求項7】
前記ラダー構成は、処理ノードの第1の終端ペア、処理ノードの少なくとも1つの中間ペア及び処理ノードの第2の終端ペアを含み、前記第1及び第2の終端ペアにおける対応する処理ノードは、それぞれの少なくとも1つのリンクによって互いに接続される、請求項1~
6のいずれか一項に記載のコンピュータ。
【請求項8】
処理ノードの対向するペアが2つのリンクによって接続されるラダー構成をとるように配置された複数の相互接続された処理ノードを含むコンピュータを動作させる方法であって、各ペアにおける前記処理ノードは、少なくとも1つのリンクにより、隣接するペアにおける対応する処理ノードにそれぞれ接続され、前記方法は、2つの組み込み1次元リングを周回してデータを送信するように前記ラダー構成を動作させることを含み、
各リングは、前記ラダー構成内の全ての処理ノードのうち1つの処理ノードから開始し、他の全ての処理ノードを1回のみ通り、前記1つの処理ノードに戻るように構成され、
各処理ノードは、
当該処理ノードに記憶された部分ベクトルをフラグメントに分割し、連続的なフラグメントを、各リングを周回して送信し、
Allreduceコレクティブのreduce-scatterフェーズにおいて、2つの入力フラグメントを、前記処理ノードにおける前記部分ベクトルの2つの対応する局所的に保存されたフラグメントに集約し、集約されたフラグメントを2つのリンクで同時に送信するように構成される、
方法。
【請求項9】
各組み込み1次元リングを複数の論理リングとして動作させることと、連続的なフラグメントを、連続送信ステップで各論理リングを周回して送信することとを含む、請求項
8に記載の方法。
【請求項10】
前記2つの組み込みリングを同時に使用したreduce-scatterフェーズと、前記2つの組み込みリングを同時に使用したAllgatherフェーズとを実行することにより、Allreduceコレクティブを実行するように前記ラダー構成を動作させることを含み、前記Allgatherフェーズは、前記reduce-scatterフェーズに続く、請求項
8又は9に記載の方法。
【請求項11】
ラダー構成でコンピュータを構築する方法であって、
処理ノードの第1のペアを提供することと、
2つの第1のリンクにより、前記処理ノードの第1のペアを一緒に接続することと、
処理ノードの第2のペアを提供することと、
2つの第2のリンクにより、前記処理ノードの第2のペアを一緒に接続することと、
前記処理ノードの第1のペアの1つを、ラダー接続リンクにより、前記処理ノードの第2のペアの対応する1つに接続することと、
処理ノードの第3のペアを提供することと、
2つの第3のリンクにより、前記処理ノードの第3のペアを一緒に接続することと、
前記処理ノードの第2のペアの1つを、更なるラダー接続リンクにより、前記処理ノードの第3のペアの対応する1つに接続することと、
前記処理ノードの第3のペアの1つを、ラダー戻りリンクにより、前記処理ノードの第1のペアの対応する1つに接続することと、
を含み、
前記コンピュータは、2つの組み込み1次元リングを周回してデータを送信するように動作するように構成され、
各リングは、前記ラダー構成内の全ての処理ノードのうち1つの処理ノードから開始し、他の全ての処理ノードを1回のみ通り、前記1つの処理ノードに戻るように構成され、
各処理ノードは、
当該処理ノードに記憶された部分ベクトルをフラグメントに分割し、連続的なフラグメントを、各リングを周回して送信し、
Allreduceコレクティブのreduce-scatterフェーズにおいて、2つの入力フラグメントを、前記処理ノードにおける前記部分ベクトルの2つの対応する局所的に保存されたフラグメントに集約し、集約されたフラグメントを2つのリンクで同時に送信するように構成される、
方法。
【請求項12】
前記ラダー構成に対する終端ペアとして機能する前記第1及び第3のペアの中間に少なくとも1つの更なる第2のペアを導入することにより、前記ラダー構成を拡張することを含み、前記少なくとも1つの更なる第2のペアは、更なるラダー接続リンクによって互いに接続された対応する処理ノードを有する、請求項
11に記載の方法。
【請求項13】
前記少なくとも1つの更なる第2のペアを導入するステップは、前記ラダー戻りリンクを切り離し、それらをラダー接続リンクとして機能するように使用して、後続のペアの処理ノードに接続することにより、前記第3のペアの状態を、前記更なる第2のペアとして機能するように変更することによって実現される、請求項
12に記載の方法。
【請求項14】
前記後続のペアは、終端ペアとして機能する、請求項
13に記載の方法。
【請求項15】
別の後続のペアを提供することを含み、前記後続のペアは、前記終端ペアとして機能する前記別の後続のペアに接続される、請求項
13に記載の方法。
【請求項16】
各処理ノードは、4つの動作可能なリンクを有し、前記4つの動作可能なリンクの第1及び第2のリンクは、前記ノードを、そのペアである処理ノードに接続するために使用され、前記4つの動作可能なリンクの第3のリンクは、前記処理ノードを、隣接するペアにおける対応するノードに接続するために使用され、前記動作可能なリンクの第4のリンクは、前記処理ノードを、別の隣接するペアにおけるその対応するノードに接続するために使用される、請求項
13~15のいずれか一項に記載の方法。
【請求項17】
各処理ノードは、4つの動作可能なリンクを有し、前記4つの動作可能なリンクの第1及び第2のリンクは、前記ノードを、そのペアである処理ノードに接続するために使用され、前記4つの動作可能なリンクの第3のリンクは、前記処理ノードを、隣接するペアにおける対応するノードに接続するために使用され、前記動作可能なリンクの第4のリンクは、前記処理ノードをラダー戻りリンクとして処理ノードの終端ペアに接続するために使用される、請求項
13~15のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、特に、但し非限定的に、機械学習/人工知能用途におけるデータ交換を最適化するための、コンピュータ内で接続された処理ノード間のデータの交換に関する。
【背景技術】
【0002】
コレクティブ(collectives)とは、コンピュータ内でデータを処理する際によく使用されるルーティンである。これらは、複数の異なる処理間でデータを共有及び処理可能にするルーティンであり、処理は、同じ処理ノード又は異なる処理ノードで動作し得る。例えば、ある処理がデータ記憶装置からデータを読み出す場合、「ブロードキャスト(broadcast)」処理を用いてそのデータを他の処理と共有することができる。別の例は、特定の機能の結果を複数の処理で必要とする場合である。「集約(reduction)」は、複数の処理の各々からのデータ値に計算機能の適用を要求した結果である。「Gather」及び「Scatter」コレクティブは、複数のデータ項目を扱う。特定のコレクティブは、機械学習処理用途で一層重要になっている。
【0003】
MPI(メッセージ通信インターフェース)は、多くの並列コンピューティングアーキテクチャに適用可能なメッセージ通信標準である。MPIは、機械学習に適用可能な多くのコレクティブを定義している。1つのそのようなコレクティブは、「Allreduce」と称される。Allreduce動作は、異なるソース処理からの複数のデータ値に作用する計算機能の結果が受信処理で提供されることを可能にする。受信処理がソース処理の1つであり得、複数の受信処理があり得ることに留意されたい。Allreduceコレクティブは、複数のソース処理からのデータ値を集約して、結果を(集約された結果の受信処理として動作する)全てのソース処理に配信する。MPI標準によれば、Allreduceコレクティブは、全てのソース処理からのデータ値をreduceコレクティブで(例えば、複数の処理の1つにおいて)集約し、次いで各ソース処理に結果をブロードキャストすることにより実行される。
【0004】
図1は、ニューラルネットワークを訓練する分散アーキテクチャの概略ブロック図である。訓練データのソース100が提供される。これは、訓練データを、訓練されているニューラルネットワークモデルに適用可能な状態に維持することができるデータベース又は他の任意の種類のデータ記憶装置であり得る。ニューラルネットワークモデルによる処理自体が複数の処理ユニット110a、110b、110c等にわたり分散される。
図1には、3つのユニットのみを示しているが、任意の数の処理ユニットが使用され得ることが容易に認識されるであろう。各処理ユニット110a、b、cが訓練データソース100から訓練データのバッチを受信する。各処理ユニット110a、b、cは、モデルを定義するパラメータの組112a、112b、112cを保持する。訓練データの入力バッチは、計算機能114のパラメータの現在の組を用いて処理され、計算機能の結果を用いて、元のパラメータと、訓練データのバッチ及びパラメータの現在の組に対して計算機能を適用した結果としての新たなパラメータとの差異を表すいわゆるデルタを生成する。多くのニューラルネットワークにおいて、これらのパラメータは、「重み」と呼ばれ、そのため、デルタ値は、「デルタ重み」と称される。
図1において、重みは、112a、b、cと表示され、デルタ重みは、116a、b、cと表示される。実際には、重み及びデルタ重みは、処理ユニットからアクセス可能な適当な記憶装置に保存されることが認識されるであろう。重み及びデルタ重みをローカルメモリに保持することができる場合、訓練処理の効率が大幅に向上する。
【0005】
図1のアーキテクチャの目的は、3つの別々のモデルを訓練するのではなく、単一のモデルを分散的に訓練することである。従って、目的は、モデルパラメータ(又は重み)を各処理ユニット内の単一の共通の組に収束させることである。任意の特定の重みの組から始まり、各処理ユニットで受信された訓練データのバッチが同じでないと仮定すると、各処理ユニットの各計算機能により生成されるデルタ重みに変動があることは、明らかである。従って、必要とされるのは、バッチ化された訓練データの各反復後に複数の処理ユニットにわたりデルタ重みを分散させる方法である。これは、
図1に概略的に示されており、組み合わせ関数118は、各処理ユニットからデルタ重みを受信し、デルタ重みを集約する平均化関数等の数学関数を実行する。組み合わせ関数118の出力は、次いで、各処理ユニット内の結合回路120a、120b及び120cにそれぞれフィードバックされる。従って、新たな重みの組は、元の重みと、組み合わせ関数118からの組み合わされた出力との組み合わせとして生成され、新たな重み118a、118b、118cは、局所メモリに戻されて保存される。次いで、訓練データの次のバッチが各処理ユニットに供給され、処理が複数回反復される。処理ユニットの開始重みが同じである場合、各反復後に同じ新たな値に再びリセットされることが明らかである。上記は、Allreduce関数が特に有用な例であることが容易に分かるであろう。デルタ重みは、組み合わせ関数118に供給され、そこで集約され、次いで集約された形式で各処理ユニットに戻されて、元の重みと組み合わされ得る。
【0006】
図1Aは、Allreduceコレクティブが5つの処理ノードN
0...N
5の直線的に接続されたトポロジとしてどのように実装され得るかを示す概略図である。これらの処理ノードは、組み合わせ関数が分散される
図1の処理ユニットに対応し得る。処理ノードは、各処理ノードが「順方向」リンクL
F及び「逆方向」リンクL
Bによって隣接ノードに接続されるライン構成で接続されて示されている。この図に示すように、方向語句が示唆するように、順方向リンクは、処理ノードを
図1Aの左から右に接続し、逆方向リンクは、処理ノードを
図1Aの右から左に接続する。各処理ノードは、200として指定された処理能力及び202として指定された記憶能力を有する。処理能力及び記憶能力は、非常に多くの方法のいずれかで実装され得る。1つの特定の具体例において、処理ノードは、個々のタイルがその処理能力及び付随するメモリ機能を有する複数のタイルを含み得る。各処理ノードは、それがリンクL
F/L
Bを介して隣接ノードに接続されることを可能にする1つ以上のリンクインターフェースも有する。
【0007】
Allreduceコレクティブの実装を理解するために、第1のノードN0が、Δ0と表示された「部分」ベクトルを生成していると仮定する。「部分」とは、デルタ重みの配列、例えばベクトル又はテンソルを含むデータ構造であり得る。部分ベクトルは、各々が処理ノードに対する計算に対応する複数の部分の配列である。部分は、Allreduceコレクティブ内で直ちに交換可能であるように記憶能力202に保存される。単純な「ストリーミング」ラインAllreduceアルゴリズムにおいて、順方向リンクは、「集約」に使用され、逆方向リンクは、「ブロードキャスト」に使用される。アルゴリズムは、一端の処理ノード(
図1Aの左側ノード)において、その隣接するノードN
1に部分Δ0を送信することから始まる。ノードにおいて、入力部分(この場合にはΔ0)は、処理ノードN
1における計算機能200により生成された対応する部分Δ1だけ集約される。次いで、この集約(
図1AではADD機能として示す)の結果は、処理ノードN
1から次の接続ノードN
2に送られる。以下に詳述するように、ADD機能は、部分の集約に使用され得る任意の組み合わせ関数で代替することができる。処理は、
図1AにN
4で示す最後の処理ノードにおいて部分の集約が完了するまで各処理ノードで行われる。この時点において、集約結果(和Δ)は、逆方向リンクL
Bを介して各処理ノードに返送される。集約結果は、各ノードで受信され、そのノードのメモリ機能に保存され、その後、次のノードにも送信される。このように、各処理ノードは、集約結果で終了する。
【0008】
図1Bは、集約及びブロードキャストフェーズのタイミング図を示す。処理ノードは、1つ前のノードから入力データを受信するまで、集約結果を次のノードに送信できないことに留意されたい。従って、順方向リンクの各出力送信のために、Δと表記する固有の待ち時間が存在する。
【0009】
更に、逆方向リンクは、完全に集約された結果が終点ノードで取得されるまでブロードキャストに使用されない。しかし、パイプライン効果に起因して部分ベクトルが大きい場合、そのノードが自らの部分のデータ項目の送信を終了するよりもかなり前に結果の先頭のデータ項目が始点ノードに戻るため、全ての順方向及び逆方向リンクで動作が相当重なる可能性がある。
【0010】
若干の改良であるこのアルゴリズムの変更形態では、線の各終端の処理ノードは、集約が中央ノードで完了した状態で自らの部分の中央ノードに送信を開始することができる。その場合、結果は、ブロードキャストされて終点ノードに戻される。このシナリオでは、順方向及び逆方向リンクの両方において、例えばノードN
2及びN
3間並びにN
3及びN
4間で移動方向が反転されることに留意されたい。(順方向及び逆方向リンクの両方において最終ノードN
5を第1のノードN
0に接続することにより)線が閉じてリングとした場合、パイプラインアルゴリズムは、集約及びブロードキャストを同じ方向に直列化できるため、双方向リンクによって形成された2つの論理リングは、それぞれ独立して、データの半分に対して作用することができる。
図1Cを参照されたい。すなわち、各部分ベクトルは、2つの部分に分割される。第1の半分ΔAは、順方向リンクで集約され(
図1Aのように)、N
5とN
0との間で接続レッグにブロードキャストされる。ベクトルΔBの他の半分は、逆方向リンクで集約され、次いで逆方向リンクの接続リングにブロードキャストされる。
【0011】
図1Dは、順方向及び逆方向リンクに対応するタイミング図を示す。1次元リングの原理は、
図1C及び1Dに示されており、円環状に接続されたコンピュータのような2次元リングに拡張可能である。
【0012】
2次元でリングを用いる代替方式は、reduce-scatterコレクティブに続いてAllgatherコレクティブを用いてAllreduceを実行することである。Jain及びSabharwalによる「Optimal Bucket Algorithms for large MPI collecives on torus interconnects」(ICS’10,June 2-4,Tsukuba)という名称の論文は、円環相互接続プロセッサ内の処理ノード間の双方向リンクを仮定するAllgather、reduce-scatter及びAllreduceコレクティブのためのバケットに基づくアルゴリズムを提示している。このアプローチは、各ステップで扱われる複数のデータ値(フラグメント)があることに基づいて動作する。reduce-scatterコレクティブにおいて、各処理は、初期部分ベクトルから開始される。ここでの処理への言及は、処理ノードで実行される処理への言及であると仮定する。部分ベクトルは、複数の要素又はフラグメントに分割することができる。全ての処理の対応する要素が集約され、これらの集約要素は、次いで、複数の処理にわたり分散される。Allgatherコレクティブにおいて、他の処理が他の全ての処理から全ての要素を受信する。reduce-scatterコレクティブは、全ての部分を集約し、各集約を各ノードに保存する(
図2を参照されたい)。Allreduceコレクティブは、reduce-scatterコレクティブに続いて、Allgatherコレクティブ動作を実行することにより実行され得る。
【0013】
Jainの論文で議論されているように、円環相互接続は、分散メモリスーパーコンピュータのための魅力的な相互接続アーキテクチャである。上記の議論において、コレクティブを処理間通信に関連して説明してきた。分散スーパーコンピュータにおいて、処理ノードは、相互接続され、各処理ノードは、コレクティブに関する1つ以上の処理に対して応答的であり得る。円環相互接続は、N次元配列に構成された処理ノードを有する一種のメッシュ相互接続であり、各ノードは、最も近い隣接ノードに接続され、配列の両エッジの対応するノードも接続される。双方向通信リンクは、相互接続された処理ノード間に存在する。
【0014】
Jain及びSabharwalによる上述の論文で議論されたコレクティブを実行するアルゴリズムは、円環接続されたアーキテクチャに適用される。これにより、コレクティブは、異なる次元のリング内のベクトルの異なるフラグメントを同時に処理することができるため、処理帯域幅が効率的になる。実際に、Jain及びSabthawalは、その技術を非対称トーラスに対して最適であるように提示しており、これが正しいことは、この分野で受け入れられている。
【発明の概要】
【発明が解決しようとする課題】
【0015】
本開示の目的は、特に、但し非限定的に、機械学習における処理機能に使用するための、Allreduce関数を実行するための改良されたトポロジ及び方法を提示することである。本明細書に記述するトポロジ及び構成は、特にAllreduceの効率的な実装に有効であるが、他の機械学習コレクティブ及び他の種類の並列プログラムにも有利に使用され得る。
【課題を解決するための手段】
【0016】
本明細書に記述するトポロジ及び構成は、Allreduceの効率的な実行に特に効果的であるが、他の機械学習コレクティブ及び他の種類の並列プログラムにも有利に使用され得る。
【0017】
本発明の一態様は、処理ノードの複数の対向するペアを含むラダー構成をとるように配置された複数の相互接続された処理ノードを含むコンピュータであって、各ペアの処理ノードは、2つのリンクによって互いに接続され、各ペアにおける処理ノードは、少なくとも1つのリンクにより、隣接するペアにおける対応する処理ノードに接続され、処理ノードは、処理ノード及びリンクのそれぞれの組によって形成された2つの組み込み1次元リングを周回してデータを送信するようにラダー構成を動作させるようにプログラムされ、各リングは、ラダー内の全ての処理ノードを1回のみ使用する、コンピュータを提供する。
【0018】
ラダー構成は、処理ノードの第1の終端ペア、処理ノードの少なくとも1つの中間ペア及び処理ノードの第2の終端ペアを含んでもよく、第1及び第2の終端ペアにおける対応する処理ノードは、それぞれの少なくとも1つのリンクによって互いに接続される。
【0019】
一実施形態において、各処理ノードは、当該ノードの部分ベクトルをフラグメントに分割し、連続的なフラグメントを、各リングを周回して送信するようにプログラムされる。
【0020】
各リングは、論理リングの組として動作してもよく、連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される。
【0021】
各処理ノードは、フラグメントを2つのリンクの各々で同時に出力するように構成されてもよい。
【0022】
各処理ノードは、フラグメントを2つのリンクの各々で同時に受信するように構成されてもよい。
【0023】
いくつかの実施形態において、各リンクは、双方向性である。これにより、コンピュータ内で動作中のリングの数が2倍になる。
【0024】
ML又は他の分散アプリケーションのためのAllreduceコレクティブを実行するために、各処理ノードは、2つの入力フラグメントを、その処理ノードにおける部分ベクトルの2つの対応する局所的に保存されたフラグメントに集約し、集約されたフラグメントをAllreduceコレクティブのreduce-scatterフェーズにおいて2つのリンクで同時に送信するように構成され得る。
【0025】
各処理ノードは、完全に集約されたフラグメントをAllreduceコレクティブのAllgatherフェーズにおいて2つのリンクで同時に送信するように構成され得る。
【0026】
本発明の別の態様は、処理ノードの対向するペアが2つのリンクによって接続されるラダー構成をとるように配置された複数の相互接続された処理ノードを含むコンピュータを動作させる方法であって、各ペアにおける処理ノードは、隣接するペアにおける対応する処理ノードにそれぞれ接続され、本方法は、2つの組み込み1次元リングを周回してデータを送信するようにラダー構成を動作させることを含み、各リングは、ラダー内の全ての処理ノードを1回のみ使用する、方法を提供する。
【0027】
いくつかの実施形態による方法は、各組み込み1次元リングを複数の論理リングとして動作させることと、連続的なフラグメントを、連続送信ステップで各論理リングを周回して送信することとを含む。
【0028】
別の態様は、ラダー構成でコンピュータを構築する方法であって、
処理ノードの第1のペアを提供することと、
2つの第1のリンクにより、処理ノードの第1のペアを一緒に接続すること、
処理ノードの第2のペアを提供することと、
2つの第2のリンクにより、処理ノードの第2のペアを一緒に接続することと、
処理ノードの第1のペアの1つを、ラダー接続リンクにより、処理ノードの第2のペアの対応する1つに接続することと、
処理ノードの第3のペアを提供することと、
2つの第3のリンクにより、処理ノードの第3のペアを一緒に接続することと、
処理ノードの第2のペアの1つを、更なるラダー接続リンクにより、処理ノードの第3のペアの対応する1つに接続することと、
処理ノードの第3のペアの1つを、ラダー戻りリンクにより、処理ノードの第1のペアの対応する1つに接続することと、
を含み、
コンピュータは、2つの組み込み1次元リングを周回してデータを送信するように動作するように構成され、各リングは、ラダー構成内の全ての処理ノードを1回のみ使用する、方法を提供する。
【0029】
ラダー構成は、ラダー構成に対する終端ペアとして機能する第1及び第3のペアの中間に更なる第2のペアを導入することによって拡張されてもよい。更なる第2のペアは、更なるラダー接続リンクによって互いに接続された対応する処理ノードを有する。実際に、更なる第2のペアの導入は、ラダー戻りリンクを切り離し、それらをラダー接続リンクとして機能するように使用して、後続のペアの処理ノードに接続することにより、第3のペアの状態を変更することによって実行されてもよい。その後続のペアは、次いで、終端ペアとして機能するか、又は終端ペアとして機能する別の後続のペアにそれ自体接続されてもよい。このように、ラダー構成は、追加的な処理ノードを収容するために拡張することができる。
【0030】
各処理ノードは、4つの動作可能なリンクを有してもよく、2つは、そのペアとなる処理ノードに接続するために使用され、1つは、隣接するペアにおける対応するノードに接続するために使用され、1つは、別の隣接するペア(それが中間ペアである場合)における対応するノードに接続するか、又はラダー戻りリンクとして他の終端ペア(それが終端ペアである場合)に接続するために使用される。
【0031】
Allreduceコレクティブを実行するために、本方法は、2つの組み込みリングを同時に使用してreduce-scatterフェーズを、2つの組み込みリングを同時に使用してAllgatherフェーズを実行するようにラダー構成を動作させることを含んでもよく、Allgatherフェーズは、reduce-scatterフェーズに続く。
【0032】
各処理ノードは、reduce scatterフェーズで交換される準備ができているデータ項目(ベクトル又はテンソルなど)の配列を保存するように構成されたメモリを含んでもよく、各データ項目は、それぞれ配列内に配置され、対応するデータ項目は、他の処理ノードの配列内の対応する位置に配置される。配列は、reduce-scatterフェーズにおける「部分」ベクトル(部分結果のベクトル)又はAllgatherフェーズにおける「結果」(完全に集約された部分のベクトル)であってもよい。
【0033】
処理ノードは、reduce-scatterフェーズにおいて、各リング内の隣接する処理ノードにデータ項目を順方向に送信するようにプログラムされてもよい。各ステップで送信され得るデータ項目は、「フラグメント」と称される。フラグメントは、本明細書に記述するようにベクトルの一部であり、ベクトルは、組み込みリングに形成された論理リングを利用するために複数のフラグメントに分割される。
【0034】
各配列は、部分デルタのベクトルの少なくとも一部を表してもよく、各部分デルタは、各処理ノードに保存された値への調整を表す。各処理ノードは、計算ステップで部分デルタのベクトルを生成するようにプログラムされてもよい。各処理ノードは、そのベクトルを、2つの組み込みリングの利用のために2つの部分配列に分割するようにプログラムされてもよい。
【0035】
ここで、本発明のよりよい理解のため、本発明がどのように実施されるかを示すために添付の図面を例として参照する。
【図面の簡単な説明】
【0036】
【
図1】ニューラルネットの分散訓練を示す概略図である。
【
図1A】簡単な「ストリーミング」ラインAllreduceアルゴリズムを実行する一連の処理ノードを示す概略図である。
【
図1B】「ストリーミング」ラインAllreduceアルゴリズムのタイミング図である。
【
図1C】リング状に接続された終点ノードを有するラインの概略図である。
【
図1D】リングAllreduceアルゴリズムのタイミング図である。
【
図2】reduce-scatterステップに続いて、AllgatherステップによるAllreduce関数の実行を示す概略図である。
【
図3A-3B】バケットに基づくAllreduceアルゴリズムを示す。
【
図4A-4B】2つのリングが組み込まれた処理ノードの構成の概略図である。
【
図4C】2:1帯域幅非対称性を有する、2×12トロイド又は二重リングとしてのラダー構成を示す。
【
図4D】グラフの接続性を示す図であり、リンクへの全ノード帯域幅Bの割り当てを示す。
【発明を実施するための形態】
【0037】
本発明の複数の態様は、機械学習の動作負荷のアクセラレータとして機能するように設計されたマルチタイルプロセッサに関連して開発された。アクセラレータは、複数の相互接続された処理ノードを含む。各処理ノードは、単一のマルチタイルチップ、複数のチップのパッケージ又は複数のパッケージのラックであり得る。本明細書における目的は、決定論的(反復可能)な計算で極めて効率的な機械を考案することである。処理ノードは、コレクティブ、特にブロードキャスト及びAllreduceを効率的に実行可能にするように相互接続される。
【0038】
1つの特定のアプリケーションは、分散処理を用いてニューラルネットワークを訓練する際にモデルを更新することである。これに関連して、分散処理は、チップ若しくはパッケージ又はラック等の異なる物理的実体として存在する複数の処理ノードを利用する。すなわち、処理ノード間のデータの送信では、物理リンクを介してメッセージを交換する必要がある。
【0039】
機械学習専用のトポロジを開発する際の課題は、高性能コンピューティング(HPC)ネットワークの一般的な分野の課題と異なる。HPCネットワークは、通常、オンデマンド非同期全対全個人向け通信に重点が置かれているため、動的ルーティング及び帯域幅の過剰供給が通常である。帯域幅の提供よりも待ち時間を短縮する目的のため、余剰帯域幅がHPCネットワーク供給される場合がある。動作中の通信リンクの過剰供給は、電力を浪費して計算性能に影響する恐れがある。今日計算に用いられる最も一般的な種類のリンクは、データ送信に使用されるか否かに関わらず、動作中に電力を消費する。
【0040】
本発明者は、MI作業負荷に特に適合され、且つMI作業負荷の以下の属性に対処する機械トポロジを開発した。
【0041】
MI作業負荷において、チップ間通信では、現在、ブロードキャスト及びAllreduceコレクティブが主流である。ブロードキャストコレクティブは、scatterコレクティブに続いてAllgatherコレクティブにより実行可能であり、Allreduceコレクティブは、reduce-scatterコレクティブに続いてAllgatherコレクティブにより実行可能である。これに関連して、チップ間という用語は、外部通信リンクを介して接続された処理ノード間の任意の通信を指す。上述のように、これらの処理ノードは、チップ、パッケージ又はラックであり得る。通信リンクは、印刷された回路基板上のチップ間又は異なる印刷された回路基板上のチップ間に存在し得ることに留意されたい。
【0042】
動作負荷は、個々の知能処理装置(IPU)機械内で全対全通信が基本的にチップ間であるようにコンパイル可能である。
【0043】
Allreduceコレクティブは、上述の通りであり、
図2に示されている。
図2は、開始状態S1における4つのノードの各々の部分値の組(ベクトル)、すなわち「部分」ベクトルP
0、P
1、P
2、P
3を示す。これに関連して、ノードとは、複数の処理ノードのネットワークにおける処理ノードである。各ノードN
0、N
1、N
2、N
3は、対応して斜線が引かれた大きいひし形格子、幅広の下向き斜め縞、大きい正方形格子、幅広の上向き斜め縞である4つの「対応する」部分を有することに留意されたい。すなわち、各部分は、例えば、P0(n)のベクトルにおけるノードnが、P0(n+1)のベクトルにおけるノードn+1と同じ位置を有するように、自らの部分ベクトルに位置を有する。添え字(n)は、部分が存在するノードを示すために使用され、従って、P0(0)は、ノードN0の部分P0である。reduce-scatterパスにおいて、対応する部分は、集約され、集約は、複数ノードの1つに施される。例えば、部分P0(0)、P0(1)、P0(2)、P0(3)は、(r
0に)集約されてノードN
0に置かれる。同様に、部分P1(0)、P1(1)、P1(2)及びP1(3)は、(r1に)集約されてノードN
1に置かれる。以下同様であり、中間状態S2において、各ノードは、複数の集約r
0、r
1、r
2及びr
3の1つを施される。説明したように、集約は、任意の組み合わせ関数、
【数1】
であり得、これは、独立演算子(例えば、最大化)又は関連演算子=P1(0)*P1(1)*P1(2)*P1(3)を含み得る。次いで、Allgatherパスにおいて、各集約が全てのノードに施されて状態S3を起動させ、ここで、各ノードに4つの集約の全てが施される。S1において、「対応する」部分、例えばP0(0)、P0(1)、P0(2)及びP0(3)が全て異なり得るのに対し、状態S3では、各集約、例えばr
0が全てのノードに対して同じであるが、但しr
i=f{(P
i(0)、P
i(1)、P
i(2)及びP
i(3))}であることに留意されたい。機械学習において、部分値P0、P1、P2、P3の組は、ベクトルである。部分(例えば、更新された重み)のベクトルが訓練中にモデルの各パスに生成される。状態S3における各ノードの集約r
0(ひし形格子)、r
1(下向き斜め縞)、r
2(正方形格子)、r
3(上向き斜め縞)は、完全集約ベクトル、すなわち結果(又は完全に集約された部分)のベクトルである。機械学習に関連して、各部分は、モデルのパラメータに対する更新デルタの組であり得る。代替的に、各部分は、(本明細書で詳述しない構成での)更新されたパラメータであり得る。
【0044】
図3A及び3Bは、6つの「仮想」IDリングを仮定するreduce-scatter/Allgatherのための、バケットに基づくアルゴリズムを示す。これらは、本明細書において「論理」リングとも称される。
図3Aは、複数の仮想リングにおける部分の集約を示す概略図である。各部分は、6つのフラグメントに分割される。
図3Aにおいて、大文字R、Y、G、B、P、Lは、それぞれハッチングされたひし形格子、上向き斜め縞、正方形格子、水平縞、下向き斜め縞、垂直縞で示す各ノードで保存された部分の異なるフラグメントを指す。文字は、互いに集約対象であり、フラグメントの「仮想」又は「論理」リングを定義する対応するフラグメントを示す。
図3Aを参照すると、各々の部分P
0、P
1、P
2、P
3及びP4における「R」フラグメントは、結果ベクトル
【数2】
の単一のフラグメントに集約される。Y、G、B、P及びLフラグメントも同様である。
【0045】
図3Bは、Allreduce処理の各ステップにおけるデータ交換及び計算を示す、横軸に時間を取ったタイミング図を示す。
図3A及びBにおいて、Allreduce処理は、reduce-scatterフェーズに続いてAllgatherフェーズにより実現される。
図3Bにおいて、各フラグメントを上記のように異なるハッチングで示している。
【0046】
図3A及び3Bにおける表記は、以下の通りである。部分は、それぞれP0、P1、P2、P3、P4、P5として示される。処理の開始時点において、各部分は、各ノードN0、N1、N2、N3、N4、N
5に保存される。各フラグメントは、各々が集約されると考えられる仮想リング内でのフラグメントの定義及び位置に応じて表示される。例えば、RA0は、ノードN0-N1-N2-N3-N4-N0によって形成された仮想リングの先頭フラグメントであるため、部分P0のRフラグメントを示す。RA1は、その仮想リングで2番目の位置にあるノードN1のRフラグメントを示す。YA0は、ノードN1のYフラグメントを示す。添え字「0」は、その仮想リングの先頭フラグメントであることを示し、Y-リングは、N1-N2-N3-N4-N0-N1である。特に、Aの添え字が仮想リングを反映し、物理ノード(又は部分)に対応しないことに留意されたい。
図3Aは、順方向リンクの仮想リングのみを示すことに留意されたい。
図3Bは、逆方向リンクで均等な処理が行われることを示し、フラグメントをBで示す。
【0047】
ステップ1において、各仮想リングの先頭フラグメント(A0)がそのノードから次の隣接ノードに移送され、そのノードで対応するフラグメントにより集約される。すなわち、RA0は、N0からN1まで移動して、R(A0+A1)に集約される。再び、ここでは記号「+」は、任意の組み合わせ関数の省略形として使用される。同じステップで各仮想リングのA0フラグメントが同時に送信されることに留意されたい。すなわち、N1とN2との間のリンクは、YA0の送信に使用され、N2とN3との間のリンクは、GA0の送信に使用され、以下同様である。次のステップでは、対応する集約フラグメントが順方向リンクを介して次の隣接ノードに送信される。例えば、R(A0+A1)がN1からN2に送信され、Y(A0+A1)がN2からN3に送信される。分かりやすくするために、
図3Aで全てのフラグメントに番号が付与されておらず、全ての送信に番号が付与されていないことに留意されたい。フラグメント及び数の完全な組を
図3Bに示す。本処理は、5ステップで実行される。5ステップ後、各ノードで全てのフラグメントが集約される。第5のステップの終了時点において、集約は、そのフラグメントの対応する各リングの最後のノードで行われる。例えば、R集約は、ノードN5で行われる。
【0048】
Allgatherフェーズの開始は、各仮想リングの最後から最初のノードへの送信により始まる。従って、Rフラグメントの最後の集約は、Allgatherフェーズの第1のステップの準備ができているノードN5で終了する。Yフラグメントの最後の集約は、対応してノードN0で終了する。Allgatherフェーズの次のステップでは、集約されたフラグメントは、自らの次の隣接ノードに再び送信される。従って、完全に集約されたRフラグメントは、現在、N2にも存在し、完全に集約されたYフラグメントは、現在、N3にも存在し、以下同様である。このように、各ノードは、Allgatherフェーズの終了時点において、部分ベクトルの全てのフラグメントR、Y、G、B、P、Lが完全に集約された状態となって終了する。
【0049】
アルゴリズムの実行が最適であるのは、集約に必要な計算をパイプライン待ち時間に覆い隠すことができる場合である。Allreduceの実行のためにコンピュータ内に適当なリングを形成する際、リングの循環がリング内の各ノードを1回のみ訪問しなければならないことに留意されたい。従って、双方向リンク(
図1A)を有するラインによって形成された自然のリングは、最も効率的なリングではない。
【0050】
ここで、Allreduceコレクティブを実行するために、処理ノード間で部分及び結果の効率的な受け渡しを可能にする処理ノードの相互接続されたネットワークの改良されたトポロジについて記述する。
【0051】
図4Aは、複数の処理ノードが接続されたトポロジを示す概略図である。
図4Aにおいて、ラダー形式の8つの処理ノードがあるが、本原理は、ラダー状に配置された処理ノードの任意の数のペアに拡張できることが認識されるであろう。各処理ノードは、円として示され、参照が容易であるように数字が表示される。以下の記述において、ノードを参照する場合に添え字Nが挿入される。例えば、
図4Aにおいて、N0は、ノードN0を表す円を示す。処理ノードは、後述する方法でリンクによって接続される。各リンクは、双方向性であり、すなわち、リンクを介して両方向にデータを送信することができる。物理的相互接続及び論理的接続があることに留意されたい。論理的接続を用いて、各々が2つの方向を有する2つの連続的な組み込みリングを形成する。最初に、物理的接続について記述する。Y方向の処理ノードは、単一の双方向リンクにより、その隣接するノードにそれぞれ接続される。対向する処理ノードが2つの双方向リンクによって接続される。例えば(
図4Aの左側垂直方向を見ると)、N0は、単一の双方向リンク(
図4において、2つの逆向きに対向する矢印として示す)によりN2に接続される。同様に、N2は、N4に接続され、N4は、N6に接続され、N6は、N0に戻って接続される。水平方向において、ノードN0は、2つの双方向リンク(一方を黒色の細かい破線の逆向き矢印で示し、他方をグレーの粗い破線の逆向き矢印で示す)によりN1に接続される。同様に、N2は、N3に接続され、N4は、N5に接続され、N6は、N7に接続される。この物理的接続により、2つの論理組み込みリング(それぞれ双方向である)を構造に組み込むことができる。第1のリング(グレーの粗い破線で示す)は、N0からN1、N1からN3、N3からN2、N2からN4、N4からN5、N5からN7、N7からN6、そしてN0に戻って伸長する。第2の論理リング(黒色の細かい破線で示す)は、N0からN2、N2からN3、N3からN5、N5からN4、N4からN6、N6からN7、N7からN1、N1からN0に戻って伸長する。各リングは、全て8つの処理ノードを含む。いずれの単一の経路にも衝突がないため、2つのリングを同時に使用できることにも留意されたい。
【0052】
図4A及び4BのノードN0を考える。ノードN0は、対向ペアノードと称するノードN1にそれを接続する2つのリンクを有する。これらのリンクは、L011及びL012と表示される。L01の表記は、リンクがノード0及び1を接続することを示すためのものである。表記1は、ノード0及び1間の第1のリンクであることを示し、表記2は、ノードN0及びN1間の第2のリンクであることを示す。本実施形態において、各リンクは、双方向であることに留意されたい。ノードN0は、L02と表示された第3の双方向リンクも有する。リンクL02は、次の隣接するペアの対応するノードN2にラダー構成で接続される。この理由のため、リンクL02は、ラダー接続リンクと称される。ノードN0は、L06と表示された第4のリンクを有する。このリンクは、対応するノードN0及びN6をラダー構成の終端ペアにおいて接続する。
図4A及び4Bにおいて、第1の終端ペアは、ノードN0及びN1の対向ペアであり、第2の終端ペアは、対向ノードN6及びN7である。対向ペアN6、N7の処理ノードは、2つの双方向リンクL671、L672により同様に接続されることに留意されたい。
【0053】
終端ペア(N0及びN6)の対応するノード間で伸長するリンクL06と、対応してノードN1及びN7間で伸長するリンクL17とは、ラダー戻りリンクと称される。これらのリンクは、ラダー構成の各組み込みリングを完全な1次元リングにすることができる。
【0054】
図4の実施形態のラダー構成は、2つの中間対向ペアN2/N3及びN4/N5を含む。各ペアの対向ノードは、対応するリンクL231、L232;L451、L452によって接続される。
【0055】
対向ペアの対応するノードは、ラダー接続リンクを介して接続される。例えば、第1の終端ペアのノードN1は、リンクL13によりノードN3及び隣接する中間ペアに接続される。
図4A及び4Bにおいて、各リンクを2つの双方向矢印によって示している。しかし、これらは、単一の物理リンク構造に収容でき、その物理リンク構造を介する双方向通信路を示す。代替的な実施形態において、リンク構造の各方向は、別々の物理的表現であり得る。
【0056】
図4A及び4Bの実施形態において、8つのノードの4つの対向ペアは、全体でラダー構成を形成する。ラダー構成は、更なる対向ペアを含むように簡単に拡張され得ることが容易に認識されるであろう。これは、終端ペアのノードにおけるリンクの接続を変えることにより行われ得る。例えば、別の対向ペアをラダー構成に追加するために、リンクL60は、ノードN0から切り離されて、更なるノードN8(点で示す)に接続される。ノードN8は、自らの物理リンクを有し、このリンクは、次いで、ノードN0にラダー戻りリンクとして接続される。同様に、ノードN7からノードN1まで伸長するリンクL71は、ノードN1から切り離されて、新たなノードN9(点で示す)に接続される。N9からの物理リンクは、次いで、ラダー戻りリンクノードN1として接続される。ノードN8及びN9は、物理リンクN891及びN892によって互いに接続される。
【0057】
必要に応じて、更なるノードのペアをラダー構成に追加して、コンピュータの処理能力を拡張することができる。新たなノードが追加された場合、ラダー構成の終端ペア以外の他のノードのペアに存在する接続を中断する必要がないことに留意されたい。これにより、所望の追加的な処理ノードを含めるようにラダー構成を拡張することが極めて容易になる。
【0058】
ラダー構成の組み込みリングは、
図4Bに示すような外観のため、VR1、VR2と表示された「バーリーツイスト」リングと見なすことができる。
図4Bに示すリングは、ラダー構成で組み込まれた仮想データ送信リングであることが強調される。これらのリングは、異なる競合リングではいずれのリンクも2回使用されないため、同時に動作可能である。
【0059】
図4Cは、2×12環構造に配置された24の処理ノードを有する一実施形態を示す。リンクを介した帯域幅の使用率を
図4Cに示す。ペア内リンクの帯域幅は、B/2である。ペア間リンクの帯域幅使用率は、B/4である。戻りリンクの帯域幅使用率は、B/4である。本明細書では、これを2:1帯域幅非対称性と称する。
【0060】
図4Dは、構造を同時に循環可能な2つの組み込みリングを概略的に示す。これらのリングは、同型(すなわち同じ形状であり、従って長さが同じ)である。上述のように、各リングは、構造内の全てのノードを厳密に1回通る。各リングは、リング内でリンク毎に帯域幅B/4を使用する。処理ノード間で動作する2つのリンク(ペア内リンク)が存在する場合、上述のように、全帯域幅は、B/2である。
【0061】
この構造を使用するために、送信対象の部分(又はフラグメント)が各ノードで2つの部分に分割され、各部分は、
図3A及び3Bを参照しながら上に述べた1次元リングアルゴリズムを用いて複数のリングの1つを周回して完全に集約される。
【0062】
各ノードは、サイズ、
【数3】
のフラグメントを出力し、ここで、Nは、ノードの数であり、Vは、特定のフェーズでreduce-scatter又はAllgatherされるデータ構造のサイズである。開始時点において、Vは、部分ベクトルのサイズである。フラグメントの数は、リングを周回する各ステップの実行前のリング内のノードの数に等しい。前述のJain論文に記述されている構造と比較して、リングは、全てのノードを経由し、全てのリンクが常時使用されることに留意されたい。本明細書において、各処理ノードは、自らのデータを2つのリンクに同時に出力可能であり、且つ同時にデータを受信及び処理可能であると仮定する。各リングは、1次元、すなわち処理ノードの非分岐鎖である。
【0063】
各ノードは、処理又は計算機能を実行できる。各ノードは、単一のプロセッサとして実装することができる。しかし、各ノードが単一のチップ又はチップのパッケージとして実装され、各チップが複数のプロセッサを含む可能性がより高い。個々のノードの各々を実現する多くの異なる方法がある。一例において、ノードは、公開番号英国特許第2569843号明細書、英国特許第2569430号明細書、英国特許第2569275号明細書の英国出願に記述される種類の知能処理ユニットで構成され得、その内容は、参照により本明細書に援用される。しかし、本明細書に記述する技術は、ノードを構成する任意の種類のプロセッサに使用され得る。本明細書で概説するのは、機械学習モデルで有用な特定の交換パターンを実行するために効率的にデータを交換する方法である。更に、リンクは、任意の適当な方法で実現できる。リンクが双方向であることが有利であり、同時に両方向で動作可能であることが好適であるが、これは、必須条件ではない。通信リンクの1つの特定のカテゴリは、リンクを介して搬送されるデータの量又はそのデータの搬送に費やした時間から独立した電力要件を有するSERDESリンクである。SERDESは、シリアライザ/デシリアライザの略語であり、そのようなリンクは、公知である。このようなリンクの導線を介して信号を送信するには、信号を生成するために導線に電力を印加して電圧を変化させる必要がある。SERDESリンクには、電力を導線に印加し続けて特定の電圧レベルに維持して、その電圧レベルの変動(0~印加電圧レベルの変動)により信号が搬送されるようにするという特徴がある。従って、使用されるか否かに関わらず、SERDESリンクの帯域幅容量を維持するのに固定電力が存在する。SERDESリンクは、各終端において、リンク層装置を銅線等の物理リンクに接続する回路により実装される。この回路は、PHY(物理層)と称される場合がある。PCIe(周辺機器相互接続エクスプレス(Peripheral Component Interconnect Express))は、高速コンピュータを接続するためのインターフェース基準である。
【0064】
リンクが使用されない間、電力を殆ど消費しないように動的に無効化することが可能である。しかし、機械学習アプリケーションの起動時間及び非決定論的性質では、一般にプログラム実行中の動的起動が問題となる。その結果、本発明者は、チップ間リンクの電力消費がいずれの特定の構成でも本質的に一定であり、従って、最良の最適化が、チップ間トラフィックを可能な限りIPU動作と同期状態に維持することにより、物理リンクの利用率を最大化することであるとの事実を利用することがより良好であり得ると判断した。
【0065】
SERDES PHYは、全二重(すなわち、毎秒16GビットのPHYは、各方向に同時に毎秒16Gビットをサポートする)であるため、全リンク帯域幅使用は、バランスが取れた双方向トラフィックを示唆する。更に、直接チップ間通信の使用は、スイッチ経由等の間接通信と比較して重要な利点があることに留意されたい。直接チップ間通信は、スイッチ方式の通信よりも電力効率がはるかに高い。
【0066】
考慮すべき別の要因として、ノード間の帯域幅要件がある。1つの目的は、ノード間通信を、分散機械学習の各ノードで実行される計算で覆い隠すのに十分な帯域幅を得ることである。
【0067】
機械学習用マシンアーキテクチャを最適化する場合、必要とされる帯域幅の尺度としてAllreduceコレクティブを用いることができる。Allreduceコレクティブの一例を、モデル平均化のためのパラメータ更新の扱いに関して上記に示した。他の複数の例では、勾配平均化及び基準の計算が含まれる。
【0068】
一例として、残差学習ネットワークのAllreduce要件を考慮することができる。残差学習ネットワークは、深い畳み込みニューラルネットワークのクラスである。深い畳み込みのニューラルネットワークにおいて、複数の層を用いて各層内の各々の特徴を学習する。残差学習において、特徴の代わりに残差が学習され得る。ResNetとして知られる特定の残差学習ネットワークは、ネットワークの異なる層間の直接接続を実行する。このような残差ネットワークの訓練は、ある状況では従来の深い畳み込みニューラルネットワークよりも容易であり得ることが示されている。
【0069】
ResNet50は、50層の残差ネットワークである。ResNet50は、25Mの重みを有するため、単位置浮動小数点形式F16の全ての重み勾配のAllreduceが50メガバイトの部分を含む。帯域幅要件を例示するために、1つの完全なAllreduceが完全なバッチ毎に必要であると仮定する。これは、勾配のAllreduceである可能性が高い(しかし、必須ではない)。これを実現するには、各ノードは、完全な集約毎に100メガビットを出力しなければならない。ResNet50は、訓練用画像毎に250ギガフロップスを必要とする。処理ノード毎のサブバッチサイズが16画像である場合、各プロセッサは、各Allreduceコレクティブに対して400ギガフロップスを実行する。プロセッサが毎秒100テラフロップを達成した場合、Allreduce通信との計算の並列性を維持するには、全てのリンク間で毎秒約25ギガビットが必要とされる。プロセッサ毎のサブバッチが8画像である場合、より小さいバッチを処理するのに要する毎秒テラフロップ数が少なくて済むため、部分的に緩和されて、必要な帯域幅は、名目的に2倍になる。
【0070】
各々がサイズmメガバイト(集約サイズに等しい)である部分から始まるp個のプロセッサ間でのAllreduceコレクティブの実行は、リンクを介して少なくとも2m・(p-1)メガバイトの送信を必要とする。従って、各プロセッサが、同時送信可能なlリンクを有する場合、漸近的最短集約時間は、2m・(p-1)・(p-1)/(p・l)である。
【0071】
上述の概念及び技術は、いくつかの異なる例で用いることができる。
【0072】
一例において、コンピュータとして使用するために固定構成が提供される。本例において、複数の処理ノードは、上述の各種の実施形態で記述及び図示したように相互接続される。
【0073】
固定構成は、その構成の処理ノードの厳密な数で構築され得る。代替的に、それは、より大きい構造から分割することにより提供され得る。すなわち、積層の元の組で「ラダー」を構成する処理ノードの組が提供され得る。各積層内の処理ノードは、隣接する積層内の対応する処理ノードへの層間リンク及び層内の隣接する処理ノード間のペア内リンクを有し得る。
【0074】
所望の数の積層の固定構成は、積層の元の組の指定された積層内の各層間リンクを切り離し、それを、指定された積層内の隣接する処理ノードに接続してペア内リンクを提供することにより得られる。このように、積層の元の組の指定された積層に構造の第1及び第2の末端層の1つを形成することができる。複数の層の元の組は、このように複数の固定構造に分割できることに留意されたい。
【0075】
層間及びペア内リンクは、上述のように適当なバス又は導線により提供される物理リンクである。1つの具体例において、各処理ノードから、自らを別の処理ノードに接続する複数の導線の組が伸長する。これは、例えば、1つ以上の物理的導線が接続された1つ以上のポートを有する各処理ノードの1つ以上のインターフェースにより行うことができる。
【0076】
別の具体例において、リンクは、オンボード導線により構成され得る。例えば、単一の基板がチップのグループ、例えば4つのチップを支持することができる。各チップは、他のチップに接続可能なポートとのインターフェースを有する。所定の方法に従って基板に導線をはんだ付けすることにより、チップ間の接続を形成することができる。本明細書に記述する概念及び技術は、印刷された回路基板のチップ間に予めはんだ付けされるリンクの利用率を最大化するため、特にこの状況で有用であることに留意されたい。
【0077】
本明細書に記述する概念及び技術が特に有用である理由は、切り替え不可能なリンクを最適に使用できるようにするからである。ノード間の固定された切り替え不可能なリンクを使用して、本明細書に記述するように処理ノードを接続することにより構成を構築することができる。いくつかの具体例において、このようなリンクを使用しない場合、処理ノード間に更なるリンクを提供する必要がない。例えば、構成の複数の中間層では、処理ノード間のリンクが末端層よりも少ない。代替的に、処理ノード間にリンクが提供され得るが、特定の構成では永久に無効化される場合がある。
【0078】
この構成を用いるために、並列プログラムの組が生成される。並列プログラムの組は、ノードレベルプログラム、すなわち構成内の特定の処理ノードに対して作用するように指定されたプログラムを含む。特定の構成に作用する並列プログラムの組は、コンパイラにより生成することができる。特定のデータの各データ送信ステップで使用するリンクを正しく定義するノードレベルプログラムを生成することは、コンパイラが担当する。これらのプログラムは、リンク識別子を用いて、送信ステージで使用されるリンクを識別する、そのデータ送信ステージでデータ送信を実行するための1つ以上の命令を含む。例えば、処理ノードは、いずれの1つの時点でも2又は3つ(リンクが同時に双方向性である場合にはその2倍)の有効リンクを有し得る。リンク識別子は、その送信ステージのためのデータ項目に対して正しいリンクを選択させる。各処理ノードがその隣接するノードの動作について不可知であり得、すなわち、交換動作は、交換ステージ毎に予めコンパイルされることに留意されたい。
【0079】
リンクを切り替える必要もなく、すなわちデータ項目を送信時点で動的にルーティングするか又はリンクの接続を変える必要がないことにも留意されたい。
【0080】
上述のように、本明細書に記述するコンピュータネットワークの構成は、計算の並列性を強化するものである。これに関連して、並列性は、並列に実行する、例えば上述のように人工知能モデルを分散的に訓練することを意図されたノードレベルプログラムを構成の処理ノードにロードすることにより実現される。しかし、これは、本明細書に記述する構成により可能にされる並列性の1つの応用例に過ぎないことが容易に認識されるであろう。並列性を実現する1つのスキームは、「バルク同期並列」(BSP)計算として知られる。BSPプロトコルによれば、各処理ノードは、計算フェーズ及び計算フェーズに続いて交換フェーズを実行する。計算フェーズ実行中、各処理ノードは、その計算タスクを局所的に実行するが、計算の結果を他の処理ノードと交換しない。交換フェーズにおいて、各処理ノードは、先行計算フェーズからの計算結果を構成の他の処理ノードと交換することが許容される。この構成で交換フェーズが完了するまで、新たな計算フェーズは開始されない。この形式のBSPプロトコルにおいて、バリア同期化は、計算フェーズから交換フェーズに遷移するか若しくは交換フェーズから計算フェーズに遷移する分岐点又はその両方で行われる。
【0081】
本実施形態において、交換フェーズが開始された場合、各処理ノードは、コンパイラにより、その交換フェーズのために決定されたリンク識別子を用いて、その隣接するノードとデータを交換するための命令を実行する。交換フェーズの性質は、叙述のMPIメッセージ受け渡し標準を用いて決定することができる。例えば、Allreducedコレクティブ等のコレクティブをライブラリから取り出すことができる。このように、コンパイラは、部分ベクトルが送信される(又は部分ベクトルの各フラグメントが送信される)リンクを制御するノードレベルプログラムを予めコンパイルする。
【0082】
他の同期化プロトコルを用い得ることは、容易に明らかになるであろう。
【0083】
特定の実施形態について記述してきたが、開示する技術の他の応用及び変型形態は、本明細書の開示をもって当業者に明らかになるであろう。本開示の範囲は、記述する実施形態ではなく、添付の請求項のみによって限定される。