使用Learn2Compress定制移动端机器学习模型

原文地址:https://ai.googleblog.com/2018/05/custom-on-device-ml-models.html

使用Learn2Compress定制移动端机器学习模型(Custom On-Device ML Models with Learn2Compress)

2018年5月9日 星期三
Google Expander团队高级职员兼研究科学家 Sujith Ravi

  成功的深度学习模型通常需要大量的计算资源、内存和电力来训练和运行,如果你想让它们在移动设备和物联网设备上表现良好,这将是一个障碍。移动端机器学习允许您直接在设备上运行推理,它的好处是可以保护数据隐私,并且可以随处访问,不管网络是否连接。移动端ML系统,如MobileNets和ProjectionNets,通过优化模型效率来解决移动设备上的资源瓶颈。但是,如果你想为你的个人移动应用程序提供自己定制的、设备上的模型,那该怎么办呢?

  昨天,在GoogleI/O会议上,我们发布了ML工具包,让所有移动开发人员都可以使用机器学习。我们研究小组研发的“Learn2Compress”技术提供了一个自动模型压缩服务,这是ML工具包的一个核心功能,并且将很快上线。Learn2Compress可以在TensorFlow Lite中实现自定义的移动端深度学习模型,在移动设备上可以高效运行,而不必担心内存和速度的优化。我们很高兴很快就可以在ML工具包中使用针对图像分类的Learn2Compress。Learn2Compress最初将提供给少数开发人员,并将在未来几个月内提供更广泛的服务。如果您有兴趣使用此功能来构建您自己的模型,您可以在这里注册。

Learn2Compress的工作原理

  Learn2Compress融合了之前的研究工作中引入的学习框架,如ProjectionNet,并结合了几种最先进的技术来压缩神经网络模型. 它以用户提供的很大的预训练了的TensorFlow模型为输入,进行训练和优化,并自动生成体积较小、内存效率更高、推理速度更快但精度损失最低的可供使用的移动端模型。

用于自动生成移动端ML模型的Learn2Compress

  为此,Learn2Compress使用多个神经网络优化和压缩技术,包括:
  通过删除权重或对预测没什么用的操作(例如低评分权重)实现的剪枝(pruning)来减少模型大小。这些操作非常有效,特别是对涉及稀疏的输入或输出的移动端模型,可以减少2倍的大小,同时保持97%的原始预测质量。
  量化(quantization)技术在训练中的应用特别有效,可以通过减少用于模型权重和激活的位数来提高推理速度。例如,使用8位定点表示代替浮点数可以加快模型推理速度,降低功耗,并进一步减小4倍的大小。
  遵循老师-学生学习策略的联合训练(joint training)和蒸馏(distillation)– 我们使用一个更大的教师网络(在本例中,用户提供的TensorFlow模型)来训练一个紧凑的学生网络(设备上的模型),其准确性损失最小。

联合训练和蒸馏压缩学生模型

  老师网络可以固定(如蒸馏法中的一样)或联合优化,甚至可以同时训练不同规模的多个学生模型。因此,与单一模型不同,Learn2Compress只需一次操作就可以生成多个不同大小和推理速度移动端模型,并让开发人员选择一个最适合他们的应用程序需求的模型。
这些以及其他的技术,如传输学习,也使压缩过程更有效,并且可以扩展到大规模数据集。

Learn2Compress的实际效果如何?

  为了证明Learn2Compress的有效性,我们使用它构建了几个用于图像和自然语言任务的最先进的深层网络的移动端压缩模型,如MobileNets、Nasnet、Inception、ProjectionNet等等。对于给定的任务和数据集,我们可以生成多个推理速度和模型大小不同的移动端模型。

各种尺寸的Learn2Compress模型和全尺寸Baseline网络在CIFAR-10(左)和ImageNet(右)图像分类任务中的精度。用于生成CIFAR-10和ImageNet任务使用的压缩变体的学生网络分别使用Nasnet和MobileNet启发的架构进行建模。

  对于图像分类,Learn2Compress可以生成适合于移动应用的小而快速的模型,具有良好的预测精度。例如,在ImageNet任务上,Learn2Compress实现了一个比Inception v3 Baseline小22倍,比MobileNe tv1 Baseline小4倍的模型,精确度下降了4.6-7%。在CIFAR-10上,联合训练具有共享参数的多个Learn2Compress模型只需10%的时间,仅比训练一个Learn2Compress大型模型多花费10%的时间,但是产生了3种压缩模型,它们的体积小了94倍,速度快了27倍,成本降低了36倍,预测质量好(90%-95%TOP-1精度)。


CIFAR-10图像分类任务的Baseline和Learn2Compress模型的计算成本和平均预测延迟(在Pixel手机上)。Learn2Compress优化模型使用Nasnet风格的网络架构。

  我们也很期待看到在开发人员的用例上Learn2Compress的效果如何。例如,渔业爱好者的社交平台FishBrain利用Learn2Compress将现有的图像分类云模型(大小为80 MB+,Top-3准确率为91.8%)压缩为小得多的移动端模型,尺寸小于5MB,精度却差不多。在某些情况下,我们观察到,由于更好的正则化效果,压缩模型甚至可能略优于原始模型的精度。

  我们将继续改进Learn2Compress以获得在机器学习和深度学习方面的更多进展,并将其扩展到图像分类以外的更多用例。我们很兴奋,并期待着通过ML工具包在云端上的压缩服务来提供这一功能。我们希望这将使开发人员能够轻松地自动构建和优化他们自己的移动端ML模型,以便他们能够专注于构建更好的应用程序并提升用户体验。

感谢

  我要感谢我们的核心贡献者Gaurav Menghani、Prabhu Kaliamooti、 Yicheng Fan,以及Wei Chai、 Kang Lee、 Sheng Xu、 Pannag Sanketi。
  特别感谢Android团队的Dave Burke、Brahim Elbouchikhi、Hrishikesh Aradhye、Hugues Vincent、 Arun Venkatesan;Firebase团队的Sachin Kotwani、Wesley Tarle、Pavel Jbanov;Google Expander团队和TensorFlow团队的Andrei Broder、Andrew Tomkins、Robin Dua、Patrick McGregor、Gaurav Nemade。

你可能感兴趣的:(机器学习,深度学习)