AI大模型探索之路-训练篇2:大语言模型预训练基础认知

news2025/1/18 9:48:46

文章目录

  • 前言
  • 一、预训练流程分析
  • 二、预训练两大挑战
  • 三、预训练网络通信
  • 四、预训练数据并行
  • 五、预训练模型并行
  • 六、预训练3D并行
  • 七、预训练代码示例
  • 总结


前言

在人工智能的宏伟蓝图中,大语言模型(LLM)的预训练是构筑智慧之塔的基石。预训练过程通过调整庞大参数空间以吸纳数据中蕴含的知识,为模型赋予从语言理解到文本生成等多样化能力。本文将深入探讨预训练过程中的技术细节、所面临的挑战、通信机制、并行化策略以及如何通过这些技术的融合提升预训练的效率和性能。

一、预训练流程分析

预训练大语言模型涉及对海量参数的优化。这个过程起始于一个简单的前提:

给定输入(X)和相应的输出(Y),模型通过不断迭代学习,不断更新修改参数,使得其生成的输出尽可能接近真实结果(Y)。

当模型输出与实际结果之间的差距—通常由损失函数量化—减小到一个可接受的阈值时,我们可以认为预训练过程达到预期效果。在这个过程中,模型参数经历从随机初始化到精细调整的转变,逐步捕捉并内化语言的复杂规律。
在这里插入图片描述

大语言模型预训练过程核心:
1)输入 Batch 数据
2)前向传播计算损失
3)后向传播计算梯度
4)优化器更新大模型参数
5)反复迭代循环
在这里插入图片描述

二、预训练两大挑战

随着模型规模向百亿甚至千亿参数迈进,预训练任务面临两大主要挑战:
1.显存效率:模型参数量的巨大使得即便是最先进的GPU也难以单独容纳所有参数,这直接导致了显存溢出的问题。例如,一个具有1750亿参数的GPT-3模型,其参数本身就需要消耗约700GB的显存,加上Adam优化器的状态,总共需要超过2.8TB的显存
2.计算效率:巨大的模型参数和海量的训练数据使得计算量激增,导致单机训练时间长达数年,这对于计算资源的有效利用提出了极大的挑战。

三、预训练网络通信

网络通信是多机多GPU预训练过程中不可或缺的环节。点对点通信方式因其一对一的数据交换模式,虽然成本较低,但传输速率较慢,成为速度瓶颈。相对而言,集体通信方式通过同时进行多个进程间的数据传输,大大提升了通信速度,但相应地增加了成本。选择合适的通信方式对于提高预训练效率至关重要。
1.点对点通信:一个进程发送数据,一个进程接收数据,速度慢,成本低。
在这里插入图片描述

2.集体通信:多个进程发送数据,多个进程接收数据,速度快,成本高。

在这里插入图片描述

四、预训练数据并行

1. 数据并行:数据并行是处理大规模数据集的常用策略,它通过将整个数据集分割成多个子集,每张GPU分配一部分数据独立进行模型训练。

在这里插入图片描述

2. 数据并行三个提高效率的技巧
1)梯度分桶:动机是集体通信在大张量上比在小张量上效率更高。
2)计算与通信重叠:有了梯度分桶之后,在等待同一个桶内的梯度计算完后,就可以进行通信操作。
3)跳过梯度同步:梯度累加,减少梯度通信的频次。
在这里插入图片描述

五、预训练模型并行

当单张GPU无法装载整个模型时,模型并行成为解决之道。

1.流水线并行
层间划分,将不同的层划分到不同的 GPU 上;比如:前 3 层在 0 号卡上,后 3 层在 1 号卡上
在这里插入图片描述

2.张量并行
层内划分,切分一个独立的层划分到不同的 GPU 上;比如:0 号卡和 1 号卡分别计算某个层的不同部分
在这里插入图片描述

六、预训练3D并行

3D并行是一种综合性策略,它结合了数据并行、张量并行和流水线并行的优势,以平衡显存利用率和计算效率。在此框架下,每种并行方法承担着不同的角色:数据并行提供高效的计算利用率,张量并行减少单个层的显存占用,而流水线并行则降低跨层通信的频率。

1. 数据并行:计算效率高、实现简单。
• 显存效率:每张卡上都保存了完整的模型、梯度、优化器状态,因此显存效率不高。
• 计算效率:当增加并行度时,单卡的计算量是保持恒定的,可以实现近乎完美的线性扩展。但规约梯度的通信开销,与模型大小成正相关。

