开发者应该如何部署? 机器学习模型越来越大 (开发者怎么用)

开发者应该如何部署? 机器学习模型越来越大 (开发者怎么用)

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

解决超级模型部署难题

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

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),是在生产中部署大型模型的标准方法。

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

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

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

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

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

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

3. 加速硬件服务模式

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

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

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

解决该问题的一些努力涉及构建全新的硬件。例如,谷歌发布了 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》

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。