大型语言模型(LLMs)是怎样“学习”的?一封给网络工程师的大模型指南

数字时代,人工智能(AI)及其相关技术正日益成为许多领域的热门话题。其中,生成式人工智能(Gen AI)和大型语言模型(LLMs)引起了广泛的兴趣和讨论。然而,尽管这些术语在科技界和专业领域中频繁出现,网络工程师对其的理解却不多。

什么是生成式人工智能和大型语言模型?本文将为大家介绍大型语言模型和生成式人工智能的基本概念、应用领域及大语言模型的运行原理,阅读本文后您将更全面地了解这些领域的前沿技术,我们一同踏上这段探索新领域的科普之旅吧!

什么是生成式人工智能和大型语言模型?

“生成式人工智能(Generative AI,一般简称为Gen AI)”是一种人工智能技术,专注于创造或生成新的内容,例如图像、文本或音乐。这些内容不是直接复制或派生自现有的示例,而是由计算机自己创造的。生成式AI的一个重要应用是生成文本,比如自动写作、诗歌创作或对话生成。

“大型语言模型(Large Language Models,LLMs)”是一类生成式AI,它们通过深度学习算法在大量自然语言数据上进行训练。这些模型学习人类语言的模式和结构,并能够对各种书面输入或提示生成类似人类的回应。最近的LLMs表现出了接近人类的水平,例如GPT-3.5,它能够产生几乎完美的文本回应。

这些近乎完美的类人化回应,包括来自chatGPT和其他最近的LLMs,得益于模型架构的进步。这些模型采用高效的具有数十亿个参数的深度神经网络(DNNs)经过大规模数据集的训练得出,其中大部分参数被用于训练和推理的矩阵权重。而训练这些模型的浮点运算次数(FLOP)几乎与参数数量和训练集大小成线性关系。这一系列运算是在专门用于矩阵运算的处理器上执行的,例如图形处理单元(GPUs)、张量处理单元(TPUs)和其他专用的AI芯片等。GPU、TPU、AI加速器以及它们之间的通信互联技术的进步让庞大模型训练成为现实。

LLMs有哪些应用?

大型语言模型(LLMs)具有许多用例,几乎每个行业都可以从中受益。不同的组织可以根据自身的特定需求和领域对模型进行微调。微调是指在特定数据集上对预先存在的语言模型进行训练,使其更专业化并适应特定任务。通过微调,组织可以在利用这些训练模型预先存在能力的同时,将其调整得能够满足自己得独特需求,这让模型能够获取领域特定的知识,从而提高其生成组织用例所需输出的能力。通过微调的模型,组织可以在多个用例中使用LLMs。

例如,根据公司文档进行微调的LLMs可用于客户支持。LLMs可以通过创建代码或支持他们创建部分代码来帮助软件工程师。当与组织的专有代码库进行微调时,LLMs有可能生成类似于并符合现有代码库的软件。

LLMs的众多用例包括用于评估客户反馈的情绪分析、将技术文档翻译成其他语言、总结会议和客户电话以及生成工程和营销内容。

随着这些LLMs的规模持续呈指数级增长,对计算和互连资源的需求也显着增加。只有当模型的训练和微调以及推理有足够成本效益时,LLMs才会被广泛采用。

LLMs如何使用深度学习算法进行训练?

为了使用自然语言文本训练LLM,通常需要收集大量数据,包括网络抓取(爬取网页)、维基百科、GitHub、Stack Exchange、ArXiv等。大多数模型通常使用开放数据集进行训练。这些数据集中的大量文本首先会进行标记化,通常使用字节对编码等方法。标记化将来自互联网的原始文本转换为整数序列(标记,tokens)。一个标记(唯一整数)可以表示一个字符或一个单词,甚至可以是单词的一部分。例如,单词“unhappy”可能会被分成两个标记——一个表示子词“un”,另一个表示子词“happy”。

比如这段文本先被标记化,再被编码化

根据数据集的不同,可能会有成千上万个唯一标记,数据集本身可能映射到数千亿个标记。序列长度是模型在训练过程中预测下一个标记时要考虑的连续标记的数量。GPT-3和LLaMA(Meta的LLM)的序列长度约为2000。一些模型使用的序列长度甚至达到10万。表1比较了GPT-3和LLaMA模型的训练参数。

为了训练模型,标记被分成大小为batch_size(B)x序列长度的数组,然后将这些批次馈送给大型神经网络模型。训练通常需要几周,甚至几个月,并且需要大量的GPU集群。

