前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【杂谈】当前模型量化有哪些可用的开源工具?

【杂谈】当前模型量化有哪些可用的开源工具?

作者头像
用户1508658
发布于 2019-12-25 10:06:03
发布于 2019-12-25 10:06:03
2.1K0
举报
文章被收录于专栏:有三AI有三AI

模型量化属于模型优化中的重要技术之一,是非常有效地提升模型推理速度的技术方案,那么当前有哪些可用的模型量化工具呢?

作者&编辑 | 言有三

1 Tensorflow Lite

TensorFlow Lite是谷歌推出的面向嵌入式设备的推理框架,支持float16和int8低精度,其中8bit量化算法细节可以参考白皮书“Quantizing deep convolutional networks for efficient inference: A whitepaper”,支持训练后量化和量化感知训练,这也是大部分量化框架的算法原理。

https://github.com/tensorflow/model-optimization

另外新技术的尝鲜可以关注TensorFlow Model Optimization Toolkit,地址如上,它是谷歌官方开源的模型优化技术包,目前包含了模型剪枝和量化两种API。如果想使用该工具包,需要安装tf-nightly or tf-nightly-gpu。不过会有一些环境冲突,所以体验者最好做好环境隔离工作。

2 TensorRT

TensorRT是Nvidia提出的神经网络推理(Inference)引擎,支持训练后8bit量化,它使用基于交叉熵的模型量化算法,通过最小化两个分布的差异程度来实现。

https://github.com/NVIDIA/TensorRT

caffe-int8-convert-tools是一个Caffe模型量化工具,基于TensorRT2.0。

https://github.com/BUG1989/caffe-int8-convert-tools

3 PaddleSlim

PaddleSlim是百度提出的模型量化工具,包含在PaddlePaddle框架中,支持量化感知训练,离线量化,权重全局量化和通道级别量化。

https://github.com/PaddlePaddle/models/tree/develop/PaddleSlim/quant_low_level_api

4 Pytorch

Pytorch1.3开始已经支持量化功能,基于QNNPACK实现,支持训练后量化,动态量化和量化感知训练等技术。

https://github.com/pytorch/glow/blob/master/docs/Quantization.md

https://github.com/pytorch/QNNPACK

另外Distiller是Intel基于Pytorch开源的模型优化工具,自然也支持Pytorch中的量化技术。

https://github.com/NervanaSystems/distiller

5 其他框架

微软的NNI集成了多种量化感知的训练算法,并支持PyTorch,TensorFlow,MXNet,Caffe2等多个开源框架。

https://github.com/microsoft/nni

keras,Core ML的相关量化开源工具如下

https://github.com/google/qkeras

https://github.com/kingreza/quantization

6 一些论文的实现

以下是一些重要文章算法的实现,发布机构包括Intel研究院,Xilinx,Facebook等。

[1] 论文Incremental Network Quantization: Towards Lossless CNNs with Low-Precision Weights by英特尔https://github.com/AojunZhou/Incremental-Network-Quantization

[2] 论文FINN: A Framework for Fast, Scalable Binarized Neural Network Inference by Xlinx https://github.com/Xilinx/BNN-PYNQ

[3] 论文And the bit goes down: Revisiting the quantization of neural networks by FaceBook

https://github.com/facebookresearch/kill-the-bits

[4] 论文LQ-Nets: Learned Quantization for Highly Accurate and Compact Deep Neural Networks by microsoft

https://github.com/microsoft/LQ-Nets

[5] 论文HAQ: Hardware-Aware Automated Quantization with Mixed Precision by Massachusetts Institute of Technology

https://github.com/mit-han-lab/haq

更多的留待读者自己学习吧,咱们就不沉迷于收藏了。

7 更多理论学习

如果想要系统性学习模型优化相关的理论,可以移步有三AI知识星球 -> 网络结构1000变 -> 模型压缩板块 -> 模型剪枝,量化与蒸馏板块,一些解读案例如下:

总结

