VLM / Gemma 4
Gemma 4 E2B IT VLM
reComputer RK3588
Gemma 4 E2B IT VLM combineert een RKLLM-taalmodel met een RKNN-vision-encoder voor beeldbegrip op reComputer RK-boards.
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.
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/gemma-4-e2b-it:rk3588-w8a8Modeldetails
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
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
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-w8a8Status- en API-documentatie
curl http://localhost:8001/health
curl http://localhost:8001/docs
curl http://localhost:8001/redocMultimodaal OpenAI-verzoek
De server accepteert één afbeelding per verzoek. Gebruik een openbare HTTP(S)-URL of een base64-data-URL.
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:
data:image/jpeg;base64,<base64-encoded-image>Multimodaal streamingverzoek
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:
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=vlmen de tag van de gepubliceerde image. - Controleer de opstartuitvoer met
sudo docker logs recomputer-rk-vlm.
Invoer en uitvoer
Invoer: tekst, een afbeelding of base64 WAV-audio. Uitvoer: gegenereerde tekst via een OpenAI-compatibele API.