HiDeepSeekDev
空闲特惠
LM-EVAL · API 实战HiDeepSeek / Open Infra

$ lm-eval run --model local-chat-completions

TASK → PROMPT → SCOREOPEN SOURCE
教程指南LM Evaluation HarnessBenchmarkDeepSeek API

DeepSeek 接入 LM Evaluation Harness:从 API 到首个可复现结果

H
HiDeepSeek 编辑部
阅读大约 10 分钟

LM Evaluation Harness(常简称 lm-eval)把任务加载、Prompt 构造、模型调用、答案提取和指标聚合放进同一套流程。DeepSeek API 提供 OpenAI 兼容格式,因此可以通过 Harness 的 Chat Completions 后端接入,不需要修改框架源码。

一、安装 API 后端

python -m venv .venv
source .venv/bin/activate
pip install "lm_eval[api]"

较新的 Harness CLI 使用 runlsvalidate 子命令。先列出本地版本实际提供的任务,不要从旧文章复制可能已改名的 task ID:

lm-eval ls tasks
lm-eval run -h

二、安全设置密钥

Harness 的 OpenAI 兼容后端读取 OPENAI_API_KEY。可以在当前 Shell 中把 DeepSeek 密钥映射给它,但不要把真实密钥写入命令历史、配置文件或结果目录。

export OPENAI_API_KEY="$DEEPSEEK_API_KEY"

三、先跑 10 条烟雾测试

lm-eval run --model local-chat-completions --model_args model=deepseek-v4-flash,base_url=https://api.deepseek.com/chat/completions,num_concurrent=1,max_retries=3 --tasks gsm8k --apply_chat_template --limit 10 --log_samples --output_path ./results/deepseek-smoke

--limit 10 只适合检查链路、Prompt 和答案提取,不能当作正式分数。确认样本输出正常后,移除 --limit 再运行完整评测。首次运行建议保持低并发,观察限流、失败重试、输出长度和费用后再逐步提高。

四、理解 Chat Completions 的限制

官方 Harness 文档明确说明:Chat Completions 后端只支持生成式的 generate_until 请求,不提供 Prompt log-probability,因此不能直接运行依赖 loglikelihood 的多项选择类任务。看到 MMLU 等任务报错时,不要把它误判为 DeepSeek 模型故障。

  • 运行前用 lm-eval ls tasks 和任务配置确认输出类型。
  • 使用 --apply_chat_template,确保输入按聊天消息组织。
  • 使用 --log_samples 保存模型输入、原始输出和后处理结果。
  • API 评测不要添加 --device;计算实际发生在远端服务。

五、把结果变成可复现实验

每次运行至少记录 Harness 版本或 Git commit、任务名和版本、模型名、模型快照、系统指令、few-shot 数量、生成参数、随机种子、运行时间以及失败样本。DeepSeek 的别名可能指向更新后的模型版本;若需要长期对比,应把官方当日展示的底层版本一并写入实验清单。

Harness 统一了评测流程,但不会自动保证比较公平。能复现 Prompt、模型版本和答案提取规则,分数才有解释价值。

参考资料

本文按下列官方资料核验。模型能力、价格与接口可能调整,请以最新文档为准。