news 2026/5/25 15:14:00

【RK芯片学习笔记】RK3588开发板上大语言模型转换教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RK芯片学习笔记】RK3588开发板上大语言模型转换教程

目录

1. RKLLM-Toolkit

2. RKLLM-Toolkit安装

3. 模型转换


本文主要讲述在已有环境下,在PC端进行大语言模型转换,使得转换之后的模型可在RK3588开发板上进行部署和推理。注意:模型转换需要在X86架构上进行。

重要参考文档:https://doc.embedfire.com/linux/rk356x/Ai/zh/latest/README.html

1. RKLLM-Toolkit

RKLLM-Toolkit 是为用户提供在计算机上进行大语言模型的量化、转换的开发套件。通过该工具提供的接口可以便捷地完成模型转换和模型量化。

2. RKLLM-Toolkit安装

拉取RKLLM源码以及目录文件说明:

# 拉取源码 git clone https://github.com/airockchip/rknn-llm.git # 目录说明 . ├── benchmark.md # 相关模型的测试性能 ├── CHANGELOG.md # 更新日志 ├── doc # RKLLM用户手册 ├── examples # 模型转换示例 ├── LICENSE ├── README.md ├── res ├── rkllm-runtime # 板端部署的库和例程 ├── rkllm-toolkit # rkllm-toolkit包 ├── rknpu-driver # RKNPU驱动 └── scripts # 固定cpu、ddr、npu频率的脚本 8 directories, 4 files

使用conda创建一个rkllm1.2.1环境:

# 创建RKLLM_Toolkit环境 conda create -n rkllm1.2.1 python=3.10 conda activate rkllm1.2.1 # 切换到前面拉取工程的rkllm-toolkit目录下 cd rknn-llm/rknn-toolkit/ # 安装rkllm_toolkit(文件请根据具体版本修改),会自动下载RKLLM-Toolkit工具所需要的相关依赖包。 (rkllm1.2.1) llh@llh:/xxx/rknn-llm/rkllm-toolkit$ pip3 install rkllm_toolkit-1.2.1-cp310-cp310-linux_x86_64.whl

简单检测下安装的RKLLM-Toolkit,正常是没有错误输出:

