qq_34566203/cross-encoder--ms-marco-MiniLM-L12-v2-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Cross-Encoder (ms-marco-MiniLM-L12-v2) on Ascend NPU

1. 简介

本文档记录 cross-encoder/ms-marco-MiniLM-L12-v2 在 Ascend 910B3 NPU 环境下的适配与验证结果。该模型是一个交叉编码器(Cross-Encoder),用于信息检索中的查询-文档相关性排序(Re-ranking),基于 Microsoft MiniLM-L12-H384-uncased 预训练模型。

本仓库提供:

  • inference.py:NPU 推理脚本,支持单条/批量查询-文档对评分
  • eval.py:精度与性能评测脚本,对比 NPU 与 CPU 输出差异
  • log.txt:评测运行日志

相关获取地址:

  • 模型权重(HuggingFace):https://huggingface.co/cross-encoder/ms-marco-MiniLM-L12-v2
  • 镜像加速:https://hf-mirror.com

2. 验证环境

组件版本
torch2.8.0
torch_npu2.8.0.post4
transformers4.57.6
  • NPU:Ascend 910B3,1 逻辑卡
  • 模型架构:BertForSequenceClassification(12 层,384 隐藏维,12 注意力头)
  • 最大序列长度:512

3. 推理启动

环境准备

pip install torch torch_npu transformers
export ASCEND_RT_VISIBLE_DEVICES=0

单对评分

python inference.py --query "How many people live in Berlin" --passage "Berlin had 3.5 million inhabitants"

批量推理

# JSONL 格式
python inference.py --input-file pairs.jsonl

# CSV 格式
python inference.py --input-file pairs.csv --input-format csv

输出格式

{
  "model": "cross-encoder--ms-marco-MiniLM-L12-v2",
  "device": "npu:0",
  "num_pairs": 1,
  "results": [{"query": "...", "passage": "...", "score": 5.234}]
}

4. Smoke 验证

python inference.py --query "test" --passage "example passage"

5. 性能参考

指标CPUNPU
平均推理时间1.2140 s0.0199 s
吞吐量8.24 pairs/s502.58 pairs/s
加速比-61.01x

6. 精度评测

指标数值
测试样本数10
最大绝对误差3.0263e-02
平均绝对误差1.2390e-02
余弦相似度0.99999678
余弦距离0.000322%
精度要求(余弦距离 < 1%)通过

结论:NPU 与 CPU 输出的评分向量余弦距离仅 0.000322%,远低于 1% 的阈值,精度通过验证。

7. 注意事项

  1. 输入格式:查询和文档使用 [SEP] 分隔符拼接。
  2. 激活函数:默认输出原始 logits,可通过 --activation sigmoid 获取概率值。
  3. 语言:该模型主要针对英语训练,对其他语言的效果可能有限。