模型转换
使用 RKNN3 Toolkit 在 PC 上将 AI 模型转换为 RKNN 格式,以便在 RK1828 上部署推理。
提示
RKNN3 Toolkit 仅支持 Python 3.10 和 3.12,不支持 3.11。详见 RKNN3 Toolkit 安装。
使用官方预转换模型(推荐)
RKNN3 Model Zoo 提供了官方预转换的模型和部署示例,开箱即用。
网盘下载(推荐,无需 Git):
- 官方模型打包下载(提取码
rknn):https://meta.box.lenovo.com/v/link/view/347a716ec0b84e0799675a3f45dfdc23
从 Model Zoo 仓库拉取:
git clone https://github.com/airockchip/rknn3-model-zoo.git传输到设备:
scp -r model/ root@<设备IP>:<模型目录>/Qwen3-1.7B/自行转换 LLM 模型(Qwen3-1.7B)
前置条件
- PC(建议 NVIDIA GPU,显存 ≥ 16GB)
- 已安装 RKNN3 Toolkit(参考RKNN3 Toolkit 安装与使用)
方式 A:使用 Model Zoo 转换脚本(推荐)
cd rknn3-model-zoo
pip install -r requirements.txt
export PYTHONPATH=./
cd examples/Qwen3/python/
# 第一步:导出 ONNX 模型(含 GRQ 量化)
python export_llm.py --quant --model_path Qwen/Qwen3-1.7B
# 第二步:转换为 RKNN 格式
python export_rknn.py方式 B:使用 Python API 直接转换
from rknn3.api import RKNN3
rknn3 = RKNN3()
rknn3.load_huggingface(model="./Qwen3-1.7B")
rknn3.build(
target="rk1828",
quantization="w8a8",
max_context_len=2048,
)
rknn3.export("Qwen3-1.7B.rknn")转换产出
Qwen3-1.7B/
├── Qwen3-1.7B.rknn # 模型结构
├── Qwen3-1.7B.weight # 模型权重 (~1.1GB)
├── Qwen3-1.7B.tokenizer.gguf # 分词器
└── Qwen3-1.7B.embed.bin # Embedding (~594MB)自行转换 CNN 模型(MobileNet V2)
从 PyTorch 导出 ONNX 格式:
import torch
import torchvision.models as models
model = models.mobilenet_v2(pretrained=True)
model.eval()
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(model, dummy_input, "mobilenet_v2.onnx",
input_names=["input"], output_names=["output"])转换为 RKNN 格式:
from rknn3.api import RKNN3
rknn3 = RKNN3()
rknn3.config(
mean_values=[[0, 0, 0]],
std_values=[[255, 255, 255]],
)
rknn3.load_onnx(model='./mobilenet_v2.onnx')
rknn3.build(
target="rk1828",
do_quantization=True,
dataset='./dataset.txt',
)
rknn3.export_rknn('./mobilenet_v2.rknn')dataset.txt 包含 20~200 张校准图片路径:
ls /path/to/calibration_images/*.jpg > dataset.txt关键参数说明
| 参数 | 说明 | 建议 |
|---|---|---|
quantization | w4a8 权重4bit,w8a8 权重8bit | w8a8 质量更好,w4a8 体积更小 |
max_context_len | 最大上下文 token 数 | Agent 场景建议 ≥ 32768 |
--quant (Model Zoo) | 启用 GRQ 量化,无需量化数据集 | 建议开启 |
do_quantization | CNN 模型 INT8 量化 | 开启可减小模型体积 |
注意
max_context_len 在转换时写死到模型中,运行时无法修改。如果转换时设为 2048,运行时 rkllm3-server 的 -c 参数最大也只能是 2048。
