RK3588 DeepSeek-R1-Distill-Qwen-1.5B移植

RK3588 DeepSeek-R1-Distill-Qwen-1.5B移植

环境搭建

环境要求:

rkllm-toolkit==1.1.4
rkllm-runtime==1.1.4
python==3.8 or python==3.10

安装 Anaconda

下载安装包

  • 官网手动下载

官网连接:https://repo.anaconda.com/archive

选择合适的版本下载

image.png

  • linux上直接下载
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh

安装

需要首先赋权再执行安装程序,依次输入下面两句命令:

chmod +x Anaconda3-2021.11-Linux-x86_64.sh

./Anaconda3-2021.11-Linux-x86_64.sh
  • 然后出现下面图所示:

image.png

  • 点击enter(回车键),此时显示Anaconda的信息,并且会出现More,继续按Enter,直到如下图所示:

image.png

  • 输入 yes

image.png

  • 继续点击 enter

image.png

  • 输入 yes,添加环境变量

image.png

确认安装成功

安装完成后使用如下命令,anaconda才能生效,命令行前方出现(base)字样。

source ~/.bashrc

image.png

创建 conda 环境

(base) jijc@u20:~$ conda create -n rkllm python=3.8.2
***
Proceed ([y]/n)? y
Downloading and Extracting Packages
***
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate test
#
# To deactivate an active environment, use
#
# $ conda deactivate

查看虚拟环境列表

conda info -e

*是正在使用的虚拟环境

image.png

进入 rkllm conda 环境

conda activate rkllm

退出环境

conda deactivate

RKLLM 安装

RKLLM-Toolkit是一套软件开发包,供用户在 PC 上进行 Huggingface 格式的 LLM 模型转换和量化

git clone -b release-v1.1.4 https://github.com/airockchip/rknn-llm.git
pip3 install ./rknn-llm/rkllm-toolkit/packages/rkllm_toolkit-1.1.4-cp38-cp38-linux_x86_64.whl

模型转换

模型编译

模型文件下载

下载 DeepSeek-R1-Distill-Qwen-1.5B 权重文件

git clone https://www.modelscope.cn/radxa/DeepSeek-R1-Distill-Qwen-1.5B_RKLLM.git

激活 rkllm conda 环境

conda activate rkllm

修改路径

更改 rknn-llm/rkllm-toolkit/examples/test.py 中 modelpath 模型路径, dataset路径, rkllm 导出路径

15 modelpath = 'Your DeepSeek-R1-Distill-Qwen-1.5B Folder Path'
29 datasert = None # 默认是 "./data_quant.json", 如无可以填写 None
83 ret = llm.export_rkllm("./DeepSeek-R1-Distill-Qwen-1.5B.rkllm")

运行模块转换脚本

cd rknn-llm/rkllm-toolkit/examples/
python3 test.py

转换成功后即可在当前目录下得到 DeepSeek-R1-Distill-Qwen-1.5B.rkllm 模型。

编译可执行文件

编译工具链

下载交叉编译工具链gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu

最好将这个工具链放在 ~/opts/ 目录下,没有可 mkdir ~/opts,这样可以挑过 2.2.3 步骤。

修改代码

修改主程序 rknn-llm/examples/rkllm_api_demo/src/llm_demo.cpp 代码, 这里修改 PROMPT 格式的设置,和 PROMPT 的构造

24 #define PROMPT_TEXT_PREFIX "<|im_start|>system\nYou are a helpful assistant.\n<|im_end|>\n<|im_start|>user\n"
25 #define PROMPT_TEXT_POSTFIX "\n<|im_end|>\n<|im_start|>assistant\n<think>"
184 text = PROMPT_TEXT_PREFIX + input_str + PROMPT_TEXT_POSTFIX;
185 // text = input_str;

修改编译工具路径

修改 rknn-llm/examples/rkllm_api_demo/build-linux.sh 编译脚本中 GCC_COMPILER_PATH 路径,选择

GCC_COMPILER_PATH=$PATH/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu  # $PATH 替换为工具链绝对路径

运行模型转换脚本

cd rknn-llm/examples/rkllm_api_demo/
bash build-linux.sh

生成的可执行文件在 build/build_linux_aarch64_Release/llm_demo

板端部署

升级 NPU 内核版本

RKLLM 所需要的 NPU 内核版本较高,用户在板端使用 RKLLM Runtime 进行模型推理前,首先需要确认板端的 NPU 内核是否为 v0.9.8 版本。

# 板端执行以下命令,查询 NPU 内核版本
cat /sys/kernel/debug/rknpu/version

