OPUS-MT 部署
介绍
OPUS-MT 是由赫尔辛基大学开发的开源神经机器翻译项目,基于高性能的 Transformer 架构。该模型基于 Marian NMT 框架,并利用 OPUS 数据集中的大规模双语语料库进行训练。OPUS-MT 系列模型采用Transformer 架构,能够准确捕捉文本的语义并将其翻译为自然流畅的对应语种。该模型广泛应用于跨语言文本转换、内容本地化、多语言交流等场景,提供了高效、准确的翻译服务,适合各种翻译需求。
本章节将演示如何在边缘设备上完成 opus-mt-en-zh 部署、加载与翻译流程。提供以下方式部署:
- AidLite Python API
在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。
- 设备:Rhino Pi-X1
- 系统:Ubuntu 22.04
- 源模型:opus-mt-en-zh
- 量化模型精度:FP16
- Model Farm 模型参考:YOLOv5s-INT8
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
- Rhino Pi-X1 硬件
- Ubuntu 22.04 系统或 AidLux 系统
下载 YOLOv5s-INT8 模型资源
bash
mms list opus-mt
#------------------------可以看到 opus-mt 系列模型------------------------
Model Precision Chipset Backend
----- --------- ------- -------
opus-mt-en-es FP16 Qualcomm QCS8550 QNN2.36
opus-mt-en-zh FP16 Qualcomm QCS8550 QNN2.36
opus-mt-es-en FP16 Qualcomm QCS8550 QNN2.36
opus-mt-zh-en FP16 Qualcomm QCS8550 QNN2.36
# 下载 YOLOv5s-int8
mms get -m opus-mt-en-zh -p fp16 -c qcs8550 -b qnn2.36 -d /home/aidlux/opus-mt-en-zh
cd /home/aidlux/opus-mt-en-zh
# 解压
unzip opus-mt-en-zh_qcs8550_qnn233_fp16_aidlite.zip💡注意
开发者也可以在 Model Farm 网页上搜索并下载
AidLite SDK 安装
开发者也可以参考模型文件夹中的 README.md 安装 SDK
- 确保 QNN 后端版本
≥ 2.31 - 确保
aidlite-sdk和aidlite-qnnxxx的版本是2.3.x
bash
# AidLite & QNN 版本检查
dpkg -l | grep aidlite
#------------------------ 可以看到类似如下输出 ------------------------
ii aidlite-qnn236 2.3.0.230 arm64 aidlux aidlite qnn236 backend plugin
ii aidlite-sdk 2.3.0.230 arm64 aidlux inference module sdkQNN & AidLite 版本更新
bash
# 安装 AidLite SDK
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
sudo aid-pkg install aidlite-qnn236
# aidlite sdk c++ check
python3 -c "import aidlite; print(aidlite.get_library_version())"
# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"AidLite Python API 部署
安装 Python 依赖库
bash
cd /home/aidlux/opus-mt-en-zh/model_farm_opus-mt-en-zh_qcs8550_qnn233_fp16_aidlite/
pip install -r requirements.txt运行 Python API 例子
bash
cd /home/aidlux/opus-mt-en-zh/model_farm_opus-mt-en-zh_qcs8550_qnn233_fp16_aidlite/
python main.py可以在命令行看到模型推理耗时 (单位 ms)以及翻译结果:
plain
{'input_ids': tensor([[ 906, 32, 3, 13193, 1657, 25, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1]])}
encoder time: 0.007657289505004883
decoder time: 0.004458427429199219
decoder time: 0.004180431365966797
decoder time: 0.004227876663208008
decoder time: 0.004235744476318359
decoder time: 0.004320621490478516
[4393, 17546, 6008, 25]
今天天气怎么样?开发者可以在
main.py中修改输入语句