NVIDIA NeMo Evaluator 智能体技能:对话式 LLM 评估
运行 LLM 评估不应该要求开发者手动编写冗长复杂的 YAML 文件。配置开销常常成为瓶颈。新的 nel-assistant 智能体技能(Agent Skill)支持用自然语言配置生产就绪的评估任务。
它基于 NVIDIA NeMo Evaluator 库构建,允许开发者在 Cursor 或任何其他偏好的智能体开发工具中,直接配置、运行和监控评估任务。整个过程通过与智能体交互完成,无需手动创建 YAML 文件或 shell 命令。
问题:配置开销
运行一次 LLM 评估意味着要做几十个相互关联的决策:
- 执行环境: 本地 Docker 还是 SLURM 集群?
- 部署方式: vLLM、SGLang、NVIDIA NIM、NVIDIA TensorRT-LLM,还是外部端点?需要多少节点?
- 模型参数: 温度(Temperature)设多少?上下文长度(Context Length)多大?是否使用推理令牌(Reasoning Tokens)?
- 基准测试: Tau2-Bench、MTEB、GSM8K、AIME、GPQA、LiveCodeBench、RULER,还是全都要?
- 结果导出: 本地文件、CSV、Weights & Biases,还是 MLflow?
每个选择又会衍生出子选项。使用 vLLM?需要配置张量并行(Tensor Parallelism)。运行推理模型?需要解析思维令牌。多节点 SLURM?需要设置 HAProxy 负载均衡。最终结果是,开发者需要处理复杂且容易出错、难以调试的 YAML 配置文件。
# 一个典型的评估配置 - 200多行,极易配置错误
execution:
backend: slurm
params:
account: ??? # 我的账户名是什么来着?
partition: ???
time_limit: "24:00:00"
deployment:
backend: vllm
params:
tensor_parallel_size: ??? # 2?4?8?
max_model_len: ??? # 模型卡片说... 32K?128K?
model:
sampling_params:
temperature: ??? # 是 0.6 还是 0.8?
top_p: ???
# ... 还有 150 多行 ...
这种配置负担将简单的评估任务变成了不必要的复杂工作。
解决方案:用于 LLM 评估的智能体技能
智能体技能(Agent Skills)已成为赋予智能体深度领域专业知识的标准方式。一个“技能”将指令、脚本和资源打包成可移植的文件夹,任何兼容的智能体都能发现并使用。
在编码助手领域,生态系统已经蓬勃发展,涵盖了从 Git 工作流到 API 集成的方方面面。nel-assistant 是一个智能体技能,它能将 Cursor、Claude Code、Codex 和其他智能体开发工具转变为评估专家。你不再需要手动编写 YAML,而是进行对话。该技能会研究模型卡片,找到最优的温度、top_p 值和上下文长度,并根据你特定的 GPU 设置确定最优的张量并行配置。
一次对话。零手动 YAML 调试。生产就绪的配置。
你:"使用 vLLM 在本地评估 NVIDIA Nemotron-3-Nano-30B-A3B 在标准基准测试上的表现,结果导出到 Weights & Biases。"
智能体:我来帮你设置。首先,让我检查你的环境...
✓ 检测到 NeMo Evaluator 26.01
我需要 5 个快速回答来构建你的配置:
1. 执行环境:本地(根据你的请求检测到)
2. 部署后端:vllm(确认)
3. 导出目标:wandb(确认)
4. 模型类型:聊天(chat)还是基础(base)?[chat]
5. 基准测试类别:标准(standard)(确认)
现在让我研究一下模型卡片...
✓ 找到:temperature=0.6, top_p=0.95, context=128K
✓ 针对你的 2x H100 设置,最优 TP=8
生成的配置:Nemotron-3-Nano-30B-A3B.yaml
准备运行!
工作原理:三个阶段
阶段 1:配置
该技能首先提出五个有针对性的问题来建立上下文:
- 执行环境: 本地还是 SLURM?
- 部署后端: vLLM、SGLang、NVIDIA NIM、NVIDIA TensorRT-LLM,还是外部端点?
- 导出目标: 无、MLflow 还是 Weights & Biases?
- 模型类型: 基础(Base)、聊天(Chat)还是推理(Reasoning)?
- 基准测试类别: 标准(Standard)、代码(Code)、数学(Math)、安全(Safety)还是多语言(Multilingual)?
根据这些答案,它会调用:
nel skills build-config \
--execution local \
--deployment vllm \
--model-type chat \
--benchmarks standard
这个命令将模块化的 YAML 模板深度合并成经过测试、符合模式规范的片段,这些片段组合起来就是结构有效的配置,并最大限度地减少了语法错误。有了这个技能,智能体永远不会生成自由格式的 YAML,从而消除了语法错误。
接下来,智能体会自动分析模型卡片并应用最优的配置参数。
给智能体一个 HuggingFace 模型句柄 NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 或检查点路径,它会使用网络搜索提取:
- 采样参数: 温度(Temperature)、top_p
- 硬件逻辑: 根据你的 GPU 数量确定最优的 TP/DP 设置
- 推理配置: 系统提示词、负载修改器(例如,为 o1 风格模型设置
enable_thinking) - 上下文长度: vLLM 的
--max-model-len最大模型长度
开发者不再需要翻阅模型卡片来寻找正确的设置。智能体读取模型详情并自动应用正确的参数。
没有这个技能,这通常意味着要在 Hugging Face、博客文章和文档之间来回跳转。这既耗时又打断注意力。有了这个技能,设置过程只需几秒钟。
阶段 2:验证与优化
该技能会识别 YAML 中剩余的 ??? 值:
- SLURM 详情: 账户名、分区名、时间限制
- 导出 URI: WandB 项目名、MLflow 跟踪 URI
- API 密钥: 用于部署的环境变量
你可以交互式地:
- 添加/移除任务: 浏览
nel ls tasks并精确选择你想要的 - 覆盖每项任务设置: “在 HumanEval 上使用 temperature=0,但在 MMLU 上用 0.7”
- 配置高级扩展: 对于 >120B 的模型,设置带 HAProxy 负载均衡的数据并行多节点
- 添加推理拦截器: 剥离
<think>令牌,缓存推理轨迹
阶段 3:运行与监控
智能体建议采用三阶段滚动执行:空运行(Dry run)、冒烟测试(Smoke test) 和完整运行(Full run)。
# 1. 空运行 - 验证而不实际执行
nel run --config nemotron-3-nano.yaml --dry-run
# 2. 冒烟测试 - 每个任务 10 个样本
nel run --config nemotron-3-nano.yaml \
-o ++evaluation.nemo_evaluator_config.config.params.limit_samples=10
# 3. 完整运行
nel run --config nemotron-3-nano.yaml
任务提交后,可以直接在 Cursor 中使用命令监控进度、详细指标和实时日志。你无需离开编码环境!
> 请检查评估进度。
# 智能体运行:nel status nemotron-3-nano-20260212-143022 && nel info ...
状态:运行中(RUNNING)
进度:3/8 任务完成
- ✓ mmlu: 65.2% 准确率(5 小时)
- ✓ hellaswag: 78.4% 准确率(2 小时)
- ✓ arc_challenge: 53.8% 准确率(1 小时)
- ⏳ truthfulqa_mc2: 45% 完成...
- ⏳ winogrande: 排队中
- ⏳ gsm8k: 排队中
- ⏳ humaneval: 排队中
- ⏳ mbpp: 排队中
技术细节
基于模板的生成
nel-assistant 不是从头生成 YAML,而是合并用于执行、部署、基准测试和导出的模块化模板。这种深度合并确保了结构有效性。
模型卡片提取流程
- Cursor 或你的智能体 IDE 通过网络搜索获取 HuggingFace 模型卡片。
- 通过正则表达式提取参数和聊天模板。
- 硬件逻辑根据模型大小和可用 GPU 内存计算最优的 TP/DP。
- 推理检测检查是否包含“reasoning”或“chain-of-thought”等关键词。
- 值被直接注入到配置 YAML 中。
通用 LLM 会幻觉出 YAML 语法。它们会混合不兼容的后端。它们会编造不存在的标志。
nel skills build-config 不是从头生成 YAML,而是合并模块化模板:
templates/
├── execution/
│ ├── local.yaml # Docker 执行
│ └── slurm.yaml # SLURM 执行
├── deployment/
│ ├── vllm.yaml # vLLM 后端
│ ├── sglang.yaml # SGLang 后端
│ └── nim.yaml # NVIDIA NIM
├── benchmarks/
│ ├── reasoning.yaml # GPQA-D, HellaSwag, SciCode, MATH, AIME
│ └── agentic.yaml # TerminalBench, SWE-Bench
│ ├── longcontext.yaml # AA-LCR, RULER
│ ├── instruction.yaml # IFBench, ArenaHard
│ ├── multi-lingual.yaml # MMLU-ProX, WMT24++
└── export/
├── wandb.yaml # W&B 集成
└── mlflow.yaml # MLflow 集成
深度合并 = 结构有效性。 当你组合的是预先验证过的片段时,就不可能产生无效的 YAML。
nel-assistant 使用 build-config 来合并经过测试的模板。每个配置在构造时就是结构有效的。智能体像类型安全的编译器一样组合 YAML,而不是像文本生成器。
配置不应成为瓶颈
LLM 评估已经涉及重要的决策——选择基准测试、解释结果、比较模型。配置应该支持这个过程,而不是拖慢它。
nel-assistant 技能让它变得无形。你用自然语言描述你想要什么,智能体处理剩下的一切:研究模型卡片、生成配置、验证设置、分阶段执行、监控进度。
不再有 200 行的 YAML 文件。不再需要翻阅文档。不再有语法错误。
只需要说:“在这个模型上运行这些基准测试。”
资源
- GitHub: NVIDIA NeMo Evaluator
- 教程: nel-assistant
- 智能体技能规范: agentskills.io
nel-assistant 技能是开源的,随 NVIDIA NeMo Evaluator 26.01+ 版本提供。 欢迎在 GitHub 上贡献!
觉得有用?分享给更多人