思考:pytorch的eager模式,是怎样支持开发模式支持串行执行断点调试,生产模式支持生成可并发执行代码的,可以拉源码调试分析。这里会涉及到图编程模式、编译原理,执行优化等技术。
什么是量化?
量化是指用于执行计算并以低于浮点精度的位宽存储张量的技术。 量化模型对张量使用整数而不是浮点值执行部分或全部运算。 这允许更紧凑的模型表示,并在许多硬件平台上使用高性能矢量化操作。与典型的 FP32 型号相比,PyTorch 支持 INT8 量化,从而可将模型大小减少 4 倍,并将内存带宽要求减少 4 倍。 与 FP32 计算相比,对 INT8 计算的硬件支持通常快 2 到 4 倍。 量化主要是一种加速推理的技术,并且量化算子仅支持前向传递。量化能够在模型精度几乎不损失的情况下大大降低模型的储存和时间开销。
动态量化能够减少开销的原因:模型执行时间主要由从内存中加载权重而不是计算矩阵乘法来决定
笔者以静态量化举例,在本教程结束时,您将看到 PyTorch 中的量化如何导致模型大小显着减小同时提高速度
量化张量
PyTorch 支持每个张量和每个通道非对称线性量化。 每个张量意味着张量内的所有值都以相同的方式缩放。 每通道意味着对于每个尺寸(通常是张量的通道尺寸),张量中的值都按比例缩放并偏移一个不同的值(实际上,比例和偏移成为矢量)。 这样可以在将张量转换为量化值时减少误差。
通过使用以下命令转换浮点张量来执行映射