Resolver problemas com o wiki de depuração de cargas de trabalho de ML
O Wiki de depuração de cargas de trabalho de ML é um repositório do GitHub que os agentes de programação de IA usam para resolver problemas de cargas de trabalho de TPU em execução no Google Kubernetes Engine (GKE) com JAX, XLA ou Pathways. O wiki permite que os agentes de IA coletem registros de carga de trabalho, correspondam assinaturas de erro com modos de falha conhecidos, executem fluxos de trabalho de diagnóstico e relatem causas raiz com base em registros. Isso fornece aos agentes as informações necessárias para diagnosticar falhas, travamentos, reinicializações ou preempções de carga de trabalho.
O wiki contém dois tipos de material de referência:
- Páginas de conhecimento: páginas de Markdown que descrevem conceitos, sintomas de falha e as assinaturas de registro, playbooks de solução de problemas e ferramentas de diagnóstico.
- Procedimentos executáveis: ações e fluxos de trabalho JSON. Uma ação é uma única
etapa de diagnóstico, como uma consulta de registro ou um comando
kubectl. Um fluxo de trabalho executa uma sequência de ações para diagnosticar um modo de falha específico.
Quando você executa o comando /troubleshoot, uma equipe de subagentes especializados
faz a triagem dos registros de carga de trabalho, seleciona e executa o fluxo de trabalho que corresponde à
falha e verifica cada conclusão em relação aos registros principais. Em seguida, o agente
informa a causa raiz, os hosts culpados conforme citados nos registros e uma tabela
de falhas que resume cada interrupção.
Arquivos de chave
A tabela a seguir lista os principais arquivos e diretórios no wiki de depuração de cargas de trabalho de ML:
| Caminho | Descrição |
|---|---|
_wiki/TUTORIAL.md |
Um tutorial sobre o que acontece durante um diagnóstico e como avaliar os resultados, incluindo um exemplo prático. |
_wiki/INDEX.md |
Um catálogo de todas as páginas, ações e fluxos de trabalho no wiki, com um resumo de uma linha de cada um. |
_wiki/concepts/ |
Arquitetura do sistema e conceitos de ciclo de vida de componentes, como o ciclo de vida do programa libtpu, goodput e monitoramento do progresso da carga de trabalho. |
_wiki/entities/ |
Entidades de hardware, software e plataforma, como TPU, GPU, JAX, XLA e Pathways. |
_wiki/symptoms/ |
Modos de falha, as assinaturas de registro deles e como verificar cada um. |
_wiki/playbooks/ |
Estratégias de solução de problemas, fluxogramas de árvore de decisão e armadilhas comuns. |
_wiki/tools/ |
Ferramentas de diagnóstico, scripts e guias de referência de linha de comando. |
_wiki/workflows/ |
Procedimentos de diagnóstico em JSON. Cada fluxo de trabalho executa uma sequência de ações para diagnosticar um modo de falha específico. |
_wiki/actions/ |
Etapas de diagnóstico individuais em JSON, como consultas de registro e comandos kubectl.
|
_wiki/SCHEMA.md |
Os tipos de página, os requisitos de frontmatter e as tags de taxonomia que as páginas da wiki precisam seguir. |
_agents/QUICKSTART.md |
Detalhes de configuração e envio para usuários do Antigravity. |
CLAUDE.md |
O layout do espaço de trabalho, as ferramentas de linha de comando e os papéis de subagente para usuários do Claude Code. |
Comandos principais
A tabela a seguir lista os comandos que podem ser executados com o wiki:
| Comando | Uso | Descrição |
|---|---|---|
/troubleshoot |
/troubleshoot WORKLOAD_ID, em que
WORKLOAD_ID é o nome da carga de trabalho ou do
JobSet.
|
Diagnostica uma carga de trabalho usando o Cloud Logging, eventos de cluster do GKE, registros do kubelet e registros de nós. Os subagentes de roteador, profissional, revisor e consultor executam o diagnóstico e informam a causa raiz, os hosts culpados conforme citado nos registros e uma tabela de falhas. |
/dashboard |
/dashboard [TARGET], em que
TARGET é um ID do projeto, nome de cluster
ou ID de carga de trabalho opcional. Se você omitir TARGET, o
painel vai mostrar todos os clusters do GKE no projeto
definido na configuração da Google Cloud CLI.
|
Inicia o painel de capacidade e triagem do GKE, um app da Web local em http://localhost:8080. O comando verifica os clusters em busca do destino e retorna um link para uma visualização de painel filtrada para o destino.
|
/handoff |
Todos os argumentos, exceto
|
Empacota as descobertas de /troubleshoot em um bucket do Cloud Storage
para compartilhar com o Cloud Customer Care e, em seguida, monitora o bucket em busca de
atualizações. Para verificar se há atualizações mais tarde, execute
/handoff --watch STORAGE_KEY, em que
STORAGE_KEY é o nome da pasta de transferência no
bucket.
|
Pré-requisitos
Antes de configurar o wiki, identifique a carga de trabalho que você quer diagnosticar e anote os seguintes detalhes:
- O nome da carga de trabalho ou do JobSet.
- O ID do projeto do Google Cloud que executa a carga de trabalho.
- O período aproximado da execução a ser diagnosticada.
Instalações
O wiki requer as seguintes instalações:
- Instale o Python 3, incluindo o módulo
venv. O wiki requer o Python 3.9 ou mais recente. No Debian e no Ubuntu, o módulovenvestá no pacotepython3-venv. - Instale e inicialize a Google Cloud CLI.
- Instale o
kubectle ogke-gcloud-auth-plugin. - Instale um dos seguintes agentes de programação de IA. O wiki inclui arquivos de configuração para:
Funções exigidas
Os agentes executam comandos de diagnóstico com suas credenciais do Google Cloud . Para diagnosticar uma carga de trabalho, conceda os seguintes papéis do IAM ao projeto que executa a carga de trabalho:
- Visualizador de registros (
roles/logging.viewer): permite que os agentes leiam os registros de auditoria, nó e contêiner da carga de trabalho. - Leitor do Kubernetes Engine (
roles/container.viewer): permite que os agentes inspecionem o cluster, os nós e os pods que executaram a carga de trabalho. - Leitor do Compute (
roles/compute.viewer): permite que os agentes inspecionem as VMs do Compute Engine que dão suporte aos nós do cluster, incluindo eventos de manutenção e encerramento de VMs. - Leitor do Monitoring (
roles/monitoring.viewer): permite que os agentes leiam as métricas do Cloud Monitoring para fluxos de trabalho que inspecionam métricas de carga de trabalho e nó.
Para executar o comando /handoff, você também precisa do papel de Administrador de objetos do Storage
(roles/storage.objectAdmin) no bucket do Cloud Storage que você compartilha
com o Cloud Customer Care. Esse papel permite que os agentes façam upload de descobertas para o bucket
e o monitorem em busca de atualizações.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Configurar o wiki
Clone o repositório e navegue até o diretório raiz:
git clone https://github.com/google/ml-workload-debugging-wiki.git cd ./ml-workload-debugging-wikiO wiki usa caminhos relativos à raiz do repositório. Portanto, execute os comandos e inicie o agente nesse diretório.
Crie e ative um ambiente virtual do Python e instale as dependências do wiki:
python3 -m venv _wiki/.venv source _wiki/.venv/bin/activate pip install -r _wiki/requirements.txtCrie Application Default Credentials (ADC) locais para sua conta de usuário. As ferramentas Python do wiki usam o ADC para consultar o Cloud Logging:
gcloud auth application-default loginVerifique sua configuração executando o linter do wiki:
python3 _wiki/wiki_linter.pyO linter verifica a estrutura, os esquemas e os links do wiki e, em seguida, imprime um relatório JSON. Se o relatório tiver
"status": "PASS", a verificação foi bem-sucedida. Os avisos no relatório não afetam o status.
Resolver problemas de uma carga de trabalho
Siga estas etapas para resolver problemas em uma carga de trabalho com o wiki de depuração de carga de trabalho de ML:
Inicie o agente na raiz do repositório do Wiki de depuração de cargas de trabalho de ML:
- Claude Code: no shell em que você ativou o ambiente virtual, execute
claude. O Claude Code carrega as instruções do wiki deCLAUDE.mde as definições de comando e subagente do diretório.claude/. - Antigravity: abra a raiz do repositório como seu espaço de trabalho. As definições de habilidade e subagente do Antigravity do wiki estão no diretório
_agents/. Para detalhes sobre a configuração, consulte_agents/QUICKSTART.md.
- Claude Code: no shell em que você ativou o ambiente virtual, execute
Execute o comando
/troubleshoot, especificando o nome da carga de trabalho ou do JobSet que você quer diagnosticar:/troubleshoot WORKLOAD_ID
Informe ao agente o ID do projeto e o período da execução. É possível fornecer um período preciso no formato de carimbo de data/hora UTC (
YYYY-MM-DDTHH:MM:SSZ) ou períodos relativos em linguagem natural, como "há uma hora" ou "nas últimas 24 horas". Os agentes usam o período para definir o escopo das consultas de registro. Portanto, verifique se ele abrange toda a execução.
Por padrão, os fluxos de trabalho de diagnóstico executam verificações somente leitura. Antes de o agente executar uma
ação que modifica o estado do cluster, como reiniciar ou aplicar taint em um nó, ele
solicita sua confirmação explícita. Cada comando precisa ser analisado e aprovado.
Essas ações são marcadas com requires_approval: true nas definições em
_wiki/actions/. O agente informa as descobertas após a conclusão do diagnóstico.
Para saber como avaliar as descobertas, incluindo como reconhecer um resultado inconclusivo, consulte _wiki/TUTORIAL.md.