Transformer大模型在训练过程中所需的计算量

目录

  • 简介
  • 计算需求
    • 参数与数据集的权衡
    • 计算成本的工程意义
  • 内存需求
    • 推理
      • 模型权重
      • 总推理内存
    • 训练
      • 模型参数
      • 优化器状态
      • 梯度
      • 激活值和批大小
      • 总训练内存
    • 分布式训练
      • 分片优化器
      • 3D 并行
      • 分片优化器 + 3D 并行
    • 参考

简介

许多关于Transformer语言模型的基本且重要的信息都可以用相当简单的方式计算出来。不幸的是,这些计算公式在NLP社区中并不广为人知。本文档的目的是收集这些公式,以及相关的知识,包括它们的来源和重要性。

**注意:**本文主要关注训练成本,而训练成本主要受VRAM的限制。有关推理成本的类似讨论,重点关注延迟,请查看Kipply撰写的这篇优秀的博客文章。

计算需求

计算训练Transformer模型成本的基本公式如下:

C ≈ τ T = 6 P D C\approx\tau T = 6PD CτT=6PD

其中:

  • C C C 是训练Transformer模型所需的总计算量,以浮点运算次数表示
  • C = C forward + C backward C=C_{\text{forward}}+C_{\text{backward}} C=Cforward+Cbackward
  • C forward ≈ 2 P D C_{\text{forward}}\approx2PD Cforward2PD
  • C backward ≈ 4 P D C_{\text{backward}}\approx4PD Cbackward4PD
  • τ \tau τ 是硬件设置的总吞吐量( τ = ( GPU数量 ) × ( 实际FLOPs / GPU ) \tau=(\text{GPU数量}) \times (\text{实际FLOPs}/\text{GPU}) τ=(GPU数量)×(实际FLOPs/GPU)),以FLOPs为单位
  • T T T 是训练模型所花费的时间,以秒为单位
  • P P P 是Transformer模型中的参数数量
  • D D D 是数据集大小,以token为单位

这些公式在 OpenAI’s scaling laws paper and DeepMind’s scaling laws paper中提出并经过实验验证。有关更多信息,请参阅每篇论文。

值得一提的是,我们需要讨论一下 C C C 的单位。 C C C 是总计算量的度量,但可以用许多单位来衡量,例如:

  • FLOP-s,单位为 [ 浮点运算次数 秒 ] × [ 秒 ] [\frac{\text{浮点运算次数}}{\text{秒}}] \times [\text{秒}] [浮点运算次数]×[]
  • GPU-hours,单位为 [ GPU数量 ] × [ 小时 ] [\text{GPU数量}]\times[\text{小时}] [GPU数量]×[小时]
  • 缩放定律论文倾向于以PetaFLOP-days为单位报告值,即 1 0 15 × 24 × 3600 10^{15}\times24\times3600 1015×24×3600 次浮点运算

需要牢记的一个有用区别是 实际FLOPs \text{实际FLOPs} 实际FLOPs 的概念。虽然GPU加速器白皮书通常会宣传其理论FLOPs,但在实践中永远无法达到这些值(尤其是在分布式环境中!)。一些常见的分布式训练环境中报告的 实际FLOPs \text{实际FLOPs} 实际FLOPs 值在下面的计算成本部分报告。

请注意,参考了 这篇关于LLM训练成本的精彩博客文章 中使用的吞吐量-时间版本的成本公式。

参数与数据集的权衡

尽管严格来说,您可以根据需要训练任意数量token的Transformer,但训练的token数量会极大地影响计算成本和最终模型性能,因此在两者之间取得适当的平衡非常重要。

让我们先从最主要的问题开始:“计算最优”语言模型。通常被称为“Chinchilla缩放定律”,以论文中提出当前关于参数数量观点的模型系列命名,计算最优语言模型的参数数量数据集大小满足近似值 D = 20 P D=20P D=20P。这在一个非常具体的意义上是最优的:在使用 1,000 个 GPU 1 小时和 1 个 GPU 1,000 小时的成本相同的资源机制下,如果您的目标是在最大化性能的同时最小化训练模型的 GPU 小时成本,则应使用上述公式。

**我们不建议训练token数量少于 200B 的 LLM。**尽管这对许多模型来说是“Chinchilla最优”的,但生成的模型通常质量很差。对于几乎所有应用,我们建议确定您的用例可接受的推理成本,并尽可能多地训练最大模型,以在该推理成本下尽可能多地训练token。

计算成本的工程意义

