CV / Lite Transformer

Lite Transformer

reComputer RK3588

Traducción de inglés a chino con Lite Transformer acelerada mediante RKNN en reComputer RK3576 y RK3588.

30 descargas
Precisión
RKNN

Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.

Primeros pasos

Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.

Desplegar
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

Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.

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

Detalles del modelo

Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.

Inicio rápido

1. Instalar Docker

Ejecute los siguientes comandos en la placa de desarrollo para instalar 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. Ejecutar el proyecto (un comando, vista previa web)

Este proyecto traduce del inglés al chino desde un navegador web. La interfaz muestra la traducción y los ID de tokens BPE procesados por el codificador y el decodificador RKNN.

Paso A: descargar las imágenes

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

Paso B: ejecutar con un solo comando

Para 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

Acceda mediante: http://<Board_IP>:8000


Para 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

Acceda mediante: http://<Board_IP>:8000

No se requiere mapear cámaras, pantallas ni dispositivos de audio.

3. Inferencia por línea de comandos

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

Use --platform rk3588 al ejecutar el directorio fuente de RK3588.


🔌 Documentación de la API

El proyecto proporciona una interfaz REST síncrona para traducciones breves del inglés al chino. La documentación interactiva de OpenAPI está disponible en http://<Board_IP>:8000/docs.

1. Interfaz de traducción

Punto de acceso: POST /api/models/lite_transformer/predict

Parámetros de la solicitud (Multipart/Form-Data):

  • text: Texto fuente en inglés obligatorio. La entrada codificada no debe superar los 15 tokens BPE; EOS ocupa la posición restante de la entrada fija.

Ejemplo de uso:

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

Formato de respuesta (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
  }
}

El límite se aplica a tokens BPE, no a palabras. Una palabra puede producir varios tokens; se rechaza la entrada demasiado larga en lugar de truncarla silenciosamente. Este modelo compacto está pensado para frases cortas y no es comparable con un gran modelo de traducción de propósito general.

2. Estado y configuración del sistema

Obtener el estado actual del sistema

  • Punto de acceso: GET /api/health
  • Respuesta: Incluye la plataforma, los archivos de modelo cargados, el tipo de entrada y las capacidades del entorno de ejecución.

Obtener la configuración actual

  • Punto de acceso: GET /api/config
  • Respuesta: {} porque Lite Transformer no tiene ajustes en tiempo de ejecución.

Se rechazan los datos no vacíos enviados a POST /api/config porque este modelo no tiene parámetros modificables durante la ejecución.


🛠️ Guía para desarrolladores (recomendaciones de producción)

Descripción del código

  • web_service.py:
    • API web: Aloja la interfaz del navegador, el punto de acceso de traducción, el estado de salud y el punto de acceso de configuración.
    • Validación: Exige texto no vacío y devuelve los errores de entrada como respuestas HTTP 400.
  • task_runtime.py:
    • Tokenización: Aplica los datos BPE incluidos y valida explícitamente el límite de 15 tokens fuente.
    • Inferencia RKNN: Ejecuta el codificador y después realiza decodificación autorregresiva con el decodificador y sus cachés de estado.
  • inference.py: Proporciona traducción de una sola ejecución por línea de comandos.

Archivos del modelo

ComponenteArchivo
Codificadormodel/encoder.rknn
Decodificadormodel/decoder.rknn
Datos de fusión BPEmodel/bpe_order.txt
Mapas de tokensmodel/cw_token_map_order.txt, model/dict_order.txt
Embeddingsmodel/position_embed.bin, model/token_embed.bin

Modificar los modelos

  1. Coloque el codificador y el decodificador convertidos en model/ y conserve sus nombres de archivo.
  2. Mantenga los diccionarios del tokenizador y los archivos de embeddings alineados con la conversión del codificador y el decodificador.
  3. Verifique que el reemplazo conserva la entrada de 15 tokens fuente y los contratos de caché del decodificador.

El codificador y el decodificador son etapas obligatorias de una canalización, no opciones de tamaño o cuantización. Actualmente, el proyecto original proporciona un paquete compatible por plataforma y ningún parámetro independiente de variante de modelo.

Crear imágenes locales

Ejecute desde la raíz 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

Entradas y salidas

Entrada: texto inglés de hasta 15 tokens BPE de origen más EOS. Salida: traducción al chino e información de tokens de entrada y salida.