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.
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-w8a8Detalles 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
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
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
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-w8a8Documentación de estado y API
curl http://localhost:8001/health
curl http://localhost:8001/docs
curl http://localhost:8001/redocSolicitud 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.
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:
data:image/jpeg;base64,<base64-encoded-image>Solicitud multimodal en streaming
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:
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=vlmy 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.