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.
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.
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:latestAPI REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "lite-transformer-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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 :
# 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 docker2. 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
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 :
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:latestAccès via : http://<Board_IP>:8000
Pour RK3576 :
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:latestAccè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
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 :
curl -X POST "http://127.0.0.1:8000/api/models/lite_transformer/predict" \
-F 'text=thank you'Format de réponse (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
| Composant | Fichier |
|---|---|
| Encodeur | model/encoder.rknn |
| Décodeur | model/decoder.rknn |
| Données de fusion BPE | model/bpe_order.txt |
| Tables de tokens | model/cw_token_map_order.txt, model/dict_order.txt |
| Plongements | model/position_embed.bin, model/token_embed.bin |
Modifier les modèles
- Placez l'encodeur et le décodeur convertis dans
model/et conservez leurs noms de fichier. - Maintenez les dictionnaires du tokenizer et les fichiers de plongements alignés avec la conversion de l'encodeur et du décodeur.
- 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 :
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_transformerEntré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.