Este guia descreve como ativar, desativar e gerenciar a biblioteca do Collective Communication Analyzer (CoMMA). O CoMMA coleta telemetria do NCCL para Google Cloud serviços. Para mais informações sobre o CoMMA, consulte Collective Communication Analyzer (CoMMA).
Ativar o CoMMA
O CoMMA é pré-instalado e ativado se você usar imagens que contêm o plug-in gIB do NCCL. Para conferir uma lista dessas imagens, consulte Imagens com o CoMMA ativado.
Opções de instalação
Se você não usar nenhuma dessas imagens e quiser 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áquina mais recentes) | A4X Max, A4X, A4 High e A3 Ultra |
| Imagem do instalador do CoMMA | A4X, A4 High e A3 Ultra |
| Criar a partir da fonte (necessá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 gIB do 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 receber binários do CoMMA em uma imagem Docker independente. Você pode usar a imagem Docker do CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, como initContainers para instalar binários do CoMMA no contêiner da 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:
Instale o CoMMA na carga de trabalho adicionando o seguinte snippet aos
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 do 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.
A mesma montagem de volume precisa ser montada no contêiner da carga de trabalho com
<mount-path>/lib64 adicionado ao LD_LIBRARY_PATH.
A seção command executa um script de shell para remover qualquer biblioteca de criação de perfil atual. Em seguida, ela copia a nova biblioteca de criação de perfil para o diretório de plug-ins designado.
O script garante que a versão correta do plug-in de criação de perfil esteja instalada e pronta para uso.
Criar a partir da fonte
Para criar a biblioteca do CoMMA a partir da fonte, instale o seguinte software:
- Linguagem de programação Rust, que o compilador e o Cargo exigem. Isso pode ser instalado com rustup ou pacotes de sistema
Libclang-dev, quebindgenexige.CMakeversão 3.10 ou mais recente
Para criar a partir da fonte, siga estas etapas:
Clone o repositório e os submódulos dele.
git clone --recurse-submodules https://github.com/google/CoMMA
Compile os binários usando o Cargo.
cargo build --release
O Cargo salva o binário em
target/release/libnccl_profiler.so.Ative o NCCL para carregar as bibliotecas do CoMMA usando um dos seguintes métodos:
- Copie o
libnccl_profiler.socompilado para um diretório noLD_LIBRARY_PATH. Renomeie-o paralibnccl-profiler.so(use um hífen em vez de um sublinhado). - Como alternativa, defina a variável de ambiente
NCCL_PROFILER_PLUGINpara especificar o caminho do arquivo.so.
- Copie o
Verificar a instalação ou ativação
Para verificar se o NCCL carrega as bibliotecas do CoMMA, revise os registros do NCCL:
- 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 aNCCL_DEBUGseção na documentação da NVIDIA. - Especifique o subsistema
INITpara depuração. EspecifiqueINITdefinindo aNCCL_DEBUG_SUBSYS=INITvariável de ambiente. Também é possível especificar outros subsistemas. Para mais opções de subsistema, consulte aNCCL_DEBUG_SUBSYSseção. - 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 a 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:
Defina a variável de ambiente
NCCL_TELEMETRY_MODEcomo um valor diferente de zero. Por exemplo, para usar o modo padrão, especifiqueNCCL_TELEMETRY_MODE=3.Para revisar a lista completa de opções, consulte
NCCL_TELEMETRY_MODEna tabela Opções de configuração.
Configurar e visualizar a telemetria do CoMMA NCCL
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 dos dados. Esta seção explica como definir a granularidade dos dados e as opções disponíveis.
Também é possível revisar os dados coletados pelo CoMMA para verificar se eles estão alinhados com as 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=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
- Para ativar níveis mais granulares de coleta de dados, defina as seguintes variáveis de ambiente:
- Rastreie o tempo de conclusão das operações de proxy definindo
NCCL_PROFILER_TRACK_PROXYOP=true. - Rastreie 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.
- Rastreie o tempo de conclusão das operações de proxy definindo
Para revisar 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 visualizar a saída, siga as etapas:
- Defina
NCCL_TELEMETRY_MODEcomo1ou4. Para saber mais sobre a variável de ambienteNCCL_TELEMETRY_MODE, consulte Opções de configuração. Defina um dos seguintes caminhos de exportação:
- Defina
NCCL_PROFILER_LATENCY_FILE=PATHpara exportar rastros de eventos detalhados para um arquivo local. SubstituaPATHpor um caminho como/tmp/latency-%p.txt. Defina
NCCL_PROFILER_SUMMARY_FILE=PATHpara exportar estatísticas de resumo agregadas. SubstituaPATHpor um caminho como/tmp/summary-%p.txt.O sistema substitui
%ppelo ID do processo.
- Defina
Revise a resposta gerada. 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 podem ser configuradas 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 como um valor diferente do padrão, defina variáveis de ambiente. É possível definir variáveis de ambiente na linha de comando da 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 só vai persistir 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 sistema operacional. Para mais informações, consulte a documentação do sistema operacional.
É necessário definir as variáveis de ambiente do CoMMA antes que a carga de trabalho seja iniciada, porque ela lê as variáveis durante a inicialização do NCCL. É possível 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 blocos de rede. |
true |
||||||||||
NCCL_PROFILER_GPUVIZ_LIB |
Especifica o caminho para libGPUViz.so, uma biblioteca que faz upload da telemetria do NCCL para Google Cloud serviços. Essa biblioteca envolve 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 Google Cloud serviços.
Se você usar uma imagem gIB do NCCL como instalador ou qualquer uma das imagens que agrupam o plug-in gIB do NCCL, não será 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 arquivos, cancele a definição dessa variável. |
|||||||||||
NCCL_PROFILER_PLUGIN |
Especifica o caminho para o binário do plug-in de criação 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 para o 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.
Oferece suporte a 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 do 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 do 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 a geração de relatórios de operações de blocos de rede. |
false |
||||||||||
NCCL_TELEMETRY_MODE |
Controla o local de exportação dos dados de telemetria do NCCL.
Isso inclui:
|
3 |
A seguir
- Saiba como resolver problemas com o CoMMA.
- Saiba como detectar e resolver atrasos.