lm-evaluation-harness 新增华为昇腾 NPU 与 MindSpeed-LLM 后端支持
在 4 张 Ascend 910C 上运行 Qwen3-8B 评估,acc_norm 达到 74.95%,与社区结果偏差仅 0.04%。
1. 背景
lm-evaluation-harness 是 EleutherAI 维护的开源大模型评估框架,也是 Hugging Face Open LLM Leaderboard 的后端评测引擎。它支持 200+ 学术基准测试,被数百篇论文引用。
然而,该框架此前对华为昇腾 NPU 的原生支持较为有限——虽然有基础的设备检测和多后端架构,但缺乏完整的 NPU 评估方案,特别是针对使用 Megatron 格式检查点的大模型。
本次工作新增了 MindSpeed-LLM 模型后端,完整支持在 Ascend NPU 上评估 Megatron-LM / MindSpeed-LLM 格式的大模型。
源码地址:github.com/jianzhnie/lm-evaluation-harness
核心价值:
- 零侵入 NPU 适配:通过
AscendNPUPatch类在运行时自动完成 CUDA→NPU 透明适配,无需修改 Megatron 源码。 - 与社区生态完全对齐:与
megatron_lm后端共享核心评估逻辑,结果与社区 lm-eval 偏差仅 0.04%。
2. 核心特性
2.1 开箱即用的 NPU 评估
- 自动适配:
AscendNPUPatch自动处理 CUDA→NPU API 映射、nccl→hccl 重定向。 - 无需修改 Megatron:所有补丁在运行时透明应用,无需修改 Megatron 源码。
- 支持 Hugging Face Tokenizer:
PretrainedFromHF→HuggingFaceTokenizer自动回退。
2.2 多种分布式策略
| 模式 | 参数 | 适用场景 |
|---|---|---|
| 单卡 | devices=1 | 小模型快速验证 |
| 张量并行(TP) | devices=N, tensor_model_parallel_size=N | 大模型层内切分 |
| 流水线并行(PP) | devices=TP×PP | 超大模型跨层切分 |
| 数据并行(DP) | devices=N, TP=1, PP=1 | 多卡并行提速 |
2.3 与社区生态完全对齐
- 与
megatron_lm后端共享相同的评估核心逻辑。 - 支持
loglikelihood、generate_until、loglikelihood_rolling三种请求类型。 - 兼容所有 lm-eval 标准任务(HellaSwag、MMLU、ARC 等)。
- 结果格式与 Hugging Face Leaderboard 一致。
3. 快速上手
3.1 环境要求
| 组件 | 版本 |
|---|---|
| CANN | 8.3.RC2 |
| torch | 2.7.1 |
| torch_npu | 2.7.1 |
| MindSpeed-LLM | 2.3.0 |
| Python | 3.10+ |
3.2 完整评估命令
#!/bin/bash
source set_env.sh
export MEGATRON_PATH=/path/to/MindSpeed-LLM
export CKPT_PATH=/path/to/mcore_tp4_pp1
export TOKENIZER_MODEL=/path/to/Qwen3-8B
torchrun --nproc-per-node=4 -m lm_eval \
--model mindspeed_lm \
--model_args "load=${CKPT_PATH},\
tokenizer_type=PretrainedFromHF,\
tokenizer_name_or_path=${TOKENIZER_MODEL},\
devices=4,tensor_model_parallel_size=4,\
spec=mindspeed_llm.tasks.models.spec.qwen3_spec layer_spec,\
extra_args=--qk-layernorm --no-rope-fusion --no-persist-layer-norm \
--use-rotary-position-embeddings --swiglu --disable-bias-linear \
--group-query-attention --num-query-groups 8 --kv-channels 128 \
--normalization RMSNorm --position-embedding-type rope --norm-epsilon 1e-6 \
--transformer-impl local --ffn-hidden-size 12288 \
--make-vocab-size-divisible-by 1" \
--tasks hellaswag \
--batch_size 8 \
--output_path results/ \
--log_samples3.3 评估其他模型
# DeepSeek-V2(MoE,需要 EP)
torchrun --nproc-per-node=8 -m lm_eval \
--model mindspeed_lm \
--model_args "...,devices=8,expert_model_parallel_size=8,\
spec=mindspeed_llm.tasks.models.spec.deepseek_spec layer_spec,..." \
--tasks mmlu --batch_size 8
# Qwen2-MoE
torchrun --nproc-per-node=8 -m lm_eval \
--model mindspeed_lm \
--model_args "...,devices=8,expert_model_parallel_size=8,\
spec=mindspeed_llm.tasks.models.spec.qwen2_moe_spec layer_spec,..." \
--tasks hellaswag --batch_size 84. 实测结果
4.1 Qwen3-8B HellaSwag
硬件:4 × Ascend 910C,TP=4,batch_size=8
| 指标 | 结果 | 社区对照 | 偏差 |
|---|---|---|---|
| acc | 0.5709 | — | — |
| acc_norm | 0.7495 | 0.7491 | +0.04% |
| 样本数 | 40,168 | 40,168 | — |
| 评估时间 | ~74 分钟 | — | — |
与社区 lm-evaluation-harness 结果偏差仅 0.04%,验证了 NPU 推理精度的可靠性。
5. 技术架构
torchrun -m lm_eval
└── MindSpeedLMEval
├── AscendNPUPatch.apply() # CUDA→NPU 自动适配
│ ├── torch.cuda → torch.npu
│ ├── init_process_group (nccl→hccl)
│ └── 默认生成器初始化
├── Tokenizer 回退
├── load_args_from_checkpoint 补丁
└── GPTModel + GQA 配置覆盖核心模块 AscendNPUPatch 将所有 NPU 适配逻辑封装在约 100 行代码中,运行时透明应用,不影响 CUDA 路径。
6. 关键技术创新
6.1 零侵入 NPU 适配
通过 Monkey-Patch 实现 torch.cuda.* → torch.npu.* 的透明重定向,无需修改 Megatron 数十万行源码。
6.2 Tokenizer 兼容层
自动将 MindSpeed-LLM 的 PretrainedFromHF tokenizer 回退为 Megatron 原生 HuggingFaceTokenizer,无缝衔接 Hugging Face 生态。
6.3 GQA 自动修复
检测 Megatron 检查点中缺失的 num_query_groups 配置,自动从命令行参数注入到 TransformerConfig。
6.4 词汇量对齐
自动从 Hugging Face config.json 读取 vocab_size,修复 Tokenizer 与 Megatron 检查点之间的词汇量不匹配。
7. 贡献指南
欢迎在 GitHub 上提交 Issue 和 PR。
git clone https://github.com/jianzhnie/lm-evaluation-harness.git
cd lm-evaluation-harness
pip install -e ".[hf]"总结
本文介绍了为 lm-evaluation-harness 新增的 MindSpeed-LLM 模型后端,该后端可在昇腾 NPU 上零侵入地评估 Megatron-LM / MindSpeed-LLM 格式的大模型。实测 Qwen3-8B 在 HellaSwag 上的 acc_norm 与社区结果仅偏差 0.04%,验证了方案的正确性与 NPU 推理精度。
致谢
- EleutherAI — 优秀的评估框架
- 华为昇腾 — Ascend NPU 硬件平台
- MindSpeed-LLM 团队 — Megatron-LM 昇腾适配