TVM量化小结手册

文章目录

TVM里面关于量化的资料非常的多,虽然很有价值,但是极其零散,对于散户不是非常友好。这里汇总一下。

OFFICAL REFERENCES

TVM QUANTIZATION ROADMAP

INT8 QUANTIZATION PROPOSAL

QUANTIZATION STORY - 2019-09

Quantization Story - 2019-09

QUANTIZATION DEVELOPMENT

  • [RFC] Search-based Automated Quantization - 2020-01-22

    • I proposed a new quantization framework, which brings hardware and learning method in the loop.
    • Brought the idea from some existing quantization frameworks, I choose to adopt the annotation-calibration-realization 3-phases design:
  • Annotation: The annotation pass rewrites the graph and inserts simulated quantize operation according to the rewrite function of each operator. The simulated quantize operation simulates the rounding error and saturating error of quantizing from float to integer,
  • Calibration: The calibration pass will adjust thresholds of simulated quantize operations to reduce the accuracy dropping.
  • Realization: The realization pass transforms the simulation graph, which computes with float32 actually, to a real low-precision integer graph.

QUANTIZATION FRAMEWORK SUPPORTED BY TVM

TF QUANTIZATION RELATED

TVM support all Pre-quantized TFLite hosted

  • The performance is evaluated on C5.12xlarge Cascade lake machine, supported Intel VNNI
  • not autotuned the models yet.

PYTORCH QUANTIZATION RELATED

  • gap_quantization

    • Placeholder for GAP8 export and quantization module for PyTorch
    • include squeezenet-v1.1’ s quantization file.

MXNET RELATED

  • Model Quantization for Production-Level Neural Network Inference

    • The below CPU performance is from an AWS EC2 C5.24xlarge instance with custom 2nd generation Intel Xeon Scalable Processors (Cascade Lake).
    • The model quantization delivers more stable speedup over all models, such as 3.66X for ResNet 50 v1, 3.82X for ResNet 101 v1 and 3.77X for SSD-VGG16, which is very close to the theoretical 4X speedup from INT8.

the accuracy from Apache/MXNet quantization solution is very close to FP32 models without the request of retaining the mode. In Figure 8, MXNet ensured only a small reduction in accuracy, less than 0.5%.

TENSOR CORE RELATED

RELATED COMMIT

SPEED UP

COMPARISON

AUTOMATIC INTEGER QUANTIZATION

Quantization int8 slower than int16 on skylake CPU

  • The int8 is always slower than int16 before and after the auto-tuning
  • Target: llvm -mcpu=skylake-avx512
  • Problem is solved by creating the int8 task explicitly
    • create the task topi_x86_conv2d_NCHWc_int8
    • set output dtype to int32, input dtype=uint8, weight dtype=int8

TVM学习笔记–模型量化(int8)及其测试数据

  • TVM FP32、TVM int8、TVM int8 quantization , MXNet, TF1.13
  • 含测试代码

8bit@Cuda: AutoTVMvs TensorRT vs MXNet

  • In this post, we show how to use TVM to automatically optimize of quantized deep learning models on CUDA.

ACCEPTING PRE-QUANTIZED INTEGER MODELS

SPEED PROFILE TOOLS

Node Name               Ops                                                                  Time(us)   Time(%)  Start Time       End Time         Shape                Inputs  Outputs

---------               ---                                                                  --------   -------  ----------       --------         -----                ------  -------

1_NCHW1c                fuse___layout_transform___4                                          56.52      0.02     15:24:44.177475  15:24:44.177534  (1, 1, 224, 224)     1       1

_contrib_conv2d_nchwc0  fuse__contrib_conv2d_NCHWc                                           12436.11   3.4      15:24:44.177549  15:24:44.189993  (1, 1, 224, 224, 1)  2       1

relu0_NCHW8c            fuse___layout_transform___broadcast_add_relu___layout_transform__    4375.43    1.2      15:24:44.190027  15:24:44.194410  (8, 1, 5, 5, 1, 8)   2       1

_contrib_conv2d_nchwc1  fuse__contrib_conv2d_NCHWc_1                                         213108.6   58.28    15:24:44.194440  15:24:44.407558  (1, 8, 224, 224, 8)  2       1

relu1_NCHW8c            fuse___layout_transform___broadcast_add_relu___layout_transform__    2265.57    0.62     15:24:44.407600  15:24:44.409874  (64, 1, 1)           2       1

_contrib_conv2d_nchwc2  fuse__contrib_conv2d_NCHWc_2                                         104623.15  28.61    15:24:44.409905  15:24:44.514535  (1, 8, 224, 224, 8)  2       1

relu2_NCHW2c            fuse___layout_transform___broadcast_add_relu___layout_transform___1  2004.77    0.55     15:24:44.514567  15:24:44.516582  (8, 8, 3, 3, 8, 8)   2       1

_contrib_conv2d_nchwc3  fuse__contrib_conv2d_NCHWc_3                                         25218.4    6.9      15:24:44.516628  15:24:44.541856  (1, 8, 224, 224, 8)  2       1

reshape1                fuse___layout_transform___broadcast_add_reshape_transpose_reshape    1554.25    0.43     15:24:44.541893  15:24:44.543452  (64, 1, 1)           2       1