(rkllm1.2.1) llh@llh:/xxx$ python3 Python 3.10.18 (main, Jun 5 2025, 13:14:17) [GCC 11.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from rkllm.api import RKLLM >>>

3. 模型转换

RKLLM-Toolkit提供模型的转换、量化功能,将Hugging Face格式或者GGUF格式的大语言模型转换为RKLLM模型,然后使用RKLLM Runtime的接口实现板端推理。

目前支持的模型有 LLAMA models, TinyLLAMA models, Qwen2/Qwen2.5/Qwen3, Phi2/Phi3, ChatGLM3-6B, Gemma2/Gemma3, InternLM2 models, MiniCPM3/MiniCPM4, TeleChat2, Qwen2-VL-2B-Instruct/Qwen2-VL-7B-Instruct/Qwen2.5-VL-3B-Instruct, MiniCPM-V-2_6,DeepSeek-R1-Distill,Janus-Pro-1B,InternVL2-1B,SmolVLM,RWKV7, 最新支持情况请查看 rknn-llm文档。

模型导出程序export_rkllm.py(位于\rknn-llm-main\examples\rkllm_api_demo\export路径下)如下:

from rkllm.api import RKLLM import argparse if __name__ == "__main__": argparse = argparse.ArgumentParser() argparse.add_argument('--modelpath', type=str, default='Qwen-1_8B-Chat', help='model path', required=True) argparse.add_argument('--target-platform', type=str, default='rk3588', help='target platform', required=False) argparse.add_argument("--dataset_path", type=str, help="calibration data path") argparse.add_argument('--num_npu_core', type=int, default=3, help='npu core num(rk3588:0-3, rk3576:0-2)', required=False) argparse.add_argument('--optimization_level', type=int, default=1, help='optimization_level(0 or 1)', required=False) argparse.add_argument('--quantized_dtype', type=str, default='w8a8', help='quantized dtype(rk3588:w8a8/w8a8_g128/w8a8_g256/w8a8_g512....)', required=False) argparse.add_argument('--quantized_algorithm', type=str, default='normal', help='quantized algorithm(normal/grq/gdq)', required=False) argparse.add_argument('--device', type=str, default='cpu', help='device(cpu/cuda)', required=False) argparse.add_argument('--savepath', type=str, default='Qwen-1_8B-Chat.rkllm', help='save path', required=False) args = argparse.parse_args() qparams = None # Use extra_qparams # init llm = RKLLM() # Load model ret = llm.load_huggingface(model=args.modelpath, model_lora = None, device=args.device, dtype="float32", custom_config=None, load_weight=True) # ret = llm.load_gguf(model = modelpath) if ret != 0: print('Load model failed!') exit(ret) # Build model ret = llm.build(do_quantization=True, optimization_level=args.optimization_level, quantized_dtype=args.quantized_dtype, quantized_algorithm=args.quantized_algorithm, target_platform=args.target_platform, num_npu_core=args.num_npu_core, extra_qparams=qparams, dataset=args.dataset_path) if ret != 0: print('Build model failed!') exit(ret) # Export rkllm model ret = llm.export_rkllm(savepath) if ret != 0: print('Export model failed!') exit(ret)

1、调用RKLLM-Toolkit提供的接口,初始化RKLLM对象,然后调用rkllm.load_huggingface()函数加载模型;

2、通过rkllm.build()函数对RKLLM模型的构建,需要设置参数do_quantization是否量化, 设置目标平台等等,详细参数请参考 rknn-llm文档 ;

3、最后通过rkllm.export_rkllm()函数将模型导出为RKLLM模型文件。

在运行export_rkllm.py程序之前,可以先根据模型特点与使用场景准备生成量化的校准样本, 运行程序generate_quant_data.py生成量化校正数据集,该数据集用于后面模型量化,如果没有相关数据,可以不设置rkllm.build()的dataset参数。

运行export_rkllm.py,转换模型为RKLLM模型。RKLLM模型转换成功后,会在当前目录生成qwen.rkllm文件,然后将该文件到板卡系统中(用于后面部署测试)。

注意点:

export目录下一共存在两个py文件,generate_data_quant.py用于生成后续量化所使用的测试数据,即data_quant.json文件,export_rkllm.py则用于模型转换。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 15:41:31

OFA-VE实战案例:汽车论坛用户发帖图与故障描述逻辑一致性检测

OFA-VE实战案例:汽车论坛用户发帖图与故障描述逻辑一致性检测 1. 为什么汽车论坛需要“看懂图读懂话”的能力? 你有没有在汽车论坛刷帖时遇到过这样的情况: 一位车主发帖说“发动机异响,启动后有金属摩擦声”,配图却…

作者头像 李华
网站建设 2026/5/7 8:36:10

科哥UNet镜像二次开发指南,开发者必看

科哥UNet镜像二次开发指南,开发者必看 本文面向有Python和Web开发基础的工程师,聚焦真实开发场景中的可落地实践。不讲抽象理论,只说你改代码时真正需要知道的事。 1. 为什么需要二次开发——从“能用”到“好用”的关键跃迁 当你第一次打开…

作者头像 李华
网站建设 2026/5/22 10:43:48

Clawdbot镜像部署Qwen3:32B:Web网关安全加固与HTTPS配置指南

Clawdbot镜像部署Qwen3:32B:Web网关安全加固与HTTPS配置指南 1. 为什么需要为Clawdbot Web网关做安全加固 你刚用Clawdbot镜像跑起了Qwen3:32B,打开浏览器输入http://localhost:18789就能和大模型聊天——这感觉很爽。但如果你打算把服务暴露在公司内网…

作者头像 李华
网站建设 2026/5/16 1:49:49

快递公司都在用的地址技术,原来是这个开源模型

快递公司都在用的地址技术,原来是这个开源模型 你有没有想过,每天收到的快递为什么总能准确送到楼下?背后支撑着整个物流网络高效运转的,不是什么神秘算法,而是一套看似简单却极其关键的技术——地址匹配。 当用户下…

作者头像 李华
网站建设 2026/5/16 6:18:08

libusb跨平台异步兼容性:Windows与Linux差异对比

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。整体风格已全面转向 人类专家口吻的实战教学体 :去除了所有AI痕迹、模板化表达和刻板章节标题;以真实开发者的视角层层递进,穿插经验判断、踩坑复盘与工程权衡;语言更紧凑有力,逻辑更自然流畅,技术细…

作者头像 李华
网站建设 2026/5/23 5:56:40

Z-Image-Turbo实战:轻松生成宠物写真与风景画

Z-Image-Turbo实战:轻松生成宠物写真与风景画 1. 为什么选Z-Image-Turbo?一张图说清它的特别之处 你有没有试过用AI画一只猫,结果它长了七条腿?或者想生成一张雪山日出,画面却灰蒙蒙像阴天?很多图像生成工…

作者头像 李华