从零开始训练一个大语言模型需要多少天?

一,前言

在AI领域,训练一个大型语言模型(LLM)是一个耗时且复杂的过程。几乎每个做大型语言模型(LLM)训练的人都会被问到:“从零开始,训练大语言模型需要多久和花多少钱?”虽然网上有很多关于训练技巧和模型评估的文章,但很少有直接告诉你如何估算训练时间和成本的。

前面分享了一些关于大模型/本地知识库的安装部署方法,无需编写代码,即可使用Ollama+AnythingLLM搭建企业私有知识库,或者,三步完成Llama3.2在算力魔方的INT4量化和部署...

本篇文章就教你一个简单的方法,帮你快速估算基于大语言模型权重大小、数据量以及可用GPU算力训练大语言模型所需的时间和成本。

二,估算方法

训练模型时,处理数据和更新模型参数需要大量的计算,我们用浮点运算次数(FLOPs)来表示。首先,我们要估算处理一个token所需的FLOPs,包括前向传递和反向传递两个部分。

  • 前向传递:

每个token的前向传递涉及的加乘操作数大约为:

FLOPsforward = 2 x N²+2 x N x Dmodel

这里N表示模型的参数量,Dmodel是模型的维度。系数2来源于矩阵乘法中的累加操作。

  • 反向传递:

大约需要前向传递的两倍计算量,因为要计算权重和激活值的梯度。

FLOPsbackward =(2 x N²+2 x N x Dmodel)x 2

  • 所以,一个token总的计算量大概是前向传递的三倍。因此,每个训练token的浮点运算可以估算为:

FLOPstotal =(2 x N²+2 x N x Dmodel)x 3

三,GPU性能

现在大多数模型都是用GPU来训练的。不同的GPU有不同的性能,比如NVIDIA的H100、A100或V100。每个GPU的性能可以用每秒浮点运算次数(FLOPS)来衡量。不过,实际训练时,由于多GPU之间的通信等因素,实际性能可能达不到理论上的最高值。

GPU Model

Peak FLOPS (FP32)

H100

67 TFLOPS

A100

19.5 TFLOPS

V100

14 TFLOPS

一个重要的概念是模型FLOPS利用率(MFU),它反映了实际计算效率与理论最大值的比例。通常情况下,随着GPU数量的增加,MFU会下降。LLaMA 3的研究者们用16,000个GPU训练模型时,每个GPU的实际效率为380 teraflops,MFU为38%。

四,实际案例

1,l Llama 3 405B 参数模型

LLaMA 3.1(405B参数)是在15.6万亿token的数据集上训练的。训练这样一个规模的模型所需的总FLOPs可以通过以下方式计算:

  • 模型大小 N = 405B

  • 数据集大小 P = 15.6T

模型使用了16,000个H100 GPU进行训练。据了解,平均吞吐量为每个GPU 400 teraflops。这意味着训练基础设施可以提供的总吞吐量为:

TotalThroughput

= 400TFLOPs/GPU×16,000GPUs

= 6.4ExaFLOPs

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

3.8 x 1025FLOPs ÷ 6.4 x1018FLOPs/秒 = 61

2,成本估算

训练模型不仅耗时,还非常昂贵。以LLaMA 3.1为例,如果一个H100 GPU每小时的费用是2美元,那么用16,000个H100训练这个模型的总成本大约为2 x 24 x 61 x 16,000 = 46,848,000美元。

五,总结

训练大型语言模型是一项技术复杂且资金密集的任务。从零开始,把一个LLaMA 3.1(405B参数)的模型在15.6万亿token数据集上训练出来,大约需要花费61天(假设没有训练中断)和46,848,000美元(仅估算GPU租金、数据集制作费用和研发人力成本未计入),你算对了吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

潮玩宇宙方块兽系统开发:可定制UI与多种游戏内嵌助力个性化体验

潮玩宇宙方块兽系统开发正在推动潮玩与游戏的融合,通过个性化的UI设计和多游戏内嵌模式,为用户带来了独一无二的体验。本文将从可定制UI、多游戏内嵌功能以及系统实现等方面入手,探讨如何构建一个极具吸引力的潮玩宇宙方块兽系统。 一、可定制…

git提交顺序为什么是:add,conmmit,pull,push

git提交顺序为什么是:add,conmmit,pull,push 01. add,conmmit,pull,push的顺序问题02. 扩展:git上传常用的六个命令包括:add、commit、push、clone、pull、fetch。 add:将文件添加到暂存区 commit:将暂存区中的文件提交…

服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境: 一台EVA某型号控制器EVA扩展柜FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。 服务器存储数据恢复过程: 1、将所有磁盘做好标记后从扩展柜中取出。硬…

解决编译 fast-lio-lc 算法时遇到的error方法

