如果把大模型训练比作 F1 比赛,长凡所在的团队就是造车的人,也是在比赛现场给赛车换轮子的人。1% 的训练提速,或者几秒之差的故障恢复时间,累积起来,都能影响到几百万的成本。长凡说:“大模型起来的时候,我们非常兴奋,因为 DLRover 天生就是为大模型训练的场景设计的。”
目前业界普遍认为数据、算力、算法是大模型训练的三大核心要素,AI 工程的价值似乎还没有得到足够的重视,我们和蚂蚁 DLRover 开源负责人长凡深入聊了聊,聊到了他为何在大模型出现前就选择了 AI Infra 的赛道,他参与开源的经历,也聊了 DLRover 诞生背后的故事。
AI Infra+开源, 一个通信毕业生的非主流选择
毕业于盛产程序员的北京邮电大学,虽然本科和研究生专业都是通信相关的,但长凡还是机缘巧合迈入了 AI 的大门,如果你也走在职业发展的路口,或许长凡的故事也能给你带来启发。
Q:首先请介绍下自己,为什么会选择在蚂蚁做 AI Infra 方面的工作?
长凡: 我本科在北交大的理科实验班,研究生在北邮做 5G 移动通信的研究。大四的时候,我去了中国移动研究院实习,做机器学习在医疗领域的应用探索,算是入门了大数据和机器学习。我自己对概率统计和编程也比较感兴趣,发现自己所学的知识可以解决真实问题了。后来在研究生期间,课余时间会打打 Kaggle 比赛,边实践边学习。
毕业之前我来蚂蚁做暑期实习,做 ML Infra 相关的项目。相比打 Kaggle 用算法解决具体业务问题,Infra 的工作能帮助更多的同学来用 ML 解决更多的问题。再加上蚂蚁在大力发展 AI,我所在的蚂蚁人工智能部有很多 AI 方向的资深技术大拿,所以我毕业后选择了留在蚂蚁。
ChatGPT 出来后,大模型一下子火了,大模型相比之前的 AI 训练对 Infra 的需求要高得多,对我们做 Infra 的是一个非常大的机遇。大模型训练和推理的成本非常高,Infra 在提升效率和降低成本上大有可为。
Q:是什么契机让你开始参与开源的?参与开源对你的职业道路产生了哪些影响?
长凡: 在蚂蚁工作一年后,我加入到 ElasticDL 团队,跟着王益老师(原百度 PaddlePaddle 技术负责人)一起做开源项目。在开发 ElasticDL 过程中,王益老师教会了我很多开源思想、开源工作方式和开发习惯。比如新功能需要先写设计文档,然后拆解成 issue,最后是开发测试;PR 要尽量小,小 PR 可以降低 Review 成本;代码质量需要有工具来保障等等。
这段经历对我现在做 DLRover 帮助很大。在 DLRover 项目刚启动时,我就在代码仓库了设置了很多代码质量相关的检测,比如 DLRover 的代码 CI 覆盖率约 80%。后来,张科老师接手带领 ElasticDL,一直给我们强调开放合作。这也使得我在主导 DLRover 的开源过程中对架构设计更加开放。这里说的开放不仅仅指使开源的开放代码,更多的是指我们的架构和接口设计的开放,以便让更多的人能进来扩展相关功能满足各自的业务需求。比如,我们的故障机检测功能当前支持 NVIDIA GPU 和 Ascend NPU,如果用户在其他的芯片上训练,可以自定义检测脚本。
Q:随着大模型的兴起,许多技术人也感受到了前所未有的挑战。作为 AI Infra 领域的架构师 ,你如何评估大型模型或 AI 对传统技术架构师的影响?针对当前的技术趋势,你对于这些架构师有哪些建议?
长凡: 大模型或者 AI 将会改变我们的产品形态和业务模式,而且很多创新可能都是当前看不到或者很难预料的。作为技术架构师,我们的目标其实很简单,利用技术帮助业务发展。我觉得最好的方式就是从业务中来,到业务中去。比如我们做 AI Infra 的,经常和训练算法同学一起盯着训练作业,review 训练代码并分析训练性能,这样从中发现很多训练对 Infra 的实际需求。然后将这些需求抽象出来,利用自己的技术经验来设计项目解决业务问题。
随着大模型技术的发展,不管是对计算、存储等硬件领域,还是对训练框架、分布式系统等软件领域,对于 AI Infra 的架构师都有非常大的需求。如果想从事 AI Infra 领域,可以结合自前的经验深入到 AI 应用中去,一定能做出成果。
DLRover:发展靠机遇,持续发展靠技术判断力
时间拉回到 2022 年 9 月,DLRover 刚刚开源,那时深度学习的训练基本都是在单机多卡上完成的,作为一个分布式训练的智能调度系统,DLRover 的功能似乎有些过于强大,就好像开了一辆百米加速的超跑来上下班。
DLRover 的容错和弹性扩缩容在单机多卡的训练上几乎没有用武之地,团队也很迷茫是否要针对 GPU 训练做优化,所以当 2022 年底,ChatGPT 在全球引起广泛关注的的时候,大规模分布式训练是大模型训练的刚需,长凡一下子就兴奋了。
Q:DLRover是如何诞生的?发展历程中有哪些关键的转折点或者故事?
长凡: DLRover 脱胎于蚂蚁内部的一个项目,主要利用容错和弹性扩缩容来提升搜推广训练的速度和资源利用率。2022 年 7 月,该功能上线后,集群资源利用率提升了快一倍,训练时间也缩短了约 20%。基于自动扩缩容,我们就想让用户只写模型代码,系统能自动地将模型在集群上高效、稳定地和经济地训练出来,从而大幅降低分布式训练的门槛和运维成本。基于这个愿景,我们在 2023 年 3 月开源了项目,并取名 DLRover,Rover 代表火星车,我们把 DL 训练作为火星车的乘客,DLRover 这个火星车的目的就是快速、稳定、节能地将 DL 训练这位乘客送到目的地,即训练出模型。
DLRover 刚开源的时候,发布了 CPU 集群上 TensorFlow 异步分布式训练的自动资源配置与自动扩缩容,该功能可以将算法工程师从作业资源调优上解脱出来。但是发布后社区反响一般,主要原因是搜推广的训练已经比较成熟了,业界也主要在关注 GPU 训练。为此,我们内部也在讨论要不要在 GPU 训练上做点东西。但那时 GPU 训练主要还是 CV 和 NLP 领域,以单机多卡为主,DLRover 的容错和弹性扩缩容好像在单机多卡 GPU 训练上没有用武之地。
正在我们迷茫时,2023 年初大模型火了。因为 GPU 本身的故障率较高,大规模训练经常因为故障而中断,严重影响了大模型训练的进度和集群的利用率。所以 DLRover 在 2023 年的重点方向就是降低故障对训练的影响。后来,DLRover 针对大规模分布式训练的场景,发布了故障自愈功能,该功能吸引了很多大模型训练的同学,也吸引了很多国产 AI 芯片的公司的关注。
Q:DLRover 为什么选择开源?
长凡: DLRover 面向的用户主要使用的是开源技术,比如 TensorFlow 和 PyTorch 等训练框架,Kubernetes 和 Ray 等分布式集群调度系统。开源可以让我们接触到领域里更多的同行,扩宽我们的视野。当前很多公司都在做 AI 训练,大家面临的场景和问题可能都不一样。通过开源交流,我们可以对 AI 训练所面临的问题与挑战有更全面的了解,社区提出来的问题,未来我们也可能会遇到。我们希望 DLRover 不仅能满足蚂蚁内部大模型训练的需求,也能满足整个社区的普遍需求。
Q:如果内部需求和社区需求不一致怎么办?
长凡: 这其实是开源项目经常会遇到的问题,我觉得首先要有技术判断力,判断这个需求是不是一个普遍需求,公司未来是不是也可能用得到。比如,以前我们认为跑大模型训练大多都用英伟达的 GPU 卡,但现在社区开始提出希望我们适配国产芯片的需求,很多国产芯片的公司也来找我们交流,也就是很多人已经开始在国产芯片上去跑训练了,这就是对我认知的一个刷新。如果我们未来买不到 GPU 了,或者国产芯片能达到更好的效果了,我们已经提前做了国产芯片的支持,那这个需求就可以直接上了。
现在很多流行的开源项目,以前 Star 数可能是线性增长,在大模型出来之后是指数增长。就是因为他们两年前就觉得这个事情是一个正确的方向,坚持在做,然后机遇一来,他们就起来了。
Q:开源社区在 DLRover 的发展过程中扮演着怎样的角色?有没有一些特别令你印象深刻的社区贡献者或者故事?
长凡: 开源社区给 DLRover 贡献了很多非常好的思路和有价值的需求。比如 DLRover 的 Flash Checkpoint 功能发布后,社区同学的试用帮我们发现了一些没有测试的 corner case,这帮助我们提高了 DLRover 的产品质量。还有,我们最近吸引了很多国产 AI 芯片公司的关注,社区也提出将我们的训练故障自愈扩展到国产芯片的意愿,这些都是来自一线从业同学的真实声音,是我们发展 DLRover 的宝贵源泉和动力。
未来展望:帮助用户高效、稳定地训练模型
提到对项目未来的规划时,长凡说:“我们希望 DLRover 能帮助用户解决问题,高效、稳定地训练模型。”也希望有更多对 AI 工程感兴趣的开发者能加入到 DLRover 项目,一起推进 AI Infra 领域的发展。
Q:目前还有哪些项目也在做类似的事情吗?和 DLRover 相比有什么不同?
长凡: 分布式训练的弹性容错一直是开源社区在探索的,比如 TorchElastic 和 Elastic Horovod 解决了训练框架的弹性与容错。大模型出来之前,大家训练 NLP 或者 CV 模型主要还是单机或者小规模的集群。小规模训练因为使用的节点少,故障率较低,对弹性容错需求不大。大模型训练一下将训练规模扩大到几百上千卡,故障率就高了很多。同时实际训练中,训练容错和故障自愈需要集群调度、节点管理和训练框架一起协作。所以 DLRover 是将现有的弹性训练框架与节点管理、集群调度相结合来实现快速的训练故障自愈。
训练自愈这块其实很多云厂商也在做,但是都是和自己的云平台耦合的。最近几个月也有好几篇定会文章介绍相关工作。DLRover 是和云平台解耦的,用户只要是在 kubernetes 集群上做分布式训练,就可以使用 DLRover 的训练故障自愈功能。除此之外,由于我们之前在这块有过探索和积累,所以训练稳定性这块的功能开源得比较快。
Q:在 AI Infra 领域,海外有哪些做得比较好的开源项目,对于我们有哪些借鉴意义?
长凡: Flash Attention 和 vllm,这两个框架大幅提升了大模型训练和推理的性能,更重要的是,用户只需要安装 Python 包即可使用。他们的特点就是利用创新解决了一个很难且很有价值的问题,但是又非常简单易用,这对我们有很大启发。比如,我们在设计 DLRover 训练自愈的 Flash Checkpoint 的 API 时,也是尽量让 API 简单易用,用户尽量少改代码就能使用 DLRover。
Q:对于 DLRover 未来的规划,你有什么愿景或目标?
长凡: 我们希望 DLRover 在大模型时代能让更多的用户高效地训练大模型,降低 AI 训练门槛。当前 AI 训练有2个趋势,一方面大家根据 Scaling law 来使用更大规模的集群,来训练越来越大的模型;另一方面很多工作在探索如何在小规模或者单机上微调模型。
不管是大规模预训练还是微调,高效、稳定地训练模型都有困难,需要根据经验反复调试。我们希望 DLRover 能帮助用户解决这方面的问题,也希望能支持到国内的 AI 发展。DLRover 未来在功能和接口设计上会做得更加开放,让用户能在国产芯片上使用 DLRover 高效、稳定地训练模型。当然,我们也非常欢迎更多的同学加入到 DLRover 社区,一起推进 AI Infra 的前进。
Q:最后,给我们预告下你在 GDC 上会分享哪些内容吧
长凡: GDC 上我将分享 DLRover 如何通过训练故障自愈,来降低大规模 AI 训练的成本,帮训练省钱的。以及大家如何来使用 DLRover 来提升训练的效率。
看完长凡的经历和 DLRover 的故事,你是不是对 AI Infra 有了更多兴趣呢?3 月 23 日下午,长凡将在 2024 全球开发者先锋大会(GDC)分享《DLRover 训练故障自愈:大幅提升大规模 AI 训练的算力效率》,欢迎到现场和讲师近距离交流。
关于 DLRover
DLRover(Distributed Deep Learning System)是蚂蚁集团 AI Infra 团队维护的开源社区,是基于云原生技术打造的智能分布式深度学习系统。DLRover 使得开发人员能够专注于模型架构的设计,而无需处理任何工程方面的细节,例如硬件加速和分布式运行等;开发深度学习训练的相关算法,让训练更高效、智能,例如优化器。目前,DLRover 支持使用 K8s、Ray 进行自动化操作和维护深度学习训练任务。更多 AI Infra 技术请关注 DLRover 项目。
加入 DLRover 钉钉技术交流群:31525020959
DLRover Star 一下:https://github.com/intelligent-machine-learning/dlrover
在 GitHub 关注 DLRover:https://github.com/intelligent-machine-learning/dlrover
共同学习,写下你的评论
评论加载中...
作者其他优质文章