首页 > 其他分享 >端到端自适应大规模分布式训练技术

端到端自适应大规模分布式训练技术

时间:2024-05-25 09:01:24浏览次数:29  
标签:异构 架构 训练 模型 并行 端到 分布式

端到端自适应大规模分布式训练技术

随着 2020 年 GPT-3 1750 亿超大语言预训练模型的提出,语言、视觉、多模态等领域也随即发布多种超大规模预训练模型,不仅模型参数量越来越大,训练数据量和计算量也相应变大。针对大规模稠密参数模型高效训练问题,飞桨于 2021 年初在业内首发 4D 混合并行训练策略,即将数据并行、张量模型并行、流水线并行、分组参数切片并行等策略组合使用,取长补短,发挥各自的优势。简而言之,首先在单机内使用张量模型并行和分组参数切片组合的 2D 策略,原因是这两个策略通信量较大,适合使用机器内的卡间通信;然后为了承载千亿规模模型,再叠加流水线并行策略,使用多台机器共同分担;最后为了做到高效,在外层又叠加了数据并行来增加并发数量,提升整体训练速度。

 

图 15 4D 混合并行策略示意图

在 4D 混合并行训练策略的基础上,为了进一步降低用户使用门槛,同时也是为了应对模型多样性和训练硬件资源异构性,飞桨从硬件特点和算法特性的角度出发,遵循软硬结合的设计思路,提出了端到端自适应分布式训练架构。该架构可以针对不同的深度学习算法抽象成统一的计算视图,自动感知硬件环境并抽象成统一的异构资源视图;还采用了代价模型对两者进行联合建模;最后将模型参数、梯度、优化器状态按照最优策略分配到不同设备上,构建流水线进行异步高效执行。该架构可以在同地域或跨地域多种异构硬件下,达到节省存储、负载均衡、提升训练性能的目的。以鹏城 - 百度 · 文心为例,使用该架构不仅支持了多种硬件下的高效训练,还将训练性能提升到了传统分布式训练方法的 2.1 倍。

此外,针对大模型训练资源不稳定的问题,还设计了弹性资源调度管理机制。当资源发生变化时,该架构能够自动的感知硬件环境并修正资源视图,重新触发模型切分放置策略选择及异步流水线执行,使得硬件故障下任务恢复可从小时级降至秒级。

 

图 16 端到端自适应分布式训练架构

3.2 异构多云,实现算力和模型共享

针对多算力中心数据、算力共享面临的安全、效率挑战,飞桨推出了业内首个异构多云自适应分布式训练架构,支持云际环境下的异构硬件联合训练,实现算力共享(多个算力中心互联训练)或知识共享(云化方式利用各自的大模型)。该架构融合了混合并行训练、通信压缩、异构通信、安全加密等技术,并已在“鹏城云脑 II+百度百舸”下完成多个模型的验证。 通过算力共享方式成功训练了多语言知识融合的 ERNIE 模型,可以做到精度无损和性能基本无损。在该场景下,各算力中心会收到全量训练数据和自适应切分的不同模型网络层,并采用集合通信、模型并行等技术训练各网络层,参数服务器架构将中间层输出与梯度信息进行通信压缩和安全加密后,传递至其它算力中心,完成联合训练。多算力中心算力联合训练,将是一种更灵活的大模型训练方式。

鹏城云脑 II 和百度百舸以这种知识共享方式成功训练了英语-西班牙语翻译模型。预训练大模型也可用于其它模型高质量生产。

 

图 17 异构多云分布式训练示意图

3.3 高扩展性通用异构参数服务器

参数服务器架构在搜索推荐系统应用非常广泛。飞桨框架 2.0 版本推出业内首个“通用异构参数服务器”技术,可使训练任务对硬件型号不敏感,即可以同时使用不同的硬件混合异构训练。通过异构参数服务器模式,用户可以在异构硬件集群中部署分布式训练任务,目的是对不同算力的芯片高效利用,获得更高吞吐,更低资源消耗的训练能力。异构参数服务器拥有非常高的性价比,如下图所示,仅用两个 CPU 机器加两个 GPU 机器就可以达到与 4 个 GPU 机器相仿的训练速度,而成本至少可以节约 35%。

 

图 18 异构参数服务器与传统参数服务器性能对比

同时,飞桨在 2.3 版本中进一步提升其扩展性,主要是将其中的基础模块通用化,提升二次开发体验,高效支持产业应用中广泛的定制开发需求。以新增支持昆仑芯 XPU 的参数服务器为例,在复用通用模块的基础上,只需增加三个硬件相关的定制模块,使得开发量从原来的万行减少至千行。再比如,扩展业务场景至 GPU 图神经网络训练,仅需要在存储模块中添加图采样策略即可开发完成 GPU 三级存储图检索引擎,支持 GPU 图分布式训练。

 

