Todos los productos
Search
Centro de documentos

Platform For AI:ACCL: biblioteca propietaria de comunicación colectiva de alto rendimiento de Alibaba Cloud

Última actualización: Sep 04, 2026

Alibaba Collective Communication Library (ACCL) es una biblioteca de comunicación colectiva propietaria de Alibaba Cloud basada en Nvidia Collective Communication Library (NCCL). ACCL aprovecha la arquitectura de red de Alibaba Cloud y su experiencia en el ajuste de comunicaciones para trabajos de modelos de lenguaje grandes (LLM). Esta combinación ofrece un mayor rendimiento de comunicación para sus tareas y proporciona capacidades de diagnóstico de fallas y autorreparación. Este tema describe las funciones principales de ACCL y cómo instalarla.

Funciones mejoradas de ACCL

ACCL admite las siguientes funciones mejoradas. Todas las funciones se pueden habilitar o deshabilitar mediante variables de entorno:

  • Corrige errores de la versión de código abierto de NCCL.

  • Optimiza diversos operadores y tamaños de mensaje para la comunicación colectiva con el fin de lograr un mejor rendimiento que la versión de código abierto de NCCL.

  • Admite el análisis estadístico de la comunicación colectiva durante el entrenamiento. Esto ayuda a diagnosticar problemas como bajo rendimiento o bloqueos causados por fallas en los dispositivos. Cuando se utiliza junto con AIMaster: Elastic automatic fault tolerance engine y C4D: Model training task problem diagnosis tool de PAI, permite la detección rápida de anomalías y la tolerancia automática a fallos.

  • Admite transmisión multipath y balanceo de carga. Esto reduce o elimina la congestión causada por un hashing desigual en los clústeres de entrenamiento y mejora el rendimiento general del entrenamiento.

Límites

Solo necesita instalar ACCL cuando envíe trabajos de DLC que utilicen recursos Lingjun e imágenes personalizadas en regiones donde se haya desplegado AI compute resources (Lingjun resources).

Método de instalación

Las imágenes oficiales de Lingjun de PAI incluyen ACCL preinstalado. Si utiliza una imagen oficial de Lingjun para enviar un trabajo de DLC, no es necesario realizar los siguientes pasos.

Paso 1: Comprobar si la biblioteca NCCL de la que depende PyTorch es una biblioteca dinámica

Realice los siguientes pasos en el contenedor de la imagen personalizada:

  1. Confirme la ubicación de la biblioteca PyTorch.

    Si conoce el directorio de instalación de PyTorch, busque directamente en ese directorio. Por ejemplo, si PyTorch se encuentra en /usr/local/lib, ejecute el siguiente comando para encontrar la ruta exacta del archivo libtorch.so:

    find /usr/local/lib -name "libtorch*"
    # Example 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. Utilice el comando ldd para comprobar cómo depende la biblioteca PyTorch de la biblioteca NCCL.

    ldd libtorch.so | grep nccl
    • Si el comando devuelve un resultado similar al siguiente, PyTorch depende de NCCL como biblioteca dinámica. En este caso, puede descargar e instalar ACCL.

      libnccl.so.2=>/usr/lib/x86_64-linux-gnu/libnccl.so.2(0x00007feab3b27000)
    • Si el comando no devuelve ninguna salida, significa que PyTorch depende de NCCL como biblioteca estática y no es posible instalar ACCL. En este caso, debe crear su propia imagen basada en una imagen oficial de NVIDIA NGC o cambiar a una versión de PyTorch que dependa de una biblioteca NCCL dinámica antes de instalar ACCL.

Paso 2: Comprobar la versión de CUDA en la imagen

En el contenedor de la imagen personalizada, ejecute el siguiente comando para verificar la versión de CUDA del entorno actual.

nvidia-smi

La salida muestra la versión de CUDA, por ejemplo, 12.2. Utilice el número de versión devuelto por el comando en los siguientes pasos.image

Paso 3: Descargar la versión de ACCL correspondiente a su versión de CUDA

La siguiente tabla enumera los enlaces de descarga de ACCL para diferentes versiones de CUDA:

Versión de CUDA

Enlace de descarga de la biblioteca 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

En el contenedor de la imagen personalizada, ejecute el siguiente comando para descargar la versión de ACCL que corresponde a su versión de CUDA. El siguiente ejemplo es para CUDA 12.3:

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

Paso 4: Instalar la biblioteca ACCL

