К основному содержанию
скилл CX Codex

dynamo-troubleshoot — скилл для Claude Code: диагностика сбоев Dynamo

Разбирает упавший деплой Dynamo на классы проблем и подсказывает следующий шаг. Пригодится, когда поды, PVC или бенчмарк-джобы не поднимаются.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add NVIDIA/skills --skill dynamo-troubleshoot -a claude-code
Открыть на GitHub

Что делает dynamo-troubleshoot

Скилл ведёт диагностику сверху вниз и на каждом шаге собирает только доказательства на чтение. Сначала запускается scripts/collect_dynamo_debug_bundle.py с --namespace, а если знаете имя деплоя — с --deployment-name. Секреты не собираются, токены Hugging Face не печатаются.

Дальше сбой раскладывается по одному основному классу: кластер, namespace и секрет, кэш модели и PVC, образ, планирование GPU, реконсиляция DynamoGraphDeployment, frontend и router, воркер, endpoint, бенчмарк-джоба. Порядок проверок фиксированный: namespace и storage class, потом PVC и джоба скачивания модели, статус DynamoGraphDeployment, describe pod и логи, сервис frontend, /v1/models, /v1/chat/completions, и только после успешного smoke-теста endpoint — бенчмарк.

Правки вносятся по одному слою, самая мелкая обратимая. Скилл только читает кластер: команды и патчи он возвращает, но не выполняет. Нужны Python 3.10+ и kubectl с доступом на чтение к подам, событиям, джобам, PVC и DynamoGraphDeployment — без прав на секреты. Если kubectl отвечает Forbidden на события и поды, дело в RBAC сервисного аккаунта, и это первое, что стоит проверить. Транспорт disagg скилл не валидирует, для этого есть dynamo-interconnect-check.

Какие задачи решает

  • понять, почему поды воркеров уходят в CrashLoopBackOff
  • найти причину зависшей джобы скачивания модели
  • разобрать PVC, который не привязался к storage class
  • проверить статус и события DynamoGraphDeployment
  • прогнать smoke-тест endpoint перед бенчмарком

Примеры запросов агенту

  • Собери отладочный бандл для namespace dynamo-demo и скажи, что сломалось
  • Почему поды воркеров в CrashLoopBackOff? Проверь логи и планирование GPU
  • Джоба скачивания модели висит в Pending — разбери PVC и секрет Hugging Face

Как установить dynamo-troubleshoot

1Через Skills CLI (Vercel)

npx skills add NVIDIA/skills --skill dynamo-troubleshoot -a claude-code

2Вручную: положить файлы

~/.claude/skills/dynamo-troubleshoot/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dynamo-troubleshoot/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dynamo-troubleshoot

Как установить dynamo-troubleshoot в Claude?

Выполните npx skills add NVIDIA/skills --skill dynamo-troubleshoot -a claude-code. Скилл появится в ~/.claude/skills/dynamo-troubleshoot/SKILL.md.

Что делает dynamo-troubleshoot?

Собирает отладочный бандл на чтение, относит сбой Dynamo к одному классу проблем и возвращает вероятную причину с точной следующей командой или патчем.

Что нужно для работы скилла?

Python 3.10+ на машине оператора и kubectl с доступом на чтение к целевому namespace: поды, события, джобы, PVC и DynamoGraphDeployment. Доступ к секретам не нужен.

Исходный текст

SKILL.md · Apache-2.0
---
name: dynamo-troubleshoot
description: Diagnose failed or unhealthy Dynamo deployments. Use when pods, model-cache jobs, PVCs, workers, frontend/router health, endpoints, or benchmark jobs fail; use recipe-runner/router-starter before this for normal bring-up.
license: Apache-2.0
metadata:
  author: Dan Gil <[email protected]>
  tags:
    - dynamo
    - kubernetes
    - troubleshooting
    - day-2
---

# Dynamo Troubleshoot

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

## Purpose

