まず、どの装置同士が通信するかを決める

一つのサーバー内のGPU同士、ラック全体のGPU群、多数のサーバーの間では、必要な通信の範囲が違う。ストレージや管理のネットワークには、さらに別の目的がある。NVLinkはNVIDIAがスケールアップの領域として説明するGPU通信の仕組みで、InfiniBandとEthernetは異なるスケールアウトの選択肢とソフトウェア・運用の条件を持つ。同じ階層の名前として並べない。物理的な接続には銅線や光が使われ得るため、プロトコルの選択だけで光モジュールの供給者まで決まるわけではない。

電気信号と光信号の経路

  1. 1GPU群とローカルの通信
  2. 2ネットワークアダプター
  3. 3ラックスイッチ
  4. 4ラック間の通信
  1. 1アプリの集団通信
  2. 2ライブラリと伝送
  3. 3アダプターのキュー
  4. 4実際の物理接続
順序と役割を、ひとつずつ分けて考える

ソフトウェアと物理接続の境界を別々に比較する

NVIDIAのNVLinkページは世代とラック単位の領域を分けており、表示される仕様が暫定で変更され得ることも明記している。帯域の値は対象プラットフォームの提供元の仕様であり、自分の作業を測定した実効速度ではない。GPU全体の帯域の合計と、一つの集団通信が役に立つデータを送る速度は違う。方向、単位、GPU数、接続の構成、測った操作を揃える。日付のない製品ページは確認日に提供元が示す情報で、最初に出荷された日付の証拠にはしない。

Linuxのuserspace verbsの説明では、ソフトウェアがInfiniBandの装置を使うための資源管理、メモリの固定、準備と高速な処理の違いが見える。この境界は重要だ。コピーを減らす伝送でも、登録したメモリ、対応するドライバー、資源の所有権が必要になる。RDMAという言葉から、コピーがすべてなくなる、CPUの費用がゼロ、必ず定格速度が出ると結論しない。カーネルの説明は接口の根拠で、特定NICの性能測定ではない。

通信の時間を計算する練習

八台でリング型のall-reduceを行い、各台の対象データを1GBとする仮想例を考える。単純化した通信量の倍率は2×(n−1)÷nで、八台なら1.75だ。有効速度を50GB毎秒と仮定すると、帯域だけから求める時間は1.75÷50秒、約35ミリ秒になる。遅延、経路、処理の重なり、プロトコル、アルゴリズムの細部を省いた計画用の計算で、三つの方式の実測ではない。ポートの値を入れる時は、ギガビットとギガバイトを先に換算する。

一回の反復が計算40ミリ秒、通信35ミリ秒で、両者が重ならないなら合計75ミリ秒だ。有効な通信速度を二倍にすると通信は17.5ミリ秒、合計57.5ミリ秒になり、全体の高速化は約1.30倍にとどまる。通信部分の二倍を、そのまま全体の二倍にしてはいけない。重なりがある場合は別のモデルが必要になる。高価な接続の価値は、実際の作業の待ち時間をどれだけ減らすかで変わる。

運用と故障も比較の一部である

接続の構成、経路制御、混雑制御、隔離、故障の調査、監視、運用者の経験を比較する。定格が速くても、共有経路へ負荷が集中し、キューの設定が合わなければ作業は遅くなる。慣れたEthernetの設備でも、RDMAを使うなら対応するソフトウェアや損失・混雑への設定を確認する必要がある。別の方式や世代の設定を、条件を読まずに移してはいけない。ネットワークの判断はポート速度だけでは終わらない。

四台ずつの装置を持つ二つのラックを紙に描き、ローカル、ラック間、ストレージの通信を色分けする。同じ上り経路を使う転送を指定し、その接続が故障した時に何が残るかを書く。プロトコル、コネクター、媒体、距離、交換手順を別の列にする。次に一つの集団通信の実験を選び、データ量と参加台数だけを変える。中央値と遅い側の時間、再送やエラー、有効速度、GPUの待ち時間を記録する。これは提案した実験で、ここで実行した測定ではない。

結果を企業の価値へつなぐ

ネットワーク支出は、スイッチの半導体、アダプター、モジュール、レーザー、ケーブル、ソフトウェア支援へ違う割合で届く。接続の構成はポート数を、距離と保守は媒体を、認定は供給者が参加できるかを決める。この章はAAOIがどれだけの割合を取るかを確認していない。実際の設計と、会社が開示する製品、顧客、財務の証拠を組み合わせてから仮説を作る。

実験でネットワークの時間が短くなっても、装置を増やすと通信する相手と総データ量が変わる。八台での結果を、何百台にも同じ倍率で適用しない。増設で費用が増える部分を数え、故障時に失う仕事量も比べる。測定範囲と事業の範囲を明示すると、技術の改善から売上の成長へ飛躍せずに議論できる。

メッセージの大きさで支配する費用は変わる

小さなメッセージを一度送る時間を、準備の遅延と、データ量を速度で割った時間の和として考える。仮に準備が10マイクロ秒、実効速度が10GB毎秒なら、1KBの送信では準備が支配し、100MBでは転送そのものが支配する。同じネットワークでも、短い制御メッセージと大きな集団通信は違う結果になる。帯域の比較だけで、すべての操作が速くなると判断しない。

RDMAでメモリを登録する理由は、装置が使う間の場所とアクセス可能な範囲を管理するためだ。資源を作り、処理を投げ、完了を確認してから解放する順序を守る。途中でメモリを無効にすると、速度の問題より先に正しさの問題になる。性能実験にも、処理が成功したこととデータが正しいことの確認を含める。監視のエラーを見ずに最短時間だけを採用しない。

接続を増やした時には、一台当たりの帯域、ラック全体の帯域、全台が同時に使う場合の帯域を区別する。集計された値を台数で割るだけでは、接続構成と共有部分を説明できない。経路ごとの容量を図に書き、どこを同時に利用するかに印を付けてから、用途に対する余裕を判断する。

NETWORK / 仮想的な入力

ポートの名前と、役に立つ速度は違う。

560 Gb/s

800 Gb/sのポートに選んだ有効割合を掛けた仮想例。停止時間やオーバーヘッドを一つにまとめ、実測やプロトコルのモデルではありません。遅延、接続構成、再送、集団通信は別に測定が必要で、供給者の売上は予測しません。

出典

01
NVIDIA NVLink and NVLink Switch ↗www.nvidia.com · unknown
02
Linux userspace verbs access ↗docs.kernel.org · unknown
03
NVIDIA Ethernet networking ↗www.nvidia.com · unknown

自分のノート