本模型是基于 StructBERT 的中文情感分类模型,能够对中文文本进行 7 类情感分类:恐惧、愤怒、厌恶、喜好、悲伤、高兴、惊讶。本仓库提供了在华为昇腾 Ascend910 NPU 上的完整适配和验证方案。
| 组件 | 版本 |
|---|---|
| NPU 硬件 | Ascend910 (HBM 64GB) |
| torch | 2.9.0 |
| torch_npu | 2.9.0 |
| transformers | 4.50.0 |
| modelscope | 1.35.3 |
| Python | 3.11.14 |
| 驱动版本 | 25.5.2 |
由于该模型为 BERT 序列分类模型(非生成式模型),可直接通过 Python 脚本加载模型进行推理,无需启动独立的 API 服务。
pip install torch torch_npu transformers modelscopeimport torch
import torch_npu
from transformers import AutoTokenizer, BertForSequenceClassification
device = "npu:0"
torch_npu.npu.set_device(device)
model_path = "path/to/model"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = BertForSequenceClassification.from_pretrained(model_path, torch_dtype=torch.float32)
model = model.to(device)
model.eval()cd /opt/atomgit/~/iic/nlp_structbert_emotion-classification_chinese-base
python3 inference.py执行推理脚本验证模型基本功能:
python3 inference.py预期输出格式:
输入: "新年快乐!"
预测情绪: 喜好 (置信度: 0.8787)
推理时间: 6.69 ms在 Ascend910 NPU 上测试的性能数据:
| 指标 | 数值 |
|---|---|
| 单样本平均延迟 (batch=1) | 6.62 ms |
| 单样本吞吐量 | 151.00 samples/sec |
| Batch=4 吞吐量 | 505.51 samples/sec |
| Batch=8 吞吐量 | 1015.02 samples/sec |
性能测试脚本:eval/perf_test.py
在 16 个涵盖全部 7 类情感的中文测试样本上,模型达到 100% 的 Top-2 准确率。
| 类别 | 测试样本数 | 全部正确 |
|---|---|---|
| 高兴/喜好 | 4 | 是 |
| 悲伤 | 3 | 是 |
| 愤怒 | 3 | 是 |
| 恐惧 | 2 | 是 |
| 厌恶 | 2 | 是 |
| 惊讶 | 2 | 是 |
精度测试脚本:eval/accuracy_test.py
python3 eval/accuracy_test.py
python3 eval/perf_test.py详细结果参考:eval/accuracy.json、eval/performance.json
npu-smi info 检查设备状态。can not create directory 警告,不影响推理结果。NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标):
| 指标 | 数值 |
|---|---|
| 测试用例数 | 6 |
| 最大 logits 差异 | 0.00284356 |
| 预测一致性 | 6/6 (100%) |
| 精度要求 | NPU vs CPU 最大 logits 误差 < 1% |
| 精度结论 | 通过 (差异 小于 1%) |
精度评测源代码和日志详见 eval/ 目录。