CV / Lite Transformer

Lite Transformer

在 reComputer RK3576 和 RK3588 上通过 RKNN 加速的 Lite Transformer 英译中模型。

2 次下载
精度
RKNN

选择你正在使用的设备,设置指南和文档将相应更新。

快速开始

部署
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-lite_transformer:latest

REST API

使用 REST API 进行推理。复制以下命令。

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "lite-transformer-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "lite-transformer-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

模型详情

快速开始

1. 安装 Docker

在开发板上运行以下命令安装 Docker:

bash
# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里云镜像源安装
sudo sh get-docker.sh --mirror Aliyun
# 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker

2. 运行项目(一条命令,Web 预览)

本项目使用 RKNN 编码器和解码器提供英译中服务,并显示输入和输出的 BPE 词元 ID。

步骤 A:拉取镜像

bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-lite_transformer:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-lite_transformer:latest

步骤 B:一键运行

适用于 RK3588:

bash
sudo docker run --rm --privileged --net=host \
+    -e PYTHONUNBUFFERED=1 \
+    -e RKNN_LOG_LEVEL=0 \
+    -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
+    ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-lite_transformer:latest

通过以下地址访问: http://<Board_IP>:8000


适用于 RK3576:

bash
sudo docker run --rm --privileged --net=host \
+    -e PYTHONUNBUFFERED=1 \
+    -e RKNN_LOG_LEVEL=0 \
+    -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
+    ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-lite_transformer:latest

通过以下地址访问: http://<Board_IP>:8000

3. 命令行推理

bash
python inference.py --platform rk3576 --model_dir model --text "thank you"

在 RK3588 源目录中运行时,请使用 --platform rk3588


🔌 API 文档

Endpoint: POST /api/models/lite_transformer/predict

请求参数(Multipart/Form-Data):

  • text:必填英文文本,编码后最多 15 个 BPE 源词元,另加 EOS。

使用示例:

bash
curl -X POST "http://127.0.0.1:8000/api/models/lite_transformer/predict" \
+    -F 'text=thank you'

响应格式(JSON):

json
{
  "success": true,
  "model": "lite_transformer",
  "platform": "rk3576",
  "inference_time_ms": 42.6,
  "result": {
    "input_text": "thank you",
    "translation": "谢谢你",
    "input_tokens": [
      1234,
      5678
    ],
    "output_tokens": [
      9012,
      3456
    ],
    "input_token_count": 2,
    "output_token_count": 2
  }
}

限制按 BPE 词元而不是单词计算,超长输入会被拒绝。GET /api/config 返回 {},该模型没有运行时热切换参数。每个平台仅提供一套编码器/解码器。

2. 系统配置接口

获取当前配置

  • Endpoint: GET /api/config
  • Response: {}

使用 GET /api/health 查看当前平台、模型就绪状态、已加载的 RKNN 文件和运行时能力。OpenAPI 文档位于 /docs


🛠️ 开发者指南(生产环境建议)

代码说明

  • web_service.py:
    • Web API:提供浏览器界面、推理接口、配置接口、健康状态和请求校验。
  • task_runtime.py:
    • 执行 BPE 分词和长度校验,运行编码器并使用解码器自回归生成中文文本。
  • inference.py: 提供一次性命令行推理。

模型文件

组件文件
Encodermodel/encoder.rknn
Decodermodel/decoder.rknn
BPE datamodel/bpe_order.txt
Token mapsmodel/cw_token_map_order.txt, model/dict_order.txt
Embeddingsmodel/position_embed.bin, model/token_embed.bin

修改模型

  1. 将兼容的转换后文件放入 model/,并保留上表中的文件名。
  2. 替换时保持所有组件来自同一转换套件,并维持原有输入、输出和预处理约定。
  3. 发布前在 RK3576 和 RK3588 上验证 Web、REST API 和命令行路径。

构建本地镜像

请在 reComputer-RK-CV 根目录运行:

bash
docker build -f docker/rk3576/lite_transformer.dockerfile \
+    -t rk3576-lite_transformer:local src/rk3576_lite_transformer

docker build -f docker/rk3588/lite_transformer.dockerfile \
+    -t rk3588-lite_transformer:local src/rk3588_lite_transformer

输入与输出

输入:最多 15 个源 BPE 词元加 EOS 的英文文本。输出:中文译文及输入/输出词元信息。