weixin_72661020/nlp_structbert_sentiment-classification_chinese-ecommerce-base
模型介绍文件和版本Pull Requests讨论分析

nlp_structbert_sentiment-classification_chinese-ecommerce-base on Ascend NPU

1. 简介

本文档记录 iic/nlp_structbert_sentiment-classification_chinese-ecommerce-base 中文电商情感分类模型在华为昇腾 Ascend910 NPU 上的适配与验证结果。

该模型是基于 StructBERT 架构的中文电商评论情感二分类模型,支持对中文电商文本进行正面/负面情感分类。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/iic/nlp_structbert_sentiment-classification_chinese-ecommerce-base

2. 验证环境

组件版本
NPUAscend910
PyTorch2.9.0
torch_npu2.9.0.post1+gitee7ba04
modelscope1.22.3
Python3.11.14
  • NPU:2 逻辑卡(Ascend910)
  • 模型路径:本地下载缓存

3. 推理方式

由于该模型为 BERT 架构的情感分类模型(非生成式模型),无法通过 vLLM 部署。推理方式为直接使用 ModelScope SDK 加载模型并在 NPU 上运行。

from modelscope.models import Model
from modelscope.preprocessors import Preprocessor
import torch

model_path = "/path/to/model"
model = Model.from_pretrained(model_path)
model = model.npu()
model.eval()

preprocessor = Preprocessor.from_pretrained(model_path)

inputs = preprocessor("输入文本")
inputs_npu = {k: v.npu() if hasattr(v, 'npu') else v for k, v in inputs.items()}

with torch.no_grad():
    outputs = model(**inputs_npu)

logits = outputs.logits
predicted_id = torch.argmax(logits, dim=-1).item()
id_to_label = {0: "负面", 1: "正面"}
print(f"预测结果: {id_to_label[predicted_id]}")

4. Smoke 验证

基础推理验证(NPU):

python3 inference.py

验证结果:

  • 模型成功加载 (ModelForTextClassification)
  • 模型参数成功移至 NPU 设备(Ascend910)
  • 推理输出 logits 位于 npu:0 设备
  • 情感分类结果符合预期

5. 性能参考

测试条件:50 轮推理,5 条测试样本循环,Ascend910 NPU。

指标数值
总推理次数50
总耗时0.408 s
平均单次推理时间0.008 s
吞吐量122.46 次/秒

6. 精度评测

测试条件:10 条中文电商评论样本(5 正面 + 5 负面),与人工标注进行对比。

指标数值
测试样本数10
正确数10
准确率100.00%
平均置信度99.96%+

7. 注意事项

  • 该模型为 StructBERT 架构的情感分类模型,非生成式 LLM,不支持 vLLM 部署
  • 需使用 ModelScope SDK 加载,而非 transformers 直接加载
  • Pipeline API 不支持 'npu' 设备参数,需手动加载 Model 后调用 .npu()
  • 输入 tensor 也需显式移至 NPU 设备
  • 推理时建议使用 torch.no_grad() 以节省显存

Ascend NPU 精度评测

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

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

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

下载使用量0