全部产品
Search
文档中心

Platform For AI:ACCL: pustaka komunikasi kolektif berperforma tinggi yang dikembangkan oleh Alibaba Cloud

更新时间:Jul 02, 2025

Alibaba Collective Communication Library (ACCL) adalah pustaka komunikasi kolektif yang dikembangkan oleh Alibaba Cloud berdasarkan Nvidia Collective Communication Library (NCCL). Pustaka ini memanfaatkan kemampuan jaringan dan keahlian mendalam dari Alibaba Cloud dalam optimasi komunikasi untuk pekerjaan model berskala besar, memberikan peningkatan performa komunikasi. ACCL juga mencakup diagnosis kesalahan dan pemulihan mandiri. Topik ini menjelaskan fitur utama ACCL dan cara menginstalnya.

Fitur canggih yang didukung oleh ACCL

ACCL mendukung berbagai fitur canggih yang dapat diaktifkan atau dinonaktifkan menggunakan variabel lingkungan:

  • Memperbaiki bug yang ditemukan di versi open-source NCCL;

  • Mengoptimalkan operator dan ukuran pesan untuk komunikasi kolektif, menawarkan performa unggul dibandingkan NCCL open-source;

  • Menyediakan analisis statistik komunikasi kolektif selama pelatihan untuk membantu mendiagnosis perlambatan dan gangguan akibat titik kegagalan perangkat. Saat digunakan bersama dengan AIMaster: Elastic fault tolerance engine dan C4D: Model training job diagnosis tool dari Alibaba Cloud PAI, memungkinkan deteksi anomali cepat dan toleransi kesalahan otomatis;

  • Mendukung transmisi multi-jalur dan load balancing untuk mengurangi atau menghilangkan kemacetan dalam kluster pelatihan yang disebabkan oleh hashing tidak merata, sehingga meningkatkan throughput pelatihan secara keseluruhan.

Batasan

ACCL harus diinstal sebelum menyerahkan pekerjaan DLC dengan sumber daya Lingjun dan gambar kustom di wilayah tempat Sumber daya Lingjun tersedia.

Instal pustaka ACCL

Gambar resmi yang disediakan oleh Lingjun sudah terinstal ACCL. Jika Anda menggunakan gambar resmi Lingjun untuk menyerahkan pekerjaan DLC, langkah-langkah berikut tidak diperlukan.

Langkah 1: Periksa apakah pustaka NCCL yang digunakan oleh Pytorch dalam gambar bersifat dinamis

Di dalam kontainer gambar kustom, ikuti langkah-langkah berikut:

  1. Tentukan lokasi pustaka PyTorch.

    Jika Anda mengetahui jalur tempat PyTorch diinstal, cari di dalam jalur tersebut. Sebagai contoh, jika PyTorch berada di /usr/local/lib, gunakan perintah berikut untuk menemukan file libtorch.so:

    find /usr/local/lib -name "libtorch*"
    # Contoh hasil:
    /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. Periksa dependensi pada pustaka NCCL dari pustaka PyTorch dengan perintah ldd.

    ldd libtorch.so | grep nccl
    • Jika hasil serupa dikembalikan, pustaka NCCL bersifat dinamis dan Anda dapat melanjutkan untuk mengunduh serta menginstal ACCL.

      libnccl.so.2=>/usr/lib/x86_64-linux-gnu/libnccl.so.2(0x00007feab3b27000)
    • Jika tidak ada hasil yang dikembalikan, NCCL bersifat statis dan Anda tidak dapat menginstal ACCL. Anda perlu membuat gambar kustom berdasarkan gambar NVIDIA NGC resmi atau beralih ke versi PyTorch yang bergantung pada pustaka NCCL dinamis.

Langkah 2: Periksa versi CUDA yang digunakan dalam gambar

Di dalam kontainer gambar kustom, gunakan perintah berikut untuk memverifikasi versi CUDA:

nvidia-smi

Keluaran di bawah ini menunjukkan bahwa versi CUDA adalah 12.2. Pastikan untuk merujuk ke versi aktual yang dikembalikan oleh perintah Anda.image

Langkah 3: Unduh ACCL yang sesuai dengan versi CUDA

Tautan unduhan untuk ACCL:

Versi CUDA

Tautan unduhan 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

Untuk mengunduh ACCL yang sesuai dengan versi CUDA Anda dalam kontainer gambar kustom, gunakan perintah berikut. Dalam contoh berikut, versi CUDA adalah 12.3:

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

