All Products
Search
Document Center

Platform For AI:ACCL: Pustaka komunikasi kolektif berkinerja tinggi milik Alibaba Cloud

Last Updated:Aug 25, 2026

Alibaba Collective Communication Library (ACCL) adalah pustaka komunikasi kolektif milik Alibaba Cloud yang dibangun berdasarkan Nvidia Collective Communication Library (NCCL). ACCL memanfaatkan arsitektur jaringan Alibaba Cloud dan keahlian dalam menyesuaikan komunikasi untuk pekerjaan model bahasa besar (LLM), sehingga menghadirkan kinerja komunikasi yang lebih tinggi serta menyediakan kemampuan diagnosis kesalahan dan pemulihan otomatis. Topik ini menjelaskan fitur utama ACCL dan cara menginstalnya.

Fitur tambahan ACCL

ACCL mendukung fitur-fitur tambahan berikut. Semua fitur dapat diaktifkan atau dinonaktifkan menggunakan variabel lingkungan:

  • Memperbaiki bug dari versi open-source NCCL.

  • Mengoptimalkan berbagai operator dan ukuran pesan untuk komunikasi kolektif guna mencapai kinerja yang lebih baik daripada NCCL open-source.

  • Mendukung analisis statistik komunikasi kolektif selama pelatihan, yang membantu mendiagnosis masalah seperti kinerja lambat atau hang akibat kesalahan perangkat. Saat digunakan bersama AIMaster: Mesin toleransi kesalahan otomatis elastis dan C4D: Tool diagnosis masalah tugas pelatihan model dari PAI, fitur ini memungkinkan deteksi anomali cepat dan toleransi kesalahan otomatis.

  • Mendukung transmisi multipath dan load balancing, yang mengurangi atau menghilangkan kemacetan akibat penghashan tidak merata di kluster pelatihan serta meningkatkan kinerja pelatihan secara keseluruhan.

Batasan

Anda hanya perlu menginstal ACCL saat mengirimkan pekerjaan DLC yang menggunakan sumber daya Lingjun dan custom image di wilayah tempat sumber daya komputasi AI (sumber daya Lingjun) ditempatkan.

Metode instalasi

Image Lingjun resmi dari PAI telah memiliki ACCL yang pra-instal. Jika Anda menggunakan image Lingjun resmi untuk mengirimkan pekerjaan DLC, Anda tidak perlu melakukan langkah-langkah berikut.

Langkah 1: Periksa apakah library NCCL yang menjadi dependensi PyTorch merupakan library dinamis

Lakukan langkah-langkah berikut di dalam kontainer custom image:

  1. Konfirmasi lokasi library PyTorch.

    Jika Anda mengetahui direktori instalasi PyTorch, cari langsung di direktori tersebut. Misalnya, jika PyTorch berada di /usr/local/lib, jalankan perintah berikut untuk menemukan path pasti file libtorch.so:

    find /usr/local/lib -name "libtorch*"
    # Contoh output:
    /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. Gunakan perintah ldd untuk memeriksa bagaimana library PyTorch bergantung pada library NCCL.

    ldd libtorch.so | grep nccl
    • Jika perintah menghasilkan output serupa berikut, artinya PyTorch bergantung pada NCCL sebagai library dinamis. Anda kemudian dapat mengunduh dan menginstal ACCL.

      libnccl.so.2=>/usr/lib/x86_64-linux-gnu/libnccl.so.2(0x00007feab3b27000)
    • Jika perintah tidak menghasilkan output apa pun, artinya PyTorch bergantung pada NCCL sebagai library statis, sehingga Anda tidak dapat menginstal ACCL. Dalam kasus ini, Anda harus membuat image sendiri berdasarkan image NVIDIA NGC resmi atau beralih ke versi PyTorch yang bergantung pada library NCCL dinamis sebelum menginstal ACCL.

Langkah 2: Periksa versi CUDA dalam image

Di dalam kontainer custom image, jalankan perintah berikut untuk memeriksa versi CUDA di lingkungan saat ini.

nvidia-smi

Output menunjukkan versi CUDA, misalnya 12.2. Gunakan nomor versi yang dikembalikan oleh perintah tersebut pada langkah-langkah berikut.image

Langkah 3: Unduh versi ACCL sesuai versi CUDA Anda

Tabel berikut mencantumkan tautan unduh ACCL untuk berbagai versi CUDA:

Versi CUDA

Tautan unduh library 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

Di dalam kontainer custom image, jalankan perintah berikut untuk mengunduh versi ACCL yang sesuai dengan versi CUDA Anda. Contoh berikut untuk CUDA 12.3:

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

Langkah 4: Instal library ACCL

Sebelum menginstal library ACCL, periksa apakah NCCL sudah terinstal di sistem. Jalankan perintah berikut untuk memeriksa keberadaan file library libnccl.so.2:

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

