Ativar, desativar e configurar o CoMMA

Este guia descreve como ativar, desativar e gerenciar a biblioteca do Collective Communication Analyzer (CoMMA). O CoMMA coleta telemetria do NCCL para serviçosGoogle Cloud . Para mais informações sobre o CoMMA, consulte Collective Communication Analyzer (CoMMA) (em inglês).

Ativar o CoMMA

O CoMMA é pré-instalado e ativado se você usa imagens que contêm o plug-in gIB do NCCL. Para uma lista dessas imagens, consulte Imagens com o CoMMA ativado.

Opções de instalação

Se você não usa nenhuma dessas imagens e quer instalar o CoMMA, use um dos métodos a seguir.

Método de instalação Tipos de máquina compatíveis
Imagem do pacote de infraestrutura do Google (gIB) do NCCL (recomendado para tipos de máquinas mais recentes) A4X Max, A4X, A4 High e A3 Ultra
Imagem do instalador do CoMMA A4X, A4 High e A3 Ultra
Criar da origem (obrigatório para tipos de máquina mais antigos) A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard e N1 com GPUs anexadas

Instalar o CoMMA

Para instalar o CoMMA, selecione uma das seguintes opções:

Imagem do gIB da NCCL

Para instalar o CoMMA usando a imagem gIB do NCCL, execute o seguinte 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

Imagem do instalador do CoMMA

É possível acessar os binários do CoMMA em uma imagem Docker independente. Você pode usar a imagem do Docker do CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, como initContainers para instalar os binários do CoMMA no contêiner de carga de trabalho. O contêiner armazena os binários no diretório /artifacts.

Para usar a imagem do instalador do CoMMA, siga estas etapas:

  1. Instale o NCCL 2.23 ou mais recente.

  2. Instale o CoMMA na sua carga de trabalho adicionando o seguinte snippet ao seu 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/
    

O snippet de configuração YAML especifica um contêiner para instalar o CoMMA. O snippet especifica a imagem do contêiner do instalador, a política de extração e uma montagem de volume para o plug-in. O mesmo volume precisa ser montado no contêiner de carga de trabalho com <mount-path>/lib64 adicionado a LD_LIBRARY_PATH. A seção command executa um script shell para remover qualquer biblioteca de criação de perfil existente. Em seguida, ele copia a nova biblioteca do profiler para o diretório de plug-ins designado. O script garante que a versão correta do plug-in do criador de perfil esteja instalada e pronta para uso.

Criar a partir da fonte

Para criar a biblioteca CoMMA da origem, instale o seguinte software:

  • Linguagem de programação Rust, que o compilador e o Cargo exigem. Ele pode ser instalado com rustup ou pacotes do sistema.
  • Libclang-dev, que bindgen exige.
  • CMake versão 3.10 ou mais recente

Para criar com base na origem, siga estas etapas:

  1. Clone o repositório e os submódulos dele.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Compile os binários usando o Cargo.

    cargo build --release

    O Cargo salva o binário em target/release/libnccl_profiler.so.

  3. Ative o NCCL para carregar as bibliotecas do CoMMA usando um dos seguintes métodos:

    • Copie o libnccl_profiler.so compilado para um diretório no seu LD_LIBRARY_PATH. Renomeie para libnccl-profiler.so (use um hífen em vez de um sublinhado).
    • Como alternativa, defina a variável de ambiente NCCL_PROFILER_PLUGIN para especificar o caminho do arquivo .so.

Verificar a instalação ou ativação

Para verificar se o NCCL carrega as bibliotecas do CoMMA, analise os registros do NCCL:

  1. Ative a geração de registros de depuração do NCCL. Ative a geração de registros definindo a variável de ambiente NCCL_DEBUG=INFO. Também é possível especificar um nível de depuração mais detalhado. Para mais opções de depuração, consulte a seção NCCL_DEBUG na documentação da NVIDIA.
  2. Especifique o subsistema INIT para depuração. Especifique INIT definindo a variável de ambiente NCCL_DEBUG_SUBSYS=INIT. Também é possível especificar outros subsistemas. Para mais opções de subsistema, consulte a seção NCCL_DEBUG_SUBSYS.
  3. Encontre uma linha no registro do NCCL semelhante a esta: NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN

