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:
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, quebindgenexige.CMakeversão 3.10 ou mais recente
Para criar com base na origem, 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 no seuLD_LIBRARY_PATH. Renomeie 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, analise 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 a seçãoNCCL_DEBUGna documentação da NVIDIA. - Especifique o subsistema
INITpara depuração. EspecifiqueINITdefinindo a variável de ambienteNCCL_DEBUG_SUBSYS=INIT. Também é possível especificar outros subsistemas. Para mais opções de subsistema, consulte a seçãoNCCL_DEBUG_SUBSYS. - 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:
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 conferir a lista completa de opções, consulte
NCCL_TELEMETRY_MODEna tabela Opções de configuração.
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=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:
- 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.
- Acompanhe o tempo de conclusão das operações de proxy definindo
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:
- 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 rastreamentos detalhados de eventos 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
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:
|
3 |
A seguir
- Saiba como resolver problemas com o CoMMA.
- Saiba como detectar e resolver atrasos.