このドキュメントでは、 Google Cloud サービスの NCCL テレメトリーを収集するためのライブラリである Collective Communication Analyzer(CoMMA)について説明します。NCCL テレメトリーは、NCCL が実行中に生成するパフォーマンス指標とオペレーション イベントを収集します。NVIDIA Collective Communication Library(NCCL)は、並列実行されている GPU と分散コンピューティング システム間の高性能通信を高速化します。この高性能通信は、ディープ ラーニングやハイ パフォーマンス コンピューティング(HPC)に特に役立ちます。
NCCL バージョン 2.23 以降では、NVIDIA が NCCL プロファイラ プラグイン API を導入しました。これにより、デベロッパーは関数コールバックを登録して、NCCL コレクティブ オペレーション中にテレメトリーを収集できます。Google は、NVIDIA の NCCL プロファイラ プラグイン API を使用して Google Cloud サービスの NCCL テレメトリーを収集するライブラリである Collective Communication Analyzer(CoMMA)を提供しています。CoMMA は一部のイメージで自動的にインストールされて有効になりますが、無効にしたり、再度有効にしたり、手動でインストールして有効にしたりして、データ収集を制御することもできます。
CoMMA が有効になっている画像
A4X Max、A4X、A4、A3 Ultra、A3 Mega、A3 High(8 GPU)のマシンタイプの場合、NCCL Google Infrastructure Bundle(gIB)プラグインをパッケージ化するイメージを使用すると、CoMMA がインストールされ、自動的に有効になります。次のイメージには NCCL gIB プラグインが含まれています。
- containerd を含む Container-Optimized OS(cos_containerd)ノードイメージ: 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)トレーニングなどのパフォーマンスに敏感な長時間実行される ML ワークロードに最適です。
NCCL テレメトリーの範囲を拡大: CoMMA は NCCL プロファイラ プラグイン API を使用します。この API は、トランスポート ベースのプラグインと比較して、より広範囲の NCCL テレメトリーを収集します。トランスポート ベースのプラグインは、主に基盤となるネットワーク トランスポートに関するテレメトリーを収集します。これには、ネットワーク ハードウェアとネットワーク プロトコルを介したデータ転送が含まれます。プロファイラ プラグインは、NCCL の通信オペレーションのテレメトリーを収集します。これには、集合通信、プロキシ オペレーション、データ転送のタイミングが含まれます。
CoMMA の仕組みを理解する
アプリケーションの実行時に、NCCL は LD_LIBRARY_PATH 環境変数で指定された場所にインストールされている CoMMA ライブラリを自動的に読み込みます。CoMMA は NCCL テレメトリーを収集し、他の Google サービスが使用できるようにします。必要に応じて、このデータをローカル ファイル システムにエクスポートすることもできます。
次のステップ
- CoMMA を有効、無効、構成する方法について説明します。
- 詳しくは、CoMMA に関する問題のトラブルシューティングをご覧ください。
- 遅延を検出して解決する方法を確認する。