すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:ACCL:Alibaba Cloud プロプライエタリの高性能集合通信ライブラリ

最終更新日:Aug 25, 2026

Alibaba Collective Communication Library (ACCL) は、Alibaba Cloud プロプライエタリの集合通信ライブラリです。 これは、Nvidia Collective Communication Library (NCCL) をベースにしています。 ACCL は、Alibaba Cloud のネットワークアーキテクチャと、大規模言語モデル (LLM) ジョブ向けの通信チューニングにおける専門知識を活用しています。 この組み合わせにより、タスクの通信パフォーマンスが向上し、障害診断と自己修復機能を提供します。 本トピックでは、ACCL の主な機能とインストール方法について説明します。

ACCL の拡張機能

ACCL は、以下の拡張機能をサポートしています。 すべての機能は、環境変数を使用して有効化または無効化できます。

  • オープンソース版 NCCL のバグを修正しています。

  • 集合通信の各種オペレーターとメッセージサイズを最適化し、オープンソースの NCCL よりも優れたパフォーマンスを実現しています。

  • トレーニング中の集合通信の統計分析をサポートしています。 これにより、デバイスの障害に起因するパフォーマンスの低下やハングなどの問題を診断できます。 PAI の「AIMaster:Elastic automatic fault tolerance engine」および「C4D:Model training task problem diagnosis tool」と併用することで、迅速な異常検知と自動フォールトトレランスが可能になります。

  • マルチパス伝送とロードバランシングをサポートしています。 これにより、トレーニングクラスターにおける不均等なハッシュ化に起因する輻輳を軽減または解消し、全体的なトレーニングパフォーマンスを向上させます。

制限事項

ACCL のインストールは、「AI コンピューティングリソース (Lingjun リソース)」がデプロイされているリージョンで、Lingjun リソースとカスタムイメージを使用して DLC ジョブを送信する場合にのみ必要です。

インストール方法

PAI の公式 Lingjun イメージには ACCL がプリインストールされています。 公式 Lingjun イメージを使用して DLC ジョブを送信する場合、以下の手順を実行する必要はありません。

ステップ 1:PyTorch が依存する NCCL ライブラリが動的ライブラリであるかの確認

カスタムイメージのコンテナで、以下の手順を実行します。

  1. PyTorch ライブラリの場所を確認します。

    PyTorch のインストールディレクトリがわかっている場合は、そのディレクトリを直接検索します。 たとえば、PyTorch が /usr/local/lib にある場合、次のコマンドを実行して libtorch.so ファイルの正確なパスを検索します。

    find /usr/local/lib -name "libtorch*"
    # 出力例:
    /usr/local/lib/python3.10/dist-packages/torch/lib/libtorchcuda.so
    /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch.so
    /usr/local/lib/python3.10/dist-packages/torch/lib/libtorchbindtest.so
  2. ldd コマンドを使用して、PyTorch ライブラリが NCCL ライブラリにどのように依存しているかを確認します。

    ldd libtorch.so | grep nccl
    • コマンドが次のような結果を返す場合、PyTorch は動的ライブラリとして NCCL に依存しています。 この場合、ACCL をダウンロードしてインストールできます。

      libnccl.so.2=>/usr/lib/x86_64-linux-gnu/libnccl.so.2(0x00007feab3b27000)
    • コマンドが出力を返さない場合、PyTorch が静的ライブラリとして NCCL に依存していることを意味し、ACCL はインストールできません。 この場合、ACCL をインストールする前に、公式の NVIDIA NGC イメージに基づいて独自のイメージを作成するか、動的な NCCL ライブラリに依存する PyTorch バージョンに切り替える必要があります。

ステップ 2:イメージ内の CUDA バージョンの確認

カスタムイメージのコンテナで、次のコマンドを実行して、現在の環境の CUDA バージョンを確認します。

nvidia-smi

出力には、12.2 などの CUDA バージョンが表示されます。 以降の手順では、コマンドから返されたバージョン番号を使用します。image

ステップ 3:CUDA バージョンに対応する ACCL バージョンのダウンロード

次の表に、各種 CUDA バージョンに対応する ACCL のダウンロードリンクを示します。

CUDA バージョン

ACCL ライブラリのダウンロードリンク

12.8

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.8/lib/libnccl.so.2

12.6

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.6/lib/libnccl.so.2

12.5

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.5/lib/libnccl.so.2

12.4

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.4/lib/libnccl.so.2

12.3

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.3/lib/libnccl.so.2

12.2

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.2/lib/libnccl.so.2

12.1

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.1/lib/libnccl.so.2

11.8

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda11.8/lib/libnccl.so.2

11.7

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda11.7/lib/libnccl.so.2

11.4

http://accl-n.oss-cn-beijing.aliyuncs.com/cuda11.4/lib/libnccl.so.2

カスタムイメージのコンテナで、次のコマンドを実行して、お使いの CUDA バージョンに対応する ACCL バージョンをダウンロードします。 次の例は CUDA 12.3 の場合です。

wget http://accl-n.oss-cn-beijing.aliyuncs.com/cuda12.3/lib/libnccl.so.2

ステップ 4:ACCL ライブラリのインストール

