Skip to content

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 TokenizerPretrainedFromHFHuggingFaceTokenizer 自动回退。

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 后端共享相同的评估核心逻辑。
  • 支持 loglikelihoodgenerate_untilloglikelihood_rolling 三种请求类型。
  • 兼容所有 lm-eval 标准任务(HellaSwag、MMLU、ARC 等)。
  • 结果格式与 Hugging Face Leaderboard 一致。

3. 快速上手

3.1 环境要求

组件版本
CANN8.3.RC2
torch2.7.1
torch_npu2.7.1
MindSpeed-LLM2.3.0
Python3.10+

3.2 完整评估命令

bash
#!/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_samples

3.3 评估其他模型

bash
# 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 8

4. 实测结果

4.1 Qwen3-8B HellaSwag

硬件:4 × Ascend 910C,TP=4,batch_size=8

指标结果社区对照偏差
acc0.5709
acc_norm0.74950.7491+0.04%
样本数40,16840,168
评估时间~74 分钟

与社区 lm-evaluation-harness 结果偏差仅 0.04%,验证了 NPU 推理精度的可靠性。

5. 技术架构

shell
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。

bash
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 昇腾适配

Maintained by Robin