RKLLM 使用与大语言模型部署
本文档将讲述如何使用 RKLLM 将 Huggingface 格式的大语言模型部署到 RK3588 上利用 NPU 进行硬件加速推理
目前支持模型
- TinyLLAMA 1.1B
- Qwen 1.8B
- Qwen2 0.5B
- Phi-2 2.7B
- Phi-3 3.8B
- ChatGLM3 6B
- Gemma 2B
- InternLM2 1.8B
- MiniCPM 2B
这里以 TinyLLAMA 1.1B 为例子,完整讲述如何从 0 开始部署大语言模型到搭载 RK3588 芯片的开发版上,并使用 NPU 进行硬件加速推理
提示
如没安装与配置 RKLLM 环境,请参考 RKLLM 安装
模型转换
这里以 TinyLLAMA 1.1B 为例子,用户也可以选择任意目前支持模型列表中的链接
- x86 PC 工作站中下载 TinyLLAMA 1.1B 所有文件, 如没安装 git-lfs,请自行安装
git clone https://huggingface.co/TinyLlama/TinyLlama-1.1B-Chat-v1.0
- 激活 rkllm conda 环境, 可参考RKLLM conda 安装
conda activate rkllm
- 更改
rknn-llm/rkllm-toolkit/examples/huggingface/test.py
中 modelpath 模型路径与 rkllm 导出路径modelpath = 'Your Huggingface LLM model'
ret = llm.export_rkllm("./Your_Huggingface_LLM_model.rkllm") - 运行模型转换脚本
转换成功后可得到 rkllm 模型
cd rknn-llm/rkllm-toolkit/examples/huggingface
python3 test.py
编译可执行文件
- 下载交叉编译工具链 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu
- 修改主程序代码, 这里修改两个地方
74 param.num_npu_core = 3; // rk3588 num_npu_core 的取值范围 [1,3]
118 string text = PROMPT_TEXT_PREFIX + input_str + PROMPT_TEXT_POSTFIX;
119 // string text = input_str; - 修改
rknn-llm/rkllm-runtime/examples/rkllm_api_demo/build-linux.sh
编译脚本中 gcc 路径GCC_COMPILER_PATH=gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu
- 运行模型转换脚本
生成的可执行文件在
cd rknn-llm/rkllm-runtime/examples/rkllm_api_demo
bash build-linux.shbuild/build_linux_aarch64_Release/llm_demo