(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-14
(54)【発明の名称】円環コンピュータネットワークへのリングの組み込み
(51)【国際特許分類】
G06F 15/173 20060101AFI20221006BHJP
【FI】
G06F15/173 660C
G06F15/173 683
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022508517
(86)(22)【出願日】2021-03-24
(85)【翻訳文提出日】2022-02-09
(86)【国際出願番号】 EP2021057563
(87)【国際公開番号】W WO2021191272
(87)【国際公開日】2021-09-30
(32)【優先日】2020-03-26
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2020-04-30
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】サイモン ノウルズ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045GG11
(57)【要約】
相互接続されたノードの複数の層が軸に沿って配置される円環構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、各層は、少なくとも、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向平面においてリング状に接続された複数の処理ノードを含み、各組のリンクは、同時に動作するように適合され、各層内の処理ノードの各々は、軸に沿ってリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、コンピュータは、複数の組み込み1次元論理経路を提供し、複数の組み込み1次元論理経路が同時に動作するように、組み込み1次元経路の各々を周回してデータを送信するようにプログラムされ、各論理経路は、コンピュータの全ての処理ノードを順次使用する、コンピュータ。
【特許請求の範囲】
【請求項1】
相互接続されたノードの複数の層が軸に沿って配置される円環構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、
各層は、少なくとも、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向平面においてリング状に接続された複数の処理ノードを含み、各組の前記リンクは、同時に動作するように適合され、
各層内の前記処理ノードの各々は、前記軸に沿ってリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
前記コンピュータは、複数の組み込み1次元論理経路を提供し、前記複数の組み込み1次元論理経路が同時に動作するように、前記組み込み1次元経路の各々を周回してデータを送信するようにプログラムされ、各論理経路は、前記コンピュータの全ての処理ノードを順次使用する、
コンピュータ。
【請求項2】
非対称な帯域幅で前記データを送信するようにプログラムされる、請求項1に記載のコンピュータ。
【請求項3】
対称な帯域幅でデータを送信するようにプログラムされる、請求項1に記載のコンピュータ。
【請求項4】
層内リンク帯域幅は、前記軸に沿った帯域幅よりも大きい、請求項1~3のいずれか一項に記載のコンピュータ。
【請求項5】
前記組み込み経路は同型である、請求項1~4のいずれか一項に記載のコンピュータ。
【請求項6】
前記層内リンクの組は、2つのリンクを含み、前記帯域幅は、前記軸に沿ってB/6であり、各層内でB/3であり、ここで、Bは、各処理ノードの総帯域幅である、請求項1~5のいずれか一項に記載のコンピュータ。
【請求項7】
3つの論理経路が組み込まれる、請求項6に記載のコンピュータ。
【請求項8】
前記層内リンクの組は、3つのリンクを含み、前記帯域幅は、各層内で3B/8であり、前記軸に沿ってB/8であり、ここで、Bは、各処理ノードの総帯域幅である、請求項1~5のいずれか一項に記載のコンピュータ。
【請求項9】
4つの論理経路が組み込まれる、請求項8に記載のコンピュータ。
【請求項10】
各論理経路が、反時計回り及び時計回りの方向の一方で辿られる各層内の処理ノードのシーケンスを含むように構成される、請求項1~9のいずれか一項に記載のコンピュータ。
【請求項11】
連続的な層の前記ノードは、同じ方向に辿られる、請求項10に記載のコンピュータ。
【請求項12】
連続的な層の前記ノードは、反対方向に辿られる、請求項10に記載のコンピュータ。
【請求項13】
各処理ノードは、reduce scatterフェーズで交換される準備ができているデータ項目の配列を保存するように構成されたメモリを含み、各データ項目は、それぞれ前記配列に配置され、対応するデータ項目は、それぞれ他の処理ノードの前記配列内の対応する位置に配置される、請求項1~12のいずれか一項に記載のコンピュータ。
【請求項14】
処理ノードは、reduce-scatterフェーズにおいて、各論理経路を周回して、その隣接する接続された処理ノードにデータ項目を順方向に送信するようにそれぞれプログラムされる、請求項13に記載のコンピュータ。
【請求項15】
各処理ノードは、計算ステップで部分デルタのベクトルを生成し、そのベクトルを、前記組み込み経路のそれぞれの利用のために部分配列に分割するようにプログラムされる、請求項13又は14に記載のコンピュータ。
【請求項16】
前記処理ノードの各々は、データ送信ステップで使用されない層間及び層内リンクのいずれも無効化するようにプログラムされる、請求項1~15のいずれか一項に記載のコンピュータ。
【請求項17】
各処理ノードは、前記ノードのそれぞれの部分ベクトルをフラグメントに分割し、前記データを、連続的なフラグメントの形式で各組み込み1次元経路を周回して送信するようにプログラムされる、請求項1~16のいずれか一項に記載のコンピュータ。
【請求項18】
各経路を論理リングの組として動作させるようにプログラムされ、前記連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される、請求項17に記載のコンピュータ。
【請求項19】
各処理ノードは、層内及び層間リンクの組の各々において、それぞれのフラグメントを同時に出力するように構成される、請求項18に記載のコンピュータ。
【請求項20】
各処理ノードは、入力フラグメントを対応する局所的に保存されたフラグメントと共に集約するように構成される、請求項17~19のいずれか一項に記載のコンピュータ。
【請求項21】
各処理ノードは、AllreduceコレクティブのAllgatherフェーズにおいて、完全に集約されたフラグメントをリンクの各々で同時に送信するように構成される、請求項20に記載のコンピュータ。
【請求項22】
リンクは、前記リンクを介して両方向にデータを送信することができるように双方向性を有する、請求項1~21のいずれか一項に記載のコンピュータ。
【請求項23】
軸に沿って配置された複数の層を有する円環構成で配置された複数の相互接続された処理ノードを含むコンピュータで並列に実行されるプログラムの組を生成する方法であって、
各層は、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向平面においてリング状に接続された複数の処理ノードを含み、各組の前記リンクは、同時に動作するように適合され、
各層内の前記処理ノードは、前記軸に沿ってリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
前記方法は、
各プログラムについて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を生成するステップであって、前記データ送信命令は、前記データ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップと、
複数の組み込み1次元論理経路が同時に動作するように、複数の組み込み1次元論理経路を周回してデータを送信するために前記リンク識別子を決定するステップであって、各論理経路は、前記コンピュータの全ての処理ノードを順次使用する、ステップと、
を含む、方法。
【請求項24】
前記プログラムは、対称又は非対称な帯域幅のいずれかで前記データを送信するように生成される、請求項23に記載の方法。
【請求項25】
層内リンク帯域幅は、前記軸に沿った帯域幅よりも大きい、請求項23又は24に記載の方法。
【請求項26】
各プログラムは、データ送信ステップで使用されない層間及び層内リンクのいずれも無効化するための1つ以上の命令を含む、請求項23~25のいずれか一項に記載の方法。
【請求項27】
各プログラムは、前記プログラムが実行される前記処理ノードのそれぞれの部分ベクトルをフラグメントに分割し、前記それぞれに定義されたリンクを介して前記データを連続的なフラグメントの形式で送信するための1つ以上の命令を含む、請求項23~26のいずれか一項に記載の方法。
【請求項28】
各プログラムは、それぞれのフラグメントを複数のリンクの各々で同時に出力するための1つ以上の命令を含む、請求項27に記載の方法。
【請求項29】
各プログラムは、入力フラグメントを対応する局所的に保存されたフラグメントと共に集約するための1つ以上の命令を含む、請求項27又は28に記載の方法。
【請求項30】
各プログラムは、AllreduceコレクティブのAllgatherフェーズにおいて、完全に集約されたフラグメントをリンクの各々で同時に送信するための1つ以上の命令を含む、請求項23~29のいずれか一項に記載の方法。
【請求項31】
軸に沿って配置された複数の層を有する円環構成で配置された複数の相互接続された処理ノードを含むコンピュータでプログラムの組を並列に実行する方法であって、
各層は、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向平面においてリング状に接続された複数の処理ノードを含み、各組の前記リンクは、同時に動作するように適合され、
各層内の処理ノードは、前記軸に沿って第2の次元のリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
前記方法は、
各プログラムにおいて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を実行するステップであって、前記データ送信命令は、前記データ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップを含み、
前記リンク識別子は、複数の組み込み1次元論理経路が同時に動作するように、処理ノード及びリンクのそれぞれの組によって形成された複数の組み込み1次元論理経路の各々を周回してデータを送信するために決定されており、各論理経路は、前記コンピュータの全ての処理ノードを順次使用する、
方法。
【請求項32】
前記データは対称な帯域幅で送信される、請求項31に記載の方法。
【請求項33】
前記データは非対称な帯域幅で送信される、請求項31に記載の方法。
【請求項34】
層内リンク帯域幅は、前記軸に沿った帯域幅よりも大きい、請求項33に記載の方法。
【請求項35】
前記プログラムを実行するステップは、各経路を論理リングの組として動作させ、各処理ノードで提供される部分ベクトルの連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される、請求項31~34のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、特に、但し非限定的に、機械学習/人工知能用途におけるデータ交換を最適化するための、コンピュータ内で接続された処理ノード間のデータの交換に関する。
【背景技術】
【0002】
コレクティブとは、コンピュータ内でデータを処理する際に共通して使用されるルーチンである。これらは、複数の異なる処理間でのデータの共有及び処理を可能にするルーチンであり、処理は、同じ処理ノード又は異なる処理ノードで動作し得る。例えば、ある処理がデータ記憶装置からデータを読み出す場合、「ブロードキャスト」処理を用いてそのデータを他の処理と共有することができる。別の例は、特定の機能の結果を複数の処理で必要とする場合である。「集約(reduction)」は、複数の処理の各々からのデータ値に計算機能の適用を要求した結果である。「Gather」及び「Scatter」コレクティブは、複数のデータ項目を扱う。特定のコレクティブは、機械学習処理用途で一層重要になっている。
【0003】
MPI(メッセージ通信インターフェース)は、多くの並列コンピューティングアーキテクチャに適用可能なメッセージ通信標準である。MPIは、機械学習に適用可能な多くのコレクティブを定義している。1つのそのようなコレクティブは、「Allreduce」と称される。Allreduce動作は、異なるソース処理からの複数のデータ値に作用する計算機能の結果が受信処理で提供されることを可能にする。受信処理がソース処理の1つであり得、複数の受信処理があり得ることに留意されたい。Allreduceコレクティブは、複数のソース処理からのデータ値を集約して、結果を(集約(reduce)された結果の受信処理として動作する)全てのソース処理に配信する。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機能が特に有用な例であることが容易に分かるであろう。デルタ重みは、組み合わせ関数118aに供給され、そこで集約され、次いで集約された形式で各処理ユニットに戻されて、元の重みと組み合わされ得る。
【0006】
図1Aは、Allreduceコレクティブが6つの処理ノードN
0・・・N
5の直線的に接続されたトポロジとしてどのように実装され得るかを示す概略図である。これらの処理ノードは、組み合わせ関数が分散される
図1の処理ユニットに対応し得る。処理ノードは、各処理ノードが「順方向」リンクL
F及び「逆方向」リンクL
Bによって隣接ノードに接続されるライン構成で接続されて示されている。この図に示すように、方向語句が示唆するように、順方向リンクは、処理ノードを
図1Aの左から右に接続し、逆方向リンクは、処理ノードを
図1Aの右から左に接続する。各処理ノードは、200として指定された処理能力及び202として指定された記憶能力を有する。処理能力及び記憶能力は、非常に多くの方法のいずれかで実装され得る。1つの特定の具体例において、処理ノードは、個々のタイルがその処理能力及び付随するメモリ機能を有する複数のタイルを含み得る。各処理ノードは、それがリンクL
F/L
Bを介して隣接ノードに接続されることを可能にする1つ以上のリンクインターフェースも有する。
【0007】
Allreduceコレクティブの実装を理解するために、第1のノードN
0が、Δ0と表示された「部分」ベクトルを生成していると仮定する。「部分」とは、デルタ重みの配列、例えばベクトル又はテンソルを含むデータ構造であり得る。部分ベクトルは、各々が処理ノードに対する計算に対応する複数の部分の配列である。各「部分」は、デルタ重みの組であり得る。部分は、Allreduceコレクティブ内で直ちに交換可能であるように記憶能力202に保存される。単純な「ストリーミング」ラインAllreduceアルゴリズムにおいて、順方向リンクは、「集約(reduce)」に使用され、逆方向リンクは、「ブロードキャスト」に使用される。アルゴリズムは、一端の処理ノードN
0(
図1Aの左側ノード)において、その隣接するノードN
1にその部分Δ0を送信することから始まる。ノードにおいて、入力部分(この場合にはΔ0)は、処理ノードN
1における計算機能200により生成された対応する部分Δ1だけ集約される。次いで、この集約(
図1AではADD機能として示す)の結果は、処理ノードN
1から次の接続ノードN
2に送られる。以下に詳述するように、ADD機能は、部分の集約に使用され得る任意の組み合わせ機能で代替することができる。処理は、
図1AにN
5で示す最後の処理ノードにおいて部分の集約が完了するまで各処理ノードで行われる。この時点において、集約結果(Δの和)は、逆方向リンクL
Bを介して各処理ノードに返送される。集約結果は、各ノードで受信され、そのノードのメモリ機能に保存され、その後、次のノードにも送信される。このように、各処理ノードは、集約結果で終了する。
【0008】
図1Bは、集約及びブロードキャストフェーズのタイミング図を示す。処理ノードは、1つ前のノードから入力データを受信するまで、集約結果を次のノードに送信できないことに留意されたい。従って、順方向リンクの各出力送信のために、Δと表記する固有の待ち時間が存在する。
【0009】
更に、逆方向リンクは、完全に集約された結果が終点ノードで取得されるまでブロードキャストに使用されない。しかし、パイプライン効果に起因して部分ベクトルが大きい場合、そのノードが自らの部分のデータ項目の送信を終了するよりもかなり前に結果の先頭のデータ項目が始点ノードに戻るため、全ての順方向及び逆方向リンクで動作が相当重なる可能性がある。
【0010】
若干の改良であるこのアルゴリズムの変更形態では、線の各終端の処理ノードは、集約が中央ノードで完了した状態で自らの部分の中央ノードに送信を開始することができる。その場合、結果は、ブロードキャストされて終点ノードに戻される。このシナリオでは、順方向及び逆方向リンクの両方において、例えばノードN
2及びN
3間並びにN
3及びN
4間で移動方向が反転されることに留意されたい。(順方向及び逆方向リンクの両方において最終ノードN
5を第1のノードN
0に接続することにより)線が閉じてリングとした場合、パイプラインアルゴリズムは、集約及びブロードキャストを同じ方向に直列化できるため、双方向リンクによって形成された2つの論理リングは、それぞれ独立して、データの半分に対して作用することができる。すなわち、各部分ベクトルは、二分割され、第1の半分ΔAは、順方向リンクで集約され(
図1Aのように)、N
5とN
0との間で接続レッグにブロードキャストされる。ベクトルΔBの他の半分は、逆方向リンクで集約され、次いで逆方向リンクの接続リングにブロードキャストされる。
【0011】
図1Dは、順方向及び逆方向リンクに対応するタイミング図を示す。
【0012】
図1C及び1Dに示す1次元リングの原理は、円環(torus or troid)接続されたコンピュータのような2次元リングに拡張可能である。
【0013】
2次元でリングを用いる代替方式は、Allgatherコレクティブに続いて、reduce-scatterコレクティブを用いて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コレクティブ動作を実行することにより実行され得る。
【0014】
Jainの論文で議論されているように、円環相互接続は、分散メモリスーパーコンピュータのための魅力的な相互接続アーキテクチャである。上記の議論において、コレクティブを処理間通信に関連して説明してきた。分散スーパーコンピュータにおいて、処理ノードは、相互接続され、各処理ノードは、コレクティブに関する1つ以上の処理に対して応答的であり得る。円環相互接続は、N次元配列に構成された処理ノードを有する一種のメッシュ相互接続であり、各ノードは、最も近い隣接ノードに接続され、配列の両端縁の対応するノードも接続される。多くの円環構成において、双方向通信リンクは、相互接続された処理ノード間に存在する。
【0015】
Jain及びSabharwalによる上述の論文で議論されたコレクティブを実行するアルゴリズムは、円環接続されたアーキテクチャに適用される。これにより、コレクティブは、異なる次元のリング内でベクトルの異なるフラグメントを同時に処理することができるため、処理帯域幅が効率的になる。しかし、本発明者は、この分野で肯定されている見解にもかかわらず、Jain及びSabharwalが提示した技術が対称又は非対称な円環に最適でないと判断した。対称な円環は、非軸方向リング内のノードの数が円環の軸方向リング内のノードの数に一致する円環であることが理解される。非対称な円環は、非軸方向リング内のノードの数が軸方向リング内のノードの数に一致しない円環であることが理解される。いずれの場合にも、軸方向リングの数が非軸方向リング内のノードの数に等しいことに留意されたい。
【発明の概要】
【発明が解決しようとする課題】
【0016】
本開示の目的は、特に、但し非限定的に、機械学習における処理機能に使用するための、Allreduce機能などのコレクティブを実行するための改良されたコンピュータ及び方法を提示することである。本明細書に記載するトポロジ及び構成は、特にAllreduceの効率的な実装に有効であるが、他の機械学習コレクティブ及び他の種類の並列プログラムにも有利に使用され得る。
【課題を解決するための手段】
【0017】
本発明の一態様によれば、軸に沿って配置された複数の層を有する円環構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、
各層は、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向の第1の次元のリング状に接続された複数の処理ノードを含み、各組のリンクは、同時に動作するように適合され、
各層内の処理ノードは、軸に沿って第2の次元のリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
コンピュータは、複数の組み込み1次元論理経路が同時に動作するように、複数の組み込み1次元論理経路を周回してデータを送信するようにプログラムされ、各論理経路は、リングシーケンス内のコンピュータの全ての処理ノードを使用する、コンピュータが提供される。
【0018】
いくつかの実施形態において、コンピュータは、非対称な帯域幅でデータを送信するようにプログラムされる。他の実施形態において、コンピュータは、対称な帯域幅でデータを送信するようにプログラムされる。
【0019】
いくつかの実施形態において、層内リンク帯域幅は、軸に沿った帯域幅よりも大きい。
【0020】
いくつかの実施形態において、組み込み経路は同型である。
【0021】
コンピュータを用いて、本明細書に記載するようにAllreduceコレクティブを実装することができる。
【0022】
一実施形態において、層内リンクの組は、2つのリンクを含み、帯域幅は、軸に沿ってB/6、各層内でB/3であり、ここで、Bは、各処理ノードの総帯域幅である。3つの論理経路が組み込まれ得る。
【0023】
別の実施形態において、層内リンクの組は、3つのリンクを含み、帯域幅は、各層内で3B/8、軸に沿ってB/8である。4つの論理経路が組み込まれ得る。
【0024】
データは、各層内の処理ノードを通る各論理経路に沿って反時計回り又は時計回りに通過することができる。いくつかの実施形態において、データは、連続的な層を同じ方向に通過することができる。他の実施形態において、データは、連続的な層を反対方向に通過することができる。多くの変形が可能である。
【0025】
各処理ノードは、reduce scatterフェーズで交換される準備ができているデータ項目の配列を保存するように構成されたメモリを含み得、各データ項目は、それぞれ配列内に配置され、対応するデータ項目は、それぞれ他の処理ノードの配列内の対応する位置に配置される。配列は、「部分」(部分結果のベクトル)又は「結果」(完全に集約された部分のベクトル)であり得る。
【0026】
処理ノードは、reduce-scatterフェーズにおいて、各論理経路を周回して、隣接する接続された処理ノードにデータ項目を順方向に送信するようにそれぞれプログラムされ得る。各ステップで送信され得るデータ項目は、「フラグメント」と称される。フラグメントは、本明細書に記載するようにベクトルの一部であり、ベクトルは、組み込み経路に形成された論理リングを利用するために複数のフラグメントに分割される。
【0027】
各配列は、部分デルタのベクトルの少なくとも一部を表し得、各部分デルタは、各処理ノードに保存された値への調整を表す。各処理ノードは、計算ステップで部分デルタのベクトルを生成するようにプログラムされ得る。各処理ノードは、ベクトルを、組み込み経路の利用のために部分配列に分割するようにプログラムされ得る。
【0028】
処理ノードの各々は、データ送信ステップで使用されない層間及び層内リンクのいずれも無効化するようにプログラムされ得る。
【0029】
各処理ノードは、ノードのそれぞれの部分ベクトルをフラグメントに分割し、データを、連続的なフラグメントの形式で各組み込み1次元経路を周回して送信するようにプログラムされ得る。
【0030】
コンピュータは、各経路を論理リングの組として動作させるようにプログラムされ得、連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される。
【0031】
各処理ノードは、層内及び層内リンクの組の各々において、それぞれのフラグメントを同時に出力するように構成され得る。
【0032】
各処理ノードは、入力フラグメントを対応する局所的に保存されたフラグメントと共に集約するように構成され得る。
【0033】
各処理ノードは、AllreduceコレクティブのAllgatherフェーズにおいて、完全に集約されたフラグメントをリンクの各々で同時に送信するように構成され得る。
【0034】
いくつかの実施形態において、いくつか又は全てのリンクは、双方向性を有し、すなわち、それらは、リンクを介してデータを両方向に任意に同時に送信することができる。
【0035】
本発明の別の態様は、軸に沿って配置された複数の層を有する円環構成で配置された複数の相互接続された処理ノードを含むコンピュータで並列に実行されるプログラムの組を生成する方法であって、
各層は、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向の第1の次元のリング状に接続された複数の処理ノードを含み、各組のリンクは、同時に動作するように適合され、
各層内の処理ノードは、軸に沿って第2の次元のリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
本方法は、
各プログラムについて、そのプログラムを実行する処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を生成するステップであって、データ送信命令は、そのデータ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップと、
複数の組み込み1次元論理経路が同時に動作するように、複数の組み込み1次元論理経路を周回してデータを送信するためにリンク識別子を決定するステップであって、各論理経路は、コンピュータの全ての処理ノードを順次使用する、ステップと、
を含む、方法を提供する。
【0036】
いくつかの実施形態において、プログラムは、対称又は非対称な帯域幅でデータを送信するように生成される。
【0037】
いくつかの実施形態において、層内リンク帯域幅は、軸に沿った帯域幅よりも大きい。
【0038】
いくつかの実施形態において、各プログラムは、データ送信ステップで使用されない層間及び層内リンクのいずれも無効化するための1つ以上の命令を含む。
【0039】
いくつかの実施形態において、各プログラムは、プログラムが実行される処理ノードのそれぞれの部分ベクトルをフラグメントに分割し、それぞれに定義されたリンクを介してデータを連続的なフラグメントの形式で送信するための1つ以上の命令を含む。
【0040】
いくつかの実施形態において、各プログラムは、それぞれのフラグメントを複数のリンクの各々で同時に出力するための1つ以上の命令を含む。
【0041】
いくつかの実施形態において、各プログラムは、入力フラグメントを対応する局所的に保存されたフラグメントと共に集約するための1つ以上の命令を含む。
【0042】
いくつかの実施形態において、各プログラムは、AllreduceコレクティブのAllgatherフェーズにおいて、完全に集約されたフラグメントをリンクの各々で同時に送信するための1つ以上の命令を含む。
【0043】
本発明の別の態様は、軸に沿って配置された複数の層を有する円環構成で配置された複数の相互接続された処理ノードを含むコンピュータでプログラムの組を並列に実行する方法であって、
各層は、隣接する処理ノードの各ペア間のリンクの層内の組により、非軸方向の第1の次元のリング状に接続された複数の処理ノードを含み、各組のリンクは、同時に動作するように適合され、
各層内の処理ノードは、軸に沿って第2の次元のリングを形成するために、層間リンクによって、隣接する層内の対応するノードに接続され、
本方法は、
各プログラムにおいて、そのプログラムを実行する処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を実行するステップであって、データ送信命令は、そのデータ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップを含み、
リンク識別子は、複数の組み込み1次元論理経路が同時に動作するように、処理ノード及びリンクのそれぞれの組によって形成された複数の組み込み1次元論理経路の各々を周回してデータを送信するために決定されており、各論理経路は、コンピュータの全ての処理ノードを順次使用する、方法を提供する。
【0044】
データは、対称又は非対称な帯域幅で送信され得る。
【0045】
いくつかの実施形態において、層内リンク帯域幅は、軸に沿った帯域幅よりも大きい。
【0046】
いくつかの実施形態において、プログラムを実行するステップは、各経路を論理リングの組として動作させ、各処理ノードで提供される部分ベクトルの連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される。
【0047】
ここで、本発明のよりよい理解のため、本発明がどのように実施されるかを示すために添付の図面を例として参照する。
【図面の簡単な説明】
【0048】
【
図1】ニューラルネットの分散訓練を示す概略図である。
【
図1A】簡単な「ストリーミング」ラインAllreduceアルゴリズムを実行する一連の処理ノードを示す概略図である。
【
図1B】「ストリーミング」ラインAllreduceアルゴリズムのタイミング図である。
【
図1C】リングに接続された終点ノードを有するラインの概略図である。
【
図1D】リングAllreduceアルゴリズムのタイミング図である。
【
図2】reduce-scatterステップに続いて、AllgatherステップによるAllreduce機能の実行を示す概略図である。
【
図3A-3B】バケットに基づくAllreduceアルゴリズムを示す。
【
図4】3つのリングが埋められた処理ノードの「三角形円環」構成の概略図である。
【
図5C】2:1帯域幅非対称性を有する3×8円環を示す。
【
図5B】各々がリンク毎にB/6を使用する、グラフを同時に循環可能な3つの同型組み込みリングを示す。
【
図5C】3つの組み込みリングの一代替形態の3D図を示し、他の2つのリングは、長軸の周りで120°回転すれば同じである。
【
図5D】3つの組み込みリングの別の代替形態の3D図を示し、他の2つのリングは、長軸の周りで120°回転すれば同じである。
【
図6A】3:1帯域幅非対称性を有する4×6円環を示す。
【
図6B】各々がリンク毎に帯域幅B/8を使用する、グラフを同時に循環可能な4つの同型組み込みリングを示す。
【
図6C】4つの組み込みリングの1つの3D図を示す。他の3つのリングは、長軸の周りで90°回転すれば同じである。
【
図7A】円環として接続された4×4コンピュータネットワークに組み込み可能な2つの同型組み込みリングを示す。
【
図7B】円環として接続された4×4コンピュータネットワークに組み込み可能な2つの同型組み込みリングを示す。
【
図8A】円環として接続された4×8コンピュータネットワークに組み込まれた2つの同型リングをそれぞれ示す。
【
図8B】円環として接続された4×8コンピュータネットワークに組み込まれた2つの同型リングをそれぞれ示す。
【
図9A】円環として接続された8×8コンピュータネットワークに組み込み可能な2つの同型リングをそれぞれ示す。
【
図9B】円環として接続された8×8コンピュータネットワークに組み込み可能な2つの同型リングをそれぞれ示す。
【発明を実施するための形態】
【0049】
本発明の態様は、学習機械の動作負荷のアクセラレータとして機能するように設計されたマルチタイルプロセッサに関連して開発された。アクセラレータは、複数の相互接続された処理ノードを含む。各処理ノードは、単一のマルチタイルチップ、複数のチップのパッケージ又は複数のパッケージのラックであり得る。本明細書における目的は、決定論的(反復可能)な計算で極めて効率的な機械を考案することである。処理ノードは、コレクティブ、特に、但し非限定的にブロードキャスト(broadcast)及びAllreduceを効率的に実行可能にするように相互接続される。
【0050】
分散処理を用いてニューラルネットワークを訓練する際の1つの特定の応用は、モデルを更新することである。これに関連して、分散処理は、チップ若しくはパッケージ又はラック等の異なる物理的実体である複数の処理ノードを利用する。すなわち、処理ノード間のデータの送信では、物理リンクを介してメッセージを交換する必要がある。
【0051】
機械学習専用のトポロジを開発する際の課題は、高性能コンピューティング(HPC)ネットワークの一般的な分野の課題と異なる。HPCネットワークは、通常、オンデマンド非同期全対全個人向け通信に重点が置かれ、そのため、動的ルーティング及び帯域幅の過剰供給が通常行われる。帯域幅の提供よりも待ち時間を短縮する目的のため、余剰帯域幅がHPCネットワークに供給される場合がある。動作中の通信リンクの過剰な供給は、電力を浪費して計算性能に影響する恐れがある。今日計算に用いられる最も一般的な種類のリンクは、データ送信に使用されるか否かに関わらず、動作中に電力を消費する。
【0052】
本発明者は、特にMI作業負荷に適合され、MI作業負荷の以下の属性に対処にする機械トポロジを開発した。本実施形態は、R×Nの円環にR個のリングが組み込まれる異なる構造を提供し、ここで、Rは、1つ層内のノードの数であり、Nは、層の数であり、各リングは、次の層に移動する前に1つの層内の全てのノードを辿る。
【0053】
MI動作負荷において、チップ間通信は、現在、ブロードキャスト及びAllreduceコレクティブが主流となっている。ブロードキャストコレクティブは、scatterコレクティブに続いてAllgatherコレクティブにより実行可能であり、Allreduceコレクティブは、reduce-scatterコレクティブに続いてAllgatherコレクティブにより実行可能である。この前提において、チップ間という用語は、外部通信リンクを介して接続された処理ノード間のあらゆる通信を指す。上述のように、これらの処理ノードは、チップ、パッケージ又はラックであり得る。
【0054】
通信リンクは、印刷回路基板のチップ間又は異なる印刷回路基板のチップ間であり得ることに留意されたい。
【0055】
動作負荷は、個々の知能処理装置(IPU)機械内で全対全通信が基本的にチップ間であるようにコンパイル可能である。
【0056】
Allreduceコレクティブは、上述の通りであり、
図2に示されている。
図2は、開始状態S1における4つのノードの各々の部分値の組、すなわち「部分」ベクトルP
0、P
1、P
2、P
3を示す。これに関連して、ノードとは、複数の処理ノードのネットワークにおける処理ノードである。各ノードN
0、N
1、N
2、N
3は、対応してマークされた(大きいひし形格子、幅広の下向き斜め縞、大きい正方形格子、幅広の上向き斜め縞)4つの「対応する」部分を有することに留意されたい。すなわち、各部分は、例えば、P
0(n)のベクトルにおけるノードnが、P
0(n+1)のベクトルにおけるノードn+1と同じ位置を有するように、自らの部分ベクトルに位置を有する。添え字(n)は、部分が存在するノードを示すために使用され、従って、P
0(0)は、ノードN
0の部分P
0である。reduce-scatterパスにおいて、対応する部分は、集約され、集約は、複数ノードの1つに施される。例えば、部分P
0(0)、P
0(1)、P
0(2)、P
0(3)は、(r
0に)集約されてノードN
0に置かれる。同様に、部分P
1(0)、P
1(1)、P
1(2)及びP
1(3)は、(r
1に)集約されてノードN
1に置かれる。以下同様であり、中間状態S2において、各ノードは、複数の集約r
0、r
1、r
2及びr
3の1つを施される。説明したように、集約は、任意の組み合わせ関数
【数1】
であり得、これは、独立演算子(例えば、最大化)又は関連演算子=P
1(0)*P
1(1)*P
1(2)*P
1(3)を含み得る。次いで、Allgatherパスにおいて、各集約が全てのノードに施されて状態S3を起動させ、ここで、各ノードに4つの集約の全てが施される。S1において、「対応する」部分、例えばP
0(0)、P
0(1)、P
0(2)及びP
0(3)が全て異なり得るのに対し、状態S3では、各集約、例えばr
0が全てのノードに対して同じであるが、但しr
i=f{(P
i(0)、P
i(1)、P
i(2)及びP
i(3))}であることに留意されたい。機械学習において、部分P
0、P
1、P
2、P
3の組は、ベクトルである。部分(例えば、更新された重み)のベクトルが訓練中にモデルの各パスに生成される。状態S3における各ノード上の集約r
0、r
1、r
2、r
3は、完全集約ベクトル、すなわち「結果」又は完全に集約された部分のベクトルである。機械学習に関連して、各部分は、モデルのパラメータに対する更新デルタであり得る。代替的に、各部分は、(本明細書で詳述しない構成での)更新されたパラメータであり得る。
【0057】
図3A及び3Bは、6つの「仮想」リングを仮定するreduce-scatter/Allgatherのためのバケットに基づくアルゴリズムを示す。これらは、本明細書において「論理」リングとも呼ばれる。
図3Aは、複数の仮想リングにおける部分の集約を示す概略図である。各部分は、6つのフラグメントに分割される。
図3Aにおいて、大文字R、Y、G、B、P、Lは、各ノードに保存された部分の異なるフラグメントを赤、黄色、緑、青、紫の色又は対応するハッシング(R - ダイヤモンド格子、Y - 斜め上向きトライプ、G - 正方形格子、B - 横方向ストライプ、P - 斜め下向きストライプ、L - 縦方向ストライプ)によりそれぞれ示す。文字は、互いに集約対象であり、フラグメントの「仮想」又は「論理」リングを定義する対応するフラグメントを示す。
図3Aを参照すると、各々の部分P
0、P
1、P
2、P
3及びP
4における「R」フラグメントは、結果ベクトル
【数2】
の単一のフラグメントに集約される。Y、G、B、P及びLフラグメントも同様である。
【0058】
図3Bは、Allreduce処理の各ステップにおけるデータ交換及び計算を示す、横軸に時間を取ったタイミング図を示す。
図3A及びBにおいて、Allreduce処理は、reduce-scatterフェーズに続いてAllgatherフェーズにより実現される。
図3Bにおいて、各フラグメントを異なるハッチングで示している。
【0059】
図3A及び3Bにおける表記は、以下の通りである。部分は、それぞれP
0、P
1、P
2、P
3、P
4、P
5として示される。処理の開始時点において、各部分は、各ノードN
0、N
1、N
2、N
3、N
4、N
5に保存される。各フラグメントは、各々が集約されると考えられる仮想リング内でのフラグメントの定義及び位置に応じて表示される。例えば、RA
0は、ノードN
0-N
1-N
2-N
3-N
4-N
0によって形成された仮想リングの先頭フラグメントであるため、部分P
0のRフラグメントを示す。RA
1は、その仮想リングで2番目の位置にあるノードN
1のRフラグメントを示す。YA
0は、ノードN
1のYフラグメントを示す。添え字「0」は、その仮想リングの先頭フラグメントであることを示し、Y-リングは、N
1-N
2-N
3-N
4-N
0-N
1である。特に、Aの添え字が仮想リングを反映し、物理ノード(又は部分)に対応しないことに留意されたい。
図3Aは、順方向リンクの仮想リングのみを示すことに留意されたい。
図3Bは、逆方向リンクで均等な処理が行われることを示し、フラグメントをBで示す。
【0060】
ステップ1において、各仮想リングの先頭フラグメント(A0)がそのノードから次の隣接ノードに移送され、そのノードで対応するフラグメントにより集約される。すなわち、RA
0は、N
0からN
1まで移動して、R(A0+A1)に集約される。再び、ここでは記号「+」は、任意の組み合わせ関数の省略形として使用される。同じステップで各仮想リングのA0フラグメントが同時に送信されることに留意されたい。すなわち、N
1とN
2との間のリンクは、YA
0の送信に使用され、N
2とN
3との間のリンクは、GA
0の送信に使用され、以下同様である。次のステップでは、対応する集約フラグメントが順方向リンクを介して次の隣接ノードに送信される。例えば、R(A0+A1)がN
1からN
2に送信され、Y(A0+A1)がN
2からN
3に送信される。明快さのため、
図3Aで全てのフラグメントに番号が付与されておらず、全ての送信に番号が付与されていないことに留意されたい。フラグメント及び数の完全な組を
図3Bに示す。本処理は、5ステップで実行される。5ステップ後、各ノードで全てのフラグメントが集約される。第5のステップの終了時点において、集約は、そのフラグメントの対応する各リングの最後のノードで行われる。例えば、R集約は、ノードN
5で行われる。
【0061】
Allgatherフェーズの開始は、各仮想リングの最後から最初のノードへの送信により始まる。従って、Rフラグメントの最後の集約は、Allgatherフェーズの第1のステップの準備ができているノードN5で終了する。Yフラグメントの最後の集約は、対応してノードN0で終了する。Allgatherフェーズの次のステップでは、集約されたフラグメントは、自らの次の隣接ノードに再び送信される。従って、完全に集約されたRフラグメントは、現在、N2にも存在し、完全に集約されたYフラグメントは、現在、N3にも存在し、以下同様である。このように、各ノードは、Allgatherフェーズの終了時点において、部分ベクトルの全てのフラグメントR、Y、G、B、P、Lが完全に集約された状態となって終了する。
【0062】
アルゴリズムの実行が効果的であるのは、集約に必要な計算をパイプライン待ち時間に覆い隠すことができる場合である。本発明者は、Allreduceの実行のためにコンピュータ内に適当なリングを形成する際、リングの循環がリング内の各ノードを1回のみ辿る場合に最も効率的であることを認識している。従って、双方向リンク(
図1A)を有するラインによって形成された自然のリングは、最も効率的なリングではない。
【0063】
ここで、Allreduceコレクティブを実行するために、処理ノード間で部分及び結果の効率的な受け渡しを可能にする処理ノードの相互接続されたネットワークの改良されたトポロジについて記載する。
【0064】
組み込み1次元のリングの構成によれば、複数の積層を有する構成が提供される。本明細書では、組み込みリングを「経路」とも称することに留意されたい。これらの用語は、交換可能であるが、用語「仮想リング」は、上で概説したように、各組み込みリング又は経路上の仮想リングで複数のフラグメントが動作し得るシナリオのために準備されることを認識することが重要である。このような構成の一実施形態を、三角形円環の3次元図である
図4に示す。物理的接続と論理的接続があり、その両方について記載する。物理的接続性によれば、構成は、複数の積層、すなわち
図4の左から右に示す積層を含む。積層の向きは、重要でないが、処理ユニットがサーバラックに配置され得る実際の構成では、サーバラックに対して垂直に構成された積層が有用であり得ることに留意されたい。
図5A及び6Aは、そのような垂直積層を示す。
【0065】
各層は、
図4にN51、N52及びN53として示す左端の層に示す3つの処理ノードを含む。用語「左端」は、図示するレイアウトを指すが、実際には、円環構成では、各層は、リングにおいて接続されたノードを含み、その各々が軸に沿って形成された別のリングに属する。軸に沿って延びないため、各層のリングは、「非軸対象」と考えられる。「左端」層の処理ノードは、リングにおいて接続され、各処理ノードは、2つのリンクL1、L2によってその隣接する処理ノードに接続される。これらのリンクは、それぞれ双方向性であり得る。積層の「右端」層もノード間の2つのリンクによって互いに接続される。しかし、積層の「中央」層は、単一のリンクのみに接続される。ここで、リンクによる接続性は、リンクが有効であり、データを送信可能であることを意味する。処理ノード間には、構成の動作の一部を形成しない他の無効な接続があり得る。
【0066】
構成は、同時に動作し得る3つの組み込み1次元リング又は経路を提供するように動作される。
図4は、R1、R2及びR3と表示されたリングでこれを概略的に示す。R1を実線で、R2を点線で、R3を破線で示す。構成を、断面が三角形であるシリンダと考えると、シリンダの各々の平坦な面に1次元組み込みリングが組み込まれる。例えば、リングR1は、(最も端の層の)ノードN51、(層間の)N52、N52とN55との間のリンク、(次の層内の)N55とN54との間のリンク、(層間の)N57とN54との間のリンク、(次の層内の)N57とN58との間のリンク、N58とN511との層間のリンク、(最も右端の層の)N511とN510との間のリンク、N510とN512との間のリンク並びにN512とN53との間の戻りリンク及びN51への戻りによって形成される。
【0067】
対応する組み込みリングを他の2つのフェーズの各々に見出すことができる。従って、各リングは、リングが完成するまで、層間リンクに接続された各層内のリンク内に形成される。リング(又は経路)について、
図4を参照して以下でより詳細に記述する。
【0068】
第1の組み込み経路において、ノードN51は、ノードN51及びN52間のリンクにより、第1の末端層の一方に沿ってノードN52に接続される。これは、第1の末端層の一方に沿った層内リンクであるが、図示の便宜上、そのように記載される。経路は、第1の末端層の次の側面に沿ってノードN53まで続く。経路は、次いで、層間リンクを介してノードN53からノードN56に進む。経路は、次いで、ノードN52及びN56の構成と同じ面上の別の層内リンクを介してノードN56からN55に進む。経路は、側面を下向きにノードN55からノードN58に、次いで層内リンクに沿って面を横断してノードN59まで延びる。経路は、層間リンクに沿ってノードN59からノードN512に進み、次いで層内リンクに沿ってノードN512からノードN511に進み、そこから層内リンクに沿ってN511から第2の末端層のノードN510に進む。ノードN511、N512及びN510間の層内リンクは、第2の末端層の側面である。経路は、次いで、ノードN510から戻り部分に沿って第1の末端層のノードN51に進む。この経路を
図4に細かい破線で示す。
【0069】
第2の組み込み経路も、ノードN53から始まる黒い実線で示すことができる。この経路は、ノードN53からノードN51に、ノードN51からノードN52に、ノードN52からノードN55に、ノードN55からノードN54に、ノードN54からN57に、ノードN57からN58に、ノードN58からノードN511に、N511からノードN510に、そして、ノードN510からノードN512に延びる、
図4に示す構成の「最下」面に沿った第1の部分を有する。
【0070】
経路の戻りの第2の部分は、第2の末端層のノードN512と、第1の末端層のN53との間の相互接続リンクにより提供される。
【0071】
ノードN52から始まり、層内リンクに沿ってノードN53まで延びる第3の組み込み経路を示すことができる。第3の組み込み経路は、破線で示されている。経路は、次いで、ノードN53からN51に、N51からN54に、N54からN56に、ノードN56からN59に、ノードN59からN57に、ノードN57からN510に、ノードN510からノードN512に、そして、ノードN512からN511に、
図4に示す構成の底面に沿って進む。経路は、ノードN511からN52への戻り部分を有する。
【0072】
各経路は、構成の1つの面内の各ノード及び各々の末端層の2つの「脚部」を1回のみ用いる第1の部分を有することに留意されたい。各経路は、従って、いずれの中間処理ノードも通過することなく末端層間を直接通過する戻り部分を有する。各経路は、「最初の」ノードが「最後」のノードに接続されるリング又はループ形式の処理ノードのシーケンスを用いる。
【0073】
3つの組み込みリングは、同時に動作できる。全てのリンクが同時双方向動作を行うことが可能である場合、6つの組み込みリングが同時に動作できる。
【0074】
コンピュータの能力は、処理ノードの新たな層を追加することにより拡張することができる。これを行うには、処理ノードの相互接続性を変更する。例えば、第2の末端層(
図4の右側層)に追加される余剰層の追加を考える。ノードN511からのリンクの1つが切り離されて、追加的な層の対応する処理ノードに接続され、処理ノードをEPN1(余剰処理ノード1)と表示して示している。同様に、ノードN512及びノードN511の各々からのリンクの1つは、現在、それらが接続されているノードから切り離され、それぞれEPN2、EPN3と表示された対応する余剰処理ノードに接続される。次いで、ノードEPN1、EPN2及びEPN3は、自らがリングとして接続され、各リンク構造は、構成の他の層と同様である。構成の残りの部分の接続性は、同じままであることに留意されたい。このように、複数の層を積層構成のいずれの終端にも追加することができる。
【0075】
三角筒構成の各層を周回する経路(3つのノードの組)は、3つの処理ノードの層の拡張された三角柱が異なる長さのパーティションに分割されて、各パーティションが自己完結的に動作できるようなものであることに留意されたい。これは、別々のパーティションの層間のリンクを無効化することにより行うことができる。
【0076】
相互接続されたネットワークは、非対称な帯域幅が割り当てられた円環構成であり、複数の1次元リング又は経路が組み込まれる。リングは、データ交換ステップで同時に使用できる。構造を使用するために、送信対象の部分(又はフラグメント)が各ノードで2つの部分に分割され、各部分は、
図3A及び3Bを参照して上で述べた1次元リングアルゴリズムを用いて、リングの1つを周回して全て集約される。
【0077】
各ノードは、
【数3】
サイズのフラグメントを出力し、ここで、Nは、特定のフェーズでreduce-scattered又はAllgatherされるノードの数であり、Vは、データ構造のサイズである。開始時点において、Vは、部分ベクトルのサイズである。フラグメントの数は、リングを周回する各ステップの実行前のリング内のノードの数に等しい。ほとんどの実施形態では、各フラグメントは、同じサイズを有する。しかし、例えば、ベクトルの成分の数が均一に割り切れない、フラグメントのサイズが僅かに異なるシナリオもあり得る。その場合、これらは、ほぼ同じサイズ、すなわち除数に応じて1又は2つの成分が異なり得る。上述のJainの論文に記述される構造と比較して、リングが全てのノードを通過し、全てのリンクが常に使用されることに留意されたい。ここでは、各処理ノードがそのデータを2つのリンクで同時に出力でき、データを同時に受信及び処理できると仮定する。各リングは、1次元、すなわち処理ノードの非分岐鎖である。
【0078】
いくつかの実施形態において、リングとしての動作への言及は、Allreduceコレクティブを実装する上述の1次元のアルゴリズムの実装を指す。本明細書に記載する構造において、全ての組み込みリングは、同時に動作可能であり、構造内の複数のリングを同時に処理するために各ノードで部分ベクトルを複数の部分に分割可能にする。
【0079】
戻り経路が末端層内の対応処理ノード間、例えば
図4のノードN51N及びN510間の接続により提供される場合、円環構造が形成される。本発明の実施形態は、円環構成に接続されたコンピュータネットワークを動作させる新たな方法を提供する。
図4の構造は、非対称な帯域幅で動作されるものとして示されている。すなわち、あるノードによる帯域幅は、そのノードのリンク間で異なる。更なる実施形態は、非対称な帯域幅で同様に動作する円環を提供する。
図4の構造において、非対称性は、層間により多くの帯域幅があるとの形で現れる。以下に記述する新たな構成において、非対称は、層内でより多くの帯域幅を提供することによって現れる。
【0080】
非対称な帯域幅は、非対称な円環構成と異なり、非軸方向リング内のノードの数が軸方向リング内のノードの数と異なることに留意されたい。非対称な帯域幅は、対称又は非対称な円環構成で使用することができる。
【0081】
図5Aは、3×8の円環を示す。すなわち、リング状に接続された処理ノードの各層は、3つの処理ノードを含み、それぞれ8つのノードの3つの軸方向リングを形成する8つの層がある。
図5Aにおいて、丸印は、処理ノードを示し、中間の線は、処理ノードを接続するリンクを示す。これは、概略的なレベルであることに留意されたい。
図5Aは、処理ノードの各ペア間の動作リンクの数を示していない。実際、動作リンクの数は、処理ノード間での帯域幅を定義する。
図5Aに示すコンピュータネットワークは、2対1の帯域幅非対称性で構成される。すなわち、1つ層内の処理ノード間での帯域幅は、B/3である。隣接する層の処理ノード間での帯域幅は、B/6である。Bは、使用する最大帯域幅であることに留意されたい。
図5Aは、リンクへの総ノード帯域幅Bの割り当てを示す構造の接続性を示す。この帯域幅割り当ては、
図5Bでより明らかに分かる。
【0082】
図5Bは、各々がリンク毎にB/6の帯域幅を使用する、構造を同時に循環可能な3つの同型組み込みリングの各々を示す。これらのリングは、それぞれTR1、TR2、TR3とラベル付けされる。帯域幅は、3つの同型組み込みリングを調べることにより分かる。例えば、リングTR1及びTR2において図の最上部にある3つの処理ノードの「末端」層を考える。両方のリングが右端の2つの処理ノードのリンクを使用する。従って、これらの処理ノード間での帯域幅利用は、2つのリンクの使用に起因して2倍になる。同様に、左端の2つの処理ノードは、リングTR1、TR3における2つのリンクを使用する。しかし、ページ下側の構造の軸では、処理ノード間で各リングにおいて1つの下方リンクのみを使用する。各処理ノードによるデータ送信のためのリンクの選択は、後述するように、コンパイラにより決定される。コンパイラは、各々がデータ交換ステップで使用するリンク識別子を定義するノードレベルプログラムを生成する。
【0083】
このような方法で異なるリングをプログラムすることができる。例えば、データが各層の処理ノードを周回する方向は、時計回り又は反時計回りであり得る。層内の各ノードは、次の層に移動する前に辿られることに留意されたい。しかし、ノードを辿り得る方向は、時計回り又は反時計回りであり得る。これは、双方向リンクの場合に特定のデータフローを指し、データは、両方向に同時に流れることができる。「辿る方向」は、組み込みリング内のノードの物理的シーケンスを指す。各層において、ノードは、2つの方向、すなわち時計回り及び反時計回りのいずれかで辿られ得る。
【0084】
図5Cは、1つの可能なリング構造による3つの組み込みリングの1つを示す3次元図である。他の2つのリングは、長軸の周りで120°回転すれば同じである。上述のように、各リングへの均等な複数の経路がある。
図5Dは、他の1つの代替形態を示す。
図5Dのリングにおいて、リングは、次の層に移動する前に各層の処理ノードを時計回りに周回する。しかし、上述の通りである必要はないことに留意されたい。すなわち、特定の層を周回してノードを辿る方向は、各層で同じであるか又は各層で異なり得る。いくつかの実施形態では、各層で同じであり得、他の実施形態では、異なる層、例えば連続的な層で異なり得る。リンクが同時に双方向性である場合、各経路を周回するいずれの方向にもデータが送信され得ることに留意されたい。以下の記述は、各組み込み経路内でノードを辿るシーケンスを説明するためにデータ送信の一方向を説明する。
【0085】
図5Cの実施形態において、リングは、代替的に各々の交互の層で時計回り及び反時計回りに移動する。他の変型形態もこの構造を用いて可能である。
【0086】
図6Aは、4×6の円環の構造を示す。すなわち、構造の各層は、リングにおいて接続された4つの処理ノードを含み、それぞれ6つのノードの4つのリングを形成する6つの層がある。「末端」層の対応する処理ノードは、互いに接続されて円環を形成する。
図6Aは、リンクへの総ノードの帯域幅Bの割り当てを示す構造の接続性を示す。この場合、各層内の処理ノード間での帯域幅は、3B/8である。隣接する層内の処理ノード間の帯域幅は、B/8である。これに関連して、末端層間の戻り経路での帯域幅もB/8であることに留意されたい。帯域幅は、処理ノード間のリンクの提供により決定される。各層内で隣接する処理ノード間に3つの動作リンクがある。隣接する層内の処理ノード間に1つの動作リンクがある。
【0087】
図6Bは、各々がリンク毎にB/8の帯域幅を有する、構造を同時に循環可能な4つの同型組み込みリングを示すことにより、帯域幅を更に詳細に示す。例えば、リングBR1、BR2及びBR3は、最上層内の右端の処理ノード間のリンクをそれぞれ使用することが分かる。同様に、リングBR1、BR2及びBR4は、最上層の中間の2つの処理ノード間のリンクを使用する。逆に、隣接する層間を接続するために、各リング内で1つのリンクのみを使用する。
【0088】
図6Cは、4つの組み込みリングの1つを示す3次元図である。他の3つのリングは、構造の長軸の周りで90°回転すれば同じである。リングは、次の層に移動する前に層の各処理ノードを辿ることに留意されたい。
図5A~5Dに示す構造と同様に、各層を例えばそれぞれ異なる方向(反時計回り又は時計回り)に周回することにより、異なる種類のリングを組み込むことができる。上述のように、特定の層を周回してノードを辿る方向は、各層で同じであるか又は各層で異なり得る。
【0089】
図5A~5Dの構造と同様に、帯域幅は、コンパイラを用いてプログラムされる。
【0090】
図7A及び7Bは、4×4ネットワーク構成の2つの組み込み経路を示す。
図7A及び7Bのノード間の相互接続は、構成内の2つの組み込み経路をそれぞれ示す。各経路は、
図7A及び7Bのノードを接続する線で示すように、ノードのシーケンスを通して延び、各経路が構成の各ノードを順次辿る。
【0091】
図8A及び8Bは、4×8ネットワーク構成の2つの組み込み経路を示す。ノード番号は、
図7Aのものと同じであり、下から4行のノードN16~N31が追加される。
図5Aの4×4構成を拡張して、
図8A及び8Bに示す4×8構成を形成できるが、そのネットワークノードから4×8構成を形成することも可能であろう。
【0092】
図8A及び8Bの各々のノード間の相互接続は、構成内の各々の2つの組み込み経路を表す。
【0093】
8×8ネットワーク構成の2つの組み込み経路を示す
図9A及び9Bを参照する。
図9A及び9Bのノードは、
図8Aのノードに従ってラベル付けされ、構成の更に4列のノードN32~N63が追加される。ノードを追加することにより
図8Aの構成を拡張して、
図9A及び9Bに示す構成を形成することが可能であろう。代替的に、その元のノードから
図9A及び9Bの構成を形成することも可能であろう。
【0094】
図9A及び9Bの各々のノード間の相互接続は、ネットワーク構成における2つの組み込みリングをそれぞれ示す。
【0095】
上述の実施形態において、フラグメントサイズは、各リンクの帯域幅から独立している。
【0096】
フラグメントサイズは、組み込みリングのノードの数のみに依存する(n個のノードがある場合、上述のように、最適リングAllreduceアルゴリズムは、完全なベクトルのサイズ1/nのフラグメントを用いる)。図示する帯域幅割り当ては、全ての組み込みリングにわたるデータの循環が、全てのノード及びリンクにわたり使用可能な帯域幅の全てを同時に使用するために、そのリンクに割り当てる必要がある総ノードの帯域幅の分数(全てのリングが双方向性である場合、ノードを同時に出入りする)である。
【0097】
帯域幅非対称性は、帯域幅の割り当てが、有線接続性の2次元、すなわち層の平面(非軸方向と称する)及び層がそれに沿って向けられる(積層される)「長軸」で異なることを指す。完全を期すために、リングは、1次元のみを有するが、データ送信経路を考慮する場合、構造は、全て2次元を有することに留意されたい。
【0098】
各ノードは、処理を実行又は機能を計算することができる。各ノードは、単一のプロセッサとして実装することができる。しかし、各ノードが単一のチップ又はチップのパッケージとして実装され、各チップが複数のプロセッサを含む可能性がより高い。個々のノードの各々を実現する多くの異なる方法がある。一例において、ノードは、公開番号英国特許第2569843号明細書、英国特許第2569430号明細書、英国特許第2569275号明細書の英国出願に記載された種類の知能処理ユニットで構成され得、その内容は、参照により本明細書に援用される。しかし、本明細書に記載する技術は、ノードを構成する任意の種類のプロセッサに使用され得る。本明細書で概説するのは、機械学習モデルで有用な特定の交換パターンを実行するために効率的にデータを交換する方法である。更に、リンクは、任意の適当な方法で実現できる。リンクが双方向性であることが有利であり、同時に両方向で動作可能であることが好適であるが、これは、必須条件ではない。通信リンクの1つの特定のカテゴリは、リンクを介して搬送されるデータの量又はそのデータの搬送に費やした時間から独立した電力要件を有するSERDESリンクである。SERDESは、シリアライザ/デシリアライザの略語であり、そのようなリンクは、公知である。このようなリンクの導線を介して信号を送信するには、信号を生成するために導線に電力を印加して電圧を変化させる必要がある。SERDESリンクには、電力を導線に印加し続けて特定の電圧レベルに維持して、その電圧レベルの変動(0~印加電圧レベルの変動)により信号が搬送されるようにするという特徴がある。従って、使用されるか否かに関わらず、SERDESリンクの帯域幅容量を維持するのに固定電力が存在する。SERDESリンクは、各終端において、リンク層装置を銅線等の物理リンクに接続する回路により実装される。この回路は、PHY(物理層)と称される場合がある。PCIe(Peripheral Component Interconnect Express)は、高速コンピュータを接続するためのインターフェース基準である。
【0099】
リンクが使用されない間、電力を殆ど消費しないように動的に無効化することが可能である。しかし、機械学習アプリケーションの起動時間及び非決定論的性質では、一般にプログラム実行中の動的起動が問題となる。その結果、本発明者は、チップ間リンクの電力消費がいずれの特定の構成でも本質的に一定であり、従って、最良の最適化が、チップ間トラフィックを可能な限りIPU動作と同期状態に維持することにより、物理リンクの利用率を最大化することであるとの事実を利用することがより良好であり得ると判断した。
【0100】
SERDES PHYは、全二重(すなわち、毎秒16GビットのPHYは、各方向に同時に毎秒16Gビットをサポートする)であるため、全リンクの帯域幅の利用は、バランスが取れた双方向トラフィックを示唆する。更に、直接チップ間通信の使用は、スイッチ経由等の間接通信と比較して重要な利点があることに留意されたい。直接チップ間通信は、スイッチ方式の通信よりも電力効率がはるかに高い。
【0101】
考慮すべき別の要因として、ノード間の帯域幅の要件がある。1つの目的は、ノード間通信を、分散機械学習の各ノードで実行される計算で覆い隠すのに十分な帯域幅を得ることである。
【0102】
機械学習用マシンアーキテクチャを最適化する場合、必要とされる帯域幅の尺度としてAllreduceコレクティブを用いることができる。Allreduceコレクティブの一例を、モデル平均化のためのパラメータ更新の扱いに関して上記に示した。他の複数の例では、勾配平均化及び基準の計算が含まれる。
【0103】
一例として、残差学習ネットワークのAllreduce要件を考慮することができる。残差学習ネットワークは、深い畳み込みニューラルネットワークのクラスである。深い畳み込みのニューラルネットワークにおいて、複数の層を用いて各層内の各々の特徴を学習する。残差学習において、特徴の代わりに残差が学習され得る。ResNetとして知られる特定の残差学習ネットワークは、ネットワークの異なる層間の直接接続を実行する。このような残差ネットワークの訓練は、ある状況では従来の深い畳み込みニューラルネットワークよりも容易であり得ることが示されている。
【0104】
ResNet50は、50層の残差ネットワークである。ResNet50は、25Mの重みを有するため、単位置浮動小数点形式F16の全ての重み勾配のAllreduceが50メガバイトの部分を含む。帯域幅の要件を例示するために、1つの完全なAllreduceが完全なバッチ毎に必要であると仮定する。これは、勾配のAllreduceである可能性が高い(しかし、必須ではない)。これを実現するには、各ノードは、完全な集約毎に100メガビットを出力しなければならない。ResNet50は、訓練用画像毎に250ギガフロップスを必要とする。処理ノード毎のサブバッチサイズが16画像である場合、各プロセッサは、各Allreduceコレクティブに対して400ギガフロップスを実行する。プロセッサが毎秒100テラフロップを達成した場合、Allreduce通信との計算の並列性を維持するには、全てのリンク間で毎秒約25ギガビットが必要とされる。プロセッサ毎のサブバッチが8画像である場合、より小さいバッチを処理するのに要する毎秒テラフロップ数が少なくて済むため、部分的に緩和されて、必要な帯域幅は、名目的に2倍になる。
【0105】
各々がサイズmメガバイト(集約サイズに等しい)である部分から始まるp個のプロセッサ間でのAllreduceコレクティブの実行は、リンクを介して少なくとも2m・(p-1)メガバイトの送信を必要とする。従って、各プロセッサが、同時送信可能なlリンクを有する場合、漸近的最短集約時間は、2m・(p-1)・(p-1)/(p・l)である。
【0106】
上述の概念及び技術は、いくつかの異なる例で用いることができる。
【0107】
一例において、コンピュータとして使用するために固定構成が提供される。本例において、複数の処理ノードは、上述の各種の実施形態で記述及び図示したように相互接続される。このような構成では、本質的な層内及び層間リンクのみが処理ノード間に配置される。
【0108】
固定構成は、その構成の処理ノードの厳密な数で構築され得る。代替的に、それは、より大きい構造から分割することにより提供され得る。すなわち、積層の組で多面角柱を構成する処理ノードの組が提供され得る。各積層内の処理ノードは、隣接する積層内の対応する処理ノードへの層間リンク及び層内の隣接する処理ノード間の層内リンクを有し得る。
【0109】
所望の数の積層の固定構成は、積層の元の組の指定された積層内の各層間リンクを切り離し、それを、指定された積層内の隣接する処理ノードに接続して層内リンクを提供することにより得られる。このように、積層の元の組の指定された積層に構造の第1及び第2の末端層の1つを形成することができる。複数の層の元の組は、このように複数の固定構造に分割できることに留意されたい。
【0110】
層間及び層内リンクは、上述のように適当なバス又は導線により提供される物理リンクである。1つの具体例において、各処理ノードから、自らを別の処理ノードに接続する複数の導線の組が伸長する。これは、例えば、1つ以上の物理的導線が接続された1つ以上のポートを有する各処理ノードの1つ以上のインターフェースにより行うことができる。
【0111】
別の具体例において、リンクは、オンボード導線により構成され得る。例えば、単一の基板がチップのグループ、例えば4つのチップを支持することができる。各チップは、他のチップに接続可能なポートとのインターフェースを有する。所定の方法に従って基板に導線をはんだ付けすることにより、チップ間の接続を形成することができる。本明細書に記述する概念及び技術は、印刷回路基板のチップ間に予めはんだ付けされるリンクの利用率を最大化するため、特にこの状況で有用であることに留意されたい。
【0112】
本明細書に記載した概念及び技術が特に有用である理由は、切り替え不可能なリンクを最適に使用できるようにするからである。ノード間の固定された切り替え不可能なリンクを使用して、本明細書に記載したように処理ノードを接続することにより構成を構築することができる。いくつかの具体例において、このようなリンクを使用しない場合、処理ノード間に更なるリンクを提供する必要がない。例えば、構成の複数の中間層では、処理ノード間のリンクが末端層よりも少ない。代替的に、処理ノード間にリンクが提供され得るが、特定の構成では永久に無効化される場合がある。
【0113】
この構成を用いるために、並列プログラムの組が生成される。並列プログラムの組は、ノードレベルプログラム、すなわち構成内の特定の処理ノードに対して作用するように指定されたプログラムを含む。特定の構成に作用する並列プログラムの組は、コンパイラにより生成することができる。特定のデータの各データ送信ステップで使用するリンクを正しく定義するノードレベルプログラムを生成することは、コンパイラが担当する。これらのプログラムは、リンク識別子を用いて、送信ステージで使用されるリンクを識別する、そのデータ送信ステージでデータ送信を実行するための1つ以上の命令を含む。例えば、処理ノードは、いずれの1つの時点でも2又は3つ(リンクが同時に双方向性である場合にはその2倍)の有効リンクを有し得る。リンク識別子は、その送信ステージのためのデータ項目に対して正しいリンクを選択させる。各処理ノードがその隣接するノードの動作について不可知であり得、すなわち、交換動作は、交換ステージ毎に予めコンパイルされることに留意されたい。
【0114】
リンクを切り替える必要もなく、すなわちデータ項目を送信時点で動的にルーティングするか又はリンクの接続性を変える必要がないことにも留意されたい。
【0115】
上述のように、本明細書に記載したコンピュータネットワークの構成は、計算の並列性を強化するものである。これに関連して、並列性は、並列に実行する、例えば上述のように人工知能モデルを分散的に訓練することを意図されたノードレベルプログラムを構成の処理ノードにロードすることにより実現される。しかし、これは、本明細書に記載した構成により可能にされる並列性の1つの応用例に過ぎないことが容易に認識されるであろう。並列性を実現する1つのスキームは、「バルク同期並列(bulk synchronous parallel)」(BSP)計算として知られる。BSPプロトコルによれば、各処理ノードは、計算フェーズ及び計算フェーズに続いて交換フェーズを実行する。計算フェーズ実行中、各処理ノードは、その計算タスクを局所的に実行するが、計算の結果を他の処理ノードと交換しない。交換フェーズにおいて、各処理ノードは、先行計算フェーズからの計算結果を構成の他の処理ノードと交換することが許容される。この構成で交換フェーズが完了するまで、新たな計算フェーズは開始されない。この形式のBSPプロトコルにおいて、バリア同期化は、計算フェーズから交換フェーズに遷移するか若しくは交換フェーズから計算フェーズに遷移する分岐点又はその両方で行われる。
【0116】
本実施形態において、交換フェーズが開始された場合、各処理ノードは、コンパイラにより、その交換フェーズのために決定されたリンク識別子を用いて、その隣接するノードとデータを交換するための命令を実行する。交換フェーズの性質は、上記したMPIメッセージ受け渡し標準を用いて決定することができる。例えば、Allreducedコレクティブ等のコレクティブをライブラリから取り出すことができる。このように、コンパイラは、部分ベクトルが送信される(または、部分ベクトルの各フラグメントが送信される)リンクを制御する予めコンパイルされたノードレベルプログラムを有する。
【0117】
他の同期化プロトコルを用い得ることは、容易に明らかになるであろう。
【0118】
特定の実施形態について記載してきたが、開示する技術の他の応用及び変型形態は、本明細書の開示をもって当業者に明らかになるであろう。本開示の範囲は、記載した実施形態ではなく、添付の請求項のみによって限定される。
【国際調査報告】