nvidia/ad-conf-check
> Check whether AutoDeploy YAML configs were actually applied by analyzing server logs and optionally graph dumps (AD_DUMP_GRAPHS_DIR). Use when the user wants to verify config application, debug config issues, or check if AutoDeploy transforms (piecewise CUDA graph, multi-stream, sharding, fusion, etc.) were applied or fell back. Triggers "config not working", "check if piecewise is enabled", "check log for config", or any request to compare AD YAML settings against runtime behavior.
npx skills add https://github.com/NVIDIA/TensorRT-LLM --skill ad-conf-check
Verify that AutoDeploy YAML configs were applied at runtime by cross-referencing with server logs and optionally graph dumps.
default.yaml and source code for up-to-date log patterns (the bundled reference doc may be stale).AD_DUMP_GRAPHS_DIR output directory containing per-transform graph snapshots (NNN_stage_transform.txt). Provides additional evidence for resolving UNKNOWN results..nsys-rep or .sqlite) from the server run. Useful for verifying executor-level configs that produce no log output (e.g., enable_chunked_prefill, multi-stream concurrency, CUDA graph capture/replay).Total configs checked: 29 | APPLIED: 23 | UNKNOWN: 4 | ...).JSON file with two top-level keys:
results — array of objects, each with config, value, status, evidence.summary — object with total (int) and counts (object mapping status to count, only non-zero statuses included).default.yaml and source code for the latest log patterns.AD_DUMP_GRAPHS_DIR output directory containing per-transform graph snapshots. Files are named NNN_stage_transform.txt and show the graph AFTER each transform. When provided, graph analysis provides additional evidence (e.g., verifying sharded weights, collective ops, fused ops). This is especially useful for resolving UNKNOWN results..nsys-rep or .sqlite) from the server run. Useful for verifying executor-level configs that produce no log output (e.g., enable_chunked_prefill, multi-stream concurrency, CUDA graph capture/replay).<trtllm_src>/examples/auto_deploy/model_registry/configs/*.yaml<trtllm_src>/tensorrt_llm/_torch/auto_deploy/config/default.yamlLaunch the ad-conf-check-update agent with:
<trtllm_src> — the TensorRT-LLM source directory from step 1<skill_dir> — the directory containing this SKILL.md fileThe agent compares <trtllm_src>/tensorrt_llm/_torch/auto_deploy/config/default.yaml and the AutoDeploy source code against <skill_dir>/references/config_log_patterns.md. If any configs were added, removed, renamed, or if log patterns have changed, the agent updates the reference doc in-place and reports what changed.
After the agent completes:
<skill_dir> is the directory containing this SKILL.md file):Input: The TensorRT-LLM default.yaml as the base, followed by the user's YAML config path(s) from step 1. Always include default.yaml first so that user configs override the defaults.
python3 <skill_dir>/scripts/parse_config.py <trtllm_src>/tensorrt_llm/_torch/auto_deploy/config/default.yaml <yaml_path1> [<yaml_path2> ...]
This deep-merges the YAML files left-to-right (later files override earlier ones) and flattens nested keys into dotted notation (e.g., kv_cache_config.enable_block_reuse). By including default.yaml first, every known config key appears in the output even if the user only overrode a subset.
Output: Flat JSON with all config {key, value} pairs. Example:
{
"yaml_files": ["default.yaml", "user_override.yaml"],
"total_configs": 15,
"configs": [
{"key": "compile_backend", "value": "torch-cudagraph"},
{"key": "kv_cache_config.free_gpu_memory_fraction", "value": "0.85"},
{"key": "transforms.compile_model.piecewise_enabled", "value": "True"}
]
}
Input: Config list from step 3, server log path from step 1, and references/config_log_patterns.md.
Split the configs from step 3 into 3 groups by section and launch 3 agents in parallel, each checking its group:
| Agent | Config group | Keys starting with | Reference section |
|-------|-------------|-------------------|-------------------|
| Agent 1 | Top-level configs | runtime, compile_backend, attn_backend, max_seq_len, max_num_tokens, max_batch_size, cuda_graph_batch_sizes, enable_chunked_prefill, model_factory, dtype, etc. | "Top-Level Config Parameters" |
| Agent 2 | KV cache configs | kv_cache_config.* | "kv_cache_config Parameters" |
| Agent 3 | Transform configs | transforms.* (or any key matching a transform name like compile_model, detect_sharding, multi_stream_*, fuse_*, gather_logits_*, etc.) | "Transform Parameters" |
Each agent receives:
{key, value} pairs[log], [graph], [nsys])Each agent, for every config in its group:
[stage=..., transform=<name>] and check the [SUMMARY] line (matches=N → APPLIED if N>0, SKIPPED if N=0).key=value or the key name near the value.enabled: false: mark as DISABLED without log search.enabled: falseOutput: Each agent returns a list of {config, value, status, evidence} entries for its group. Merge all 3 lists into the combined result.
Input: List of UNKNOWN config entries from step 4 output, the server log file, and references/config_log_patterns.md.
[stage=..., transform=<name>][APPLY] prefixed lines and [SUMMARY] lines for that transform"Falling back", "Skipping", or "failed" near the transform logsNNN_stage_transform.txt — each contains the FX graph AFTER that transform. Compare before/after by reading consecutive files.[nsys] in the reference doc (e.g., enable_chunked_prefill, enable_block_reuse, multi-stream concurrency, CUDA graph capture/replay)Output: For each investigated UNKNOWN entry, either additional evidence found (with status upgrade) or confirmation that the config is genuinely unlogged.
ALWAYS show the full detailed table. Do NOT summarize or condense. Present one row per config with columns:
compile_backend = torch-cudagraph)After the table, show the summary line (e.g., Total configs checked: 29 | APPLIED: 23 | ...) and any FAILED/WARNING details. Include any additional findings from the Double Check step (step 5).
If the user requested output files, write:
results array and summary object[stage=<stage>, transform=<name>] [SUMMARY] matches=N | time: ...dual-mode enabled -> prepared with N submodules -> captured graphs"model is not a GraphModule...Falling back to eager execution""Using allreduce strategy: SYMM_MEM", "Applied N TP shards from config"enable_chunked_prefill, enable_block_reuse) are consumed at executor/runtime level and produce no log output. UNKNOWN means "no log evidence found", not "config was not applied".torch_dtype is deprecated in favor of dtype, and cuda_graph_batch_sizes (top-level) is replaced by cuda_graph_config.batch_sizes. Look for deprecation warning messages in the log. Old keys may be silently ignored.max_seq_len may be configured as 262144 but adjusted down to 16384 at runtime due to memory constraints. Report this as APPLIED with a WARNING annotation.ad-conf-check-update agent to sync references/config_log_patterns.md with the latest TensorRT-LLM source before any config checking begins. If the agent reports changes, review its summary to understand what shifted.Take nvidia/ad-conf-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.