量化
以更低位精度 (如 INT8) 表示模型权重和激活值的优化技术,加速推理并减少内存占用。
量化将神经网络参数和计算从 32 位浮点 (FP32) 转换为 INT8 或 FP16 等更低位宽表示。这可将模型大小压缩最多 4 倍,推理速度提升 2-4 倍,对于边缘设备上的实时图像处理至关重要。
将 FP32 权重转换为 INT8 可将每个参数的内存从 4 字节减少到 1 字节。ResNet-50 (约 100MB) 经 INT8 量化后缩小到约 25MB,满足智能手机内存限制同时保持实用精度。
- 训练后量化 (PTQ):使用小型校准数据集 (几百张图像) 确定缩放因子和零点。无需重新训练但可能产生明显的精度损失
- 量化感知训练 (QAT):在训练期间模拟量化,使参数适应量化执行。精度高于 PTQ,但需要额外训练成本
- 混合精度:将敏感层 (首层和末层) 保持在 FP16,其他层量化为 INT8,提供精细的精度-速度控制
TensorFlow Lite 通过 tf.lite.Optimize.DEFAULT 提供自动量化,ONNX Runtime 原生支持 INT8。量化模型可在 WebAssembly 中运行用于浏览器端处理。精度损失通常保持在 1-2% 以内,对大多数生产用途可接受。