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

nlp_structbert_sentence-similarity_chinese-tiny on Ascend NPU

1. 简介

本文档记录 StructBERT 中文句对相似度模型在昇腾 NPU (Ascend 910B3) 上的迁移适配与精度验证结果。

该模型基于 StructBERT-tiny 架构(4 层 Transformer,256 维隐层),通过句对匹配训练实现中文句子级别的语义相似度判断。与 nlp_corom_sentence-embedding_chinese-tiny 共享相同的 BERT-tiny 结构,差异在于 checkpoint 权重键名使用 encoder. 前缀,加载时需剥离。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/damo/nlp_structbert_sentence-similarity_chinese-tiny
  • 权重下载地址(HuggingFace Mirror):https://hf-mirror.com/damo/nlp_structbert_sentence-similarity_chinese-tiny

参考文档:

  • https://modelscope.cn/models/damo/nlp_structbert_sentence-similarity_chinese-tiny

2. 验证环境

组件版本
CANN8.5.1
torch2.8.0
torch_npu2.8.0.post4
transformerslatest
modelscope1.37.0
  • NPU:Ascend 910B3,单卡推理
  • 模型大小:约 8.8M 参数
  • 输入:中文文本(最大 512 tokens)
  • 输出:[1, seq_len, 256] 隐层表示

3. 推理启动

3.1 环境准备

conda create -n nlp_structbert_similarity python=3.10 -y
conda activate nlp_structbert_similarity

pip install torch==2.8.0 torch_npu==2.8.0.post4 \
    -i https://mirrors.huaweicloud.com/repository/pypi/simple \
    --trusted-host mirrors.huaweicloud.com

pip install transformers modelscope numpy

3.2 下载模型权重

modelscope download --model damo/nlp_structbert_sentence-similarity_chinese-tiny \
    --local_dir ./nlp_structbert_sentence-similarity_chinese-tiny

3.3 命令行推理

python inference.py --text "测试文本" --device npu

3.4 Python API

from inference import run_inference
result = run_inference("这是一段测试文本", device="npu")
print(f"向量维度: {result['embedding'].shape}, 耗时: {result['time_ms']:.1f}ms")

4. Smoke 验证

python evaluate.py

验证结果:

  • CPU 推理正常,输出 [1, seq_len, 256]
  • NPU 推理正常,输出同形状
  • 精度评测通过

5. 性能参考

测试条件:输入中文短句。

指标CPUNPU (Ascend 910B3)
推理耗时265 ms6 ms
加速比—43x

6. 精度评测

6.1 评测方法

对比 CPU (PyTorch) 与 NPU (torch_npu) 在相同输入下 BERT 模型的 last_hidden_state 输出。

6.2 评测结果

指标数值
输出形状[1, 6, 256]
鲁棒平均相对误差0.160%
精度要求平均相对误差 < 1%
精度评测通过

7. 注意事项

  1. 权重键名:checkpoint 中权重使用 encoder. 前缀,需剥离后加载到 HuggingFace BertModel
  2. 分类头:checkpoint 包含 classifier 权重,本适配仅使用 encoder 部分进行句向量提取
  3. 与 CoROM 的区别:同架构不同训练目标,CoROM 做句嵌入,StructBERT 做句对相似度
  4. 首次推理:NPU 首次推理有算子编译开销,后续稳定在 ~6ms
下载使用量0