首页 > 其他分享 >你的大模型为什么训不快?大模型预训练技术精要

你的大模型为什么训不快?大模型预训练技术精要

时间:2024-08-07 11:55:52浏览次数:15  
标签:显存 PP 训练 AI 模型 不快 TP 精要

大模型训练用时可以拆解成两方面:一个是模型运行时间,这部分要想快就需要买更好的机器,研究fused kernel来加速,一般时间周期长,难度高,这部分后面文章会有专门讨论。第二部分是通讯时间,大模型训练过程中需要不断从其他GPU,其他节点收集梯度信息更新模型。千万不可小看第二部分通讯时间,笔者在默认设置下在自己环境上跑大模型并行,发现通讯时间竟然高达90%,模型训练异常低效,优化后占比降低到20%左右,显著提升了模型训练效率,并且吞吐率到能对齐甚至略高于llama2官方的吞吐率。

训模型常见思路

为啥要做并行方式验证和调优?

是基于你的训练GPU,训练集群的inter-gpu带宽,inter-node带宽,模型大小,训练数据,选择一个最优吞吐率的并行方案(人工加粗加黑,集群不同并行方案就不同)。别人在别人机器上的验证并行方式不一定适用你自己的机器。一般做好并行方式验证调优的话吞吐率可以提升30%-50%。通过并行方式验证和调优,我们就是找到适合自己机器通讯环境的最优模型并行方式,这样可以逼近集群运算能力的上限。

如何确定使用什么样的并行策略?

如果模型不是特别大7B,13B直接数据并行Data parallel(DP)搞起(zero0,zero1,zero2往上尝试),还塞不下然后考虑加Pipeline parallel(PP)。如果模型特别大70B,130B的时候,这时候考虑加Tensor parallel(TP)到2-4-8(一般先设置为2比较合适,优先增加PP),扩大PP直到能塞下模型,如果已经能塞的下模型了,再增大PP速度会降低速度,因为需要通讯量增加了,在笔者的8节点64 A800机器上增加BS塞满显存并不能抵消通讯量带来的速度损失。如果还是实在塞不下再考虑gradient chekpointing和offload等技术。

注意:如果用了Pipeline parallel(PP),就不能用zero2和zero3。因为zero-2/3就将梯度也切分了,但在做梯度累计的时候,流水线并行的时候的需要从不同的nodes汇集梯度会需要巨量的通信开销,所以deepspeed直接禁用了zero2/3 + PP的组合。

一般单GPU batch size (micro batch size)设置为1就行了,大的batch size通过梯度累计实现,预训练过程是一个GPU计算密集型任务,GPU利用率一般都能跑满,所以加大batch size提速不大。更重要的是,显存应该用于存模型训练相关参数,比如模型参数,梯度,优化器参数等。这样可以减少整体通信开销,加快训练速度。有一种场景是可以增大micro batch size的,就是模型本来是塞不下的,我的PP从4增大到8以后可以塞下了,但空出来20%的显存,这时候我可以将micro batch size 从1变成2把多出来的20%显存占满,实验发现也可以提速5%左右,原理是GPU计算更大矩阵乘法效率会更高。

Zero3只适合机器比较少的时候玩一下,扩展到多机就很慢,因为zero3本质上其实是DP+TP,如果我们有64个GPU,就相当于64路TP了,通讯成本太高了限制了训练速度。

为啥优先用PP而不是TP(2以上)呢?

我们知道做Ring-AllReduce通讯量是和参数的通讯节点数量线性相关的。

具体可参考文章:https://zhuanlan.zhihu.com/p/617133971

这个问题和通讯量有关,PP简单来说就是横着切模型,模型切成很多块(chunk),但层还是完整的。这样每次通讯的话只需要在断点出进行块与块之间的通讯,因此PP无论切多少刀,每次只需要在两个节点之间通讯,并且不同chunk通讯是异步的,同一时间的通讯压力小。而TP是竖着切模型,每一层都切开了,通讯的话需要每一层不同块进行all reduce通讯,如果切得太多,则同一时间需要参与通讯的GPU数量就很多,训练就会慢。如果TP=2切一刀那么通讯量和PP是一样的,如果切成4份那么需要在4个节点之间进行同步通讯,通讯量直接翻倍。甚至TP如果切多了,比GPU个数还多了,就需要inter-node的通讯了,这个一般比Intra-node通讯慢很多,自然是无法承受的。

