本文档记录 gongjy/MiniMind2 轻量级中文大语言模型在昇腾 NPU(Ascend 910B3)上的迁移适配、精度评测与性能验证结果。
MiniMind2 是基于 LLaMA 架构的极轻量中文因果语言模型(104M 参数),支持文本续写和对话生成。相比完整 LLaMA(7B),MiniMind2 参数量仅 ~1/70,适合资源受限的边缘设备和学习研究场景。
适配说明:因果语言模型(Causal LM)的自回归生成特性使完整精度比较困难,本评测通过比较 最后一个 token 的 logits(即 next-token 预测)验证 NPU 计算精度。
相关获取地址:
gongjy/MiniMind2| 组件 | 版本 |
|---|---|
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
transformers | 5.8.1 |
CANN | 8.5.1 |
8 × Ascend 910B3torch_dtype=torch.float16)conda create -n MiniMind2 python=3.11 -y
conda activate MiniMind2
pip install torch==2.8.0 torch_npu==2.8.0.post4 \
-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers numpy \
-i https://pypi.tuna.tsinghua.edu.cn/simplepython inference.py --prompt "你好,请介绍一下你自己。" --device npufrom inference import MiniMind
mm = MiniMind(model_path="./MiniMind2", device="npu")
response = mm.generate("你好,请介绍一下你自己。")python inference.py --prompt "你好" --device npu预期输出:模型续写的中文文本,无运行时错误。
测试条件:3 条中文 prompt,比较 last-token logits 前向传播时间。
| 指标 | 数值 |
|---|---|
| NPU 加速 | 3.7 × |
104M 参数的 LLaMA 模型在 NPU 上获得 3.7× 加速。FP16 推理减少内存占用。
因果语言模型的精度评测采用 last-token logits 比较:输入 prompt 后,提取最后一个 token 位置的词汇表 logits(形状 (1, vocab_size)),比较 CPU(FP32)与 NPU(FP16)输出的余弦相似度。不比较完整生成文本(因自回归过程中温度采样和 argmax 的随机性)。
| 指标 | 数值 | 说明 |
|---|---|---|
| 平均余弦相似度 | 0.999998 | 接近完美 |
| 精度误差率 | 0.0002% | 远低于 1% |
结论:精度误差率 0.0002%,远低于 1% 阈值。NPU FP16 推理与 CPU FP32 在 next-token 预测上完全等价,评测通过。
LlamaForCausalLM.from_pretrained() 加载torch_dtype=torch.float16)以提升速度model.to("npu:0") 迁移,FP16 模型需 .detach() 后 .cpu().numpy()import torch, torch_npu
from transformers import LlamaForCausalLM, AutoTokenizer
model = LlamaForCausalLM.from_pretrained(
"MiniMind2", torch_dtype=torch.float16
).to("npu:0").eval()
tokenizer = AutoTokenizer.from_pretrained("MiniMind2")
prompt = "你好,请介绍一下你自己。"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = {k: v.to("npu:0") for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
next_token_logits = outputs.logits[:, -1, :] # last token