跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

DeepSeek R1 7B 部署至 RK3588:RKLLM 转换与 Web 服务实战

记录了 DeepSeek R1 7B 模型在瑞芯微 RK3588 开发板上的完整部署方案。涵盖 NPU 驱动升级、Hugging Face 权重获取、safetensors 转 RKLLM 量化转换、板端 C++ 推理及基于 Gradio 的局域网 Web 服务搭建。重点解决了 ChatML 模板适配、内存优化及环境配置问题,实现了本地大模型的离线运行与网页交互。

技术博主发布于 2026/4/9更新于 2026/7/2137 浏览
DeepSeek R1 7B 部署至 RK3588:RKLLM 转换与 Web 服务实战

DeepSeek R1 7B 在 RK3588 上的完整部署流程

本文记录 DeepSeek R1 7B 模型在瑞芯微 RK3588 SoC 上的完整部署方案,涵盖从开发板驱动适配、模型量化转换到局域网 Web 访问的全流程。

一、硬件与驱动准备

我们需要一台搭载瑞芯微 RK3588 SoC 的 ARM64 开发板(如 Firefly 系列)。

1. NPU 驱动版本检查

RKLLM 对 NPU 驱动有特定要求。旧版驱动(如 0.8.2)仅支持传统 CV 模型的 librknnrt.so,而 LLM 推理依赖新版 librkllm.so,最低需要 0.9.8 版本。

在终端执行以下命令检查当前驱动版本:

sudo cat /sys/kernel/debug/rknpu/version

若版本低于 0.9.8,需重新烧录固件。升级驱动能优化内存管理、多核调度,并修复高负载下的稳定性问题。

2. 固件烧录流程

以 Firefly RK3588 为例,建议下载官方 Ubuntu 22.04 固件(含 kernel-6.1)。

  1. 获取工具:访问 Rockchip 或厂商官网下载 RKDevTool 烧写工具和对应固件包。
  2. 连接设备:使用 Type-C 数据线连接 PC 与开发板。
  3. 进入刷机模式:断电状态下,按住 Recovery 键,通电后约两秒松开,此时工具应识别到 LOADER 设备。
  4. 烧录固件:选择固件文件(.img),点击'升级固件'开始写入。
  5. 验证驱动:烧录完成后重启,再次运行 sudo cat /sys/kernel/debug/rknpu/version 确认已更新至 0.9.8。

二、软件环境搭建

1. 模型权重获取

推荐直接从 Hugging Face 下载开源模型权重(.safetensors 格式),例如 DeepSeek-R1-Distill-Qwen-7B。由于文件较大,建议逐个下载分片文件以防传输中断。

2. 转换环境配置

模型转换建议在 x86 Linux 服务器或虚拟机上进行,需确保内存充足(建议 16GB+,不足可使用 Swap)。

创建 Python 3.10 虚拟环境并安装 RKLLM Toolkit:

conda create -n rkllm123 python=3.10
conda activate rkllm123
# 进入 rkllm-toolkit/packages 目录后执行
pip install rkllm_toolkit-1.2.3-cp310-cp310-linux_x86_64.whl

三、模型转换 (safetensors → RKLLM)

将下载的模型文件放入指定目录,并编写两个脚本:generate_data.py(生成校准数据)和 export_model.py(执行转换)。

1. 生成校准数据

import json
from transformers import AutoTokenizer

model_path = '/path/to/DeepSeek-R1-Distill-Qwen-7B'
prompts = [
    "你好,请介绍一下你自己。",
    ,
    ,
    
]

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=)
data_list = []

 prompt  prompts:
    messages = [{: , : prompt}]
    text = tokenizer.apply_chat_template(messages, tokenize=, add_generation_prompt=)
    data_list.append({: text, : })

 (, , encoding=)  f:
    json.dump(data_list, f, ensure_ascii=, indent=)
()
"Explain the theory of relativity in simple terms."
"写一首关于春天的七言绝句。"
"瑞芯微 RK3588 芯片的主要特点是什么?"
True
for
in
"role"
"user"
"content"
False
True
"input"
"target"
""
with
open
'data_quant.json'
'w'
'utf-8'
as
False
4
print
"量化数据已生成:data_quant.json"

运行脚本生成 data_quant.json。

2. 执行转换

修改 export_model.py 中的路径参数,注意设置 device='cpu' 以避免显存溢出,并使用 W8A8 量化策略。

from rkllm.api import RKLLM
import os

model_path = '/path/to/model_folder'
platform = 'rk3588'
export_path = f'DeepSeek-R1-Distill-Qwen-7B_W8A8_{platform}.rkllm'

llm = RKLLM()
print(">>> Loading model...")
ret = llm.load_huggingface(
    model=model_path,
    device='cpu',
    dtype='float16'
)
if ret != 0:
    print("Model Load Failed!")
    exit(ret)

print(">>> Building model (Quantization W8A8)...")
qparams = None
dataset = './data_quant.json'
ret = llm.build(
    do_quantization=True,
    optimization_level=1,
    quantized_dtype='w8a8',
    target_platform=platform,
    num_npu_core=3,
    dataset=dataset
)
if ret != 0:
    print("Model Build Failed!")
    exit(ret)

