人工智能开发范畴的开展呈现出数据量和模型规划越来越大、模型练习速度要求越来越快的特征。然而练习和推理使命速度慢、资源运用率、运用成本高级工程化问题阻碍了人工智能运用的落地。
据 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 介绍
百度用户产品流批一体的实时数仓实践