用途
NeMo Evaluator SDK 用于对大型语言模型(LLM)进行企业级基准评测。它通过容器化、可复现的评测流程,在 100 多个基准测试和 18 个以上评测框架(harness)上评估模型,支持多后端执行(本地 Docker、Slurm HPC、Lepton 云)。
主要能力
- 覆盖 100+ 基准测试,来自 18+ 评测框架,包括 MMLU、HumanEval、GSM8K、安全评测和 VLM 任务。
- 支持多种执行后端:本地 Docker、Slurm HPC 集群、Lepton 云。
- 支持对 OpenAI 兼容 API 端点进行评测(如 vLLM、TRT-LLM、NIM)。
- 结果可导出到 MLflow、Weights & Biases 或本地 JSON。
- 提供 CLI 和 Python API 两种使用方式。
支持的评测框架与任务
- lm-evaluation-harness:60+ 任务,涵盖 MMLU、GSM8K、HellaSwag、ARC。
- simple-evals:20+ 任务,涵盖 GPQA、MATH、AIME。
- bigcode-evaluation-harness:25+ 任务,涵盖 HumanEval、MBPP、MultiPL-E。
- safety-harness:3 个任务,Aegis、WildGuard。
- garak:1 个任务,安全探测。
- vlmevalkit:6+ 任务,OCRBench、ChartQA、MMMU。
- bfcl:6 个任务,函数调用 v2/v3。
- mtbench:2 个任务,多轮对话。
- livecodebench:10+ 任务,实时编码评测。
- helm:15 个任务,医疗领域。
- nemo-skills:8 个任务,数学、科学、智能体。
使用方式
安装
pip install nemo-evaluator-launcher
设置 API 密钥:
export NGC_API_KEY=nvapi-your-key-here
最小配置示例
defaults:
- execution: local
- deployment: none
- _self_
execution:
output_dir: ./results
target:
api_endpoint:
model_id: meta/llama-3.1-8b-instruct
url: https://integrate.api.nvidia.com/v1/chat/completions
api_key_name: NGC_API_KEY
evaluation:
tasks:
- name: ifeval
运行评测
nemo-evaluator-launcher run --config-dir . --config-name config
查看可用任务
nemo-evaluator-launcher ls tasks
常用工作流
- 在标准基准上评测模型:配置 API 端点、选择基准(如 ifeval、gpqa_diamond、gsm8k_cot_instruct、humaneval)、运行评测、查看结果。
- 在 Slurm HPC 集群上运行评测:配置 Slurm 设置、设置模型部署、启动评测、监控任务状态。
- 比较多个模型:创建基础配置,通过覆盖参数运行不同模型的评测,导出并比较结果。
- 安全与视觉语言评测:配置安全任务(aegis、wildguard、garak)和 VLM 任务(ocrbench、chartqa、mmmu)。
CLI 命令
- run:使用配置执行评测
- status <id>:检查任务状态
- info <id>:查看详细任务信息
- ls tasks:列出可用基准
- ls runs:列出所有调用
- export <id>:导出结果(mlflow/wandb/local)
- kill <id>:终止运行中的任务
Python API 示例
from nemo_evaluator.core.evaluate import evaluate
from nemo_evaluator.api.api_dataclasses import (
EvaluationConfig,
EvaluationTarget,
ApiEndpoint,
EndpointType,
ConfigParams
)
eval_config = EvaluationConfig(
type="mmlu_pro",
output_dir="./results",
params=ConfigParams(
limit_samples=10,
temperature=0.0,
max_new_tokens=1024,
parallelism=4
)
)
target_config = EvaluationTarget(
api_endpoint=ApiEndpoint(
model_id="meta/llama-3.1-8b-instruct",
url="https://integrate.api.nvidia.com/v1/chat/completions",
type=EndpointType.CHAT,
api_key="nvapi-your-key-here"
)
)
result = evaluate(eval_cfg=eval_config, target_cfg=target_config)
适用场景
- 需要在一个平台上使用 100+ 基准测试和 18+ 评测框架。
- 在 Slurm HPC 集群或云上运行评测。
- 需要可复现的容器化评测。
- 对 OpenAI 兼容 API(vLLM、TRT-LLM、NIM)进行评测。
- 需要企业级评测并导出结果(MLflow、W&B)。
限制与要求
- Python 版本:3.10-3.13。
- 本地执行需要 Docker。
- 需要 NGC API Key 以拉取容器和使用 NVIDIA Build。
- 部分基准(GPQA、MMLU)需要 HF_TOKEN。
- 若需要更简单的本地快速评测,可考虑 lm-evaluation-harness;仅代码基准可考虑 bigcode-evaluation-harness;更广泛的评测(公平性、效率)可考虑 HELM;高度专业领域评测可考虑自定义脚本。
常见问题
- 容器拉取失败:确保配置 NGC 凭据,执行
docker login nvcr.io -u '$oauthtoken' -p $NGC_API_KEY。 - 任务需要环境变量:部分任务需要 HF_TOKEN 或 JUDGE_API_KEY,可在配置中通过 env_vars 映射。
- 评测超时:增加并行度或减少样本数。
- Slurm 任务未启动:检查 Slurm 账户和分区设置。
- 结果与预期不同:核对配置是否与报告设置一致(如 temperature、num_fewshot)。
资源
- GitHub:https://github.com/NVIDIA-NeMo/Evaluator
- NGC 容器:nvcr.io/nvidia/eval-factory/
- NVIDIA Build:https://build.nvidia.com
- 文档:https://github.com/NVIDIA-NeMo/Evaluator/tree/main/docs