极智AI | 谈谈昇腾CANN量化

news2024/7/6 18:20:20

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

大家好,我是极智视界,本文介绍一下 谈谈昇腾CANN量化

昇腾CANN的量化体现在AMCT工具,也即模型压缩工具,后面再来说AMCT,这篇先聊一下昇腾CANN的量化执行流程和原理。量化是指对原始框架的模型权重weights 和 数据activation 进行低比特化int8的处理,以此可以达到的优化效果如下:

量化分为训练后量化(Post-Training Quantization) 和 量化感知训练(Quantization-Aware Training),这里主要讲的是训练后量化。量化一般不依赖于硬件,所以不管是昇腾的量化还是英伟达的量化甚至是嵌入式设备的量化,都是不用跑在运行环境上的,一般用普通CPU来跑量化的过程就可以了,跑完量化过程后生成一个量化后的模型,然后再送入下一个推理流程。咱们一般指的量化就是权重和数据从float32->int8的过程,但是并不是所有的算子都会进行量化处理,如一些非线性算子(如激活算子)一般就不量化,所以网络中可能会插入一些所谓的dequant的算子,这些算子一定会和quant算子成对出现,量化的运行原理可以用下图来展示:

量化常用的算法有二值化、线性量化和对数量化,线性量化又可以根据是否有offset细分为对称量化和非对称量化两种,而CANN里的量化算法采用了线性量化方式,并将对称和非对称量化方式进行了归一。

CANN的量化可以用如下表达式进行表示:

                                  data_{int8}=clip_{int8}(round(data_{fp32}/scale)+offset)

其中scale是缩放因子,offset是偏移量。前面已经说到CANN的量化算法是对称量化和非对称量化的归一,这是什么意思呢?咱们先来看看对称量化和非对称量化是怎么回事。

首先来看对称量化,过程可以用下图来表示:

对称量化公式可以表示为:

                                                data_{int8}=round(data_{fp32}/scale)

 其中的scale的计算方式如下,int8数据对应的表示范围为[-128*scale, 127*scale]

                                                        scale = data_{max}/127

 再来看非对称量化,过程可以用下图来表示:

非对称量化公式可以表示为:

                                         data_{uint8} = round(data_{fp32}/scale-offset)

 其中scale为fp32浮点数,datauint8为uint8的定点数,offset是int8的定点数,scaleoffset的计算方式如下:

                                                 scale = (data_{max} - data_{min})/255

 接着咱们来看CANN的归一化方法,即通过将非对称量化公式通过简单的数据变换,使量化后的数据与对称量化算法在数据格式上保持一致,即均为int格式。具体的变换过程如下:

