まず、どの装置同士が通信するかを決める
一つのサーバー内のGPU同士、ラック全体のGPU群、多数のサーバーの間では、必要な通信の範囲が違う。ストレージや管理のネットワークには、さらに別の目的がある。NVLinkはNVIDIAがスケールアップの領域として説明するGPU通信の仕組みで、InfiniBandとEthernetは異なるスケールアウトの選択肢とソフトウェア・運用の条件を持つ。同じ階層の名前として並べない。物理的な接続には銅線や光が使われ得るため、プロトコルの選択だけで光モジュールの供給者まで決まるわけではない。
- 1GPU群とローカルの通信
- 2ネットワークアダプター
- 3ラックスイッチ
- 4ラック間の通信
- 1アプリの集団通信
- 2ライブラリと伝送
- 3アダプターのキュー
- 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 / 仮想的な入力
ポートの名前と、役に立つ速度は違う。
800 Gb/sのポートに選んだ有効割合を掛けた仮想例。停止時間やオーバーヘッドを一つにまとめ、実測やプロトコルのモデルではありません。遅延、接続構成、再送、集団通信は別に測定が必要で、供給者の売上は予測しません。
出典
01自分のノート