第一代幽兰代码本使用瑞芯微公司新推出的RK3588 SoC芯片为核心硬件。RK3588是瑞芯微新一代旗舰级高端处理器, 采用先进的8nm制程工艺,集成了8个ARMv8架构的CPU,4个为Cortex-A76,另外4个为Cortex-A55,共8个CPU核心, 使用Big-Little技术协同工作。
除了8个CPU核心,RK3588还具有ARM G610 MP4 GPU,以及高达6 TOPs算力的NPU,为人工智能(AI)软件提供硬件加速功能。

本篇文档使用rkllm_api_demo命令行方式运行大模型
所需环境:

  • 幽兰代码本
  • x86的PC,需要内存大于32G,需Linux操作系统

一. RKLLM描述

RKLLM 软件栈可以帮助用户快速将 AI 模型部署到 Rockchip 芯片上。总体框架如下:

为了使用 RKNPU,用户需要先在x86电脑上运行 RKLLM-Toolkit 工具,将训练好的模型转换为 RKLLM 格式的模型,然后使用 RKLLM C API 在开发板上进行推理。

二. 准备好大模型相关文件

我们这里在魔搭社区下载模型(或者Hugging Face
本篇文档中下载的是阿里云构建的大型语言模型通义千问2.5-3B-Instruct,用户也可以尝试其他模型,这里仅供参考。
在x86的电脑上,大约需要磁盘空间20G,运行下面命令:

sudo apt install git-lfs -y
git lfs install

#国内用户推荐此站,这个下载的文件比较大,需要耐心等待完成
git clone https://www.modelscope.cn/Qwen/Qwen2.5-3B-Instruct.git

三. 使用RKLLM-Toolkit工具转换模型

在x86的电脑上,下载RKNN-LLM源码

git clone https://github.com/airockchip/rknn-llm.git

下载完成后,可以看到目录中包含rkllm-runtimerkllm-toolkit,examples等内容。

  • RKLLM-Toolkit 是一款软件开发工具包,供用户在 PC 上进行模型转换和量化
  • RKLLM Runtime 为 Rockchip NPU 平台提供 C/C++ 编程接口,帮助用户部署 RKLLM 模型并加速 LLM 应用的实现。

我们需要进入rkllm-toolkit的packages目录,先将所需环境准备好

cd rknn-llm/rkllm-toolkit/packages

这里需要安装确定好Python的版本,根据Python版本选择对应的文件。

sudo apt install python3
python3 --version
  • rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl:这个 .whl 文件是为 Python 3.10 版本构建的。
  • rkllm_toolkit-1.1.4-cp38-cp38-linux_x86_64.whl:这个 .whl 文件是为 Python 3.8 版本构建的。

例如,我这里的Python版本是Python 3.10.12,所以我用清华源加速,选择rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl

pip install packages/rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl --user -i https://pypi.tuna.tsinghua.edu.cn/simple

运行最后如果显示如下内容,是因为我们下载的版本高于所需版本,这里可以略过

然后我们可以回到rkllm-toolkit/examples目录下,更改test.py内容,将modelpath = './path/to/model'这里的路径改成前面我们下载的模型所在路径。
例如我下载的模型路径如下

所以我的test.py这里的模型路径改成

然后将最后的ret = llm.export_rkllm("./qwen.rkllm")转换后的名字修改,如下图所示:

在确定好test.py里面的路径都改成我们实际的模型所在路径后,即可运行下面命令,进行转换

python3 test.py

同样,等待转换完成,可以看到在我们的当前目录出现了转换后的模型文件。

四.编译rkllm_api_demo

下载解压GCC_10.2 交叉编译工具包

wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
tar -xJf gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
pwd                  #这里记好所在目录位置

进入到rkllm_api_demo目录

cd rknn-llm/examples/rkllm_api_demo

修改build-linux.sh文件的内容,将GCC_COMPILER_PATH的路径,改成前面我们下载的GCC_10.2 交叉编译工具路径。
例如我这里的GCC_10.2 交叉编译工具路径是

那么需要修改成如下内容

修改完成后,运行编译命令:

#如果没有运行权限
chmod +x build-linux.sh
./build-linux.sh

rknn-llm/examples/rkllm_api_demo/build/build_linux_aarch64_Release目录下可以找到我们编译出的llm_demo,将这个文件和rknn-llm/rkllm-runtime/Linux/librkllm_api/aarch64下的librkllmrt.so以及前面我们转换好的模型文件传到幽兰上。

五.在幽兰上运行大模型

在幽兰上,将librkllmrt.so放在/usr/lib目录下面

sudo cp librkllmrt.so /usr/lib/librkllmrt.so

更新内核,检查 NPU 内核是否为 v0.9.8 版本:
npu_update.zip 文件的md5为: c31c9039573fb6f9d7c4a11c238b65b4

wget https://gedu.oss-cn-beijing.aliyuncs.com/Products/YourLand/Release/TaiYi2/npu_update.zip
unzip npu_update.zip
cd npu_update
sudo cp Image-5x /boot/
reboot

#检测是否更换内核成功
sudo cat /sys/kernel/debug/rknpu/version

如果是v0.9.8,则代表更换成功

这样我们就可以开始运行大模型了,输入下面命令:

taskset f0 ./llm_demo ./model/Qwen2.5-3B.rkllm 1000 2048      #这里1000表示max_new_tokens 2048表示max_context_len,请根据自己的实际情况,自行更改,这里仅供参考

最后,附上效果图:

相关链接:

RKLLM仓库
将LLM 模型部署到 Rockchip Rk3588芯片中,在开发板上使用NPU进行推理

作者:zuoyingying  创建时间:2025-01-02 10:36
最后编辑:zuoyingying  更新时间:2025-02-12 17:59