CV / Lite Transformer

Lite Transformer

reComputer RK3588

Mit RKNN beschleunigte Englisch-Chinesisch-Übersetzung durch Lite Transformer auf reComputer RK3576 und RK3588.

30 Downloads
Präzision
RKNN

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.

Bereitstellen
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

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

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

Modelldetails

Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.

Schnellstart

1. Docker installieren

Führen Sie zur Installation von Docker folgende Befehle auf dem Entwicklungsboard aus:

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. Projekt ausführen (ein Befehl und Webvorschau)

Dieses Projekt bietet Übersetzung vom Englischen ins Chinesische über einen Webbrowser. Die Oberfläche zeigt die Übersetzung und die vom RKNN-Encoder und -Decoder verarbeiteten BPE-Token-IDs an.

Schritt A: Images abrufen

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

Schritt B: mit einem Befehl starten

Für 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

Aufruf: http://<Board_IP>:8000


Für 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

Aufruf: http://<Board_IP>:8000

Es ist keine Kamera-, Anzeige- oder Audio-Gerätezuordnung erforderlich.

3. Inferenz über die Befehlszeile

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

Verwenden Sie im RK3588-Quellverzeichnis --platform rk3588.


🔌 API-Dokumentation

Das Projekt bietet eine synchrone REST-Schnittstelle zur Übersetzung kurzer Texte vom Englischen ins Chinesische. Die interaktive OpenAPI-Dokumentation ist unter http://<Board_IP>:8000/docs verfügbar.

1. Übersetzungsschnittstelle

Endpunkt: POST /api/models/lite_transformer/predict

Anfrageparameter (Multipart/Form-Data):

  • text: Erforderlicher englischer Ausgangstext. Die kodierte Eingabe darf höchstens 15 BPE-Tokens enthalten; EOS belegt die verbleibende feste Eingabeposition.

Anwendungsbeispiel:

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

Antwortformat (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
  }
}

Die Grenze gilt für BPE-Tokens, nicht für Wörter. Ein Wort kann mehrere Tokens ergeben; zu lange Eingaben werden abgewiesen statt stillschweigend gekürzt. Dieses kompakte Modell ist für kurze Ausdrücke gedacht und nicht mit einem großen allgemeinen Übersetzungsmodell vergleichbar.

2. Systemstatus und Konfiguration

Aktuellen Systemstatus abrufen

  • Endpunkt: GET /api/health
  • Antwort: Enthält Plattform, geladene Modelldateien, Eingabetyp und Laufzeitfunktionen.

Aktuelle Konfiguration abrufen

  • Endpunkt: GET /api/config
  • Antwort: {}, da Lite Transformer keine Laufzeiteinstellungen hat.

Nichtleere Daten an POST /api/config werden abgewiesen, da dieses Modell keine im Betrieb austauschbaren Laufzeitparameter besitzt.


🛠️ Entwicklerhandbuch (Empfehlungen für den Produktionseinsatz)

Codebeschreibung

  • web_service.py:
    • Web-API: Stellt die Browser-Benutzeroberfläche, den Übersetzungsendpunkt, den Systemstatus und den Konfigurationsendpunkt bereit.
    • Validierung: Erfordert nichtleeren Text und gibt Eingabefehler als HTTP-400-Antworten zurück.
  • task_runtime.py:
    • Tokenisierung: Wendet die mitgelieferten BPE-Daten an und validiert explizit die 15-Token-Grenze für den Ausgangstext.
    • RKNN-Inferenz: Führt den Encoder aus und dekodiert anschließend autoregressiv mit dem Decoder und seinen Zustandscaches.
  • inference.py: Bietet einmalige Übersetzung über die Befehlszeile.

Modelldateien

KomponenteDatei
Encodermodel/encoder.rknn
Decodermodel/decoder.rknn
BPE-Merge-Datenmodel/bpe_order.txt
Token-Mapsmodel/cw_token_map_order.txt, model/dict_order.txt
Embeddingsmodel/position_embed.bin, model/token_embed.bin

Modelle ändern

  1. Legen Sie den konvertierten Encoder und Decoder in model/ ab und behalten Sie deren Dateinamen bei.
  2. Halten Sie die Tokenizer-Wörterbücher und Embedding-Dateien auf die Konvertierung von Encoder und Decoder abgestimmt.
  3. Stellen Sie sicher, dass der Ersatz die 15-Quelltoken-Eingabe und die Decoder-Cache-Verträge einhält.

Encoder und Decoder sind erforderliche Stufen einer Pipeline, keine Modellgrößen- oder Quantisierungswahlen. Das Upstream-Projekt bietet derzeit ein kompatibles Paket für jede Plattform und keinen separaten Modellvarianten-Parameter.

Lokale Images erstellen

Im Stammverzeichnis von reComputer-RK-CV ausführen:

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

Eingaben und Ausgaben

Eingabe: englischer Text mit höchstens 15 Quell-BPE-Tokens plus EOS. Ausgabe: chinesische Übersetzung und Informationen zu Ein- und Ausgabe-Tokens.