Habilita, inhabilita y configura CoMMA

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

Habilita CoMMA

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

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 (se recomienda para los 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
Compilar desde la fuente (obligatorio para tipos de máquinas más antiguos) A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard y N1 con GPU conectadas

Instala CoMMA

Para instalar CoMMA, selecciona una de las siguientes opciones:

Imagen de gIB de NCCL

Para instalar CoMMA con la imagen de 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 los 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 los archivos binarios de CoMMA en el contenedor de tu carga de trabajo. El contenedor almacena los archivos 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. Para instalar CoMMA en tu carga de trabajo, agrega el siguiente fragmento a tu 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. El mismo volumen de activación debe activarse en el contenedor de 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 del generador de perfiles existente. Luego, copia la nueva biblioteca del generador de perfiles en el directorio de complementos designado. La secuencia de comandos garantiza que la versión correcta del complemento del generador de perfiles esté instalada y lista para usarse.

Compila desde el origen

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

  • El 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
  • Versión 3.10 o posterior de CMake

Para compilar desde la fuente, completa los siguientes pasos:

  1. Clona el repositorio y sus submódulos.

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

    cargo build --release

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

  3. Habilita NCCL para cargar las bibliotecas de CoMMA con uno de los siguientes métodos:

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

Verifica la instalación o 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 sección NCCL_DEBUG en la documentación de NVIDIA.
  2. Especifica el subsistema INIT para la depuración. Especifica INIT configurando la variable de entorno NCCL_DEBUG_SUBSYS=INIT. También puedes especificar otros subsistemas. Para obtener más opciones de subsistemas, consulta la sección NCCL_DEBUG_SUBSYS.
  3. Busca una línea en el registro de NCCL 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 datos de 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 Cómo establecer variables de entorno.

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

  1. Establece 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 CoMMA NCCL

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 analizarlos con tus propias herramientas de análisis de telemetría de NCCL. Para ello, exporta los datos sin procesar a un archivo local.

Cómo establecer el nivel de detalle de los datos

CoMMA recopila datos de 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 Cómo establecer variables de entorno.

  • Comportamiento predeterminado: De forma predeterminada, CoMMA hace un seguimiento de las operaciones de NCCL, incluidas las colectivas y las punto a punto, los metadatos de esas operaciones y los tiempos de finalización. Utiliza 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:
    • Realiza un seguimiento del tiempo de finalización de las operaciones de proxy configurando NCCL_PROFILER_TRACK_PROXYOP=true.
    • Establece NCCL_PROFILER_TRACK_STEPS=true para hacer un seguimiento del tiempo dedicado a cada operación de E/S de redes. Este parámetro de configuración proporciona el nivel de detalle más alto.

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. Establece NCCL_TELEMETRY_MODE en 1 o 4. Para obtener información sobre la variable de entorno NCCL_TELEMETRY_MODE, consulta Opciones de configuración.
  2. Establece una de las siguientes rutas de exportación:

    • Establece 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.
    • Establece 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. Revise 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 explican cómo configurar cualquier variable de entorno.

Configura las variables de entorno de CoMMA

Para establecer una variable de entorno de CoMMA en un valor no predeterminado, configura las variables de entorno. Puedes establecer 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 se conservará por sesión. Para que las variables de entorno sean permanentes, colócalas en el archivo ~/.bashrc, ~/.profile o cualquier otro 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 la carga de trabajo, ya que esta 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: Es la variable de entorno que deseas establecer, por ejemplo, NCCL_TELEMETRY_MODE.
  • VALUE: Es 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 la telemetría de NCCL a los servicios de Google Cloud . Esta biblioteca une 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 dentro de tu sistema operativo invitado, para iniciar conexiones seguras y confiables con los servicios de Google Cloud .

Si usas una imagen de gIB de NCCL como instalador o cualquiera de las imágenes que incluyen el complemento de gIB de NCCL, no es necesario que establezcas 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 la configuración de esta variable.
NCCL_PROFILER_PLUGIN Especifica la ruta de acceso al objeto binario del complemento del 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 la configuración de esta variable.
NCCL_PROFILER_SUMMARY_INTERVAL Especifica el intervalo para los 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 del 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 punto a punto. true
NCCL_PROFILER_TRACK_PROXYOP Habilita (true) o inhabilita (false) el seguimiento y la generación de informes de las operaciones del 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 las siguientes:

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 a un archivo local y a los servicios de Google.
3

¿Qué sigue?