Transformer 的计算成本通常以 GPU-hours或者 FLOP-seconds为单位列出。

  • GPT-NeoX 使用普通注意力机制在 A100 上实现了 150 TFLOP/s/A100 的吞吐量,使用 Flash 注意力机制则达到了 180 TFLOP/s/A100。这与其他高度优化的库在规模上是一致的,例如 Megatron-DS 报告在 A100 上的吞吐量在 137 到 163 TFLOP/s/A100 之间。
  • 作为一般经验法则,您应该始终能够在 A100 上实现大约 120 TFLOP/s 的吞吐量。如果您看到低于 115 TFLOP/s/A100,则可能是您的模型或硬件配置有问题。
  • 使用高质量的互连技术(如 InfiniBand),您可以在数据并行维度上实现线性或亚线性扩展(即,增加数据并行度应该会使整体吞吐量几乎线性增加)。下面是在橡树岭国家实验室的 Summit 超级计算机上测试 GPT-NeoX 库的图表。请注意,x 轴是 V100,而本文中的大多数数值示例都是针对 A100 的。

在这里插入图片描述

内存需求

Transformer 通常根据其参数大小来描述。但是,在确定哪些模型可以适合给定的计算资源集时,您需要知道模型将占用多少字节的空间。这可以告诉您,您的本地 GPU 可以容纳多大的模型进行推理,或者您可以在集群中使用一定数量的加速器内存训练多大的模型。

推理

模型权重

{​{}}

大多数 Transformer 都是以混合精度训练的,fp16 + fp32 或 bf16 + fp32。这减少了训练模型所需的内存量,也减少了运行推理所需的内存量。我们可以将语言模型从 fp32 转换为 fp16 甚至 int8,而不会造成明显的性能损失。这些数字指的是单个参数所需的位数(bits)。由于一个字节中有 8 位(bits),我们将此数字除以 8,即可得出每个参数需要多少字节。

  • 在 int8 中, memory model = ( 1  字节 / 参数 ) ⋅ ( 参数数量 ) \text{memory}_{\text{model}}=(1 \text{ 字节} /\text{参数})\cdot ( \text{参数数量}) memorymodel=(1 字节/参数)(参数数量)
  • 在 fp16 和 bf16 中, memory model = ( 2  字节 / 参数 ) ⋅ ( 参数数量 ) \text{memory}_{\text{model}}=(2 \text{ 字节} /\text{参数})\cdot ( \text{参数数量})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 特殊类设计以及单例模式

目录 1 不能被拷贝 2 只能在堆上创建对象 3 只能在栈上创建对象 4 禁止在堆上创建对象 5 不能被继承的类 6 单例类 特殊类就是一些有特殊需求的类。 1 不能被拷贝 要设计一个防拷贝的类,C98之前我们只需要将拷贝构造以及拷贝赋值设为私有,同时只声明…

2024年入职/转行网络安全,该如何规划?_网络安全职业规划

前言 前段时间,知名机构麦可思研究院发布了 《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…

探索802.1X:构筑安全网络的认证之盾

在现代网络安全的世界里,有一个极其重要但又常常被忽视的角色,它就是802.1x认证协议。这个协议可以被称作网络安全的守护者,为我们提供了强有力的防护。今天,我们就来深入探讨一下802.1x的原理、应用和测试,看看它是如…

干货|光伏开发全流程

在当今全球能源转型与应对气候变化的背景下,光伏产业作为可再生能源的重要组成部分,正以前所未有的速度发展。光伏开发,即从项目规划到并网发电的全过程,涉及多个环节,每个步骤都至关重要。而其中户用和工商业光伏开发…

DBAPI如何用SQL将多表关联查询出树状结构数据(嵌套JSON格式)

场景描述 假设数据库中有3张表如下: 客户信息表 订单表 订单详情表 一个客户有多个订单,一个订单包含多个产品信息,客户-订单-产品就构成了3级的树状结构,如何查询出如下树状结构数据呢? [{"customer_age"…

Notion使用详解

​ ​ 您好,我是程序员小羊! 前言 Notion是一款集笔记、任务管理、知识库、文档协作等多功能于一体的生产力工具。其灵活性和可定制性使得它在个人和团队协作中都非常受欢迎。本教程将详细介绍如何使用Notion的基本功能,帮助你快速上手并充分…

【云原生】Ingress控制器超级详解

Ingress资源对象 文章目录 Ingress资源对象一、Ingress1.1、Ingress是什么?1.2、Ingress术语1.3、Ingress类型 二、Ingress详细2.1、部署Nginx-Ingress控制器2.2、最小Ingress资源2.3、Ingress规则 三、一个域名多个访问路径多SVC四、多域名Ingress五、转发到默认Se…

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1)菜单实现 2)进度条实现 3)main函数实现 4)Game函数 5&#xff0…

