跳到主要内容

Lite Transformer

本文档讲述如何在 NPU 上运行 Lite Transformer 英译中示例。

信息

参考 Model Zoo 下载获取示例。

Lite Transformer 包含 encoder 和 decoder 两个子模型。

Lite Transformer 示例目录结构:

$ tree ./
./
├── CMakeLists.txt
├── convert_model_decoder
├── convert_model_encoder
├── include
├── model
│ ├── bpe_order.txt
│ ├── cw_token_map_order.txt
│ ├── dict_order.txt
│ ├── lite_transformer_decoder_16_int16_a733.nb
│ ├── lite_transformer_encoder_16_int16_a733.nb
│ ├── position_embed.bin
│ └── token_embed.bin
├── src
└── README.md

模型转换

需要先进入容器开发环境。可以参考 Model Zoo 下载中创建容器这一部分。

信息

不同平台请使用对应的 Docker 镜像:

  • A733:ubuntu-npu:v2.0.10.2
  • T527:ubuntu-npu:v1.8.13

ONNX 浮点模型可从全志网盘获取:

将 BPE、字典等文件解压后放到 lite_transformer 目录。

X86 Linux PC
docker exec -it model-zoo /bin/bash

转换 encoder

X86 Linux PC
cd /workspace/examples/lite_transformer/convert_model_encoder/
./convert_model_env.sh
./pegasus_import.sh lite_transformer_encoder_16
./pegasus_quantize.sh lite_transformer_encoder_16 int16 2
X86 Linux PC
./pegasus_export_ovx_nbg.sh lite_transformer_encoder_16 int16 a733

转换 decoder

X86 Linux PC
cd /workspace/examples/lite_transformer/convert_model_decoder/
./convert_model_env.sh
./pegasus_import.sh lite_transformer_decoder_16
./pegasus_quantize.sh lite_transformer_decoder_16 int16 4
X86 Linux PC
./pegasus_export_ovx_nbg.sh lite_transformer_decoder_16 int16 a733

导出的模型文件存放在 ../model 目录。

编译示例

接下来可以编译示例,先 exit 退出容器,然后执行下面的命令编译示例。

首先需要配置交叉编译工具链。

信息

如果你已经在其他示例中配置过交叉编译工具链则可以跳过这一步。

X86 Linux PC
cd ../../../0-toolchains/

需要先手动点击链接下载之后放到 0-toolchains/ 再执行下面的命令:

X86 Linux PC
tar -xvf gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
cd ../examples/lite_transformer/
X86 Linux PC
../build_linux.sh -t a733 -s debian11

模型部署

编译示例完成之后,示例会安装到 install 目录,可以使用 scp 传输到板端。

配置 NPU 驱动

信息

如果你已经在其他示例中配置过 NPU 驱动则可以跳过这一步。

将驱动库 scp 传输到板端的 lib 目录。

  • A733 对应 common/npuruntime/lib_linux_aarch64/A733 目录
  • T527 对应 common/npuruntime/lib_linux_aarch64/T527 目录

然后执行下面的命令导出到环境变量。

Radxa SBC
echo 'export LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

运行示例

配置好驱动之后就可以运行示例了。

提示

对于 T527 平台,你还需要参考 A5E 的板端启用 NPU文档先启用 NPU ,然后使用下面的命令增加当前用户使用 /dev/vipcore 的权限。

Radxa SBC
sudo chmod 777 /dev/vipcore
Radxa SBC
cd lite_transformer_demo_linux_a733/
Radxa SBC
chmod +x ./lite_transformer_demo_a733
./lite_transformer_demo_a733 -nb0 model/lite_transformer_encoder_16_int16_a733.nb -nb1 model/lite_transformer_decoder_16_int16_a733.nb -i "so big"

运行结果如下:

$ ./lite_transformer_demo_a733 -nb0 model/lite_transformer_encoder_16_int16_a733.nb -nb1 model/lite_transformer_decoder_16_int16_a733.nb -i "so big"
encoder_path=model/lite_transformer_encoder_16_int16_a733.nb, decoder_path=model/lite_transformer_decoder_16_int16_a733.nb, input_strings=so big
VIPLite driver software version 2.0.3.2-AW-2024-08-30
nbg name=model/lite_transformer_encoder_16_int16_a733.nb, size: 3838272.
create network 0: 2533 us.
prepare network: 442 us.
nbg name=model/lite_transformer_decoder_16_int16_a733.nb, size: 19421952.
create network 1: 11027 us.
prepare network: 406 us.

input sentence:so big
output token: 2 83 139 676 84 2
output_strings: 如此巨大
inference time: 24.000 ms
destroy npu finished.
~NpuUint.

此性能数据仅计算模型推理的时间消耗。如无特别说明,不包含预处理和后处理的时间消耗。

SoCNPU模型输入分辨率网络创建耗时网络准备耗时单帧推理耗时后处理耗时总耗时帧率
全志 A733Vivante VIP9000lite-transformer16 tokens13.6 ms0.8 ms24.0 ms38.4 ms41.7 FPS

    您需要登录 GitHub 才能发表评论。如果您已登录,请忽略此消息。

    Radxa-docs © 2026 by Radxa Computer (Shenzhen) Co.,Ltd. is licensed under CC BY 4.0