模型参数GPT-3 LargeLLaMA
词汇量大小50,25732,000
序列长度2,0482,048
最大训练模型参数1750亿650亿
训练数据集中的标记数3000亿1到1.3万亿
GPU数量10,000 x V100 GPUs2,048 x A100 GPUs
训练时间一个月21天

一旦基础模型训练完成,通常会进行监督微调(Fine-Tuning,SFT)。这是一个可以让LLMs扮演助手角色,回答人们提示问题的重要步骤。在有监督微调中,人们会创建一个精心策划的数据集(数量较少但质量很高的数据集),其中包含提示和响应的形式,然后使用这个数据集重新训练基础模型。经过训练的SFT模型会成为一个能对用户提示作出类似人类回应的助手。

以上是对LLMs的简单解释,接下来将直接讲述LLMs的模型计算过程。(敲黑板,上强度了!)

模型计算

一个具有1750亿参数的模型通常需要超过1TB的内存来存储参数和计算过程中的中间状态。它还需要存储检查点的训练状态(以防在训练迭代过程中遇到硬件错误)。一万亿个标记通常需要4TB的存储空间。像Nvidia的H100这样的高端GPU具有80GB的集成HBM内存(如果想用H100装下一个一万亿标记的模型,需要4TB➗80GB=51.2张卡)。一个GPU的内存是无法容纳模型参数和训练集的。

根据维基百科的说法,大型语言模型(LLM)通常每个参数和标记需要进行六次浮点运算(FLOP)。这相当于对GPT-3模型进行训练需要进行3.15 x 10^23次浮点运算,其中GPT-3模型的训练耗时为三周。因此,在这三周的时间内,它需要5.8 x 10^16次每秒的浮点运算能力(FLOPs)。

一卡难求的H100长这样

然而,尽管Nvidia的最高性能H100 GPU在FP32模式下可以达到约67 TeraFLOPS(每秒万亿次),但在许多训练工作负载中,由于内存和网络瓶颈,GPU的利用率通常只能维持在30%左右。因此,为了满足训练需求,我们需要三倍数量的GPU,大约是6,000个H100 GPU。原始的LLM模型(表1)是使用较旧版本的GPU进行训练的,因此需要10,000个GPU。

由于有成千上万个GPU,模型和训练数据集需要在这些GPU之间进行分区,以实现并行运行。并行性可以在多个维度上发生。

数据并行性

数据并行性(Data Parallelism)涉及将训练数据分割到多个GPU上,并在每个GPU上训练模型的副本。典型流程包含数据分布、数据复制、梯度计算、梯度聚合、模式更新和重复等。

  1. 数据分布:训练数据被划分为小批量,并在多个GPU之间分布。每个GPU获得一个独特的小批量训练集。
  2. 模型复制:模型的副本被放置在每个GPU上(也称为工作节点)。
  3. 梯度计算:每个GPU执行一次模型训练迭代,使用其小批量数据进行前向传播以进行预测,并进行反向传播以计算梯度(这些梯度指示模型参数在下一次迭代之前应如何调整)。
  4. 梯度聚合:来自所有GPU的梯度被汇总在一起。通常通过计算梯度的平均值来完成此步骤。
  5. 模型更新:汇总的梯度被广播到所有GPU。各个GPU更新其本地模型参数并进行同步。
  6. 重复:此过程重复多次,直到模型完全训练完成。

数据并行性可以在使用大型数据集时显著加快训练速度。然而,它可能会导致大量的GPU间通信,因为每个GPU都必须与训练中涉及的其他GPU通信。这种全对全的通信(All-to-All)可能会在每次训练迭代中在网络中产生大量的流量。

训练大型语言模型(LLMs)时,我们使用了一些方案,例如环形全局归约(Ring All-Reduce),将梯度以环形模式从一个GPU发送到另一个GPU。在这个过程中,每个GPU将其从前一个GPU接收到的梯度与本地计算的梯度进行聚合,然后将其发送到下一个GPU。然而,这个过程非常缓慢,因为梯度聚合分布在多个GPU之间,最终结果需要在环形拓扑中传播回所有GPU。如果网络拥塞,GPU之间的流量会因等待聚合梯度而停滞。

此外,具有数十亿参数的LLMs无法适应单个GPU。因此,仅靠数据并行性无法满足LLM模型的需求。

模型并行性

