机器学习模型越来越大,开发者应该如何部署?
极客时间编辑部
讲述:丁婵大小:7.19M时长:05:14
来源:InfoQ 中文站
对于 OpenAI 构建的通用语言模型 GPT-2,该领域的开发者都不陌生。通过简单增加模型大小,GPT-2 有 15 亿个参数,是 ELMo 的 10 倍以上,而以前最好的 Transformer 模型只有 9360 万个参数。在这之后,模型是越来越大,各大公司就好像达成了共识一般,以致于开发者很难部署。
日前,Cortex Lab 创始团队成员凯勒·凯瑟(Caleb Kaiser)分享了解决超级模型部署难题的三个方法,希望能给工程师带来参考。
1. 缩小模型
如果模型太大,为什么不压缩它们?要做到这一点,一种方法是通过“知识蒸馏”(knowledge distillation)。这一想法是,一个小型模型可以通过学习来模仿大型模型(即父模型)的性能。
换句话说,训练 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),是在生产中部署大型模型的标准方法。
然而,在云端部署也有自身的问题,尤其是在规模方面。以一款基于 GPT-2 的冒险游戏 AI Dungeon 为例,由于 GPT-2 的大小和算力需求所限,AI Dungeon 只能为单个部署模型中的几个用户提供服务。为了应对流量的增加,AI Dungeon 需要具备自动扩展的能力。
水平扩展 GPT-2 部署是一件非常棘手的事。它需要:
确保每个部署都是相同的。例如,使用 Docker 对模型进行容器化,并使用 Kubernetes 对容器进行编排。
自动扩展部署。例如,通过配置云供应商的自动扩展程序,根据流量自动向上或向下旋转实例。
优化资源。这意味着需要在不牺牲性能的情况下,找到并运行最便宜的实例类型和资源分配。
如果做错了,你可能很容易会得到一笔巨大的云计算账单,或者你发现自己的预测服务 API 经常崩溃。
换句话说,要为大型模型提供服务,目前需要对 DevOps 有相当多的了解,而且还要求大多数数据科学家不能同时也是基础设施工程师。
幸运的是,有一些项目正在努力消除这一瓶颈,类似 Cortex 这样的开源项目,即 AI Dungeon 基础设施背后的项目,作为自动化部署大型模型所需的 DevOps 工作的工具,已经吸引了开发者的关注。
3. 加速硬件服务模式
最后一项使大型模型变得更容易的方法,与模型本身并没有任何关系。相反,它必须与改进硬件有关。
更大的模型在更好的硬件上,性能更优。事实上,GPU 对模型服务很重要,为 GPT-2 提供自动更正低延迟服务的唯一方法是使用 GPU。如果你在 CPU 上运行,每次请求耗时 925 毫秒。而如果使用 GPU,在每次请求 199 毫秒的情况下,可以在大约 100 毫秒的空间时间内预测消息的其余部分。
不过,随着模型变得越来越大,还需要更多的处理能力,这会涉及构建全新的硬件。例如,谷歌发布了 TPU,这是专为与 TensorFlow 接口而设计的 ASIC,最新的 TPU 打破了模型服务基准的可扩展性和性能的记录。
其他解决方案还包括加速和优化现有硬件。比如英伟达发布了 TensorRT,这是一个用于优化英伟达 GPU 在推理服务中利用率的 SDK。英伟达已经证明,与在 GPU 上使用 TensorRT,比只使用 CPU 推理相比,性能提高了 40 倍。
以上就是凯勒·凯瑟分享的解决超级模型部署难题的三个方法,你有更好的建议吗?欢迎补充。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 小斧1. 缩小模型 2. 将模型部署到云端 3. 加速硬件服务模式
收起评论