Langkah 4: Instal ACCL

Sebelum menginstal ACCL, periksa apakah NCCL telah diinstal di sistem Anda. Jalankan perintah berikut untuk memeriksa apakah file libnccl.so.2 ada:

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

Bergantung pada hasil pencarian, ambil salah satu tindakan berikut:

  • Jika file libnccl.so.2 tidak ditemukan, atau jika file tersebut berada di direktori sistem /usr/lib64 atau /lib64, gunakan perintah cp untuk menyalin file libnccl.so.2 yang baru diunduh ke direktori sistem yang sesuai.

    sudo cp -f ./libnccl.so.2 /usr/lib64
  • Jika file libnccl.so.2 ditemukan di direktori non-standar, seperti /opt/xxx/, ini mungkin menunjukkan jalur instalasi NCCL kustom. Gunakan perintah cp untuk menimpa file yang ada dengan file libnccl.so.2 yang baru diunduh.

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

Langkah 5: Segarkan pustaka dinamis

Segarkan cache pustaka dinamis dengan perintah berikut:

sudo ldconfig

Langkah 6: Periksa apakah ACCL dimuat

  1. Serahkan pekerjaan DLC menggunakan gambar kustom. Untuk informasi lebih lanjut, lihat Serahkan pekerjaan pelatihan.

  2. Periksa log pekerjaan. Jika log startup menampilkan informasi versi ACCL, pustaka ACCL telah dimuat. Untuk informasi tentang cara memeriksa log pekerjaan, lihat Lihat pekerjaan pelatihan.

    Catatan

    Pastikan log mencakup pengenal accl-n. Jika tidak, ACCL tidak dimuat.

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

Konfigurasi variabel lingkungan yang direkomendasikan

Berdasarkan pengalaman luas tim PAI dengan ACCL, berikut adalah daftar variabel lingkungan yang dapat meningkatkan throughput komunikasi di berbagai pengaturan:

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

Menentukan aturan pemetaan jaringan yang digunakan oleh Alibaba Cloud. Jika parameter ini tidak diatur atau tidak valid, performa jaringan mungkin terpengaruh.

NCCL_IB_GID_INDEX

GID untuk penggunaan protokol RDMA. Jika parameter ini tidak diatur atau tidak valid, NCCL mungkin mengalami kesalahan.

NCCL_SOCKET_IFNAME

Port untuk NCCL membangun koneksi. Spesifikasi yang berbeda memerlukan port yang berbeda. Jika parameter ini tidak diatur atau tidak valid, NCCL mungkin gagal membangun koneksi.

NCCL_DEBUG

Tingkat log NCCL. Atur parameter ini ke INFO untuk lebih banyak log dan pemecahan masalah yang efisien.

NCCL_IB_HCA

Kartu antarmuka jaringan untuk komunikasi RDMA. Jika parameter ini tidak diatur atau tidak valid, performa jaringan mungkin terpengaruh.

NCCL_IB_TIMEOUT

Waktu batas waktu koneksi RDMA, yang dapat meningkatkan toleransi kesalahan selama pekerjaan pelatihan. Jika parameter ini tidak diatur atau tidak valid, gangguan mungkin terjadi.

NCCL_IB_QPS_PER_CONNECTION

Jumlah pasangan antrian per koneksi. Anda dapat meningkatkan jumlah ini secara tepat untuk meningkatkan throughput jaringan secara signifikan.

NCCL_NET_PLUGIN

Plugin jaringan untuk NCCL. Kami merekomendasikan Anda mengatur parameter ini ke none, agar plugin lain tidak dimuat untuk memastikan performa.

ACCL_C4_STATS_MODE

Granularitas informasi statistik ACCL. Kami merekomendasikan Anda mengatur parameter ini ke CONN, yang mengumpulkan statistik berdasarkan koneksi.

ACCL_IB_SPLIT_DATA_NUM

Menentukan apakah akan membagi data di beberapa pasangan antrian untuk transmisi.

ACCL_IB_QPS_LOAD_BALANCE

Menentukan apakah akan mengaktifkan load balancing.

ACCL_IB_GID_INDEX_FIX

Menentukan apakah akan secara otomatis memeriksa dan melewati anomali GID sebelum inisiasi pekerjaan. Atur parameter ini ke 1 untuk mengaktifkannya.

ACCL_LOG_TIME

Menentukan apakah akan menambahkan waktu ke entri log untuk pemecahan masalah. Atur parameter ini ke 1 untuk mengaktifkannya.