第一代幽兰代码本使用瑞芯微公司新推出的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-runtime
,rkllm-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-02-12 17:59