当前位置: 首页 > news >正文

rk3588本地部署大模型记录

rk3588本地部署大模型记录

参考:https://docs.radxa.com/rock5/rock5itx/app-development/rkllm_install

一、linux-PC端操作

1.下载代码
cd RKSDK git clone-b release-v1.2.3https://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.下载交叉编译工具

下载链接:https://developer.arm.com/-/media/files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz?rev=33c6e30e5ac64e6dba8f0431f2c35f1b&revision=33c6e30e-5ac6-4e6d-ba8f-0431f2c35f1b&hash=632C6C0BD43C3E4B59CA8A09A7055D30
解压

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.3https://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.rkllm20484096

其中两个参数解释:

max_new_tokens:2048#每轮最大生成 token 数max_context_len:4096#模型最大上下文范围,尽量与上面PC端模型转换时参数一致

接下来会输出

rkllm initstartW 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 modelfromQwen3-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 versionistoo low,please upgrade to0.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:notfound=========init....===========W rkllm:Warning:Your rknpu driver versionistoo low,please upgrade to0.9.7I rkllm:rkllm-runtime version:1.2.3,rknpu driver version:0.9.6,platform:RK3588 I rkllm:loading rkllm modelfrom/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:4rkllm init success!==============================*Serving Flask app'flask_server'*Debug mode:off WARNING:Thisisa development server.Donotuse itina production deployment.Use a production WSGI server instead.*Running onalladdresses(0.0.0.0)*Running on http://127.0.0.1:8081*Running on http://172.16.6.217:8081Press 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 questioninthe terminal to start a conversationwiththe 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:notfound=========init....===========W rkllm:Warning:Your rknpu driver versionistoo low,please upgrade to0.9.7I rkllm:rkllm-runtime version:1.2.3,rknpu driver version:0.9.6,platform:RK3588 I rkllm:loading rkllm modelfrom/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:4rkllm init success!==============================*Serving Flask app'flask_server'*Debug mode:off WARNING:Thisisa development server.Donotuse itina production deployment.Use a production WSGI server instead.*Running onalladdresses(0.0.0.0)*Running on http://127.0.0.1:8081*Running on http://172.16.6.217:8081Press CTRL+C to quit172.16.6.92--[27/Mar/202616:43:48]"GET / HTTP/1.1"404-172.16.6.92--[27/Mar/202616:43:48]"GET /favicon.ico HTTP/1.1"404-172.16.6.92--[27/Mar/202616:44:12]"GET / HTTP/1.1"404-172.16.6.92--[27/Mar/202616:46:43]"POST /chat HTTP/1.1"404-Received messages:[{'role':'user','content':'你好'}]172.16.6.92--[27/Mar/202616:59:57]"POST /rkllm_chat HTTP/1.1"200-

至此搭建完毕!

http://www.jsqmd.com/news/694246/

相关文章:

  • 灯亮只是起点:智能照明系统安装的工程逻辑、实施重点与运维价值
  • 从Fluent到Simulink:MATLAB流体仿真数据交互与模型构建实战
  • 别再死记硬背RAID了!用一张图+三个真实场景,帮你彻底搞懂RAID0/1/5/10怎么选
  • 从面试题到项目实战:C++二进制/十进制转换的3种高效写法与避坑指南
  • 别再乱选Mode了!CarSim与Simulink联合仿真输入模块的Mode和Initial Value到底怎么设?
  • 存储过程习题
  • 10款论文降AI工具实测:SpeedAI清零AIGC率,语义保真度99%
  • PhotoPrism深度使用指南:从照片导入到智能整理,我的万张图片管理实战
  • 键盘重映射:如何用SharpKeys彻底驯服你的Windows键盘?
  • 怎么做才能做好数据基座?数据基座搭建避坑指南有哪些?
  • 亲测有效:大学生论文降AI工具优选指南
  • 安全与便利的平衡:在openEuler 20.03上为普通用户配置sudo替代su的完整指南
  • 别再只会拖拽了!Qt QHeaderView 这5个隐藏属性让你的表格/树形视图更专业
  • 项目接入 AI 指南-阿里百炼版
  • CCF-GESP C++三级考了啥?我用Python帮你把2023年9月的真题重写了一遍
  • ubuntu安装MySQL8.4 LTS
  • 对话的边界:HTTP 的克制,SSE 的流淌,WebSocket 的自由
  • Commit风水学:时辰决定系统稳定性
  • Prism弹窗对象_弹窗向主窗口返回值详解(工业级上位机专篇)
  • C语言(语句底层实现)
  • Mac 本地跑大模型完全指南:你的苹果电脑就是 AI 工作站
  • Word 自动保存失效、文档异常卡顿怎么办?一文解决 Cobra DocGuard 加载项干扰问题
  • 北京永利鑫达起重:承揽设备移位大件运输合规服务商盘点答疑 - 海棠依旧大
  • 人大金仓KingbaseES kdb_schedule插件:从零构建自动化计划任务
  • 2026年3月正规的出口退税咨询公司推荐,工商注册/外贸公司注册/公司注册,出口退税服务公司找哪家 - 品牌推荐师
  • 收藏!2026 年版大模型零基础入门指南,程序员小白快速学懂 AI 大模型
  • 学术合法性的本质之争:主流体系批判与贾子理论的价值重构
  • 别再死记硬背了!用Python可视化带你秒懂元素周期表电子排布规律
  • AzurLaneAutoScript完整指南:碧蓝航线终极自动化脚本快速上手
  • 别再乱选WiFi信道了!手把手教你用WiFi Analyzer优化2.4G/5G家庭网络(附避坑指南)