Path: blob/master/site/zh-cn/model_optimization/guide/quantization/training.md
25118 views
量化感知训练
由 TensorFlow Model Optimization 维护
有两种形式的量化:训练后量化和量化感知训练。请从训练后量化开始,因为它更易于使用,尽管量化感知训练在模型准确率方面的表现通常更好。
本页面概述了量化感知训练,旨在帮助您确定它与您的用例的契合程度。
要查看端到端示例,请参阅量化感知训练示例。
要快速找到您的用例所需的 API,请参阅量化感知训练综合指南。
概述
量化感知训练可以模拟推断时间量化,同时创建一个模型,下游工具将使用该模型生成实际量化模型。量化模型使用较低的精度(例如 8 位而不是 32 位浮点数),这样可在部署期间带来诸多好处。
使用量化部署
量化通过压缩模型和减少延迟带来了诸多改进。使用 API 默认值时,模型大小可缩减至原来的四分之一,我们通常会在测试的后端中看到 CPU 延迟缩短为原来的三分之二到四分之一。最终,可以在兼容的机器学习加速器(例如 EdgeTPU 和 NNAPI)上看到延迟方面的改善。
这种技术用于语音、视觉、文本和翻译用例的生产中。代码目前支持其中一部分模型。
试验量化和相关硬件
用户可以配置量化参数(例如位数),并在一定程度上配置底层算法。请注意,对 API 默认值进行这些更改后,目前没有支持的路径可以部署到后端。例如,TFLite 转换和内核实现仅支持 8 位量化。
特定于此配置的 API 是实验性的,不具备向后兼容性。
API 兼容性
用户可以使用以下 API 应用量化:
模型构建:仅包含序贯模型和函数式模型的
tf.keras
。TensorFlow 版本:TF 2.x Nightly 版本。
不支持包含 TF 2.X 软件包的
tf.compat.v1
。
TensorFlow 执行模式:Eager Execution
根据我们的路线图,将在以下方面增加支持:
模型构建:阐明子类化模型是如何被限制为不支持的
分布式训练:
tf.distribute
一般支持矩阵
在以下方面提供支持:
模型覆盖:使用allowlisted layers的模型,遵循 Conv2D 和 DepthwiseConv2D 层时的 BatchNormalization,以及少数情况下的
Concat
。硬件加速:我们的 API 默认值兼容 EdgeTPU、NNAPI 和 TFLite 后端等设备上的加速。请参阅路线图中的注意事项。
使用量化部署:目前仅支持卷积层的按轴量化,不支持按张量量化。
根据我们的路线图,将在以下方面增加支持:
模型覆盖:扩展到包括 RNN/LSTM 和一般的 Concat 支持。
硬件加速:确保 TFLite 转换器可以产生全整数模型。有关详细信息,请参阅此问题。
试验量化用例:
试验跨越 Keras 层或需要训练步骤的量化算法。
使 API 稳定。
结果
使用工具进行图像分类
Model | Non-quantized Top-1 Accuracy | 8-bit Quantized Accuracy |
---|---|---|
MobilenetV1 224 | 71.03% | 71.06% |
Resnet v1 50 | 76.3% | 76.1% |
MobilenetV2 224 | 70.77% | 70.01% |
模型基于 Imagenet 进行测试,并在 TensorFlow 和 TFLite 中进行评估。
技术的图像分类
Model | Non-quantized Top-1 Accuracy | 8-Bit Quantized Accuracy |
---|---|---|
Nasnet-Mobile | 74% | 73% |
Resnet-v2 50 | 75.6% | 75% |
模型基于 Imagenet 进行测试,并在 TensorFlow 和 TFLite 中进行评估。
示例
除了量化感知训练示例外,另请参阅以下示例:
基于使用量化的 MNIST 手写数字分类任务的 CNN 模型:code
有关类似内容的背景信息,请参阅论文 Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference。这篇论文介绍了此工具使用的一些概念。实现并不完全相同,而且此工具中还使用了其他概念(例如按轴量化)。