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

挑战

作为一个人工智能研究实验室,OpenAI 需要用于深度学习的基础设施,以便能够在云端或自己的数据中心运行实验,并且易于扩展。可移植性、速度和成本是主要驱动因素。

解决方案

OpenAI 从 2016 年开始在 AWS 上运行 Kubernetes,并在 2017 年初迁移到 Azure。OpenAI 在 Azure 和自己的数据中心运行机器人和游戏等领域的關鍵实验,具体取决于哪个集群有空闲容量。 “我们主要使用 Kubernetes 作为批处理调度系统,并依靠我们的 自动缩放器 来动态扩展和缩减我们的集群,”基础设施负责人 Christopher Berner 说。 “这让我们能够显著降低闲置节点的成本,同时仍然提供低延迟和快速迭代。”

影响

该公司受益于更高的可移植性:“由于 Kubernetes 提供了一致的 API,我们可以非常轻松地在集群之间移动我们的研究实验,”Berner 说。 他补充说,能够在适当的时候使用自己的数据中心“降低了成本,并让我们能够访问我们在云中不一定能访问的硬件”。 “只要利用率高,那里的成本就会低得多。” 启动实验所需的时间也大大缩短:“我们的一位研究人员正在研究一种新的分布式训练系统,他已经能够在两三天内完成实验。 一两周内,他就将其扩展到数百个 GPU。 以前,这很容易需要几个月的工时。”

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

OpenAI 的使命是确保强大的 AI 系统安全,因此非常重视开源——既从中受益,也为其贡献安全技术。 “我们所做的研究,我们希望尽可能广泛地传播,以便每个人都能受益,”OpenAI 的基础设施负责人 Christopher Berner 说。 该实验室的理念及其特殊需求使其能够为其深度学习基础设施采用开源的云原生策略。

OpenAI 从 2016 年开始在 AWS 上运行 Kubernetes,一年后,将 Kubernetes 集群迁移到了 Azure。 “我们使用 Kubernetes 的方式可能与很多人不同,”Berner 说。 “我们将其用于批处理调度和作为集群的工作负载管理器。 这是一种协调大量相互连接的容器的方式。 我们依靠我们的 自动缩放器 来动态扩展和缩减我们的集群。 这让我们能够显著降低闲置节点的成本,同时仍然提供低延迟和快速迭代。”

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

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

Berner 已将 Kubernetes 集群提供给所有 OpenAI 团队使用,只要它适合。 “我与我们的游戏团队合作了很多,该团队目前正在对经典主机游戏进行研究,”他说。 “他们一直在我们的开发服务器上运行大量实验,并且一直在尝试使用 Google 云,管理他们自己的虚拟机。 我们让他们试用我们的第一个本地 Kubernetes 集群,结果非常成功。 他们现在已经完全迁移到它,这使他们能够将实验规模扩大 10 倍,并且无需投入大量的工程时间来弄清楚如何管理更多机器。 现在很多人都在效仿这种做法。”

OpenAI 的两个团队开发的框架和工具简化了这条路径,这些框架和工具用于处理与 Kubernetes 的交互。 “你只需编写一些 Python 代码,填写一些配置,说明你需要多少台机器以及哪些类型,然后它就会准备好所有这些规范并将其发送到 Kube 集群,以便在那里启动,”Berner 说。 “它还提供了一些额外的监控和更好的工具,专为这些机器学习项目而设计。”

Kubernetes 对 OpenAI 产生的影响令人印象深刻。 有了 Kubernetes、框架和工具(包括自动缩放器),启动实验所需的时间大大缩短。 “我们的一位研究人员正在研究一种新的分布式训练系统,他已经能够在两三天内完成实验,”Berner 说。 “一两周内,他就将其扩展到数百个 GPU。 以前,这很容易需要几个月的工时。”

此外,他现在能够在适当的时候灵活地使用他们的本地 Kubernetes 集群“降低了成本,并让我们能够访问我们在云中不一定能访问的硬件,”他说。 “只要利用率高,我们数据中心的成本就会低得多。 在某种程度上,你还可以根据自己的需要定制硬件。”

OpenAI 还受益于 CNCF 云原生生态系统中的其他技术。 gRPC 被其许多系统用于不同服务之间的通信,而 Prometheus 则“作为出现问题时的调试工具,”Berner 说。 “实际上,我们最近在 Kubernetes 集群中没有遇到任何真正的问题,所以我认为最近没有人看过我们的 Prometheus 监控。 如果出现故障,它会在那里。”

Berner 继续关注的一件事是 Kubernetes 的扩展能力,这对深度学习实验至关重要。 OpenAI 已经能够将其在 Azure 上的一个 Kubernetes 集群扩展到 2,500 多个节点。 “我认为我们可能很快就会达到 Kubernetes 已经测试过的 5,000 台机器的数量,”Berner 说,并补充道,“如果你有兴趣从事这些工作,我们绝对在 招聘!”