pytorch优化之量化

思考:pytorch的eager模式,是怎样支持开发模式支持串行执行断点调试,生产模式支持生成可并发执行代码的,可以拉源码调试分析。这里会涉及到图编程模式、编译原理,执行优化等技术。

什么是量化?

量化是指用于执行计算并以低于浮点精度的位宽存储张量的技术。 量化模型对张量使用整数而不是浮点值执行部分或全部运算。 这允许更紧凑的模型表示,并在许多硬件平台上使用高性能矢量化操作。与典型的 FP32 型号相比,PyTorch 支持 INT8 量化,从而可将模型大小减少 4 倍,并将内存带宽要求减少 4 倍。 与 FP32 计算相比,对 INT8 计算的硬件支持通常快 2 到 4 倍。 量化主要是一种加速推理的技术,并且量化算子仅支持前向传递。量化能够在模型精度几乎不损失的情况下大大降低模型的储存和时间开销。

动态量化能够减少开销的原因:模型执行时间主要由从内存中加载权重而不是计算矩阵乘法来决定

笔者以静态量化举例,在本教程结束时,您将看到 PyTorch 中的量化如何导致模型大小显着减小同时提高速度

 

量化张量

PyTorch 支持每个张量和每个通道非对称线性量化。 每个张量意味着张量内的所有值都以相同的方式缩放。 每通道意味着对于每个尺寸(通常是张量的通道尺寸),张量中的值都按比例缩放并偏移一个不同的值(实际上,比例和偏移成为矢量)。 这样可以在将张量转换为量化值时减少误差。

通过使用以下命令转换浮点张量来执行映射

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyTorch LSTM 量化是一种将长短期记忆神经网络模型进行压缩和优化的方法。量化是为了减少模型参数的位数,提高模型的计算效率和减少内存占用。以下是一些关键步骤和操作: 1. 模型准备:首先,将PyTorch LSTM模型训练完毕后,需要导出模型权重和偏置参数。接下来,使用模型的转换工具对权重和偏置参数进行量化操作。 2. 量化算法选择:目前,常用的量化算法有权重共享和权重量化两种方式。权重共享是将权重参数共享到若干个量化数值中,可以显著减少模型的计算量。权重量化是将权重参数用较少的位数表示,例如使用二进制数等,以减少内存占用和计算时间。 3. 模型压缩:根据选择的量化算法,对权重和偏置参数进行相应的压缩操作。例如,使用二进制数表示权重参数,并将参数按照一定的规则映射到较少的比特位数。 4. 精度损失衡量:对于量化后的模型,需要评估模型的精度损失情况。可以使用测试数据集进行模型评估,检查量化后的模型是否仍然具备较高的预测准确性。 5. 后续优化:如果量化后的模型精度损失较大,可以考虑进一步优化。例如,可以使用一些优化算法进行重新训练,如微调、剪枝和蒸馏等。 总结来说,PyTorch LSTM 量化是对模型参数进行压缩和优化的方法,通过选择合适的量化算法和进行相应的压缩操作,可以减小模型的计算量和内存占用,提高模型的效率。然而,需要注意保持模型的预测准确性,如果量化后的模型精度损失较大,可以进一步考虑优化的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖无为

感谢你们的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值