data_{fp32} = scale \times (data_{uint8} + offset) = scale \times (data_{int8} + offset + 128) = scale \times (data_{int8} - offset')

 其中:

                                                    data_{int8} = data_{uint8} - 128

                                                    offset' = -(offset + 128)

 通过上述变换后,可以将量化数据也转换统一为int8格式,从而达到量化数据格式的归一,在确定scale和变换后的offset'后,可以得到CANN量化的计算方式,如下:

                                     data_{int8} = clip(round(data_{fp32}/scale) + offset')

 下篇咱们来说说CANN的量化怎么用。

好了,以上分享了谈谈昇腾CANN量化,希望我的分享能对你的学习有一点帮助。

【极智视界】

《极智AI | 谈谈昇腾CANN量化》


搜索关注我的微信公众号「极智视界」,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !

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

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

相关文章

SpringBoot学习小结之滑块验证码生成库tianai-captcha

文章目录前言一、后端springboot1.1 yml 配置1.2 跨域配置1.3 资源配置1.4 Controller二、前端jquery2.1 通用代码2.2 滑动验证码2.3 旋转验证码2.4 滑动还原验证码2.5 文字点选验证码三、源码探秘和总结3.1 前端代码3.2 后端代码3.3 总结参考前言 最近发现一个有趣的 Java 验…

Java根据ip地址获取归属地

最近,各大平台都新增了评论区显示发言者ip归属地的功能,例如哔哩哔哩,微博,知乎等等。 下面,我就来讲讲,Java 中是如何获取 IP 属地的,主要分为以下几步 通过 HttpServletRequest 对象&#xf…

JVM监控及诊断工具-GUI

1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1)无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间 等(这对定位应用性能瓶颈至关重要)。 2…

【MybatisPlus】最全面的MybatisPlus通关教程

前言 本文为最全面的MybatisPlus通关教程相关介绍,下边将对MyBatisPlus概述,MyBatisPlus快速入门,CRUD扩展(包括:插入操作、主键生成策略、更新操作,自动填充,乐观锁,查询操作&#…

我学python的那段日子(四)选择结构和循环结构

1.选择结构 总所周知,Java里面也有选择结构,分别是if单分支选择结构、if-else结构多重if结构和switch结构,同样的,Python里也有选择结构,分别是是if单分支选择结构、if-else结构多重if结构。 1.1 if选择结果 ​ if选…

Servlet生命周期和线程安全

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

CANoe-是如何对ECU和网络进行测试的

CANoe工具是汽车仿真测试开发中使用最广泛的工具 Test Module/Test Unit 除了仿真模块和分析模块,CANoe还引入了另一个组件进行测试:Test Module(测试模块)和Test Unit(测试单元) test module调用的是capl脚本、.net脚本或xml文件,而test unit用的是vTESTstudio插件 实…

12.18

一.加强练习promise 1.fs模块 const fs require(fs) const p new Promise((resolve,reject) > {fs.readFile(./resource/context.txt, (err,data) > {if (err) reject(err)resolve(data)}) }) p.then((value) > {console.log(value.toString()) }, (reason) > …

前端炫酷特效合集

我们经常在抖音上看到一些前端很酷的特效,诸如:快叫你学编程的朋友给你写一个圣诞树,看着是不是很酷炫呢?其实只要有源码,你也可以拥有哦! 跟大家分享多款前端特效源码,需要的朋友可以去在这里…

Java : 多态,包装类的面试题:

Java : 多态,包装类的面试题: 每博一文案 有人说:小孩子才会仰天大哭,成年人的世界早就调成了静音模式,连崩溃也很懂事。 一路走来,我们一边受伤,也一边变得更坚强,慢慢…

数据库原理及MySQL应用 | 日志管理

数据库系统管理维护阶段需要通过日志对数据库的性能进行监督、分析和改进。 日志是数据库系统的重要组成部分,记录了数据库的运行状态、数据的变更历史、错误信息及用户操作等信息。在日常管理中,数据库管理员可通过日志监控数据库的运行状态、优化数据库…

国内外文献镜像网站

一、常用的国内外文献镜像网站 维普网:http://lib.cqvip.com/ idata:https://www.cn-ki.net/ 独秀:https://www.duxiu.com/ 中国知网:https://www.cnki.net/ 龙源期刊网:http://www.qikan.com.cn/ 万方数据&#xff1…

计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

毕业设计 单片机GPS定位位置记录系统 - 物联网 嵌入式 stm32

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计概述硬件模块的连接**AB32VG1主控MCU**5 软件说明6 部分核心代码7 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩…

基于asp.net人力资源管理系统-计算机毕业设计

基于asp.net的人力资源管理的内容和人事管理日常管理所遇到的问题,整个系统可以分为下面几个子模块,分别为员工档案信息管理、工资信息管理、考勤信息管理、消息信息管理、账号信息管理等几个大的功能模块,开发环境:Visual studio,sqlserver数据库.资料有…

非零基础自学Golang 第9章 结构体 9.4 初始化结构体

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.4 初始化结构体9.4.1 键值对格式初始化9.4.2 列表格式初始化第9章 结构体 9.4 初始化结构体 上一小节我们讲解了在结构体实例化后,再使用“.”的方式对成员变量进行赋值。另外,我们还可以…

Junit5 架构、新特性及基本使用(常用注解与套件执行)

什么是 Junit5,在 Junit5 的官方介绍文档中这写到: Junit5 由JUnit Platform JUnit Jupiter JUnit Vintage3部分构成,借用 IBM Developer 的一张图来说明 JUnit 5 的架构: JUnit Platform: JUnit Jupiter: JUnit Vintage: 嵌套单…

Spring Cloud 总结 - 调用远程服务的三种方式及原理分析

一个简单的微服务架构图 本文设计的 Spring Cloud 版本以及用到的 Spring Cloud 组件 Spring Cloud Hoxton.SR5eurekafeignribbon 后面的内容都将围绕上面的图来分析. 调用远程服务的三种方式 在 Spring Cloud 服务架构中, 一个服务可能部署多个实例, 通常情况下, 这个时候…

好玩的网站安利

好玩的网站安利 1、EGOUZ https://www.egouz.com/ 授人以鱼不如授人以渔,先给大家分享两个可以找国外优质网站的地方。EGOUZ是一个高质量的导航站,内容主要是外国网站,并且做了很详细的分类,网站资源非常丰富。 EGOUZ按照国家分…

50450-80-1,Ala-Ala-Ala-对硝基苯胺

AAA-pNA, chromogenic substrate for porcine pancreatic elastase and for astacin, a crayfish zinc-endopeptidase.3a - pna,猪胰腺弹性酶和阿斯塔星的显色底物,阿斯塔星是一种小龙虾锌内肽酶。 编号: 163840中文名称: 三肽Pancreatic elastase subst…