ACCL ライブラリをインストールする前に、NCCL がシステムにすでにインストールされているかどうかを確認します。 次のコマンドを実行して、libnccl.so.2 ライブラリファイルが存在するかどうかを確認します。

sudo find / -name "libnccl.so.2"

結果は 2 通り考えられます。 状況に応じて、該当する指示に従ってください。

  • libnccl.so.2 ファイルが見つからないか、/usr/lib64 や /lib64 などのシステムディレクトリにあります。 この場合、cp コマンドを使用して、新しくダウンロードした libnccl.so.2 ファイルをこれらのシステムディレクトリのいずれかにコピーします。

    sudo cp -f ./libnccl.so.2 /usr/lib64
  • libnccl.so.2 ファイルが /opt/xxx/ などの別のディレクトリにあります。 これは、NCCL がデフォルト以外のパスにインストールされた場合に発生する可能性があります。 この場合、cp コマンドを使用して、新しくダウンロードした libnccl.so.2 ファイルをそのディレクトリにコピーし、既存のファイルを上書きします。

    sudo cp -f libnccl.so.2 /opt/xxx/

ステップ 5:動的ライブラリキャッシュの更新

カスタムイメージのコンテナで、次のコマンドを実行して動的ライブラリキャッシュを更新します。

sudo ldconfig

ステップ 6:ACCL ライブラリがロードされていることの確認

  1. カスタムイメージを使用して DLC ジョブを送信します。 詳細については、「トレーニングタスクの作成」をご参照ください。

  2. タスクのログを確認します。 次の例のように、ログに ACCL のバージョン情報が表示されている場合、ACCL ライブラリがタスクに正常にロードされたことを示します。 タスクログの表示方法の詳細については、「トレーニング詳細の表示」をご参照ください。

    説明

    ログには accl-n 識別子が含まれている必要があります。 この識別子が含まれていない場合、ACCL ライブラリは正常にロードされていません。

    NCCL version 2.20.5.7-accl-n+cuda12.4, COMMIT_ID Zeaa6674c2f1f896e3a6bbd77e85231e0700****, BUILD_TIME 2024-05-10 15:40:56

推奨される環境変数の設定

PAI チームは、通信スループットを向上させるための推奨環境変数のリストをまとめました。 これらの設定を参考にしてください。

export NCCL_IB_TC=136
export NCCL_IB_SL=5
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=eth
export NCCL_DEBUG=INFO
export NCCL_IB_HCA=mlx5
export NCCL_IB_TIMEOUT=22
export NCCL_IB_QPS_PER_CONNECTION=8
export NCCL_MIN_NCHANNELS=4
export NCCL_NET_PLUGIN=none
export ACCL_C4_STATS_MODE=CONN
export ACCL_IB_SPLIT_DATA_NUM=4
export ACCL_IB_QPS_LOAD_BALANCE=1
export ACCL_IB_GID_INDEX_FIX=1
export ACCL_LOG_TIME=1

次の表に、主要な環境変数について説明します。

環境変数

説明

NCCL_IB_TC

この変数は、Alibaba Cloud のネットワークマッピングルールに適合します。 この変数が設定されていない、または誤って設定されている場合、パフォーマンスが低下する可能性があります。

NCCL_IB_GID_INDEX

RDMA プロトコルで使用される GID を設定します。 この変数が設定されていないか、誤って設定されている場合、NCCL がエラーを返します。

NCCL_SOCKET_IFNAME

NCCL は、接続を確立するために正しいポートを選択する必要があります。 インスタンスタイプによってポート要件は異なります。 この変数が設定されていないか、誤って設定されている場合、NCCL 接続が失敗する可能性があります。

NCCL_DEBUG

ログレベルを INFO に設定します。 これにより、NCCL 関連のログ出力が増え、潜在的な問題の特定と解決に役立ちます。

NCCL_IB_HCA

RDMA 通信に使用されるネットワークインターフェイスコントローラー (NIC) を指定します。 この変数が設定されていないか、誤って設定されている場合、パフォーマンスが低下する可能性があります。

NCCL_IB_TIMEOUT

RDMA 接続のタイムアウトを設定します。 これにより、トレーニングタスクのフォールトトレランスが向上します。 この変数が設定されていないか、誤って設定されている場合、トレーニングタスクが中断される可能性があります。

NCCL_IB_QPS_PER_CONNECTION

NCCL の各接続のキューペア (QP) の数を増やすと、ネットワークスループットを効果的に向上させることができます。

NCCL_NET_PLUGIN

NCCL ネットワークプラグインを設定します。 この値を none に設定すると、他のプラグインが誤ってロードされるのを防ぎ、システムパフォーマンスへの影響を回避できます。

ACCL_C4_STATS_MODE

ACCL 統計情報のディメンションを制御します。 この値を CONN に設定すると、接続ごとに統計が収集されます。

ACCL_IB_SPLIT_DATA_NUM

複数のキューペア (QP) にデータを分割して伝送します。

ACCL_IB_QPS_LOAD_BALANCE

ロードバランシング機能を有効または無効にします。

ACCL_IB_GID_INDEX_FIX

1 に設定すると、タスク開始前に GID の異常を自動的にチェックし、それをバイパスします。

ACCL_LOG_TIME

1 に設定すると、各ログエントリの前にタイムスタンプが追加され、トラブルシューティングに役立ちます。