中文口语StructBERT问句识别模型,基于 StructBERT 预训练模型在大量口语数据上使用 MLM+口语化训练目标继续预训练得到。用于判断输入文本是否为问句(text-classification / 二分类任务)。
相关获取地址:
| 组件 | 版本 |
|---|---|
| NPU | Ascend910 (2 逻辑卡) |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.48.3 |
| Python | 3.11.14 |
| 驱动版本 | 25.5.2 |
模型路径: /opt/atomgit/iic_nlp_structbert_qd_spoken_chinese-base/model/iic/nlp_structbert_qd_spoken_chinese-base
import torch
import torch_npu
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_path = "iic/nlp_structbert_qd_spoken_chinese-base"
device = "npu:0"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
model = model.to(device)
model.eval()
texts = ["今天会议的第一个结论是明天先收集用户的需求吗?"]
inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True, max_length=128)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=-1)
probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
# predictions=1 表示问句, predictions=0 表示非问句cd /opt/atomgit/iic_nlp_structbert_qd_spoken_chinese-base
python3 inference.py --mode infer --device npu:0预期输出:
Text Prediction Label Confidence
============================================================================================
今天会议的第一个结论是明天先收集用户的需求吗? 1 是 (question) 0.9734
请确认一下明天的会议时间 1 是 (question) 0.6780
这是一个陈述句 0 否 (not question) 0.9966测试条件:Ascend910 NPU, float32, max_length=128, 100 batches
| Batch Size | 吞吐量 (samples/s) | 延迟 (ms/batch) | 延迟 (ms/sample) |
|---|---|---|---|
| 1 | 153.52 | 6.51 | 6.514 |
| 4 | 612.89 | 6.53 | 1.632 |
| 8 | 1226.15 | 6.52 | 0.816 |
| 16 | 2480.15 | 6.45 | 0.403 |
| 32 | 5065.01 | 6.32 | 0.197 |
NPU vs CPU 精度对比(float32):
| 指标 | 数值 |
|---|---|
| 测试用例数 | 15 |
| 最大logits差异 | 0.00835848 |
| 预测完全一致 | 是 (15/15) |
| 精度要求 | NPU vs CPU 最大logits误差 < 1% |
| 精度结论 | 通过 |