2023-11-08 11:35:12 11阅读
在OpenAI,算法研发的工作模式常常是用小数据集先做一个小实验(此时通常需要ssh到一台机器上,跑一个1小时的任务)。如果实验有效,可能会扩容到上千节点上进行大规模训练。
2016年,OpenAI有一个自建的TitanX物理集群,AWS也向OpenAI捐赠了大量的GPU弹性资源。这些节点被划分为2部分,一部分用于临时实验,支持ssh登录;另一部分通过Kubernetes管理起来,集群中包含3个可用区的节点。
这个阶段OpenAI关注的主要问题是怎么用好AWS提供的免费弹性资源。OpenAI开发了kubernetes-ec2-autoscaler来自动化的扩容节点,也是控制器模式的方案。通过reconcile对齐当前状态和期望状态的差距,如果节点多了就drain+termintate,如果少了就create/uncordon;如果一个可用区资源不够了就换个可用区。k8s原生的cluster autoscaler在1.8版本才正式发布(201709)。
为了方便算法团队使用,OpenAI还开发了一些傻瓜功能。比如支持将本地代码自动打包成镜像(不需要写dockerfile)、支持通过flannel网络直接访问集群中的tensorboard service。
2018年,OpenAI已经拥有多个k8s集群,最大规模的是Azure上一个2500个node的集群。这篇文章中记录了OpenAI k8s集群从500个node扩展到2500个node时遇到的问题和解决方案。这个阶段问题主要出在存储、网络和资源初始化上,解决一个问题的时候往往也会引发一些新的副作用。
2021年OpenAI集群规模达到7500个节点,在这个基础架构上诞生了GPT-3,CLIP,DALL·E大模型。
这个规模的集群已经比较罕见了,维护需要一定技巧。但由于运行的负载是大规模分布式训练任务,很多问题不用过多考虑。
在扩展到7500节点途中,主要遇到了以下几个方面问题:
未解决的问题:
维护一个超大规模算力集群需要掌握通过各种工具链发现问题解决问题的技巧,需要对存储、网络、etcd和k8s有深刻理解。OpenAI的以上经验可以通过etcd->api server->cri->csi->cni->scheduler->cluster autoscaler->observable的顺序思考理顺。
2023-11-08 11:35:12 11阅读
在OpenAI,算法研发的工作模式常常是用小数据集先做一个小实验(此时通常需要ssh到一台机器上,跑一个1小时的任务)。如果实验有效,可能会扩容到上千节点上进行大规模训练。
2016年,OpenAI有一个自建的TitanX物理集群,AWS也向OpenAI捐赠了大量的GPU弹性资源。这些节点被划分为2部分,一部分用于临时实验,支持ssh登录;另一部分通过Kubernetes管理起来,集群中包含3个可用区的节点。
这个阶段OpenAI关注的主要问题是怎么用好AWS提供的免费弹性资源。OpenAI开发了kubernetes-ec2-autoscaler来自动化的扩容节点,也是控制器模式的方案。通过reconcile对齐当前状态和期望状态的差距,如果节点多了就drain+termintate,如果少了就create/uncordon;如果一个可用区资源不够了就换个可用区。k8s原生的cluster autoscaler在1.8版本才正式发布(201709)。
为了方便算法团队使用,OpenAI还开发了一些傻瓜功能。比如支持将本地代码自动打包成镜像(不需要写dockerfile)、支持通过flannel网络直接访问集群中的tensorboard service。
2018年,OpenAI已经拥有多个k8s集群,最大规模的是Azure上一个2500个node的集群。这篇文章中记录了OpenAI k8s集群从500个node扩展到2500个node时遇到的问题和解决方案。这个阶段问题主要出在存储、网络和资源初始化上,解决一个问题的时候往往也会引发一些新的副作用。
2021年OpenAI集群规模达到7500个节点,在这个基础架构上诞生了GPT-3,CLIP,DALL·E大模型。
这个规模的集群已经比较罕见了,维护需要一定技巧。但由于运行的负载是大规模分布式训练任务,很多问题不用过多考虑。
在扩展到7500节点途中,主要遇到了以下几个方面问题:
未解决的问题:
维护一个超大规模算力集群需要掌握通过各种工具链发现问题解决问题的技巧,需要对存储、网络、etcd和k8s有深刻理解。OpenAI的以上经验可以通过etcd->api server->cri->csi->cni->scheduler->cluster autoscaler->observable的顺序思考理顺。