type
status
date
slug
summary
tags
category
icon
password
😀
记录一下Orange Pi 5 Plus运行rknn-llm遇到的坑
 

📝 编译内核

RK现在并没有发布能直接运行rknn-llm的内核,需要自己手动编译
  1. 下载香橙派提供的最新内核代码: (最新的应该是6.1的内核)
  1. 进入orangepi-build目录,运行build.sh脚本,选择Full OS image for flashing,这里将下载编译内核所需的全部代码
  1. 修改内核头文件kernel/orange-pi-6.1-rk35xx/include/linux/mm.h,加入以下代码:
    1. 下载rknpu的drivers: https://github.com/airockchip/rknn-llm/tree/main/rknpu-driver,解压后拷贝到kernel/orange-pi-6.1-rk35xx/drivers 目录
    1. 修改userpatches/config-default.confIGNORE_UPDATES 的值设置为yes
    1. 再次运行build.sh脚本,选择Full OS image for flashing ,这次编译出的内核就是我们需要的内核
    1. 将内核烧录到开发板

    模型转换

    运行rknn-llm需要的大模型需要从Hugging Face下载,目前只支持LLaMA, Qwen, Qwen2, and Phi-2
    模型转换步骤如下:
    1. 从Hugging Face下载所需的大模型,需要下载Files and versions 里面的所有文件,保存到某个目录(/path/to/llm)
    1. 下载rknn-toolkit,修改examples/huggingface/test.pymodelpath 的路径,以及输出模型的文件名
    1. 使用conda 创建一个python3.8的环境,并安装rknn-toolkit/packages中的依赖包
    1. 运行test.py即可生产所需的rknn-llm模型

    板端运行

    在香橙派5plus上运行demo程序时,可能会提示too many open files ,需要先执行一次ulimit -n 8912 即可正常运行

    🤗 总结

    我使用的开发板内存为16G,能非常流畅的运行QWen大模型,目前RK支持的模型还是比较少,希望后面能增加更多大模型的支持

    📎 参考文章