香橙派RK3588s部署大模型
香橙派RK3588s部署大模型
- 香橙派RK3588s部署大模型
- 香橙派RK3588s更新npu驱动
- NPU驱动更新步骤
- PC机下载驱动压缩包
- 编译内核前的环境配置(参考香橙派文档)
- 替换NPU驱动并重新编译
- RK3588s开发板安装驱动
- PC机进行模型转换
- rknn-llm
- hugging face下载模型权重
- 模型权重转换
- 开发板部署
- 编译
- 部署测试
香橙派RK3588s部署大模型
香橙派RK3588s更新npu驱动
香橙派系统:ubuntu20.04,内核6.1.43
通过以下命令查看NPU驱动版本:
sudo cat /sys/kernel/debug/rknpu/version
需要npu驱动版本0.9.8,我这里板子上显示版本是0.9.6,需要升级。
NPU驱动更新步骤
PC机下载驱动压缩包
git clone https://github.com/airockchip/rknn-llm.git
解压目录/rknn-llm-release-v1.2.1/rknpu-driver
下的rknpu_driver_0.9.8_20241009.tar.bz2
,后面会用到。
编译内核前的环境配置(参考香橙派文档)
在linux环境下
sudo apt-get update
sudo apt-get install -y git
git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
cd orangepi-build
sudo ./build.sh
按以下选项配置
- 选择 Kernel package(内核包);
- 选择 do not change(不修改内核配置)
- 选择板卡 orangepi5;
- 选择第一项 current
关闭内核源码自动同步
sudo gedit userpatches/config-default.conf
IGNORE_UPDATES="yes"
替换NPU驱动并重新编译
复制rknpu_driver_0.9.8_20241009.tar.bz2
解压出来的rknn-llm-release-v1.2.1/rknpu-driver/drivers/rknpu
下的文件到orangepi-build/kernel/orange-pi-6.1-rk35xx/drivers/rknpu
中。
我这里重新编译的时候遇到了两处问题,这里先解决这两处问题再编译。
- 修改
orangepi-build/kernel/orange-pi-6.1-rk35xx/include/linux/mm.h
,添加以下代码static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags) {vma->vm_flags |= flags; }static inline void vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags) {vma->vm_flags &= ~flags; }
- 直接搜索
rknpu_devfreq.c
,注释掉第237行.set_soc_info = rockchip_opp_set_low_length
然后重新编译内核(同样按照上述配置)
sudo ./build.sh
编译之后在路径orangepi-build/output/debs
会生成文件linux-image-current-rockchip-rk3588_1.1.8_arm64.deb
RK3588s开发板安装驱动
在开发板上直接安装
sudo dpkg -i linux-image-current-rockchip-rk3588_1.1.8_arm64.deb
然后重启开发板。查看NPU驱动版本
sudo cat /sys/kernel/debug/rknpu/version
显示0.9.8,则更新成功。
PC机进行模型转换
rknn-llm
现在PC机创建虚拟环境,我这里用的python版本是3.10
克隆rknn-llm仓库,cd到目录下安装rknn-llm的whl文件
git clone https://github.com/airockchip/rknn-llm.git
cd rknn-llm/rkllm-toolkit
pip3 install rkllm_toolkit-1.2.1-cp310-cp310-linux_x86_64.whl
hugging face下载模型权重
安装huggingface-cli,导入镜像源,下载模型权重
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir . --local-dir-use-symlinks False
参数 | 说明 |
---|---|
huggingface-cli download | Hugging Face 官方命令行工具的下载命令 |
deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | 要下载的模型标识符 • deepseek-ai :组织名称• DeepSeek-R1-Distill-Qwen-7B :具体的模型名称 |
--local-dir . | 指定下载到当前目录 |
--local-dir-use-symlinks False | 禁用符号链接,直接复制文件到目标目录 |
如果不清楚模型名称,可以先去https://hf-mirror.com
,这里以Qwen3为例,搜索qwen3
,找到Qwen/Qwen3-0.6B
后点击进去,Qwen/Qwen3-0.6B
旁边有个复制按钮,这个就是我们要找的模型名称。
模型权重转换
参考rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export/export_rkllm.py
,修改modelpath
为下载好的模型权重路径。执行
python export_rkllm.py
如果遇到报错
AttributeError: module ‘pyarrow‘ has no attribute ‘PyExtensionType‘. Did you mean: ‘ExtensionType‘
,可以尝试降低pyarrow的版本,我记得当时我是降版本了,但是现在查看环境的时候发现还是新的版本,这里仅做记录。
执行后得到rkllm文件
开发板部署
编译
开发板同样要克隆rknn-llm仓库,稍后编译用。
git clone https://github.com/airockchip/rknn-llm.git
参考rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy/build-linux.sh
,配置GCC_COMPILER_PATH
,做以下修改
#!/bin/bash
# Debug / Release / RelWithDebInfo
set -e
if [[ -z ${BUILD_TYPE} ]];thenBUILD_TYPE=Release
fiGCC_COMPILER_PATH=aarch64-linux-gnu
C_COMPILER=${GCC_COMPILER_PATH}-gcc
CXX_COMPILER=${GCC_COMPILER_PATH}-g++
STRIP_COMPILER=${GCC_COMPILER_PATH}-stripTARGET_ARCH=aarch64
TARGET_PLATFORM=linux
if [[ -n ${TARGET_ARCH} ]];then
TARGET_PLATFORM=${TARGET_PLATFORM}_${TARGET_ARCH}
fiROOT_PWD=$( cd "$( dirname $0 )" && cd -P "$( dirname "$SOURCE" )" && pwd )
BUILD_DIR=${ROOT_PWD}/build/build_${TARGET_PLATFORM}_${BUILD_TYPE}if [[ ! -d "${BUILD_DIR}" ]]; thenmkdir -p ${BUILD_DIR}
ficd ${BUILD_DIR}
cmake ../.. \-DCMAKE_SYSTEM_PROCESSOR=${TARGET_ARCH} \-DCMAKE_SYSTEM_NAME=Linux \-DCMAKE_C_COMPILER=${C_COMPILER} \-DCMAKE_CXX_COMPILER=${CXX_COMPILER} \-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \-DCMAKE_POSITION_INDEPENDENT_CODE=ONmake -j4
make install
执行编译./build-linux.sh
部署测试
复制rkllm模型文件至目录rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy/
,同时进入该目录
export LD_LIBRARY_PATH=./lib
./llm_demo ~/DeepSeek-R1-Distill-Qwen-1.5B_w4a16_RK3576.rkllm 128 512
我的开发板ram应该只有4G,实测4B以上模型直接重启,因此最多只测试了Qwen3-1.7B
参考:
- 香橙派 RK3588 部署 DeepSeek
- 香橙派 RK3588 使用 RKLLM 更新 NPU 驱动教程
- AttributeError: module ‘pyarrow‘ has no attribute ‘PyExtensionType‘. Did you mean: ‘ExtensionType‘
- RK3588成功部署 Qwen3-1.7B模型
- Luban Cat DeepSeek-R1