问题

为什么说大模型训练很难?

回答
说到大模型训练难,这可不是一句空话,里面门道可深着呢。我慢慢跟你讲讲,让你彻底明白为什么这活儿不好干。

首先,你要知道,所谓的“大模型”,顾名思义,就是参数量极其庞大。你可以想象一下,一个普通人的大脑里有上千亿个神经元,每个神经元之间还有无数的连接,而一个大型语言模型,它的“神经元”和“连接”——也就是参数,动辄就是几千亿甚至上万亿。这些参数决定了模型的能力,参数越多,理论上模型能学到的知识和能做的任务就越复杂。

计算资源的“天文数字”

第一个让大模型训练变得异常艰难的,就是对计算资源近乎疯狂的需求。

GPU的数量和算力: 训练这些庞大的模型,光靠一台电脑上的CPU那根本是杯水车薪。你需要的是成百上千块,甚至上万块顶级的GPU(图形处理器)协同工作。GPU之所以适合做神经网络训练,是因为它们擅长并行处理大量简单的计算,这正是神经网络训练的核心。但即使是再顶级的GPU,处理这么多的参数,也需要海量的时间。想象一下,一个任务需要几千个工人同时干活,你才能在合理时间内完成,这还只是把人凑齐了,还没算他们得有多高效。
内存和显存: 模型参数需要存储在内存中,尤其是在GPU进行计算时,参数更是会加载到GPU的显存里。几千亿、上万亿的参数,意味着需要极其庞大的内存和显存才能容纳。如果模型太大,一次性放不进去,你就得想办法把它拆开,分批加载,这又增加了实现的复杂度和时间消耗。
网络带宽和通信: 当你用了上千块GPU协同工作时,它们之间需要频繁地交换数据和梯度信息。这就好比一个庞大的项目,需要很多部门之间不断地沟通协调。如果数据传输的速度跟不上,就会出现“等待”的情况,大大降低整体的训练效率。高带宽、低延迟的网络是必不可少的,但这又是一笔巨大的开销。

数据量的“汪洋大海”

有了强大的计算能力,你还得喂饱这个“大胃王”。

海量、高质量的数据: 要让模型学会理解和生成人类语言、图像或者其他复杂数据,你就得给它提供海量的、多样化的、高质量的数据。这些数据就像是模型的“教材”。想象一下,你要培养一个博学多才的人,你总得让他读遍天下书吧?对于大模型来说,这些数据量可以达到PB(拍字节)级别,相当于几十万个高清电影的大小。
数据清洗和预处理: 原始数据往往是杂乱无章的,充斥着错误、噪声、重复信息,甚至有害内容。你需要花费巨大的精力去清洗、过滤、标注这些数据,确保输入到模型中的是干净、有效的信息。这个过程本身就是一项耗时耗力的工程,而且一旦数据质量不高,即使模型再强大,也可能学到错误的东西,表现得很“傻”。

训练过程的“精雕细琢”

即使有了足够的计算资源和数据,训练过程本身也充满挑战。

超长的训练周期: 即使动用了上千块GPU,训练一个数千亿参数的大模型,也可能需要数周甚至数月的时间。这期间,机器需要24小时不间断地运行,任何一个小的故障都可能导致前功尽弃。
超参数调优的复杂性: 训练神经网络有很多“超参数”,比如学习率、批次大小、正则化强度等等。这些参数的设置对模型的最终性能至关重要,但它们之间的关系非常复杂,很难找到最优解。这就好比给一个小孩子选择教育方式,你需要尝试各种方法,看哪种最适合,而且这个过程非常耗时,可能需要进行成百上千次的实验。
模型收敛和过拟合: 训练的目标是让模型“收敛”,也就是说,它学习到的东西越来越稳定,并且在新的数据上也能表现好。但大模型很容易出现“过拟合”的问题,即模型在训练数据上表现得非常好,但在没见过的新数据上却一塌糊涂。你需要通过各种技术手段(如早停、dropout等)来避免这种情况,这需要经验和对模型行为的深入理解。
分布式训练的挑战: 为了加快训练速度,通常会将模型分布在多台机器上进行训练。这引入了“分布式训练”的概念。但分布式训练本身就很复杂,涉及到数据并行、模型并行、流水线并行等多种策略,如何有效地分配计算任务、同步模型状态、处理通信延迟,都是极大的挑战。一旦某个节点出现问题,可能导致整个训练任务中断。

