写点什么

为什么大型机器学习模型必须缩小 ?

  • 2021-05-12
  • 本文字数:1387 字

    阅读完需:约 5 分钟

为什么大型机器学习模型必须缩小 ?

更大的规模不一定更适合机器学习。但是,随着研究人员相互竞争追求最先进的基准,深度学习模型和训练它们的数据集不断扩展。不管它们如何突破,更大的模型都会对预算和环境产生严重的影响。


比如 GPT-3,一个在去年夏天推出的大受欢迎的自然语言处理模型,据说花了1200 万美元用于训练。更有甚者,马萨诸塞大学阿默斯特分校(UMass Amherst)的研究人员发现,训练大型人工智能模型所需的计算能力能够产生 60 多万磅的二氧化碳排放——是普通汽车寿命周期排放量的 5 倍。


目前,没有迹象表明,以机器学习行业的发展速度,计算密集型工作将会放缓。OpenAI 的研究显示,深度学习模型的计算能力在 2012 到 2018 年间增长了惊人的 30 万倍,超过了摩尔定律。这个问题不仅仅是训练这些算法,而是要在生产环境下运行它们,或者说在推理阶段。对很多团队而言,由于纯粹的成本和资源的限制,深度学习模型的实际应用仍然遥不可及。


幸好,研究人员发现了一些新的方法来缩小深度学习模型,并通过更智能的算法来优化训练数据集,使得模型在生产环境下运行得更快,计算量也更少。就连业界的一个峰会也专门讨论低功耗、微型机器学习。剪枝(Purning)、优化(Quantization)和迁移学习(Transfer Learning)就是三种具体的技术。这些技术可以让那些无法投资数百万美元把模型转换成生产环境的组织实现机器学习的民主化。对“边缘”用例来说,这一点尤为重要,因为大型专用人工智能硬件在物理上并不切实际。


第一种技术,即剪枝,是近几年来研究的热点之一。包含“深度压缩”(Deep Compression)和“彩票假说”(Lottery Ticket Hypothesis)在内的高引用文献表明,可以在不损失正确性的情况下消除神经网络中“神经元”之间一些不必要的连接,有效地使模型更小、更容易在资源有限的设备上运行。最新的论文进一步验证并完善了早期的技术,以开发出更小的模型,使其达到更高的速度和正确度。对某些模型,比如ResNet,可以在不影响正确性的情况下剪枝 90% 左右。


第二种技术,即优化,也正在逐步普及。优化涉及许多不同的技术,它们可以将大的输入值转换为小的输出值。换句话来说,在硬件上运行神经网络可以产生上百万次乘和加运算。减少这些数学运算的复杂性有助于减少内存需求和计算成本,这将大大提高性能。


最后,虽然这不是一种缩小模型的技术,但是迁移学习能够在有限的数据中帮助训练一个新模型。迁移学习以预训练模型作为起点。通过有限的数据集,模型的知识可以“迁移”到一个新的任务中,而无需从头再来训练原始模型。在训练模型时,这是一种减少计算能力、能源和资金的重要方法。


最重要的启示是,模型可以(也应该)尽可能地优化,使其在较少的计算量下运行。在不牺牲性能和正确性的情况下,寻找减小模型大小和相关计算能力的方法将是机器学习的下一大突破。


如果能有更多人在生产环境中低成本地使用深度学习模型,我们就能真正看到现实世界中创新的新应用。这些应用可以在任何地方运行,甚至是在最小的设备上,以达到做出即使决定所需的速度和正确性。或许,小型模型最好的效果是整个行业能够减少其环境硬件,而不是每六年增加 30 万倍。


作者介绍:


Sasa Zelenovic,Neural Magiic 团队成员,帮助数据科学家发现开源、廉价的硬件加速器替代品,以实现深度学习性能。


原文链接:


https://www.datasciencecentral.com/profiles/blogs/honey-i-shrunk-the-model-why-big-machine-learning-models-must-go

2021-05-12 10:001602
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 560.1 次阅读, 收获喜欢 1978 次。

关注

评论

发布
暂无评论
发现更多内容

dubbogo 入围 2021 年“科创中国”榜单

apache/dubbo-go

微服务 云原生 dubbo dubbo-go

Kubernetes集群监控平台(kube-prometheus-stack/Metrics Server)搭建教程

山河已无恙

Kubernetes Kubernetes 集群 2月月更

架构实战营第 4 期第 7 课作业:王者荣耀商城异地多活架构设计

owl

「架构实战营」

来喷一下所谓无影云电脑

乌龟哥哥

无影云电脑 2月月更

使用Rainbond部署Logikm,轻松管理Kafka集群

北京好雨科技有限公司

第八周作业

lv

王者荣耀商城异地多活架构设计

tony

「架构实战营」

模块七作业-王者荣耀商城异地多活架构设计

CH

架构实战 「架构实战营」

面试突击23:说一下线程生命周期,以及转换过程?

王磊

架构实战营4期-模块七作业

木几丶

「架构实战营」

模块七

Only

架构师实战营 「架构实战营」

架构实战营 4 期第七模块作业

jialuooooo

架构实战营

架构训练营模块七作业

沈益飞

架构是训练营 架构师训练营 4 期

如何利用友盟平台定位安卓端的程序异常 | 社区征文

liuzhen007

移动开发 新春征文 2月月更

Linux系统编程-进程间通信(消息队列)

DS小龙哥

消息队列 2月月更

数蛙DG-IoT开源平台

dgiot

物联网 2月月更 2月日更 dgiot dgiot物联网

Rootkit Hunter恶意程序查杀

喀拉峻

网络安全

netty系列之:channelPipeline详解

程序那些事

Java Netty 程序那些事 2月月更

吃到多样性红利的12种方法

永利app贵宾会网址

个人成长 思维模型 多样性

王者荣耀商城异地多活架构设计

supermenG

架构师训练营 4 期

模块七课程作业

李晓笛

架构实战营

虎符交易所完成首次HOO回购 超40万HOO添加到虎符AMM流动池

区块链前沿News

Hoo虎符 Hoo 虎符交易所

架构实战营模块七作业

zhongwy

架构实战模块7

Anlumina

「架构实战营」

「架构实战营」模块七《如何设计异地多活架构》作业

DaiChen

作业 模块七 「架构实战营」

模块七作业

novoer

「架构实战营」

第七周

cqyanbo

Web Components 系列(十)—— 实现 MyCard 的基本布局

编程三昧

前端 组件化 2月月更 webComponents

模块七 - 王者荣耀商城异地多活架构设计

圈圈gor

架构实战营 「架构实战营」

利用 Helm 在各类 Kubernetes 中安装 Rainbond

北京好雨科技有限公司

golang context详解

en

golang Context

为什么大型机器学习模型必须缩小 ?_AI&大模型_Sasa Zelenovic_InfoQ精选文章