由 TensorFlow 模型优化维护
本文简要介绍了模型剪枝,可帮助您确定剪枝是否适合您的用例。
- 若要直接查看端到端示例,请参阅利用 Keras 进行剪枝示例。
- 若要快速找到您的用例所需的 API,请参阅剪枝综合指南。
- 若要探索剪枝在设备端推断方面的应用,请参阅使用 XNNPACK 针对设备端推断进行剪枝。
概览
在训练过程中,基于大小的权重剪枝会逐渐将模型权重减小为零,实现模型稀疏性。稀疏模型更易于压缩,我们可以在推断过程中跳过零以缩短延迟时间。
此技术通过模型压缩改进了模型。今后,对此技术的框架支持可以缩短延迟时间。我们发现模型压缩的性能提升了 6 倍,并且对准确率造成的影响极低。
此技术正在各种语音应用(例如语音识别和文字转语音)中接受评估,并已针对各种视觉和翻译模型进行了实验。
API 兼容性矩阵
用户可以使用以下 API 来应用剪枝:
- 模型构建:只能对序列模型和函数式模型使用
tf.keras
- TensorFlow 版本:TF 1.x(包括版本 1.14 及更高版本)和 TF 2.x。
- 不支持对 TF 2.X 软件包使用
tf.compat.v1
及对 TF 1.X 软件包使用tf.compat.v2
。
- 不支持对 TF 2.X 软件包使用
- TensorFlow 执行模式:图执行 (graph) 和即刻执行 (eager)
- 分布式训练:只能对图执行使用
tf.distribute
我们预计会增加以下方面的支持:
结果
图像分类
模型 | 非稀疏最高准确率 | 稀疏准确率 | 稀疏性 |
---|---|---|---|
InceptionV3 | 78.1% | 78.0% | 50% |
76.1% | 75% | ||
74.6% | 87.5% | ||
MobilenetV1 224 | 71.04% | 70.84% | 50% |
这些模型在 Imagenet 上进行了测试。
翻译
模型 | 非稀疏 BLEU | 稀疏 BLEU | 稀疏性 |
---|---|---|---|
GNMT EN-DE | 26.77 | 26.86 | 80% |
26.52 | 85% | ||
26.19 | 90% | ||
GNMT DE-EN | 29.47 | 29.50 | 80% |
29.24 | 85% | ||
28.81 | 90% |
这些模型使用 WMT16 德语和英语数据集,将 news-test2013 作为开发集,将 news-test2015 作为测试集。
示例
除了利用 Keras 进行剪枝教程外,还请参阅以下示例:
有关背景信息,请参阅“To prune, or not to prune: exploring the efficacy of pruning for model compression”(是否剪枝:探索剪枝在模型压缩方面的效果)这篇论文。