模型并行性(Model Parallelism)旨在解决模型无法适应单个GPU的情况,通过将模型参数(和计算)分布到多个GPU上。典型的流程包含模型分区、前向传播、反向传播、参数更新、重复等。

  1. 模型分区:将模型划分为若干个分区,每个分区分配给不同的GPU。由于深度神经网络通常包含一系列垂直层,因此按层次划分大型模型是合乎逻辑的,其中一个或一组层可能分配给不同的GPU。
  2. 前向传播:在前向传播过程中,每个GPU使用“整个”训练集计算其模型部分的输出。一个GPU的输出作为下一个GPU的输入传递。下一个GPU在接收到前一个GPU的更新之前无法开始处理。
  3. 反向传播:在反向传播过程中,一个GPU的梯度传递给序列中的前一个GPU。在接收到输入后,每个GPU计算其模型部分的梯度。与前向传播类似,这在GPU之间创建了顺序依赖关系。
  4. 参数更新:每个GPU在其反向传播结束时更新其模型部分的参数。需要注意的是,这些参数不需要广播到其他GPU。
  5. 重复:此过程重复多次,直到模型在所有数据上训练完成。

流水线并行性

流水线并行性(Pipeline Parallelism)将数据并行性和模型并行性相结合,其中训练数据集的每个小批量进一步分成几个微批量。在上面的模型并行性示例中,一个GPU使用第一个微批量计算输出,并将该数据传递给序列中的下一个GPU。与在反向传播中等待从该GPU获取输入不同,它开始处理训练数据集的第二个微批量,依此类推。这增加了GPU之间的通信,因为每个微批量都需要在序列中相邻的GPU之间进行前向传播和反向传播的通信。

张量并行性

张量并行性(Tensor Parallelism)是一种用于加速深度学习模型训练的技术。与模型并行和流水线并行技术不同,张量并行性在操作级别(或“张量”级别)上划分模型,而不是在层级别上划分。这种方法允许更精细的并行处理,对某些模型来说更高效。

具体来说,张量并行性的步骤如下:

  1. 模型分区:将模型划分为多个操作(或“张量”),每个操作分配给不同的GPU。这样,每个GPU只负责计算部分操作的输出。
  2. 前向传播:在前向传播过程中,每个GPU使用整个训练集计算其操作部分的输出。一个GPU的输出作为下一个GPU的输入传递。这样,模型的计算被分散到多个GPU上。
  3. 反向传播:在反向传播过程中,梯度从一个GPU传递到序列中的前一个GPU。每个GPU计算其操作部分的梯度。与前向传播类似,这也创建了GPU之间的顺序依赖关系。
  4. 参数更新:每个GPU在其反向传播结束时更新其操作部分的参数。这些参数不需要广播到其他GPU。

数据并行性、模型并行性、流水并行性、张量并行性……没搞懂不同并行技术的处理逻辑?下面这个案例或许可以给你一些启发,相信作为网工的你一定能很快理解~

假设我们有2台机器(node0和node1),每台机器上有8块GPU,GPU的编号为0~15。

我们使用这16块GPU,做MP/DP/TP/PP混合并行,如下图:

MP:模型并行组(Model Parallism):

假设一个完整的模型需要布在8块GPU上,则如图所示,我们共布了2个model replica(2个MP)。MP组为:[[g0, g1, g4, g5, g8, g9, g12, g13], [g2, g3, g6, g7, g10, g11, g14, g15]]

TP:张量并行组(Tensor Parallism)

对于一个模型的每一层,我们将其参数纵向切开,分别置于不同的GPU上,则图中一共有8个TP组。TP组为:[[g0, g1], [g4, g5],[g8, g9], [g12, g13], [g2, g3], [g6, g7], [g10, g11], [g14, g15]]

PP:流水线并行组(Pipeline Parallism):

对于一个模型,我们将其每一层都放置于不同的GPU上,则图中一共有4个PP组。PP组为:[[g0, g4, g8, g12], [g1, g5, g9, g13], [g2, g6, g10, g14], [g3, g7, g11, g15]]

DP:数据并行组(Data Parallism):

经过上述切割,对维护有相同模型部分的GPU,我们就可以做数据并行,则图中共有8个DP组。DP组为[[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14], [g13, g15]]

读完本文,相信你对训练大语言模型(LLMs)的三个步骤已经很熟悉:

  1. 通过网络抓取等方式进行数据集集成;
  2. 将源文本分割为标记;
  3. 通过模型参数并行处理的方式进行模型训练

