跳转到内容

RKLLM AI 模型转换指南

修改履历

NO版本修改内容修改日期
1Ver1.0新建2026/06/21

本文档信息可能会因文档改进而在未事先通知的情况下变更。最新版请参照本公司网站。

未经株式会社日昇科技书面许可,严禁以任何形式复制本文档。

1. AI模型转换

本章主要说明如何实现Hugging Face格式的大语言模型(Large Language Model, LLM)

如何转换为RKLLM模型,目前支持的模型包括Deepseek、LLaMA, Qwen, Qwen2, Phi-2, Phi-

3. , ChatGLM3, Gemma, InternLM2 和 MiniCPM等,本章以Deepseek-R1为例。

本章主要说明如何实现Deepseek-R1大语言模型如何转换为RKLLM模型。 DeepSeek-R1 标志

图:DeepSeek-R1 标志

1.1. 模型下载

本节提供 Hugging Face 原始模型和转换完成的 NPU 模型,可通过以下两种方式下载。

图:LLM 模型文件的 Google Drive 文件夹

1.2. 模型转换

下载完成后模型和脚本放到同一个目录: DeepSeek-R1 原始模型文件夹

图:DeepSeek-R1 原始模型文件夹

在RKLLM-Toolkit环境,执行以下指令进行模型转换:

Terminal window
python test.py

RKLLM 模型转换过程的终端输出

图:RKLLM 模型转换过程的终端输出

至此模型转换成功,生成deepseek_r1_rv1126b_w4a16.rkllm NPU化的大模型文件: 转换后生成的 RKLLM 模型文件

图:转换后生成的 RKLLM 模型文件

test.py转换脚本如下所示, 用于转换DeepSeek-R1-Distill-Qwen-1.5B模型:

from rkllm.api import RKLLM
from datasets import load_dataset
from transformers import AutoTokenizer
from tqdm import tqdm
import torch
from torch import nn
import os
# os.environ['CUDA_VISIBLE_DEVICES']='1'
modelpath = '/home/developer/RKLLM-Toolkit/DeepSeek-R1-Distill-Qwen-1.5B'
llm = RKLLM()
# Load model
# Use 'export CUDA_VISIBLE_DEVICES=2' to specify GPU device
# options ['cpu', 'cuda']
ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cpu')
# ret = llm.load_gguf(model = modelpath)
if ret != 0:
print('Load model failed!')
exit(ret)
# Build model
dataset = "./data_quant.json"
# Json file format, please note to add prompt in the input,like this:
# [{"input":"Human: 你好!\nAssistant: ", "target": "你好!我是人工智能助手KK!"},...]
qparams = None
# qparams = 'gdq.qparams' # Use extra_qparams
ret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w4a16',

quantized_algorithm=‘normal’, target_platform=‘rv1126b’, num_npu_core=1, extra_qparams=qparams, dataset=None)

if ret != 0:
print('Build model failed!')
exit(ret)
Terminal window
# Chat with model
messages = "<|im_start|>system You are a helpful assistant.<|im_end|><|im_start|>user你好!

\n<|im_end|><|im_start|>assistant”

kwargs = {"max_length": 128, "top_k": 1, "top_p": 0.8,

“temperature”: 0.8, “do_sample”: True, “repetition_penalty”: 1.1}

Terminal window
# print(llm.chat_model(messages, kwargs))
# Export rkllm model
ret = llm.export_rkllm("./deepseek_r1_rv1126b_w4a16.rkllm")
if ret != 0:
print('Export model failed!')
exit(ret)