weixin_72661020/nlp_structbert_qd_spoken_chinese-base
模型介绍文件和版本Pull Requests讨论分析

iic/nlp_structbert_qd_spoken_chinese-base on Ascend NPU

1. 简介

本文档记录 iic/nlp_structbert_qd_spoken_chinese-base 在昇腾 Ascend NPU 环境的适配与验证结果。

该模型是基于 StructBERT 的中文口语问句识别模型,用于判断输入句子是否为问句。模型参数量约 110M,支持中文输入。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/iic/nlp_structbert_qd_spoken_chinese-base

2. 验证环境

组件版本
NPUAscend910
PyTorch2.9.0+cpu
torch_npu2.9.0.post1+gitee7ba04
transformers4.57.6
Python3.11.14
  • NPU 卡数:1(npu:0)
  • 模型路径:本地下载路径

3. 推理方式

该模型为 BERT-based 文本分类模型,不支持 vLLM serve,直接使用 transformers 进行推理。

import torch
import torch_npu
from transformers import AutoModelForSequenceClassification, AutoTokenizer

device = "npu:0"
model_dir = "<model_path>"
tokenizer = AutoTokenizer.from_pretrained(model_dir)
model = AutoModelForSequenceClassification.from_pretrained(model_dir)
model = model.to(device)
model.eval()

sentence = "今天会议的第一个结论是明天先收集用户的需求吗?"
inputs = tokenizer(sentence, return_tensors="pt", truncation=True, padding=True, max_length=512)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_class = torch.argmax(logits, dim=-1).item()
label = "问句" if predicted_class == 1 else "非问句"
print(f"预测结果: {label}")

4. 精度评测

使用 10 个测试样本(5 个问句,5 个非问句)进行精度验证。

指标数值
测试样本数10
正确数10
准确率100%

所有测试用例均正确分类,模型的问句识别能力在 NPU 上运行正常。

5. 性能参考

指标数值
平均推理时间8.23 ms
测试轮次10
设备Ascend910 (npu:0)

6. 注意事项

  • 模型为 BERT-based 分类模型,不支持 vLLM/Ascend 推理加速
  • 使用 transformers 的 AutoModelForSequenceClassification 加载
  • NPU 设备指定为 npu:0,需安装 torch_npu
  • 输入长度最大 512 token
下载使用量0