qq_34566203/cross-encoder--mmarco-mMiniLMv2-L12-H384-v1-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Cross-Encoder (mmarco-mMiniLMv2) on Ascend NPU

1. 简介

本文档记录 cross-encoder/mmarco-mMiniLMv2-L12-H384-v1 在 Ascend 910B3 NPU 环境下的适配与验证结果。该模型是一个多语言交叉编码器(Cross-Encoder),用于信息检索中的查询-文档相关性排序(Re-ranking)。

本仓库提供:

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

相关获取地址:

  • 模型权重(HuggingFace):https://huggingface.co/cross-encoder/mmarco-mMiniLMv2-L12-H384-v1
  • 镜像加速:https://hf-mirror.com

参考文档:

  • https://www.sbert.net/docs/pretrained_cross-encoders.html
  • https://github.com/UKPLab/sentence-transformers

2. 验证环境

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

3. 推理启动

环境准备

# 安装依赖
pip install torch torch_npu transformers

# 设置 NPU 可见设备
export ASCEND_RT_VISIBLE_DEVICES=0

单对查询-文档评分

python inference.py \
  --query "how to cook pasta" \
  --passage "Boil water, add salt, then add pasta and cook for 10 minutes."

批量推理(JSONL 格式)

# pairs.jsonl 格式:{"query": "...", "passage": "..."} 每行
python inference.py --input-file pairs.jsonl

批量推理(CSV 格式)

# pairs.csv 格式:query,passage 每行
python inference.py --input-file pairs.csv --input-format csv

CPU 推理(参考基准)

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

输出格式

{
  "model": "cross-encoder--mmarco-mMiniLMv2-L12-H384-v1",
  "device": "npu:0",
  "num_pairs": 1,
  "inference_time_seconds": 0.0021,
  "pairs_per_second": 476.19,
  "results": [
    {
      "query": "how to cook pasta",
      "passage": "Boil water, add salt...",
      "score": 4.527361
    }
  ]
}

4. Smoke 验证

python inference.py --query "hello world" --passage "test passage"

预期输出:

  • 返回 JSON 格式结果
  • score 字段为相关性得分
  • 推理时间在毫秒级别

5. 性能参考

测试条件:10 对查询-文档,batch_size=32,max_length=512。

指标CPUNPU
平均推理时间1.1910 s0.0183 s
吞吐量8.40 pairs/s547.35 pairs/s
加速比-65.08x

6. 精度评测

精度评测采用余弦距离(Cosine Distance)作为主要指标,对比 NPU 与 CPU 的输出得分向量。

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

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

7. 注意事项

  1. 输入格式:查询和文档使用 </s></s> 分隔符拼接后输入模型。
  2. 激活函数:默认输出原始 logits(identity),可通过 --activation sigmoid 获取概率值。
  3. 序列长度:默认最大序列长度为 512 token,超出部分会被截断。
  4. 多语言支持:该模型基于 XLM-RoBERTa,支持包括中英文在内的多种语言。