2401_83762429/nlp_structbert_sentence-similarity_chinese-tiny
模型介绍文件和版本Pull Requests讨论分析

nlp_structbert_sentence-similarity_chinese-tiny

1. 简介

本文档记录 iic/nlp_structbert_sentence-similarity_chinese-tiny 在昇腾 NPU(Ascend910)环境的快速部署与验证结果。

StructBERT 句子相似度模型,基于 HuggingFace transformers 框架,支持语义文本相似度(STS)计算与句向量匹配。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/iic/nlp_structbert_sentence-similarity_chinese-tiny
  • 权重下载地址(HuggingFace):https://huggingface.co/iic/nlp_structbert_sentence-similarity_chinese-tiny

参考文档:

  • https://huggingface.co/docs/transformers/en/model_doc/auto#transformers.AutoModel
  • https://www.sbert.net/docs/sentence_transformer/pretrained_models.html

2. 验证环境

组件版本
torch2.5.1
torch_npu2.5.1
transformers>=4.48.0
sentence-transformers>=3.0.0
CANN8.5.RC1
  • NPU:Ascend910(单卡)
  • 隐藏层维度:256
  • 最大序列长度:512
  • 推理框架:PyTorch + transformers

3. 快速部署

3.1 环境准备

pip install transformers torch sentence-transformers

3.2 推理代码

import torch
from transformers import AutoModel, AutoTokenizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

device = torch.device("npu:0" if torch.npu.is_available() else "cpu")

tokenizer = AutoTokenizer.from_pretrained("iic/nlp_structbert_sentence-similarity_chinese-tiny")
model = AutoModel.from_pretrained("iic/nlp_structbert_sentence-similarity_chinese-tiny")
model = model.to(device).eval()

sentences = ["今天天气很好", "今天天气不错", "明天会下雨"]
inputs = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}

with torch.no_grad():
    outputs = model(**inputs)
    embeddings = outputs.last_hidden_state.mean(dim=1)

# 计算相似度矩阵
cpu_emb = embeddings.cpu().numpy()
sim_matrix = cosine_similarity(cpu_emb)
print("相似度矩阵:\n", sim_matrix)

注意:该模型权重键名前缀为 encoder.,如需直接加载需将键名替换为 bert.。

4. Smoke 验证

python3 inference.py

验证结果:

  • 模型成功加载到 npu:0
  • 输出句向量维度正确
  • 相似度矩阵数值在 [0, 1] 范围内,语义相近句子得分高
  • 推理过程无报错

5. 性能参考

测试条件:FP32 / batch=8 / warmup=5 / timed=100 runs,Ascend910 单卡。

指标数值
平均推理时间2.51 ms
QPS(每秒查询)3184.78
测试次数100

6. 精度评测

NPU 与 CPU 输出对比,使用 8 组测试句子对,分别计算 CPU 与 NPU 的句向量,对比余弦相似度与相对误差。

指标数值
平均余弦相似度1.0
最低余弦相似度1.0
最大向量差异0.002119
平均向量差异0.000298
最大相对误差6.46%(仅极个别近零值)
结论PASS

精度判定标准:NPU 与 CPU 输出的句向量平均余弦相似度 > 0.999。

7. 注意事项

  • 句子相似度模型本质是文本向量模型,精度验证关注向量数值一致性而非下游任务准确率
  • 部分模型使用 pooler_output 获取句向量,部分使用 mean pooling,需根据模型类型选择
  • NPU 推理结果与 CPU 的 embedding 余弦相似度通常 > 0.999
  • 语义相似度计算对向量方向敏感,对向量长度不敏感,因此使用余弦相似度而非欧氏距离
  • 最大序列长度因模型而异(128~512),超出长度会被截断,可能影响长句相似度结果
下载使用量0