1688做网站需要多少钱,修改wordpress wp-admin,宁波网站建设服务服务商,外贸公司建网站一般多少钱概述
大型语言模型 取得了显著进步。GPT-4、谷歌的 Gemini 和 Claude 3 等模型在功能和应用方面树立了新标准。这些模型不仅增强了文本生成和翻译#xff0c;还在多模态处理方面开辟了新天地#xff0c;将文本、图像、音频和视频输入结合起来#xff0c;提供更全面的 AI 解…概述
大型语言模型 取得了显著进步。GPT-4、谷歌的 Gemini 和 Claude 3 等模型在功能和应用方面树立了新标准。这些模型不仅增强了文本生成和翻译还在多模态处理方面开辟了新天地将文本、图像、音频和视频输入结合起来提供更全面的 AI 解决方案。
例如OpenAI 的 GPT-4 在理解和生成类似人类的文本方面表现出了显著的进步而谷歌的 Gemini 模型则擅长处理各种数据类型包括文本、图像和音频从而实现更无缝和上下文相关的交互。同样Anthropic 的 Claude 3 模型以其多语言能力和在 AI 任务中的增强性能而闻名。
随着 LLM 的发展不断加速了解这些模型的复杂性尤其是它们的参数和内存要求变得至关重要。本指南旨在揭开这些方面的神秘面纱提供详细且易于理解的解释。 原文地址https://www.unite.ai/understanding-large-language-model-parameters-and-memory-requirements-a-deep-dive/
大型语言模型的基础知识
什么是大型语言模型
大型语言模型是使用海量数据集训练的神经网络用于理解和生成人类语言。它们依赖于 Transformers 之类的架构这些架构使用自注意力等机制来处理和生成文本。
LLM 中参数的重要性
参数是这些模型的核心组成部分。它们包括权重和偏差模型会在训练期间调整这些参数以尽量减少预测误差。参数的数量通常与模型的容量和性能相关但也会影响其计算和内存需求。
了解 Transformer 架构 概述
Vaswani 等人在 2017 年发表的论文《Attention Is All You Need》中引入的 Transformer 架构已成为许多 LLM 的基础。它由一个编码器和一个解码器组成每个编码器和解码器都由多个相同的层组成。
编码器和解码器组件
Encoder 编码器处理输入序列并创建上下文感知表示。解码功能使用编码器的表示和先前生成的标记生成输出序列。
关键构建模块
多头注意力使模型能够同时关注输入序列的不同部分。前馈神经网络给模型增加了非线性和复杂性。层标准化通过规范中间输出来稳定和加速训练。
计算参数数量 计算基于 Transformer 的 LLM 中的参数
让我们分解一下基于 Transformer 的 LLM 的每个组件的参数计算。我们将使用原始论文中的符号其中 d_model 表示模型隐藏状态的维度。
嵌入层: Parameters vocab_size * d_model 多头注意力: For h heads, with d_k d_v d_model / h:Parameters 4 * d_model^2 (for Q, K, V, and output projections) 前馈网络: Parameters 2 * d_model * d_ff d_model d_ffWhere d_ff is typically 4 * d_model 层标准化: Parameters 2 * d_model (for scale and bias)
一个Transformer层的总参数
Parameters_layer Parameters_attention Parameters_ffn 2 * Parameters_layernorm
对于具有 N 层数
Total Parameters N * Parameters_layer Parameters_embedding Parameters_output
示例计算
让我们考虑具有以下规格的模型
d_model 768h (number of attention heads) 12N (number of layers) 12vocab_size 50,000
嵌入层: 50,000 * 768 38,400,000 多头注意力: 4 * 768^2 2,359,296 前馈网络: 2 * 768 * (4 * 768) 768 (4 * 768) 4,719,616 层标准化: 2 * 768 1,536
每层总参数
2,359,296 4,719,616 (2 * 1,536) 7,081,984
12层的总参数
12 * 7,081,984 84,983,808
模型参数总计
84,983,808 38,400,000 123,383,808
该模型大约有 123 亿个参数。
内存使用类型
使用 LLM 时我们需要考虑两种主要类型的内存使用情况
模型内存存储模型参数所需的内存。工作内存推理或训练期间所需的内存用于存储中间激活、梯度和优化器状态。
计算模型内存
模型内存与参数数量直接相关。每个参数通常存储为 32 位浮点数尽管有些模型使用 16 位浮点数进行混合精度训练。
模型内存字节 参数数量 * 每个参数的字节数
对于具有 123 亿个参数的示例模型
型号内存32 位 123,383,808 * 4 字节 493,535,232 字节 ≈ 494 MB型号内存16 位 123,383,808 * 2 字节 246,767,616 字节 ≈ 247 MB
评估工作内存
根据具体任务、批次大小和序列长度工作内存要求可能会有很大差异。推理过程中的工作内存粗略估计为
工作内存 ≈ 2 * 模型内存
这用于存储模型参数和中间激活。在训练期间由于需要存储梯度和优化器状态内存要求可能更高
训练内存 ≈ 4 * 模型内存
对于我们的示例模型
推理工作内存 ≈ 2 * 494 MB 988 MB ≈ 1 GB训练内存 ≈ 4 * 494 MB 1,976 MB ≈ 2 GB
稳定状态内存使用情况和峰值内存使用情况
在基于 Transformer 架构训练大型语言模型时了解内存使用情况对于高效分配资源至关重要。让我们将内存需求分为两大类稳定状态内存使用情况和峰值内存使用情况。
稳定状态内存使用情况
稳定状态内存使用情况包括以下部分
型号重量FP32 模型参数的副本需要 4N 字节其中 N 是参数的数量。优化器状态对于 Adam 优化器这需要 8N 字节每个参数 2 个状态。渐变渐变的FP32副本需要4N字节。输入数据假设输入为 int64这需要 8BD 字节其中 B 是批量大小D 是输入维度。
总的稳定状态内存使用量可以近似为
M_steady 16N 8BD 字节
峰值内存使用率
在反向传递期间当激活被存储用于梯度计算时内存使用量达到峰值。造成内存峰值的主要因素有
层标准化每层标准需要 4E 字节其中 E BSHB批量大小S序列长度H隐藏大小。注意力障碍: QKV计算2E字节注意力矩阵4BSS 字节S序列长度注意输出2E字节 前馈模块: 第一线性层2E 字节GELU 激活8E 字节第二线性层2E 字节 交叉熵损失: Logits6BSV 字节V词汇量
总激活内存可以估算为
M_act L * (14E 4BSS) 6BSV 字节
其中 L 是 Transformer 层的数量。
总峰值内存使用量
训练期间的峰值内存使用量可以通过结合稳态内存和激活内存来近似
M_peak M_steady M_act 4BSV 字节
额外的 4BSV 项解释了在后向传递开始时的额外分配。
通过了解这些组件我们可以优化训练和推理期间的内存使用情况确保高效的资源分配并提高大型语言模型的性能。
缩放定律和效率考虑
LLM 的缩放定律
研究表明随着参数数量的增加LLM 的性能趋向于遵循某些缩放规律。Kaplan 等人 (2020) 观察到模型性能随着参数数量、计算预算和数据集大小的幂律而提高。
模型性能和参数数量之间的关系可以近似为
绩效∝N^α
其中 N 是参数的数量α 是缩放指数对于语言建模任务通常约为 0.07。
这意味着为了实现 10% 的性能提升我们需要将参数数量增加 10^(1/α) ≈ 3.7 倍。
效率技巧
随着LLM课程的不断发展研究人员和实践者已经开发出各种技术来提高效率
a) 混合精度训练对某些操作使用 16 位甚至 8 位浮点数以减少内存使用和计算要求。
b) 模型并行将模型分布在多个 GPU 或 TPU 上以处理超出单个设备容量的更大模型。
c) 梯度检查点通过在反向传递过程中重新计算某些激活而不是存储它们来用计算换取内存。
d) 修剪和量化删除不太重要的权重或降低其训练后的精度以创建更小、更高效的模型。
e) 蒸馏训练较小的模型来模仿较大模型的行为有可能用更少的参数保留大部分性能。
实例和计算
GPT-3 是最大的语言模型之一拥有 175 亿个参数。它使用了 Transformer 架构的解码器部分。为了了解它的规模让我们用假设值来分解参数数量
d_model 12288d_ff 4 * 12288 49152层数 96
对于一个解码器层
总参数 8 * 12288^2 8 * 12288 * 49152 2 * 12288 ≈ 1.1 亿
共计 96 层
1.1亿*96105.6亿
其余参数来自嵌入和其他组件。
结论
了解大型语言模型的参数和内存需求对于有效设计、训练和部署这些强大的工具至关重要。通过分解 Transformer 架构的组件并研究 GPT 等实际示例我们可以更深入地了解这些模型的复杂性和规模。