🔗dynamo-interconnect-check
- プラグイン
- nvidia-skills
- ライセンス
- Apache-2.0
- ソース
- GitHub で見る ↗
説明
Dynamo デプロイメントの NIXL/UCX/NCCL インターコネクトが、RDMA/NVLink 上での分散サービングに対応できる状態にあるかを検証します。 次のような場合に使用: - recipe-runner がデプロイメントを起動した後(特に disagg/マルチノード構成の場合)に、KV トランスポートが正しく設定されていることを確認したいとき。 - すでに障害が発生しているポッドの診断には、代わりに troubleshoot を使用してください。
原文を表示
Validate that a Dynamo deployment's NIXL/UCX/NCCL interconnect is ready for disaggregated serving over RDMA/NVLink. Use after recipe-runner brings a deployment up (especially disagg/multi-node) to confirm the KV transport is correct; use troubleshoot for diagnosing already-failed pods.
ユースケース
- ✓デプロイメント起動後のKVトランスポート設定確認
- ✓RDMA/NVLink上の分散サービング対応確認
- ✓マルチノード構成でのインターコネクト検証
本文(日本語訳)
Dynamo インターコネクト チェック
目的
トランスポートの分解サービング(disaggregated serving)が実際に依存する通信経路が正常に機能していることを確認します。 NIXL/UCX がRDMAまたはNVLinkを介してピアワーカーに到達できない場合、KV転送は低速または破損したパスにフォールバックしますが、その状態でもデプロイメントはエンドポイントのスモークテストに合格してしまうことがあります。 disaggデプロイメントやそのベンチマーク数値を信頼する前に、読み取り専用チェックでこの問題を検出してください。
このスキルは読み取り専用です。クラスターを変更することも、シークレット情報を出力することも一切ありません。
前提条件
- オペレーターマシン上にPython 3.10以上
- 対象DynamoデプロイメントのワーカーPodへの
kubectl execアクセス権 - レシピディレクトリ(
recipes/<model>/<framework>/<mode>)への読み取りアクセス権 - ノード機能チェックの場合: ワーカーPodイメージ内に
ibstat、nvidia-smi、lsmod等のツールが利用可能であること(ツールが存在しない場合は失敗ではなくskippedとして報告されます)
次のような場合に使用
dynamo-recipe-runnerが disagg またはマルチノードレシピをデプロイした後- disaggのスループット/レイテンシーを報告する前(数値が実際のトランスポートを反映していることを確認するため)
- aggは動作するが、disaggが低速・ハング・誤った出力を返しており、モデルではなくファブリックに原因があると疑われる場合
すでにクラッシュまたはスケジュール不能な状態のPodを診断する場合は、先に dynamo-troubleshoot を使用してください。
手順
1. レシピのトランスポート環境変数を確認する
python3 scripts/check_interconnect.py env recipes/<model>/<framework>/<mode>
設定されているNIXL/UCX/NCCLのトランスポート変数を報告し、
disaggに必須の変数(例: UCX_TLS、UCX_NET_DEVICES、NCCL_IB_HCA)が
欠落している場合はフラグを立てます。
欠落している場合は警告にとどまります(イメージ内に組み込まれている可能性があるため)。
ノードチェックおよびNIXLチェックで確認してください。
各変数の役割については references/interconnect-env-vars.md を参照してください。
2. ノード機能を確認する
GPUノード上、または実行中のワーカーPod内で実行します:
python3 scripts/check_interconnect.py node \
--namespace "${NAMESPACE}" --pod <worker-pod>
以下の項目を読み取り専用でプローブします:
InfiniBandデバイスとアクティブリンク、GPUDirect RDMA(nvidia_peermem)、
GDRCopy、GPUトポロジー内のNVLink。
ツールが存在しない場合は失敗ではなく skipped として報告されます。
3. NIXL到達性を検証する
python3 scripts/check_interconnect.py nixl \
--namespace "${NAMESPACE}" --pod <worker-pod>
Pod内のNIXLテストツールを探索し、ペアワイズのprefill↔decode転送テストを 実行するための具体的な次のステップを提示します。 クロスPodの完全な転送テストには、ファブリック上にスケジュール済みのGPU Podが2つ必要です。
利用可能なスクリプト
| スクリプト | 目的 | 引数 |
|---|---|---|
scripts/check_interconnect.py env |
レシピのNIXL/UCX/NCCL環境変数を検査 | 位置引数: レシピパス |
scripts/check_interconnect.py node |
ノードまたはPod上のInfiniBand・GPUDirect RDMA・GDRCopy・NVLinkをプローブ | --namespace、--pod |
scripts/check_interconnect.py nixl |
PodのNIXL転送テスト準備状況を確認 | --namespace、--pod |
agentskills.io の run_script() プロトコル経由で呼び出す場合:
run_script("scripts/check_interconnect.py", args=["env", "recipes/qwen3-coder-480b/sglang/disagg"])
run_script("scripts/check_interconnect.py", args=["node", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
使用例
デプロイ前にdisaggレシピのトランスポート環境変数の構成を確認する:
python3 scripts/check_interconnect.py env recipes/qwen3-coder-480b/sglang/disagg
デプロイ後にワーカーPodのファブリックを検証する:
python3 scripts/check_interconnect.py node \
--namespace dynamo-demo --pod qwen-worker-0
python3 scripts/check_interconnect.py nixl \
--namespace dynamo-demo --pod qwen-worker-0
agentプロトコル経由で同等の操作を行う場合:
run_script("scripts/check_interconnect.py", args=["nixl", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
出力の仕様
各チェックは ok / warn / fail / skipped を1行の詳細とともに返し、
disaggトランスポートの準備状況に関するロールアップ判定も出力します。
報告内容:
- トランスポート環境変数の存在状況、およびdisagg必須変数の欠落状況
- RDMA / GPUDirect / NVLink の機能ステータス
- NIXL到達性が検証済みかどうか、および未検証の場合の次に実行すべきコマンド
- disaggを信頼できるかどうか、または最初に修正すべき点の明確な説明
制限事項
- 読み取り専用のファブリックプローブであり、完全なペアワイズNIXL転送は実行しません(スケジュール済みのGPU Podが2つとPod内NIXLテストツールが必要)
- ツール(
ibstat、nvidia-smi、lsmod)の欠落によるskipped結果は不確定であり、合格を意味しません - 環境変数チェックはレシピのテキストを検査するものであり、initContainersやオペレーターによって実行時に注入された値は検出されません
- シングルノードのaggデプロイメントはトランスポートを実際には使用しません。このスキルはdisagg/マルチノードの検証を目的としています
トラブルシューティング
| 症状 | 考えられる原因 | 次のステップ |
|---|---|---|
env がすべての必須変数を欠落として報告 |
変数がイメージに組み込み済み、またはオペレーターによって注入されている | ワーカーPod内で node チェックを実行し、実際の環境変数を確認する |
node がアクティブなIBリンクなしと報告 |
ファブリックが停止しているか、HCAがノードにプロビジョニングされていない | クラスター管理者に連絡し、kubectl describe node で nvidia.com/gpu およびIBラベルが表示されることを確認する |
nvidia_peermem が欠落 |
GPUDirect RDMAモジュールがロードされていない | クラスター管理者に nvidia-peermem のロードを依頼する。ロードされていない場合、NIXLはステージングコピーにフォールバックする |
nixl がテストツールを検出できない |
ワーカーイメージにNIXLテストハーネスが含まれていない | NIXLが有効なイメージを使用するか、デバッグPodからスタンドアロン転送テストを実行する |
ベンチマーク
NVCARPS-EVALのパフォーマンスレポート(NVSkills CIパイプラインによって自動生成)については BENCHMARK.md を参照してください。
更新するには、このスキルに変更を加えたアップストリームのPR上で /nvskills-ci を再実行してください。
参考資料
references/interconnect-env-vars.md— NIXL/UCX/NCCL環境変数のカタログおよびIB機能チェックリスト- すべての読み取り専用チェックには
scripts/check_interconnect.pyを使用してください
原文(English)を表示
Dynamo Interconnect Check
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: CC-BY-4.0 -->
Purpose
Confirm that the transport disaggregated serving depends on actually works. A deployment can pass an endpoint smoke test while disagg is silently wrong: if NIXL/UCX cannot reach the peer worker over RDMA or NVLink, KV transfer falls back to a slow or broken path. Catch that with read-only checks before trusting a disagg deployment or its benchmark numbers.
This skill is read-only. It never mutates the cluster and never prints secrets.
Prerequisites
- Python 3.10+ on the operator machine.
kubectl execaccess to a worker pod in the target Dynamo deployment.- Read access to the recipe directory (
recipes/<model>/<framework>/<mode>). - For node-capability checks: tools like
ibstat,nvidia-smi,lsmodavailable in the worker pod image (missing tools are reported asskipped, not failures).
When To Use
- After
dynamo-recipe-runnerdeploys a disagg or multi-node recipe. - Before reporting disagg throughput/latency, so numbers reflect the real transport.
- When agg works but disagg is slow, hangs, or returns wrong output and you suspect the fabric rather than the model.
For diagnosing pods that are already crashing or unschedulable, use
dynamo-troubleshoot first.
Instructions
1. Check Transport Env Vars On The Recipe
python3 scripts/check_interconnect.py env recipes/<model>/<framework>/<mode>
Reports which NIXL/UCX/NCCL transport variables are set and flags
disagg-critical ones (e.g. UCX_TLS, UCX_NET_DEVICES, NCCL_IB_HCA) that are
absent. Missing here is only a warning — they may be baked into the image — so
confirm with the node and NIXL checks. See
references/interconnect-env-vars.md for what each variable does.
2. Check Node Capabilities
Locally on a GPU node, or inside a running worker pod:
python3 scripts/check_interconnect.py node \
--namespace "${NAMESPACE}" --pod <worker-pod>
Probes (read-only) for: InfiniBand devices and Active links, GPUDirect RDMA
(nvidia_peermem), GDRCopy, and NVLink in the GPU topology. Missing tools are
reported as skipped, not failures.
3. Validate NIXL Reachability
python3 scripts/check_interconnect.py nixl \
--namespace "${NAMESPACE}" --pod <worker-pod>
Looks for NIXL test tooling in the pod and surfaces the exact next step to run a pairwise prefill↔decode transfer test. A full cross-pod transfer test requires two scheduled GPU pods on the fabric.
Available Scripts
| Script | Purpose | Arguments |
|---|---|---|
scripts/check_interconnect.py env |
Inspect NIXL/UCX/NCCL env vars on a recipe | positional recipe path |
scripts/check_interconnect.py node |
Probe InfiniBand, GPUDirect RDMA, GDRCopy, NVLink on a node or pod | --namespace, --pod |
scripts/check_interconnect.py nixl |
Surface NIXL transfer-test readiness for a pod | --namespace, --pod |
Invoke via the agentskills.io run_script() protocol:
run_script("scripts/check_interconnect.py", args=["env", "recipes/qwen3-coder-480b/sglang/disagg"])
run_script("scripts/check_interconnect.py", args=["node", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
Examples
Verify a disagg recipe's transport env shape before deploy:
python3 scripts/check_interconnect.py env recipes/qwen3-coder-480b/sglang/disagg
After deploy, validate a worker pod's fabric:
python3 scripts/check_interconnect.py node \
--namespace dynamo-demo --pod qwen-worker-0
python3 scripts/check_interconnect.py nixl \
--namespace dynamo-demo --pod qwen-worker-0
Equivalent through the agent protocol:
run_script("scripts/check_interconnect.py", args=["nixl", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
Output Contract
Each check returns ok / warn / fail / skipped with a one-line detail,
plus a rolled-up verdict on disagg transport readiness. Report:
- transport env vars present vs. disagg-critical ones missing
- RDMA / GPUDirect / NVLink capability status
- whether NIXL reachability was validated, and the next command if not
- a clear statement of whether disagg can be trusted, or what to fix first
Limitations
- Read-only fabric probe; does not run a full pairwise NIXL transfer (requires two scheduled GPU pods and the in-pod NIXL test tools).
skippedresults for missing tools (ibstat,nvidia-smi,lsmod) are inconclusive, not a pass.- Env-var check inspects the recipe text; values injected at runtime via initContainers or operator-applied envs are not detected.
- Single-node agg deployments do not exercise the transport — this skill is for disagg / multi-node validation.
Troubleshooting
| Symptom | Likely cause | Next step |
|---|---|---|
env reports all critical vars missing |
Vars baked into image or injected by operator | Run the node check inside the worker pod to verify actual env |
node reports no Active IB link |
Fabric down or HCA not provisioned to the node | Contact cluster admin; verify kubectl describe node shows nvidia.com/gpu and IB labels |
nvidia_peermem missing |
GPUDirect RDMA module not loaded | Ask cluster admin to load nvidia-peermem; without it, NIXL falls back to staged copies |
nixl finds no test tools |
Worker image lacks NIXL test harness | Use a NIXL-enabled image or run the standalone transfer test from a debug pod |
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
references/interconnect-env-vars.md— NIXL/UCX/NCCL env var catalog and IB capability checklist.- Use
scripts/check_interconnect.pyfor all read-only checks.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。