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

news2024/11/25 14:45:47

目录

  • 简介
  • 计算需求
    • 参数与数据集的权衡
    • 计算成本的工程意义
  • 内存需求
    • 推理
      • 模型权重
      • 总推理内存
    • 训练
      • 模型参数
      • 优化器状态
      • 梯度
      • 激活值和批大小
      • 总训练内存
    • 分布式训练
      • 分片优化器
      • 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{参数数量})

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

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

相关文章

基于微信小程序的大用户心理咨询系统设计与实现---附源码99040

目录 1 绪论 1.1 研究背景 1.2研究现状 1.3论文结构与章节安排 2 基于微信小程序的大用户心理咨询系统设计与实现分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 基于微信小程序的大用户心理咨询系统设计与实现总体设计 3.…

网站首页配置-记录部分错误

目录 错误问题1: 解决方案: 错误问题2: 解决方案: 错误问题3: 解决方案: 错误问题4: 解决方案: EL的作用: 错误问题1: 解决方案: 里面的代码写错,cateSecond应该写成categorySecond 错误问题2: 解…

toRef 与 toRefs

在 ref函数与reactive函数的对比 这一篇博文中,我们从使用角度对比了 ref 与 reactive 的区别,最终得出结论是, 通过 ref 定义的数据,在 js脚本中使用需要 xxx.value ,在模板中会自动解包,可以直接使用通过…

WIN 10 添加右键菜单(VSCode 打开当前目录)

WIN 10 添加右键菜单(VSCode 打开当前目录) 前言最终效果操作步骤 前言 每次打开代码都需要先打开 VSCode,再选择最近打开的项目或者浏览打开项目,感觉比较难找。所以自己添加了右键命令。 最终效果 操作步骤 cmd 打开注册表 找…

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并启动

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并启动 2024/8/21 15:22 viewproviewpro-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ viewproviewpro-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh lunch 3. rockchip_rk3588_evb7_…

C++智能指针的用法(全)

一、智能指针概念 C/C 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊&…

普元EOS-基于CriteriaEntity进行数据查询

1 前言 普元EOS内置了一系列数据库的操作类,本文介绍其中的一个类 CriteriaEntity的使用方法。 CriteriaEntity是进行组织数据库查询条件的类,基于该类配合DataObject,实现对数据库的查询。 2 CriteriaType类的实例化 要利用Criteria进行查…

LlamaIndex 实现 RAG (一)

理解过 LlamaIndex 的功能之后,本文通过 LlamaIndex 快速实现一个简单的 RAG 应用,主要包括以下几个部分: 创建知识库,并进行 Embedding集成本地 Ollama 模型或者 Qwen 模型通过 Streamlit 可视化 RAG 文末提供了源代码地址 创…

HarmonyOS开发实战:应用权限/通知设置跳转方案

场景描述 引导用户跳转到系统设置页进行权限,通知的相关设置,类似android和iOS应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。 应用经常会遇到如下的业务诉求: 场景一:如果应用首次拒绝了消息通知,应…

免费高效:2024年四大视频剪辑软件推荐!

不管是不是专业人士,相信大家多多少少都会有视频剪辑的需求,对于很多新手来说,一款好用且免费的视频剪辑工具十分必要,接下来就为大家推荐几个好用的视频剪辑免费软件! 福昕视频剪辑 链接:www.pdf365.cn/…

Linux(CentOS7)虚拟机安装教程

创建虚拟机 自定义高级,就下一步 选择Workstation 17.x,完好后就继续下一步,下面就如图所示 虚拟机内存看情况加 磁盘大小也看情况加 完成! 开启此虚拟机 鼠标放进去直接回车 可能有点慢,请耐心等待 一.进入日期时间 二.进入软件选择 三.配置…

[创业之路-138] :产品需求、产品研发、产品生产、库存管理、品控、售后全流程 - 时序图

目录 一、产品研发全流程 1. 客户/市场需求 2. 供应链采购 3. 设计研发 4. 库房管理 5. 品控质检 6. 物流运输 7. 客户现场验证 8. 返修售后 二、产品生产全流程 1. 客户/市场需求 2. 供应链采购 3. 生产加工 4. 库房管理 5. 品控质检 6. 物流运输 7. 客户现场…

物理可微分神经算法:深度学习与物理世界的桥梁

物理可微分神经算法:深度学习与物理世界的桥梁 前言物理可微分神经算法的核心PyTorch中的实现讨论与展望结语 前言 在这个信息爆炸的时代,人工智能(AI)已成为推动技术革新的关键力量。深度学习,作为AI领域的一个重要分…

CAPL如何实现在网络节点中添加路由Entry

其实不只是CANoe的网络节点,所有设备的应用程序如果要通过Socket套接字发送报文,在网络层都需要根据路由表里配置的路由条目选择发送路径。这个路由条目可以是静态配置,也可以是自动添加。 如果CANoe的网络节点添加一个网络接口,配置IP地址和子网掩码: 说明此网络节点在1…

外挂程序:增强点及辅助

1.关于前几篇介绍的外挂程序,SAP中的业务单据还是要区分具体的操作人员。如建立财务凭证,工号A,B,C使用相同的SAP账号,那就没办法知道是谁操作的了啊,所以sap的业务单据需要细分到具体人员的都要增强实现以下: 如生产工单: 具体的增强点: 2.辅助程序:SAP账号自动锁定功…

【Redis】基本全局命令

Redis的基本全局命令 keysexistsdelexpirettltype Redis 有 5 种数据结构,但它们都是键值对种的值,对于键来说有⼀些通⽤的命令。 keys 返回所有满足样式 (pattern)的key。支持如下统配样式。 h?llo 匹配 hello , hallo 和 hxl…

D-ID 推出人工智能视频翻译工具,拥有语音克隆和口型同步等功能

D-ID公司以其创新的人工智能技术在视频创作领域取得了突破性进展。这家人工智能视频创作平台最近推出了一项新工具,允许用户将视频翻译成多达30种不同的语言,包括阿拉伯语、普通话、日语、印地语、西班牙语和法语等。这项技术不仅能够自动翻译视频内容&a…

面试题 08.06. 汉诺塔问题(整活版)(不讲武德)

题目具体要求看面试题 08.06. 汉诺塔问题(递归法)-CSDN博客 class Solution { public:void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {CA;A.clear();} };

Blender新手入门笔记收容所(二)

材质篇 学习来源&#xff1a;B站 【Kurt】Blender零基础入门教程 | Blender中文区新手必刷教程(已完结) Blender材质基础 PBR(Physically Based Rendering)&#xff1a;基于物理的渲染BSDFBRDF(反射)BTDF(透射) 原理化BSDF详解 中间部分利用率80% 材质篇第一节课笔记 纹…

健身房预约小程序,提高市场竞争力

随着“全民健身”的风靡&#xff0c;各大健身场所受到了较大的关注&#xff0c;健身市场的发展迎来了爆发期&#xff01;健身房预约系统是一个在线预约管理系统&#xff0c;对于健身房来说&#xff0c;一个操作简单、功能齐全的预约系统至关重要&#xff0c;他不仅可以帮助学员…