Dynamo導入時のNIXL/UCX/NCCL相互接続(ノード間の通信規格)がRDMA/NVLink上での分散サービング準備ができているかを確認します。 レシピランナー(自動化したセットアップスクリプト)がシステムを起動した後に実行して、KV転送(キャッシュデータの送受信)が正しく動作しているか確認してください。既に問題が起きているポッド(稼働単位)の診断が必要な場合は、トラブルシューティング機能をお使いください。
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.
トランスポートの分解サービング(disaggregated serving)が実際に依存する通信経路が正常に機能していることを確認します。 NIXL/UCX がRDMAまたはNVLinkを介してピアワーカーに到達できない場合、KV転送は低速または破損したパスにフォールバックしますが、その状態でもデプロイメントはエンドポイントのスモークテストに合格してしまうことがあります。 disaggデプロイメントやそのベンチマーク数値を信頼する前に、読み取り専用チェックでこの問題を検出してください。
このスキルは読み取り専用です。クラスターを変更することも、シークレット情報を出力することも一切ありません。
kubectl exec アクセス権recipes/<model>/<framework>/<mode>)への読み取りアクセス権ibstat、nvidia-smi、lsmod 等のツールが利用可能であること(ツールが存在しない場合は失敗ではなく skipped として報告されます)dynamo-recipe-runner が disagg またはマルチノードレシピをデプロイした後すでにクラッシュまたはスケジュール不能な状態のPodを診断する場合は、先に dynamo-troubleshoot を使用してください。
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 を参照してください。
GPUノード上、または実行中のワーカーPod内で実行します:
python3 scripts/check_interconnect.py node \
--namespace "${NAMESPACE}" --pod <worker-pod>
以下の項目を読み取り専用でプローブします:
InfiniBandデバイスとアクティブリンク、GPUDirect RDMA(nvidia_peermem)、
GDRCopy、GPUトポロジー内のNVLink。
ツールが存在しない場合は失敗ではなく skipped として報告されます。
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トランスポートの準備状況に関するロールアップ判定も出力します。
報告内容:
ibstat、nvidia-smi、lsmod)の欠落による skipped 結果は不確定であり、合格を意味しません| 症状 | 考えられる原因 | 次のステップ |
|---|---|---|
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 を使用してください<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: CC-BY-4.0 -->
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.
kubectl exec access to a worker pod in the target Dynamo deployment.recipes/<model>/<framework>/<mode>).ibstat, nvidia-smi, lsmod available in the worker pod image (missing tools are reported as skipped, not failures).dynamo-recipe-runner deploys a disagg or multi-node recipe.For diagnosing pods that are already crashing or unschedulable, use
dynamo-troubleshoot first.
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.
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.
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.
| 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"])
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"])
Each check returns ok / warn / fail / skipped with a one-line detail,
plus a rolled-up verdict on disagg transport readiness. Report:
skipped results for missing tools (ibstat, nvidia-smi, lsmod) are inconclusive, not a pass.| 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 |
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/interconnect-env-vars.md — NIXL/UCX/NCCL env var catalog and IB
capability checklist.scripts/check_interconnect.py for all read-only checks.原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。