软件世界正在改变:从数据科学到机器学习工程

全文共3524字,预计学习时长9分钟

图源:unsplash

过去的20年里,机器学习一直围绕着一个问题:我们能训练模型来做某件事吗?这件事可以是任何一项任务:预测句子中的下一个单词,识别照片中的人脸,或者发出某种声音。其目的是了解机器学习是否有效,我们能否做出准确预测。

得益于数据科学家几十年的努力,我们现在拥有了大量模型来完成很多事情:

· OpenAI GPT-2(现在是GPT-3)能生成可供人们阅读的文本。

· 诸如YOLOv5这样的目标检测模型(撇开官方版本的争论)可以解析140帧每秒的视频中的目标。

· 类似Tacotron 2这样的文本转语音模型可以生成人声语音。

数据科学家和机器学习研究人员做出的成绩令人难以置信。于是就自然产生了第二个问题:我们可以用这些模型构建什么,以及我们如何构建?这显然不是一个数据科学问题,而一个工程学问题。为了回答这个问题,一个新的学科出现了——那就是机器学习工程。

机器学习工程如何应用于现实问题中?

数据科学和机器学习工程之间的区别在一开始可能难以辨别,所以使用一些例子来阐述更便于理解。

1.从图像分类到ML目录生成

图像分类和关键词提取分别是计算机视觉和自然语言处理的经典问题。Glisten.ai使用针对这两项任务来训练的模型去创建API,以从产品图片中提取结构化信息:

图源:TechCrunch

这些模型归功于数据科学,但Glisten API要归功于机器学习工程。

2.从目标检测到防止偷猎

Wildlife Protection Solutions是一家利用技术来保护濒危物种的小型非营利组织。最近,他们升级了视频监控系统,纳入了一个用于识别偷猎者的目标检测模型。该模型已经使检测率提高了一倍:

图源: Silverpond

像YOLOv4这样的目标检测模型是数据科学的成果,Highlighter(用于训练其模型的WPS平台)则是了不起的数据科学工具。不过,WPS的偷猎者检测系统,要归功于机器学习。

3.从机器翻译到COVID19(新型冠状病毒肺炎)狂想

机器翻译是利用机器学习将数据从一种形式“翻译”为另一种形式的过程。有时是在人类语言之间,有时是在完全不同的格式之间。PostEra是一个药物化学平台,它使用机器翻译将化合物“翻译”成工程蓝图。目前化学家正在使用该平台进行开源工作,以寻找针对COVID-19的治疗方法:

图源: PostEra

开发一种能将分子转化为一系列“路径”(从一个分子到另一个分子的转换)的模型是数据科学的功劳,而构建PostEra平台是机器学习的功劳。

4.从文本生成,到ML游戏管理者

在发布时,OpenAI的GPT-2是历史上最强大的文本生成模型。它的参数多达15亿,标志着转换模型的一大进步。AI地牢是一款经典的地牢爬虫,但它有一点变化:它的游戏管理者实际上是GPT-2,它根据你自己选择的冒险故事对文本进行了微调。

训练GPT-2是数据科学的历史性成就,用它构建地牢爬虫是机器学习的成就。所有这些平台都站在数据科学的巨人肩膀上。如果不训练任务所需的模型,平台将无法工作。但为了让这些模型应用于现实问题中,还需要将它们设计到应用程序中。

换言之,机器学习工程是数据科学的创新在ML研究之外的体现。然而,机器学习工程面临的主要挑战是它引入了一种全新的、我们暂时还无法给出简单答案的工程学问题类别。

什么是机器学习工程?

在较高的层面上,我们可以说机器学习工程是指采用经过训练的模型和构建生产应用程序所需的所有工作。

可以使用一个简单的例子更加具体地解释:让我们回到由ML驱动的文字游戏AI Dungeon。这个游戏的架构很简单,玩家输入文本,游戏对模型进行调用,模型产生响应后被游戏显示。完成这一过程的方法是将模型部署为微服务。

理论上,这和部署任何其他web服务是类似的。用FastAPI等将模型包装在API中,使用Docker将其容器化,部署到Kubernetes集群,并使用负载平衡器公开该模型。

图源: Cortex inference architecture

