nvidia/compare-results
Establish baseline-vs-candidate evaluation plans, delegate missing evaluations, compare validated results, and decide quantization feasibility. Use when the user asks to compare baseline vs quantized runs, explain an accuracy drop/regression, verify whether a quantized checkpoint is acceptable, or compare NEL/MLflow evaluation outputs. Do NOT use for generic single-model evaluation without comparison intent (use evaluation), live NEL status/debugging (use launching-evals), or generic MLflow browsing without a comparison goal (use accessing-mlflow).
npx skills add https://github.com/NVIDIA/Model-Optimizer --skill compare-results
Use this to plan and complete a baseline-vs-candidate comparison. The baseline
is the reference checkpoint, and the candidate is the checkpoint whose accuracy
change is being measured, typically a further quantized version of the baseline.
baseline from the PTQ source model/checkpoint in the workspace or config used
to create the candidate. If it cannot be inferred, ask the user for the
baseline checkpoint or an existing baseline invocation/run path.
evaluation skill to create, run, and verify it. The companion evaluation
config should match benchmark versions, task configs, serving args, token
limits, dataset setup, credentials, cluster, and container as closely as
possible; change only the model/checkpoint and checkpoint-specific serving or
quantization flags.
logs. If the user provides MLflow runs or invocation IDs, use the
accessing-mlflow skill to fetch configs and artifacts.
before comparing scores. If not, validate logs, server health,
judge/code-execution status, sample accounting, and reasoning parsing before
computing deltas.
.agents/skills/evaluation/recipes/tasks/<task>.md Score Extraction
section.
.agents/skills/evaluation/references/run-validation.mdExternal Baseline Sanity Check. Record each source URL, protocol
difference, and task status before applying the candidate-delta gate. A
failed baseline blocks a success verdict; correct and rerun it first. If no
credible comparable reference exists, label the baseline externally
unverified rather than claiming the check passed, then continue using the
validated measured baseline.
or repeated runs.
verdicts before interpreting the delta as model quality. If the user did not
provide an acceptance threshold, report feasibility as inconclusive instead
of inventing one.
Before treating a baseline-vs-quantized delta as a model quality result, verify
the validated runs are comparable:
fragment match.
stop strings, chat-template kwargs, reasoning mode/budget, and task-specific
overrides.
consistently between runs.
split.
endpoint class, prompt, and scoring config.
<1pp vs BF16 gate requires a truefull-precision (BF16) baseline. Many models ship *natively quantized* (e.g.
INT4 W4A16 or block-wise FP8) with no BF16 release — a quant-to-quant
comparison against the released precision (e.g. INT4 vs NVFP4, as for
Kimi-K2.6) is still a valid result; just compare like-for-like, **state which
precision the baseline is**, and apply the gate relative to that baseline
rather than to an assumed BF16.
For SciCode, keep num_repeats: 1 to limit sandbox workload. If variance is a
concern, run multiple independent matched baseline/candidate pairs instead of
increasing repeats within one run.
If any item differs, either rerun with matched settings or label the result as
not an apples-to-apples quantization comparison.
These checks compare the baseline and candidate to each other. The external
baseline check in evaluation/references/run-validation.md separately tests
whether the baseline's absolute score is credible; both guards must be reported.
Include:
available.
percentage-point difference, and sanity status (verified, failed, or
externally unverified).
reasoning handling, judge/simulator setup, and score field.
Never report acceptable when external baseline sanity failed. An externally
unverified baseline does not block acceptable; apply the candidate-delta
gate and report the missing external corroboration.
Take nvidia/compare-results 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.