预训练常见技术:红榜

【Flash Attention】 可以提速+降显存,尤其是llama2这种序列较长的降显存非常明显,在Zero2+flash attention可以在单机8卡上放下7B模型,并且训练速度可以提速大约75%,不使用gradient checkpointing可以提速25%,相比于Zero2+gradient checkpointing的组合快了一倍。

具体可参考文章:https://zhuanlan.zhihu.com/p/645238961

【Zero优化器】 显存占用:zero0>zero1>zero2>zero3 显存降低大概每一级降低10%左右(具体看模型,以及卡的个数,总之不会多特别多),速度上来看的话zer0>zero1>zero2>zero3 每一级降低5%左右(速度上感觉不到特别明显的差别)。所以huggingface 推荐 直接可以上zero2,因为速度没有慢多少,但可以降低显存比较多。从tflops来看会比较明显 zero 0 > zero 1 > zero 2 。因为优化器中的参数是最多的,一般在megatron框架中加入–use-distributed-optimizer就是zero1阶段就能升下不少显存,实测速度也不会降低。

【Pipeline Parallel(PP)和Tensor Parallel(TP)】 在保证能塞得下模型的前提下,PP * TP 应该越少越好,因为多了每个GPU显存降下去了,但通讯时间延长了。但PP和TP怎么配置也是讲究的,TP应该比较小,如果从2开到4吞吐量下降13%左右,2还行明通讯瓶颈一般到2了。PP开的如果太小的话 bubble就会比较多,所以提速不明显。64卡训练13B模型比如 pp2 + tp 1 和pp1 + tp2速度差不多,但pp4 + tp1 比 pp1 + tp4快20%。所以笔者发现13B模型64卡A800训练最优设置的PP 4 + TP 1,同时PP2 + TP 2 效果也非常接近,这个也是因为降低了PP的bubble。一般建议TP大小为Hidden size / TP > 1024。并且笔者的机器是A800机器,机内带宽是比较低的,PP 和 TP 的先后不存在明显的差异。同时TP一般会搭配sequence-parallel进行使用,可以在降低显存的情况下,不增加任何通讯成本。

具体可参考文章:

https://zhuanlan.zhihu.com/p/646406772

https://zhuanlan.zhihu.com/p/626553071

图片

在使用PP的时候我们会发现各个节点的显存占用不一样,比如PP为4的时候显存占用Rank0>Rank1>Rank2>Rank3>Rank4。这个是因为PP不同Rank激活值存储时间不一样。比如下图中的Rank0-F0节点需要存储激活值的时间要比F1/2/3要长,这部分存储的激活值增加了显存占用。同时embedining层也在Rank0节点,比中间节点多占用了一些显存。

图片

【Selective Activation Recomputation】 按照huggingface的描述可以在仅仅增加2.7%的FlOPs overhead的情况下对于GPT3可以降低70%的显存,是一个大杀器。

【梯度累积 Gradient Accumulation】 可以打印出来每次forward时间backward时间,梯度做传播的时间,如果发现做梯度传播的时间占整体训练时间1/5以上,那么可以考虑增加global batch size提升gradient accumulation,这样可以减少梯度在各个节点通讯的次数,从而显著提升吞吐量,笔者在256卡A800测试中发现,global batch size增加四倍后吞吐量增加25%,进一步提升训练效率,同时增加global batch size,需要适应调整学习率,一般可以线性增加,比如global batch size增加4倍,LR也要增加四倍,要不然训练的iteration太少,模型更新太慢的话,走不到最优点。

预训练常见技术:黑榜

【Full Activation Recomputation】 为虽然可以降显存,但是速度会慢25%,能不用的时候尽量不用。降显存完全可以用PP 和 TP,尤其是PP对通讯要求不是特别高,并且设置的得当的话还会加速。这个技术更像是一个显存严重不足场景下不得已为之的方法。

【Offload Optimizer/parameters】 使用后训练速度会慢非常多,基本慢了一倍。这个技术更像是一个显存严重不足场景下的不得已为之的方法。

