rk3588本地部署大模型记录
rk3588本地部署大模型记录
参考:https://docs.radxa.com/rock5/rock5itx/app-development/rkllm_install
一、linux-PC端操作
1.下载代码
cd RKSDK
git clone -b release-v1.2.3 https://github.com/airockchip/rknn-llm.git
2.创建虚拟环境
这里不要按照参考里面的安装python3.12,要不然后续很多包无法匹配。
conda create -n rkllm python=3.10
3.激活环境
conda activate rkllm
4.安装依赖包
cd rknn-llm/rkllm-toolkit/packages
pip install rkllm_toolkit-1.2.3-cp310-cp310-linux_x86_64.whl
5.下载交叉编译工具
tar -xJf gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz
6.下载大模型
自行下载
7.转换为RKNN
我这下载的是Qwen3-1.7B,算单模态大模型,因此选择转换代码路径应该为:
RKSDK/rknn-llm/examples/rkllm_api_demo/export
修改export_rkllm.py中的模型路径
modelpath = '/home/chenjun0310/RKLLM/model/Qwen/Qwen3-1.7B'
更改模型上下文最大值 max_context,默认4096.
找到max_context参数修改
遇到问题:
ModuleNotFoundError: No module named 'pkg_resources'
降级即可
pip install "setuptools<82"
运行脚本
python3 export_rkllm.py
8.交叉编译
在PC端操作,修改/rknn-llm/examples/rkllm_api_demo/deploy/build-linux.sh
GCC_COMPILER_PATH=/home/chenjun0310/RKLLM/tools/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
运行rkllm_api_demo/deploy/build-linux.sh
bash build-linux.sh
会生成/rknn-llm/examples/rkllm_api_demo/deploy/install文件
二、开发板部署大模型
1.下载厂库代码
git clone -b release-v1.2.3 https://github.com/airockchip/rknn-llm.git
2.拷贝文件运行模型
主要将上面生成的install文件夹和转换的rkllm文件至开发板
我是将模型和demo存放在同一个文件夹下,运行
cd /rknn-llm/examples/rkllm_api_demo/deploy/install/demo_Linux_aarch64
chmod +x llm_demo
export LD_LIBRARY_PATH=$(pwd)/lib:$LD_LIBRARY_PATH
./llm_demo Qwen3-1.7B_W8A8_RK3588.rkllm 2048 4096
其中两个参数解释:
max_new_tokens:2048 #每轮最大生成 token 数
max_context_len:4096 #模型最大上下文范围,尽量与上面PC端模型转换时参数一致
接下来会输出
rkllm init start
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7
I rkllm: rkllm-runtime version: 1.2.3, rknpu driver version: 0.9.6, platform: RK3588
I rkllm: loading rkllm model from Qwen3-1.7B_W8A8_RK3588.rkllm
I rkllm: rkllm-toolkit version: 1.2.3, max_context_limit: 4096, npu_core_num: 3, target_platform: RK3588, model_dtype: W8A8
I rkllm: Enabled cpus: [4, 5, 6, 7]
I rkllm: Enabled cpus num: 4
rkllm init success
**********************可输入以下问题对应序号获取回答/或自定义输入********************
[0] 现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,求鸡和兔子各有多少只?
[1] 有28位小朋友排成一行,从左边开始数第10位是学豆,从右边开始数他是第几位?
*************************************************************************
user: 现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,求鸡和兔子各有多少只?
robot: 这是一个典型的**鸡兔同笼问题**,我们可以用代数的方法来解决。
---
### **已知条件:**
退出对话输入
exit
若需要查看 RKLLM 在板端推理时的性能或者日志,可使用如下指令:
export RKLLM_LOG_LEVEL=1 //仅查看 TTFT、TPS 和内存数据
export RKLLM_LOG_LEVEL=2 //除了性能数据,还会打印 cache 长度等更多信息
3.模型运行环境
rk3588上既有cpu也有npu。
NPU (主要算力):负责大模型最繁重的矩阵乘法运算(Tensor 计算)。这是 NPU 的强项,速度比CPU 快得多且功耗更低。
CPU (辅助与控制):负责数据预处理、算子调度、内存管理以及 NPU 不支持的某些特殊算子。RKLLM 会利用大核的高性能来处理这些任务,以减少 NPU 的等待时间。
运行环境结论:NPU+CPU协同运行
NPU运行结论:在使用NPU,但是版本比较低(0.9.6)可能无法释放全部算力。对应输出日志如下:
I rkllm: rkllm-toolkit version: 1.2.3, max_context_limit: 4096, npu_core_num: 3,
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7
三、交互处理-构建AI服务
目前,可以在开发板终端进行对话,但这种方法不够智能。需要进一步搭建交互工具等。
前面1.2.3.4步都在开发板上操作。
1.代码路径
相关demo在:
/rknn-llm/examples/rkllm_server_demo
一键部署脚本 build_rkllm_server_flask.sh 脚本可以使用usb线直连传送文件到开发板,但是我是通过网线路由远程。且我的开发板可以上网,于是我自行搭建了环境。
2.安装miniconda
输入:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda
source $HOME/miniconda/etc/profile.d/conda.sh
conda create -n LLM_env python=3.11 -y
echo "source ~/miniconda/etc/profile.d/conda.sh" >> ~/.bashrc
source ~/.bashrc
conda activate LLM_env
pip install flask
3.拷贝文件
新建flask工作目录,我是在/rknn-llm目录下新建
mkdir rkllm_flask_server
cd rkllm_flask_server
进入rkllm_flask_server文件夹下,拷贝模型文件至当前文件夹,路径自行替换,注意后面有个“点”
cp /rknn-llm/examples/rkllm_api_demo/deploy/install/demo_Linux_aarch64/Qwen3-1.7B_W8A8_RK3588.rkllm .
继续搞依赖相关
mkdir lib
cp /rknn-llm/examples/rkllm_api_demo/deploy/install/demo_Linux_aarch64/lib/*.so ./lib/
cp /rknn-llm/examples/rkllm_server_demo/rkllm_server/flask_server.py .
cp /rknn-llm/examples/rkllm_server_demo/rkllm_server/lib ./ -r
设置依赖路径
export LD_LIBRARY_PATH=$(pwd)/lib:$LD_LIBRARY_PATH
4.代码运行
运行指令
python3 flask_server.py --rkllm_model_path /rknn-llm/rkllm_flask_server/Qwen3-1.7B_W8A8_RK3588.rkllm --target_platform rk3588
路径自行替换。
这里默认端口是http://0.0.0.0:8080,如果与其他程序冲突的话,可以自行设置。例如修改指令
直接修改flask_server.py代码
app.run(host='0.0.0.0', port=8080, threaded=True, debug=False)
我是修改为8081,终端输出如下:
(LLM_env) root@OpenSDT:/rknn-llm/rkllm_flask_server# python3 flask_server.py --rkllm_model_path /rknn-llm/rkllm_flask_server/Qwen3-1.7B_W8A8_RK3588.rkllm --target_platform rk3588
/bin/sh: 1: sudo: not found
=========init....===========
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7
I rkllm: rkllm-runtime version: 1.2.3, rknpu driver version: 0.9.6, platform: RK3588
I rkllm: loading rkllm model from /rknn-llm/rkllm_flask_server/Qwen3-1.7B_W8A8_RK3588.rkllm
I rkllm: rkllm-toolkit version: 1.2.3, max_context_limit: 4096, npu_core_num: 3, target_platform: RK3588, model_dtype: W8A8
I rkllm: Enabled cpus: [4, 5, 6, 7]
I rkllm: Enabled cpus num: 4
rkllm init success!
==============================
* Serving Flask app 'flask_server'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8081
* Running on http://172.16.6.217:8081
Press CTRL+C to quit
5.PC端访问
开发板上以及利用flask开启服务,现在需要在PC端访问该服务。主要使用代码
/rknn-llm/examples/rkllm_server_demo/chat_api_flask.py
记得修改访问地址。
PC端的输入与回复如下:
(LLM) PS E:\work\Rk3588\LLM> python .\chat_api_flask.py
============================
Input your question in the terminal to start a conversation with the RKLLM model...
============================
*Please enter your question:你好
Q: 你好
A:你好!我是你的AI助手,很高兴为你服务。有什么我可以帮助你的吗?😊
*Please enter your question:
开发板的响应如下:
(LLM_env) root@OpenSDT:/rknn-llm/rkllm_flask_server# python3 flask_server.py --rkllm_model_path /rknn-llm/rkllm_flask_server/Qwen3-1.7B_W8A8_RK3588.rkllm --target_platform rk3588
/bin/sh: 1: sudo: not found
=========init....===========
W rkllm: Warning: Your rknpu driver version is too low, please upgrade to 0.9.7
I rkllm: rkllm-runtime version: 1.2.3, rknpu driver version: 0.9.6, platform: RK3588
I rkllm: loading rkllm model from /rknn-llm/rkllm_flask_server/Qwen3-1.7B_W8A8_RK3588.rkllm
I rkllm: rkllm-toolkit version: 1.2.3, max_context_limit: 4096, npu_core_num: 3, target_platform: RK3588, model_dtype: W8A8
I rkllm: Enabled cpus: [4, 5, 6, 7]
I rkllm: Enabled cpus num: 4
rkllm init success!
==============================
* Serving Flask app 'flask_server'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8081
* Running on http://172.16.6.217:8081
Press CTRL+C to quit
172.16.6.92 - - [27/Mar/2026 16:43:48] "GET / HTTP/1.1" 404 -
172.16.6.92 - - [27/Mar/2026 16:43:48] "GET /favicon.ico HTTP/1.1" 404 -
172.16.6.92 - - [27/Mar/2026 16:44:12] "GET / HTTP/1.1" 404 -
172.16.6.92 - - [27/Mar/2026 16:46:43] "POST /chat HTTP/1.1" 404 -
Received messages: [{'role': 'user', 'content': '你好'}]
172.16.6.92 - - [27/Mar/2026 16:59:57] "POST /rkllm_chat HTTP/1.1" 200 -
至此搭建完毕!
更多推荐

所有评论(0)