RKLLM AI 模型转换指南
修改履历
| NO | 版本 | 修改内容 | 修改日期 |
|---|---|---|---|
| 1 | Ver1.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 标志
1.1. 模型下载
本节提供 Hugging Face 原始模型和转换完成的 NPU 模型,可通过以下两种方式下载。
图:LLM 模型文件的 Google Drive 文件夹
1.2. 模型转换
下载完成后模型和脚本放到同一个目录:

图:DeepSeek-R1 原始模型文件夹
在RKLLM-Toolkit环境,执行以下指令进行模型转换:
python test.py
图:RKLLM 模型转换过程的终端输出
至此模型转换成功,生成deepseek_r1_rv1126b_w4a16.rkllm NPU化的大模型文件:

图:转换后生成的 RKLLM 模型文件
test.py转换脚本如下所示, 用于转换DeepSeek-R1-Distill-Qwen-1.5B模型:
from rkllm.api import RKLLMfrom datasets import load_datasetfrom transformers import AutoTokenizerfrom tqdm import tqdmimport torchfrom torch import nnimport 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 modeldataset = "./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_qparamsret = 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)# Chat with modelmessages = "<|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}
# print(llm.chat_model(messages, kwargs))# Export rkllm modelret = llm.export_rkllm("./deepseek_r1_rv1126b_w4a16.rkllm")if ret != 0:print('Export model failed!')exit(ret)
