Habilita, inhabilita y configura CoMMA

En esta guía, se describe cómo habilitar, inhabilitar y administrar la biblioteca del Analizador de comunicación colectiva (CoMMA). CoMMA recopila telemetría de NCCL para los Google Cloud servicios. Para obtener más información sobre CoMMA, consulta Analizador de comunicación colectiva (CoMMA).

Habilita CoMMA

CoMMA está preinstalado y habilitado si usas imágenes que contienen el complemento gIB de NCCL. Para obtener una lista de estas imágenes, consulta Imágenes que tienen CoMMA habilitado.

Opciones de instalación

Si no usas ninguna de estas imágenes y quieres instalar CoMMA, usa uno de los siguientes métodos.

Método de instalación Tipos de máquina admitidos
Imagen del paquete de infraestructura de Google (gIB) de NCCL (recomendado para tipos de máquinas más nuevos) A4X Max, A4X, A4 High y A3 Ultra
Imagen del instalador de CoMMA A4X, A4 High y A3 Ultra
Compila desde el origen (obligatorio para tipos de máquinas más antiguos) A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard y N1 con GPUs conectadas

Instala CoMMA

Para instalar CoMMA, selecciona una de las siguientes opciones:

Imagen gIB de NCCL

Para instalar CoMMA con la imagen gIB de NCCL, ejecuta el siguiente comando.

docker run --rm --name nccl-gib-installer
 --volume /usr/local/gib:/var/lib/gib \
 us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \
 --install-nccl

Imagen del instalador de CoMMA

Puedes obtener objetos binarios de CoMMA en una imagen de Docker independiente. Puedes usar la imagen de Docker de CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, como initContainers para instalar objetos binarios de CoMMA en el contenedor de tu carga de trabajo. El contenedor almacena los objetos binarios en el directorio /artifacts.

Para usar la imagen del instalador de CoMMA, completa los siguientes pasos:

  1. Instala NCCL 2.23 o una versión posterior.

  2. Instala CoMMA en tu carga de trabajo agregando el siguiente fragmento a initContainers:

    - name: profiler-plugin-installer
      image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest
      imagePullPolicy: Always
      volumeMounts:
      - name: nccl-plugin-volume
        mountPath: /usr/local/nccl-plugin
      command:
        - /bin/sh
        - -c
        - |
          set -ex
          rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so
          cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so
    
          # GPUViz is a dependency of telemetry insights such as straggler detection
          rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so
          cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
    

El fragmento de configuración de YAML especifica un contenedor para instalar CoMMA. El fragmento especifica la imagen del contenedor del instalador, su política de extracción y una activación de volumen para el complemento. La misma activación de volumen debe activarse en el contenedor de tu carga de trabajo con <mount-path>/lib64 agregado a LD_LIBRARY_PATH. La sección command ejecuta una secuencia de comandos de shell para quitar cualquier biblioteca de generador de perfiles existente. Luego, copia la nueva biblioteca de generador de perfiles en el directorio de complementos designado. La secuencia de comandos garantiza que la versión correcta del complemento de generador de perfiles esté instalada y lista para usarse.

Compila desde el origen

Para compilar la biblioteca de CoMMA desde el origen, instala el siguiente software:

  • Lenguaje de programación Rust, que requieren el compilador y Cargo (se puede instalar con rustup o paquetes del sistema)
  • Libclang-dev, que requiere bindgen
  • CMake versión 3.10 o posterior

Para compilar desde el origen, completa los siguientes pasos:

  1. Clona el repositorio y sus submódulos.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Compila los objetos binarios con Cargo.

    cargo build --release

    Cargo guarda el objeto binario en target/release/libnccl_profiler.so.

  3. Para habilitar NCCL para cargar las bibliotecas de CoMMA, usa uno de los siguientes métodos:

    • Copia el archivo libnccl_profiler.so compilado en un directorio de tu LD_LIBRARY_PATH. Cambia su nombre a libnccl-profiler.so (usa un guion en lugar de un guion bajo).
    • De forma alternativa, configura la variable de entorno NCCL_PROFILER_PLUGIN para especificar la ruta de acceso del archivo .so.

Verifica la instalación o la habilitación