版本过低可通过以下方法升级 npu 内核版本:

  • 在之前下载的 rknn-llm 文件中就有 rknpu-driver ,支持5.10和6.1的内核版本,将 rknpu_driver_0.9.8_20241009.tar.bz2 解压,把驱动代码覆盖到 kernel/drivers/rknpu/

  • 重新编译内核

编译错误:

1)

image.png

注释掉 .set_soc_info = rockchip_opp_set_low_length 即可

image.png

2)

image.png

打开源码目录下 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;
}

再次编译,成功

部署及使用

  • 将转换成功后的 DeepSeek-R1-Distill-Qwen-1.5B.rkllm 模型放到/data/demo_Linux_aarch64/目录下,编译后的二进制文件 llm_demo 复制到/usr/bin/目录下,将 rknn-llm/rkllm-runtime/Linux/librkllm_api/arm64-v8a/librkllmrt.so 文件复制到 /lib 下。

  • 导入环境变量

export LD_LIBRARY_PATH=./lib
  • 运行模型
llm_demo '/userdata/DeepSeek-R1-Distill-Qwen-1.5B/DeepSeek-R1-Distill-Qwen-1.5B.rkllm' 2048 4096

image.png

UI 界面部署

server

前言

官方的server API大部分第三方工具无法直接连接,本仓库经过修改的代码可以兼容OpenAI API格式:

https://github.com/huonwe/rkllm_openai_like_api

部署

下载 server api

git clone https://github.com/huonwe/rkllm_openai_like_api.git
cd rkllm_openai_like_api

添加需要用到的动态库

cp lib/*.so /usr/lib

安装uv

curl -LsSf https://astral.sh/uv/install.sh | sh

安装python依赖

source $HOME/.local/bin/env
uv sync

运行

uv run server.py --rkllm_model_path=/userdata/DeepSeek-R1/DeepSeek-R1-Distill-Qwen-1.5B.rkllm

之后,可以通过 http://your.ip:8080/rkllm_chat/v1 来连接到本服务。

Chatbox UI

下载Chatbox

从Chatbox官网下载:https://chatboxai.app/zh

image.png

安装并配置

添加权限并运行

chmod +x Chatbox-1.11.5-arm64.AppImage
./Chatbox-1.11.5-arm64.AppImage --no-sandbox

配置模型

在设置中配置模型

image.png

在对话中关闭自动生成聊天标题

image.png

保存后即可开始与deepseek-1.5b开始对话。

开机自启动

server

运行脚本 etc/init.d/auto_start_server.sh

#!/bin/bash
cd /userdata/rkllm_openai_like_api || {
            echo "Error: Failed to change directory to /userdata/rkllm_openai_like_api"
    exit 1
}

source $HOME/.local/bin/env
uv run /userdata/rkllm_openai_like_api/server.py --rkllm_model_path=/userdata/DeepSeek-R1/DeepSeek-R1-Distill-Qwen-1.5B.rkllm > /dev/null 2>&1 &
echo DeepSeek-R1-Distill-Qwen-1.5B

自启动服务  /lib/systemd/system/auto_start_server.service

[Unit]
Description=auto statrt chatbox
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
User=root
Group=root
ExecStart=/etc/init.d/auto_start_server.sh
StandardOutput=journal+console
StandardError=journal+console

[Install]
WantedBy=multi-user.target

添加multi-user.target软链接

cd etc/systemd/system/multi-user.target.wants/
ln -s /lib/systemd/system/auto_start_server.service auto_start_server.service

chatbox

运行脚本 etc/init.d/auto_start_chatbox.sh

#!/bin/bash

chatbox_dir="/userdata"
chatbox_file=$(find "$chatbox_dir" -maxdepth 1 -name "Chatbox*" -type f)
echo $chatbox_file
sleep 3
"$chatbox_file" --no-sandbox > /dev/null 2>&1 &

自启动服务  /lib/systemd/system/auto_start_chatbox.service

[Unit]
Description=auto statrt chatbox
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
User=root
Group=root
Environment="DISPLAY=:0"
Environment="QT_QPA_PLATFORM=xcb"
ExecStart=/etc/init.d/auto_start_chatbox.sh

[Install]
WantedBy=multi-user.target

添加multi-user.target软链接

cd etc/systemd/system/multi-user.target.wants/
ln -s /lib/systemd/system/auto_start_chatbox.service auto_start_chatbox.service
posted @ 2025-10-27 13:48  杨旭0324  阅读(1)  评论(0)    收藏  举报