reComputer RK3576 模块开发套件应用
最近更新:
应用示例
使用 RK1820 运行本地 LLM 和 VLM
RK1820 不仅可用于模型性能测试,还能通过 rkllm3-server 在 reComputer RK3576 上部署本地大语言模型(LLM)和视觉语言模型(VLM),并借助其兼容 OpenAI 的 API 构建本地 AI 应用。
本示例将介绍:
-
使用 Qwen3.5-0.8B 构建本地 LLM 聊天服务
-
使用 Qwen2.5-VL-3B_prune 构建本地图像理解服务
rkllm3-server 基于 RKNPU3,通过兼容 OpenAI 的 Chat API 提供 LLM 推理服务。它可以集成到 Python 应用、Web UI 以及其他 AI Agent 框架中。
前置条件
开始本教程前,请完成 RK1820 的安装及 RKNN3 Runtime 配置,并确认:
Plainrknn-smi info -lRK1820 应能被正常识别。
运行本地 LLM
本示例使用 Qwen3.5-0.8B。
模型目录包含以下内容:
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.weight进入模型目录:
cd ~/Downloads/Qwen3.5-0.8B启动本地 LLM 服务器
执行以下命令:
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.8该服务器支持:
Rockchip 官方的 rkllm3-server 从 model、weight、vocab 和 embed 文件中加载本地 LLM。它还允许你配置上下文长度、最大输出 Token 数以及 NPU 核心掩码。
模型加载成功后,你将看到类似以下的输出:
rknn3_model_init success!
main: model loaded
server is listening on http://0.0.0.0:8080此时,本地 LLM API 已启动。
与本地 LLM 对话
打开另一个终端。
安装 Python OpenAI SDK:
pip3 install openai创建测试程序:
nano llm_chat.py写入:
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()运行:
python3 llm_chat.py模型将通过 RK1820 在本地生成回复。
Rockchip 官方示例同样使用 client.chat.completions.create() 访问本地 RKLLM3 服务器,并支持流式输出、KV Cache 和最大输出 token 数等参数。
Qwen3.5-0.8B 性能
在配备 RK1820 AI 加速器的 reComputer RK3576 开发套件上实测:
测试结果显示,Qwen3.5-0.8B 可达到约:
生成速度:约 92.89 tokens/s
能够满足本地聊天助手、文本生成和指令理解等实时交互应用的需求。
运行本地 VLM
除了纯文本 LLM,RK1820 还可以运行 VLM(视觉语言模型)。
本示例使用:
Qwen2.5-VL-3B_prune
该模型可以处理:
Image + Prompt
↓
Vision Encoder
↓
Multimodal LLM
↓
Text Response也就是说,可以实现图像描述、场景理解和视觉问答等应用。
准备 Qwen2.5-VL-3B_prune
模型目录包含:
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.weightQwen2.5-VL 的运行时包含独立的 Vision Model 和 LLM Model。
启动 VLM 服务器
如果当前已有 LLM Server 在运行,请先使用:
Ctrl+C停止之前的服务。
进入模型目录:
cd ~/Downloads/Qwen2.5-VL-3B_prune执行:
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 392关键参数如下:
-m → LLM Model
--model2 → Vision Model
--core-mask → NPU Core used by LLM
--core-mask2 → NPU Core used by VisionRockchip 官方的 Qwen2.5-VL 服务器示例同样采用独立的 LLM 和视觉模型,并以 392 脳 392 的输入图像尺寸运行视觉语言模型。
测试图像理解
本示例使用以下图像:
/home/seeed/Downloads/people.png创建文件:
nano vlm_test.py写入内容:
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()执行命令:
python3 vlm_test.pyRKLLM3 官方多模态示例同样将本地图像转换为 Base64 格式,并以 OpenAI 兼容的 image_url 格式提交给本地模型。
VLM 输出示例
输入:
Describe this image in detail.Qwen2.5-VL-3B_prune 能够识别图像中的人物、位置关系、街道环境、建筑物、树木以及光照情况。
例如:
The image depicts a group of people walking down
an urban street on what appears to be a sunny day...Qwen2.5-VL-3B_prune 性能
本次测试得到的端到端 VLM 结果汇总如下。
TTFT(Time To First Token,首字生成时间)
1.42 s该指标指从提交图像和提示词开始,到模型生成第一个 token 为止所耗费的时间。
对于 VLM,该耗时包含图像处理、Vision Encoder、多模态 Prefill 以及启动文本生成所需的时间,因此比单独测试纯 LLM 更贴近真实应用体验。
本测试设置
n_predict=256,模型输出在达到 256 个 Streaming Chunks 后截断。在实际应用中,可根据 Context Length 和业务需求调整最大输出 Token 数。
构建本地 AI 应用
通过 rkllm3-server,可将 RK1820 的模型能力以标准 HTTP API 的形式提供给上层应用。
因此,你可以进一步构建:
Local Chat Assistant
Image Understanding
Visual Question Answering
Document / Image Analysis
Private Edge AI Assistant典型的应用架构如下:
Web UI / Python / Application
│
│ OpenAI-compatible API
▼
rkllm3-server
│
▼
RKNN3 Runtime
│
PCIe Gen2 x1
│
▼
RK1820
┌─────┴─────┐
│ │
LLM VLM这样,上层应用即可通过 API 调用运行在 RK1820 上的本地 AI 模型,而无需直接操作 RKNN3 Runtime。
监控 RK1820
运行 LLM 或 VLM 应用时,可使用:
sudo rknn-smi info -w实时查看:
NPU Utilization
Memory Usage
Temperature
Health Status以观察模型运行期间 RK1820 的状态。
总结
借助 RK1820,reComputer RK3576 可运行本地 LLM 和 VLM,并通过 rkllm3-server 将模型能力以本地 API 形式提供给上层应用。
本次验证的实际结果如下:
| 应用场景 | 模型 | 结果 |
|---|---|---|
| 本地 LLM | Qwen3.5-0.8B | ✅ 92.89 tokens/s |
| 本地 VLM | Qwen2.5-VL-3B_prune | ✅ 1.42 s TTFT |