社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

谷歌开发者 • 6 年前 • 839 次点击  

文 / Google Expander 团队高级职员兼研究科学家 Sujith Ravi


成功的深度学习模型往往需要大量的计算资源、内存和动力来训练和运行,一旦您想让它们能在移动设备和物联网设备上表现良好,往往就会碰壁了。通过移动端机器学习,您可以直接在设备上运行推理,无论连接状况如何,都可以保护数据隐私,不受任何访问权限的制约。移动端的 ML 系统,例如 MobileNets 和 ProjectionNets,通过优化模型效率来解决移动设备上的资源瓶颈。但是,如果您想为您的个人移动应用程序培训自己定制的设备型号,那该怎么办呢?


在 Google I / O 开发者年会上,我们发布了 ML Kit 工具包,让所有移动开发人员都可以使用机器学习。由我们的研究团队开发的 “Learn2Compress” 技术提供了自动模型压缩服务,这是 ML 工具包的核心功能之一,也将很快上线。 Learn2Compress 可以在 TensorFlow Lite 中实现自定义的移动端深度学习模型,可在移动设备上高效运行,开发人员无需担心内存和速度优化问题。我们很高兴能够很快在 ML Kit 工具包中使用针对图像分类的 Learn2Compress。 Learn2Compress 最初将面向少数开发人员开放,并在未来几个月内提供给更广泛的受众。 如果您有兴趣使用此功能来构建自己的模型,可以在此处注册。

注:此处链接

https://docs.google.com/forms/d/e/1FAIpQLSd7Uzx6eepXeF5osByifFsBT_L3BJOymIEjG9uz1wa51Fl9dA/viewform



工作原理

Learn2Compress 融合了之前研究工作中介绍的学习框架,如 ProjectionNet,并结合了几种最先进的技术来压缩神经网络模型。 它将用户提供的大型预训练 TensorFlow 模型作为输入,执行训练和优化,在精度损失最小的情况下自动生成尺寸较小,内存效率更高,功效更高,推理速度更快的即用型移动端模型。

 

用于自动生成设备上的 ML 模型的 Learn2Compress

 

为此,Learn2Compress 使用多种神经网络优化和压缩技术,包括:


  • 通过删除对预测最不重要的权重或操作(例如低评分权重)来缩小模型的大小。这对于涉及稀疏输入或输出的设备模型非常有效,尺寸可以缩小 2 倍,同时保留 97% 的原始预测质量。

  • 量化技术在训练重的应用特别有效,并且可以通过减少用于模型权重和激活的比特数来提高推理速度。例如,使用 8 位定点代替浮点数可以加速模型推理,降低功耗,并进一步将尺寸减小 4 倍。

  • 遵循师生学习策略使用联合培训和精馏方法- 我们使用一个更大的教师网络(在本例中,用户提供的 TensorFlow 模型)来训练一个紧凑型的学生网络(设备上的模型),其准确性损失最小。 


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

 

教师网络可以固定(如精馏)或联合优化,甚至可以同时训练不同大小的多个学生模型。 因此,与单一模型不同,Learn2Compress 可以一次性生成多个大小不一和推理速度不同的移动端模型,并让开发人员选择一个最适合其应用程序需求的模型。

这些和其他技术(如转移学习)也使压缩过程更有效,并且可以扩展到大规模数据集。



实际效果如何呢?

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


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

 

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

 

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

 

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


随着机器学习和深度学习的未来发展,我们将继续改进 Learn2Compress,并将其扩展到图像分类以外的更多用例。我们很高兴并期待通过 ML Kit 工具包在云端的压缩服务能够尽快推出这项服务。我们希望这将使开发人员能够轻松地自动构建和优化他们自己的设备上机器学习模型,以便他们可以专注于构建优秀的应用程序和酷炫的用户体验,包括计算机视觉,自然语言和其他机器学习应用程序。



更多 AI 相关阅读:

· Android Smart Linkify 支持机器学习

· MnasNet:迈向移动端机器学习模型设计的自动化之路

· 将连接组学提高一个数量级



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/jUnvHOpLoK
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23151
 
839 次点击