このドキュメントでは、サービス用の NCCL テレメトリーを収集するためのライブラリである Collective Communication Analyzer(CoMMA)について説明します。 Google Cloud NCCL テレメトリーは、NCCL の実行中に生成されるパフォーマンス指標と運用イベントを収集します。The NVIDIA Collective Communication Library(NCCL) は、並列コンピューティング システムと 分散コンピューティング システムで実行される GPU 間の高性能通信を高速化します。この高性能通信は、ディープ ラーニングとハイ パフォーマンス コンピューティング(HPC)に特に役立ちます。
NCCL バージョン 2.23 以降では、NVIDIA は NCCL プロファイラ プラグイン API を導入しました。 これにより、デベロッパーは関数コールバックを登録して、 NCCL コレクティブ オペレーション中にテレメトリーを収集できます。Google は、NVIDIA の NCCL プロファイラ プラグイン API を使用して サービス用の NCCL テレメトリーを収集するライブラリである Collective Communication Analyzer(CoMMA)を提供しています。 Google Cloud CoMMA は一部のイメージで自動的にインストールされて有効になりますが、CoMMA を無効にしたり、再度有効にしたり、手動でインストールして有効にしたりして、データの収集を制御することもできます。
CoMMA が有効になっているイメージ
A4X Max、A4X、A4、A3 Ultra、A3 Mega、A3 High(8 GPU)のマシンタイプの場合、NCCL Google Infrastructure Bundle(gIB)プラグインをパッケージ化するイメージを使用すると、CoMMA がインストールされ、自動的に有効になります。次のイメージには NCCL gIB プラグインが含まれています。
- containerd(cos_containerd)
ノードイメージを含む Container-Optimized OS: Google Kubernetes Engine(GKE)は、これらのイメージを使用して
GKE Autopilot クラスタを作成します。CoMMA バイナリは
/home/kubernetes/bin/gibディレクトリにあります。 - ディープ ラーニング ソフトウェア レイヤ コンテナ イメージ: これらのイメージを使用して、GKE クラスタに AI および ML のフレームワーク とライブラリをデプロイして構成します。
これらのイメージのいずれかを使用していて、CoMMA による NCCL テレメトリーの収集を無効にする場合は、 CoMMA を無効にするをご覧ください。 ただし、遅延タスクの検出などの機能を使用するには、CoMMA を有効にする必要があります。これらのイメージを使用しておらず、CoMMA を有効にして NCCL テレメトリーを収集する場合は、 CoMMA をインストールするをご覧ください。
特典
CoMMA が収集する NCCL テレメトリーは、GPU 通信のパフォーマンス ボトルネック(特に遅延タスク)の特定に役立ちます。CoMMA は、コレクティブ通信オペレーションのレイテンシ ヒストグラムなど、きめ細かいデータを収集します。診断サービスは、このデータを処理して使用し、遅延タスクを特定できます。
CoMMA を使用してテレメトリーを収集すると、次のようなメリットがあります。
遅延タスクの検出と応答のないワークロードの検出に必要: CoMMA は、きめ細かい NCCL テレメトリーを収集して、GPU 間通信のパフォーマンス ボトルネックまたは遅延タスクを特定します。CoMMA は、大規模な AI および ML トレーニング ワークロードの問題を特定して解決するのに役立つ詳細な NCCL テレメトリーを提供します。
たとえば、CoMMA は NCCL オペレーションで使用されるアルゴリズムをキャプチャします。ワークロードとシステム構成によってアルゴリズムのパフォーマンス特性が大きく異なる可能性があるため、この情報はパフォーマンス分析とチューニングに役立ちます。
CoMMA は、パフォーマンスの低下やエラーのトラブルシューティングにも役立ちます。TCP、RDMA、スイッチ ファブリックなどの下位トランスポート レイヤで発生したエラーを、特定の NCCL コレクティブと開始ノードにトレースします。ハートビート テレメトリー信号の応答が停止したことを認識し、応答のないワークロードの原因をトレースできます。
低オーバーヘッドのトレース: CoMMA は、 アクティブな NCCL テレメトリー収集中に最小限のコンピューティング リソースを使用するため、パフォーマンスに影響を受けやすい 長時間実行の機械学習ワークロード(大規模言語モデル(LLM) トレーニングなど)に最適です。
NCCL テレメトリーの範囲を拡大: CoMMA は NCCL プロファイラ プラグイン API を使用します。 この API は、トランスポート ベースのプラグインと比較して、より広範囲の NCCL テレメトリーを収集します。トランスポート ベースのプラグインは、主に基盤となるネットワーク トランスポートに関するテレメトリー(ネットワーク ハードウェアとネットワーク プロトコルを介したデータ転送など)を収集します。プロファイラ プラグインは、コレクティブ通信のタイミング、プロキシ オペレーション、データ転送など、NCCL の通信オペレーションのテレメトリーを収集します。
CoMMA の仕組みを理解する
アプリケーションの実行時に、NCCL は LD_LIBRARY_PATH 環境変数で指定された場所にインストールされている CoMMA
ライブラリを自動的に読み込みます。その後、CoMMA は NCCL テレメトリーを収集します。他の Google
サービスはこのテレメトリーを使用できます。必要に応じて、このデータをローカル ファイル システムにエクスポートすることもできます。
次のステップ
- CoMMA を 有効、無効、構成する方法を学習する。
- CoMMA の問題のトラブルシューティング方法を学習する 。
- 遅延タスクを検出して解決する方法を学習する。
- 応答のないワークロードを検出する方法を学習する 。