相信你也对大数据模型的多种并行类型有了初步认识:无论使用何种并行性类型,LLM 凭借其参数和数据集的庞大规模,都会通过连接这些 GPU 的结构产生大量的 GPU 间流量。结构中的任何拥塞都可能导致训练时间过长且 GPU 利用率极低。之后将继续推出AI系列科普文,为大家介绍GPU/TPU 集群设计,以了解互连以及它们如何进行 LLM 训练。

实际应用中,训练完大语言模型(LLMs)之后,需要对模型进行微调以满足不同组织(企业)的个性化需求,该如何优化LLMs模型?后续的推文将为您解答这些疑惑。

星融元作为一家网络公司,为什么会那么关注AI、LLMs这些看似与自身业务关系不大的领域,甚至开辟专栏为网络工程师科普相关知识?主要出于技术和市场竞争方面的考虑。

1.技术方面,网络在大语言模型(LLMs)的训练过程中至关重要:

LLMs训练之初便需要通过网络抓取大量的数据集成数据集,数据集中的大量参数和数据需要通过网络传输到GPU上进行并行处理,网络连接的质量直接影响了数据传输的速度和效率。LLMs的训练会涉及到多个GPU的协同工作,连接这些GPU的网络结构会产生大量的GPU间流量,如果网络拥塞,数据传输会受到影响,导致训练时间过长且GPU利用效率降低。

因此,网络的稳定性、速度和带宽都对LLMs的训练效果至关重要。网络拥塞可能导致训练效率下降,因此需要优化网络架构,确保数据传输的高效性。

2.市场竞争方面,AI离不开LLMs训练,市场潜力无穷:

人工智能作为人们高度关注的热点话题,在许多领域拥有巨大的市场潜力。LLMs训练完毕后,大模型与用户的交互过程中(如chatGPT爆火,全球很多用户都在使用的情况),网络质量会直接影响用户对Gen AI应用的体验。拥有先进技术和工具是企业保持竞争优势的关键,星融元顺势而为,持续关注智算市场的发展,并推出HPC、AI等场景的网络解决方案,为用户提供良好的网络环境,实现用户与自身的双赢!

参考:Large Language Models – The Hardware Connection (juniper.net)
数据并行(DP)、张量模型并行(TP)、流水线并行(PP)_tp pp dp-CSDN博客

关注vx公号“星融元Asterfusion”,获取更多技术分享和最新产品动态。

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

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

相关文章

哪些博客类型是最受欢迎的?

在创建博客时,您可能会想到的最常见的问题之一是哪些是最受欢迎的博客类型?有许多不同类型的博客涉及广泛的主题,兴趣和受众。对于一个成功的博客,你需要提前计划并选择适合你的利基市场。在本文中,我们将分享您可以立…

在IDEA中如何用Kafka进行异步处理

在IDEA的项目中使用Kafka进行异步处理 在项目的pom.xml文件中&#xff0c;添加以下依赖&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.5.0</version> </dep…

旋转矩阵(将坐标轴旋转)

旋转矩阵&#xff08;将坐标轴旋转&#xff09; 在二维空间中&#xff0c;旋转可以用一个单一的角 定义。作为约定&#xff0c;正角表示逆时针旋转。把笛卡尔坐标的列向量关于原点逆时针旋转的矩阵是&#xff1a; 原坐标系下 坐标系逆时针旋转β 补充 sin(-a) -sin(a) co…

C++中的匿名对象

在C中&#xff0c;匿名对象指的是没有显式命名的临时对象。这些对象通常在表达式中创建并使用&#xff0c;然后很快就被销毁。匿名对象是一种非常有用的编程工具&#xff0c;它们可以用于简化代码、进行函数调用或者作为其他对象的初始化值。 特点和用途 立即销毁&#xff1a…

Python 正则表达式 re.match() 和 re.search() 方法

Python re.match 和 re.search 方法 正文re.match() 方法示例一示例二 re.search()示例一示例二 正文 re.match() 方法 调用方法&#xff1a; re.match(pattern, string, flags0)用法说明&#xff1a; 该函数在字符串的起始位置处进行匹配&#xff0c;若匹配到则返回该值&am…

Google Pixel4手机刷机+Root+逆向环境详细教程

Google Pixel4手机刷机Root逆向环境配置详细教程 刷机工具下载 Windows10、Google Pixel4手机当前安卓10系统、adb工具、要刷的谷歌原生的Android11最新刷机包、安装google usb驱动、美版临时twrp-3.6.0_11-0-flame.img和美版永久twrp-installer-3.6.0_11-0-flame.zip、Magis…

