写点什么

机器学习模型越来越大,开发者应该如何部署?

  • 2020-02-24
  • 本文字数:2820 字

    阅读完需:约 9 分钟

机器学习模型越来越大,开发者应该如何部署?

对于机器学习,乐观的人认为其可以完成所有人类可做的任务,比如开车、接电话、预约会议、回复邮件等。但现实是机器学习只不过解决了狭窄范围内的问题,比如视频推荐、商品推荐和估算到达时间。然而,当 OpenAI 发布 GPT-2 时,这一差距好像缩小了。


本文最初发布在 TowardsDataScience 博客,经原作者 Caleb Kaise r 授权,InfoQ 中文站翻译并分享。


对于 OpenAI 构建的通用语言模型 GPT-2,该领域的开发者都不陌生。通过简单增加模型大小,GPT-2 有 15 亿个参数,是 ELMo 的 10 倍以上,而以前最好的 Transformer 模型只有 9360 万个参数。


在这之后,模型是越来越大,各大公司就好像达成了共识一般,以致于开发者很难部署。


在 GPT-2 发布后不久,Salesforce 即发布了 CTRL,这是一个拥有 16 亿参数的语言模型。


NVIDIA 也打造了一个拥有 80 亿参数的 Transformer 模型 Megatron。


最近,谷歌发布了新的会话模型 Meena,它拥有 26 亿个参数。


即使在计算机视觉领域,要获得更好性能的途径也是通过更大的模型来实现的。此前,谷歌发布了 NASNet,这是一个打破纪录的图像分类模型,拥有 8890 万个参数,比当时其他任何主要的图像分类模型都要大,能够识别图像中的物体。


趋势很明显。为了实现人类对机器学习驱动未来的美好愿景,这些“超级模型”将会变得越来越大。如此一来,只有一个问题:


模型实在太大,无法在生产环境中使用。

模型太大,部署困难

随着模型规模不断扩大,将其部署到生产中变得越来越棘手。以 GPT-2 为例:


  • GPT-2 大小超过 5GB。在这种规模的情况下,根本无法将模型以本地形式嵌入到应用程序中(而这是移动软件通常使用机器学习的方式)。

  • GPT-2 需要大量算力。为了服务于单个预测,GPT-2 会以 100% 的利用率占用 CPU 长达数分钟。就算有 GPU 的加持,单个预测仍然也需要数秒钟的时间。与此相比,Web 应用可以在一个 GPU 上为数百个并发用户提供服务。

  • GPT-2 需要大量内存。除了可观的磁盘空间和算力需求之外,GPT-2 还需要大量内存才能在不崩溃的情况下运行。


换言之,GPT-2 就是一个庞大的、资源密集型的、速度缓慢的系统。将它投入生产就已经是一个挑战了,再对其进行扩展就更加困难了。这些问题还不是 GPT-2 独有的,所有超级模型都存在这些问题。而且,随着模型变得更大,情况只会变得更糟,不会变得更好。幸运的是,在机器学习生态系统中,有一些项目正在努力克服这一障碍。

解决超级模型部署难题

虽说目前尚处起步阶段,但还是为解决问题提供了可行的思路。

1. 缩小模型

如果模型太大,为什么不压缩它们?要做到这一点,一种方法是通过“知识蒸馏”(knowledge distillation)。这一想法是,一个小型模型可以通过学习来模仿大型模型(即父模型)的性能。


译注:知识蒸馏(knowledge distillation)是一种模型压缩常见方法,用于模型压缩指的是在 teacher-student 框架中,将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来,传递给参数量小、学习能力弱的网络。


换句话说,训练 GPT-2 需要向其馈入高达 40GB 的文本,这相当于大约 27118520 页的文本文件。然而,训练一个蒸馏过的 GPT-2 模型只需向其馈入 GPT-2 的输出即可。


著名的 Transformer NLP 库背后的 HuggingFace 公司就是这样做的,创建了 DistilGPT2。虽然与完整的 GPT-2 模型相比,DistilGPT2 在一些质量基准上的得分要低一些,但它比完整的 GPT-2 模型小了 33%,速度快了一倍。


速度能提高两倍,可不是一件小事。对自动驾驶汽车来说,安全刹车和轻微碰撞之间的区别就在于此。对于一个会话智能体来说,这就是自然谈话和令人恼火的机器人电话之间的区别。

2. 将模型部署到云端

就算用了知识蒸馏,模型仍然可能很庞大。超过 25GB 的模型(NVIDIA 的 Megatron 是 GPT-2 的 5.6 倍)尽管缩小了 33%,但仍然很庞大。


在这种规模下,我们用来消费机器学习生成内容的设备,我们的手机、电视,甚至电脑,都无法承载这些模型,它们根本就不合适。


一种解决方案是将模型作为微服务部署到云端,我们的设备就可以根据需要进行查询。这称为“实时推理”(Realtime inference),是在生产中部署大型模型的标准方法。


然而,在云端部署也有自身的问题,尤其是在规模方面。举个例子,我们可以看看 AI Dungeon,这是一款流行的基于 GPT-2 的冒险游戏。


由于 GPT-2 的大小和算力需求所限,AI Dungeon 只能为单个部署模型中的几个用户提供服务。为了应对流量的增加,AI Dungeon 需要具备自动扩展的能力。


水平扩展 GPT-2 部署是一件非常棘手的事。它需要:


  • 确保每个部署都是相同的。例如,使用 Docker 对模型进行容器化,并使用 Kubernetes 对容器进行编排。

  • 自动扩展部署。例如,通过配置云供应商的自动扩展程序,根据流量自动向上或向下旋转实例。

  • 优化资源。这意味着需要在不牺牲性能的情况下,找到并运行最便宜的实例类型和资源分配。


