机器学习平台设计人员需要应对当前的挑战并为未来的工作负载进行规划。
作为机器学习在越来越多的公司中站稳脚跟,团队正在努力应对管理机器学习生命周期的复杂性。
典型的起点是为每个数据科学家提供一个由云中的 GPU 实例支持的 Jupyter 笔记本,并让一个单独的团队管理部署和服务,但随着应用程序的复杂性和部署数量的增长,这种方法会失效。
因此,越来越多的团队正在寻找机器学习平台。一些初创公司和云提供商开始提供端到端的机器学习平台,包括 AWS (SageMaker)、Azure (Machine Learning Studio)、Databricks (MLflow)、Google (Cloud AI Platform) 等。许多其他公司选择建立自己的公司,包括 Uber (Michelangelo)、Airbnb (BigHead)、Facebook (FBLearner)、Netflix 和 Apple (Overton)。
图片来源:任意尺度
图 1:开源 Ray 可用于为机器学习平台构建可插拔组件。蓝色框是在其上构建了一些库的组件。
许多用户正在构建 机器学习工具和平台. 这是一个活跃的空间:一些初创公司和云平台开始提供端到端的机器学习平台,包括亚马逊、Databricks、谷歌和微软。但是与社区中的人们的对话不断促使用户重新使用这个工具来解决许多尚未解决的挑战。
Ray 的库集合可以与其他 ML 平台组件一起使用。与单体平台不同的是,用户可以灵活地使用一个或多个现有库,也可以使用它来构建自己的库。已经包含此类功能的机器学习平台的部分列表包括:
Azure 机器学习
亚马逊 SageMaker
未来卫在其 ML 云服务中使用它
蚂蚁金服 将其用于流媒体和在线学习
脸书的优雅的视觉 将其用于分布式训练
英特尔的分析动物园 允许用户直接在 Apache Hadoop/YARN 上运行程序
弗朗贝
在这篇文章中,我们将分享从与许多 ML 平台构建者的对话中得出的见解。我们将列出对确保您的 ML 平台适合现代 AI 应用程序至关重要的功能。我们还将说明构建 ML 平台和 ML 组件的开发人员应该考虑这样的平台,因为它具有独立库的生态系统,可用于解决我们在下面列出的一些项目。
生态系统整合
开发人员和机器学习工程师使用各种工具和编程语言(R、Python、Julia、SAS 等)。但随着崛起深度学习, Python 已成为机器学习的主要编程语言。因此,如果有的话,ML 平台需要支持 Python 和 Python 生态系统。
实际上,开发人员和机器学习工程师依赖于许多不同的 Python 库和工具。使用最广泛的库包括深度学习工具(TensorFlow、PyTorch)、机器学习和统计建模库(scikit-learn、 统计模型), NLP 工具 (斯帕西, 拥抱的脸, 艾伦NLP) 和模型调整 (超光速,调)。
因为它无缝集成到 Python 生态系统中,所以许多开发人员正在利用 Ray 来构建机器学习工具。它是一个通用的分布式计算平台,可用于轻松扩展现有的 Python 库和应用程序。它还为 Python 开发人员提供了越来越多的独立库。
轻松缩放
正如我们著名的在《计算的未来是分布式的》中,“机器学习应用程序的需求正在以惊人的速度增长”。深度学习和新工作负载的兴起意味着分布式计算将普遍用于机器学习。不幸的是,许多开发人员在分布式计算方面的经验相对较少。
扩展和分布式计算是 Ray 对我们交谈过的许多用户有所帮助的领域。它允许开发人员专注于他们的应用程序,而不是分布式计算的复杂性。使用它为需要扩展机器学习应用程序的开发人员带来了几个好处:
它是一个平台,可让您轻松地将现有应用程序扩展到集群。这可能就像将您最喜欢的库扩展到计算集群一样简单(请参阅此 最近贴文 使用它来扩展 scikit-learn)。或者它可能涉及使用 API 将现有程序扩展到集群。后一种情况是我们在应用程序中看到的情况 自然语言处理,在线学习、欺诈检测、金融时间序列、 光学字符识别,以及许多其他用例。
RaySGD 简化了 PyTorch 和 TensorFlow 的分布式训练。这对于许多在训练或调整大型
神经网络方面苦苦挣扎的公司和开发人员来说是个好消息。
无需在 DevOps 上花费时间,内置的集群启动器使设置集群变得简单。
新工作负载的可扩展性
众所周知,现代 AI 平台的计算量非常大。在上面引用的《计算的未来是分布式的》一文中,我们注意到 模型调整 是机器学习开发过程的重要组成部分:
“你不会只训练一次模型。通常,模型的质量取决于各种超参数,例如层数、隐藏单元数和批量大小。寻找最佳模型通常需要在各种超参数设置中进行搜索。这个过程称为超参数调整,它可能非常昂贵。” 离子斯托伊卡
开发人员可以从多个库中进行选择以调整模型。比较流行的工具之一是 调,一个建立在 Ray 之上的可扩展的超参数调优库。Tune 在单个节点 或 集群上运行,并迅速成为该生态系统中更受欢迎的库之一。
强化学习 (RL) 是另一个值得强调的领域。最近有关 RL 的许多文章都与游戏(Atari、围棋、多人视频游戏)或工业环境中的应用程序(例如,数据中心效率)有关。但是,正如我们已经之前提到的,在推荐和个性化、模拟和优化、金融时间序列和 公共政策.
RL 是计算密集型的,实现和扩展都很复杂,因此,许多开发人员希望简单地使用库。Ray 提供了一个简单的、高度可扩展的库(RLlib) 多个组织的开发人员和机器学习工程师已经在生产中使用。
专为团队设计的工具
随着公司开始使用和部署更多的机器学习模型,开发人员团队将需要能够相互协作。他们将需要访问支持共享和发现的平台。在考虑 ML 平台时,请考虑模型开发和运营的关键阶段,并假设具有不同背景的人员团队将在每个阶段进行协作。
例如, 特色商店 (第一的 由优步介绍 2017 年)很有用,因为它们允许开发人员分享和发现 特征 否则他们可能不会想到。团队还需要能够在模型开发生命周期中进行协作。这包括管理、跟踪和重现实验。该领域领先的开源项目是 机器学习流,但我们遇到过其他工具的用户,例如 权重和偏差 和 彗星,以及构建了自己的工具来管理 ML 实验的用户。
企业将需要额外的功能——包括安全和访问控制。随着开发人员团队构建和部署更多模型,模型治理和模型目录(用于管理数据的类似系统的模拟)也将是必需的。
一流的 MLOps
MLOps 是一组专注于生产机器学习生命周期的实践。这是一个相对较新的术语,它从持续集成 (CI) 和持续部署 (CD) 这两种广泛使用的软件开发实践中汲取灵感。最近 思想文章 列出了建立机器学习 CD (CD4ML) 的一些关键考虑因素。机器学习 CI/CD 的一些关键项目包括可重复性、实验管理和跟踪、模型监控和可观察性等。有一些初创公司和开源项目提供 MLOps 解决方案,包括 数据创, 维塔, TFX, 和 机器学习流.
Ray 的组件对于转向 CI/CD 或构建用于机器学习的 CI/CD 工具的公司很有用。它已经拥有 ML 生命周期关键阶段的库: 训练 (RaySGD)、 调优 (Tune) 和 部署 (Serve)。访问无缝协同工作的库将允许用户更容易地将 CI/CD 方法带入他们的 MLOps 实践中。
概括
我们列出了机器学习平台应具备的关键要素。我们的基本假设是 Python 仍将是 ML 的首选语言,分布式计算的需求将越来越大,需要支持超参数调整和 RL 等新工作负载,并且需要提供支持协作和 MLOps 的工具。
考虑到这些假设,我们相信 Ray 将成为未来 ML 平台的基础。许多开发人员和工程师已经将它用于他们的机器学习应用程序,包括培训、优化和服务。它不仅可以应对规模和性能等当前挑战,而且可以很好地支持未来的工作负载和数据类型。
相关帖子DA内容精选
- 大厂数据分析面试指南!来自亚马逊、谷歌、微软、头条、美团的面试问题!
|