Ada dua kemungkinan hasil. Ikuti instruksi yang sesuai dengan hasil Anda:

  • File libnccl.so.2 tidak ditemukan, atau berada di direktori sistem seperti /usr/lib64 atau /lib64. Dalam hal ini, gunakan perintah cp untuk menyalin file libnccl.so.2 yang baru diunduh ke salah satu direktori sistem tersebut agar tersedia bagi sistem.

    sudo cp -f ./libnccl.so.2 /usr/lib64
  • File libnccl.so.2 ditemukan di direktori lain, misalnya /opt/xxx/. Hal ini bisa terjadi jika NCCL diinstal di path non-default. Dalam kasus ini, gunakan perintah cp untuk menyalin file libnccl.so.2 yang baru ke direktori tersebut dan menimpa file yang ada.

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

Langkah 5: Segarkan cache pustaka dinamis

Di dalam kontainer custom image, jalankan perintah berikut untuk merefresh cache library dinamis.

sudo ldconfig

Langkah 6: Konfirmasi bahwa library ACCL telah dimuat

  1. Kirimkan pekerjaan DLC menggunakan custom image. Untuk informasi lebih lanjut, lihat Buat tugas pelatihan.

  2. Periksa log tugas. Jika log menampilkan informasi versi ACCL seperti pada contoh berikut, ini menunjukkan bahwa library ACCL berhasil diterapkan pada tugas tersebut. Untuk informasi lebih lanjut tentang cara melihat log tugas, lihat Lihat detail pelatihan.

    Catatan

    Log harus memuat identifikasi accl-n. Jika tidak ada, berarti library ACCL tidak berhasil dimuat.

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

Konfigurasi variabel lingkungan yang direkomendasikan

Tim PAI telah menyusun daftar variabel lingkungan yang direkomendasikan untuk meningkatkan throughput jaringan. Anda dapat menggunakan pengaturan ini sebagai referensi:

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

Tabel berikut menjelaskan variabel lingkungan utama:

Variabel lingkungan

Deskripsi

NCCL_IB_TC

Variabel ini sesuai dengan aturan pemetaan jaringan Alibaba Cloud. Jika variabel ini tidak dikonfigurasi atau dikonfigurasi secara salah, kinerja dapat menurun.

NCCL_IB_GID_INDEX

Mengatur GID yang digunakan oleh protokol RDMA. Jika variabel ini tidak dikonfigurasi atau dikonfigurasi secara salah, NCCL akan melaporkan error.

NCCL_SOCKET_IFNAME

NCCL perlu memilih port yang tepat untuk membuat koneksi. Tipe instans yang berbeda memiliki persyaratan port yang berbeda. Jika variabel ini tidak dikonfigurasi atau dikonfigurasi secara salah, koneksi NCCL dapat gagal.

NCCL_DEBUG

Atur tingkat log ke INFO. Ini memberikan output log terkait NCCL yang lebih lengkap untuk membantu mengidentifikasi dan menyelesaikan potensi masalah.

NCCL_IB_HCA

Menentukan network interface controller (NIC) yang digunakan untuk komunikasi RDMA. Jika variabel ini tidak dikonfigurasi atau dikonfigurasi secara salah, kinerja dapat menurun.

NCCL_IB_TIMEOUT

Mengatur timeout koneksi RDMA. Ini dapat meningkatkan toleransi kesalahan tugas pelatihan. Jika variabel ini tidak dikonfigurasi atau dikonfigurasi secara salah, tugas pelatihan dapat terganggu.

NCCL_IB_QPS_PER_CONNECTION

Menambah jumlah Queue Pair (QP) untuk setiap koneksi di NCCL dapat secara efektif meningkatkan throughput jaringan.

NCCL_NET_PLUGIN

Mengonfigurasi plugin jaringan NCCL. Atur nilai ini ke none untuk mencegah plugin lain dimuat secara tidak sengaja, yang dapat memengaruhi kinerja sistem.

ACCL_C4_STATS_MODE

Mengontrol dimensi informasi statistik ACCL. Atur ke CONN untuk mengumpulkan statistik berdasarkan koneksi.

ACCL_IB_SPLIT_DATA_NUM

Membagi data ke beberapa Queue Pair (QP) untuk transmisi.

ACCL_IB_QPS_LOAD_BALANCE

Mengaktifkan atau menonaktifkan fitur load balancing.

ACCL_IB_GID_INDEX_FIX

Jika diatur ke 1, secara otomatis memeriksa anomali GID sebelum tugas dimulai dan melewatinya.

ACCL_LOG_TIME

Jika diatur ke 1, menambahkan timestamp di awal setiap entri log untuk membantu troubleshooting.