rkllm模型量化构建

news2024/9/22 15:46:58

在发布的 RKLLM 工具链压缩文件中,包含了 RKLLM-Toolkit 的 whl 安装包、RKLLM Runtime 库的相关文件以及参考示例代码,github链接如下:https://github.com/airockchip/rknn-llm

环境准备

RKLLM-Toolkit

由于提供的rkllm_toolkit包为python3.8版本的,因此需要确保本地的python环境为3.8,否则需要新建python3.8的虚拟环境。

首先进入到rkllm-toolkit``/packages目录下,使用 pip 工具直接安装所提供的工具链 whl 包

pip install rkllm_toolkit-1.0.1-cp38-cp38-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,我们可以使用如下命令测试是否安装成功

python
from rkllm.api import RKLLM

RKLLM Runtime

在rkllm-runtime的rumtime目录下,分别包含Linux和Android下RKLLM Runtime 的全部文件:

  1. lib/librkllmrt.so: 适用于 RK3576/RK3588 板端进行模型推理的 RKLLM Runtime 库;
  2. include/rkllm_api.h: 与 librkllmrt.so 相对应的头文件,包含相关结构体及函数定义的说明;

在这里插入图片描述

在通过 RKLLM 工具链构建OK3576板端的部署推理代码时,为保证编译的正确性,需要包含对以上头文件及函数库的链接。当代码在开发板上运行的过程中,同样需要确保库文件也成功推送至板端,并正确设置环境变量

export LD_LIBRARY_PATH=/path/to/your/lib

RKNPU driver

在板端使用 RKLLM Runtime 进行模型推理前,首先需要确认板端的 NPU 内核是否为 v0.9.6 版本,具体的查询命令如下:

板端执行以下命令,查询 NPU 内核版本
cat /sys/kernel/debug/rknpu/version
确认命令输出是否为:
RKNPU driver: v0.9.6

若所查询的 NPU 内核版本低于 v0.9.6,则需要更新npu驱动并且重新编译进内核。

在这里插入图片描述

模型转换

rkllm-toolkit``/``examples``/huggingface目录下提供了huggingface模型转换的示例。整体流程如下图:

在这里插入图片描述

导入库

首先导入rkllm库

from rkllm.api import RKLLM

读取模型

读取我们的huggingface格式的模型,需要把其中的modelpath修改为自己的模型文件夹

modelpath = '/tmp/code/models/qwen2_0_5B'
llm = RKLLM()

# Load model
ret = llm.load_huggingface(model = modelpath)
if ret != 0:
    print('Load model failed!')
    exit(ret)

模型量化构建

# Build model
ret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w8a8', target_platform='rk3576')
if ret != 0:
    print('Build model failed!')
    exit(ret)

各参数说明如下:

  • do_quantization: 该参数控制是否对模型进行量化操作,建议设置为 True;
  • optimization_level: 该参数用于设置是否进行量化精度优化,0 表示不做任何优化,1 表示进行精度优化;
  • quantized_dtype: 该参数用于设置量化的具体类 型, 目前支持的量化类型包括“w4a16”和“w8a8”,“w4a16”表示对权重进行 4bit 量化而对激活值不进行量化;“w8a8”表示对权重和激活值均进行 8bit 量化;目前 rk3576 平台支持“w4a16”和“w8a8”两种量化类型,rk3588 仅支持“w8a8”量化类型;
  • target_platform: 模型运行的硬件平台, 可选择的设置包括“rk3576”或“rk3588”;

导出模型

在通过 rkllm.build()函数构建了 RKLLM 模型后,可以通过rkllm.export_rkllm()函数将RKNN 模型保存为一个.rkllm 文件,以便后续模型的部署。

# Export rknn model
ret = llm.export_rkllm("/tmp/code/models/qwen.rkllm")
if ret != 0:
    print('Export model failed!')
    exit(ret)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetpack架构组件_ViewModel组件_2.AndroidViewModel

1.AndroidViewModel简介 “Application context aware ViewModel. Subclasses must have a constructor which accepts Application as the only parameter.” AndroidViewModel是感知应用程序上下文的ViewModel。子类必须有一个接受Application作为唯一参数的构造函数。 2.…

Leetcode Hot 100刷题记录 -Day2(哈希表)

一、字母异位词分组 问题描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 简单理解:字母异位词就是字母个数和种类都相同,但字…

萤石云移动端sdk常见问题

