Evaluator
NVIDIA开源的统一LLM评测框架,支持17种基准和分布式并行评测
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA开源的统一LLM评测框架,支持17种基准和分布式并行评测
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有过这种经历:一个团队花了几十万美元训练出来的大模型,在内部测试时感觉对答如流,一发布却发现连简单的鸡兔同笼问题都能算错。这就是 AI 评测缺失的代价——没有系统化的评测基准,你永远不知道自己的模型到底在什么水平。
NeMo Evaluator 就是来解决这个问题的。它是 NVIDIA 开源的 LLM 评测框架,最初支撑了 NVIDIA 内部所有模型的基准测试,如今已完全开源,面向所有 AI 研究者和工程师。
市面上已有 lm-evaluation-harness、BigBench 等开源评测工具,但它们各有局限:配置复杂、扩展性差、难以追踪跨版本表现、缺乏企业级特性(如请求拦截、日志审计、分布式评测)。NVIDIA 在内部使用 NeMo 框架训练 Nemotron 系列大模型时,发现需要一个统一的、可扩展的、可复现的评测引擎来支撑从模型训练到发布的全流程质量把控。NeMo Evaluator 因此诞生,并在 2025 年正式开源。
从定位上看,NeMo Evaluator 介于"纯学术评测工具"和"企业级 MLOps 平台"之间。它既不像 lm-evaluation-harness 那样轻量到只能跑标准 benchmark,也不像商业平台那样封闭黑盒。核心设计哲学是:评测流程的所有权归框架本身,所有评分和聚合都发生在本地,不会被委托给外部服务器。
NeMo Evaluator 预置了 17 个常用评测基准,按评测类型分类:
选择题类:mmlu(大规模多任务语言理解)、mmlu_pro(高难度版)、gpqa(研究生水平问答)。这类基准测试模型在给定选项中选出正确答案,考察语言理解和推理能力。
数学推理类:gsm8k(小学数学应用题)、math500(高中数学竞赛题)、mgsm(多语言数学)。其中 mgsm 覆盖 8 种语言,特别适合评测模型的跨语言数学能力。
代码能力类:humaneval(Python 代码补全),通过 Docker 沙箱实际执行代码并验证输出,是评估模型编程能力的黄金标准。
Agent 能力类:pinchbench(Agentic 评测,需要模型在沙箱中完成多步骤任务)、terminal-bench-hard(终端操作任务)、nmp_harbor(通过 Harbor 测试框架评测 Agent 行为)。
安全评测:xstest(有害内容检测),专门评测模型的安全过滤能力。
如果内置基准不够用,NeMo Evaluator 支持通过 URI 协议直接接入外部评测工具:
lm-eval:// — 接入 lm-evaluation-harness 的所有 benchmarkskills:// — 接入 NVIDIA NeMo Skills 的评测任务集vlmevalkit:// — 接入视觉-语言模型评测工具gym:// — 接入 Gym 强化学习环境harbor:// — 接入 Agent 行为评测框架container:// — 接入任意 Docker 容器中的评测任务这种 URI 抽象层设计非常巧妙:用户无需修改任何代码,只需在配置文件中指定不同协议,即可切换不同的评测后端,极大提升了框架的可扩展性。
传统评测工具依赖外部中间件做请求拦截、日志记录和流量控制。NeMo Evaluator 内置了一个本地拦截代理(Interceptor Proxy),不需要任何外部服务即可实现:
max_turns 控制最大交互轮次对于企业用户而言,这个内置代理解决了数据合规问题——所有流量都在本地处理,不需要将 API 请求发往第三方监控服务。
当评测数据量很大(如完整的 MMLU 5000 题)时,单机评测可能耗时数小时。NeMo Evaluator 支持分片评测(Sharded Evaluation),通过设置 NEL_SHARD_IDX 和 NEL_TOTAL_SHARDS 环境变量,将评测任务分配到多个容器并行执行,最终自动合并结果。docker-compose.yaml 中预置了 4 个分片容器配置示例,Kubernetes 部署方案也同样支持分片。
对于 humaneval 等需要执行代码的评测任务,NeMo Evaluator 使用 Docker 沙箱进行安全隔离——模型生成的代码在独立容器中运行,不会影响宿主机。SLURM 集群环境则使用 SLURM 作业作为沙箱后端。
从源码结构来看,NeMo Evaluator 采用高度模块化的插件架构:
src/nemo_evaluator/
environments/ # 评测环境实现(byob, gym, harbor, lm_eval 等)
solvers/ # 求解器实现(chat, sandbox, nat 等)
benchmarks/ # 基准定义
scoring/ # 评分原语(fuzzy_match, numeric_match, judge 等)
metrics/ # 聚合指标(置信区间、pass@k 等)
sandbox/ # 沙箱生命周期管理
serving/ # FastAPI HTTP 服务(nel serve)
cli/ # Click CLI(nel eval run, nel compare, nel gate)
observability/ # 可观测性(OpenTelemetry 集成)
reports/ # 报告生成(Markdown/JSON 格式)
核心依赖栈:Pydantic(数据验证)、FastAPI(HTTP 服务)、Click(命令行)、aiohttp(异步 HTTP 客户端)、NumPy/SciPy(统计分析)、Jinja2(报告模板)、Boto3(S3 结果存储)。
方式一:pip 安装(最简)
pip install -e ".[all]" # 全量依赖
pip install -e ".[scoring]" # 仅核心 + 符号数学
pip install -e ".[harbor]" # + Agent 评测
核心仅依赖 12 个包,安装轻量。
方式二:Docker 一键启动
docker build -f docker/Dockerfile.base -t nemo-evaluator .
docker run -e NVIDIA_API_KEY=$NVIDIA_API_KEY nemo-evaluator nel eval run --bench mmlu --model-url <your-endpoint> --model-id <model>
docker-compose.yaml 提供了三种预设配置:eval-local(本地评测)、eval-remote(连接远程服务评测)、serve(作为 HTTP 服务供外部调用)。
方式三:Kubernetes / SLURM
deploy/k8s/ 目录提供了 Kubernetes Manifest,deploy/slurm_distributed.sh 支持 HPC 集群上的分布式评测。
评测流程极为简洁:一条 CLI 命令即可完成从评测到报告生成的全流程:
export NVIDIA_API_KEY="..."
nel eval run --bench mmlu --model-url https://integrate.api.nvidia.com/v1 --model-id nvidia/nemotron-3-super-120b-a12b --repeats 3 --max-problems 100
# 生成 Markdown 报告
nel eval report ./eval_results/ -f markdown -o report.md
也支持 YAML 配置文件,支持断点续评(--resume),评测结果可导出至 W&B(Weights & Biases)或 MLflow。
nel report 命令生成的静态 Markdown 报告或第三方平台(W&B/MLflow)。NeMo Evaluator 的开源填补了企业级 LLM 评测工具的开源空白。它代表了 AI 评测从"学术刷榜"向"工程化质量保障"的转变——不再只是跑几个标准数据集出分数,而是建立了从评测设计、执行、监控到报告的完整闭环。
从增长趋势看,随着越来越多企业训练自己的垂直领域大模型,对可复现、可扩展、可审计的评测工具需求急剧增长。NeMo Evaluator 的插件化架构和分布式支持,使其有潜力成为企业 AI 质量保障的事实标准。