Desativar o CoMMA

Se o CoMMA já estiver instalado, impeça que ele colete telemetria do NCCL definindo a variável de ambiente NCCL_TELEMETRY_MODE=0 do CoMMA antes de executar as cargas de trabalho. Para definir variáveis de ambiente do CoMMA, consulte Definir variáveis de ambiente.

Para reativar o CoMMA depois de desativá-lo, siga estas etapas:

  1. Defina a variável de ambiente NCCL_TELEMETRY_MODE como um valor diferente de zero. Por exemplo, para usar o modo padrão, especifique NCCL_TELEMETRY_MODE=3.

    Para conferir a lista completa de opções, consulte NCCL_TELEMETRY_MODE na tabela Opções de configuração.

  2. Verifique se o CoMMA está funcionando.

Configurar e visualizar a telemetria do NCCL do CoMMA

Se o CoMMA estiver ativado no seu ambiente, você poderá configurar o tipo de dados de telemetria que ele coleta definindo o nível de granularidade. Esta seção explica como definir a granularidade dos dados e as opções disponíveis.

Você também pode analisar os dados coletados pelo CoMMA para verificar se eles estão alinhados às políticas de segurança da sua organização ou para analisá-los com suas próprias ferramentas de análise de telemetria do NCCL. Para fazer isso, exporte os dados brutos para um arquivo local.

Definir a granularidade dos dados

O CoMMA coleta telemetria do NCCL em diferentes níveis de granularidade. Configure o nível de granularidade usando variáveis de ambiente. Para definir variáveis de ambiente do CoMMA, consulte Definir variáveis de ambiente.

  • Comportamento padrão: por padrão, o CoMMA rastreia operações do NCCL, incluindo coletivas e ponto a ponto, os metadados dessas operações e os tempos de conclusão. Ele usa as seguintes variáveis de ambiente:
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • Para ativar níveis mais granulares de coleta de dados, defina as seguintes variáveis de ambiente:
    • Acompanhe o tempo de conclusão das operações de proxy definindo NCCL_PROFILER_TRACK_PROXYOP=true.
    • Acompanhe o tempo gasto em cada operação de E/S de rede definindo NCCL_PROFILER_TRACK_STEPS=true. Essa configuração oferece o maior nível de granularidade.

Para conferir a lista completa de variáveis de ambiente, consulte Opções de configuração.

Exportar dados para um arquivo local

Exporte os dados brutos para um arquivo local para visualizá-los. Para exportar os dados para um arquivo local e conferir a saída, siga estas etapas:

  1. Defina NCCL_TELEMETRY_MODE como 1 ou 4. Para saber mais sobre a variável de ambiente NCCL_TELEMETRY_MODE, consulte Opções de configuração.
  2. Defina um dos seguintes caminhos de exportação:

    • Defina NCCL_PROFILER_LATENCY_FILE=PATH para exportar rastreamentos detalhados de eventos para um arquivo local. Substitua PATH por um caminho como /tmp/latency-%p.txt.
    • Defina NCCL_PROFILER_SUMMARY_FILE=PATH para exportar estatísticas de resumo agregadas. Substitua PATH por um caminho como /tmp/summary-%p.txt.

      O sistema substitui %p pelo ID do processo.

  3. Verifique a saída. A saída bruta é um arquivo JSON.

Opções de configuração

As seções a seguir resumem todas as variáveis de ambiente que você pode configurar para o CoMMA. Elas também explicam como definir qualquer variável de ambiente.

Definir variáveis de ambiente do CoMMA