低精度量化是一个非常简单而又有效地降低模型大小,提升模型推理速度的技术,对于嵌入式设备来说具有很重要的工程意义。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
五、集合基础【黑马JavaSE笔记】
注:以上方法时List集合特有的方法,Collection集合没有这些方法,但是ArrayLIst集合有这些方法,因为ArrayList继承自List集合。
啵啵鱼
2022/11/23
7580
五、集合基础【黑马JavaSE笔记】
Java学习笔记——集合
存储对象可以使用数组 (基本数据类型 & 引用数据类型) 和集合 (引用数据类型),用数组存储对象的弊端有:一旦创建,其长度不可变;数组中真正存储的对象个数不可知,除非自定义类。使用集合可以解决这些问题。
梦飞
2022/06/23
2730
Java学习笔记——集合
Java基础之集合
-集合结构只要发生改变,迭代器必须重新获取,如果还是用的之前的迭代器,就会出现异常java.util.ConcurrentModificationException
shaoshaossm
2022/12/27
5330
Java基础之集合
Java基础(十九):集合框架
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法
冬天vs不冷
2025/01/21
2510
Java基础(十九):集合框架
Java类集框架详细汇总
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
BUG弄潮儿
2021/04/12
7350
Java学习笔记(三):集合类与常用数据结构的典型用法
foochane :https://foochane.cn/article/2019122801.html 1 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合A
foochane
2020/02/13
9190
阶段01Java基础day18集合框架04
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%b7%e9%9c%86%e6%88%98%e6%9c%ba-25/
对弈
2019/09/04
5460
50道Java集合经典面试题(收藏版)
Collection.sort是对list进行排序,Arrays.sort是对数组进行排序。
捡田螺的小男孩
2020/06/19
9070
50道Java集合经典面试题(收藏版)
Java官方笔记14流
The Stream API is probably the second most important feature added to Java SE 8, after the lambda expressions. In a nutshell, the Stream API is about providing an implementation of the well known map-filter-reduce algorithm to the JDK.
dongfanger
2023/07/20
2150
Java学习之集合篇
上篇文章的常用类,其实就已经讲到了,这个ArrayList集合,但是ArrayList只是集合中的其中一种,那这篇文章就来讲讲关于集合的一些对象。
全栈程序员站长
2022/07/13
3220
Java(集合④)
当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;
全栈开发日记
2022/05/12
7580
务实java基础之集合总结
Java 提供了容纳对象(或者对象的句柄)的多种方式。其中内建的类型是数组,此外, Java 的工具库提供了一些 “集合类”,利用这些集合类,我们可以容纳乃至操纵自己的对象。 声明:本篇博客内容参考自《java编程思想》,代码均来自书中,大部分内容截取自该书
老马的编程之旅
2022/06/22
6290
务实java基础之集合总结
Java 类集初探
List属于接口,如果想使用接口进行操作,就必须存在子类;使用 ArrayList 子类实现(和Vector子类)
Mirror王宇阳
2020/11/10
5930
Java基础——集合
集合是java中提供的一种容器,可以用来存储多个数据,集合框架主要java.util 包中,存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。 Collection是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。
羊羽shine
2019/05/28
6090
Java集合类
集合类其实就是为了更好地组织、管理和操作我们的数据而存在的,包括列表、集合、队列、映射等数据结构。
用户9645905
2023/10/23
2720
Java集合类
Java 集合补充
集合和数组不一样,数组元素可以是基本类型的值,也可以是对象(的引用变量),集合里只能保存对象(的引用变量)。
二十三年蝉
2018/08/01
1.1K0
Java 集合补充
13 Java 集合
Java 集合定义了两种基本的数据结构,一种是 Collection,表示一组对象的集合;另一种是Map,表示对象间的一系列映射或关联关系。Java 集合的基本架构如下图。
acc8226
2022/05/17
2.4K0
13  Java 集合
【17】JAVASE-集合专题【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
1960
【17】JAVASE-集合专题【从零开始学JAVA】
巩固基础从Java集合类开始,最系统全面的集合类笔记
来源:https://blog.csdn.net/weizhengzhou520/article/details/81806539
挨踢小子部落阁
2019/07/16
4150
Java-集合
哈喽!大家好,我是小简。今天开始学习《Java-集合》,此系列是我做的一个 “Java 从 0 到 1 ” 实验,给自己一年左右时间,按照我自己总结的 Java-学习路线,从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!<有同样想法的小伙伴,可以联系我一起交流学习哦!>
小简
2023/01/04
1.2K0
Java-集合
相关推荐
五、集合基础【黑马JavaSE笔记】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档