本文档记录 iic/nlp_structbert_qd_spoken_chinese-base(StructBERT 口语文本质量检测模型)在华为昇腾 Ascend NPU 环境下的适配与验证结果。
该模型是一个基于 StructBERT 的文本二分类模型,用于判断口语文本的质量(是/否),支持中文输入。
相关获取地址:
| 组件 | 版本 |
|---|---|
| NPU | Ascend910_9362 |
| PyTorch | 2.9.0 |
| torch-npu | 可用 |
| transformers | 4.48.3 |
| Python | 3.11.14 |
2 逻辑卡~/iic/nlp_structbert_qd_spoken_chinese-base/model/iic/nlp_structbert_qd_spoken_chinese-baseimport torch
import torch_npu
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model_path = "iic/nlp_structbert_qd_spoken_chinese-base"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
model = model.npu() # 移至 NPU
model.eval()inputs = tokenizer("你的输入文本", return_tensors="pt", padding=True, truncation=True, max_length=128)
inputs = {k: v.npu() for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probs = torch.softmax(logits, dim=-1)
predicted_class = torch.argmax(probs, dim=-1).item()基础推理验证结果:
python3 inference.py输出示例:
Input: 今天天气真不错
Predicted class: 0, Probabilities: [[0.9937, 0.0063]]
Input: 你吃饭了吗
Predicted class: 1, Probabilities: [[0.0901, 0.9099]]验证结果:
测试条件:单条输入(max_length=128),50 轮推理,warmup 10 轮。
| 指标 | 数值 |
|---|---|
| 平均延迟 | 6.55 ms |
| P50 延迟 | 6.59 ms |
| P90 延迟 | 6.66 ms |
| P99 延迟 | 6.69 ms |
| 吞吐量 | 152.75 samples/s |
| 指标 | 数值 |
|---|---|
| 测试数据 | 10 条口语文本 |
| 准确率 | 60.00% |
| 正确数 | 6/10 |
注:模型为口语质量检测模型,二分类(是/否),预测结果表示文本质量。
AutoModelForSequenceClassification 加载模型(非 CausalLM)NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标):
| 指标 | 数值 |
|---|---|
| 测试用例数 | 6 |
| 最大 logits 差异 | 0.00004206 |
| 预测一致性 | 6/6 (100%) |
| 精度要求 | NPU vs CPU 最大 logits 误差 < 1% |
| 精度结论 | 通过 (差异 远小于 1%) |
精度评测源代码和日志详见 eval/ 目录。