专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

PTQ(PostTrainingQuantization)源

  PTQ(PostTrainingQuantization)源码阅读一
  最近在做模型量化相关工作,就研究下PTQ的原理和代码实现。PTQ原理部分已经有很多文章讲的都很好,有时间的话后面自己总结一篇原理篇。本文主要从PTQ代码实现来阐述。
  讲解代码前我们先看下PTQ的使用:loadmodelmodelloadmodel(modelpath)model。eval()registerquanthandlehookinforwardposthooksptqPTQ()modelptq。quantize(model)calibrationforkey,inputinreader:model(input)computequantparamsptq。ptq。convert(model)savequantmodeljit。save(model,quantmodelpath)
  我们先看下如何收集activation量化信息。ImperativePTQclassImperativePTQ(object):Staticposttrainingquantization。definit(self,quantconfigptqconfig。defaultptqconfig):Constructor。Args:quantconfig(PTQConfig):theconfigofposttrainingquantization。Theconfighasweightquantizerandactivationquantizer。Indefault,theweightquantizerisPerChannelAbsmaxQuantizerandtheactivationquantizerisKLQuantizer。super()。init()assertisinstance(quantconfig,ptqconfig。PTQConfig)self。quantconfigquantconfig
  ImperativePTQ是PTQ的实现类。输出参数为quantconfig,主要指明weightactivation的量化方法。默认的activationquantizer使用KLQuantizer,weightquntizer使用PerChannelAbsmaxQuantizer。classPTQConfig(object):ThePTQconfigshowshowtoquantizetheinputsandoutputs。definit(self,activationquantizer,weightquantizer):Constructor。Args:activationquantizer(BaseQuantizer):Theactivationquantizer。ItshouldbetheinstanceofBaseQuantizer。weightquantizer(BaseQuantizer):Theweightquantizer。ItshouldbetheinstanceofBaseQuantizer。super()。init()assertisinstance(activationquantizer,tuple(SUPPORTACTQUANTIZERS))assertisinstance(weightquantizer,tuple(SUPPORTWTQUANTIZERS))self。inactquantizercopy。deepcopy(activationquantizer)self。outactquantizercopy。deepcopy(activationquantizer)self。wtquantizercopy。deepcopy(weightquantizer)self。quanthookhandleNoneInordertowrapsimulatedlayers,useinactquantizertocalculatetheinputthresholdsforconv2d,linearandetc。self。enableinactquantizerFalsedefaultptqconfigPTQConfig(KLQuantizer(),PerChannelAbsmaxQuantizer())
  其中quanthookhandle是Layer的fowardposthook的handle。
  enableinactquantizer是否使用inactquantizer计算输入激活的量化参数。activation默认使用KLQuantizer量化器。weight默认使用PerChannelAbsmaxQuantizer量化器。isskiplayer和isquantlayer
  模型一般是一层一层堆叠起来的,框架提供的nn。Conv2d,nn。Linear层一般作为基础层来搭建模型网络。量化时我们需要知道哪些层需要量化,哪些层不需要量化。可以通过isskiplayer和isquantlayer两个静态类方法获得。staticmethoddefisskiplayer(layer):returnhasattr(layer,skipquant)andlayer。skipquantTruestaticmethoddefisquantlayer(layer):returnhasattr(layer,quantconfig)isleaflayerdefisleaflayer(layer):Whetherthelayerisleaflayer。returnisinstance(layer,paddle。nn。Layer)andlen(layer。sublayers())0
  layer的sublayers空时为叶子节点。quantizedefquantize(self,model,inplaceFalse,fuseFalse,fuselistNone):Addquantconfigandhooktothetargetlayer。Args:model(paddle。nn。Layer):Themodeltobequantized。inplace(bool):Whetherapplyquantizationtotheinputmodel。Default:False。fuse(bool):Whethertofuselayers。Default:False。fuselist(list):Thelayersnamestobefused。Forexample,fuselist〔〔conv1,bn1〕,〔conv2,bn2〕〕。ATypeErrorwouldberaisediffusewassetasTruebutfuselistwasNone。Default:None。Returnquantizedmodel(paddle。nn。Layer):Thequantizedmodel。assertisinstance(model,paddle。nn。Layer),Themodelmustbetheinstanceofpaddle。nn。Layer。ifnotinplace:modelcopy。deepcopy(model)iffuse:model。eval()modelfuseutils。fuselayers(model,fuselist)
  我们看下模型量化的入口,model是模型实例,inplace指明是否在原图上操作,fuse和fuselist用户指定是否对模型做fuse操作。该接口最终返经过处理(用于收集模型各层activation的信息)后的模型。forname,layerinmodel。namedsublayers():if(PTQRegistry。issupportedlayer(layer)andutils。isleaflayer(layer)andnotself。isskiplayer(layer)):Addquantconfigquantconfigcopy。deepcopy(self。quantconfig)ifPTQRegistry。issimulatedquantlayer(layer):quantactivationquantconfig。enableinactquantizerTruelayer。quantconfigquantconfigregisterhookhookptqhooks。quantforwardposthookquanthookhandlelayer。registerforwardposthook(hook)quantconfig。quanthookhandlequanthookhandlelayer。forwardposthooks。movetoend(quanthookhandle。hookid,lastFalse)returnmodel
  首先遍历各层,判断该层:是否支持量化。是否是叶子层。是否跳过该层。
  PTQRegistry是一个字典,后续再看下其实现。
  如果满足上述条件,则对该层添加量化处理:层中保存量化配置参数quantconfig。如果是模拟量化层(针对inputweight量化)的话,开启enableinactquantizer。再层中注册registerforwardposthook,其实现为ptqhooks。quantforwardposthook。
  我们看下quantforwardposthook的实现:defquantforwardposthook(layer,inputs,outputs):TheforwardposthookforPTQ。asserthasattr(layer,quantconfig),Thelayershouldhavequantconfigattrqclayer。quantconfigifqc。enableinactquantizer:qc。inactquantizer。sampledata(layer,inputs)qc。outactquantizer。sampledata(layer,(outputs,))
  在forward完成后,通过qc。outactquantizer收集outputs的activation数据。
  根据qc。enableinactquantizer的配置确定是否收集inputs的activation数据。
  我们知道,只有PTQRegistry。issimulatedquantlayer(layer)真(目前只有nn。Conv2Dnn。Linaer时为真)的时候qc。enableinactquantizer为真。
  KLQuantizer、PerChannelAbsmaxQuantizer的实现我们后面再讨论。
  至此,处理完各层后返回model对象。后续使用校准数据过model,收集activation分布。

