大模型训练准备工作

一、目录

1 大模型训练需要多少算力?
2. 大模型训练需要多少显存?
3. 大模型需要多少数据量训练?
4. 训练时间估计
5. epoch 选择经验
6. 浮点计算性能测试

二、实现

1 大模型训练需要多少算力?

训练总算力(Flops)= 6 * 模型的参数量 * 训练数据的token 数
参考:https://blog.csdn.net/qq_29788741/article/details/135411259?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-135411259-blog-134679887.235^v43^control&spm=1001.2101.3001.4242.1&utm_relevant_index=1

模型的参数量和训练数据的 token 数之间也有个比例关系,这也很容易理解,只要把模型想象成数据的压缩版本就行了,压缩比总是有极限的。模型的参数量太小,就吃不下训练数据里面所有的知识;模型的参数量如果大于训练数据的 token 数,那又浪费,还容易导致 over-fitting。

  1. 大模型训练需要多少显存?
内存分配: 1.模型参数  2. 梯度  3.优化器参数。
chatglm3 6B为例:全精度模型参数是float32类型:1b(10亿)个模型参数,约占用4G显存(实际大小:10^9 * 4 / 1024^3 ~= 3.725 GB),那么LLaMA的参数量为6b,那么加载模型参数需要的显存为:3.725 * 6 ~= 22 GB
5. 训练显存计算大小=模型参数占用+梯度占用+优化器占用+CUDA kernel占用LLaMA-6B为例:模型参数:等于参数量*每个参数所需内存。对于 fp32,需要 6B*4 bytes = 24GB内存梯度:同上,等于参数量*每个梯度参数所需内存。对于 fp32,需要 6B*4 bytes = 24GB内存优化器参数:不同的优化器所储存的参数量不同。对于常用的 AdamW 来说,需要储存两倍的模型参数(用来储存一阶和二阶momentum)。fp32 的 AdamW 需要 6B*8 bytes = 48 GB除此之外,CUDA kernel也会占据一些 RAM,大概 1.3GB 左右,查看方式如下。综上,模型部分大致需要 24+24GB+48GB+1.3GB = 97GB 左右
  1. 大模型需要多少数据量训练?
2022 年 9 月,DeepMind(Chinchilla 论文)中提出Hoffman scaling laws:表明每个参数需要大约 20 个文本token进行训练。比如一个7B的模型需要140B token,若每个token使用int32(四字节)进行编码的话,就是560GB的数据。

训练模型参数量与训练数据量的统计在这里插入图片描述
参考:https://zhuanlan.zhihu.com/p/667363516
https://zhuanlan.zhihu.com/p/636812912?utm_id=0
4. 训练时间估计

理想清空下,训练总算力(Flops)= 6 * 模型的参数量 * 训练数据的token 数

在这里插入图片描述
一般GPU 利用率在0.3 到 0.55 之间。 GPU峰值:每张卡每秒实际做的浮点运算数,一般在理论上限的50%以上,现在衡量计算速度的标准是TFLOPS。
浮点运算峰值计算能力 = 每个SM的CUDA核心数 * 每个CUDA核心的时钟频率 * 每个CUDA核心的浮点运算能力。

  1. epoch 选择经验
1   如果你有百万数据量的话,一个epoch足够了。如果只有几千上万的数据量,可以尝试1~3个epoch
2   深度神经网络以及最新的视觉Transformer模型训练数百个epoch是很常见的操作,不过大型语言模型通常指训练1个epoch。研究人员对维基百科的数据进行了一项相关实验,相比C4来说他们认为维基百科是高质量的,不过事实证明,当维基百科数据在训练期间重复多个epoch后发生了退化现象。
  1. 浮点计算性能测试
 import torch
from torch.utils import benchmark
​
typ = torch.float16  #数据精度     #FP16 精度    
#typ = torch.float32  #数据精度    #tf32
#typ = torch.float64  #数据精度     #FP64
n = 1024 * 16
a = torch.randn(n, n).type(typ).cuda()
b = torch.randn(n, n).type(typ).cuda()
​
t = benchmark.Timer(    stmt='a @ b',globals={'a': a, 'b': b})
​
x = t.timeit(50)  
print(2*n**3 / x.median /1e12)

V100 测试结果:
理论值网址:https://www.nvidia.cn/data-center/v100/
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

python知识点总结(三)

python知识点总结三 1、有一个文件file.txt大小约为10G,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现? 需要考虑的问题都有那些?2、交换2个变量的值3、回调函数4、Python-遍历列表时删除元素的正确做…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextPicker)