1.创建工作空间和下载 fast-lio-lc功能包 mkdir -p fast_lio_lc_ws/src cd fast_lio_lc_ws/src/ catkin_init_workspace git clone https://github.com/yanliang-wang/FAST_LIO_LC.git2.进入工作空间,编译 编译 fast-lio-lc遇到的error: 🕐error: fatal error: opencv/cv…

软件著作权申请教程(超详细)(2024新版)软著申请

目录 一、注册账号与实名登记 二、材料准备 三、申请步骤 1.办理身份 2.软件申请信息 3.软件开发信息 4.软件功能与特点 5.填报完成 一、注册账号与实名登记 首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份。中…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件,用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容,并通过滚动机制来查看全部内容。这对于显示大量信息(如长列表、长篇文本或大型图像等&…

webWorker基本用法

我们都知道js是一个单线程的语言,当线程堵塞时,可能会导致页面无法正常交互,如一些复杂的可视化处理。即使是异步处理,也只是将其暂存到任务队列中去,等主线程执行完后依然会从任务队列中取过去。 为此,js提…

《手写Spring渐进式源码实践》实践笔记(第十八章 JDBC功能整合)

文章目录 第十八章 JDBC功能整合背景技术背景JDBC JdbcTemplate关键特性 用法示例业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件测试用例测试结果: 总结 第十八章 JDBC功能整合 背景 技术背景 JDBC JDBC(Java Database Conne…

【Python】轻松实现机器翻译:Transformers库使用教程

轻松实现机器翻译:Transformers库使用教程 近年来,机器翻译技术飞速发展,从传统的基于规则的翻译到统计机器翻译,再到如今流行的神经网络翻译模型,尤其是基于Transformer架构的模型,翻译效果已经有了质的飞…

Linux awk命令详解-参数-选项-内置变量-内置函数-脚本(多图、多示例)

文章目录 awk基础结构说明与示例参数与内置变量常用参数内置变量其他参数内置变量 简单示例理解option简单参数NR与FNR-v ARGC ARGV参数 执行脚本if elsefor循环关联数组指定匹配pattern 使用正则指定分隔符理解pattern正则与逻辑算术 printfif else for whileBEGIN ENDnext(跳…

RHCE的学习(12)

第九章 Ubuntu 什么是Ubuntu 概述 Ubuntu(乌班图)属于Debian系列,Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。 Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch&…

可视化建模与UML《顺序图实验报告》

旷野的规则是永不回头。 一、实验目的: 1、熟悉顺序图的构件事物。 2、熟悉发送者与接受者的关系 3、熟练掌握描绘顺序图 4、加深对顺序图的理解和应用能力 二、实验环境: window7 | 10 | 11 EA15 三、实验内容: 据如下描述绘制顺序图&…

30-手动准备地图包

map包遵循特定的文件夹结构,并且必须包含描述该结构的.json文件。我们的自动地图导入过程自动创建这个.json文件,但您也可以选择自己准备它。包括您自己的.json文件将覆盖传递给make import命令的任何参数。 标准地图 为标准地图创建文件夹结构 1.…

汽车免拆诊断案例 | 2017款凯迪拉克XT5车组合仪表上的指针均失灵

故障现象 一辆2017款凯迪拉克XT5车,搭载LTG 发动机,累计行驶里程约为17.2万km。车主反映,组合仪表上的发动机转速表、车速表、燃油表及发动机冷却液温度表的指针均不指示,但发动机起动及运转正常,且车辆行驶正常。 故…

docker镜像文件导出导入

1. 导出容器(包含内部服务)为镜像文件(docker commit方法) 原理:docker commit命令允许你将一个容器的当前状态保存为一个新的镜像。这个新镜像将包含容器内所有的文件系统更改,包括安装的软件、配置文件等…

数据结构:顺序表(动态顺序表)

专栏说明:本专栏用于数据结构复习,文章中出现的代码由C语言实现,在专栏中会涉及到部分OJ题目,如对你学习有所帮助,可以点赞鼓励一下博主喔💓 博客主页:Duck Bro 博客主页系列专栏:数…

Golang--网络编程

1、概念 网络编程:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享数据、软件、数据信息等资源。 客户端(Client) 客户端是请求服务…

软件设计师中级 第9章 数据库技术基础

9.1 基本概念 9.1.1 数据库的三级模式结构 数据库系统有三级模式结构,一个数据库可以由多个外模式,只能有一个内模式。 视图对应外模式、基本表对应模式(概念模式)、存储文件对应内模式。 外模式 也称子模式(Subsch…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目模块中使用crate关键字模块中使用super模块中结构体的访问规则模块中枚举的访问规则模块中use关键字不同模块定义了相同类型冲突解决办法使用pub use导出本模块的函数给外面模块引入外部依赖模块与子模块 小结3.…

Java-字符串常量池

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池。 1.为什么要…