修剪不重要的权重

由 TensorFlow 模型优化维护

本文简要介绍了模型剪枝,可帮助您确定剪枝是否适合您的用例。

概览

在训练过程中,基于大小的权重剪枝会逐渐将模型权重减小为零,实现模型稀疏性。稀疏模型更易于压缩,我们可以在推断过程中跳过零以缩短延迟时间。

此技术通过模型压缩改进了模型。今后,对此技术的框架支持可以缩短延迟时间。我们发现模型压缩的性能提升了 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
  • TensorFlow 执行模式:图执行 (graph) 和即刻执行 (eager)
  • 分布式训练:只能对图执行使用 tf.distribute

我们预计会增加以下方面的支持:

结果

图像分类

模型 非稀疏最高准确率 稀疏准确率 稀疏性
InceptionV3 78.1% 78.0% 50%
76.1%75%
74.6%87.5%
MobilenetV1 22471.04%70.84%50%

这些模型在 Imagenet 上进行了测试。

翻译

模型 非稀疏 BLEU 稀疏 BLEU 稀疏性
GNMT EN-DE 26.77 26.86 80%
26.5285%
26.1990%
GNMT DE-EN 29.47 29.50 80%
29.2485%
28.8190%

这些模型使用 WMT16 德语和英语数据集,将 news-test2013 作为开发集,将 news-test2015 作为测试集。

示例

除了利用 Keras 进行剪枝教程外,还请参阅以下示例:

  • 通过剪枝在 MNIST 手写数字分类任务中训练 CNN 模型:代码
  • 通过剪枝在 IMDB 情感分类任务中训练 LSTM:代码

有关背景信息,请参阅“To prune, or not to prune: exploring the efficacy of pruning for model compression”(是否剪枝:探索剪枝在模型压缩方面的效果)这篇论文