Para verificar que NCCL cargue las bibliotecas de CoMMA, revisa los registros de NCCL:

  1. Habilita el registro de depuración de NCCL. Para habilitar el registro, configura la variable de entorno NCCL_DEBUG=INFO. También puedes especificar un nivel de depuración más detallado. Para obtener más opciones de depuración, consulta la NCCL_DEBUG sección en la documentación de NVIDIA.
  2. Especifica el subsistema INIT para la depuración. Para especificar INIT, configura la variable de entorno NCCL_DEBUG_SUBSYS=INIT. También puedes especificar otros subsistemas. Para obtener más opciones de subsistema, consulta la NCCL_DEBUG_SUBSYS sección.
  3. Busca una línea en el registro de NCCL que sea similar a la siguiente: NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN.

Inhabilita CoMMA

Si CoMMA ya está instalado, evita que recopile telemetría de NCCL configurando la variable de entorno NCCL_TELEMETRY_MODE=0 de CoMMA antes de ejecutar tus cargas de trabajo. Para configurar las variables de entorno de CoMMA, consulta Configura las variables de entorno.

Para volver a habilitar CoMMA después de inhabilitarlo, sigue estos pasos:

  1. Configura la variable de entorno NCCL_TELEMETRY_MODE en un valor distinto de cero; por ejemplo, para usar el modo predeterminado, especifica NCCL_TELEMETRY_MODE=3.

    Para revisar la lista completa de opciones, consulta NCCL_TELEMETRY_MODE en la tabla Opciones de configuración.

  2. Verifica que CoMMA funcione.

Configura y visualiza la telemetría de NCCL de CoMMA

Si CoMMA está habilitado en tu entorno, puedes configurar el tipo de datos de telemetría que recopila estableciendo el nivel de detalle de los datos. En esta sección, se explica cómo establecer el nivel de detalle de los datos y las opciones disponibles.

También puedes revisar los datos que recopila CoMMA para verificar que se alineen con las políticas de seguridad de tu organización o para analizarlos con tus propias herramientas de análisis de telemetría de NCCL. Para ello, exporta los datos sin procesar a un archivo local.

Establece el nivel de detalle de los datos

CoMMA recopila telemetría de NCCL en diferentes niveles de detalle. Configura el nivel de detalle con variables de entorno. Para configurar las variables de entorno de CoMMA, consulta Configura las variables de entorno.

  • Comportamiento predeterminado: De forma predeterminada, CoMMA realiza un seguimiento de las operaciones de NCCL, incluidas las colectivas y las de par a par, los metadatos de esas operaciones y los tiempos de finalización. Usa las siguientes variables de entorno:
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • Para habilitar niveles más detallados de recopilación de datos, configura las siguientes variables de entorno:
    • Para realizar un seguimiento del tiempo de finalización de las operaciones de proxy, configura NCCL_PROFILER_TRACK_PROXYOP=true.
    • Para realizar un seguimiento del tiempo que se dedica a cada operación de E/S de red, configura NCCL_PROFILER_TRACK_STEPS=true. Este parámetro de configuración proporciona el nivel más alto de detalle.

Para revisar la lista completa de variables de entorno, consulta Opciones de configuración.

Exporta datos a un archivo local

Exporta los datos sin procesar a un archivo local para verlos. Para exportar los datos a un archivo local y ver el resultado, sigue estos pasos:

  1. Configura NCCL_TELEMETRY_MODE como 1 o 4. Para obtener información sobre la variable de entorno NCCL_TELEMETRY_MODE, consulta Opciones de configuración.
  2. Configura una de las siguientes rutas de exportación:

    • Configura NCCL_PROFILER_LATENCY_FILE=PATH para exportar registros de eventos detallados a un archivo local. Reemplaza PATH por una ruta de acceso como /tmp/latency-%p.txt.
    • Configura NCCL_PROFILER_SUMMARY_FILE=PATH para exportar estadísticas de resumen agregadas. Reemplaza PATH por una ruta de acceso como /tmp/summary-%p.txt.

      El sistema reemplaza %p por el ID del proceso.

  3. Revisa el resultado. El resultado sin procesar es un archivo JSON.

Opciones de configuración

En las siguientes secciones, se resumen todas las variables de entorno que puedes configurar para CoMMA. También se explica cómo configurar cualquier variable de entorno.

Configura las variables de entorno de CoMMA