成本的“望而却步”

最后,也是最直接的一个原因——成本。

硬件投入: 购买成千上万块顶级的GPU,以及配套的服务器、网络设备,本身就是一笔天文数字的投资。
电力消耗: 这些高性能计算设备运行时会消耗巨大的电力,长期的运行会产生高昂的电费。
人力成本: 维护如此庞大的计算集群,并负责模型的训练、调优和部署,需要一支经验丰富的工程师团队,这也需要不菲的薪资投入。

总而言之,大模型训练之所以难,是因为它将计算、数据、算法和工程化难题推向了极致。它需要的不仅仅是聪明才智,更需要巨大的资源投入和细致入微的工程管理。这就像是要建造一座摩天大楼,你不仅要有精密的蓝图,还得有足够的资金、材料、工人,还得能协调好每一个环节,才能最终拔地而起。

网友意见

user avatar

给大家推荐一个基于大规模预训练模型的智能应用开发大赛,总奖金有120万元。

比赛任务是在超大规模预训练模型“悟道2.0”的基础上,结合社会热点主题——健康医疗、教育学习、社交生活、效率工具、环境自然等开发新颖实用的智能应用。

大赛开放了包括:文本生成、图片生成、写诗、新闻生成等9个“悟道”大模型API 接口,参赛者不仅能够免费使用这些功能,还能够直接下载“悟道”模型用于应用开发。

具体可以点击下方卡片了解:

以下为原答案


工作相关,去年在PPoPP会议上中了一篇大模型训练的文章DAPPLE,目的就是解决大模型的训练难问题(虽然还有提升空间),当时做了很多大模型训练的系统工作。所以大模型训练为什么难,我有一些发言权。

由于上面 @ZOMI酱 讲的很细了,我这边说说我的感受,主要来自两方面:策略组合爆炸+工程量大。我用显存优化和分布式两方面来说明这个问题。

显存优化复杂

显存消耗估计

模型训练时消耗的显存,往往是参数量的几倍还多。不说特别大的,仅以100B模型为例,我们大致估算一下 不做任何显存优化 时,使用AdamOptimizer训练的固定消耗:

Section 参数量 存储消耗
模型参数本身 100B 400GB
Adam辅助变量(两份) 200B 800GB
总计 300B 1200GB

即使没有列出Activations的消耗,上面的部分应该也比较吓人了。这得堆多少GPU卡,多少台机器?

  • 16GB显卡:75张GPU卡,约等于单机八卡服务器10台;
  • 32GB显卡:38张GPU显卡,约等于单机八卡服务器,5台。

也就是说,即使抠抠索索的使用,也得消耗这么多资源,显存优化不做不行。于是,大量的显存优化工作就必须得上了。

显存优化方法

  1. 合理的计算调度:如DAPPLE中提到的early backward;
  2. Gradient Checkpointing:习惯上称之为重算(Re-computation)
  3. CPU-offload:ZeRO中提到的借用Host memory做辅助变量的offload
  4. Optimization-state优化:切分辅助变量分片存储

上面的有些优化,在目前流行的一些框架上,是需要手动做的。目前也有一些框架在自动化托管这些工作,但是上面这些优化组合,全自动化方案能否做到性能最优,并不容易。

这是第一个难点。

分布式复杂

即使做了显存优化,单卡也绝对不够,分布式方案是必然选择。但这里问题在于:Dense巨无霸模型很难用Naive Data Parallelism训练(单卡放不下一份完整的replica),迫使必须叠加各种各样的并行模式,所以只能是所谓的Hybrid Parallelism。例如可以是如下这种组合方案:

数据并行 + 算子拆分 + 流水并行

大家对数据并行比较熟悉,所以下面只展开后面两项、