使用萤石云的SDK时常会遇到各种问题 首先,请先查看错误码文档,这能解决其中的绝大多数!!! 如果没有找到,可以看看下方这些常见问题能否解决你碰到的情况。(iOS可以在打印日志中搜索opensdk er…

python查看wifi密码

抱歉,没有办法发出来,如果有需要的可以私信我!!!

安卓13去掉权限动态申请,默认授权,不用动态申请权限

总纲 android13 rom 开发总纲说明 1、前言 2、问题分析 3.代码处理 4.代码修改 5.编译 6.彩蛋 1、前言

SpringBoot 一文复习知识点概览

目录 1、第一个SpringBoot程序 2、运行原理初探 2.1、pom.xml 2.2、启动器 spring-boot-starter 2.3、主启动类 2.4、注解 2.5、run方法流程分析 3、SpringBoot配置 3.1、yaml配置文件 3.2、JSR303数据校验 3.2.1、常见参数 3.3、多环境配置及配置文件优先顺序 3.…

基于yolov8的麦穗计数系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的麦穗计数系统是一种利用深度学习技术,特别是YOLOv8目标检测模型,对小麦麦穗进行自动识别和计数的系统。YOLOv8作为Ultralytics公司开发的最新版本,具备更高的性能和灵活性,能够在各种硬件平台上运行&am…

干货整理|一篇文章告诉你监控电脑的软件叫什么?10款电脑屏幕监控软件任你选择!(珍藏篇)

现代社会,电脑屏幕监控软件已成为企业管理和家庭教育中不可或缺的工具。 这类软件不仅可以帮助管理者监督员工的工作效率,保障企业信息安全,还能让家长更好地了解孩子的上网行为。 下面是精心挑选的10款备受好评的电脑屏幕监控软件&#xf…

【python】懂车帝字体反爬逐层解密案例(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

台灯怎么选对眼睛好?护眼台灯怎么选的六大技巧一定要看!

根据2024年国家卫健委最新公布的数据,我国儿童青少年总体近视率为52.7%,这一数据表明视力健康已成为不容忽视的问题。小学生近视率为42%,初中生高达80.7%,高中生更是达到了85.7%。儿童的学习环境对学习效果和视力健康有着重要影响…

系统中没有安装 git

系统中没有安装 git 安装git一、CentOS/RHEL 系统二、Ubuntu/Debian 系统 这个错误表明系统中没有安装 git。 安装git 一、CentOS/RHEL 系统 使用以下命令安装: sudo yum install git二、Ubuntu/Debian 系统 使用以下命令安装: sudo apt install g…

Java技术栈 —— Spark入门(二)之实时WordCount

Java技术栈 —— Spark入门(二) 一、kafka1.1 创建topic1.2 准备input与查看output 二、spark2.1 spark下的程序文件2.2 用spark-submit提交作业 参考文章: 参考文章或视频链接[1] 《Kafka Spark Stream实时WordCount》 实验环境&#xff…

使用dx工具将jar和class打包成dex

最近用到将三方jar和自己的class打包成dex的需求,研究了下,遇到了上些问题,最终成功了,记录下: 将jar放在ss目录下,将class放在与包名对应的目录下 com.example.myapplication.Heav.class 打包命令&#x…

android13固定app方向 强制app方向

总纲 android13 rom 开发总纲说明 1.前言 经常遇到客户有固定或者设置应用方向,不让他们改成其他方向的需求。今天我们就来处理这种问题。 2.问题分析 在 Android 10 之前,显示旋转的处理逻辑分散在多个类和模块中,Android 10 统一了这些逻辑,集中在 DisplayRotation.ja…

【数据结构】队列(Queue)

目录 队列概念 ​方法 队列模拟实现 链表实现队列 入队列 出队列 获取队头元素 数组实现队列 入队列 出队列 返回头队列 返回尾队列 完整代码 双链表实现队列 数组实现队列(设计循环队列) 队列概念 队列:只允许在一段进行插入…

传奇开服教程之新GOM引擎登录器配置教程

现在新GOM引擎的版本比以前多了一些,是时候和你们分享一期新GOM引擎登录器配置教程了,顺便来和你们分享下新GOM引擎和老GOM引擎的区别。 新GOM引擎与老GOM的区别 1、老GOM引擎1108的pak.txt就在登录器配置文件夹下,新GOM引擎的pak.txt在登录…

谷歌浏览器与edge哪个好用

浏览器是我们工作和生活中的重要工具,其中谷歌浏览器与edge是两款备受关注的浏览器工具。那么这二者中,哪一款更胜一筹呢?本文将比较这两款浏览器的功能、性能和用户体验等,帮助大家做出明智的选择。 谷歌浏览器的历史与发展&…

Java面试宝典-java基础01

Java面试宝典-java基础01 1、java的跨平台性2、Java是如何实现跨平台性的?3、JDK 和 JRE 有什么区别?4、为何要配置Java环境变量?5、Java都有哪些特性?6、 和 equals 的区别是什么?7、Java中有哪些数学函数&#xff1f…

1894. 二分查找左侧边界

代码 #include<bits/stdc.h> using namespace std; int a[110000],n,q; int zc(int x) {int l1,rn,mid;while(l<r){mid(lr)/2;if(x<a[mid]) rmid-1;else if(x>a[mid]) lmid1;else if(xa[mid]) rmid-1;}if(a[l]x) return l;else return -1; } int main() {int i…

通过React实现萤石摄像头rtsp地址格式的视频流的web展示

首先&#xff0c;我们需要拿到rtsp格式的流地址&#xff08;rtsp://admin:[password][ip]&#xff09;&#xff0c;其中 password:设备底下的6位数验证码 ip:设备的ipv4地址 这里拿到ip的方式可以直连网线和绑定wifi两种方式 然后下载PC端的萤石工作室&#xff08;下载中心…