图 19 可高效扩展的参数服务器架构

3.4 超大规模图模型训练架构

图神经网络基于顶点和边的关系进行模型训练,对图数据具有强大的表征刻画能力,广泛用于广告、推荐召回等模型场景。飞桨针对图表示学习模型训练,推出了基于 GPU 的超大规模图模型训练引擎 PGLBox 2.0,实现业内首个 SSD-MEM-HBM 3 级存储的图模型训练架构,单机可支持百亿节点、数百亿边模型规模,相比 1.0 版本速度再提升 1.6 倍,相比 MPI 训练的加速比提升 27 倍。

PGLBox 在业内率先实现了可同时支持复杂算法、超大图、超大离散模型的一体化图学习方案,基于 PGLBox 的 R-UniMP 模型提速近 10 倍,获得 NeurIPS 2022 大规模 GNN 挑战赛冠军。

 

图 20 图神经网络训练架构

 

标签:异构,架构,训练,模型,并行,端到,分布式
From: https://www.cnblogs.com/wujianming-110117/p/18211933

相关文章

  • openmv训练神经网络
    1.打开edgeimpulse网站,要注册一个账号点击右上角的搜索图标,选择创建新项目3.填写一些基础配置 完成创建后,打开OPENMVIDE点击新数据集,并创建一个文件夹用于存储采集的图片  点击右侧的文件夹,创建组,并命名。选择创建的组,然后点击摄像头进行拍照,拍照次数尽量要多,保......
  • 代码随想录算法训练营第一天 | 977.有序数组的平方;
    代码随想录算法训练营第一天|977.有序数组的平方;977题链接:https://leetcode.cn/problems/squares-of-a-sorted-array/代码随想录链接:https://programmercarl.com/0977.有序数组的平方.html#思路209题链接:https://leetcode.cn/problems/minimum-size-subarray-sum/submission......
  • 代码随想录算法训练营第第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    三道题都没想出来,还是要加强递归的练习110.平衡二叉树(优先掌握递归)再一次涉及到,什么是高度,什么是深度,可以巩固一下。题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.htmlfunctiongetHeight(node){if(node===null)return0;letleftH......
  • 【AI学习】对LLM训练中数据处理的再认识
    最近读了几篇文章,对于LLM模型中的数据处理,有了一些再认识。这几篇文章分别是《世界顶级风投a16z创始人对谈AI与创业》、《BenThompson对NatFriedman和DanielGross的采访》、《AI教父Hinton最新万字精彩访谈:直觉,AI创新的洞见和思考,未来》有一些观点:1、训练模型的数......
  • 分布式计算编程项目二
    利用RPC技术实现一个学生信息管理系统目录利用RPC技术实现一个学生信息管理系统一、具体要求二、相关理论理论迭代1.单机结构2.集群结构3.微服务结构微服务介绍RPC介绍使用到的相关包MySQL启动方法三、代码架构四、功能实现+界面展示基本功能:技术点:1.查询速度提高2.数据模型和......
  • 代码随想录算法训练营第一天 | 704.二分查找;27. 移除元素
    代码随想录算法训练营第一天|704.二分查找(红蓝模板法);27.移除元素(双指针法)704题链接:https://leetcode.cn/problems/binary-search/description/二分查找:https://programmercarl.com/0704.二分查找.html#其他语言版本二分查找红蓝法笔记:二分查找为什么总是写错?_哔哩哔哩_bil......
  • 代码随想录算法训练营第十五天 | 层序遍历 、226.翻转二叉树、101.对称二叉树
    层序遍历题目链接:学会二叉树的层序遍历,可以一口气打完以下十题:102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点......
  • 代码随想录算法训练营第三十六天|860.柠檬水找零、406.根据身高重建队列、452. 用最少
    860.柠檬水找零文档讲解:代码随想录题目链接:.-力扣(LeetCode)注意看提示:bills[i] 不是 5 就是 10 或是 20 场景较为固定遇到了20,优先消耗10classSolution:deflemonadeChange(self,bills:List[int])->bool:total={5:0,10:0,20:0}......
  • 使用FP8加速PyTorch训练的两种方法总结
    在PyTorch中,FP8(8-bit浮点数)是一个较新的数据类型,用于实现高效的神经网络训练和推理。它主要被设计来降低模型运行时的内存占用,并加快计算速度,同时尽量保持训练和推理的准确性。虽然PyTorch官方在标准发布中尚未全面支持FP8,但是在2.2版本中PyTorch已经包含了对FP8的“有限支持”并......
  • 分布式任务调度内的 MySQL 分页查询优化
    作者:vivo互联网数据库团队- QiuXinbo本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题。对于数据分布不均如何发现,提供了一些SQL查询案例来进行参考,对MySQLIndexConditionPushdown......