dynamo-interconnect-check
Dynamo Interconnect Check — официальный read-only скилл NVIDIA для проверки транспорта, от которого зависит disaggregated serving в Dynamo. Он нужен после запуска disagg или multi-node recipe, особенно когда deployment уже отвечает на endpoint smoke test, но остаётся риск, что NIXL или UCX не могут связаться с соседним worker по RDMA либо NVLink. В таком случае KV transfer может уйти на медленный или сломанный путь, а benchmark будет выглядеть успешным только на поверхности. Скилл проверяет готовность interconnect перед тем, как доверять latency, throughput и результатам disagg-бенчмарка; для уже падающих или unschedulable pod сначала предназначен отдельный dynamo-troubleshoot. Проверка начинается с каталога recipe и выполняется командой python3 scripts/check_interconnect.py env recipes/<model>/<framework>/<mode>. Этот шаг показывает транспортные переменные NIXL, UCX и NCCL и отдельно отмечает критичные для disagg параметры, среди которых UCX_TLS, UCX_NET_DEVICES и NCCL_IB_HCA. Отсутствие переменной здесь является предупреждением, а не окончательным failure: значение может быть зашито в image или добавлено оператором при запуске. Поэтому результат env нужно подтверждать проверками внутри worker pod, а не трактовать как доказательство, что сеть недоступна. Следующий режим — node, например python3 scripts/check_interconnect.py node --namespace "$NAMESPACE" --pod <worker-pod>. На локальном GPU node или внутри pod он ищет InfiniBand-устройства и их Active links, наличие nvidia_peermem для GPUDirect RDMA, GDRCopy и NVLink в GPU topology. Инструменты ibstat, nvidia-smi и lsmod могут отсутствовать в образе; в этом случае результат помечается как skipped, а не как pass или fail. Такая семантика важна для отчёта: пропущенная утилита означает, что capability не подтверждена, и сначала нужно проверить образ либо повторить probe там, где эти инструменты доступны. Режим nixl запускается командой python3 scripts/check_interconnect.py nixl --namespace "$NAMESPACE" --pod <worker-pod>. Он ищет доступные средства тестирования NIXL в pod и формулирует следующий шаг для проверки передачи между prefill и decode. Полный pairwise transfer test не выполняется автоматически: для него нужны два запланированных GPU pod на одной fabric и соответствующий NIXL test harness. Поэтому положительный surface-check ещё не равен доказанной end-to-end передаче KV, а отсутствие harness следует явно показывать как ограничение результата. Ожидаемый output contract каждого probe — статус ok, warn, fail или skipped с однострочным пояснением и сводным verdict по готовности disagg transport. В отчёте нужно разделить присутствующие и отсутствующие env-переменные, статус RDMA, GPUDirect и NVLink, факт проверки NIXL reachability и конкретную следующую команду, если проверка не состоялась. Скилл ничего не изменяет в кластере и не печатает секреты; команды используют read-only inspection и kubectl exec с уже имеющимся доступом к worker pod. Это делает его подходящим перед benchmark и при симптомах «agg работает, disagg медленный, зависает или выдаёт неправильный результат». У метода есть явные границы. Проверка env читает recipe-текст и не видит значения, которые добавляются initContainer или оператором во время запуска. Single-node agg не упражняет interconnect и поэтому не может подтвердить transport для disagg. skipped из-за отсутствующей ibstat, nvidia-smi или lsmod не следует превращать в зелёный результат. Если критичные переменные отсутствуют, сначала проверяют реальное окружение worker; если нет Active IB link — fabric, HCA и node labels; если нет nvidia_peermem — загрузку GPUDirect RDMA модуля; если нет NIXL tools — образ или standalone debug pod. Только после этих шагов можно честно сказать, что transport подтверждён или указать точный блокирующий слой.
Для чего подходит
- Проверка interconnect в Dynamo deployment
- Валидация RDMA и NVLink перед disaggregated serving
- Диагностика KV-транспорта NIXL, UCX и NCCL
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/NVIDIA/skills/tree/main/skills/dynamo-interconnect-check