2. 张量并行:因模型结构而异,实现难度大。
• 显存效率:随着并行度增加,成比例地减少显存占用。是减少单层神经网络中间激活的唯一方法。
• 计算效率:频繁的通信,限制了两个通信阶段之间的计算量,影响了计算效率,计算效率很低。

3. 流水线并行:通信成本最低
• 显存效率:减少的显存与流水线并行度成正比。但流水线并行不会减少每层中间激活的显存占用。
• 计算效率:成本更低的点对点(P2P)通信。通信量与流水线各个阶段边界的激活值大小成正比。
在这里插入图片描述

4. 3D并行实例
Bloom-176B模型的预训练实施了这种3D并行策略,在NVIDIA A100 GPU上实现了对数万亿Token的训练工作。
在这里插入图片描述

5. 3D 并行训练框架
同时支持数据并行 、流水线并行、张量并行的3D并行训练框架:Microsoft DeepSpeedNVIDIA Megatron
1)Microsoft DeepSpeed:微软开发的优化库,专门用于简化和提高深度学习分布式训练的效率。它通过结合数据并行和其他并行技术,如流水线并行,实现了一种基于3D并行的训练方法。
2)NVIDIA Megatron:由NVIDIA的研究团队开发的一个专为大型Transformer模型设计的训练框架。

七、预训练代码示例

预训练代码简单示例:


import torch
from transformers import AutoTokenizer, AutoModelForMaskedLM

# 加载预训练模型和分词器
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForMaskedLM.from_pretrained(model_name)

# 准备输入数据
input_text = "This is an example sentence."
inputs = tokenizer(input_text, return_tensors="pt")

# 进行前向传播
outputs = model(**inputs)

# 提取预测结果
predictions = outputs.logits

# 输出预测结果
print(predictions)


总结

预训练大语言模型是一项既富有挑战又极具价值的工作。随着模型规模的不断扩大和数据量的激增,如何高效地进行预训练已经成为了AI研究的核心议题。3D并行作为一种先进的预训练框架,不仅解决了单一GPU资源限制的问题,还通过合理的资源分配和优化手段显著提高了预训练的性能。未来的预训练技术将继续沿着这条道路前进,不断探索新的边界,并将机器学习模型推向前所未有的高度。

👉系列篇章:AI大模型探索之路-训练篇1:大语言模型微调基础认知
🔖更多专栏系列文章:AIGC-AI大模型探索之路

文章若有瑕疵,恳请不吝赐教;若有所触动或助益,还望各位老铁多多关注并给予支持。

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

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

相关文章

如何将web content项目导入idea并部署到tomcat

将Web Content项目导入IntelliJ IDEA并部署到Tomcat主要涉及以下几个步骤: 1. 导入Web Content项目 打开IntelliJ IDEA。选择“File” -> “New” -> “Project from Existing Sources…”。浏览到你的Web Content项目的文件夹,并选择它。Intell…

数据结构(C):时间复杂度和空间复杂度

目录 🚀 0.前言 🚀 1.为何会有时间复杂度和空间复杂度的概念 🚀 2.时间复杂度 2.1初步时间复杂度 2.2大O表示法 2.2.1.O(N*N) 2.2.2.O(N) 2.2.3.O(1) 2.3最坏情况…

【Qt】error LNK2001: 无法解析的外部符号

参考:Qt/VS LNK2019/LNK2001:无法解析的外部符号_qt lnk2001无法解析的外部符号-CSDN博客 微软官方报错文档-链接器工具错误 LNK2019 __declspec error LNK2001: 无法解析的外部符号 "__declspec(dllimport) 原因 以这种为前缀的基本上跟库相关…

微信小程序:11.本地生活小程序制作

开发工具: 微信开发者工具apifox进行创先Mock 项目初始化 新建小程序项目输入ID选择不使用云开发,js传统模版在project.private.config中setting配置项中配置checkinalidKey:false 梳理项目结构 因为该项目有三个tabbar所以我们要创建三…

点击消除

点击消除 描述: 对一个字符串,每次“点击”,可以把字符串中相邻两个 相同字母消除。 例如,字符串"abbc"点击后可以生成"ac"。 但相同而不相邻、不相同的相邻字母都是不可以被消除的。 如果想把字符串变得…

比亚迪24届春招Offer面经

