CV / Lite Transformer

Lite Transformer

reComputer RK3588

reComputer RK3576およびRK3588上でRKNNにより高速化された英語から中国語への翻訳用Lite Transformer。

30 ダウンロード
精度
RKNN

使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。

はじめる

OTA overlayroot が有効な Armbian 26.8.7 Gnome 以降: コンテナを実行する前に Docker のストレージを設定してください overlay のマウントエラーを防ぐために必要です。

デプロイ
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

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())

モデル詳細

OTA overlayroot が有効な Armbian 26.8.7 Gnome 以降: コンテナを実行する前に Docker のストレージを設定してください overlay のマウントエラーを防ぐために必要です。

クイックスタート

1. Docker のインストール

開発ボードで以下のコマンドを実行して Docker をインストールします:

bash
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker

2. プロジェクトの実行(単一コマンド、Web プレビュー)

このプロジェクトは 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 ドキュメント

このプロジェクトは短い英語を中国語に翻訳する同期 REST インターフェースを提供します。対話型 OpenAPI ドキュメントは http://<Board_IP>:8000/docs にあります。

1. 翻訳インターフェース

エンドポイント: 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 トークン数に適用されます。単語から複数のトークンが生成される場合があり、長すぎる入力は黙って切り詰めずに拒否します。この小型モデルは短いフレーズ向けであり、大規模な汎用翻訳モデルとは同等ではありません。

2. システム状態と設定

現在のシステム状態の取得

  • エンドポイント: GET /api/health
  • レスポンス: プラットフォーム、読み込み済みモデルファイル、入力形式、ランタイムの機能を含みます。

現在の設定の取得

  • エンドポイント: GET /api/config
  • レスポンス: {}。Lite Transformer にランタイム設定がないためです。

このモデルには実行中に変更できるパラメータがないため、POST /api/config に空でないデータを送ると拒否されます。


🛠️ 開発者ガイド(本番環境向け推奨事項)

コードの説明

  • web_service.py:
    • Web API:ブラウザー画面、翻訳エンドポイント、ヘルスステータス、設定エンドポイントを提供します。
    • 検証:空でないテキストを要求し、入力エラーを HTTP 400 レスポンスとして返します。
  • task_runtime.py:
    • トークン化:同梱の BPE データを適用し、原文の 15 トークン上限を明示的に検証します。
    • RKNN 推論:エンコーダーを実行後、デコーダーと状態キャッシュを使って自己回帰デコードを行います。
  • inference.py:単発のコマンドライン翻訳を提供します。

モデルファイル

構成要素ファイル
エンコーダーmodel/encoder.rknn
デコーダーmodel/decoder.rknn
BPE マージデータmodel/bpe_order.txt
トークンマップmodel/cw_token_map_order.txt, model/dict_order.txt
埋め込みmodel/position_embed.bin, model/token_embed.bin

モデルの変更

  1. 変換済みエンコーダーとデコーダーを model/ に配置し、ファイル名を維持します。
  2. トークナイザー辞書と埋め込みファイルは、エンコーダー・デコーダーの変換結果と対応させます。
  3. 置換後も原文の 15 トークン入力とデコーダーキャッシュの仕様を満たすことを確認します。

エンコーダーとデコーダーは 一本のパイプラインに必要な段階であり、モデルサイズや量子化の選択肢ではありません。上流プロジェクトは現在、各プラットフォームに互換性のある 一バンドルを提供しており、独立したモデルバリアントのパラメータはありません。

ローカルイメージのビルド

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からなる英語テキスト。出力:中国語訳と入出力トークン情報。