RK3588 上的 LLM(一):使用rknn-llm转换huggingface模型为rkllm格式的教程(基于rknn-llm-1.2.2)
本教程记录了在 PC上使用rknn-llm-1.2.2将Qwen/Qwen3-4B-Instruct-2507模型转换为 rkllm 格式的流程,并成功在基于 rk3588 的 Orangepi5Plus 开发板上部署了转换后的模型。
注:本教程使用的 PC 运行的系统为 Ubuntu22.04,python 版本为 3.9,开发板端的系统是基于 ubuntu-rockchip 项目构建的 Ubuntu 24.04,python 版本为 3.12。
注:由于部分软件包的更新,高于 python3.8 的 python 环境在运行转换脚本时会出现错误,需要手动降级软件包或修改函数,这部分我会放在文章最后讲。
注:按照官方文档,转换 Qwen3 模型需要 python 3.9 及以上版本(所以如果不转换这么新的模型可以直接使用 python 3.8 环境,可以不用手动降级软件包或修改函数)
注:转换需要至少 16G 的内存,请使用 32G 或以上内存的 PC 或虚拟机(以 4B 模型为例,或许更大的模型转换时的占用更高?)
先使用 conda 按照提示构建一个用于转换模型的 python 3.9 环境并激活,我这里将其命名为rkllm-39(conda 的安装可以直接参考相关教程,这里不赘述了):
conda create -n rkllm-39 python=3.9 && conda activate rkllm-39
随后拉取 rknn-llm 源码:
git clone https://github.com/airockchip/rknn-llm && cd rknn-llm
安装 rkllm-toolkit:
pip install rkllm-toolkit/packages/rkllm_toolkit-1.2.2-cp39-cp39-linux_x86_64.whl
进入examples/rkllm_api_demo/export目录,下载模型并执行量化脚本,这里使用 modelscope 进行模型的下载(也可以使用如 Huggingface、git 工具进行下载):
cd examples/rkllm_api_demo/export
modelscope download Qwen/Qwen3-4B-Instruct-2507 --local_dir Qwen3-4B-Instruct-2507
python generate_data_quant.py -m Qwen3-4B-Instruct-2507
此时开始模型的量化,这个过程可能需要一段时间,期间会在终端输出一些对话内容
量化完成后,修改export.py,找到第十一行:
11 modelpath = '/path/to/DeepSeek-R1-Distill-Qwen-1.5B'
将路径修改为实际下载路径,这里为modelscope下载参数中的--local_dir参数,即./Qwen3-4B-Instruct-2507:
11 modelpath = './Qwen3-4B-Instruct-2507'
运行转换脚本:
python export.py
此时,若你的 python 版本大于等于 3.9,则可能出现如下错误:
Traceback (most recent call last):
File "/home/sivon/rkllm/rknn-llm/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export/export_rkllm.py", line 1, in <module>
from rkllm.api import RKLLM
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/rkllm/__init__.py", line 1, in <module>
from rkllm import api
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/rkllm/api/__init__.py", line 1, in <module>
from rkllm.api.rkllm import RKLLM
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/rkllm/api/rkllm.py", line 1, in <module>
from rkllm.api.rkllm_base import RKLLMBase
File "rkllm/api/rkllm_base.py", line 1, in init rkllm.api.rkllm_base
File "rkllm/base/quantizer.py", line 12, in init rkllm.base.quantizer
File "rkllm/base/loader.py", line 4, in init rkllm.base.loader
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/datasets/__init__.py", line 22, in <module>
from .arrow_dataset import Dataset
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/datasets/arrow_dataset.py", line 67, in <module>
from .arrow_writer import ArrowWriter, OptimizedTypedSequence
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/datasets/arrow_writer.py", line 27, in <module>
from .features import Features, Image, Value
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/datasets/features/__init__.py", line 18, in <module>
from .features import Array2D, Array3D, Array4D, Array5D, ClassLabel, Features, Sequence, Value
File "/home/sivon/rkllm/venv/lib/python3.10/site-packages/datasets/features/features.py", line 634, in <module>
class _ArrayXDExtensionType(pa.PyExtensionType):
AttributeError: module 'pyarrow' has no attribute 'PyExtensionType'. Did you mean: 'ExtensionType'?
这是由于新版的 pyarrow 取消了PyExtensionType这个类,可以尝试降级为20.0.0:
pip install -U pyarrow==20.0.0
等待转换完成后,可以在当前目录下找到rkllm扩展名的模型文件,可将其发送至开发版进行推理,发送方式自选。

浙公网安备 33010602011771号