[RK3576] RKLLM模型的使用
参考文档地址:rknn-llm/doc/Rockchip_RKLLM_SDK_CN_1.2.3.pdf at main · airockchip/rknn-llm
官方仓库地址:Airockchip/RKNN-LLM --- airockchip/rknn-llm
开发板驱动版本确认
首先输入:1
dmesg | grep -i npu
这一行命令用于判断系统能否识别rk3576的NPU,接下来,为了确保能够使用rkllm模型继续推理,我们还需要保证NPU驱动版本>=0.9.8,驱动版本检查命令如下:1
cat /sys/kernel/debug/rknpu/version
模型转换
由于模型转换部分不是由我负责,所以本章节不做讲解,先假设我们已经转换好了rkllm模型,将Qwen.rkllm 从转换用的PC上拷贝到开发板的某个目录备用。
PC上的编程,编译
为了在开发板上调用我们的rkllm模型,我们选择在一台X86 PC上参考瑞芯微官方的开发文档编写一个C++程序,并且通过官方提供的交叉编译工具链将其编译为开发板上的可执行文件。
首先,下载交叉编译工具链:
[!NOTE]
RKLLMRuntime 的编译要求
在使用RKLLMRuntime的过程中,需要注意gcc编译工具的版本。推荐使用交叉编译工具 地址 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu;下载路径为:GCC_10.2 交叉编译工具下载 。请注意,交叉编译工具往往向下兼容而无法向上兼容,因此不要使用10.2以下的版本
进入想要安装的目录,输入1
2
3
4//下载
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
//解压
tar -xvf gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
如果上述链接无法下载,你也可以在 Ubuntu 软件源中安装(版本可能不同,但通常可用):1
2sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
为了让RKLLM的编译脚本能够识别并且使用编译器,我们需要将编译器添加至环境变量;
临时配置(当前终端有效)
假设你将工具链解压到了 /home/user/tools/gcc-arm-10.2...:1
2//将 /path/to/your/gcc 替换为实际的解压路径
export GCC_COMPILER=/home/user/tools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
参考这个路径添加到环境变量,另外,为了方便编译,我们可以写一个一键编译脚本
1 |
|
编写代码,运行编译脚本
对于c++代码,我之前尝试编写的代码成功通过了编译,但是在开发板上运行出错,仍在调试中,所以这里先不写出来。1
2
3
4
5
6llm_project/
├── build.sh <-- 上面的脚本
├── llm_demo.cpp <-- 你的 C++ 代码
├── rkllm.h <-- 头文件 (必须存在)
└── lib/ <-- 库文件夹
└── librkllmrt.so <-- 你的 ARM64 库文件rkllm.h和librkllmrt.so都是在瑞芯微官方仓库中下载的,自行下载放在相应位置即可;
