cuitHXY666/opus-mt-zh-en-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Helsinki-NLP/opus-mt-zh-en on Ascend NPU

1. 简介

本文档记录 Helsinki-NLP/opus-mt-zh-en 在 昇腾 Ascend NPU 环境的原生 PyTorch 部署与验证结果。

该模型为 MarianMTModel 架构(encoder-decoder 翻译模型),由于 vLLM 0.18.0 暂不支持 MarianMT 架构,因此采用 transformers + torch_npu 原生推理方式在 NPU 上运行。所有算子均由 torch_npu 自动映射到 Ascend CANN,无需手动替换或修改模型代码。

验证要点:

  • 模型权重与配置文件仅通过 ModelScope 下载,未使用 HuggingFace 或 GitHub
  • CPU 与 NPU 推理输出 100% 一致
  • 单句翻译延迟相比 CPU 加速约 8.7x
  • 模型为纯 PyTorch 实现,零代码改动即可在 NPU 上运行

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/Helsinki-NLP/opus-mt-zh-en
  • 模型主页(HuggingFace):https://huggingface.co/Helsinki-NLP/opus-mt-zh-en

参考文档:

  • https://huggingface.co/docs/transformers/model_doc/marian
  • https://www.modelscope.cn/docs/intro/model-download

2. 验证环境

组件版本
transformers4.57.6
torch2.9.0+cpu
torch-npu2.9.0.post1+gitee7ba04
modelscope1.35.3
  • NPU:2 逻辑卡(Ascend910_9362)
  • 模型路径:/opt/atomgit/.cache/modelscope/hub/models/Helsinki-NLP/opus-mt-zh-en
  • CANN 版本:8.5.1

3. 模型下载

模型权重与配置文件仅允许从 ModelScope 下载:

from modelscope import snapshot_download

model_dir = snapshot_download('Helsinki-NLP/opus-mt-zh-en', revision='master')
print(model_dir)
# /opt/atomgit/.cache/modelscope/hub/models/Helsinki-NLP/opus-mt-zh-en

下载文件清单:

文件大小说明
config.json1.4 KB模型配置
pytorch_model.bin312 MBPyTorch 权重
tokenizer_config.json44 B分词器配置
vocab.json1.6 MB词表
source.spm805 KB源语言 SentencePiece
target.spm807 KB目标语言 SentencePiece
generation_config.json293 B生成配置

4. NPU 推理验证

4.1 推理脚本

from transformers import MarianMTModel, MarianTokenizer
import torch
import torch_npu

MODEL_PATH = "/opt/atomgit/.cache/modelscope/hub/models/Helsinki-NLP/opus-mt-zh-en"

# 1. 从 ModelScope 本地路径加载
tokenizer = MarianTokenizer.from_pretrained(MODEL_PATH)
model = MarianMTModel.from_pretrained(MODEL_PATH)

# 2. 迁移至 NPU
model = model.to("npu")
model.eval()

# 3. 推理
text = "你好,世界!"
inputs = tokenizer(text, return_tensors="pt").to("npu")

with torch.no_grad():
    outputs = model.generate(**inputs)

result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)  # Hello, world!

4.2 验证结果

验证项结果
ModelScope 本地加载通过
NPU 设备迁移通过
中文→英文单句翻译通过
CPU / NPU 输出一致性5/5 完全一致
无算子报错通过

4.3 翻译质量样例

中文输入CPU 输出NPU 输出一致性
你好,世界!Hello, world!Hello, world!一致
今天天气很好。It's a nice day.It's a nice day.一致
人工智能正在改变我们的生活。Artificial intelligence is changing our lives.Artificial intelligence is changing our lives.一致
这只猫很可爱。This cat is cute.This cat is cute.一致
华为昇腾NPU提供了强大的AI算力。China has provided the NPU with a powerful AI calculus.China has provided the NPU with a powerful AI calculus.一致

5. 性能参考

测试条件:连续运行取稳定值,单句最大长度 512 tokens。

5.1 单句延迟

指标CPUNPU (Ascend910B)
Mean1765.64 ms202.66 ms
P501764.40 ms201.24 ms
P991772.12 ms211.44 ms
Min1762.06 ms200.82 ms
Max1772.12 ms211.44 ms
加速比—8.71x

5.2 批量吞吐

Batch SizeCPU (sentences/s)NPU (sentences/s)加速比
11.8213.567.44x
22.0519.219.37x
41.7622.0312.52x
8—39.79—

5.3 显存占用

指标数值
Allocated305.7 MB
Reserved468.0 MB
模型参数量77.9 M

6. 精度评测

由于 MarianMT 为翻译模型,精度评测采用 CPU / NPU 输出一致性 方式进行对比验证。

指标数值
评测方式CPU vs NPU 输出对比
测试样本数5
一致样本数5
一致率100%
差异样本数0

结论:NPU 推理输出与 CPU 基准输出完全一致,算子精度无偏差。

7. 注意事项

  1. vLLM 不支持:vLLM 0.18.0 的模型注册表中不包含 MarianMTModel,因此该模型无法通过 vLLM-Ascend 部署。如需在 NPU 上运行,请使用原生 transformers + torch_npu 方式。

  2. torch_npu 内部警告:推理过程中可能出现以下警告,不影响功能与精度:

    UserWarning: Cannot create tensor with internal format while allow_internal_format=False,
    tensor will be created with base format.

    可通过设置环境变量消除:

    export ALLOW_INTERNAL_FORMAT=1
  3. 首次推理延迟:NPU 首次推理包含算子图编译开销,延迟与 CPU 接近;后续推理因算子缓存显著加速。

  4. 生产环境优化建议:

    export TASK_QUEUE_ENABLE=1
    export CPU_AFFINITY_CONF=1

    可进一步提升吞吐性能。

  5. Tokenizer 依赖:首次加载 tokenizer 时可能提示 pip install sacremoses,该依赖为可选,不影响基础分词功能。