Turn a Dynamo failure into a clear problem class, strongest signal, and next
action. Start with read-only evidence, avoid secrets, and fix one layer at a
time.

## Prerequisites

- Python 3.10+ on the operator machine.
- `kubectl` configured with read access to the target namespace.
- Permission to read pods, events, jobs, PVCs, and `DynamoGraphDeployment` resources (NOT secrets).
- Network reachability to the cluster API server.

## Instructions

### 1. Collect A Read-Only Bundle

Run:

```bash
python3 scripts/collect_dynamo_debug_bundle.py \
  --namespace "${NAMESPACE}"
```

If the user names a deployment, include it:

```bash
python3 scripts/collect_dynamo_debug_bundle.py \
  --namespace "${NAMESPACE}" \
  --deployment-name <deployment-name>
```

Do not collect Kubernetes secrets. Do not print Hugging Face tokens.

### 2. Classify The Failure

Use `references/failure-decision-tree.md` and classify into one primary bucket:

- cluster/platform
- namespace/secret
- model cache/PVC/download
- image pull/runtime image
- GPU scheduling/resources
- operator/DynamoGraphDeployment reconciliation
- frontend/router
- worker/backend
- endpoint/API
- benchmark/perf job

### 3. Debug Top Down

Check in this order:

1. namespace, storage class, GPU nodes, and HF secret existence
2. PVC and model-download job
3. `DynamoGraphDeployment` status and events
4. pod status, `describe pod`, and container logs
5. frontend service and port-forward
6. `/v1/models`
7. `/v1/chat/completions`
8. benchmark job only after endpoint smoke test passes

### 4. Fix One Layer At A Time

Prefer the smallest reversible change:

- create missing namespace or HF secret
- patch `storageClassName`
- patch image tag or image pull secret
- reduce GPU request only if the recipe can still be valid
- switch KV router to approximate mode only if workers do not publish events
- restart failed jobs after fixing the underlying config

After each fix, rerun the relevant readiness check before moving deeper.

## Available Scripts

| Script | Purpose | Arguments |
|---|---|---|
| `scripts/collect_dynamo_debug_bundle.py` | Collect a read-only debug bundle (pods, events, jobs, PVCs, CR status) | `--namespace`, `--deployment-name`, `--output-dir` |

Invoke via the agentskills.io `run_script()` protocol:

```python
run_script("scripts/collect_dynamo_debug_bundle.py", args=["--namespace", "dynamo-demo"])
```

## Examples

Collect everything in a namespace for triage:

```bash
python3 scripts/collect_dynamo_debug_bundle.py --namespace dynamo-demo
```

Scope to a single failing deployment:

```bash
python3 scripts/collect_dynamo_debug_bundle.py \
  --namespace dynamo-demo \
  --deployment-name qwen-vllm-disagg
```

Equivalent through the agent protocol:

```python
run_script("scripts/collect_dynamo_debug_bundle.py", args=["--namespace", "dynamo-demo", "--deployment-name", "qwen-vllm-disagg"])
```

## Output Contract

Return:

- problem class
- evidence checked
- strongest signal
- likely cause
- exact next command or patch
- what was ruled out
- whether it is safe to continue deployment or benchmarking

## Limitations

- Read-only. Never mutates the cluster; remediation commands are returned, not executed.
- Will not collect secrets or print Hugging Face tokens; some failure modes (auth) may need user-side inspection.
- Bundle size grows with deployment size; on very large namespaces, scope with `--deployment-name`.
- Does not validate disagg transport — use `dynamo-interconnect-check` for that.

## Troubleshooting

| Symptom | Likely cause | Next step |
|---|---|---|
| `kubectl` returns Forbidden on events/pods | Service account lacks read RBAC | Ask operator for read-only role binding on the namespace |
| Bundle missing `DynamoGraphDeployment` status | Operator not installed or different namespace | Verify `dynamo-platform` operator is installed and watching the namespace |
| Model-download job in `Pending` | PVC unbound or HF secret missing | Fix PVC binding or create the named HF secret, then rerun the job |
| Worker pods `CrashLoopBackOff` | Image/runtime mismatch or GPU not available | Inspect container logs; check `nvidia.com/gpu` allocatable on nodes |

