当前位置: 首页 > news >正文

从零开始训练 LLM 需要多长时间?

原文:towardsdatascience.com/how-long-does-it-take-to-train-the-llm-from-scratch-a1adb194c624?source=collection_archive---------1-----------------------#2024-10-28

估算训练 X 亿个 LLM、Y 万亿个 tokens 以及 Z 个 GPU 计算所需时间的指南

https://medium.com/@maxshapp?source=post_page---byline--a1adb194c624--------------------------------https://towardsdatascience.com/?source=post_page---byline--a1adb194c624-------------------------------- Max Shap

·发表于Towards Data Science ·阅读时间:5 分钟·2024 年 10 月 28 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/22c36c4b0f024261ae215cb9306bbb76.png

图片由作者提供

简介

每个从事 LLM 训练的机器学习工程师都曾面临过来自经理或产品负责人提出的问题:“训练这个 LLM 需要多长时间?”

当我第一次尝试在网上找到答案时,我遇到了许多涵盖通用话题的文章——训练技巧、模型评估等。但没有一篇文章解决了我核心的问题:我该如何估算训练所需的时间?

因为缺乏明确的实用指导,我决定自己创建一套方法。在这篇文章中,我将带你了解一种简单的估算方法,帮助你快速估算基于 LLM 的训练所需的时间,这个估算基于模型的规模、数据量以及可用的 GPU 算力。

方法

目标是量化训练过程中处理数据和更新模型参数所需的计算要求,以FLOPs(浮点运算次数)表示。接下来,我们基于所选 GPU 的类型和数量,估算系统的吞吐量,以FLOPS(每秒浮点运算次数)表示。一旦所有内容都在相同的尺度上表达,我们就可以轻松计算训练模型所需的时间。

所以最终的公式是相当直接的:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e635eab3d7c67dcee53d0d155a997497.png

让我们深入了解如何估算这些变量。

数据和模型的 FLOPs

基于 Transformer 的 LLM 在正向传播过程中,每个 token 的大致加减乘除运算量约为以下的 FLOPs:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/931583db7f575dfa66cfc1285987af01.png

从 论文中估算 Transformer 模型在前向传播时每个 token 的 FLOP 数

其中,乘法累加操作在矩阵乘法中引入了二的因素。

反向传播所需的计算量大约是前向传播的两倍。这是因为在反向传播过程中,我们需要计算每个权重的梯度以及相对于中间激活值的梯度,特别是每一层的激活值。

考虑到这一点,每个训练 token 的浮动点运算量可以估算为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3817cdce9aa32f0eec695f00f2220eaa.png

从 论文中估算 Transformer 模型大小为 N 在前向和反向传播时每个 token 的 FLOP 数

计算这些估算值的更详细数学推导可以在作者的论文中找到,链接见 这里。

总结一下,训练大小为 N 的 Transformer 模型和包含 P 个 token 的数据集的 FLOPS 可以估算为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b356d4df53ad88326a799b8553b0852c.png

训练基础设施的 FLOPS

今天,大多数大型语言模型(LLM)都是使用 GPU 加速器进行训练的。每种 GPU 模型(如 Nvidia 的 H100、A100 或 V100)都有其自己的 FLOPS 性能,具体取决于所使用的数据类型(形态)。例如,使用 FP64 进行的运算比使用 FP32 的运算要慢,依此类推。特定 GPU 的峰值理论 FLOPS 通常可以在其产品规格页面上找到(例如,这里 是 H100 的页面)。

然而,对于 GPU 的理论最大 FLOPS,通常在训练大型语言模型时并不那么相关。这是因为这些模型通常在成千上万的互联 GPU 上进行训练,其中网络通信效率变得至关重要。如果设备之间的通信成为瓶颈,它可能会大幅降低整体速度,使得系统的实际 FLOPS 远低于预期。

为了解决这个问题,重要的是跟踪一个叫做模型 FLOPS 利用率(MFU)的指标——即观察到的吞吐量与理论最大吞吐量的比率,假设硬件在没有内存或通信开销的情况下以峰值效率运行。在实践中,随着参与训练的 GPU 数量增加,MFU 通常会下降。使用当前的设置,要实现超过 50% 的 MFU 是具有挑战性的。

例如,LLaMA 3 论文的作者报告称,在使用 16,000 个 GPU 进行训练时,MFU 为 38%,即每个 GPU 的吞吐量为 380 太 FLOPS。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2eb3da3d53dfffa58532e6b705f75264.png

在 论文中报告了不同配置下每个 GPU 训练 Llama3 模型时的 TFLOPs 吞吐量。

