VLM / Qwen2.5-VL

Qwen2.5-VL 3B

reComputer RK3576

Een lichtgewicht maar krachtig Qwen2.5-VL 3B vision-language-model, geoptimaliseerd voor efficiënte redeneertaken en implementatie.

68 downloads

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 -d \
  --name recomputer-rk-vlm \
  --privileged \
  -p 8001:8001 \
  -v /dev:/dev \
  -e MODEL_KIND=vlm \
  ghcr.io/seeed-projects/recomputer-rk-llm/vlm/qwen2.5-vl-3b-instruct:rk3576-w4a16-g128

Modeldetails

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

VLM-implementatie op reComputer RK

Deze gedeelde handleiding is van toepassing op elke VLM in de catalogus, waaronder Qwen3.5. Elke gepubliceerde VLM-image bevat een bijpassend RKLLM-taalmodel en een RKNN-vision-encoder voor het geselecteerde board en de geselecteerde kwantisatie.

De huidige upstream-omgeving gebruikt RKLLM v1.3.1 en RKNN-runtime / Toolkit Lite 2 v2.5.0. Nieuwe of bijgewerkte modeldefinities moeten worden gebouwd en gepubliceerd voordat hun tags kunnen worden opgehaald. Bouw eerst de omgevingsimage en bouw daarna de geselecteerde model-images opnieuw; zie de upstream-repository en de VLM-implementatiehandleiding.

Modelprofielen en Gemma 4-preview

Model-images leveren hun bijpassende runtime-instellingen. Qwen2.5-VL en Qwen3-VL gebruiken VLM_IMAGE_SIZE=448. Gemma 4 gebruikt VLM_MODEL_FAMILY=gemma4, VLM_IMAGE_SIZE=480 en RKLLM_EMBED_FLASH=1 en bevat een audio-encoder. Volg voor aangepaste artefacten de bijbehorende upstream-modeldefinitie in plaats van modelprofielen of encoderbestanden te mengen.

Gemma 4 kan een base64 WAV input_audio-contentdeel accepteren via hetzelfde chat-completions-endpoint. Aangepaste Gemma 4-implementaties moeten de bijpassende audio-encoder laden via AUDIO_MODEL_FILE of AUDIO_MODEL_PATH; zie de upstream VLM-implementatiehandleiding voor de configuratie.

Indeling van gepubliceerde images

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

W4A16-G128-images zijn doorgaans uitsluitend geschikt voor RK3576. RK3588 VLM-records gebruiken W8A8.

Vereisten

  • reComputer RK3576 of RK3588 met een 64-bits Linux-image
  • Docker en Docker Buildx geïnstalleerd
  • NPU-toegang via /dev
  • Poort 8001 beschikbaar op het board

VLM-images gebruiken de OpenAI-compatibele API en bieden geen interactieve chat in de terminal.

Een gepubliceerde VLM uitvoeren

Vervang <model-id> en <quantization> door de geselecteerde catalogusrecord.

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

Status- en API-documentatie

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

Multimodaal OpenAI-verzoek

De server accepteert één afbeelding per verzoek. Gebruik een openbare HTTP(S)-URL of een base64-data-URL.

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
  }'

Plaats voor een lokale afbeelding een data-URL in image_url.url:

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

Multimodaal streamingverzoek

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
  }'

Python-client:

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

Configureer een aangepaste OpenAI-compatibele provider:

  • API-host: http://<board-ip>:8001/v1
  • API-sleutel: een willekeurige waarde, zoals rkllm-local
  • Model: rkllm-vision

Voeg een afbeelding toe nadat u de provider hebt geselecteerd.

Probleemoplossing

  • Combineer geen taalmodel- en vision-encoderartefacten van verschillende boards of tags.
  • Als de server meldt dat een vision-model ontbreekt, controleer dan MODEL_KIND=vlm en de tag van de gepubliceerde image.
  • Controleer de opstartuitvoer met sudo docker logs recomputer-rk-vlm.

Invoer en uitvoer

Invoer: een afbeelding en tekstprompt. Uitvoer: op de afbeelding gebaseerde gegenereerde tekst via een OpenAI-compatibele API.