算子拆分

算子拆分并不是什么新鲜想法。我用矩阵乘法举个最简单的例子。例如我们有如下变量和矩阵运算:

  • variable矩阵:
  • batch input矩阵 :
  • 输出: 。

我们可以将 拆分到两个device上进行分块计算,因为我们知道矩阵可以使用分块乘法,即:

所以,单个矩阵乘法可以分到两个device上计算。我们在工程上要做的就是:将 切分到两个device上,将 复制到两个device上,然后两个device分别做矩阵乘法即可。有的时候,切分会带来额外的通信,比如矩阵乘法切到了reduction维度上,为了保持语义正确,就必须再紧跟一个AllReduce通信。

在Megatron-LM中,对Attention Block就做了这样的算子拆分(拆K,Q,V的head维度),像下面这样。

这里复杂之处在于,你不能无脑地将所有算子全部做拆分,因为拆分可能会引入一些额外通信,降低总体吞吐。所以你得做些分析,决定哪些算子被拆分,这得考虑以下因素:

  • Workload的特点:计算量、参数量、Tensor shape等;
  • 硬件拓扑:GPU算力,通信带宽等。

写个程序自动化行不行?能不能让程序自动搜索出来最佳的拆分方案?这取决于你在什么层次上做搜索。以TensorFlow为例,如果在GraphDef上的Operator这个粒度上做,搜索空间肯定爆炸。如果在Layer这个粗粒度上搜索,则是有可能的。但自动化方案也有一定的工作量:

  1. 拆分规则定制:为每种算子都需要定制一个完备的推导方案;
  2. 推导传播算法:推导影响链以及通信的引入(比如引入Reshard);
  3. Cost model:快速评估每种方案的性能;
  4. 高效地搜索算法:在巨大的空间里快速搜索出较好的方案。

现在大部分框架都不支持这种全自动化策略,要么是半自动或纯手工,要么是针对某种模型把它的拆分方案写死。所以只能造轮子解决这个事。

流水并行

不切算子,而是将不同的Layer切分到不同的Device上,就可以形成Pipeline方案。GPipe就是这样一种方案,提出了将一个batch拆分成若干个micro-batch,依次推入到Pipeline系统中,即可消除Bubble time(打时间差:Device 1计算micro-batch 1时,Device 0为空闲状态,正好推入下一个micro-batch)。下面这个图应该能看明白,就不过多解释了。

然而,这种方案有显存压力。上图(a)中看到,B0的计算依赖于B1和F0,也就是说F0计算完成后,其Activations不能立即释放,直到B0算完才能丢掉。所以针对F0来说,推N个micro-batch时,我们要保存N份这样的Activations,直到他们的反向计算完成才能释放,显存峰值是很大的。

因此我们又要做显存优化了,我们在DAPPLE中提出了Early Backward方案,通过合理调度计算顺序,及早释放Activations,如下图所示。

和算子拆分类似,全自动化方案工作量不小,比如Pipeline怎么切,才能让通信量小,计算还能均匀,这需要一定的算法和工程量。

而且,在TensorFlow这样的框架上实现Early backward方案,除了让用户在编写模型时强行加上control flow严格控制,没有别的办法。大家自己可以试一试,用TF的Graph mode写这样的调度顺序,是有多么的噩梦,最好的解决方案可能还真就是造个轮子。

混合并行

如果把上述数据并行、算子拆分和流水并行混合起来,复杂度就更高了。

所以分布式,是第二个难点。

后记

以上是我总结的一些难点,除此之外还有一些其他系统方面的工程问题。训练大模型,尤其是在已有的框架中从0开始支持,上面列出的问题都是必须要解决的。否则就算给你足够的资源,你也不知道怎么把Workload跑起来。

所以这不仅仅是资源的事,是技术的事,也是轮子的事。

