Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

NCCL通信最適化

このページは、2026-06-05の勉強会でチームが共有したNCCL通信最適化の基礎をまとめたものです。 担当: 小林。

これは何か

NCCL(NVIDIA Collective Communications Library、読み: ニッケル)は、複数GPU間の通信ボトルネックを軽減するためのライブラリです。

AI課題(Qwen推論)では、Tensor Parallelやprefill-decode間の処理などでGPU間通信が発生します。 NCCLはこのGPU間のcollective通信を担います。

なぜ重要か

Qwenのような大規模LLMを複数GPUで動かすとき、モデルをGPUに分割して実行します。 このとき通信(AllReduceなど)が遅いと、GPUが計算せずに**待つ時間(idle)**が増えます。

つまりHPC-AIでは、NCCLでQwen推論中のGPU間通信を高速化し、tokens/secを上げることが目標になります。

基本概念:NCCLの主な通信

通信内容使用場面
AllReduce全GPUの計算結果を集約して全GPUへ戻す分散学習、Tensor Parallel
AllGather各GPUのデータを集めるモデル分割、並列推論
ReduceScatter集約しながら分割して配る大規模モデル並列
Broadcast1つのGPUのデータを全GPUへ配る重み・設定の共有
Send/RecvGPU間で個別に送受信Pipeline処理、KV cache転送

AI TrackでNCCLが使われる流れ

Tensor Parallelでは、各GPUがモデルの一部を計算します。

GPU0/1/2/3: それぞれモデルの一部を計算
        ↓
計算結果を NCCL で集約(AllReduce / AllGather)
        ↓
次の層へ進む

ここで通信が遅いと、GPUの待ち時間が増えて全体が遅くなります。

最適化手順

1. 測定する

Qwen推論を実行し、Nsight SystemsやNCCLログで次を確認します(例)。

  • Prefill計算時間 / Decode計算時間
  • NCCL通信時間
  • GPU idle(GPU待ち時間)
  • KV cache転送時間
  • どのGPU間で通信しているか(通信経路)

2. ボトルネックを分類して対策する

計測結果原因対策
NCCL通信時間が長いGPU間通信が遅いNIC指定、NCCL設定変更(パラメータ調整)
GPU idleが多い通信待ちが発生通信と計算の重なり(オーバーラップ)を改善
KV cache転送時間が長いKV cache転送が遅いprefill / decode の配置を見直す
rankごとに時間が違う負荷分散が悪いbatch分割やworker比率を調整

大会との関係

  • 2025年AI課題(16 H100 GPUs)でも、GPU kernel単体よりGPU間通信が律速になりやすいと考えられます(要確認)。
  • prefill/decodeの配置はPD Disaggregationと関係します。

注意点

  • NCCLパラメータやNIC指定は環境依存です。大会の実機・設定可否は要確認です。
  • GPUプロファイリングは「いきなりカーネル内部」ではなく、まずCPU-GPU転送と通信を疑います(プロファイリングツール実践ガイド)。

関連ページ

参考文献