乐趣区

关于云原生:超大模型工程化实践打磨百度智能云发布云原生-AI-20-方案

人工智能开发畛域的倒退呈现出数据量和模型规模越来越大、模型训练速度要求越来越快的特点。然而训练和推理工作速度慢、资源利用率、利用老本低等工程化问题妨碍了人工智能利用的落地。

据 Gartner 预测,到 2023 年 70% 的 AI 利用会基于容器和 Serverless 技术开发。理论生产中,越来越多的 AI 业务比方主动驾驶、NLP 等也正在转向容器化部署。

近期 IDC 公布的《云原生 AI – 减速 AI 工程化落地》报告指出,云原生 AI 是连贯 AI 利用和 IaaS 的桥梁,是减速 AI 工程化落地的要害。

云原生 AI 不是简略的“云原生 +AI”,除了涵盖容器、K8s 等云原生的通用能力之外,面向 AI 工作负载,如何反对 GPU 等异构资源,如何晋升资源效力,如何反对超大模型的预训练等,都须要对应的配套技术和长期工程实际,能力真正满足 AI 业务落地的场景。

基于国内顶级 AI 业务锻炼出的深厚教训以及丰盛的技术积攒,百度智能云正式公布云原生 AI 2.0 计划。

01 交融大模型落地教训,云原生 AI 2.0 重磅公布

自从 2012 年深度学习在图像和语音方面产生重大突破后,人工智能便真正具备了走出实验室步入市场的能力。

千亿级甚至万亿级参数的超大规模模型的呈现,如百度公布的“文心”等,向深度学习框架的算力调度、调优算法等提出了更高的要求。

百度智能云将超大模型训练(文心等)的教训,资源管理和资源利用率优化的教训,以及多场景工程实际的教训充沛交融进云原生 AI 2.0 计划,用标准化的能力帮忙企业应答不足大模型训练教训而导致的资源利用率低等问题,减速 AI 利用落地。

此次云原生 AI 2.0 版本在资源弹性、跨节点架构感知、训练推理效率等方面做了重点降级。

02 剑指工程化问题,助力 AI 利用落地

那么,百度智能云的云原生 AI 2.0 计划解决了 AI 利用落地过程中的哪些工程化问题呢?

2.1 超大模型的预训练如何落地?

尽管大模型有诸多劣势,但具体预训练过程却很难:比方有 3000 亿条词语,须要 1750 亿的参数,这样的模型计算量大略是 314 ZFlops,其中 1 ZFlops 是 1024 EFlops,1 EFlops 又是 1024 PFlops,这是一个十分大的数量级。相干论文指出,如此的参数和样本量级,用 1024 张 A100 卡,也须要月级别能力实现训练,这对整个训练和技术架构的挑战都十分大。

模型预训练须要这么多的参数,也须要很多的计算资源,因而须要搭建一个集群来撑持整个预训练。搭建一个集群并非易事,这个过程会有很多不同的抉择,比方单机如何抉择,训练卡如何抉择,训练卡外部的互联形式如何抉择,多机之间又该如何架设网络保障它们之间能高效通信,网络规模又是怎么的。如何保障在有故障产生的状况下,模型能继续稳固的预训练,这些都是在集群建设中很要害的问题。

具体而言,大模型通常是指领有简单网络、浓密参数特点的模型,汇合通信模式能够很好的反对这类模型的训练。为了更有针对性的建设撑持大模型预训练,云原生 AI 2.0 计划反对了反对了 PaddlePaddle 和 Pytorch+DeepSpeed 两种框架:

  • 百度自研的 PaddlePaddle 框架,早在 2021 年 4 月份就推出业内独创的 4D 混合并行策略:数据并行、张量模型并行、分组参数切片并行、流水线并行。针对性能优化和显存优化,这几种策略互相组合,舍短取长,可能在训练大模型时施展各自的劣势。
  • Pytorch 原生混合并行能力欠缺,针对大模型场景混合并行场景,微软推出的 DeepSpeed 开源库,做为 Pytorch 框架在大模型训练方向上的补充。