总结一下,当进行模型训练的简易计算时,遵循以下步骤:

  1. 确定你的选择的 GPU 支持的数据类型的理论峰值 FLOPS。

  2. 根据 GPU 的数量和网络拓扑结构,通过基准测试或参考开源数据(如 Meta 工程师的报告,见上表)估算 MFU(模型 FLOPS 利用率)。

  3. 将理论 FLOPS 乘以 MFU,得到每个 GPU 的平均吞吐量。

  4. 将步骤 3 的结果乘以参与训练的 GPU 总数。

Llama 3 405B 的案例研究

现在,让我们用我们粗略的计算来估算训练一个 405B 参数模型需要多长时间。

LLaMA 3.1 (405B)使用 15.6 万亿个标记进行训练——一个巨大的数据集。训练如此规模的模型所需的总 FLOPs 可以按如下方式计算:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/61a2c49b64193b8f2c567caa1dac0977.png

作者使用了 16,000 块 H100 GPU 进行训练。根据论文,平均吞吐量为每个 GPU 400 teraflops。这意味着训练基础设施可以提供总吞吐量:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1ab3387731738214dbbf88f6d5dc2718.png

最后,通过将所需的总 FLOPs 除以可用吞吐量并将结果转换为天数(因为我们真正关心的是训练天数),我们得到:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/518a4ceb08820b09d1ab968c6e7555ee.png

奖励:训练 Llama 3.1 405B 的费用是多少?

一旦知道了训练设置中每个 GPU 的 FLOPS,你就可以计算出训练给定规模和数据集的模型所需的总 GPU 小时数。然后,你可以将这个数字乘以云服务提供商的 GPU 每小时费用(或你自己的 GPU 每小时费用)。

例如,如果一块 H100 GPU 的费用大约是每小时 2 美元,那么训练这个模型的总费用大约为 5200 万美元!下面的公式解释了这个数字是如何得出的:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e790d633c6d7eb0841e81317dd5f332f.png

参考文献

[1] 神经语言模型的扩展法则 由 Jared Kaplan 等人编写。

[2] Llama 3 模型群体 由 Meta AI 团队编写

http://www.rkmt.cn/news/128312.html

相关文章:

  • 华为AI数据中心参考设计(附下载)
  • Linly-Talker唇形匹配误差低于8ms,达到行业领先水平
  • Linly-Talker音频后处理模块:提升清晰度与饱满度
  • Linly-Talker实战教程:如何用大模型生成虚拟主播
  • 数字人时代来临!Linly-Talker助力企业降本增效
  • STL容器性能探秘:stack、queue、deque的实现与CPU缓存命中率优化
  • 业界人士质疑汽车销量造假,经销商已开始拒绝压库,谁在裸泳?
  • 集成LLM+TTS+ASR,Linly-Talker实现真正实时对话
  • AI家教市场爆发:Linly-Talker成为在线教育底层引擎
  • Linly-Talker语音语调可控:支持愤怒、温柔等语气调节
  • 实测10款降ai率工具:AI率80%如何快速降低ai?(2025最新免费降ai教程)
  • PySpark实战 - 2.3 利用SparkSQL统计每日新增用户
  • Linly-Talker支持GPU显存预分配,避免OOM错误
  • Linly-Talker结合GPU算力释放最大效能配置方案
  • 数字人品牌代言:虚拟偶像商业化的技术基石
  • 2周,10个零基础,90%的人做出了自己的微信小程序:我做了一次AI陪跑实验!
  • RotationAroundLine 模型的旋转
  • Linly-Talker姿态补偿算法:修复低质量输入图像变形
  • Linly-Talker语音克隆功能详解:3分钟复制你的声音
  • 用Linly-Talker制作美食烹饪教学视频?餐饮IP孵化捷径
  • OpenAI官方论文“泄密”GPT-5:RL到底有没有教坏CoT?万字深度实测
  • win10 黑屏,只剩鼠标箭头光标 按win键可以显示任务栏
  • 上海交大《科学》发文,首次实现支持大模型的全光计算芯片
  • 【无功优化】基于改进遗传算法的电力系统无功优化研究【IEEE30节点】(Matlab代码实现)
  • 用Linly-Talker制作节日祝福视频?个性化礼品新创意
  • Linly-Talker支持模型热切换,A/B测试轻松实现
  • AI教师上岗记:Linly-Talker在K12教育中的实际效果测评
  • 人生的机会,从来不在计划之中?(说说我在百度的故事...)
  • 用Linly-Talker生成旅游景点解说视频?文旅宣传新手段
  • Linly-Talker如何保证语音时序对齐?CTC损失函数应用解析