weixin_72661020/tiansz_uer_windows
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

tiansz/uer_windows on Ascend NPU

1. 简介

tiansz/uer_windows 是基于 UER-py(Universal Encoder Representation)框架的中文文本分类模型,使用 RoBERTa-wwm-ext-base 作为骨干网络,支持 3 分类(其他/好评/差评)的电影评论情感分类任务。

  • 模型框架:UER-py(腾讯开源 NLP 框架)
  • 骨干网络:RoBERTa-wwm-ext-base(12层 Transformer, 768隐藏维, 12注意力头)
  • 任务类型:文本分类(sequence classification)
  • 支持语言:中文(zh)
  • 推理框架:PyTorch + torch_npu
  • 下载地址:https://modelscope.cn/models/tiansz/uer_windows

2. 验证环境

组件版本
NPUAscend910_9362
PyTorch2.9.0
torch_npu2.9.0.post1+gitee7ba04
transformers4.57.6
Python3.11

3. 模型下载

使用 ModelScope SDK 下载模型:

pip install modelscope
python3 -c "from modelscope import snapshot_download; snapshot_download('tiansz/uer_windows')"

4. 推理验证

NPU 适配后的推理命令:

cd ~/tiansz/uer_windows/model/tiansz/uer_windows
python3 ~/tiansz/uer_windows/inference_npu.py \
  --load_model_path models/bert/roberta_wwm_base.bin \
  --test_path datasets/电影评论分类模型/dev.tsv \
  --prediction_path /tmp/predictions_npu.tsv \
  --config_path models/bert/base_config.json \
  --vocab_path models/google_zh_vocab.txt \
  --labels_num 3 \
  --batch_size 4 \
  --seq_length 128 \
  --tokenizer bert \
  --output_logits \
  --output_prob

推理结果保存在 /tmp/predictions_npu.tsv,包含 label、logits 和 probabilities 三列。

5. 性能参考

测试条件:62 条电影评论数据,batch_size=4,seq_length=128,在 Ascend910 NPU 上运行 5 次取平均。

指标数值
总实例数62
Batch Size4
平均推理耗时0.1916 s
吞吐量323.57 instances/s
首轮耗时0.3584 s(含 warmup)
稳定推理耗时0.1499 s

6. 精度评测

模型在 NPU 上完成 62 条测试数据的分类推理,输出三类概率分布及 argmax 分类标签。

预测类别数量
其他 (label 0)30
好评 (label 1)31
差评 (label 2)1

推理输出与 GPU/CPU 框架输出形态一致,包含 logits 和 softmax 概率。

7. 适配说明

主要适配工作:

  1. 将模型加载到 torch_npu 设备(model.to("npu:0"))
  2. 移除了 DataParallel 封装(NPU 上使用单卡推理)
  3. 使用 torch.npu.synchronize() 进行同步计时
  4. Classifier 前向传播使用 model(src, None, seg) 格式(推理时 tgt=None)

8. 注意事项

  • 该模型使用 UER-py 自定义框架,不是标准 HuggingFace transformers 模型
  • 推理时需要从 UER 项目根目录运行,否则相对路径引用会失败
  • UER 框架的 constants.py 使用 models/special_tokens_map.json 的硬编码相对路径
  • NPU 上暂不支持 DataParallel,使用单卡推理