在软件工程领域,消费级应用场景通常具有高度标准化的特点。比如在Web开发中,实现用户身份验证时,我们不需要自己创建数据库、编写哈希函数或设计全新的认证机制,而是选择已有的标准化工具和方法即可。
然而,在机器学习领域,这样的标准化尚未形成。团队往往需要从零开始构建整个模型训练到部署的流水线,这使得很多工程师感到难以企及,特别是对于那些没有足够资源聘请专家的公司更是如此。
不过,这种情况正在发生变化。机器学习正逐渐走向标准化,工具也在不断成熟。最终,即使是不具备深厚机器学习背景的普通工程师也能够构建出有效的软件系统。
当你每天使用Gmail、Uber或Netflix等应用时,你会发现许多功能背后都隐藏着机器学习的力量。例如自动补全邮件、语音转文字、物体识别以及时间预估等功能。
虽然这些功能背后的数学原理是机器学习专家们关心的问题,但将这些模型转化为实际可用的产品则需要所有开发者掌握的知识。
从软件工程角度来看,一个已经训练好的模型实际上就是一个API。将模型投入生产意味着将其作为微服务部署。
当然,还有其他形式的模型部署方式,比如用于离线设备的部署,但本文主要讨论的是Web服务的部署。
不久前,想要部署一个实时推理模型,还需要回答一系列问题: - 如何编写一个可以从模型中生成预测结果的API? - 将API部署到生产环境的最佳方式是什么? - 如何满足生产级Web服务所需的基础设施功能,如自动伸缩、监控、负载均衡和滚动升级等?
这些问题的答案取决于模型的具体特性,比如它使用的框架、所需的计算资源和处理的数据类型等。
因此,大型科技公司通常拥有专门的机器学习基础设施团队,而大多数初创公司则很难负担得起这样的团队。
但现在,这些问题有了标准答案。为了从模型中生成预测,你可以使用框架自带的服务库(如TensorFlow/TF Serving或PyTorch/TorchServe)。为了将模型封装为API并部署,你需要使用一个模型服务平台(例如,我参与维护的开源平台Cortex,其GitHub地址为:https://github.com/cortexlabs/cortex)。
现在,任何软件工程师拿到一个模型,无论是由数据科学团队训练的,还是微调的开源模型,甚至只是一个普通的预训练模型,都可以将其转换为Web服务,而无需成为机器学习或Kubernetes专家。
如果你在过去几年中使用过Gmail,一定熟悉Smart Compose功能。当您撰写邮件时,它会提供一些自动建议。
尽管Google肯定有一套复杂且耗资巨大的机器学习流水线,但如果你想实现类似Smart Compose的功能,不一定需要Google那样的资源。
例如,AI Dungeon是一款由机器学习驱动的冒险游戏。这款游戏背后的核心技术是OpenAI的GPT-2模型,这是一个非常强大的语言模型。用户向模型发送文本请求,模型则返回一个故事。
GPT-2模型非常庞大,训练好的模型大小超过5GB,运行一次预测可能需要占用整个GPU。几年前,将这样一个模型大规模部署为微服务是一项重大的基础设施任务。你需要: - 找到足够的空间和GPU资源来支持预测服务。 - 配置自动伸缩来处理任意数量的并发用户。 - 实施各种成本优化措施,确保云服务费用在可控范围内。
每项任务中都包含许多子任务。例如,自动伸缩应该基于内存使用率还是请求队列的数量?如何顺利处理故障转移,以节省成本?
在Google,这些工作由专门的机器学习基础设施团队负责,而在AI Dungeon,这些任务由一名工程师独立完成。
正如Nick Walton在他的文章中所述,他所做的只是编写预测API,并利用Cortex平台自动化了基础设施。(文章地址:https://medium.com/@aidungeon/how-we-scaled-ai-dungeon-2-to-support-over-1-000-000-users-d207d5623de9)
即使对于那些不熟悉迁移学习的人,AI Dungeon的故事也非常有趣。设计模型是一项挑战,但将其投入生产则显得枯燥乏味。
几年前,消费级机器学习的瓶颈限制了AI Dungeon的诞生。而现在,AI Dungeon只是众多机器学习原生创业公司中的一个例子。
例如,Glisten公司结合了多个模型,提供了一个可以从图像中提取产品信息的API。
虽然Glisten每月要处理数千个公司的产品,但它只有两名员工。如果没有基础设施团队,这是不可能实现的。
此外,消费级机器学习的普及不仅影响了初创公司。例如,一位工程师在隔离期间部署了一个对话模型,并录制了一段视频,以此来消磨时光。
这些只是工程师们正在着手的一些项目,他们资源有限,通常也没有DevOps的专业知识。但这些项目的重要性不仅在于它们本身有趣,更在于它们代表了机器学习生态系统的进步。
随着消费级机器学习问题的解决,机器学习研究人员和软件工程师之间的壁垒正在消失。研究领域的突破可以更快地体现在产品特性上。最终,我们所有人都会从中受益。
GitHub链接: https://github.com/cortexlabs/cortex
原文链接: https://towardsdatascience.com/production-machine-learning-isnt-hard-anymore-932bd91e138f
本文为CSDN翻译文章,转载请注明出处。