HAI Platform:开源的 AI 训练平台

High-Flyer    May 11, 2023

当下 AI 大模型如火如荼的发展,许多厂商开始构建起基于 GPU 的大规模深度学习训练集群。随着算力需求的扩大,一个能对 GPU 资源进行统一高效利用的 AI 平台,越来越成为各 AI 团队降本提效的重要武器。

构建一个能管理大规模 GPU 集群资源的 AI 平台,主要会遇到如下几个痛点问题:

  • 资源调度:算力规模不断扩大,而训练任务的计算需求又多种多样,如何处理任务和算力的关系以最大化集群资源使用?
  • 使用效率:集群使用有峰谷差异,同时又要应对突发任务的需求,如何兼顾时效性和集群整体效率?
  • 迭代适配:集群会有升级迭代,在调整算力规模、类型、使用规则等场景下,如何让平台快速适配,尽可能降低切换成本?

针对上述问题,幻方 AI 在自建的萤火集群上进行多年的研发与测试,积累了一套高效管理 GPU 集群资源的 AI 训练平台方案,名叫 HAI Platform。其以任务级分时调度共享 AI 算力的理念将集群零散资源进行整合再分配,成功支持在 1500+ 计算节点上稳定运行深度学习训练和其他多类型任务,日常算力占用率 95% 以上,日常 GPU 使用率 75% 以上,计算和存储节点间的数据吞吐 7TB/s 以上,服务了上百个 AI 团队。

01

现在,幻方 AI 将正式开源 HAI Platform,将这套久经考验的 AI 训练平台服务于更广阔的 AI 社区。HAI Platform 可以被部署在私有集群或公有云的 GPU 资源中,帮助您高效利用 GPU 集群资源,提升团队整体研发效率。我们希望让更多“想象力”和“创造力”生长,期待与各方科学家及开发者们一同共建 AI 时代。

产品地址https://github.com/HFAiLab/hai-platform

产品文档https://hfailab.github.io/hai-platform/

安装与设置

使用 HAI Platform,首先需要如下基础设施:

  • 一个部署 K8S 的算力集群,包括管理节点、计算节点、服务节点(用于服务部署、数据库、监控等);
  • 一个或多个存储集群,让所有计算节点可访问的文件系统,存储信息包括代码,数据,日志,配置文件等;
  • 算力集群与存储集群之间所有节点通过高速网络互联,建议使用 RDMA 。

接下来,您可以按照开源仓库中 HAI Platform 搭建指南进行安装和部署。

任务调度

任务是 HAI Platform 使用的基本单位,而非用户。所有用户提交的任务都由 HAI Platform 统一管理和调度。

02

用户独占 vs 分时调度

幻方 AI 提出分时调度理念对集群资源进行管理。用户提交任务,如运行 python / bash 代码,启动开发容器等,由平台根据当前资源需求、集群忙闲程度等进行任务的中断和加载。任务代码需要遵循平台编码规则以确保可以断点续跑,具体流程如下:

  • 接受集群的打断信号;
  • 保存 checkpoint(模型参数,优化器参数等);
  • 通知集群打断;
  • 从 checkpoint 恢复,继续运行。

注意! 部署 HAI Platform 的集群不会将 GPU 资源池化,而是以计算节点为基本单位,根据资源类型、网络区域等条件进行分类标记。HAI Platform 鼓励用户一次性用满多张 GPU,进行并行训练。 用户提交任务时需选定节点数量 n,则该任务可获得 n 的整数倍个 GPU,比如在8卡计算节点上提交使用4个节点的任务,则该任务会获得32张 GPU 进行并行训练。

更详细的内容可以阅读《分时调度》

用户管理

HAI Platform 提供以配额的方式记录集群的各类资源,通过优先级管理用户的使用权限。例如:某用户在 NORMAL 优先级上拥有10个计算节点的配额,其在 HAI Platform 上提交若干个任务,则最多同时以 NORMAL 优先级调度10个计算节点运行。算力资源优先满足高优先级用户的训练需求,同优先级内则交替使用集群算力资源。

03

任务优先级列表

同时,每个用户都可以归属于某一个用户组。计算资源和优先级配额是按用户为单位进行分配的,而同组的用户可以共享自定义环境、私有数据存储。

此外,HAI Platform 还提供了管理员用户身份,其有权限执行用户创建、停用、归档等操作,调整各类资源和优先级配额,管理后台开发容器等。

环境管理

部署 HAI Platform 的集群会包含基础环境和用户自定义环境两种环境管理模式:

  • 基础环境由平台统一管理,包含大部分主流依赖包,任务运行时默认加载。通常根据系统、GPU 驱动及 CUDA 版本等要求统一管理若干个基础环境。基础环境供平台所有用户共享;
  • 自定义环境由用户自行安装依赖,可以基于基础环境进行扩展。自定义环境可以在同组内共享。
import haienv
haienv.set_env('env_name')

两种环境都可以通过 haienv 工具进行管理,适用于各种任务场景。通过基础环境的构建,我们希望尽可能降低 AI 研发前期的环境构建成本。

更详细的内容可以阅读《环境配置》

可视化交互

为了方便用户与 GPU 集群的交互,HAI Platform 提供了用户界面,HAI Platform Studio ,其主要功能包括但不限于:

  • 管理和启动基于 JupyterLab 的开发容器,配合 Jupyter 插件,可以进行代码调试或任务提交;
  • 管理提交的任务,支持任务的实时监控、日志分析和任务状态管理;
  • 集成了讨论区、任务性能监控、任务调度管理等功能。

另外,HAI Platform Studio 子应用 /monitor 集成了一定的监控和管理能力,包括:

  • 用户及任务管理:创建用户;修改用户分组、Quota;管理用户开发容器和任务;
  • 节点管理:查看分组节点以及各个节点的详细信息。

04

HAI Platform Studio 概览界面

更多内容可以阅读开源仓库:https://github.com/HFAiLab/hai-platform-studio。

数据管理

部署 HAI Platform 的集群会将训练数据存储在文件系统中。训练中的任务会实时从文件系统中读取数据,流转到计算节点。这里,优良的文件系统将是提高 GPU 利用率,进而提升集群整体效率的决定性因素之一。

为了最大化 GPU 利用率,降低数据读取的成本,幻方 AI 自研了高速文件系统 3FS,其专门针对深度学习训练中样本读取的场景进行优化,能支持计算和存储节点间 7TB/s 以上的数据吞吐。3FS 需要用户将原始数据中较多的小文件聚合成大文件进行存储,推荐使用 FFRecord 格式规范来聚合文件。


本文作者: High-Flyer


您可以转载、不违背作品原意地摘录及引用本技术博客的内容,但必须遵守以下条款: 署名 — 您应当署名原作者,但不得以任何方式暗示幻方为您背书,亦不会对幻方的权利造成任何负面影响。 非商业性使用 — 您不得将本技术博客内容用于商业目的。 禁止演绎 — 如果基于该内容改编、转换、或者再创作,您不得公开或分发被修改内容,该内容仅可供个人使用。