赞
踩
极市导读
通过减少原始模型参数的数量或比特数,模型量化技术能降低深度学习对内存和计算的需求。本文主要介绍了这种量化技术的方法、流程和工具,并预测了数个有潜力的研究方向。
官方教程(英文): https://pytorch.org/docs/stable/quantization.htmlpytorch.org 官方教程(中文): https://pytorch.apachecn.org/docs/1.4/88.htmlpytorch.apachecn.org目前很多高精度的深度学习模型所需内存、计算量和能耗巨大,并不适合部署在一些低成本的嵌入式设备中。为了解决这个矛盾, 模型压缩技术应运而生,其主要是 通过减少原始模型参数的数量或比特数来实现对内存和计算需求的降低,从而进一步降低能耗。目前性能最稳定的就是 INT 8的 模型量化技术,相对于原始模型的FP32计算相比,INT8量化可将模型大小减少 4 倍,并将内存带宽要求减少 4 倍,对 INT8 计算的硬件支持通常快 2 到 4 倍。值得注意的是量化主要是一种加速前向推理的技术,并且绝大部分的量化算子仅支持前向传递。 注:目前PyTorch的量化工具仅支持1.3及以上版本。q_backend = "qnnpack" # qnnpack or fbgemmtorch.backends.quantized.engine = q_backendqconfig = torch.quantization.get_default_qconfig(q_backend)
打印输出可得:
QConfig(activation=functools.partial(, reduce_range=False), weight=functools.partial(, dtype=torch.qint8, qscheme=torch.per_tensor_symmetric))
可以看出qnnpack 的量化方式:activation量化的数据范围是通过记录每次运行数据的最大最小值的统计直方图导出的,weight为per-layer的对称量化,整型数据范围为[-128,127],直接用最后收敛的浮点数据的最大最小值作为范围进行量化,其他信息仅从这个打印信息暂时还得不到。
推荐阅读
Facebook开源Opacus库,利用差分隐私训练PyTorch模型,快速训练又保护隐私
PyTorch常用代码段合集
汇总 Pytorch 踩过的10个坑
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。