此外,业界还在 GPT-3 根底上进一步提出混合专家模型(Mixture Of Expert, MoE),使得计算量不减少的状况下,参数量能够扩充到万亿,如 Switch-Transformer。MoE 模式最大的特点是单个样本不再激活模型的所有参数,从而能够在管制计算量绝对固定的状况下,极大水平的扩大模型参数容量。

在 MoE 模式下,能够将 Transformer 构造中的 FeedForward 局部看做一个专家,MoE 构造由多个专家独特组成,并通过路由(router)的形式将信息分发给不同的专家,最终对专家的输入后果在进行聚合,并最终产出模型推理的后果。深度学习框架会引入专家并行策略,来寄存如此微小的 Expert 参数。

咱们将上述相干模式进行仔细分析后的论断如下表(以 1000 亿参数模型为例):

很多企业因为不足上文提及的大规模集群实践经验而无奈顺利完成超大模型的预训练,百度领有 8 年多的万卡规模 EFlops 算力最佳实际的能力和积攒,等效算力高达 50% 以上,数千卡并发训练线性减速比 90%,整体大模型预训练的集群利用率高达 95%。

在 2022 年 6 月 30 日最新公布的 MLPerf Training v2.0 榜单里,百度应用飞桨(PaddlePaddle)框架和百舸异构计算平台提交了 BERT Large 模型的 GPU 性能后果,在等同机器条件下性能排名世界第一,向全世界展示了百度智能云的性能当先性。借助这些教训积攒,百度智能云的云原生 AI2.0 计划针对超大模型的预训练提供了以下特色能力:

  • 网络:全 IB 网络,盒式组网最大规模,单机转发提早 200ns,千卡通信近线性扩大。
  • 通信库:自研的异构汇合通信库 ECCL。因为业务会面临很多不同代的 GPU,不同的异构芯片,如何把所有的芯片都高效使能起来,是要解决的一个关键问题。同时,在大规模上还须要解决一些拓扑探测、拓扑感知的问题,也会放在通信库中解决。联合下面的剖析,咱们晓得混合并行模式下,不同并行模式对网络通信的需要是不同的。而集群中的硬件在机内和机间的不同档次,提供的通信能力也是不同的,通常状况下机内通信带宽最高,而机间同号卡通信效率最高(在 8 导轨优化网络拓扑下)。为了更好地使二者联合,就须要在调度及框架侧做好任务分配。而任务分配的前提是让训练任务晓得集群硬件连贯形式,也就是拓扑感知能力(如下图所示)。硬件拓扑感知须要同时感知单机硬件连贯形式与集群网络连接形式,其中波及 PCIe、网络探测等诸多细节,咱们将硬件拓扑感知的能力封装到 ECCL 通信库中,并作为集群规范的根底接口提供给下层的调度器和训练框架,从而联动配合地使能最高训练效率。
  • 调度:跨节点架构感知高性能调度,反对通过慢节点感知发现分布式训练节点的性能瓶颈。在千卡规模的弹性训练的场景下,调度联合框架,可能提供容错性能,保障大规模训练的稳定性。
  • 可观测:自研面向模型并行的多机调优 profile 工具,可能发现工作 / 数据调配不均等问题,通过优化的最终端到端吞吐可晋升 1 倍以上。

实际上,不仅仅是超大模型预训练理论场景积淀出的特色能力,云原生 AI 2.0 还对资源弹性、训练推理效率、易用性等通用能力做了全面降级。

2.2 如何保障资源的弹性?

GPU、NPU 作为次要的 AI 算力资源,品牌型号多种多样且价格昂贵 如何无效的让这些算力资源充分发挥作用、进步资源利用效率,是资源管理层面须要解决的问题。

借助以容器为代表的云原生技术可能对 CPU 进行无效的虚拟化进而晋升资源的利用率,然而容器技术不能间接被利用到 GPU 等算力上,须要做肯定的技术升级和革新。