如果做错了,你可能很容易会得到一笔巨大的云计算账单:部署 200 个 g4dn.2xlarge 的成本每小时高达 150.40 美元,或者你发现自己的预测服务 API 经常崩溃。


换句话说,要为大型模型提供服务,目前需要对 DevOps 有相当多的了解,而且还要求大多数数据科学家不能同时是基础设施工程师。


幸运的是,有一些项目正在努力消除这一瓶颈,类似 Cortex 这样的开源项目,即 AI Dungeon 基础设施背后的项目,作为自动化部署大型模型所需的 DevOps 工作的工具,已经吸引了开发者的关注:


3. 加速硬件服务模式

最后一项使大型模型变得更容易的努力,与模型本身并没有任何关系。相反,它必须与改进硬件有关。


更大的模型在更好的硬件上,性能更优。事实上,GPU 对模型服务很重要,为 GPT-2 提供自动更正低延迟服务的唯一方法是使用 GPU:


如果你在 CPU 上运行,每次请求耗时 925 毫秒。如果使用 GPU,在每次请求 199 毫秒的情况下,可以在大约 100 毫秒的空间时间内预测消息的其余部分,当你考虑到他们的浏览器仍然需要呈现你的预测时,这就非常有用了。


然而,随着模型变得越来越大,我们需要更多的处理能力。


解决该问题的一些努力涉及构建全新的硬件。例如,谷歌发布了 TPU,这是专门为与 TensorFlow 接口而设计的 ASIC,最新的 TPU 打破了模型服务基准的可扩展性和性能的记录。


其他努力还包括加速和优化现有硬件。NVIDIA 发布了 TensorRT,这是一个用于优化 NVIDIA GPU 在推理服务中利用率的 SDK。NVIDIA 已经证明,与在 GPU 上使用 TensorRT,比只使用 CPU 推理相比,性能提高了 40 倍

结束语

在许多方面,机器学习给公众的感觉就像是荒野西部。类似 GPT-2 这样的超级模型才刚出现不久,机器学习刚刚被工程师广泛使用,而不仅仅局限在大公司。而且,模型架构方面的新突破也指日可待。


我们已经目睹了机器学习与每一个垂直领域的结合,包括媒体、金融、零售等。随着机器学习成为软件的标准组成部分,在生产中部署大型模型将不再是挑战。


作者介绍:


Caleb Kaiser,Cortex Lab 创始团队成员,曾在 AngelList 工作,最初在 Cadillac 供职。


原文链接:《Too big to deploy: How GPT-2 is breaking servers》


2020-02-24 13:304228
用户头像
赵钰莹 极客邦科技 总编辑

发布了 883 篇内容, 共 648.3 次阅读, 收获喜欢 2680 次。

关注

评论

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

重塑未来的1课:组装式交付新引擎——智能化低代码平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

如果小程序越来越多,是不是会直接代替App?

Onegun

小程序 小程序容器

极光笔记 | 解锁Web推送的潜力:提升网站收入

极光JIGUANG

网站 营销 消息推送 推送

入选中国数据智能领域 IDC 创新者,柏睿数据创新实力再获肯定

新消费日报

云原生技术分享篇丨浅析Istio流量管理

inBuilder低代码平台

云原生

2023世界人工智能大会,和鲸科技入选中国信通院《2023大模型和AIGC产业图谱》

ModelWhale

人工智能 数据科学 大模型 AIGC 世界人工智能大会

企业是如何做到持续规划的?

智达方通

全面预算管理 持续规划 年度计划流程

一次说清楚:CAE软件可以做什么?

智造软件

CAE 仿真软件 有限元仿真技术 有限元分析 CAE软件

苹果APP安装包ipa如何安装在手机上

ios

软件测试丨Docker环境安装配置(Mac、Windows、Ubuntu)

测试人

Docker ubuntu 软件测试 Mac windows

晴数智慧张晴晴博士当选开放群岛开源社区「首席数据科学家」

Geek_2d6073

2023年值得学习的六种小众编程语言

互联网工科生

编程语言 开发语言

什么是HTML5?HTML5的含义、元素和好处

互联网工科生

html html5

浅析华为云Astro的5大关键能力技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

智能制造:低代码开发平台推动数智时代的巨变

EquatorCoco

人工智能 低代码 智能制造 数智化

基于Go语言的滴滴DevOps重塑之路

滴滴技术

DevOps 滴滴技术 #go

初识滴滴交易策略之一:交易市场

滴滴技术

算法 滴滴技术

30多款大模型亮相,现阶段厂商比客户更需要大模型 | WAIC2023探展

TE智库

人工智能 大模型 WAIC

低代码在边缘计算工业软件中的应用

力软低代码开发平台

华为云Astro低代码平台关键能力技术浅析

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

华为云5大开源项目发布与更新,助力开发者实现应用创新

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

TDengine 3.0 性能如何?教你一键复现 IoT 场景 TSBS 测试结果

爱倒腾的程序员

华为云命令行工具服务KooCLI助力一键管理云资源

华为云PaaS服务小智

云计算 软件开发 华为云

你需要知道的Symbols

不在线第一只蜗牛

前端 symbol

盘古大模型加持,华为云开天aPaaS加速使能千行百业应用创新

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Hybrid Embedding:蚂蚁集团万亿参数稀疏 CTR 模型解决方案

AI Infra

AI 开发者 海量存储 AI大模型 降本增效

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

ModelWhale

人工智能 数据科学 专家平台 专家资源

一文带你上手Servlet

EquatorCoco

Java 前端

机器学习模型越来越大,开发者应该如何部署?_AI&大模型_Caleb Kaiser_InfoQ精选文章