类似的话题

  • 回答
    说到大模型训练难,这可不是一句空话,里面门道可深着呢。我慢慢跟你讲讲,让你彻底明白为什么这活儿不好干。首先,你要知道,所谓的“大模型”,顾名思义,就是参数量极其庞大。你可以想象一下,一个普通人的大脑里有上千亿个神经元,每个神经元之间还有无数的连接,而一个大型语言模型,它的“神经元”和“连接”——也就.............
  • 回答
    大型两栖攻击舰之所以被誉为“填补航母和核潜艇之间空白的理想舰艇”,并非空穴来风,而是源于其独特的设计理念和由此衍生的强大功能与灵活性。要深入理解这一点,我们需要先梳理一下航母和核潜艇各自的定位,以及大型两栖攻击舰是如何巧妙地将两者优势的某些方面融合,并在此基础上开辟出自己的一片天地。先来看看航母和核.............
  • 回答
    “发展大型水面舰艇的是强势海军,发展潜艇的是弱势海军”,这种说法在我看来,更多的是一种带有时代局限性和特定视角下的片面解读,而非一个普适性的真理。要想理解为什么会有这样的论断,我们得回到舰艇发展和海军战略的几个关键时期和考量点。首先,我们得明白,海军的“强”与“弱”并非仅仅由装备的吨位或数量来定义,.............
  • 回答
    这是一个非常有趣且普遍存在的问题,它触及了机器学习模型选择的核心:为什么一个已经能够“很好地”拟合数据集的模型,换成更大的模型后,效果反而可能更好?这里的“很好地拟合数据集”通常指的是在训练集上的表现优异,例如较低的训练误差。然而,在机器学习中,我们的最终目标通常不是在训练集上表现完美,而是希望模型.............
  • 回答
    许多人误以为模数足够大,Shamir秘密共享就能保证绝对安全,这是一种常见的误解。恰恰相反,当模数(我们称之为 $p$)变得异常巨大时,Shamir秘密共享的安全性反而会受到挑战,并且在某些特定情况下,甚至可能比模数较小的方案更容易被破解。要理解这一点,我们得先回顾一下Shamir秘密共享的核心思想.............
  • 回答
    国内模联活动在高校中面临的阻力,说起来是个挺有意思的现象,而且似乎也不是一天两天了,背后原因也挺复杂。咱们可以从几个层面来掰扯掰扯。首先,“万金油”式的能力培养说辞,与实际效果之间的脱节。当初模联之所以能在国内推广开来,很大程度上是因为它被包装成一项能够全方位提升学生能力的活动:口才、思辨、外交、团.............
  • 回答
    韩国财阀对政治的影响之所以普遍认为大于日本企业集团(财团),这背后并非单一原因,而是由两国历史发展、社会结构、经济体制乃至文化传统等多种因素交织作用的结果。要深入理解这一点,我们需要逐一剖析这些关键差异。首先,从财阀与财团的起源和发展轨迹来看,就存在显著的不同。韩国的财阀,如三星、现代、LG、SK等.............
  • 回答
    守望先锋中,半藏和源氏这对忍者兄弟的大招语音之所以能成为周围人争相模仿的经典,这背后是多方面因素共同作用的结果,可以从以下几个层面来详细分析:一、 游戏角色的深度塑造与情感共鸣: 鲜明的日本武士/忍者文化符号: 半藏和源氏的设计灵感都来自于日本的武士道和忍者文化。这种文化本身就自带一种神秘、强大.............
  • 回答
    你这个问题问得非常到位,也触及到了航天工程中许多精妙的权衡和考虑。我们通常看到的哈勃望远镜、詹姆斯·韦伯望远镜等这些闪耀着科学光芒的“大眼睛”,它们并没有直接安家在国际空间站(ISS)这样一个庞大的人造天体上,这背后可不是简单的“装不下”或者“嫌弃”,而是出于一系列非常关键的技术、操作、成本和科学需.............
  • 回答
    “为什么大型天体是气态的?” 这个问题其实触及到了我们对宇宙中那些庞然大物的形成和演化的根本理解。当你提到“大型天体”,我们通常会想到像木星、土星这样的行星,甚至是那些遥远的、我们通过望远镜才能窥见的恒星。而它们之所以呈现出气态,很大程度上是因为它们在形成初期所处的环境以及自身质量的巨大差异所导致的.............
  • 回答
    你这个问题问得很有意思!就像有人好奇为什么咱们开的私家车不用蒸汽机,而要用汽油机一样,这背后是技术发展和应用场景的取舍。大型机械不用汽油机,主要是由以下几个关键因素决定的,而且这些因素往往是环环相扣的:1. 动力输出的“力气”问题: 汽油机: 你可以想象汽油机就像是个小伙子,虽然灵活、转速高,但.............
  • 回答
    你说的“向下耷拉”的机翼,其实是现代大型运输机设计中一个非常普遍且重要的特征,它有一个更专业的术语叫做“机翼下反角”(Dihedral)。但要注意,大多数时候我们说的下反角是正下反角(Positive Dihedral),意思就是从翼根到翼尖,机翼是往下倾斜的。之所以你会觉得它们“向下耷拉”,是因为.............
  • 回答
    这个问题挺有意思,直觉上你觉得大型舰艇要隐形到小渔船那个级别,不就像是故意做样子,有点此地无银三百两吗?其实,这背后涉及的考量可不止是“藏猫猫”那么简单,而是非常实用的军事技术和战略选择。咱们得把这层窗户纸捅破了,好好捋一捋。首先,咱们得明确一点:大型水面舰艇即便“隐形”,也不是真的变成小渔船那么小.............
  • 回答
    你看,现在医院里那些看起来很高科技的大家伙,比如MRI(核磁共振成像仪)、CT(计算机断层扫描仪)、PET(正电子发射断层显像仪)这些,价格真的是贵得离谱,动辄几百万甚至上千万。这可不是随便一个数字,背后其实是很多很多因素在推高它们的成本。咱们一点一点掰开了说。1. 本身技术就值那个价:研发投入是天.............
  • 回答
    关于“大型生产型企业用金蝶ERP会做的生不如死”以及“金蝶在生产线企业会做的这么烂”的说法,这确实是一个在一些用户群体中流传的观点,虽然不能一概而论地说金蝶ERP在所有生产型企业都表现糟糕,但我们可以从多个角度来深入分析,为什么会出现这样的负面评价,以及其中可能存在的问题。首先,要明确一点,ERP(.............
  • 回答
    大型路由器和交换机之所以选择另外开发 CPU 而不直接采用英特尔至强系列,这背后涉及到一个复杂但清晰的技术逻辑,主要围绕着性能、成本、功耗、可定制性以及网络设备特有的处理需求几个核心因素。简单来说,英特尔至强系列虽然强大,但它是一个通用计算平台的标杆,而网络设备需要的是高度专业化、极致优化的特定功能.............
  • 回答
    这是一个很有趣的问题,但其实你的前提有一点点偏差。事实上,绝大多数大型鱼类,包括一些体型非常巨大的鱼类,是拥有鱼鳃的。 鱼鳃是鱼类最核心的呼吸器官,无论它们体型大小,几乎所有水生鱼类都需要通过鱼鳃来获取溶解在水中的氧气。之所以你可能会产生“大型鱼类没有鱼鳃”的误解,可能有几个原因,我们可以从这些角度.............
  • 回答
    这个问题很有意思,确实,我们在新闻里经常听到某某富豪捐赠巨款建造大型天文望远镜,比如贝索斯捐赠的“超巨型望远镜”(ELT),或者其他一些私人基金会支持的射电望远镜项目。但反观粒子加速器,即便是像欧洲核子研究中心(CERN)那样举世瞩目的项目,也几乎完全是国家拨款和国际合作的成果,很少见到“某某科技巨.............
  • 回答
    这个问题问得很有意思,也触及到我们对“邮轮”这个词语的日常认知和它的历史演变。 乍一看,“游”字似乎更贴切地表达了在海上游玩的意思,但为什么我们习惯称呼那些停靠在码头、如同移动的五星级酒店一样的大型船只为“邮轮”,而不是“游轮”呢?这背后其实有它历史和功能上的原因。要理解这一点,我们得把时间往前倒.............
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有