CV / Lite Transformer

Lite Transformer

Traduction de l’anglais vers le chinois avec Lite Transformer accélérée par RKNN sur reComputer RK3576 et RK3588.

2 téléchargements
Précision
RKNN

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
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

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

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

Détails du modèle

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer Docker :

bash
# Télécharger le script d’installation
curl -fsSL https://get.docker.com -o get-docker.sh
# Installer avec le miroir Aliyun
sudo sh get-docker.sh --mirror Aliyun
# Démarrer Docker et activer le lancement automatique
sudo systemctl enable docker
sudo systemctl start docker

2. Exécuter le projet (une commande et aperçu Web)

Le projet traduit l’anglais vers le chinois avec un encodeur et un décodeur RKNN et affiche les jetons BPE.

Étape A : récupérer les images

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

Étape B : exécuter en une commande

Pour 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

Accès: http://<Board_IP>:8000


Pour 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

Accès: http://<Board_IP>:8000

3. Inférence en ligne de commande

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

Utilisez --platform rk3588 depuis le répertoire source RK3588.


🔌 Documentation de l’API

Endpoint: POST /api/models/lite_transformer/predict

Paramètres de la requête (Multipart/Form-Data) :

  • text : texte anglais obligatoire ; après encodage, 15 jetons BPE source au maximum plus EOS.

Exemple d’utilisation :

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

Format de réponse (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
  }
}

La limite porte sur les jetons BPE et tout dépassement est refusé. GET /api/config renvoie {} car aucun réglage n’est modifiable à chaud. Une seule paire est fournie par plateforme.

2. Interface de configuration du système

Obtenir la configuration actuelle

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

Utilisez GET /api/health pour consulter la plateforme active, l’état du modèle, les fichiers RKNN chargés et les capacités. La documentation OpenAPI se trouve sous /docs.


🛠️ Guide du développeur (recommandations de production)

Description du code

  • web_service.py:
    • API Web : fournit l’interface du navigateur, l’inférence, la configuration, l’état de santé et la validation des requêtes.
  • task_runtime.py:
    • Effectue la tokenisation et la validation, exécute l’encodeur puis génère le chinois de façon autorégressive.
  • inference.py: Fournit une inférence ponctuelle en ligne de commande.

Fichiers du modèle

ComposantFichier
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

Modifier les modèles

  1. Placez les fichiers convertis compatibles dans model/ en conservant les noms du tableau.
  2. Conservez tous les composants du même lot de conversion et respectez les contrats d’entrée, de sortie et de prétraitement.
  3. Avant publication, testez les parcours Web, REST et ligne de commande sur RK3576 et RK3588.

Construire les images locales

Exécutez depuis la racine de 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

Entrées et sorties

Entrée : texte anglais limité à 15 jetons BPE source plus EOS. Sortie : traduction chinoise et informations sur les jetons d’entrée et de sortie.