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