weixin_72661020/nlp_structbert_outbound-intention_chinese-tiny
模型介绍文件和版本Pull Requests讨论分析

nlp_structbert_outbound-intention_chinese-tiny on Ascend NPU

1. 简介

本文档记录 iic/nlp_structbert_outbound-intention_chinese-tiny 在华为昇腾 Ascend910 NPU 环境的适配与验证结果。

该模型是一个基于 StructBERT 的中文外呼意图识别模型(tiny 版本),用于多标签文本分类任务,可识别以下意图类别:

  • 通知
  • 企业生产
  • 催收催缴
  • 验证码
  • 营销

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/iic/nlp_structbert_outbound-intention_chinese-tiny

2. 验证环境

组件版本
NPUAscend910
CANN25.5.2
PyTorch2.x
torch_npu可用
transformers4.x
  • NPU:Ascend910 单卡
  • 模型路径:/opt/atomgit/models/iic/nlp_structbert_outbound-intention_chinese-tiny/model

3. 推理脚本

已验证通过的推理示例:

import torch
from transformers import AutoTokenizer, AutoConfig, AutoModelForSequenceClassification
import json

model_path = "/path/to/model"
device = "npu:0" if torch.npu.is_available() else "cpu"

# 加载标签映射
with open(f"{model_path}/label_mapping.json") as f:
    label_mapping = json.load(f)
idx_to_label = {v: k for k, v in label_mapping.items()}

# 加载模型
config = AutoConfig.from_pretrained(model_path)
config.num_labels = len(label_mapping)
config.problem_type = "multi_label_classification"

tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(
    model_path, config=config, torch_dtype=torch.float32
).to(device)
model.eval()

# 推理
text = "您的验证码是123456,请勿泄露给他人。"
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=128)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
    outputs = model(**inputs)

probabilities = torch.sigmoid(outputs.logits).cpu().numpy()[0]
for idx, prob in enumerate(probabilities):
    if prob > 0.5:
        print(f"{idx_to_label[idx]}: {prob:.4f}")

4. Smoke 验证

直接运行推理脚本:

python3 inference.py

预期输出示例:

文本: 您的验证码是123456,请勿泄露给他人。
预测结果:
  - 验证码: 0.8597

5. 性能参考

测试条件:20次推理取平均,Ascend910 单卡。

文本长度平均延迟 (ms)吞吐量 (样本/秒)
短文本 (6字)2.73366
中文本 (23字)2.66376
长文本 (142字)2.66376

6. 精度评测

指标数值
测试用例数10
正确数8
准确率80.00%
评测工具eval/accuracy_test.py

7. 注意事项

  • 模型来自 ModelScope,使用 snapshot_download 下载
  • config.json 中 problem_type 为 multi_label_classification,需显式设置 num_labels=5
  • 推理时使用 torch.sigmoid 获取多标签概率,阈值 0.5
  • NPU 推理时需将模型移至 npu:0 设备

Ascend NPU 精度评测

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

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

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

下载使用量0