公司 OpenAI 地点 加利福尼亚州旧金山 行业 人工智能研究

挑战

作为一家人工智能研究实验室,OpenAI 需要一个深度学习基础设施,该基础设施可以允许实验在云端或其自己的数据中心中运行,并且可以轻松扩展。可移植性、速度和成本是主要驱动力。

解决方案

OpenAI 于 2016 年开始在 AWS 之上运行 Kubernetes,并在 2017 年初迁移到 Azure。OpenAI 在 Azure 和其自己的数据中心中运行着包括机器人和游戏在内的关键实验,具体取决于哪个集群有空闲容量。“我们主要将 Kubernetes 用作批处理调度系统,并依赖于我们的 自动伸缩器 来动态调整集群的大小,”基础设施主管克里斯托弗·伯纳说。“这让我们可以显着降低空闲节点的成本,同时仍能提供低延迟和快速迭代。”

影响

该公司从更高的可移植性中受益:“由于 Kubernetes 提供了统一的 API,我们可以非常轻松地在集群之间移动我们的研究实验,”伯纳说。能够在适当的情况下使用自己的数据中心“降低了成本,并为我们提供了在云中不一定能够获得的硬件,”他补充道。“只要利用率高,成本就会低得多。”启动实验也花费的时间更少:“我们的一位研究人员正在研究一种新的分布式训练系统,他能够在两到三天内完成实验。在一到两周内,他将规模扩展到数百个 GPU。以前,这可能需要几个月的时间。”

从机器人实验到老式视频游戏玩法研究,OpenAI 在人工智能技术方面的研究旨在共享。

OpenAI 致力于确保强大的 AI 系统安全,因此非常重视开源——既从中获益,又将安全技术贡献到开源领域。“我们进行的研究,我们希望尽可能广泛地传播,以便每个人都能从中受益,”OpenAI 基础设施主管克里斯托弗·伯纳说。该实验室的理念及其特殊需求促使它采用了开源的云原生策略来构建其深度学习基础设施。

OpenAI 于 2016 年开始在 AWS 之上运行 Kubernetes,一年后,将 Kubernetes 集群迁移到 Azure。“我们可能使用 Kubernetes 的方式与许多人不同,”伯纳说。“我们将其用于批处理调度,并用作集群的工作负载管理器。它是一种协调大量相互连接的容器的方式。我们依赖于我们的 自动伸缩器 来动态调整集群的大小。这让我们可以显着降低空闲节点的成本,同时仍能提供低延迟和快速迭代。”

在过去的一年中,伯纳监督了在 OpenAI 自己的数据中心中启动了几个 Kubernetes 集群。“我们以混合模式运行它们,其中控制平面——Kubernetes API 服务器、etcd 和所有内容——都在 Azure 中,然后所有 Kubernetes 节点都在我们自己的数据中心,”伯纳说。“云对于管理 etcd 和所有主节点以及在出现故障时备份和启动新节点非常方便。这种模式使我们能够利用更低的成本,并且在我们自己的数据中心中获得更多专用硬件。”

OpenAI 的不同团队目前正在运行几十个项目。虽然规模最大的工作负载直接管理裸云 VM,但 OpenAI 的大多数实验都利用了 Kubernetes 的优势,包括可移植性。“由于 Kubernetes 提供了统一的 API,我们可以非常轻松地在集群之间移动我们的研究实验,”伯纳说。内部部署集群通常“用于需要大量 GPU 的工作负载,例如训练 ImageNet 模型。任何 CPU 密集型工作负载都在云端运行。但我们也有许多团队在 Azure 和我们自己的数据中心中运行他们的实验,具体取决于哪个集群有空闲容量,这非常有价值。”

伯纳已将 Kubernetes 集群提供给所有 OpenAI 团队使用,如果合适。“我与我们的游戏团队合作了很多,他们目前正在研究经典主机游戏,”他说。“他们一直在我们的开发服务器上运行大量实验,他们一直在尝试使用 Google Cloud,管理自己的 VM。我们让他们尝试了我们第一个内部部署 Kubernetes 集群,并且非常成功。他们现在已经完全迁移到它,这使他们能够将实验规模扩大 10 倍,并且无需投入大量工程时间来弄清楚如何管理更多机器。现在许多人正在遵循相同的路径。”

OpenAI 的两个团队开发的框架和工具简化了这一过程,这些框架和工具用于处理与 Kubernetes 的交互。“您只需要编写一些 Python 代码,填写一些配置,其中包含您需要的机器数量和类型,然后它将准备所有这些规格并将其发送到 Kube 集群,以便在其中启动,”伯纳说。“它还提供了一些额外的监控和更好的工具,这些工具专门针对这些机器学习项目而设计。”

Kubernetes 对 OpenAI 的影响是令人印象深刻的。有了 Kubernetes、框架和工具(包括自动伸缩器)到位,启动实验所花费的时间要少得多。“我们的一位研究人员正在研究一种新的分布式训练系统,他能够在两到三天内完成实验,”伯纳说。“在一到两周内,他将规模扩展到数百个 GPU。以前,这可能需要几个月的时间。”

此外,他们现在能够在适当的情况下使用内部部署 Kubernetes 集群,这“降低了成本,并为我们提供了在云中不一定能够获得的硬件,”他说。“只要利用率高,我们数据中心的成本就会低得多。在一定程度上,您还可以根据您的需要定制硬件。”

OpenAI 还从 CNCF 云原生生态系统中的其他技术中受益。gRPC 被其许多系统用于不同服务之间的通信,并且 Prometheus 作为“如果出现问题,则作为调试工具,”伯纳说。“实际上,我们最近的 Kubernetes 集群没有出现任何真正的问题,因此我认为没有人查看过我们的 Prometheus 监控。如果出现问题,它将在那儿。”

伯纳继续关注的一件事是 Kubernetes 的扩展能力,这对于深度学习实验至关重要。OpenAI 已经能够将 Azure 上的一个 Kubernetes 集群扩展到超过 2,500 个节点。“我认为我们可能会很快达到 Kubernetes 已测试过的 5,000 台机器,”伯纳说,并补充道,“如果您对这些方面的工作感兴趣,我们肯定正在 招聘!”