SuperAPI AI 工具集

nemo-evaluator-sdk

测试与质量

查看项目

更新于 10-15 18:31

技能介绍

用途

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

常用工作流

  1. 在标准基准上评测模型:配置 API 端点、选择基准(如 ifeval、gpqa_diamond、gsm8k_cot_instruct、humaneval)、运行评测、查看结果。
  2. 在 Slurm HPC 集群上运行评测:配置 Slurm 设置、设置模型部署、启动评测、监控任务状态。
  3. 比较多个模型:创建基础配置,通过覆盖参数运行不同模型的评测,导出并比较结果。
  4. 安全与视觉语言评测:配置安全任务(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