Para configurar una variable de entorno de CoMMA en un valor no predeterminado, configura las variables de entorno. Puedes configurar variables de entorno en la línea de comandos para la instancia de procesamiento o agregarlas a una secuencia de comandos de inicio. Si configuras las variables de entorno en la línea de comandos, el valor solo persiste por sesión. Para que las variables de entorno sean permanentes, colócalas en el archivo ~/.bashrc, ~/.profile o en cualquier archivo de inicio que use tu sistema operativo. Para obtener más información, revisa la documentación de tu sistema operativo.

Debes configurar las variables de entorno de CoMMA antes de que se inicie tu carga de trabajo, ya que la carga de trabajo lee las variables durante la inicialización de NCCL. Puedes configurar las variables de entorno de la siguiente manera:

export ENVIRONMENT_VARIABLE=VALUE

Reemplaza lo siguiente:

  • ENVIRONMENT_VARIABLE: La variable de entorno que deseas configurar, por ejemplo, NCCL_TELEMETRY_MODE.
  • VALUE: El valor de la variable de entorno, por ejemplo, 0.

Variables de entorno de CoMMA

En esta sección, se enumeran las variables de entorno que puedes configurar para CoMMA y sus valores predeterminados.

Nombre Descripción Predeterminado
NCCL_PROFILER_AGGREGATE_STEPS Habilita (true) o inhabilita (false) la agregación de operaciones de fragmentos de red. true
NCCL_PROFILER_GPUVIZ_LIB Especifica la ruta de acceso a libGPUViz.so, una biblioteca que sube telemetría de NCCL a los Google Cloud servicios. Esta biblioteca encapsula la API de comunicación del agente. La API de comunicación del agente es la interfaz que usan los agentes, como los procesos que se ejecutan en tu sistema operativo invitado, para iniciar conexiones seguras y confiables con los Google Cloud servicios.

Si usas una imagen gIB de NCCL como instalador o usas cualquiera de las imágenes que agrupan el complemento gIB de NCCL, no necesitas configurar esta variable de entorno.

NCCL_PROFILER_LATENCY_FILE Especifica la plantilla de ruta de acceso para el archivo de registro de latencia. Por ejemplo, /tmp/latency-%p.txt. El sistema reemplaza %p en el nombre por el ID del proceso (pid).

Para inhabilitar la exportación basada en archivos, anula esta variable.
NCCL_PROFILER_PLUGIN Especifica la ruta de acceso al objeto binario del complemento de generador de perfiles.

Si no especificas este parámetro de configuración, NCCL busca libnccl-profiler.so en LD_LIBRARY_PATH.
NCCL_PROFILER_SUMMARY_FILE Especifica la ruta de acceso al archivo de resumen agregado. Por ejemplo, /tmp/summary-%p.txt. El sistema reemplaza %p en el nombre por el ID del proceso (pid).

Para inhabilitar la exportación basada en archivos, anula esta variable.
NCCL_PROFILER_SUMMARY_INTERVAL Especifica el intervalo para la generación de informes de resumen. Por ejemplo, 10s, 1m. Admite d, h, m, s, ms, us, ns. 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP Habilita (true) o inhabilita (false) la supervisión de las operaciones de proxy de NCCL entre procesos. true
NCCL_PROFILER_TRACK_NCCLOP Habilita (true) o inhabilita (false) el seguimiento y la generación de informes para las operaciones de NCCL, incluidas las comunicaciones colectivas y de punto a punto. true
NCCL_PROFILER_TRACK_PROXYOP Habilita (true) o inhabilita (false) el seguimiento y la generación de informes de las operaciones de proxy. false
NCCL_PROFILER_TRACK_STEPS Habilita (true) o inhabilita (false) el seguimiento y la generación de informes de las operaciones de fragmentos de red. false
NCCL_TELEMETRY_MODE Controla la ubicación de exportación de los datos de telemetría de NCCL. Las opciones incluyen lo siguiente:

Valor Descripción
0 Inhabilita la recopilación de telemetría de NCCL.
1 Exporta la telemetría de NCCL a un archivo local. Con este método, la telemetría de NCCL no está disponible para Google.
3 Exporta la telemetría de NCCL a los servicios de Google.
4 Exporta la telemetría de NCCL al archivo local y a los servicios de Google.
3

¿Qué sigue?