程序员有什么实用神器?

程序员的实用神器 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 程序员常用的一些神器包括&#xf…

C++ map set

一.关联式容器 在初期学过的vector、list、deque、forward_list(C11)等&#xff0c;底层都为线性序列的序列式容器。 关联式容器是用来存储数据的&#xff0c;于序列式容器不同的是&#xff0c;里面存储的是<key,value>结构的键值对&#xff0c;在数据检索时比序列式容…

qiankun实现微前端,vue3为主应用,分别引入vue2和vue3微应用

1、vue3主应用配置 1、安装 qiankun yarn add qiankun # 或者 npm i qiankun -S2、在主应用中注册微应用 import { registerMicroApps, start } from "qiankun" const apps [{ name: vue2App, // 应用名称 xs_yiqing_vue2entry: //localhost:8080, // vue 应用…

apk一键换包名工具

工作需要 手动撸了个一键换包名的工具 1 给AndroidManifest.xml修改包名(修改完成后会覆盖原来的文件) java -jar xmleditor-1.0.jar -pkg [AndroidMainifest.xml] 2 给apk修改包名(修改完成后会在当前目录下生成一个新的apk) java -jar xmleditor-1.0.jar -pkgapk [xxx.ap…

C语言(递归)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

数据结构——实现通讯录(附源码)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

layui的treeTable组件,多层级上传按钮失效的问题解决

现象描述: layui的treeTable 的上传按钮在一层能用&#xff0c;展开后其他按钮正常点击&#xff0c;上传按钮无效。 具体原因没有深究&#xff0c;大概率是展开的子菜单没有被渲染treeTable的done管理到&#xff0c;导致没有重绘上传按钮。 解决方案: 不使用layu的上传组件方法…

C语言常见的动态内存错误及几个经典笔试题以及c/c++内存开辟空间等的介绍

文章目录 前言一、常见的动态内存错误1. 对NULL指针的解引用操作2. 对动态开辟空间的越界访问3. 对非动态开辟内存使用free()4. 使用free释放一块动态开辟内存的一部分5. 对同一块动态内存多次释放6. 动态开辟内存忘记释放&#xff08;内存泄漏&#xff09; 二、几个经典笔试题…

rust容器、迭代器

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;点击跳转 目录 一&#xff0c;std容器 1&#xff0c;Vec&#xff08;向量、栈&#xff09; 2&#xff0c;VecDeque&#xff08;队列、双端队…

邦注科技 模具保护器 CCD电子眼 专业工业视觉检测设备

模具保护器是一种用于保护模具的设备&#xff0c;可以在塑料压铸和冲床等加工过程中起到保护模具的作用。以下是关于模具保护器在保护塑料压铸和冲床模具方面的应用&#xff1a; 塑料压铸模具保护器&#xff1a; 防止碰撞&#xff1a;在塑料压铸过程中&#xff0c;模具可能会…

Vue 3中,`toRef` 和 `toRefs`

在Vue 3中&#xff0c;toRef 和 toRefs 是两个帮助函数&#xff0c;它们用于从 reactive 对象中提取出响应式的引用。这两个函数在处理复杂的响应式状态或者在组合式API中非常有用。 ### toRef toRef 创建一个 ref 对象&#xff0c;它是一个对于 reactive 对象中某个属性的响…

MindSponge分子动力学模拟——安装与使用

技术背景 昇思MindSpore是由华为主导的一个&#xff0c;面向全场景构建最佳昇腾匹配、支持多处理器架构的开放AI框架。MindSpore不仅仅是软件层面的工具&#xff0c;更重要的是可以协同华为自研的昇腾Ascend平台&#xff0c;做到软硬件一体的行业解决方案。基于MindSpore的高通…

解析源代码安全的防泄密解决途径

随着各行各业业务数据信息化发展&#xff0c;各类产品研发及设计等行业&#xff0c;都有关乎自身发展的核心数据&#xff0c;包括业务数据、代码数据、机密文档、用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; 属于核心机密资料&#xff0c;万一泄密会对…

YOLOv9全网最新改进系列:YOLOv9完美融合标准化的注意力模块NAM,高效且轻量级的归一化注意力机制,助力目标检测再上新台阶!

YOLOv9全网最新改进系列&#xff1a;YOLOv9完美融合标准化的注意力模块NAM&#xff0c;高效且轻量级的归一化注意力机制&#xff0c;助力目标检测再上新台阶&#xff01;&#xff01;&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全…