本文介绍2024届春招中,比亚迪的高级底盘工程师岗位1场面试的基本情况、提问问题等。 2024年04月投递了比亚迪的系统开发类、 技术研发类、 技术研究类岗位,面试结束后分配至高级底盘工程师岗位;面试前未确定部门,面试结束后分配至…

关于OSPF报文学习

目录 一.OSPF学习补充 (1)OSPF报文头部 (2)ospf建立邻居关系 1.Hello报文——建立邻居关系 2.hello报文头部 (3)OSPF建立邻接关系 1.发送DD报文 2.DD报文头部 (4)关于DR,BD…

Blender点操作

顶点操作即一般的“布线”操作 1.顶点移动 -先切到顶点模式 -移动,G 或 G X/Y/Z -旋转,R 同上 -缩放,S 同上 2.顶点滑移,用于微调顶点的位置 快捷键:Shift V,G G 3.顶点删除 -选中一个顶点 -按…

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题?数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题? 也叫多目标车间调度问题。 柔性作业车间调…

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目,需要学习以下相关知识: package.json 如何初始化配置,以及学习npm配置项; 模块类型type配置, 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

golang反射

go反射 反射基本介绍应用场景基本使用结构体注意练习最佳实践遍历结构体的方法,调用接头体的方法,获取结构体的标签 反射 基本介绍 反射可以在运行时动态获取变量的各种信息,比如变量的类型(type)、类别(kind)如果是结构体变量,…

Java应用开发必备:使用 easy-captcha 组件生成验证码的详细介绍

一、前言 最近系统开发在优化验证码的相关功能,第一反应就是有没有开源的第三方组件可以使用呢。 在一番寻觅以后,还真发现一个好用的第三方验证码组件Easy-captcha。Easy-captcha是一个开源的Java库,用于生成和验证验证码,它的…

RGB灯珠的控制-单片机通用模板

RGB灯珠的控制-单片机通用模板 一、RGB控制的原理二、RGB.c的实现三、RGB.h的实现四、color色彩空间变换以及控制渐变一、RGB控制的原理 ①通过IO发送脉冲识别0/1编码,组合24Bit的RGB数据,从而控制RGB;②每个RGB灯珠通过DIN、DOU进行级联起来;③通过HSV色彩转换成RGB从而控…

Tomcat架构设计精髓分析-Connector高内聚低耦合设计

优秀的模块化设计通常都会采用高内聚、低耦合 高内聚是指相关度比较高的功能要尽可能集中,不要分散。低耦合是指两个相关的模块要尽可能减少依赖的部分和降低依赖的程序,不要让两个模块产中强依赖。 Tomca连接器需要实现的功能: 监听网络端口 接受网络…

手撕netty源码(一)- NioEventLoopGroup

文章目录 前言一、NIO 与 netty二、NioEventLoopGroup 对象的创建过程2.1 创建流程图2.2 EventExecutorChooser 的创建 前言 processOn文档跳转 本文是手撕netty源码系列的开篇文章,会先介绍一下netty对NIO关键代码的封装位置,主要介绍 NioEventLoopGro…

使用PyCharm开发工具创建工程

一. 简介 前面文章实现了开发 python程序使用的 开发工具PyCharm,本文来学习使用 PyCharm开发工具创建一个 python工程。 二. 使用PyCharm开发工具创建工程 1. 首先,打开 PyCharm开发工具,打开 "New project" 选项: …

hive启动beeline报错

问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;

java接口加密解密

这里写目录标题 controller加解密工具类加密(本质是对ResponseBody加密)解密(本质是对RequestBody传参解密)注解 controller Controller public class PathVariableController {GetMapping(value "/test")ResponseBod…

Redis缓存问题:穿透,击穿,雪崩等

Redis缓存问题:穿透,击穿,雪崩等 在高并发场景下,数据库往往是最薄弱的环节,我们通常选择使用redis来进行缓存,以起到缓冲作用,来降低数据库的压力,但是一旦缓存出现问题,也会导致数据库瞬间压力过大甚至崩溃,从而导致整个系统崩溃.今天就聊聊常见的redis缓存问题. 缓存击穿 …

相关分析方法

目录 1.什么是相关分析方法 2.相关系数 3.常见的相关分析方法 3.1.皮尔逊相关系数 3.2.斯皮尔曼等级相关 ​​​​​​​3.3.肯德尔等级相关 ​​​​​​​3.4.其它 4.应用 5.注意事项 6.结语 1.什么是相关分析方法 相关分析是数据分析中的一种统计方法&#xff0c…