print(f">>> Exporting model to {export_path}...")
ret = llm.export_rkllm(export_path)
if ret != 0:
    print("Model Export Failed!")
    exit(ret)

print("\n\n转换成功!请将 .rkllm 文件推送到板端进行测试。")

执行 python export_model.py,成功后会得到约 7.65GB 的 .rkllm 文件。

四、板端部署及推理

将生成的 .rkllm 文件复制到开发板,例如 /home/firefly/models/。

1. 修改 C++ Demo

进入 rknn-llm-release/examples/rkllm_api_demo/deploy 目录,修改 llm_demo.cpp 中的 ChatML 模板,确保对话格式正确。

// 适配 DeepSeek-R1 / Qwen 的 ChatML 模板
rkllm_set_chat_template(llmHandle, 
    "<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n",
    "<|im_start|>user\n",
    "<|im_end|>\n<|im_start|>assistant\n");

同时修改编译脚本 build-linux.sh,确保编译器路径正确(通常直接使用系统默认的 gcc/g++ 即可)。

2. 编译与运行

在板端执行编译:

bash build-linux.sh

设置环境变量以加载动态库:

export LD_LIBRARY_PATH=~/rknn-llm-release-v1.2.3/rkllm-runtime/Linux/librkllm_api/aarch64/lib:$LD_LIBRARY_PATH

运行推理程序:

./llm_demo /home/firefly/models/DeepSeek-R1-Distill-Qwen-7B_W8A8_rk3588.rkllm 512 2048

此时终端应显示 user: 提示符,可输入问题进行测试。观察资源监控,NPU 和 CPU 负载会显著上升,若内存紧张,建议开启 Swap。

五、集成 Gradio 实现 Web 访问

为了更方便地通过浏览器交互,我们可以利用官方提供的 Gradio 示例。

1. 环境准备

在开发板上安装 Gradio 并复制必要的 .so 库文件:

pip3 install gradio
cd ~/rknn-llm-release-v1.2.3/examples/rkllm_server_demo/rkllm_server
cp ~/rknn-llm-release-v1.2.3/rkllm-runtime/Linux/librkllm_api/aarch64/librkllmrt.so ./lib/

2. 修改启动脚本

编辑 gradio_server.py,找到 chatRKLLM.launch() 部分,将监听地址改为 0.0.0.0 以便局域网访问:

os.environ["GRADIO_SERVER_NAME"] = "0.0.0.0"
os.environ["GRADIO_SERVER_PORT"] = "8080"
# ... 省略中间代码 ...
chatRKLLM.launch(server_name="0.0.0.0", server_port=8080)

3. 启动服务

运行服务脚本:

python3 gradio_server.py --model_path /home/firefly/models/DeepSeek-R1-Distill-Qwen-7B_W8A8_rk3588.rkllm --target_platform rk3588

启动成功后,在同一局域网内的 PC 浏览器访问 http://<开发板 IP>:8080 即可进行对话。此方案实现了本地大模型的离线运行与网页交互,适合边缘计算场景。

目录

  1. DeepSeek R1 7B 在 RK3588 上的完整部署流程
  2. 一、硬件与驱动准备
  3. 1. NPU 驱动版本检查
  4. 2. 固件烧录流程
  5. 二、软件环境搭建
  6. 1. 模型权重获取
  7. 2. 转换环境配置
  8. 进入 rkllm-toolkit/packages 目录后执行
  9. 三、模型转换 (safetensors → RKLLM)
  10. 1. 生成校准数据
  11. 2. 执行转换
  12. 四、板端部署及推理
  13. 1. 修改 C++ Demo
  14. 2. 编译与运行
  15. 五、集成 Gradio 实现 Web 访问
  16. 1. 环境准备
  17. 2. 修改启动脚本
  18. ... 省略中间代码 ...
  19. 3. 启动服务
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • GitHub 机器人故障处理:从 403 错误到权限重构
  • 跨境电商 AI 数据中台架构实战:接入卖家精灵 MCP 打通选品投放供应链闭环
  • 使用 LangChain 结合 LLM 实现私有化文档搜索
  • 文心一言开源模型部署与性能测评指南
  • FAIR plus 机器人全产业链接会 2026 前瞻
  • Python 爬虫开发实战:从原理到反爬策略
  • Spring IoC 与 DI 核心知识点详解
  • JavaSE 入门:注释、方法、基础数据类型与输入输出
  • JTextArea 与 JTable 自动滚动至最后一行的实现
  • 通义万相 2.1 文生图技术优势与特性解析
  • 构建与 GitHub 深度集成的自动化工作流指南
  • Linux 权限管理与文件属性详解
  • LiuJuan20260223Zimage 镜像结构解析:目录布局、日志路径与模型权重规范
  • OpenCode 本地 AI 模型配置指南
  • Python 3.14 环境下 PyAudio 安装全指南:解决兼容性与依赖问题
  • WebODM 免费开源无人机影像处理全流程指南
  • 2023年网络安全趋势观察:十个绕不开的方向
  • Java 面试核心知识点汇总:基础、并发、框架等
  • FPGA 是什么?从原理到应用场景的深度解析
  • USAD 算法深度解析与工业级时序异常检测实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online