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

挑战

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

解决方案

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

影响

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

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

OpenAI 的使命是确保强大的人工智能系统是安全的,它非常关心开源——既从中受益,又向其中贡献安全技术。“我们所做的研究,我们希望尽可能广泛地传播它,以便每个人都能受益,”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 补充道,“如果你对研究这些东西感兴趣,我们绝对在招聘!”