Antes de instalar la biblioteca ACCL, compruebe si NCCL ya está instalado en el sistema. Ejecute el siguiente comando para verificar si existe el archivo de biblioteca libnccl.so.2:

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

Existen dos resultados posibles. Siga las instrucciones que correspondan a su resultado:

  • No se encuentra el archivo libnccl.so.2 o se halla en un directorio del sistema como /usr/lib64 o /lib64. En este caso, utilice el comando cp para copiar el archivo libnccl.so.2 recién descargado a uno de estos directorios del sistema y ponerlo a disposición del mismo.

    sudo cp -f ./libnccl.so.2 /usr/lib64
  • El archivo libnccl.so.2 se encuentra en un directorio diferente, como /opt/xxx/. Esto puede ocurrir si NCCL se instaló en una ruta no predeterminada. En este caso, utilice el comando cp para copiar el nuevo archivo libnccl.so.2 a ese directorio y sobrescribir el archivo existente.

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

Paso 5: Actualizar la caché de bibliotecas dinámicas

En el contenedor de la imagen personalizada, ejecute el siguiente comando para actualizar la caché de bibliotecas dinámicas.

sudo ldconfig

Paso 6: Confirmar que la biblioteca ACCL se ha cargado

  1. Envíe un trabajo de DLC mediante la imagen personalizada. Para obtener más información, consulte Create a training task.

  2. Revise los registros de la tarea. Si los registros muestran la información de la versión de ACCL como en el siguiente ejemplo, esto indica que la biblioteca ACCL se aplicó correctamente a la tarea. Para obtener más información sobre cómo consultar los registros de tareas, consulte View training details.

    Nota

    El registro debe contener el identificador accl-n. Si falta, la biblioteca ACCL no se cargó correctamente.

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

Configuraciones recomendadas de variables de entorno

El equipo de PAI ha recopilado una lista de variables de entorno recomendadas para mejorar el throughput de comunicación. Puede utilizar estas configuraciones como referencia:

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

La siguiente tabla describe las variables de entorno clave:

Variable de entorno

Descripción

NCCL_IB_TC

Esta variable coincide con las reglas de asignación de red de Alibaba Cloud. Si esta variable no se configura o se configura incorrectamente, el rendimiento puede degradarse.

NCCL_IB_GID_INDEX

Establece el GID utilizado por el protocolo RDMA. Si esta variable no se configura o se configura incorrectamente, NCCL reporta un error.

NCCL_SOCKET_IFNAME

NCCL necesita seleccionar el puerto correcto para establecer una conexión. Los diferentes tipos de instancia tienen distintos requisitos de puerto. Si esta variable no se configura o se configura incorrectamente, la conexión de NCCL puede fallar.

NCCL_DEBUG

Establece el nivel de registro en INFO. Esto proporciona más salida de registros relacionados con NCCL para ayudar a identificar y resolver posibles problemas.

NCCL_IB_HCA

Especifica el controlador de interfaz de red (NIC) utilizado para la comunicación RDMA. Si esta variable no se configura o se configura incorrectamente, el rendimiento puede degradarse.

NCCL_IB_TIMEOUT

Establece el tiempo de espera de la conexión RDMA. Esto puede mejorar la tolerancia a fallos de las tareas de entrenamiento. Si esta variable no se configura o se configura incorrectamente, la tarea de entrenamiento puede interrumpirse.

NCCL_IB_QPS_PER_CONNECTION

Aumentar el número de pares de colas (QPs) para cada conexión en NCCL puede mejorar eficazmente el throughput de la red.

NCCL_NET_PLUGIN

Configura el plugin de red de NCCL. Establezca esto en none para evitar que otros plugins se carguen por error, lo cual podría afectar el rendimiento del sistema.

ACCL_C4_STATS_MODE

Controla la dimensión de la información estadística de ACCL. Establezca esto en CONN para recopilar estadísticas por conexión.

ACCL_IB_SPLIT_DATA_NUM

Divide los datos en varios pares de colas (QPs) para su transmisión.

ACCL_IB_QPS_LOAD_BALANCE

Habilita o deshabilita la función de balanceo de carga.

ACCL_IB_GID_INDEX_FIX

Si se establece en 1, comprueba automáticamente anomalías de GID antes de que comience la tarea y las omite.

ACCL_LOG_TIME

Si se establece en 1, antepone una marca de tiempo a cada entrada de registro para facilitar la solución de problemas.