一些调参的takeways

如何选择常见的训练策略

图片

不同并行策略如何选择

图片

图片

如何选择合适的Zero优化器

以及Deepspeed相关训练策略

图片

图片

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

标签:显存,PP,训练,AI,模型,不快,TP,精要
From: https://blog.csdn.net/python1222_/article/details/140988176

相关文章

  • OSI(Open Systems Interconnection Model)七层模型
    前情提要:是一个描述计算机网络通信协议设计的概念模型。它由国际标准化组织(ISO)在1984年发布,用于帮助不同系统之间的通信。这个模型将网络通信过程分为七个层次,每一层都承担着特定的功能:1.物理层(PhysicalLayer):负责在物理媒体上传输原始比特流。它关注的是比特在电缆、光纤......
  • LLM大模型实战:从零到精通——大模型应用开发极简入门
    大家好,今天给大家推荐一本大模型应用开发入门书籍《大模型应用开发极简入门》,本书对很多AI概念做了讲解和说明!朋友们如果有需要《大模型应用开发极简入门》,扫码获取~本书主要讲解了以下几个方面的大模型技术:GPT-4和ChatGPT的工作原理:书中详细介绍了这两个先进的语言......
  • 大模型微调新突破!23个最新创新方案,全面提升模型性能!
    【大模型微调】是指在已经预训练好的大型语言模型基础上,使用特定的数据集进行进一步的训练,以使模型适应特定任务或领域。是最近两年在深度学习领域快速发展的一个研究领域,相对于从头训练一个大模型可以极大降低成本。近年来,多项优秀的大模型微调方法被提出,也有不少研究者们......
  • 感恩回馈粉丝福利,AI大模型100+300学习视频&PDF,白嫖的机会来了!
    近两个月以来内收获了许多粉丝,在此非常感谢,筹划好几天准备了对大家有帮助和提升的相关资源,因为许多限制,但为了感谢大家对我认可和支持,,感谢每一个支持的我的粉丝,起码的见面礼还是得有的,后面有白嫖的方式。作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。至于......
  • 大模型备案流程最详细说明【附评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 什么是大模型?大模型入门指南(非常详细)从入门到精通,看这一篇就够了
    伴随着这段时间,人工智能,AI的热门,“大模型”一词也经常出现在我们的视野中。对于普通人来说,GPT,人工智能,AI,大模型,这些每个字都看得懂但是连起来却觉得理解不完全。今天我们就来讲讲大模型以及GPT。什么是大模型?我们在生活中常常使用过很多模型,比如自制雪糕的雪糕模具,蛋糕店......
  • 我为什么要转行做大模型?
    最近研究了一下大模型相关的内容,决定从互联网的推荐算法转行做大模型推理工程化相关的工作。所以简单说说我在这个决定中的思考过程。1.推荐算法岗的现状我本来是一个在大厂做推荐算法的工程师。收入在行业里面算是中游水平,就这么一直干着似乎也没什么问题。但是互联......
  • 大模型入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    人人都看得懂的大模型简介大模型就像一座庞大的图书馆,里面有非常多的书籍。但与普通图书馆不同的是,这座图书馆中的每本书都是关于不同事物的描述和知识。而这些书籍中的每一页都代表了这个事物的一些特征或细节。现在,想象一下,你是一个研究员,你想了解各种各样的话题,比如天气......
  • 学大模型必看!手把手带你从零微调大模型!
    今天分享一篇技术文章,你可能听说过很多大模型的知识,但却从未亲自使用或微调过大模型。今天这篇文章,就手把手带你从零微调一个大模型。大模型微调本身是一件非常复杂且技术难度很高的任务,因此本篇文章仅从零开始,手把手带你走一遍微调大模型的过程,并不会涉及过多技术细节。......
  • 【大模型书籍PDF】LangChain入门指南:构建高可复用、可扩展的LLM应用程序( 推荐)
    今天又来给大家推荐一本大模型方面的书籍<Langchain入门指南>这本书专门为那些对自然语言处理技术感兴趣的读者提供了系统的LLM应用开发指南。全书分为11章,从LLM基础知识开始,通过LangChain这个开源框架为读者解读整个LLM应用开发流程。......