实际上,GPT-2使事情变得复杂:

· GPT-2很庞大,经过全面训练的模型超过5 GB。为了提供服务,你需要一个配置有大型实例类型的集群。

· GPT-2是资源密集型的,单个预测可以将GPU锁定更长的时间。难以实现低延迟,且单个实例无法一次处理多个请求。

· GPT-2价格昂贵。由于上述事实,将GPT-2部署到生产环境意味着(假设流量相当大),你将运行许多大型GPU实例,这将变得非常昂贵。

游戏发布后很快就会拥有超过100万玩家时,这些问题就变得更加严重了。

编写高性能的API,为GPU实例配置群集,使用竞价型实例优化成本,为推理工作负载配置自动缩放,实施滚动更新,以使API不会在每次更新模型时崩溃,这里面包含了很多工程工作,但也只用一个简单的ML应用程序。

许多ML应用程序都需要多项通用功能:训练、监视、多模型端点、批量预测等,每一个功能都会显着提高其复杂性。解决这些问题是机器学习工程师(与ML平台团队一起工作,取决于组织)所做的,而且由于大多数用于机器学习的工具是为数据科学而不是工程设计的,他们的工作变得更加困难。

幸运的是,这种情况正在改变。

我们正在建立一个用于机器学习工程而非数据科学的平台

几年前,我们中的一些人从软件工程过渡到了ML。在花了数周的时间攻克数据科学工作流程并编写胶粘代码以使ML应用程序正常工作之后,我们开始考虑如何将软件工程原理应用于机器学习工程。

图源:unsplash

例如AI地牢。如果他们正在构建普通的API(不涉及GPT-2),则会使用类似Lambda的表达式在15分钟内启动其API。然而,由于为GPT-2服务的ML遇到的特有挑战,软件工程的编排工具将无法工作。

但是,为什么这些原理不能继续适用呢?

于是我们开始研究用于机器学习工程的工具,那些能适用这些原理的工具。

Cortex是我们的开源API平台,它使机器学习工程师可以使用任何软件工程师都熟悉的界面,尽可能轻松地将模型部署为API。

API平台实际上是AI Dungeon以及上面列出的所有其他ML初创公司用来部署其模型的平台,其背后的设计理念以及我们在Cortex的所有工作非常简单:我们将机器学习工程学的挑战视为工程学而非数据科学的问题。

对于API平台,这意味着我们将使用YAML和Python文件,而不是笔记本电脑(它们难以进行版本控制,依赖隐藏状态并允许任意执行顺序)。我们构建了一个CLI,而不是带有“ Deploy”按钮的GUI,可以通过它实际管理部署。

可以运用此基本原理应对机器学习在生产中的许多挑战。例如,可重复性不仅是机器学习面临的挑战,也是软件工程中的一个问题,但可以使用版本控制来解决。尽管传统的版本控制软件(如Git)不适用于机器学习,但仍然可以应用这些原理。DVC(数据版本控制)将类似于Git的版本控制应用于数据训练,代码及其生成的模型。它就是这样做的:

那么初始化模型并生成预测所需的所有样板文件和粘合代码文件呢?我们将在软件工程中为此设计一个框架。最后,我们也在机器学习工程中看到了这种情况。例如,Hugging Face的Transformers库为大多数流行的转换模型提供了一个简单的界面:

图源: Hugging Face

有了这六行Python,就可以从GPT-2这个最强大的文本生成模型之一下载、初始化并提供预测。用这六行Python代码可以完成甚至三年前成熟、资金雄厚的团队都做不到的事情。

我们之所以对这个生态系统如此兴奋,除了本身参与其中之外,还在于它架起了一座桥梁,连接几十年来机器学习研究与人们每天面临的问题。每一次机器学习都会为一个新的机器学习项目扫清障碍,让新团队更容易解决机器学习中的问题。

未来,机器学习将成为每个工程师工作的一部分。几乎没有什么问题是ML不涉及的。这种情况出现的速度完全取决于我们能以多快的速度开发像Cortex这样的平台,并加速机器学习工程的发展。

一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

猜你喜欢

转载自blog.csdn.net/duxinshuxiaobian/article/details/107761516