Para definir uma variável de ambiente do CoMMA com um valor diferente do padrão, defina as variáveis de ambiente. É possível definir variáveis de ambiente na linha de comando para a instância de computação ou adicioná-las a um script de inicialização. Se você definir as variáveis de ambiente na linha de comando, o valor vai persistir apenas por sessão. Para tornar as variáveis de ambiente permanentes, coloque-as no arquivo ~/.bashrc, ~/.profile ou qualquer arquivo de inicialização usado pelo seu sistema operacional. Para mais informações, consulte a documentação do sistema operacional.

É necessário definir as variáveis de ambiente do CoMMA antes do início da carga de trabalho, porque ela lê as variáveis durante a inicialização do NCCL. Você pode definir variáveis de ambiente da seguinte maneira:

export ENVIRONMENT_VARIABLE=VALUE

Substitua:

  • ENVIRONMENT_VARIABLE: a variável de ambiente que você quer definir, por exemplo, NCCL_TELEMETRY_MODE.
  • VALUE: o valor da variável de ambiente. Por exemplo, 0.

Variáveis de ambiente do CoMMA

Esta seção lista as variáveis de ambiente que podem ser definidas para o CoMMA e os valores padrão delas.

Nome Descrição Padrão
NCCL_PROFILER_AGGREGATE_STEPS Ativa (true) ou desativa (false) a agregação de operações de fragmento de rede. true
NCCL_PROFILER_GPUVIZ_LIB Especifica o caminho para libGPUViz.so, uma biblioteca que faz upload da telemetria do NCCL para os serviços Google Cloud . Essa biblioteca encapsula a API de comunicação do agente. A API de comunicação do agente é a interface que os agentes, como processos em execução no sistema operacional convidado, usam para iniciar conexões seguras e confiáveis com os serviços do Google Cloud .

Se você usar uma imagem gIB do NCCL como um instalador ou qualquer uma das imagens que agrupam o plug-in gIB do NCCL, não é necessário definir essa variável de ambiente.

NCCL_PROFILER_LATENCY_FILE Especifica o modelo de caminho para o arquivo de rastreamento de latência. Por exemplo, /tmp/latency-%p.txt. O sistema substitui %p no nome pelo ID do processo (pid).

Para desativar a exportação baseada em arquivo, cancele a definição dessa variável.
NCCL_PROFILER_PLUGIN Especifica o caminho para o binário do plug-in do criador de perfil.

Se você não especificar essa configuração, o NCCL vai procurar libnccl-profiler.so no LD_LIBRARY_PATH.
NCCL_PROFILER_SUMMARY_FILE Especifica o caminho do arquivo de resumo agregado. Por exemplo, /tmp/summary-%p.txt. O sistema substitui %p no nome pelo ID do processo (pid).

Para desativar a exportação baseada em arquivos, cancele a definição dessa variável.
NCCL_PROFILER_SUMMARY_INTERVAL Especifica o intervalo para relatórios de resumo. Por exemplo: 10s, 1m. Compatível com d, h, m, s, ms, us, ns 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP Ativa (true) ou desativa (false) o monitoramento de operações de proxy NCCL entre processos. true
NCCL_PROFILER_TRACK_NCCLOP Ativa (true) ou desativa (false) o rastreamento e a geração de relatórios para operações da NCCL, incluindo comunicações coletivas e ponto a ponto. true
NCCL_PROFILER_TRACK_PROXYOP Ativa (true) ou desativa (false) o rastreamento e a geração de relatórios de operações de proxy. false
NCCL_PROFILER_TRACK_STEPS Ativa (true) ou desativa (false) o rastreamento e o relatório de operações de fragmento de rede. false
NCCL_TELEMETRY_MODE Controla o local de exportação dos dados de telemetria do NCCL. As opções incluem:

Valor Descrição
0 Desativa a coleta de telemetria do NCCL.
1 Exporta a telemetria do NCCL para um arquivo local. Com esse método, a telemetria do NCCL não fica disponível para o Google.
3 Exporta a telemetria do NCCL para os serviços do Google.
4 Exporta a telemetria do NCCL para um arquivo local e para os serviços do Google.
3

A seguir