不负春光!2月PMI终于重返景气区间盼望着盼望着,春天的脚步近了,制造业欣欣然睁开了眼。今天发布的2月份制造业采购经理指数PMI春意暖暖,52。6的数字环比上升了2。5个百分点,已经高于50的临界点,制造业重返景气区真美!杨浦这座古典式园林,梅花开得正艳在杨浦,有一座小巧玲珑的古典式园林,那就是内江公园。公园小巧却精致,古典中透露着优雅。走进园林,很难想象在高楼林立间,还有这样一处世外桃源。长廊亭台婉转古朴,小桥流水清雅作响,一颗芯擎科技宣布完成近5亿元A轮融资将用于量产供货和研发出品搜狐汽车2月28日,高性能车规级处理器整体解决方案提供商湖北芯擎科技有限公司(以下简称芯擎科技)正式宣布,已于2022年四季度顺利完成总额近5亿元的A轮融资,这也是公司在202小新的vlog解锁香港有礼大礼包视频加载中随着香港与内地恢复全面通关,时隔三年,不少内地旅客来到香港旅行。为欢迎到港旅客,日前你好,香港!大型全球宣传活动在港正式启动。香港旅游发展局联同全港逾16000间商铺,共吃一堑长一智!2022年两大离谱事件之后,今年香港队表现及时反应文区汉宗港协暨奥委会早前向辖下所有体育总会发出香港运动员及队伍参与国际体育赛事期间处理播放国歌和升挂区旗的指引,运动员及队伍参与国际体育赛事期间,如发现播放国歌或升挂区旗出错,须以海港7将奔赴海口向国足报到武磊白衣飘飘,张琳芃一袭黑衣北京时间3月1日,是国足在海口集结的日期,也是球队近一年多以来的首次集结。新帅扬科维奇征召了7名上海海港球员,7名国脚也是集体从上海出发前往海口。其中武磊白衣飘飘亮相机场,张琳芃则粤语教学丨三年没来香港,我连站名都不认识了随着通关政策的放开,越来越多人到香港旅游探亲或公干,繁荣的大湾区贸易以及内地与香港的交流也逐渐增多。香港这座国际大都市以它强大的包容性再次焕发出耀眼的光辉。屯马线开通日,图源网易阔南北极环球航线售罄,单日销售额超100万元,邮轮复苏有点儿猛记者李如嘉编辑近日,随着出境游放开,海外航线邮轮产品重回大众视线,多家旅行社和邮轮公司传来航线开售即售罄的捷报。其中,南北极航线超长环球航线东南亚航线都是游客预定的大热门产品。在疫3月1日猪价涨势暂缓!国内地区11涨8平7跌!一起来看新的一月来到,猪价走势涨跌接替,华北地区走跌,西南地区上涨,一起来看具体情况。华东地区2省市上涨1跌3地持平,上海地区和浙江地区价格为8。28。4元斤,福建地区价格涨为8。28。5你们知道全球最励志的知识付费平台是哪吗没错,就是我大A大a就是全球最大最励志的知识付费平台今年才过2个月已经学了光谱仪质谱仪钙钛矿电池固态电池chatGPTcpo4d毫米波时空大数据,低轨卫星精确制导相控阵雷达等先进科扬科维奇上任发布会全力冲击2026世界杯,已掌握所有球员信息直播吧3月1日讯国足新任主帅扬科维奇出席上任发布会,他表示将率队全力冲击2026世界杯,已经掌握了中国所有球员的基本信息。全力冲击2026年世界杯首先关于具体目标,作为主教练我有各
基金上攻最快从下午就会开始今天早盘平开,然后就是回落,盘中最低点3158点,临近中午收盘,震荡上扬,跌幅缩小,上证指数收于3167点。整个盘面上涨2554家,下跌2183家,涨停25家,跌停3家,上涨家数略柠檬,又一个硬通货席梦思,申请破产社交平台上出现了一批异地网购药品攻略的文章,引发网友争议。攻略称只需通过将跑腿软件的定位修改到广西西藏新疆等地,通过快递方式就能抢购到中小城市药店的布洛芬美林泰诺林等退烧药品。目前贷款管理不到位广发银行宜昌分行被罚20万元来源凤凰网12月13日,中国银保监会官网更新的处罚公告显示,广发银行宜昌分行因贷款管理不到位,被罚20万元。责任人袁园被警告。行政处罚依据如下中华人民共和国银行业监督管理法第四十六马斯克预言倒闭的造车新势力,正式杀入中国!蔚小理慌吗?作者Hernanderz监制罗超据媒体报道,美国造车新势力Lucid正式在中国招募员工,包括数字信息化硬件工程法律供应链等14个岗位,大有进军中国市场的架势。值得注意的是,Luci清风头条丨苏仙区铁纪护航退草还耕助力乡村产业振兴苏仙区纪委监委干部在田间地头向群众了解退草还耕工作情况。红网时刻新闻通讯员杨菊先阮华通记者王义正苏仙区报道虽已是初冬,天气有些寒冷,但正在田间忙碌的飞天山镇种粮大户王辉心里却暖烘烘专家算力是数字经济发展的核心生产力环球网科技综合报道12月1215日,第十八届CCF全国高性能计算学术年会(以下简称CCFHPCChina2022)以线上的方式举行,围绕新算力新赋能新未来这一主题,畅谈数字经济背景广东省CIO联盟会长李洋数智化转型是围绕三大生产要素的变革和重生WISE2022中国数字化创新高峰论坛战略定力战术素养组织能力,将成为转型成败的关键要素。演讲嘉宾李洋文闵令智潘程2022年11月29日,36氪WISE2022中国数字化创新高峰论坛正式举行。本届论坛通过四大环节串联中支付宝加入数字人民币受理网络,向淘宝用户开放数字人民币支付功能支付宝成为首家支持数字人民币钱包快付功能的支付平台,向淘宝用户开放数字人民币支付功能。数字人民币(试点版)App钱包快付管理新增支付平台。图片来自数字人民币App12月15日,澎湃中国信通院发布国内增值电信业务许可情况报告(2022。11)一全国增值电信业务许可情况截至2022年11月底,全国增值电信业务经营许可企业共141494家(其中5919家企业同时持有工业和信息化部及省通信管理局颁发的增值电信业务经营许可),万亿数字化市场,数据科学为何能扛起价值担当?数据科学家,被誉是21世纪最性感的职业。如今,一股数据科学的热潮正席卷国内各大高校。今年十月底,一系列数据科学的网络直播课在多所大学火爆异常,吸引来自北大清华北师大哈工大浙大等多所唯美写真集忘不了你的温柔(内含多图)朋友,你累了吗?累了就停下脚步,看看这风景,看看这世界,看看这属于你的美好。不管你是做老板的,还是打工的,不管你是在高楼大厦里当白领,还是在制衣厂当流水工。你都有资格享受,生活带来
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网