近日,百度智能云发布云原生AI 2.0方案,方案将百度自身超大模型训练(文心等)经验,资源管理和资源利用率优化经验,多场景工程实践经验充分吸收融合,用标准化的能力帮助企业应对缺乏大模型训练经验而导致的资源利用率低等问题,加速AI应用落地。该方案在资源弹性、跨节点架构感知、训练推理效率等方面做了重点升级。
助力超大模型预训练落地
针对大模型复杂网络、稠密参数的特点,云原生2.0方案支持了PaddlePaddle和Pytorch+DeepSpeed两种框架:
此外,业界还在GPT-3基础上提出混合专家模型(Mixture Of Expert, MoE),使得计算量不增加的情况下,参数量可以扩大到万亿,我们将上述相关模式进行仔细分析后得出如下结论(以1000亿参数模型为例):
很多企业因为缺乏上文提及的大规模集群实践经验而无法顺利完成超大模型的预训练,百度拥有8年多的万卡规模EFlops算力最佳实践的能力和积累,等效算力高达50%以上,数千卡并发训练线性加速比90%,整体大模型预训练的集群利用率高达95%。在2022年6月30日最新发布的 MLPerf Training v2.0 榜单里,百度使用飞桨( PaddlePaddle )框架和百度智能云百舸计算平台提交了 BERT Large 模型的 GPU 性能结果,在同等机器条件下性能排名世界第一,向全世界展现了百度智能云的性能领先性。借助这些经验积累,百度智能云的云原生AI2.0方案针对超大模型的预训练提供了以下特色能力:
实际上,不仅仅是超大模型预训练实际场景沉淀出的特色能力,云原生AI2.0还对资源弹性、训练推理效率、易用性等通用能力做了全面升级。
提升资源弹性
GPU、NPU作为主要的AI算力资源,品牌型号多样且价格昂贵,如何让这些算力资源充分发挥作用、提高资源利用效率,是资源管理层面的问题。以往,借助以容器为代表的云原生技术通过一定的技术升级和改造之后就可以将GPU等AI算力作资源虚拟化以及资源池化,可以将AI应用和GPU服务器硬件解耦,实现虚拟GPU 资源的动态伸缩和灵活调度。百度智能云对以上关键技术升级,实现了如下能力:
1、虚拟化:提供了用户态和内核态两种实现,用户态能够实现进程融合、显存交换、编解码实例等,性能更好;内核态隔离性强,可以实现算力隔离以及显存隔离,用户可以根据自己的需求灵活选择。用户态方案:通过拦截Driver API进行资源隔离或限制操作,实现显存隔离、算力隔离基础隔离功能及显存超发、高优抢占等高级功能。
用户应用还是通过原来的设备接口(/dev/nvidiactl ,/dev/nvidia0 )来跟GPU 设备交互,拦截驱动通过拦截接口用将户应用跟GPU的通信进行解析并拦截。
下图分别使用内核态容器与标准的容器跑任务测试( 测试环境与模型:resnet50,batchsize=32,在v100-32GB ),可以看出内核态GPU容器几乎没有性能损失。
同时,从下图的数据结果可以看到用户态方案性能比内核性能高8%-10%;而内核方案隔离性更强,几乎没有性能损失。
单位:平均吞吐(Img/sec)
2、调度层面:支持共享混部,拓扑感知以及亲和调度。
3、资源层面:池化架构,资源被统一动态管理,避免资源浪费,实时调度减少资源碎片。
4、国产化层面:支持昆仑芯等国产芯的虚拟化和调度,
实践中,上述能力给业务带来了真金白银的实际收益。比如,百度商业广告模型业务从之前单实例独占GPU卡的使用方式转变为在离线业务混部的方式,优化后的商业在线业务GPU 共享部署的占比90%+,整体GPU利用率从13%提升到50%,在线业务 Latency P97 性能不变 。
提升训练、推理效率
为了更好地加速训练和推理任务,在训练场景下如何实现分布式训练的加速以及数据的加速?AI镜像会有复杂的CUDA依赖,甚至会有一些驱动,镜像本身比较大,严重影响启动的速度,如何针对性进行优化?为此,云原生AI2.0方案推出了AI 加速套件 AI Accelerate Kit(简称 AIAK,本文将使用简称),该套件基于百度智能云IaaS 资源推出的AI 加速能力,用来加速 Pytorch、TensorFlow等深度学习框架的AI 应用,能极大提升分布式训练和推理的性能。
分布式训练加速:AIAK-Training 是基于 Horovod 深度定制优化的分布式训练框架(Horovod是TensorFlow、Pytorch等的分布式深度学习训练框架),在保留 Horovod 已有功能特性的基础上,增加了新的通信优化特性,完全兼容 Horovod 原有API,经典模型的训练效率提升50%以上。
推理加速:AIAK-Inference通过图优化、算子融合和自研高性能算子库来提升推理效率,ResNet、Bert等经典模型时延降低40%~63%。
IO加速:通过并行文件系统和分布式缓存技术,与对象存储数据双向流动,实现数据集的管理和读写加速。PFS提供完全托管、简单可扩展的并行文件存储服务,针对高性能计算场景提供亚毫秒级的访问能力、高IOPS及高吞吐的数据读写请求能力;RapidFS是由百度智能云推出的高可靠、高可用、弹性的数据加速服务,以对象存储作为数据湖存储底座,为计算应用提供统一的数据入口、命名空间及访问协议,加速海量数据分析、机器学习、AI训练等业务访问存储的性能,方便用户在不同的存储系统管理和流转数据。
在 4v100-32g 机型 ImageNet 1K 训练中,PFS + BOS 和 RapidFS + BOS 效果和本地 SSD 持平,比直接基于 BOS 训练提升 5 倍以上。
镜像加速:通过容器镜像按需加载技术,缩短镜像下载时间,实现容器冷启动加速。百度智能云容器镜像服务CCR提供的镜像加速功能,可在用户推送镜像时自动生成符合OCI镜像规范的加速格式的镜像。加速版本的镜像为镜像层中的每个文件和数据块建立索引,配合镜像仓库的HTTP Range Request的特性,使单机侧支持按需下载部分镜像层的文件。CCE 提供的镜像加速组件可一键为kubernetes集群开启/关闭镜像加速能力,并在容器调度前自动为容器“换装”加速镜像。
在基于内容生成视频的业务场景中,镜像按需加载将容器冷启动速度提升6-20倍。
加速AI作业开发,降低人力成本
作为国内人工智能的「头雁」,百度正通过自身的经验和技术输出来不断降低 AI 技术开发和应用的门槛。百度智能云将持续以新技术为立足点,以用户需求为落脚点,加快云原生AI系列方案的迭代开发,助力企业AI应用落地,实现降本增效。