reComputer RK3576 Module Dev Kit: Toepassingen
Laatst bijgewerkt:
Toepassingen
Lokale LLM's en VLM's uitvoeren met de RK1820
De RK1820 kan niet alleen worden gebruikt voor het testen van modelprestaties, maar ook om lokale LLM's (large language models) en VLM's (vision-language models) op de reComputer RK3576 te implementeren via rkllm3-server. Daarnaast kun je er lokale AI-toepassingen mee bouwen via de OpenAI-compatibele API.
In dit voorbeeld wordt uitgelegd hoe je:
-
Qwen3.5-0.8B gebruikt om een lokale LLM-chatdienst op te zetten
-
Qwen2.5-VL-3B_prune gebruikt om een lokale dienst voor beeldbegrip op te zetten
rkllm3-server is gebaseerd op RKNPU3 en biedt LLM-inferentie via een OpenAI-compatibele Chat API. Het kan worden geïntegreerd in Python-toepassingen, web-UI's en andere frameworks voor AI-agents.
Vereisten
Voordat je deze tutorial start, moet je de installatie van de RK1820 en de configuratie van de RKNN3 Runtime voltooien. Controleer vervolgens of:
Plainrknn-smi info -lDe RK1820 correct wordt herkend.
Een lokale LLM uitvoeren
Dit voorbeeld maakt gebruik van Qwen3.5-0.8B.
De modelmap bevat:
Qwen2.5-VL-3B_prune/
├── Qwen2.5-VL-3B_prune.embed.bin
├── Qwen2.5-VL-3B_prune.tokenizer.gguf
├── llm_Qwen2.5-VL-3B_prune.rknn
├── llm_Qwen2.5-VL-3B_prune.weight
├── vision_Qwen2.5-VL-3B_prune.rknn
└── vision_Qwen2.5-VL-3B_prune.weightGa naar de modelmap:
cd ~/Downloads/Qwen3.5-0.8BDe lokale LLM-server starten
Voer uit:
rkllm3-server \
-m Qwen3.5-0.8B.rknn \
--weight Qwen3.5-0.8B.weight \
--vocab Qwen3.5-0.8B.tokenizer.gguf \
--embed Qwen3.5-0.8B.embed.bin \
--host 0.0.0.0 \
--port 8080 \
-c 1024 \
--n_predict 256 \
--core-mask 0xff \
--repeat-penalty 1.1 \
--presence-penalty 1.0 \
--frequency-penalty 1.0 \
--top-k 1 \
--top-p 0.8 \
--temp 0.8De server ondersteunt:
De officiële rkllm3-server van Rockchip laadt de lokale LLM vanuit de bestanden model, weight, vocab en embed. Je kunt hiermee ook de contextlengte, het maximale aantal output-tokens en het NPU-coremask configureren.
Nadat het model succesvol is geladen, zie je iets als:
rknn3_model_init success!
main: model loaded
server is listening on http://0.0.0.0:8080Op dit punt is de lokale LLM-API gestart.
Chatten met de lokale LLM
Open een nieuwe terminal.
Installeer de Python OpenAI SDK:
pip3 install openaiMaak een testprogramma aan:
nano llm_chat.pySchrijf:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="sk-no-key-required"
)
response = client.chat.completions.create(
model="",
messages=[
{
"role": "user",
"content": "Explain edge AI in three sentences."
}
],
stream=True,
extra_body={
"n_keep": 0,
"cache_prompt": False,
"id_slot": 0,
"n_predict": 256
}
)
for chunk in response:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
print()Uitvoeren:
python3 llm_chat.pyHet model genereert antwoorden lokaal via de RK1820.
Het officiële Rockchip-voorbeeld gebruikt ook client.chat.completions.create() om toegang te krijgen tot de lokale RKLLM3-server en ondersteunt parameters zoals streaming, KV-cache en maximale output tokens.
Prestaties van Qwen3.5-0.8B
Gemeten op de reComputer RK3576 Dev Kit met RK1820 AI Accelerator:
De testresultaten tonen aan dat Qwen3.5-0.8B ongeveer het volgende bereikt:
Generatiesnelheid: ongeveer 92.89 tokens/s
Dit voldoet aan de eisen voor real-time interactieve toepassingen, zoals lokale chat-assistenten, tekstgeneratie en instructiebegrip.
Een lokale VLM uitvoeren
Naast alleen-tekst LLM's kan de RK1820 ook VLM's (Vision-Language Models) uitvoeren.
Dit voorbeeld gebruikt:
Qwen2.5-VL-3B_prune
Dit model kan verwerken:
Image + Prompt
↓
Vision Encoder
↓
Multimodal LLM
↓
Text ResponseDat wil zeggen, toepassingen zoals beeldbeschrijving, scenebegrip en visuele vraagbeantwoording kunnen worden geïmplementeerd.
Qwen2.5-VL-3B_prune voorbereiden
De modelmap bevat:
Qwen2.5-VL-3B_prune/
├── Qwen2.5-VL-3B_prune.embed.bin
├── Qwen2.5-VL-3B_prune.tokenizer.gguf
├── llm_Qwen2.5-VL-3B_prune.rknn
├── llm_Qwen2.5-VL-3B_prune.weight
├── vision_Qwen2.5-VL-3B_prune.rknn
└── vision_Qwen2.5-VL-3B_prune.weightDe runtime van Qwen2.5-VL bestaat uit een onafhankelijk Vision Model en LLM Model.
De VLM-server starten
Als er momenteel een LLM Server actief is, gebruik dan eerst:
Ctrl+Com de vorige service te stoppen.
Ga naar de modelmap:
cd ~/Downloads/Qwen2.5-VL-3B_pruneVoer uit:
rkllm3-server \
-m llm_Qwen2.5-VL-3B_prune.rknn \
--weight llm_Qwen2.5-VL-3B_prune.weight \
--model2 vision_Qwen2.5-VL-3B_prune.rknn \
--weight2 vision_Qwen2.5-VL-3B_prune.weight \
--vocab Qwen2.5-VL-3B_prune.tokenizer.gguf \
--embed Qwen2.5-VL-3B_prune.embed.bin \
--host 0.0.0.0 \
--port 8080 \
-c 768 \
--n_predict 256 \
--core-mask 0xff \
--core-mask2 0xff \
--repeat-penalty 1.1 \
--presence-penalty 1.0 \
--frequency-penalty 1.0 \
--top-k 1 \
--top-p 0.8 \
--temp 0.8 \
--img-start "<|vision_start|>" \
--img-end "<|vision_end|>" \
--img-content "<|image_pad|>" \
--img-width 392 \
--img-height 392De belangrijkste parameters zijn:
-m → LLM Model
--model2 → Vision Model
--core-mask → NPU Core used by LLM
--core-mask2 → NPU Core used by VisionHet officiële Rockchip Qwen2.5-VL servervoorbeeld maakt ook gebruik van gescheiden LLM- en visuele modellen, en voert het vision-language model uit met een invoerbeeld van 392 脳 392.
Testen van beeldbegrip
Dit voorbeeld gebruikt de volgende afbeelding:
/home/seeed/Downloads/people.pngMaak aan:
nano vlm_test.pySchrijf:
import base64
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="sk-no-key-required"
)
image_path = "/home/seeed/Downloads/people.png"
with open(image_path, "rb") as image_file:
base64_image = base64.b64encode(
image_file.read()
).decode("utf-8")
response = client.chat.completions.create(
model="Qwen2.5-VL",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url":
f"data:image/png;base64,{base64_image}"
}
},
{
"type": "text",
"text":
"Describe this image in detail."
}
]
}
],
stream=True,
extra_body={
"n_keep": 0,
"cache_prompt": False,
"id_slot": 0,
"n_predict": 256
}
)
for chunk in response:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
print()Uitvoeren:
python3 vlm_test.pyHet officiële RKLLM3 multimodale voorbeeld converteert de lokale afbeelding ook naar Base64 en verzendt deze naar het lokale model in het OpenAI-compatibele image_url-formaat.
Voorbeeld van VLM-uitvoer
Invoer:
Describe this image in detail.Qwen2.5-VL-3B_prune kan personen, ruimtelijke relaties, straatomgevingen, gebouwen, bomen en verlichting in afbeeldingen herkennen.
Bijvoorbeeld:
The image depicts a group of people walking down
an urban street on what appears to be a sunny day...Prestaties van Qwen2.5-VL-3B_prune
De end-to-end VLM-resultaten van deze test zijn hieronder samengevat.
TTFT (Time To First Token)
1.42 sDit is de tijd vanaf het indienen van de afbeelding en prompt tot het moment dat het model begint met het genereren van het eerste token.
Bij een VLM omvat deze tijd de verwerking van afbeeldingen, de Vision Encoder, Multimodal Prefill en de tijd die nodig is om tekstgeneratie te starten. Dit komt dichter in de buurt van de werkelijke gebruikerservaring dan het testen van een puur LLM alleen.
Deze test gebruikt
n_predict=256, waardoor de modeluitvoer wordt afgebroken na 256 Streaming Chunks. In echte toepassingen kunt u het maximale aantal output Tokens aanpassen op basis van de Context Length en de vereisten van de toepassing.
Lokale AI-toepassingen bouwen
Via rkllm3-server kan de modelfunctionaliteit van de RK1820 worden aangeboden aan bovenliggende toepassingen via een standaard HTTP API.
Hierdoor kunt u verder bouwen aan:
Local Chat Assistant
Image Understanding
Visual Question Answering
Document / Image Analysis
Private Edge AI AssistantEen typische applicatiearchitectuur ziet er als volgt uit:
Web UI / Python / Application
│
│ OpenAI-compatible API
▼
rkllm3-server
│
▼
RKNN3 Runtime
│
PCIe Gen2 x1
│
▼
RK1820
┌─────┴─────┐
│ │
LLM VLMOp deze manier kunnen bovenliggende toepassingen de lokale AI-modellen die op de RK1820 draaien, aanroepen via de API, zonder direct met de RKNN3 Runtime te werken.
Bewaking van de RK1820
Tijdens het uitvoeren van LLM- of VLM-toepassingen kunt u gebruikmaken van:
sudo rknn-smi info -wom realtime inzicht te krijgen in:
NPU Utilization
Memory Usage
Temperature
Health Statusom de status van de RK1820 tijdens de modeloperatie te observeren.
Samenvatting
Met de RK1820 kan de reComputer RK3576 lokale LLM's en VLM's uitvoeren, en via rkllm3-server de modelfunctionaliteit aanbieden als lokale API aan bovenliggende toepassingen.
De daadwerkelijke verificatie is in deze run voltooid:
| Toepassing | Model | Resultaat |
|---|---|---|
| Lokale LLM | Qwen3.5-0.8B | ✅ 92.89 tokens/s |
| Lokale VLM | Qwen2.5-VL-3B_prune | ✅ 1.42 s TTFT |