CV / Lite Transformer

Lite Transformer

reComputer RK3588

Engels-naar-Chinees vertaling met Lite Transformer, versneld met RKNN op reComputer RK3576 en RK3588.

30 downloads
Precisie
RKNN

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Implementeren
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

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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

Modeldetails

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Snel aan de slag

1. Docker installeren

Voer de volgende opdrachten uit op het ontwikkelbord om Docker te installeren:

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. Het project uitvoeren (één opdracht, webvoorbeeld)

Dit project biedt vertaling van Engels naar Chinees via een webbrowser. De interface toont de vertaling en de BPE-token-ID’s die door de RKNN-encoder en -decoder worden verwerkt.

Stap A: images ophalen

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

Stap B: met één opdracht starten

Voor 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

Openen via: http://<Board_IP>:8000


Voor 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

Openen via: http://<Board_IP>:8000

Er is geen toewijzing van camera, beeldscherm of audio-apparaat vereist.

3. Inferentie via de opdrachtregel

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

Gebruik --platform rk3588 wanneer u vanuit de RK3588-bronmap werkt.


🔌 API-documentatie

Het project biedt een synchrone REST-interface voor het vertalen van korte teksten van Engels naar Chinees. Interactieve OpenAPI-documentatie is beschikbaar op http://<Board_IP>:8000/docs.

1. Vertaalinterface

Endpoint: POST /api/models/lite_transformer/predict

Aanvraagparameters (Multipart/Form-Data):

  • text: Verplichte Engelse brontekst. De gecodeerde invoer mag niet meer dan 15 BPE-tokens bevatten; EOS neemt de resterende vaste invoerpositie in.

Gebruiksvoorbeeld:

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

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

De limiet geldt voor BPE-tokens, niet voor woorden. Een woord kan meerdere tokens opleveren; te lange invoer wordt afgewezen in plaats van stilzwijgend afgekapt. Dit compacte model is bedoeld voor korte zinnen en is niet vergelijkbaar met een groot algemeen vertaalmodel.

2. Systeemstatus en configuratie

Huidige systeemstatus ophalen

  • Endpoint: GET /api/health
  • Antwoord: Bevat het platform, de geladen modelbestanden, het invoertype en de runtimefuncties.

Huidige configuratie ophalen

  • Endpoint: GET /api/config
  • Antwoord: {}, omdat Lite Transformer geen runtime-instellingen heeft.

Niet-lege gegevens naar POST /api/config worden afgewezen, omdat dit model geen tijdens het uitvoeren wijzigbare runtimeparameters heeft.


🛠️ Handleiding voor ontwikkelaars (productieadvies)

Beschrijving van de code

  • web_service.py:
    • Web-API: host de browserinterface, het vertaalendpoint, de gezondheidsstatus en het configuratieendpoint.
    • Validatie: vereist niet-lege tekst en geeft invoerfouten terug als HTTP 400-antwoorden.
  • task_runtime.py:
    • Tokenisatie: past de meegeleverde BPE-gegevens toe en valideert uitdrukkelijk de brongrens van 15 tokens.
    • RKNN-inferentie: voert de encoder uit en decodeert daarna autoregressief met de decoder en diens statuscaches.
  • inference.py: biedt eenmalige vertaling via de opdrachtregel.

Modelbestanden

OnderdeelBestand
Encodermodel/encoder.rknn
Decodermodel/decoder.rknn
BPE-samenvoeggegevensmodel/bpe_order.txt
Tokenmappenmodel/cw_token_map_order.txt, model/dict_order.txt
Embeddingsmodel/position_embed.bin, model/token_embed.bin

Modellen wijzigen

  1. Plaats de geconverteerde encoder en decoder in model/ en behoud hun bestandsnamen.
  2. Houd de tokenizer-woordenboeken en de embeddingbestanden afgestemd op de conversie van encoder en decoder.
  3. Controleer dat de vervanging de invoer van 15 brontokens en de decodercachecontracten handhaaft.

De encoder en decoder zijn vereiste fasen van één pipeline, geen modelgroottes of kwantiseringskeuzes. Het upstream-project levert momenteel één compatibele bundel per platform en geen aparte parameter voor modelvarianten.

Lokale images bouwen

Voer dit uit vanuit de hoofdmap van 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

Invoer en uitvoer

Invoer: Engelse tekst met maximaal 15 bron-BPE-tokens plus EOS. Uitvoer: Chinese vertaling en informatie over invoer- en uitvoertokens.