一年前,我和几位伙伴共同发起了一个名为Cortex的开源项目,旨在简化机器学习API的部署流程。最初我们假设,所有将机器学习投入生产环境的用户——尤其是企业——都应该是拥有成熟数据科学团队的大型机构。然而,现实很快给了我们一记响亮的耳光。

实际情况恰恰相反。在这一年时间里,我们观察到学生、独立开发者以及小型团队纷纷将模型部署到生产环境。更令人惊讶的是,他们采用的往往是最前沿的大型深度学习模型,并直接应用于日常应用程序。例如,一个仅有两人组成的团队,最近搭建了一个包含500个GPU的推理集群,用于支撑自家应用的1万个并发用户。放在过去,只有预算充裕、数据量庞大的公司才敢如此操作。而现在,任何团队都能实现这一目标。这种转变是多方面因素共同作用的结果,但其中最关键的一环就是迁移学习。
什么是迁移学习
简单来说,迁移学习是一种技术:将经过某一任务训练的深度神经网络的知识,“迁移”到训练另一相关任务的网络上。举个例子,你可以利用迁移学习获取一个现成的物体检测模型,然后用少量数据对它进行“微调”,使其学会检测更具体的目标——比如车牌。
这种技术之所以有效,与深度神经网络的架构密切相关。网络的低层负责学习基础特征,而特定任务的知识往往集中在高层:

低层训练完成后,只需用少量数据微调高层就能取得良好效果。以YOLOv4这样的物体检测模型为例,微调后仅需很小的数据集就能识别车牌。不同网络之间的知识迁移方法各有差异,但近年来越来越多的新项目致力于简化这一过程。例如,gpt-2-simple这个库让任何人都能轻松微调GPT-2,并直接通过Python函数生成预测结果。
from gpt2_simple import finetune, generate
# 微调代码示例
(注:原文附有代码片段,此处保留示意,实际文本中已包含Gist链接)
迁移学习如何降低机器学习的门槛
大多数团队无法使用机器学习,往往不是因为缺乏知识。要构建一个图像分类器,市面上有大量经典模型可供选择,现代框架也让训练变得异常简单。真正的瓶颈在于成本——机器学习从来都不是一个经济实惠的选择。
以OpenAI的顶级语言模型GPT-2为例。如果放在公有云上训练,仅计算费用就超过4万美元。此外,还需要准备40GB的文本数据——保守估计超过2000万页的内容。光是抓取和整理这些文本就是一项巨大的工程。绝大多数团队根本不可能自己从头训练一个GPT-2。
但如果只是微调呢?来看一个真实的案例。
AI Dungeon是一款自由选择冒险的游戏,延续了经典指令式地牢爬行的风格。玩家输入指令,游戏便根据指令推进剧情。这款游戏的剧情生成器,正是基于微调后的GPT-2模型——玩家可以编写自己选择的冒险文本。AI Dungeon由独立开发者尼克·沃顿打造,他使用gpt-2-simple和从chooseyourstory.com抓取的文本对GPT-2进行了微调。沃顿表示,微调仅需30MB的文本和大约12小时的训练时间(在DGX-1上,费用约374.62美元,效果与AWS的p3dn.24xlarge相当)。
大多数团队对4万美元的云服务费和40GB的文本量望而却步,但375美元和30MB的文本,即便是小型团队也完全负担得起。
迁移学习的应用远不止于语言模型。在药物发现领域,特定疾病的数据往往少得可怜,根本无法从头训练模型。DeepScreening是一个免费平台,允许用户上传自己的数据库、微调模型,然后利用平台筛选可能发生反应的化合物。对于大多数研究人员来说,从头训练这样的模型几乎不可能,但有了迁移学习,突然之间人人都可以做到。

新一代深度学习模型取决于迁移学习
必须强调一点:尽管前面所举的例子都侧重于经济效益,但迁移学习绝不是小团队才用的“凑数工具”。无论规模大小,所有团队都在用它训练深度学习模型。事实上,一些最新发布的模型就是专门针对迁移学习设计的。
还记得GPT-2刚发布时,15亿参数已经让整个行业震惊。但跟GPT-3相比,GPT-2简直是小巫见大巫——GPT-3的参数规模达到了1750亿。除了OpenAI,几乎没有哪家公司能训练如此庞大的语言模型。哪怕是部署这么大的模型都困难重重。OpenAI打破了开源传统,没有放出预训练模型,而是把GPT-3当作API发行——用户可以用自己的数据去微调它。
换句话说,GPT-3的规模庞大到让迁移学习不再是“经济实惠”的选项,而是唯一可行的路径。
“迁移学习优先”的方法正变得越来越普遍。Google刚刚发布的Big Transfer(Big Transfer)是一个开源的高级计算机视觉模型库。尽管视觉模型通常比语言模型小,但它们也开始变大——预训练的ResNet-152x4接受了1400万张图像的训练,容量达到4.1 GB。顾名思义,Big Transfer就是鼓励用这些模型做迁移学习。Google还提供了微调代码,方便大家开箱即用。模型容量只会越来越大(GPT-3的加入会让图表规模扩大10倍):

如果这种趋势持续下去——没有迹象表明会停止——那么迁移学习将成为团队使用前沿深度学习的主要方式。随着模型越来越大,迁移学习使得每个团队都能用上这些模型,投入生产的大型深度学习模型数量也在猛增。训练这些模型本身就是挑战——它们需要巨大的空间和内存进行推理,而且通常无法一次处理多个请求。

正因如此,在Cortex中我们专门引入了一些主要功能来应对这些挑战:GPU/ASIC推理、基于请求的弹性伸缩、spot实例支持。随着模型越来越大,我们还会不断添加新功能。不过,与让世界上每个工程师都能用最先进的深度学习解决问题的能力相比,基础设施上的挑战根本不算什么。人人可用的深度学习,已经触手可及。
