anning-2026/multi-qa-mpnet-base-dot-v1
模型介绍
文件和版本
Pull Requests
讨论
分析

sentence-transformers/multi-qa-mpnet-base-dot-v1 昇腾 NPU 部署文档

1. 模型简介

模型名称: sentence-transformers/multi-qa-mpnet-base-dot-v1(sentence-transformers/multi-qa-mpnet-base-dot-v1)

模型链接: https://huggingface.co/sentence-transformers/multi-qa-mpnet-base-dot-v1

模型描述: sentence-transformers 发布的多语言 QA 句向量模型,基于 Microsoft MPNet-base 微调。将文本映射为 768 维句向量,支持文本语义相似度、语义检索、FAQ 问答匹配等任务。基于 dot 点积计算相似度(multi-qa-mpnet-base-dot-v1)。

模型架构: MPNetModel(mpnet),Transformer encoder,12 层,hidden_size 768,12 注意力头,CLS 池化 + L2 归一化

参数规模: ~110M,fp32 权重约 420MB

适配引擎: torch_npu(昇腾 NPU 推理引擎)

适配硬件: 昇腾 Ascend 910(CANN 8.5.1 + torch_npu 2.9.0)


2. 环境依赖

依赖项版本要求说明
Python>= 3.10推荐 3.11
torch2.9.0CPU 版
torch_npu2.9.0.post1昇腾 NPU 适配层(随 CANN 安装)
transformers4.57.6HuggingFace 库
CANN8.5.1昇腾计算架构
昇腾驱动25.5.5npu-smi 版本

安装命令:

# 已内置 Python 环境(本项目已安装,列出供参考)
pip install torch==2.9.0 transformers==4.57.6

# torch_npu 需从 CANN 安装包配套安装(源码包:https://gitee.com/ascend/pytorch)
# 安装后验证 NPU 可用:
npu-smi info

3. 推理步骤

3.1 环境准备

# 1. 检查 NPU 设备(应显示 Ascend910,状态 OK)
npu-smi info

# 2. 下载模型权重(huggingface.co 不可达时使用 hf-mirror 镜像)
export HF_ENDPOINT=https://hf-mirror.com
python -c "from huggingface_hub import snapshot_download; snapshot_download('sentence-transformers/multi-qa-mpnet-base-dot-v1', local_dir='./multi-qa-mpnet-base-dot-v1')"

3.2 运行推理

# 方式一:默认示例(query 与候选文档相似度)
python inference.py

# 方式二:单条文本编码
python inference.py --text "How big is London"

# 方式三:文本相似度计算
python inference.py --text "London has 9 million people" --compare "How big is London"

# 方式四:批量编码(每行一条)
python inference.py --input_file test_texts.txt

# 指定设备和模型路径
python inference.py --text "How big is London" --device npu:0 --model_path /path/to/model

3.3 推理参数说明

参数类型默认值说明
--textstrNone待编码文本
--comparestrNone与 --text 计算相似度的文本
--input_filestrNone批量编码文件(每行一条)
--model_pathstr./multi-qa-mpnet-base-dot-v1模型本地路径
--devicestr自动检测推理设备:npu:0 / cpu

3.4 推理引擎

本工程推理脚本通过 torch_npu 昇腾推理引擎调用 NPU 设备(import torch_npu 注册 npu 后端)。模型权重加载至 NPU,所有算子经 CANN 昇腾加速执行,无 CUDA 依赖。

句向量生成: 文本经 tokenizer 编码 → MPNetModel 编码 → 取 last_hidden_state[:, 0](CLS token)→ L2 归一化 → 768 维句向量。与 sentence-transformers 默认 CLS 池化一致。


4. 测试样例及输出结果

以下输出为在昇腾 Ascend 910(CANN 8.5.1 + torch_npu 2.9.0)上实测获得。

样例 1:QA 文本相似度

命令:

python inference.py

输出:

[INFO] 推理设备: npu:0
[INFO] 加载模型: ./multi-qa-mpnet-base-dot-v1
[INFO] 模型加载完成 (device=npu:0, dtype=torch.bfloat16)
[INFO] 默认示例:query 与候选文档的相似度
[结果] 句向量 shape: (768,)
  sim(query, 'London has 9 million people') = 0.6769
  sim(query, 'What is the capital of France') = 0.2863
[耗时] 0.21s

结果说明: query "How big is London" 与相关文档 "London has 9 million people" 相似度 0.68(语义相关),与不相关文档 "What is the capital of France" 相似度 0.29(语义不相关),模型正确区分语义相关性。

样例 2:文本相似度计算

命令:

python inference.py --text "London has 9 million people" --compare "How big is London"

输出:

[INFO] 推理设备: npu:0
[结果] 句向量 shape: (768,)
[结果] text: London has 9 million people
[结果] compare: How big is London
[结果] 相似度 (dot): 0.6769
[耗时] 0.18s

结果说明: 两条语义相关的 QA 文本对的 dot 相似度为 0.68,符合预期(多语言 QA 检索场景)。


5. Agent 适配截图

5.1 Agent 适配全过程截图

Agent 适配流程

5.2 NPU 设备调用截图

NPU 设备调用

5.3 模型适配结果截图

模型适配结果


6. 注意事项

  • 推理脚本 inference.py 通过 torch_npu 引擎调用 NPU。
  • 该模型为句向量嵌入模型(sentence-transformers),使用 dot 点积计算相似度(模型名 -dot-v1)。
  • 池化方式:CLS token + L2 归一化,与 sentence-transformers 默认配置一致。
  • vLLM 不支持嵌入模型;如需服务化推理,可基于本脚本封装 OpenAI 兼容 API。
  • 模型权重约 420MB,不纳入本仓库(git 忽略),请在部署环境按 3.1 节单独下载放置。