【系统架构设计】软件架构设计(2)

【系统架构设计】软件架构设计(1) 软件架构概述架构需求与软件质量属性软件架构风格层次系统架构风格面向服务的架构SOA概述微服务微服务和SOA差异 软件架构概述 架构需求与软件质量属性 软件架构风格 层次系统架构风格 面向服务的架构 SOA概述 面…

C语言手撕实战代码_循环单链表和循环双链表

C语言手撕实战代码_循环单链表和循环双链表 循环单链表习题1.建立带头结点的循环链表2.设计一个算法,将一个带有头结点的循环单链表中所有结点的链接方向逆转3.设计一个算法,将一个循环单链表左移k个结点4.设计一个算法将循环单链表中的结点p的直接前驱删除5.设计算…

游泳耳机品牌前十名哪个牌子好?如何选高配游泳耳机不花冤枉钱?

在快节奏的现代生活中,音乐已成为许多人放松和充电的重要方式之一。无论是晨跑、通勤还是健身,音乐总能陪伴我们度过每一个瞬间。而对于游泳爱好者来说,能够在水中享受音乐,更是将这一运动提升到了一个新的层次。然而,…

uniapp/uniapp x总结

uni-app组成和跨端原理 上图所诉 App的渲染引擎:同时提供了2套渲染引擎,.vue页面文件由webview渲染,原理与小程序相同;.nvue页面文件由原生渲染,原理与react native相同。开发者可以根据需要自主选择渲染引擎。 uniapp…

【unity小技巧】获取免费开源的人物模型,并为obj fbx人物模型绑定骨骼、动画——mixamo的使用介绍

文章目录 前言地址上传自己的3D角色下载单动画下载动作包角色模型导入Unity动画导入unity设置动画骨骼动画骨骼不配的问题参考完结 前言 其实前面我已经推荐了几种获取人物模型的方法: 1、【unity小技巧】下载原神模型,在Blender中PMX模型转FBX模型&…

多商户商品下单限购问题修复

问题: 当商品设置限购为 1 时,够买数量未超过限购,但是还是提示超出限购数量 修复方法: 修改代码路径: app\common\repositories\store\order\StoreOrderCreateRepository.php 修改代码一: i s p a y s a r r a y u n i q u e ( a r r a y c o l u m n ( is_pays array_un…

Python 设置Excel工作表页边距、纸张大小/方向、打印区域、缩放比例

在使用Excel进行数据分析或报告制作时,页面设置是确保最终输出效果专业、美观的关键步骤。合理的页面设置不仅能够优化打印效果,还能提升数据的可读性。本文将详细介绍如何使用Python操作Excel中的各项页面设置功能。 目录 Python 设置Excel工作表页边…

AutosarMCAL开发——基于EB FEE驱动

这目录 1. FEE原理2.EB配置以及接口应用3.总结 1. FEE原理 在Fls解析文章中介绍了Flash与EEPROM储存器的区别,本文将介绍FEE具体实现原理。 FEE模块,全称Flash EEPROM Emulation Module,旨在使用Flash模拟EEPROM以增加使用寿命。 术语解释 p…

CTFHUB | web进阶 | JSON Web Token | 无签名

一些JWT库也支持none算法,即不使用签名算法。当alg字段为空时,后端将不执行签名验证 开启题目 账号密码随便输,登录之后显示只有 admin 可以获得 flag 在此页面抓包发到 repeater,这里我们需要用到一个 Burp 插件,按图…

瑞吉外卖-登录时报错:接口404异常

一、错误描述 出现“系统接口404异常”的弹窗,同时一直显示登录中,而无法跳转到后台页面。 二、解决方法 1. 检查浏览器的网址 确保为localhost:8080/backend/page/login/login.html,而不是idea自动生成的,修改过来即可。 2.确…

Unity XR Interaction Toolkit 通过两个手柄控制物体放大缩小

1:给物体添加 XR General Grab Transformer 脚本 2:XR Grab Interactable 的 select mode 选择 Multiple

SpringIoCDI

前言👀~ 上一章我们介绍了Spring MVC,今天介绍Spring核心功能之一IoC Spring到底是什么? Spring IoC 什么是 IoC 容器? IoC 介绍 DI 介绍 IoC详解 获取Bean对象的其他方式 Bean的存储 方法注解 Bean 扫描路径 DI详解 …