人工知能(AI)と高性能コンピューティング(HPC)は機械学習、自然言語処理、生成AI、ロボティクス、自律システムの進歩によって、大きな成長を遂げつつあります。
これらのイノベーションのコアには、大規模分散学習モデルがあります。このモデルは、多くの場合、複数のGPUにわたる数十億、数兆ものパラメータで構成されます。トレーニングプロセス中、これらのノードは相当量のデータを交換し合い、バックエンドAIイーサネットファブリックを使用して同期します。しかし、パケットロスは、同期の質を大きく低下させ、その結果、再送信や通信の停滞を生じさせ、最終的には、遅延の増加、ジョブ完了時間(JCT)の長期化、高価なGPUリソースの非効率な使用につながります。
課題:AIデータセンターファブリックにおけるサイレントパケットドロップ
JCTは重要なメトリックです。現在のAIワークロード、特に大規模トレーニングと推論作業は、クラスター間での厳密な同期に依存しています。パケットが1つ失われても、パフォーマンスが大きな影響を受け、運用コストが増加する可能性があります。
たとえば、トラフィックの混雑によりスイッチのバッファがオーバーフローすると、RoCE v2パケットがAIイーサネットまたはIPファブリックでドロップする可能性があります。このような失われたパケットは再送信が必要となるため、これにより遅延が発生し、トレーニングや推論のフローの中断の原因となります。
Explicit Congestion Notification(ECN)は、IPヘッダー内にビットをマークすることによって混雑を伝えますが、混雑によってどのパケットがドロップしたのかは分からないので、再送信する必要があります。
解決策:Drop Congestion Notification(DCN:ドロップ輻輳通知)
この問題に対処するために、ジュニパーは、Drop Congestion Notification(DCN)を導入しました。これは、Tomahawk 5チップベースのQFX5240-ODおよびQFX5240-QD—64 x 800GbEイーサネット、またはIPプラットフォーム向けの23.4x100d40 Junos OS(TM) Evolvedソフトウェアリリースで使用可能な新しい混雑管理機能です。
混雑が発生すると、スイッチはパケットペイロードを減らし、優先度の高いキューを介して受信ホストにその情報を転送します。ネットワークファブリック内の中継スイッチは、こうしたトリミングされてDCNでマークされた、ドロップしたパケットを認識し、そのパケットを優先度の高いキューに直接送ります。
結果として、エンドホストは、トリミングされたDCNパケットを処理し、混雑により明示的にドロップされたパケットを判断し、送信元からの失われたパケットの再送信を即座にリクエストしなければなりません。
しかし、トリミングされたパケットは送信先サーバーのメモリには送信されず、選択的再送信を必要とするパケットを正確に特定するために使用されます。これにより、デフォルトの再送信プロセスが長くなるのを回避し、結果として、ジョブ完了時のエンドツーエンドの遅延を改善することができます。
以下の図に、ECNしきい値を超え極度の混雑が発生した場合に最初のスイッチに入ったパケットがドロップされずにトリミングされ、送信先のGPUサーバーのNICカードに送信されるプロセスの簡素化されたトポロジーを示します。最初のスイッチがトリミングを行う一方で、中継スイッチもトリミングされたフレームを認識し、優先度の高いキューを介して送信インターフェイスにそのフレームをすぐに配置することができます。トリミングされたパケットが送信先のNICカードに到達すると、再送信パケットリクエストが送信元サーバーに送信されます。
図1:Drop Congestion Notification(DCN)
QFX5240-ODスイッチとQFX5240-QDスイッチで、DCN関連パケットは、データパケットから分離された専用キューを通して処理されます。この分離によって、ユーザーは遅延と、DCNパケットに割り当てられた帯域幅をより効果的に管理できます。
設定例:
- カスタムL4 UDPポート番号をDCNプロトコル番号として設定します。スイッチはこの番号を使用して、DCNパケットを特定します。これはDCNを有効にするうえで必須の設定です。
set class-of-service drop-congestion-notification udp-port <0.65535>
- すべてのDCNドロップパケットのegressキューを設定します。これはグローバルな設定となります。このキューは、ユニキャスト(1対1の通信方式)のキューの1つにする必要があります。ユーザーは、このキューを最も高い優先度に設定する必要があります。このキューをDCN専用として使用することも推奨されます。 他のCOS機能と同じく、このキューは「forwarding-class」を使用して指定されます。これも、DCNを有効にするうえでも必須の設定です。
set class-of-service drop-congestion-notification forwarding-class <fc name>
- DCN中継としてのみ動作するQFX5240の場合、上記の2つの設定(プロトコルとforwarding-class)で十分です。ここでの「中継」とは、DCNパケットを特定し、優先度の高いキューに送信することのみを指します。混雑が発生した場合にDCNドロップパケットを作成するQFX5240では、下記の個々のポートレベルのDCN設定と上記の設定が必要となります。
- 個々のポートでDCNを有効にする設定を行います。DCNがポートで有効になり、ポート上のいずれかのDCNデータトラフィックingressが混雑のためにMMUでドロップされると、DCNドロップパケットがトリガーされます。
set class-of-service interface <ingress-interface-name> drop-congestion-notification
- ユーザーがすべてのポートでDCNを有効にしたい場合、ワイルドカードを使用して上記の設定を適用しなければなりません。
set class-of-service interface et-* drop-congestion-notification
- DCNが有効になった設定は、物理インターフェイスとAEペアレントでのみサポートされます。
set class-of-service drop-congestion-notification forwarding-class dcn
set class-of-service drop-congestion-notification udp-port 13742
set class-of-service interface et-0/0/0 drop-congestion-notification
DCNドロップパケット統計情報の表示コマンド
root@QFX5240# run show interfaces queue et-0/0/0 forwarding-class dcn
Physical interface: et-0/0/0, up, Physical link is Down
Interface index: 1205, SNMP ifIndex: 503
Forwarding classes: 12 supported, 9 in use
Egress queues: 10 supported, 9 in use
Queue: 7, Forwarding classes: dcn
Queued:
Packets : 0 0 pps
Bytes : 0 0 bps
Transmitted:
Packets : 0 0 pps
Bytes : 0 0 bps
Tail-dropped packets : 0 0 pps
Tail-dropped bytes : 0 0 bps
RED-dropped packets : 0 0 pps
RED-dropped bytes : 0 0 bps
ECN-CE packets : 0 0 pps
ECN-CE bytes : 0 0 bps
結論:
特にワークロードが分散されたGPUクラスターにまたがっている場合、AIイーサネットファブリックでは一貫したパフォーマンスと運用の同期を維持することが重要です。DCNは、サーバー混雑中におけるパケットのドロップをリアルタイムで可視化することによって、重要なギャップに対処します。DCNは、ドロップされたパケットのエンドポイントを通知することにより、高速リカバリを可能にし、隠れた遅延を最小化し、AI JCTの保存を可能にします。
最終的にDCNは、ネットワークファブリックとAIワークロードとの間の可視性のギャップを埋め、拡張可能で、ハイパフォーマンスのAIインフラストラクチャにとって必須の機能となっています。
AI(人工知能)とML(機械学習)データセンター機能の詳細については、ユーザーガイド(英語)を参照してください。