CV / Lite Transformer

Lite Transformer

reComputer RK3588

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

30 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

Armbian 26.8.7 Gnome ou version ultérieure avec OTA overlayroot : Configurez le stockage de Docker avant de lancer des conteneurs pour éviter les erreurs de montage overlay.

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/rk3588-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

Armbian 26.8.7 Gnome ou version ultérieure avec OTA overlayroot : Configurez le stockage de Docker avant de lancer des conteneurs pour éviter les erreurs de montage overlay.

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer 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. Exécuter le projet (une commande, aperçu web)

Ce projet traduit de l'anglais vers le chinois depuis un navigateur web. L'interface affiche la traduction et les ID de tokens BPE traités par l'encodeur et le décodeur RKNN.

É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 via : 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 via : http://<Board_IP>:8000

Aucun mappage de caméra, d'écran ou de périphérique audio n'est nécessaire.

3. Inférence en ligne de commande

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

Utilisez --platform rk3588 lorsque vous exécutez le répertoire source RK3588.


🔌 Documentation de l'API

Le projet fournit une interface REST synchrone pour de courtes traductions de l'anglais vers le chinois. La documentation OpenAPI interactive est disponible à http://<Board_IP>:8000/docs.

1. Interface de traduction

Point d'accès : POST /api/models/lite_transformer/predict

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

  • text : Texte source anglais obligatoire. L'entrée encodée ne doit pas dépasser 15 tokens BPE ; EOS occupe la position restante de l'entrée fixe.

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 tokens BPE, pas sur les mots. Un mot peut produire plusieurs tokens ; une entrée trop longue est rejetée au lieu d'être tronquée silencieusement. Ce modèle compact est destiné aux phrases courtes et n'est pas comparable à un grand modèle de traduction généraliste.

2. État et configuration du système

Obtenir l'état actuel du système

  • Point d'accès : GET /api/health
  • Réponse : Comprend la plateforme, les fichiers de modèle chargés, le type d'entrée et les capacités de l'environnement d'exécution.

Obtenir la configuration actuelle

  • Point d'accès : GET /api/config
  • Réponse : {} car Lite Transformer n'a aucun réglage en cours d'exécution.

L'envoi de données non vides à POST /api/config est rejeté, car ce modèle ne possède aucun paramètre modifiable à chaud.


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

Description du code

  • web_service.py :
    • API web : Héberge l'interface du navigateur, le point d'accès de traduction, l'état de santé et le point d'accès de configuration.
    • Validation : Exige un texte non vide et renvoie les erreurs de saisie sous forme de réponses HTTP 400.
  • task_runtime.py :
    • Tokenisation : Applique les données BPE incluses et vérifie explicitement la limite de 15 tokens source.
    • Inférence RKNN : Exécute l'encodeur, puis réalise un décodage autorégressif avec le décodeur et ses caches d'état.
  • inference.py : Fournit la traduction en une exécution en ligne de commande.

Fichiers du modèle

ComposantFichier
Encodeurmodel/encoder.rknn
Décodeurmodel/decoder.rknn
Données de fusion BPEmodel/bpe_order.txt
Tables de tokensmodel/cw_token_map_order.txt, model/dict_order.txt
Plongementsmodel/position_embed.bin, model/token_embed.bin

Modifier les modèles

  1. Placez l'encodeur et le décodeur convertis dans model/ et conservez leurs noms de fichier.
  2. Maintenez les dictionnaires du tokenizer et les fichiers de plongements alignés avec la conversion de l'encodeur et du décodeur.
  3. Vérifiez que le remplacement conserve l'entrée de 15 tokens source et les contrats des caches du décodeur.

L'encodeur et le décodeur sont les étapes obligatoires d'un pipeline, pas des choix de taille ou de quantification. Le projet amont fournit actuellement un ensemble compatible par plateforme, sans paramètre distinct de variante de modèle.

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.