all-mpnet-base-v2 on Ascend NPU
1. 简介
本文档记录 all-mpnet-base-v2(MPNet 句子嵌入模型)在昇腾 NPU(Ascend 910B3)环境的适配部署与精度验证结果。
all-mpnet-base-v2 基于 MPNet 架构,参数量约 109.5M,将句子映射到 768 维向量空间,适用于语义搜索、聚类等任务。本项目完成该模型在昇腾 NPU 上的推理适配,验证 NPU 与 CPU 推理结果的精度误差 < 1%。
相关获取地址:
2. 验证环境
| 组件 | 版本 |
|---|
python | 3.11.x |
torch | 2.10.0+cpu |
torch_npu | 2.10.0 |
transformers | 5.8.1 |
CANN | 8.5.1 |
- NPU:
Ascend 910B3(8卡)
- 模型路径:
/path/to/model
- 框架:
PyTorch + transformers
3. 模型信息
| 项目 | 值 |
|---|
| 模型架构 | MPNet (MPNetForMaskedLM) |
| 参数量 | ~109.5M |
| 输出维度 | 768(CLS token) |
| 权重格式 | safetensors |
| 许可证 | Apache-2.0 |
4. Conda 环境安装
conda create -n mpnet python=3.11 -y
conda activate mpnet
pip install torch==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install torch_npu==2.10.0 --index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip install transformers safetensors --index-url https://repo.huaweicloud.com/repository/pypi/simple/
5. 推理执行
python3 inference.py --model_path /path/to/model --text "Your sentence"
python3 inference.py ... --device cpu
python3 benchmark.py --model_path /path/to/model
6. 参数说明
| 脚本 | 参数 | 说明 | 默认值 |
|---|
| inference.py | --model_path / --text / --device | 模型/文本/设备 | 必需 / Hello / npu:0 |
| benchmark.py | --model_path / --npu_device / --num_warmup | 模型/NPU/预热 | 必需 / npu:0 / 3 |
7. 精度评测
使用同一输入文本在 CPU(FP32)和 NPU(FP32)上推理,对比 CLS 嵌入向量。
| 指标 | 数值 |
|---|
| 向量级相对误差 | 0.421760% |
| 余弦相似度 | 0.9999912977 |
| 评价指标 | 实测值 | 阈值 | 状态 |
|---|
| 向量级相对误差 | 0.42% | < 1% | PASS |
8. 性能数据
| 操作 | 耗时 |
|---|
| CPU 推理时间(FP32) | 1.09 s |
| NPU 推理时间(FP32,3轮预热后) | 0.02 s |
| 加速比 (CPU / NPU) | 68.62 x |
9. 注意事项
- 如果 HuggingFace 无法访问,设置
export HF_ENDPOINT=https://hf-mirror.com/。
- NPU 首次推理包含编译优化,脚本默认 3 轮预热。
- 权重文件(.safetensors)不包含在适配仓库中,需单独下载。