革新之后就能够将 GPU 等 AI 算力作资源虚拟化以及资源池化,可能将 AI 利用和 GPU 服务器硬件解耦,实现虚构 GPU 资源的动静伸缩和灵便调度。百度智能云针对以上关键技术也实现了如下能力:

  • GPU 容器虚拟化:2.0 版本提供了用户态和内核态两种实现,用户态可能实现过程交融、显存替换、编解码实例等,性能更好;内核态隔离性强,能够实现算力隔离以及显存隔离,用户能够依据本人的需要灵便抉择。
  • 用户态计划:通过拦挡 Driver API 进行资源隔离或限度操作,实现显存隔、算力隔离根底隔离性能及显存超发、高优抢占等高级性能。
  • 内核态计划:内核态计划次要由拦挡接口跟拦挡驱动两局部组成。

下图中别离应用了单内核态 GPU 容器与单 GPU 容器直通跑工作测试(测试环境与模型:resnet50,batchsize=32,在 v100-32GB),能够看出内核态 GPU 容器简直没有性能损失。

别离应用用户态 GPU 容器与内核态 GPU 容器跑工作测试(测试环境与模型:resnet50,batchsize=32,在 v100-32GB),从下图中的数据后果(单位:均匀吞吐(Img/sec))能够看到用户态计划性能比内核性能高 8%-10%;而内核计划隔离性更强,简直没有性能损失。

  • 调度策略:反对共享混部,拓扑感知以及亲和调度。
  • 资源管理:池化架构,资源被对立动静治理,防止资源节约,实时调度缩小资源碎片。
  • 国产化适配:反对昆仑芯等国产芯的虚拟化和调度。

实际中,上述能力给业务带来了真金白银的理论收益。

比方,百度商业广告模型迭代通过多年的倒退,宽泛应用 GPU 等异构硬件进行预估和训练减速,以反对更加简单的点击率、转化率、相关性等模型的翻新和倒退,间接驱动大商业的支出增长和用户体验改善,收益显著。

这带来了 GPU 需要的一直增长。然而存量 GPU 资源使用率低是始终存在的问题,导致了资源的节约。过后采纳粗犷单实例独占 GPU 卡的应用形式,加上流量呈高下峰态、模型复杂度不一、业务模块应用异构计算资源的限度等问题,导致了整体 GPU 资源利益率也仅 13%。

面对这种状况咱们上线了基于 GPU 容器虚拟化的在离线业务混部计划来晋升 GPU 的整体资源利用率,优化后的商业在线业务 GPU 共享部署的占比 90%+,整体 GPU 利用率高达 50% 左右,在线业务 Latency P97 性能放弃不变。

2.3 如何 晋升训练、推理工作的效率?

为了更好地减速训练和推理工作,在训练场景下如何实现分布式训练的减速以及数据的减速?AI 镜像会有简单的 CUDA 依赖,甚至会有一些驱动和镜像自身比拟大,重大影响启动的速度,如何针对性进行优化?

云原生 AI 2.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%。

I/O 减速:通过并行文件系统和分布式缓存技术,与对象存储数据双向流动,实现数据集的治理和读写减速。并行文件存储 PFS 提供齐全托管、简略可扩大的并行文件存储服务,针对高性能计算场景提供亚毫秒级的拜访能力、高 IOPS 及高吞吐的数据读写申请能力;分布式缓存减速 RapidFS 是由百度智能云推出的高牢靠、高可用、弹性的数据减速服务,以对象存储作为数据湖存储底座,为计算利用提供对立的数据入口、命名空间及拜访协定,减速海量数据分析、机器学习、AI 训练等业务拜访存储的性能,不便用户在不同的存储系统治理和流转数据。

在 4v100-32g 机型 ImageNet 1K 训练中,PFS + BOS 和 RapidFS + BOS 成果和本地 SSD 持平,比间接基于对象存储 BOS 训练晋升 5 倍以上。

