VLM / Qwen3-VL

Qwen3-VL 4B Instruct

reComputer RK3588

Qwen3-VL 4B Instruct combina un modelo de lenguaje RKLLM con un codificador de visión RKNN para la comprensión de imágenes en placas reComputer RK.

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 -d \
  --name recomputer-rk-vlm \
  --privileged \
  -p 8001:8001 \
  -v /dev:/dev \
  -e MODEL_KIND=vlm \
  ghcr.io/seeed-projects/recomputer-rk-llm/vlm/qwen3-vl-4b-instruct:rk3588-w8a8

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.

Implementación de VLM en reComputer RK

Esta guía compartida se aplica a todos los VLM incluidos en el catálogo, incluido Qwen3.5. Cada imagen de VLM publicada contiene un modelo de lenguaje RKLLM y un codificador de visión RKNN compatibles con la placa y la cuantización seleccionadas.

El entorno upstream actual utiliza RKLLM v1.3.1 y el runtime RKNN / Toolkit Lite 2 v2.5.0. Las definiciones de modelos nuevas o actualizadas deben compilarse y publicarse antes de poder descargar sus etiquetas. Compile primero la imagen del entorno y luego vuelva a compilar las imágenes de los modelos seleccionados; consulte el repositorio upstream y la guía de implementación de VLM.

Perfiles de modelos y vista previa de Gemma 4

Las imágenes de los modelos proporcionan su configuración de runtime correspondiente. Qwen2.5-VL y Qwen3-VL utilizan VLM_IMAGE_SIZE=448. Gemma 4 utiliza VLM_MODEL_FAMILY=gemma4, VLM_IMAGE_SIZE=480 y RKLLM_EMBED_FLASH=1, e incluye un codificador de audio. Para artefactos personalizados, siga la definición de modelo upstream correspondiente en lugar de mezclar perfiles de modelos o archivos de codificadores.

Gemma 4 puede aceptar una parte de contenido input_audio en WAV base64 a través del mismo endpoint de chat completions. Las implementaciones personalizadas de Gemma 4 deben cargar el codificador de audio correspondiente mediante AUDIO_MODEL_FILE o AUDIO_MODEL_PATH; consulte la guía de implementación de VLM upstream para la configuración.

Formato de la imagen publicada

text
ghcr.io/seeed-projects/recomputer-rk-llm/vlm/<model-id>:<platform>-<quantization>

Por lo general, las imágenes W4A16-G128 solo son compatibles con RK3576. Los registros de VLM para RK3588 utilizan W8A8.

Requisitos

  • reComputer RK3576 o RK3588 con una imagen de Linux de 64 bits
  • Docker y Docker Buildx instalados
  • Acceso a NPU a través de /dev
  • Puerto 8001 disponible en la placa

Las imágenes de VLM utilizan la API compatible con OpenAI y no proporcionan un chat interactivo en la terminal.

Ejecutar un VLM publicado

Sustituya <model-id> y <quantization> por los valores del registro seleccionado en el catálogo.

RK3576

bash
sudo docker run --rm -d \
  --name recomputer-rk-vlm \
  --privileged \
  -p 8001:8001 \
  -v /dev:/dev \
  -e MODEL_KIND=vlm \
  -e LOG_LEVEL=warning \
  ghcr.io/seeed-projects/recomputer-rk-llm/vlm/<model-id>:rk3576-<quantization>

RK3588

bash
sudo docker run --rm -d \
  --name recomputer-rk-vlm \
  --privileged \
  -p 8001:8001 \
  -v /dev:/dev \
  -e MODEL_KIND=vlm \
  -e LOG_LEVEL=warning \
  ghcr.io/seeed-projects/recomputer-rk-llm/vlm/<model-id>:rk3588-w8a8

Documentación de estado y API

bash
curl http://localhost:8001/health
curl http://localhost:8001/docs
curl http://localhost:8001/redoc

Solicitud multimodal compatible con OpenAI

El servidor acepta una imagen por solicitud. Utilice una URL HTTP(S) pública o una URL de datos en base64.

bash
curl -X POST http://localhost:8001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "rkllm-vision",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Describe this image in detail."},
        {"type": "image_url", "image_url": {"url": "https://example.com/your-image.jpg"}}
      ]
    }],
    "stream": false
  }'

Para una imagen local, coloque una URL de datos en image_url.url:

text
data:image/jpeg;base64,<base64-encoded-image>

Solicitud multimodal en streaming

bash
curl -N -X POST http://localhost:8001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "rkllm-vision",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "List the objects visible in this image."},
        {"type": "image_url", "image_url": {"url": "https://example.com/your-image.jpg"}}
      ]
    }],
    "stream": true
  }'

Cliente de Python:

python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8001/v1", api_key="dummy-key")
response = client.chat.completions.create(
    model="rkllm-vision",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Describe this image."},
            {"type": "image_url", "image_url": {"url": "https://example.com/your-image.jpg"}},
        ],
    }],
    max_tokens=128,
)
print(response.choices[0].message.content)

Cherry Studio

Configure un proveedor personalizado compatible con OpenAI:

  • Host de la API: http://<board-ip>:8001/v1
  • Clave de API: cualquier valor, como rkllm-local
  • Modelo: rkllm-vision

Adjunte una imagen después de seleccionar el proveedor.

Solución de problemas

  • No mezcle artefactos del modelo de lenguaje y del codificador de visión de distintas placas o etiquetas.
  • Si el servidor informa de que falta el modelo de visión, confirme MODEL_KIND=vlm y la etiqueta de la imagen publicada.
  • Inspeccione la salida de inicio con sudo docker logs recomputer-rk-vlm.

Entradas y salidas

Entrada: una imagen y un prompt de texto. Salida: texto generado mediante una API compatible con OpenAI.