MLOps:可扩展人工智能工作流程的前进之路
不管任何人工智能项目,可扩展性都是最困难的一个部分。首先,它需要大量的数据来构建和训练人工智能模型。同时,在同步不同的作业、模型和数据集要求时,情况极其复杂。诸如此类的挑战是 IT 和工程组织采用 DevOps 设计原则的主要驱动因素。但是,DevOps 实际上解决不了这些人工智能可扩展性问题。
DevOps 是一套软件开发生命周期 (SDLC) 管理规范,它可在减少开发时间的同时交付持续、高质量的软件更新,从而使得组织可以扩大他们的工程产出。考虑到人工智能和机器学习依赖于反复的模型迭接和算法优化,如果任何组织同时管理多个人工智能项目,那么应该使用 DevOps 来处理版本控制和自动测试等事项。
问题在于人工智能项目具有易变性。人工智能用例不同,要求使用的工具也不同,因此支持多项人工智能应用的任何基础架构都应该具有弹性。在机器学习项目中的数据和工作流程可能同时存在于多个并行轨道上的人工智能系统中,同一数据既可以是输入,也可以是输出。
DevOps 模型并不是为处理这些多层数据和工作流程层次结构而设计的。幸运的是,几十年前建立 DevOps 最佳实践的老开发人员当今仍在解决这一问题。
从 DevOps 到 MLOps
为了说明人工智能在组织内是如何难以驾驭,我们先讲一个故事。
Chia-Liang “CL” Kao 是一个拥有二十多年经验的开源开发人员,他在他职业生涯的早期就构建了一个软件版本控制系统,即 SVK。2018 年,一家非营利人工智能培训学校邀请 Kao 开发一个后端管理系统,目的是让不同的人群能够协作处理共享数据集并共享开发资源,且不会覆盖彼此的工作或不小心修改别人的数据。当时,还没有机器学习工作流程的任何等同流程或架构。
这个问题比看上去还要严重,Kao 几十年的 DevOps 开发经验此时派上了用场。
“他们最开始共有 200 人,需要采用一种自动化的方法来管理执行深度学习任务的所有资源,” Kao 说道。“否则,需要 10 个人人工管理这个环境才能确保 200 名学生的项目不会相互干扰。
“如何获取数据、清理数据、聚合数据和组织数据?”他问道。“以及如何管理训练库和工作负载?有了模型以后,如何跟踪这些模型?”
在回答这些问题的过程中,Kao 和 DevOps 社区的其他成员开始创建后来的 MLOps。
预封装开源 MLOps
MLOps 是一种人工智能生命周期管理方法,它将 DevOps 的 SDLC 规范剪裁为需要扩展的人工智能项目和工作流程。例如,Kao 创立了一家名为 InfuseAI 的公司,他们开发了 PrimeHub AI,一个开源可插拔 MLOps 平台,它可从一个多租户仪表板中支持范围广泛的各种工具和软件包(图 1)。
PrimeHub AI 平台使用以 API 为中心的架构,可以帮助用户玩转具有不同软件要求和数据存储库的多个项目,而无需交叉连接工作流程孤岛。这一切始于一个由数据科学家、人工智能开发人员和 IT 专业人员可能已经熟悉的现成开源工具组成的预封装软件堆栈:
- 面向交互式开发的 Jupyter Notebook
- 面向构建和推广 Docker 容器的 Crane
- 面向数据版本管理和数据集元数据跟踪的 PipeRider 和 ArtiV
- 使第三方应用程序能够无缝集成到机器学习工作流程的框架,如模型注册和数据标记工具
- 面向数据聚焦和可视化的 Streamlit
此外,该平台还支持来自 AWS、谷歌云和 Microsoft Azure 的多个基于云的产品/服务。
正如 Kao 解释的那样,MLOps 必须“接受不同项目的多样性,但在非常高的水平上进行标准化,这样你的工具才能支持这种实践。”
这正是 API 发挥作用的地方,它可以帮助集成机器学习堆栈的每个部分,这样不同的 IDE、库、数据来源等便可以直接进入在如上所述的软件基础架构之上构建的 DevOps 工作流程。它们还支持集成其他常见的工作流程自动化工具,如 Jenkins 服务器、TensorFlow 库,甚至像 Intel® OpenVINO™ 工具套件这样的模型优化器。
“它就像是一个中心枢纽,你需要的所有工具都在这里,” Kao 说道。“我们不打算重新执行不同的阶段。将会有多种工具。我们不会把它们全部替换掉,而是会让它们无缝运行。”
扩展问题
成功部署 MLOps 的目标是解决可扩展性问题,从而减少配置工作负载和管理数据集的时间,将更多的时间集中在人工智能的成效上。
例如,已将 PrimeHub AI 平台部署到一家大型医院,一支人工智能小队在 COVID-19 疫情最严重的时候用它来管理预测的急诊室能力。该应用涉及多个机器学习模型,用于跟踪不同患者的病情,预测他们改善的可能性,并确定第二天会空出多少床位。与此同时,需要不断地重新训练模型以适应季节变化,更新疫情数据和其他因素,然后加以验证和部署。
以前,所有这些流转的部分会在人工智能开发人员和运营工程师之间形成一个孤岛,使得更新模型需要花费数周的时间。但借助于 PrimeHub MLOps,它就变成了一个只需一小时即可完成的工作流程,包括更新模型、测试模型并将其部署到生产环境中。
通过扩展经典 DevOps 模型自动完成工作流程、扩大部署规模并使后端控制尽可能简单,使得这类组织能够充分享受人工智能带来的的价值和投资回报。Kao 表示,如果周转时间没有更短,那么“你就是在浪费人工智能投资,让它白白闲在那里。”