• 🔥星空app官网版下载v.9.55.87-星空app在不进行真确训练的情况下-🔥星空app官网版下载v.9.55.87-星空app

  • 发布日期:2025-03-30 05:12    点击次数:57

    🔥星空app官网版下载v.9.55.87-星空app在不进行真确训练的情况下-🔥星空app官网版下载v.9.55.87-星空app

    转自知乎作家 张志强 蚂蚁Ling模子研发负责东谈主🔥星空app官网版下载v.9.55.87-星空app

    蚂蚁开源大模子的低老本训练细节,疑似曝光!

    这段时刻,蚂蚁一篇时间论文激发关注。论文中泄露,他们推出的两款MoE大模子,梗概在国产GPU上完成与同效的训练。一时刻,该音信在时间圈发酵,登上了热搜,以至还传出「筹算老本低于DeepSeek」一些别传。

    咫尺,蚂蚁Ling模子研发负责东谈主意志强在上作出了呈文

    他发布长文《对于咱们抠 FLOPS 的一些点滴》,共享了他们一些大模子训练的履历和评释。

    包括训练正确性对都、Router TP(Tensor Parallelism)bug 建树、训练领悟性等问题的责罚。

    终末还呈文了外界对于他们老本筹算的扭曲,并示意岂论是在 GPU 照旧在国产加快卡上,LLM 的训练老本优化都是无绝顶的。

    Ling 的训练历程一定进度地阐述,在咱们作念的这些时间勤恳上,国产加快卡的训练老本与 GPU 相当以至更低,同期不错保证 Loss 拘谨一模一样。

    在不篡改得意的基础上,量子位作念了如下整理在此共享给大家,但愿能给大家带来一定的启发。

    (量子位已获原作家授权)

    对于咱们抠 FLOPS 的一些点滴

    本周运转看到有媒体关注咱们团队的模子训练后果,其实月初咱们就在 GitHub 和 Hugging Face 上发布了 Ling 模子权重和时间诠释(https://arxiv.org/abs/2503.05139),名字就叫「EVERY FLOP COUNTS」,对于使用非 NVIDIA 加快卡集群训练 Ling 300B MoE 大模子的一些时间细节。咱们的时间诠释被外媒记者发现了,“出口转内销”地被关注到。其实咱们原来就准备在月底的微型时间沙龙上共享履历评释的,既然被关注到了,就来提前阐述一下吧。

    从开源来,回社区去

    即使如最近大热的 DeepSeek,也受限于算力问题进行了许多精彩的优化,对于咱们一线研发东谈主员来说,克服环境的截至即是责任。家喻户晓,和海外的大模子团队比较,中国团队濒临了更多的异构加快卡的挑战,咱们并不是第一家濒临异构问题的公司,比如智源盘考院就发起了 FlagScale 样子,研发面向异构加快卡的训练框架。有了开源社区,咱们不错诓骗同业们的前期探索行为责任的基础。相通,咱们的践诺后果也回馈给社区,但愿不错匡助社区减少不消要的重叠管事。蚂蚁在旧年开源 DLRover 样子(https://github.com/intelligent-machine-learning/dlrover),诠释提到的轻量级选拔性追踪框架 XPUTimer 就集成在 DLRover 上,不错为不同算力平台上的大鸿沟训练任务提供监控会诊功能。但愿这些对社区的回馈,不错给大家带来一些启发。

    一些收成和履历评释

    在写这份时间诠释时,咱们但愿共享 Ling 研发历程的一些要津 insight。Insight 不错是 novelty story,也不错是 bitter lesson。这里和大家聊聊咱们得到的一些评释。行为较早吃螃蟹的东谈主,共享这些评释并不是念念吐槽,仅仅但愿不错匡助其他同业躲避一些问题,天然也但愿不错促进国产加快卡的更快熟悉。底下伸开聊一聊几个我印象长远的 bitter lesson。

    训练正确性对都

    为了让大鸿沟 MoE LLM 不错在多个算力平台上进行无缝切换训练,训练正确性对都是必不可少又极其繁琐的一个历程。对都有不同的样子,比如在不同平台训练都不错过去拘谨是一个样子,而算子精度、训练框架、loss 十足对都又是另外一个样子。“很傻很灵活”的咱们本着时间问题应该知其然又知其是以然的信念,定下了一个特等严格样子,基础算子(除稳当预期的精度裂缝)十足对都 + 漫衍式训练框架前后向筹算十足对都 + 大鸿沟训练长跑 loss 各异低于 0.1%,天然这也换来了无数个整夜 debug 的难忘体验。

    好奇艳羡好奇艳羡的是,在作念正确性对都的历程中,咱们同步也在作念对于 scaling law 的盘考。咱们发现,通过设想一个合理的外推拟合要领,在不进行真确训练的情况下,一个尺寸较大(比如 20B、80B)的模子在认真训练较万古刻(比如 2T token)后的 loss,不错被一系列 1B 以下的小尺寸模子的训练外推掂量,其掂量裂缝低于 0.5%。这么看来,跨平台训练的 loss 各异低于 0.1% 其实是一个合理的条目。

    在算子对都上,咱们将不同平台的基础算子进行了十足对都已矣,比如 matmul、linear 等。

    Router TP(Tensor Parallelism)bug 建树

    在框架上,FSDP 向 MindSpeed(Megatron)对都引入 tensor parallelism 特色会导致一系列模子拘谨问题,尤其是在 MoE 联系的 router 部分特等严重。这里伸开讲一下咱们的责任。

    在 router 的前向筹算上,由于 sp(sequence parallel)在 Megatron 中对 router 的输入进行了切分,导致其输入并不齐全,因此在 router 联系 loss 筹算(包括 load_balance_loss 和 z_loss)时会额外使用 gather 操作将不同 sp rank 上的数据同步到沿途,以进行齐全 batch 筹算。这个历程并莫得特意针对反向进行对应的 reduce 已矣,会导致回传梯度重叠,需要手动对 router 联系的 loss 所有进行放缩。值得防卫的是该 bug 照旧在 Megatron 0.7.0 版块建树;那时 MindSpeed 相沿到 0.6.0 版块,因此需要进行额外 patch 建树。

    在 router 的反向筹算上,Megatron 对 router 通过 gather 操作获得了齐全的 logits,而 MindSpeed 在后续的 permute/unpermute 操作中需要强制使用 local logits,因此额外进行一次 scatter 操作来进行切分,出现了 loss 不敛性问题。经过排查,咱们发现是 scatter_to_sequence_parallel_region在反向已矣中进行了一次 _gather_along_first_dim操作导致梯度比过去梯度更大。最终咱们在每一次 scatter 操作之后添加了对应的 gradient_scale 已矣以保证梯度的正确性,从而险恶 loss 拘谨的需求。

    NormHead 挪动

    参考百川的训练履历,咱们也接受了 NormHead 来保证训练的领悟(天然初志是为了保证训练领悟,然则自后通过 scaling law 分析,咱们发现 NormHead 在 loss 上也会带来一些上风)。NormHead 从 FSDP 挪动到多 D 并行的 MindSpeed/Megatron 上也遭遇了问题。FSDP 上的参数在逻辑上是莫得被切分的,因此 NormHead 的已矣特等陋劣高效,通过 Torch 原生自带的 torch.nn.functional.normalize 即可完成对 lm_head.weight 样子化操作。在 MindSpeed/Megatron 中,由于波及到了多 D 并行,因此需要修改 NormHead 的已矣要领进行适配。最告成陋劣的决议即是连合 torch.nn.functional.normalize 的本色筹算历程,将腹地斥地上的 lm_head.weight 先进行样子化筹算,终末使用 reduce 对样子化后的 lm_head.weight 值进行同步。缺憾的是咱们发现这么已矣无法保证 loss 拘谨,分析其原因主如果由于在不同机器上进行数据同步接受 Megatron.core.tensor_parallel.mappings._ReduceFromModelParallelRegion,而该决议莫得在反向传播历程中已矣对应的梯度同步,最终导致 loss 高潮;于是咱们重写了一版_ReduceFromModelParallelRegionForNormHead并已矣了对应的反向以保证loss拘谨。另一方面,国产加快卡的某些算子可能不相沿 BF16 筹算,而 FP32 的算子筹算遵守远低于 BF16 算子,为了珍摄在多 D 并行中禁绝住模子的合座筹算,需要对 NormHead 性能进行优化。咱们设想了基于 all2all 通讯的 NormHead 已矣以及 HeadNormCache 等决议,以在国产加快卡上达到更优的筹算遵守。

    训练领悟性

    与 GPU 比较,国产加快卡在领悟性上确乎存在不少问题,每每会遭遇由于机器不领悟带来的 loss 以及 grad 极度,从而激发尖刺,影响模子的拘谨历程。为了缓解这些问题,咱们设想了两种不同的尖刺处理机制。

    对于 loss 尖刺,咱们会把历史最近的一部分 loss 行为参考,如果现时 loss 与参考的历史 loss 均值比较有剖析的高潮,咱们就会跳过这一步的训练告成运转下一步,或告成缩短这一步的学习率来减少影响。这种要领在大大都情况下是灵验的,不错很好地缓解训练不领悟问题。

    但咱们在实验不雅察中发现,loss 尖刺处理机制并不成责罚通盘的训练不领悟问题,因为 loss 是模子训练历程的一个很宏不雅的阐发,模子的气象在 loss 产生尖刺之前可能照旧出现了不领悟。Grad 会告成作用于模子参数,对其监控比较于 loss 愈加赶紧,因此咱们也开发了 grad 尖刺处理机制。参考 loss 尖刺的已矣,咱们在自研的 ATorch 框架中对通盘的 _ParamAndGradBuffer 进行处理,从而已矣对模子 grad 的监控。如果 grad 出现极度就跳过这一步训练。通过 grad+loss 尖刺处理机制,不错自动处理大部分的 loss 极度。

    老本的筹算

    此次大家的一些扭曲也源于对老本筹算的式样,其实咱们在老本筹算上使用了学术界比较通行的筹算要领,这里也陋劣先容一下。

    把柄在不同平台上对 Ling-Plus 的真确训练记载,咱们不错不雅察到某个平台在 K 张加快卡上捏续一段时刻(比如一周)的 token 数,再把柄时间诠释表 1 上提到的不同加快卡的单元时刻老本,就不错很陋劣地筹算出对应平台上训练单元 token 量(诠释里以 1 万亿 token 为单元)的老本。

    表1:AI加快器特色与单元老本(估算)

    事实上,岂论是在 GPU 照旧在国产加快卡上,LLM 的训练老本优化都是无绝顶的。Ling 的训练历程一定进度地阐述,在咱们作念的这些时间勤恳上,国产加快卡上的训练老本与 GPU 相当以至更低,同期不错保证 loss 拘谨一模一样。

    将来的责任

    Ling 模子的发布仅仅咱们责任的一个里程碑,后续咱们还会进一步更正我方的责任。DeepSeek 为咱们对训练经济性的提高带来了启发,DeepSeek 在训练中使用了 FP8 证明了这么的低精度浮点数是不错训练出来优秀的大模子的;相通咱们伯仲团队基于强化学习的 AReaL(https://github.com/inclusionAI/AReaL)也开源了,强化学习亦然通往 AGI 之路的遑急一环。咱们后续的更多责任也会延续开源在 inclusionAI org(https://huggingface.co/inclusionAI)里。

    每个 AI 研发工程师都坚信 AGI 必将到来。咱们坚信 AGI 一定是普惠专家的,感谢大家的心绪,期待将来的责任也能受到捏续关注。

    知乎衔接:https://zhuanlan.zhihu.com/p/1888526583813350974