跳到主要内容

RKLLM 使用与大语言模型部署

本文档将讲述如何使用 RKLLM 将 Huggingface 格式的大语言模型部署到 RK3588 上利用 NPU 进行硬件加速推理

目前支持模型

这里以 Qwen2.5-1.5B-Instruct 为例子,完整讲述如何从 0 开始部署大语言模型到搭载 RK3588 芯片的开发版上,并使用 NPU 进行硬件加速推理

提示

如没安装与配置 RKLLM 环境,请参考 RKLLM 安装

模型转换

这里以 Qwen2.5-1.5B-Instruct 为例子,用户也可以选择任意目前支持模型列表中的链接

  • x86 PC 工作站中下载 Qwen2.5-1.5B-Instruct 权重文件, 如没安装 git-lfs,请自行安装
    git clone https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct
  • 激活 rkllm conda 环境, 可参考RKLLM conda 安装
    conda activate rkllm
  • 更改 rknn-llm/rkllm-toolkit/examples/test.py 中 modelpath 模型路径, dataset路径, rkllm 导出路径
    15 modelpath = 'Your Huggingface LLM model'
    29 datasert = None # 默认是 "./data_quant.json", 如无可以填写 None
    83 ret = llm.export_rkllm("./Your_Huggingface_LLM_model.rkllm")
  • 运行模型转换脚本
    cd rknn-llm/rkllm-toolkit/examples/
    python3 test.py
    转换成功后可得到 rkllm 模型

编译可执行文件

  • 下载交叉编译工具链 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu
  • 修改主程序 rknn-llm/examples/rkllm_api_demo/src/llm_demo.cpp 代码, 这里修改两个地方
    184 text = PROMPT_TEXT_PREFIX + input_str + PROMPT_TEXT_POSTFIX;
    185 // text = input_str;
  • 修改 rknn-llm/examples/rkllm_api_demo/build-linux.sh 编译脚本中 GCC_COMPILER_PATH 路径
    GCC_COMPILER_PATH=gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
  • 运行模型转换脚本
    cd rknn-llm/examples/rkllm_api_demo/
    bash build-linux.sh
    生成的可执行文件在 build/build_linux_aarch64_Release/llm_demo

板端部署

本地终端模式

  • 将转换成功后的 rkllm 模型与编译后的二进制文件 llm_demo 复制到板端
  • 导入环境变量
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:rknn-llm/rkllm-runtime/Linux/librkllm_api/aarch64
  • 运行 llm_demo,输入 exit 退出
    export RKLLM_LOG_LEVEL=1
    ./llm_demo your_rkllm_path 10000 10000
    rkllm_2.webp

部分模型性能对比

ModelParameter SizeChipChip CountInference Speed
TinyLlama1.1BRK3588115.03 token/s
Qwen1.8BRK3588114.18 token/s
Phi33.8BRK358816.46 token/s
ChatGLM36BRK358813.67 token/s