本文档记录 cross-encoder/mmarco-mMiniLMv2-L12-H384-v1 在昇腾 Ascend 910B3 NPU 上的迁移适配、推理部署与精度评测结果。
该模型是一个基于 XLM-RoBERTa 的多语言交叉编码器(Cross-Encoder),支持多种语言的文本相关性排序。模型基于 paraphrase-multilingual-MiniLMv2 初始化,在 mMARCO 数据集上微调,参数量约 117.79M。
本次适配工作包括:
inference.pyeval.py相关获取地址:
| 组件 | 版本 |
|---|---|
Python | 3.9.13 |
torch | 2.8.0+cpu |
torch_npu | 2.8.0.post4 |
transformers | 4.57.6 |
numpy | 1.24.4 |
Ascend 910B3 × 8 逻辑卡25.5.2该模型使用 XLM-RoBERTa 架构,通过 AutoModelForSequenceClassification 加载,transformers 库原生支持。NPU 适配无需修改模型结构或权重。
已验证通过的适配流程:
import torch
import torch_npu
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained("cross-encoder/mmarco-mMiniLMv2-L12-H384-v1")
model = model.npu()
model.eval()
tokenizer = AutoTokenizer.from_pretrained("cross-encoder/mmarco-mMiniLMv2-L12-H384-v1")
inputs = tokenizer(["query"], ["passage"], return_tensors="pt")
inputs = {k: v.npu() for k, v in inputs.items()}
with torch.no_grad():
score = model(**inputs).logits.cpu().item()pip install torch torch_npu transformers -i https://repo.huaweicloud.com/repository/pypi/simple/
export HF_ENDPOINT=https://hf-mirror.com# 英文推理
python inference.py --query "How many people live in Berlin?" --passage "Berlin has 3.5 million people."
# 中文推理
python inference.py --query "柏林的人口是多少?" --passage "柏林有约350万居民。"
# 日文推理
python inference.py --query "ベルリンの人口は?" --passage "ベルリンには約350万人の住民がいます。"
# 批量推理
python inference.py --input pairs.json --output scores.jsonpython inference.py --query "Wie heißt die Hauptstadt von Deutschland?" --passage "Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland."测试条件:batch_size=12,seq_len=128,float32 精度,连续 10 次取平均。
| 指标 | CPU | NPU (Ascend 910B3) |
|---|---|---|
| 平均推理时间 (12 pairs) | ~7300 ms | ~26 ms |
| 单 pair 平均耗时 | ~608 ms | ~2.2 ms |
| 加速比 | 1x | ~280x |
| 参数量 | 117.79M | 117.79M |
| 模型大小 | 449.3 MB | 449.3 MB |
使用 12 组多语言(英/德/法/西/日/中文)的(查询,段落)对进行评测:
| 指标 | 数值 | 要求 | 结果 |
|---|---|---|---|
| MSE | 9.00e-5 | - | - |
| Cosine Similarity | 0.99999891 | > 0.999 | ✓ |
| Mean Relative Error | 0.340% | < 1% | ✓ PASS |
| Ranking Agreement | 100% | - | ✓ |
结论:NPU 精度误差 0.340%,满足精度要求(< 1%),多语言推理结果与 CPU 一致。
详细评测日志见 eval_log.txt。
torch_npu 版本:确保与 torch 版本匹配