飞凌嵌入式
直播中

aquamanfeng

4年用户 42经验值
擅长:嵌入式技术
私信 关注
[技术]

【飞凌嵌入式OK3576-C开发板体验】rkllm板端推理

交叉编译

在完成模型的量化构建后,就能够在目标硬件平台OK3576上实现模型的推理功能了。

板端推理的示例代码位于kllm-runtime/examples/rkllm_api_demo目录中,该目录提供了针对Android和Linux平台的编译示例。由于我们的开发环境是基于Linux的,因此我们将使用该目录下的build-linux.sh脚本来完成程序的编译构建。

首先,需要修改kllm-runtime/examples/rkllm_api_demo目录下的build-linux.sh脚本中的GCC_COMPILER_PATH变量,将其设置为我们上一节应用编译中所配置的交叉编译器路径。

GCC_COMPILER_PATH=${CROSS_COMPILE}
C_COMPILER=${GCC_COMPILER_PATH}gcc
CXX_COMPILER=${GCC_COMPILER_PATH}g++
STRIP_COMPILER=${GCC_COMPILER_PATH}strip

在完成GCC_COMPILER_PATH的修改后,接下来执行编译脚本。这将生成一个名为llm_demo的可执行文件。

bash build-linux.sh

文件拷贝

随后,将runtime/Linux/librkllm_api/aarch64目录下的librkllmrt.so库文件、rkllm模型文件以及之前编译得到的llm_demo可执行文件一起复制到llm_qwen2_base文件夹中。并使用scp命令,将整个llm_qwen2_base文件夹传输到开发板的userdata目录中。

scp -r ./llm_qwen2_base/ root@192.168.31.75:/userdata

构建完成后,llm_qwen2_base目录的结构应如下所示:

确认文件传输无误后,就可以在开发板上执行推理过程了。

执行推理

首先,确保将存放librkllmrt.so库文件的路径添加到LD_LIBRARY_PATH环境变量中,以便程序能够正确加载该库。这可以通过在终端中执行以下命令来完成:

export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH

接下来,由于系统对可打开文件的最大数量有限制,直接运行llm_demo可能会导致“Too many open files”错误。为了避免这个问题,需要使用ulimit -HSn命令来临时增加最大可打开文件的数量限制。例如,可以将限制设置为较高的数值,如10240:

ulimit -HSn 10240

最后,执行llm_demo可执行文件,并指定rkllm模型文件的路径。这样即可开始推理过程:

./llm_demo --model_path /path/to/rkllm_model

通过以上步骤,即可在开发板上正常启动推理任务。执行结果如下:

可以看到模型能够正常进行推理,但是0.5B参数量的模型推理结果还差强人意。

更多回帖

发帖
×
20
完善资料,
赚取积分