本文档记录 iic/zero-shot-classify-SSTuning-XLM-R 在华为昇腾 NPU(Ascend 910)环境的适配与验证结果。
iic/zero-shot-classify-SSTuning-XLM-R 是一个基于 XLM-RoBERTa 的零样本分类模型,支持用户自定义任意标签进行文本分类(Zero-Shot Classification)。该模型采用 SSTuning 方法,将候选标签与输入文本拼接后输入模型进行分类。
| 组件 | 版本 |
|---|---|
| 硬件 | Ascend 910 |
| CANN | 25.5.2 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0.post1+gitee7ba04 |
| transformers | 4.18.0+ |
| Python | 3.10+ |
/opt/atomgit/model_adapt/2_iic_zero-shot-classify-SSTuning-XLM-R/model/iic/zero-shot-classify-SSTuning-XLM-R启动 Python 推理脚本:
python3 inference.py该脚本将执行以下步骤:
核心推理代码:
import torch
import torch_npu
from transformers import AutoTokenizer, AutoModelForSequenceClassification
device = torch.device("npu:0")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForSequenceClassification.from_pretrained(model_dir).eval()
model = model.to(device)运行基本推理测试:
python3 inference.py验证结果示例:
Input text: I love this place! The food is always so fresh and delicious.
Labels: ['negative', 'positive']
Result: {'prediction': 'positive.', 'probability': '99.84%'}
Input text: This product is terrible, I want my money back.
Labels: ['negative', 'positive']
Result: {'prediction': 'negative.', 'probability': '96.77%'}零样本分类输入格式:
(A) 标签1 (B) 标签2 ... [SEP] 输入文本| 指标 | 数值 |
|---|---|
| 平均推理时延 | 8.08 ms |
| 最小推理时延 | 7.67 ms |
| 最大推理时延 | 9.11 ms |
| 吞吐量 | ~123.71 QPS |
| 测试次数 | 10 次/场景 |
| 精度 | float32 |
性能与文本长度基本无关,模型推理时间稳定在 ~8ms。
| 指标 | 数值 |
|---|---|
| 测试用例数 | 8 |
| 正确数 | 7 |
| 准确率 | 87.5% |
| 评测工具 | accuracy_test.py |
该模型对明确的正负面情感分类准确率极高(接近 100%),对模糊/中性文本可能存在分类偏差。
(A) 标签1 (B) 标签2 ... [SEP] 输入文本model.to("npu:0")torch.no_grad() 上下文管理器进行推理以节省显存