DEVICES ATTRIBUTES

COPARTNER

Please go tvmai/meetup-slides for more recently info what ohter copartners have done for tvm.

ALIBABA

  • 记录一下2019

    • 介绍阿里在TVM上的发展历程
    • 在今年(2019年)4月份的时候,我又回来和同事一起搞ARM CPU量化优化了,因为这是有业务要用的。我们一起吭哧吭哧搞了一段时间,可以很高兴的说我们比QNNPack更快,在Mobilenet V1上是1.61x TFLite,1.27X QNNPACK,Mobilenet V2是2X TFLite, 1.34X QNNPack。
    • TVM@AliOS

FACEBOOK

TVM量化小结手册的更多相关文章

  1. TVM vs TensorRT比较

    TVM vs TensorRT比较 如果理解正确的话,TensorRT和TVM会加快预测速度. TensorRT优化预测GPU和TVM优化预测几乎所有平台支持GPU,ARM,Mobile... 两者在 ...

  2. ANN中乘积量化与多维倒排小结

    目前特征向量的比对加速优化能极大缩短比对耗时,改善用户体验. 优化的途径主要有两种,一是使用指令集(SSE,AVX)加速运算.二是使用ANN替代暴力搜索. 乘积量化和倒排索引组合是ANN中效果较好且实 ...

  3. TVM设计与构架构建

    TVM设计与构架构建 本文档适用于希望了解TVM体系结构和/或在项目上进行积极开发的开发人员.该页面的组织如下: 实例编译流程Example Compilation Flow描述TVM把一个模型的高级 ...

  4. React JS快速开始手册

    怎样用React JS构建一个用户界面?本文将快速地给你一个React JS的概览.代码,请君移步react-starter 概念 React只有很少的API,这使得它很容易去学习与理解.当然,使用它 ...

  5. js中各种跨域问题实战小结(一)

    什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...

  6. Eclipse上GIT插件EGIT使用手册

    http://blog.csdn.net/luckarecs/article/details/7427605 Eclipse上GIT插件EGIT使用手册   一_安装EGIT插件 http://dow ...

  7. sql编程小结

    对照mysql5.1手册,对这几天学的sql编程进行小结,主要涉及触发器.存储过程.权限管理.主从分离等,权当抛砖引玉,高手请略过. 一.触发器 通俗的说就是在指定的数据表增删改的前或后触发执行特定的 ...

  8. Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)

    简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...

  9. Solaris 命令 小结

    Solaris 命令 小结 prstat -a 系统进程监控 Solaris 10默认的shell是sh,可以改成bash #useradd -m -d /home/dave dave -s /bin ...

随机推荐

  1. 对DiscuzQ的一些使用见解

    之前因为体验了DiscuzQ,在几番纠结后,把博客换成了DiscuzQ(以下简称DZQ). 在一个月的使用中,发现这个程序对于个人来说,十分不友好. 于是今天又换回了Wordpress. 在这里说一下 ...

  2. Python容器数据类型之间的转换

    强制转换成字符串 str() 将列表(list)转为字符串 var1 = [1, 2, 3, 4] var2 = str(var1) print(type(var2)) # <class 'st ...

  3. hdu 1867 求两个串的"和"最小 ,KMP

    题意:       给你两个字符串,让你求str1+str2,就是把1的后面和2的前面重叠的地方只显示一遍就行了 abc + bcd = abcd,要求和的长度最小,和最小的前提下求字典序最小,还有就 ...

  4. 从Android设备中提取内核和逆向分析

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57074695 一.手机设备环境 Model number: Nexus 5 OS ...

  5. POJ1698 最大流或者匈牙利

    题意:       一个人他有n个任务,每个任务都有一些限制:  (1)只能在一个星期中指定的日子去做,比如周1 2 6啥的  (2)总工作量有几天,就是一共要工作几天  (3)必须在几周之内完成,就 ...

  6. Portswigger web security academy:DOM Based XSS

    Portswigger web security academy:DOM Based XSS 目录 Portswigger web security academy:DOM Based XSS DOM ...

  7. HashMap实现原理一步一步分析(1-put方法源码整体过程)

    各位同学大家好, 今天给大家分享一下HashMap内部的实现原理, 这一块也是在面试过程当中基础部分被问得比较多的一部分. 想要搞清楚HashMap内部的实现原理,我们需要先对一些基本的概念有一些了解 ...

  8. 基于texlive定制chemfig化学式转换Python服务镜像

    chemfig 据别人介绍,在绘制平面分子式,乃至化学反应式.机理图时,大家使用的基本都是ChemDraw.当然ChemDraw是一款强大的软件,无论是平面的还是立体的分子结构式都能毫不费力地绘制出来 ...

  9. hdu - 1716 排列2 (使用set对全排列结果去重)

    题意很简单,只是有几个细节要注意,首先就是一次只是输入四个数字.输出结果要从小到大(进行全排列之前要进行排序).题目要求千位数相同的在一行,中间使用空格隔开(第二次在输出的时候判断上一次记录的千位数是 ...

  10. UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!

    UI设计师.平面设计师常用的网站大全,初学者必备,大家都在用! 国外的花瓣--Pinterest • The world's catalog of ideas 颜格视觉--app界面设计大全--电商. ...