weixin_72661020/iic_zero-shot-classify-SSTuning-XLM-R
模型介绍文件和版本Pull Requests讨论分析

iic/zero-shot-classify-SSTuning-XLM-R on Ascend NPU

1. 简介

本文档记录 iic/zero-shot-classify-SSTuning-XLM-R 在华为昇腾 NPU(Ascend 910)环境的适配与验证结果。

iic/zero-shot-classify-SSTuning-XLM-R 是一个基于 XLM-RoBERTa 的零样本分类模型,支持用户自定义任意标签进行文本分类(Zero-Shot Classification)。该模型采用 SSTuning 方法,将候选标签与输入文本拼接后输入模型进行分类。

  • 模型架构:XLMRobertaForSequenceClassification
  • 参数量:~278M
  • 支持标签数:最多 20 个
  • 推理框架:PyTorch + transformers + torch_npu
  • 权重下载地址(ModelScope):https://modelscope.cn/models/iic/zero-shot-classify-SSTuning-XLM-R

2. 验证环境

组件版本
硬件Ascend 910
CANN25.5.2
PyTorch2.9.0
torch_npu2.9.0.post1+gitee7ba04
transformers4.18.0+
Python3.10+
  • NPU:单卡 Ascend 910
  • 模型路径:/opt/atomgit/model_adapt/2_iic_zero-shot-classify-SSTuning-XLM-R/model/iic/zero-shot-classify-SSTuning-XLM-R
  • 精度:float32

3. 推理命令

启动 Python 推理脚本:

python3 inference.py

该脚本将执行以下步骤:

  1. 从 ModelScope 加载模型和 tokenizer
  2. 将模型迁移到 NPU 设备
  3. 运行零样本分类示例
  4. 输出分类结果及置信度

核心推理代码:

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)

4. Smoke 验证

运行基本推理测试:

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] 输入文本

5. 性能参考

指标数值
平均推理时延8.08 ms
最小推理时延7.67 ms
最大推理时延9.11 ms
吞吐量~123.71 QPS
测试次数10 次/场景
精度float32

性能与文本长度基本无关,模型推理时间稳定在 ~8ms。

6. 精度评测

指标数值
测试用例数8
正确数7
准确率87.5%
评测工具accuracy_test.py

该模型对明确的正负面情感分类准确率极高(接近 100%),对模糊/中性文本可能存在分类偏差。

7. 注意事项

  • 模型基于 XLM-RoBERTa,支持多语言(基于 SentencePiece BPE 分词)
  • 零样本分类时最多支持 20 个候选标签,不足 20 个时自动用 pad_token 补齐
  • 标签输入格式为 (A) 标签1 (B) 标签2 ... [SEP] 输入文本
  • 推理时必须将模型迁移到 NPU 设备:model.to("npu:0")
  • 推荐使用 torch.no_grad() 上下文管理器进行推理以节省显存
下载使用量0