在许多软件工程领域,使用案例已经趋于标准化。例如,在网络开发中,实现身份验证并不需要从零开始构建数据库、编写哈希函数或设计新的认证策略。相反,开发者通常会选择现成的方法和标准工具。
然而,在机器学习领域,这种标准化尚未完全实现。过去,构建从模型训练到部署的完整流程往往需要团队从头开始设计解决方案。这导致许多工程师感到难以涉足这一领域,特别是对于那些无法雇佣专业人才的公司而言。
但情况正在发生变化。消费级模型逐渐普及,相关方法和工具也在不断成熟。如今,即使是非专业的机器学习工程师也能开发出实用的软件。
如果您观察一下日常使用的应用程序,比如Gmail、Uber、Netflix或您喜爱的社交平台,您会发现很多功能都得益于机器学习技术,如自动填充、语音识别、物体检测和时间预测等。
尽管这些模型背后涉及复杂的数学理论,但将其转化为实际产品的架构应该对任何开发人员来说都是熟悉的。从软件工程的角度看,训练好的模型仅仅是一个API,将其投入生产就意味着将其部署为微服务。
当然,除了将模型部署为Web服务之外,还有其他方式(例如部署到离线设备),但这不是本文的重点。
假设您想开发类似Gmail Smart Compose的功能,只需将语言模型部署为Web服务,通过文本ping端点并在前端展示预测结果即可。如果您希望实现类似Facebook“推荐标签”的功能,过程则相反——部署图像识别模型,并像使用其他Web服务一样使用它。
然而,尽管简单地说“将模型部署为微服务”似乎很容易,但真正实现起来却充满挑战。
几年前,要实现实时推理的模型部署,您需要回答几个关键问题:
此外,根据模型的具体特性(如训练框架、所需的计算和内存资源以及处理的数据类型等),答案可能会有所不同。
这就是为什么大型科技公司拥有专门的机器学习基础设施团队,也是为什么大多数初创公司难以负担在生产环境中使用机器学习的原因。
现在,这些问题已经有了标准答案。要从模型生成预测,您可以使用框架自带的服务库(如TensorFlow/TensorFlow Serving或PyTorch/TorchServe)。要将模型封装成API并进行部署,您可以使用模型服务平台(无耻的插件:我在开源模型服务平台Cortex工作)。
如今,任何软件工程师都可以采用一个模型(无论是由数据科学团队训练的模型、微调的开源模型还是预训练的原始模型),并将其转换为生产级别的Web服务,而无需成为机器学习或Kubernetes的专家。
如果您近年来使用过Gmail,应该对Smart Compose功能很熟悉。当您输入邮件时,Gmail会给出一些预测性的回复建议。
虽然毫无疑问,Google拥有复杂且投资巨大的机器学习管道,但如果您想构建类似的智能回复功能,无需依赖Google庞大的资源。
一个很好的例子是AI Dungeon,这是一款由机器学习支持的自主选择冒险游戏。
在后台,AI Dungeon使用的是OpenAI的GPT-2(目前最先进的语言模型),并且进行了微调,已经部署为Web服务。用户向微服务模型发送提示,模型会以一个故事作为回应。
就背景而言,GPT-2非常庞大。经过训练的模型大小超过5GB,需要利用GPU才能高效地进行单次预测。几年前,要将其大规模部署为微服务,将是一项重要的基础设施项目。您需要:
每个任务都包含许多需要解决的子问题。您应该根据内存利用率还是请求队列的数量来自动伸缩?您是否能顺利处理故障转移,以确保使用竞价型实例节约成本?
这些正是Google等公司中专门的机器学习基础设施团队负责的工作。相比之下,AI Dungeon项目仅由一名工程师完成。
正如AI Dungeon背后的工程师Nick Walton在其文章中提到的,他只需编写预测API,并允许模型服务平台(Cortex)自动化基础设施配置即可。
几年前,围绕将机器学习模型投入生产的瓶颈可能阻碍了AI Dungeon这样的项目。但现在,这类项目只是众多机器学习原生创业公司的其中之一。
例如,Glisten结合了多种模型,生成了一个API,可以从图像中提取产品信息:
虽然这家公司每月处理数千个产品信息,但Glisten只是一家由两个人组成的初创公司。这正是因为它们不需要庞大的基础设施团队。
消费级机器学习的普及不仅影响了初创公司,也影响了个人工程师。例如,有人开发了一款对话模型,通过与模型对话来打发时间:
这些只是工程师利用少量资源(通常仅需基本的DevOps知识)启动的项目。它们不仅因为自身有趣而重要,还因为它们代表了机器学习生态系统的一个进步。
随着消费级机器学习逐渐成为一个已解决的问题,机器学习研究者和软件工程师之间的障碍正在被打破。研究领域的突破将更快地转化为产品功能,从而让我们所有人受益。
如果您有兴趣推动消费级机器学习的普及,请考虑为Cortex贡献力量。
(本文翻译自Caleb Kaiser的文章《Production machine learning isn't hard anymore》,参考:https://towardsdatascience.com/production-machine-learning-isnt-hard-anymore-932bd91e138f)