RK3588RKLLama部署
RK3588RKLLama部署
kikockRKLLama Docker 部署指南 (RK3588/RK3576)
本文档旨在帮助您在 Rockchip RK3588/RK3576 平台上,通过 Docker 快速部署支持 NPU 加速的 LLM 服务。
1. 前置检查
在部署之前,请确保宿主机的 NPU 驱动正常,因为 Docker 容器需要依赖宿主机的内核驱动。
# 检查 NPU 驱动版本
cat /sys/kernel/debug/rknpu/version
- 要求: 驱动版本建议 >= 0.9.6。如果版本过低,建议升级开发板固件。
2. 部署配置 (Docker Compose)
我们推荐使用 Docker Compose 进行管理,这样可以固化启动参数,避免每次输入长命令。
2.1 创建目录结构
在您的宿主机上创建一个文件夹(例如 ~/rkllama_docker),结构如下:
~/rkllama_docker/
├── docker-compose.yml # 服务配置文件
├── deploy.sh # 一键启动脚本
└── models/ # [自动创建] 存放模型文件的目录
2.2 配置文件 docker-compose.yml
请将以下内容保存为 docker-compose.yml:
version: ‘3.8’
services:
rkllama:
image: ghcr.io/notpunchnox/rkllama:main
container_name: rkllama
restart: unless-stopped
\# \[关键\] 必须开启特权模式,否则容器无法访问 NPU 和 DMA Buffer
privileged: true
\# 端口映射:API 服务端口 (兼容 Ollama API)
ports:
\- "8080:8080"
\# 目录挂载:
\# 左边 ./models 是宿主机路径 (您存放 .rkllm 文件的地方)
\# 右边 /opt/rkllama/models 是容器内固定路径 (不可修改)
volumes:
\- ./models:/opt/rkllama/models
\# 环境变量配置
environment:
\# RKNPU\_VERBOSE=1 可开启 NPU 底层日志,生产环境可注释掉
\- RKNPU\_VERBOSE=1
\- TZ=Asia/Shanghai
\# 设备节点映射 (开启 privileged 后可选,但显式声明更清晰)
devices:
\- /dev/dri:/dev/dri
\- /dev/rga:/dev/rga
\- /dev/dma\_heap:/dev/dma\_heap
\# 健康检查
healthcheck:
test: \["CMD", "curl", "-f", "http://localhost:8080/api/version"\]
interval: 30s
timeout: 10s
retries: 3
3. 快速启动
您可以直接运行 docker compose up -d,或者使用下面的脚本来确保目录权限正确。
3.1 一键启动脚本 deploy.sh
#!/bin/bash
# 1. 自动创建模型目录
if [ ! -d “./models” ]; then
echo “📂 正在创建本地模型目录: ./models”
mkdir -p ./models
fi
# 2. 启动服务
echo “🚀 正在启动 rkllama…”
docker compose up -d || docker-compose up -d
# 3. 实时查看日志
echo “📋 服务已启动,正在查看日志 (按 Ctrl+C 退出)…”
sleep 2
docker logs -f rkllama
给脚本执行权限并运行:
chmod +x deploy.sh
./deploy.sh
4. 添加与加载模型
RKLLama 容器启动后,它会自动监视挂载的 ./models 目录。
4.1 手动添加模型 (离线模式)
创建模型子目录:
在 ./models 下为每个模型创建一个文件夹。
mkdir -p models/my-qwen-model放入文件:
将下载好的 .rkllm 文件和分词器配置文件(tokenizer.json 等)放入该文件夹。- 如果没有分词器文件,必须确保开发板能联网。
创建 Modelfile:
在文件夹内创建 Modelfile 文件:
FROM=”your-model.rkllm”
# 联网下载 Tokenizer 配置:
HUGGINGFACE_PATH=”Qwen/Qwen2.5-3B-Instruct”
# 或者使用本地 Tokenizer:
# TOKENIZER=”.”加载模型:
# 在宿主机执行,让容器内的客户端加载模型
docker exec -it rkllama rkllama load my-qwen-model
4.2 自动下载模型 (在线模式)
进入容器使用交互式命令下载:
docker exec -it rkllama rkllama pull
根据提示输入 HuggingFace 的 Repo ID 和文件名即可。
5. 验证与监控
5.1 验证 NPU 是否工作
在宿主机上使用监控命令:
sudo watch -n 1 “cat /sys/kernel/debug/rknpu/load”
当您与模型对话时,如果 NPU 负载跳动(> 0%),说明 Docker 穿透成功。
5.2 测试 API
默认 API 地址为 http://localhost:8080。
curl -X POST http://localhost:8080/api/chat \
-H “Content-Type: application/json” \
-d ‘{
“model”: “my-qwen-model”,
“messages”: [{“role”: “user”, “content”: “你好”}],
“stream”: false
}’
6. 常见问题
- Error: Model directory not found:
- 原因:宿主机的 ./models 目录下没有对应的子文件夹。
- 解决:确保模型文件放在 ./models/<模型名>/ 里面,而不是直接放在根目录。
- NPU 占用率为 0%:
- 原因:Docker 容器没有权限。
- 解决:确保 docker-compose.yml 中包含 privileged: true。
- Tokenizer not found:
- 原因:缺少分词器配置文件且无法联网。
- 解决:手动下载以下文件放入模型目录,并在 Modelfile 中指定 TOKENIZER=”.”。
- tokenizer.json (核心文件)
- tokenizer_config.json (配置参数)
- special_tokens_map.json (特殊字符映射)
- config.json (可选,部分模型需要)
7. 常用模型管理命令
在宿主机上,您可以通过 docker exec 执行以下命令来管理容器内的模型:
| 功能 | 命令 | 说明 |
|---|---|---|
| 查看列表 | docker exec -it rkllama rkllama list | 列出所有已安装的模型 |
| 运行对话 | docker exec -it rkllama rkllama run <模型名> | 启动交互式命令行对话 |
| 加载模型 | docker exec -it rkllama rkllama load <模型名> | 仅将模型加载到 NPU 内存 (不进入对话) |
| 卸载模型 | docker exec -it rkllama rkllama unload | 卸载当前运行的模型,释放 NPU 内存 |
| 查看详情 | docker exec -it rkllama rkllama info <模型名> | 查看模型的元数据信息 |
| 删除模型 | docker exec -it rkllama rkllama rm <模型名> | 删除指定模型文件 |
| 下载模型 | docker exec -it rkllama rkllama pull | 交互式从 Hugging Face 拉取模型 |