滑动选择文本内容的组件。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextPicker(options?: {range: string[] | string[][] | Resource | TextPickerRangeContent[] | Te…

深度解读:如何解决Image-to-Video模型视频生成模糊的问题?

Diffusion Models视频生成-博客汇总 前言:目前Image-to-Video的视频生成模型,图片一般会经过VAE Encoder和Image precessor,导致图片中的信息会受到较大损失,生成的视频在细节信息上与输入的图片有较大的出入。这篇博客结合最新的…

怎么在电脑上记录每日事项,并在桌面上显示便签记事本?

作为一名教师兼班主任,我每天的工作繁忙且多样。从早晨的课程准备,到课间的学生辅导,再到课后的作业批改和家长沟通,每一项工作都需要我细心且有条理地完成。在这样的工作节奏下,如何高效管理每日事项,确保…

python for循环打印字符串、指定区间范围数字以及打印区间数字内的奇数和偶数

1.一串字符,循环打印: 源码: strings"Python" n0 print("字符长度为:"str(len(strings))) for a in strings: nn1 print ("第"str(n)"位是:"a)打印结果&#xff1a…

【PyTorch】成功解决TypeError: iteration over a 0-d tensor

【PyTorch】成功解决TypeError: iteration over a 0-d tensor 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您…

【Java IO流】缓冲流和对象流的解析和应用实例

目录 前言 一、缓冲流 四种方式拷贝文件的用时对比 二、对象流 1. 使用对象流写入对象到本地文件 2. 使用对象流读取对象数据 总结 前言 【File文件管理及IO流(基本流)】http://t.csdnimg.cn/uG5Ff 该篇博客中,介绍了学习高级流需要的…

字节跳动后端工程师实习生笔试题-c++

字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看…

金航标和萨科微总经理宋仕强说,中国还有一个优势就是有全世界最大的半导体消费市场

金航标和萨科微总经理宋仕强说,中国还有一个优势就是有全世界最大的半导体消费市场,有超过1万亿人民币的规模,全球占比34%,领先美国(27%),更大幅领先欧洲和日韩,金航标电子是在的中国…

【C语言】字符分类函数与字符转换函数

1. 字符分类函数 C语言中有⼀系列的函数是专门做字符分类的,也就是⼀个字符是属于什么类型的字符的。 这些函数的使用都需要包含⼀个头文件是 ctype.h 这些函数的使用方法非常类似,我们就讲解⼀个函数的事情: int islower ( int c ); islow…

【测试开发】自动化测试 selenium 篇

目录 一. 什么是自动化测试 二. selenium 1. selenium的工作原理 2. seleniumJava的环境搭建(Chrome浏览器) 三. selenium中常用的API 1. 定位元素 findElement 1.1 css选择语法 1.2 xpath 2. 操作测试对象 2.1 sendKeys-在对象上模拟按键输入 2.2 click-点击对象…

elasticsearch8.12 分词器安装

分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 分词器下载地址 analysis-ik Releases infinilabs/analysis-ik GitHub 一个简便 安装方式 安装完成之后 会提示重启,重启es即可 ./bin/elasticsearch-pl…

配置LVS NAT模式

配置LVS NAT模式 环境准备 client1:eth0->192.168.88.10,网关192.168.88.5lvs1: eth0 -> 192.168.88.5;eth1->192.168.99.5web1:eth1->192.168.99.100;网关192.168.99.5web2:eth1->192.168…

基于C语言的“贪吃蛇”游戏设计理念

3.功能描述:本游戏主要实现以下几种功能 图1.游戏功能模块 3.1. 贪吃蛇的控制功能:通过各种条件的判断,实现对游戏蛇的左移、右移、下移、上移、自由移动,贪吃蛇的加长功能。 3.2. 游戏显示更新功能:当贪吃蛇左右移动、…

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充 code review! —— 杭州 2024-03-17 夜 文章目录 操作系统笔记之进程调用API中的getpid、fork、wait、exec补充1.getpid()2.fork()3.wait()4.exec()5.通常,exec() 调用与 fork() 调用一起使用&#xff…

算法笔记p154最大公约数和最小公倍数

目录 最大公约数辗转相除法证明例子代码实现 最小公倍数代码实现 最大公约数 正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,一般用gcd(a, b)表示a和b的最大公约数。 辗转相除法 设a、b均为正整数,则gcd(a, b) gcd(b, a % b)。即被…

【C语言_字符函数和字符串函数_复习篇】

目录 一、字符函数 1.1 字符分类函数 1.2 字符转换函数 二、字符串函数 2.1 strlen函数 2.1.1 strlen函数的使用 2.1.2 strlen函数的模拟实现 2.2 strcpy函数 2.2.1 strcpy函数的使用 2.2.2 strcpy函数的模拟实现 2.3 strcat函数 2.3.1 strcat函数的使用 2.3.2 strcat函数的…

hololens2发布unity设置

生成vs工程再向hololens发布时, Architecture选X64或ARM64都可以成功发布

es索引操作命令

索引操作 index 创建索引 put 方法创建索引 使用 put 创建索引时必须指明文档id,否则报错 # PUT 创建命令 # test1 索引名称 # type1 类型名称,默认为_doc,已经被废弃 # 1 文档id PUT /test1/type1/1 {"name":"zhangsan&…

【leetcode】二叉树的前序遍历➕中序遍历➕后序遍历

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1. 二叉树的前序遍历2. 二叉树的中序遍历3. 二叉树的后序遍历 1. 二叉树的前序遍历 点击查看题目 根…