镜像减速:通过容器镜像按需加载技术,缩短镜像下载工夫,实现容器冷启动减速。百度智能云容器镜像服务 CCR 提供的镜像减速性能,可在用户推送镜像时主动生成合乎 OCI 镜像标准的减速格局的镜像。减速版本的镜像为镜像层中的每个文件和数据块建设索引,配合镜像仓库的 HTTP Range Request 的个性,使单机侧反对按需下载局部镜像层的文件。CCE 提供的镜像减速组件可一键为 K8s 集群开启 / 敞开镜像减速能力,并在容器调度前主动为容器”换装“减速镜像。

在基于内容生成视频的业务场景中,镜像按需加载将容器冷启动速度晋升 6-20 倍。

2.4 如何减速 AI 作业开发,升高人力老本?

AI 工作可视化:针对工作流做可视化的封装,内置 Pytorch Operator、Tensorflow Operator、Paddle Operator 等支流的深度学习框架反对分布式作业以云原生的形式提交,用户只有关怀本人的镜像是哪一个,数据集是哪一个,点选填的形式就能够提交一个分布式训练的作业。用户也能够通过前端渲染的界面,可查看运行的历史,以及每个 DAG 的构造展现。同时,用户通过表单的形式更改 DAG 节点的输出、输入就能够提交一个新的工作流,操作简略,升高学习门槛。

工作流编排:理论的 AI 训练过程蕴含数据处理、模型训练、模型评估、模型部署和公布等一系列过程,每个 AI 算法工作者针对每个步骤都会用本人的形式去长期治理,这样会导致代码和模型管理混乱,难以追踪和复现后果,也无奈进行高效分享和代码复用。为了解决这些问题,集成了 KubeFlow 和 PaddleFlow 来做 AI 作业编排,其中,PaddleFlow 定位为 AI 训练的最小资源内核,提供以 ML/DL 作业的编排为外围的工作流调度等能力,模板化作业的数据处理、训练以及部署过程,并提供 Cache、Artifact 治理能力使得试验过程可复用可重现。同时,对用户屏蔽多样的计算和存储类型,透明化资源管理与调度细节。具体包含:

  • 弱小的 AI 编排能力,让试验更轻松
  • 反对通过 YAML 动态定义以及 Python DSL 动静定义以及界面定义,用户接口简略,易于上手。
  • 形象节点的输出 Parameters 和输入 Artifacts 以及运行环境 Env,并以文件的形式做快照,不便追踪训练过程,为试验过程可复现和 AI 编排可视化打下基础。
  • 内置丰盛的 PaddlePaddle 的套件,如 PaddleDetection、PaddleNLP、PaddleOCR 等,能够满足许多产业实际的 AI 训练需要。
  • DAG 调度功能丰富,满足 AI 训练的调度需要
  • 反对简单的定义,如循环、递归、条件分支、节点屏蔽、定时和周期调度等,以满足大部分 AI 场景的调度需要。
  • 通用的架构设计,PaddleFlow 工作流亦可反对运行在云原生 DAG 调度 Argo、Airflow 等其余支流 DAG 调度上,满足更多企业外部定制化需要。
  • 针对 DAG 运行全方面优化,晋升 DAG 执行效率
  • 通过节点产出数据对立治理,主动跳过未发生变化的节点,缩短 DAG 运行工夫。
  • 通过感知节点产出长期数据地位,缩小两头数据读写的频率和近程拜访频率。
  • 通过 AI 资源调度的异构能力,检测节点的运行环境(CPU、GPU 等)按需调度不同节点,升高算力占用老本。

03 总结

作为国内人工智能的「头雁」,百度正通过本身的教训和技术输入来一直升高 AI 技术开发和利用的门槛。

目前,云原生 AI 2.0 曾经交融进百度百舸·AI 异构计算平台,大家能够在百度智能云官网搜寻“百度百舸”,减速 AI 利用,激发业务想象力。

————————END——————————

举荐浏览:

前后端数据接口合作提效实际

前端的状态治理与工夫旅行:San 实际篇

百度 App 低端机优化 - 启动性能优化(概述篇)

面向大规模数据的云端治理,百度桑田存储产品解析

加强剖析在百度统计的实际

基于 TLS 1.3 的百度平安通信协议 bdtls 介绍

百度用户产品流批一体的实时数仓实际

退出移动版