我们的工作量具有突发性和不可预测性:一系列研究可能快速地从单台计算机实验扩展到1000台。例如,几周内,一个实验从一个交互式阶段发展到要在单一的Titan X上运行,再到需要60 Titan X,最后发展到需要在将近1600个 AWS GPU上运行。因而,我们的云基础设施需要动态配置Kubernetes结点。 在自动扩展组内能够很容易地运行Kubernetes结点,但是,要合理地控制这些自动扩展组的规模将变得越来越难。在批次作业结束后,集群将能够准确地了解到自己所需要的资源,能够直接分配这些资源。(与之形成鲜明对比的是,AWS的扩展策略能够逐个加速每一个新结点,直到仍有剩余资源,这个扩展过程将持续多个循环。)因而,在集群终止这些结点前,需要洩流这些结点,以避免丢失正在运行的作业。 仅利用原始的EC2进行大批量作业是非常诱人的,的确,这也是我们研究工作的起点。但是,Kubernetes生态系统带来的价值更大:低阻力的工具,日志,监测,具备脱离正在运行的实例管理物理结点的能力等类似优点。合理地扩展Kubernetes要比基于原始EC2重新构建该生态系统更为简单。 我们将要发行Kubernetes-ec2-autoscaler,一种用于Kubernetes的批量优化扩展管理器。这种管理器能够在Kubernetes的一种常规Pod上运行,仅要求你的工作结点在自动扩展组内。
Kubernetes集群的启动配置 自动扩展器通过搜集Kubernetes主结点的状态进行工作,主节点的状态包括需要用于计算集群资源问询和能力的一切资源。在可用资源过量的条件下,自动扩展器洩流相关的结点,最终终止这些结点 。如果需要更多的资源,自动扩展器将计算得出应当创建什么类型的服务器,并适当地扩大自动扩展组的规模(或简单地释放被洩流的结点,这将缩减新结点加速花费的时间)。 Kubernetes-ec2-autoscaler能够同时兼顾多个自动扩展组,享有CPU之外的资源(内存和GPU),并且能够精细地约束你所运行的作业,如AWS区域和实例规模。此外,由于即便是AWS也不具备无限的内存,突发性工作量将导致自动扩展组超时运行,并产生误差。在这种情况下,Kubernetes-ec2-autoscaler能够检测误差,并将多余的作业分配到次级AWS区域。 我们用于深度学习的基础设施旨在最大限度地提高深度学习研究者的工作效率,使他们能够专心致志地投入到科研中。我们正在构建工具进一步改进我们的基础设施,完善工作流程,并将在未来几周和几个月内分享这些工具。欢迎大家共同努力加快深度学习研究的发展! via Vicki Cheung et al (责任编辑:本港台直播) |