## Benchmark

See `BENCHMARK.md` for the NVCARPS-EVAL performance report (auto-generated by the NVSkills CI pipeline). To refresh, re-run `/nvskills-ci` on an upstream PR touching this skill.

## References

- Read `references/failure-decision-tree.md` for bucket-specific checks.
- Use `scripts/collect_dynamo_debug_bundle.py` for read-only bundle collection.

© Dan Gil · Apache-2.0 · NVIDIA/skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
gpu-kubernetes-operations devops-skills Скилл для работы с GPU-кластерами Kubernetes: планирование подов, MIG-разделение, автоскейлинг и мониторинг через DCGM. CX Codex +1 329установок gke-ai-troubleshooting-node-unresponsive-timeout официальный google Находит причины зависания GPU и TPU нод в GKE со статусом NodeStatusUnknown. Помогает, когда от ноды перестали приходить хартбиты, а поды зависли в Terminating. CX Codex 810установок digitalocean-compute bobmatnyc Подсказывает агенту, что выбрать в DigitalOcean под задачу: Droplets, App Platform, Functions, DOKS или GPU. Пригодится, когда решаешь, куда деплоить приложение или контейнер. CX Codex +1 416установок llm-inference-scaling devops-skills Скилл настраивает автомасштабирование инференса LLM в Kubernetes через KEDA, метрики GPU и очереди Redis. Пригодится при непредсказуемом трафике к vLLM и для экономии на спотовых инстансах. CX Codex +1 343установок gke-workload-troubleshooting официальный google Скилл ищет причины сбоев GKE-нагрузок по логам и событиям. Пригодится, когда поды не запускаются или уходят в повторные перезапуски. CX Codex 4 600установок debug-openshell-cluster NVIDIA Скилл находит причины сбоев шлюза OpenShell, проблем с TLS и ошибок запуска песочниц в контейнерах и Kubernetes. CX Codex +1 474установок

Из того же набора178

nemo-rl-session-memory Ведёт durable-заметки о рабочей сессии в каталоге session/, чтобы другой агент поднял контекст после обрыва связи или перезапуска VS Code. CX Codex +1 2 000установок nemotron-speech Скилл ведёт агента по задачам NVIDIA Nemotron Speech (бывшая Riva): разворачивает и тестирует ASR, TTS и NMT NIM в облаке или на своём железе. CX Codex +1 2 000установок physical-ai-defect-image-generation Оркеструет пайплайны генерации дефектов для оптического контроля на базе Cosmos AnomalyGen и OSMO. Помогает собирать обучающие датасеты для анализа печатных плат, стекла и металла. CX Codex +1 2 000установок physical-ai-video-data-augmentation Ведёт цикл аугментации видео и авторазметки на OSMO: выбор флоу, проверки перед отправкой, мониторинг и забор результатов. CX Codex +1 2 000установок nemo-mbridge-recipe-recommender Скилл помогает выбрать стартовый рецепт Megatron Bridge под вашу модель, число GPU и цель обучения, а потом подстроить параллелизм. CX Codex +1 1 900установок launch-nemo-rl Скилл помогает запускать, отслеживать и отлаживать рецепты обучения NeMo-RL в Kubernetes через CLI nrl-k8s. CX Codex +1 1 900установок nemo-mbridge-perf-memory-tuning Помогает разбирать ошибки нехватки памяти GPU при обучении в Megatron Bridge и выбирать настройки для снижения пикового потребления. CX Codex +1 1 900установок nemo-rl-auto-research Автономный цикл исследований для NeMo-RL и NeMo-gym с фиксацией гипотез в git и TSV. Помогает проверять метрики и запускать базовые рецепты. CX Codex +1 1 900установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой