weixin_72661020/iic-nlp_structbert_qd_spoken_chinese-base
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

iic/nlp_structbert_qd_spoken_chinese-base on Ascend NPU

1. 简介

本文档记录 iic/nlp_structbert_qd_spoken_chinese-base(StructBERT 口语文本质量检测模型)在华为昇腾 Ascend NPU 环境下的适配与验证结果。

该模型是一个基于 StructBERT 的文本二分类模型,用于判断口语文本的质量(是/否),支持中文输入。

相关获取地址:

  • 模型下载地址(ModelScope):https://modelscope.cn/models/iic/nlp_structbert_qd_spoken_chinese-base
  • 模型架构:StructBERT(12层 Transformer, hidden_size=768, num_heads=12)

2. 验证环境

组件版本
NPUAscend910_9362
PyTorch2.9.0
torch-npu可用
transformers4.48.3
Python3.11.14
  • NPU:2 逻辑卡
  • 模型路径:~/iic/nlp_structbert_qd_spoken_chinese-base/model/iic/nlp_structbert_qd_spoken_chinese-base
  • 推理框架:PyTorch + torch_npu

3. 模型推理

3.1 加载模型

import 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()

3.2 执行推理

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()

4. Smoke 验证

基础推理验证结果:

python3 inference.py

输出示例:

Input: 今天天气真不错
Predicted class: 0, Probabilities: [[0.9937, 0.0063]]
Input: 你吃饭了吗
Predicted class: 1, Probabilities: [[0.0901, 0.9099]]

验证结果:

  • 模型在 NPU 上加载成功
  • 推理结果正常返回
  • 前向传播无报错

5. 性能参考

测试条件:单条输入(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

6. 精度评测

指标数值
测试数据10 条口语文本
准确率60.00%
正确数6/10

注:模型为口语质量检测模型,二分类(是/否),预测结果表示文本质量。

7. 注意事项

  • 使用 AutoModelForSequenceClassification 加载模型(非 CausalLM)
  • 模型为 StructBERT 架构,非生成式模型,不支持 vLLM serve
  • 推理时建议使用 torch_npu 将模型移至 NPU
  • 输入需使用 BERT tokenizer 进行 tokenize
  • 建议输入长度不超过 512(模型最大 position embedding)
  • 本模型适用于口语文本质量检测场景

Ascend NPU 精度评测

NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标):

指标数值
测试用例数6
最大 logits 差异0.00004206
预测一致性6/6 (100%)
精度要求NPU vs CPU 最大 logits 误差 < 1%
精度结论通过 (差异 远小于 1%)

精度评测源代码和日志详见 eval/ 目录。