展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 业界资讯 > 7B?13B?175B?解读大模型的参数

7B?13B?175B?解读大模型的参数

大模型也是有大有小的,它们的大小靠参数数量来度量。GPT-3就有175亿个参数,而Grok-1更是不得了,有314亿个参数。当然,也有像Llama这样身材苗条一点的,参数数量只有70亿到700亿之间。这里说的70B可能不是指训练数据的数量,而是指模型中那些密密麻麻的参数。这些参数就像是一个个小小的“脑细胞”,越多就能让模型更聪明,更能理解数据中那些错综复杂的关系。有了这些“脑细胞”,模型在处理任务时可能会表现得更好。然而,很多时候这些参数,尤其是在大规模的模型中,会带来一些问题。这些“脑细胞”在处理任务时

本文目录

    大模型也是有大有小的,它们的大小靠参数数量来度量。GPT-3就有175亿个参数,而Grok-1更是不得了,有314亿个参数。当然,也有像Llama这样身材苗条一点的,参数数量只有70亿到700亿之间。

    这里说的70B可能不是指训练数据的数量,而是指模型中那些密密麻麻的参数。这些参数就像是一个个小小的“脑细胞”,越多就能让模型更聪明,更能理解数据中那些错综复杂的关系。有了这些“脑细胞”,模型在处理任务时可能会表现得更好。 然而,很多时候这些参数,尤其是在大规模的模型中,会带来一些问题。这些“脑细胞”在处理任务时可能会互相影响,导致模型难以理解数据中那些复杂的关系。有了这些“脑细胞”,模型在处理任务时可能会表现得更好。 因此,在处理任务时,我们需要找到一种方式来管理这些参数之间的关系。一种常用的方法是通过正则化

    这些大模型的参数就像是模型内部的“建筑师”,通过复杂的算法和训练过程,一点一滴地搭建起这个庞大的语言世界。每个参数都有它的作用,它们共同协作,让模型能够更准确地理解我们的语言,并给出更合适的回答。

    那么,大模型中的参数是怎样构成的呢?

    1. 大模型中的参数

    大模型参数是其“内部零件”,这些零件各有各的用途,通常包括但不限于以下几类:

    • 权重(Weights):权重就像神经网络里的“电线”,连接着各个神经元。它们负责调整信号传递时的“音量”,让重要的信息传得更远,不那么重要的信息就小声点。比如在全连接层里,权重矩阵W就是一张“地图”,告诉我们哪些输入特征和输出特征关系最密切。
    • 偏置(Biases):偏置就像是神经元的“小助手”,负责给神经元的响应定个基准。有了它,神经元就知道自己该在什么水平上活跃了。
    • 注意力机制的参数(Attention Parameters):在基于Transformer的模型中,这些参数就像是“指南针”,告诉模型哪些信息最值得关注。它们包括查询矩阵、键矩阵和值矩阵等,就像是在一大堆信息中找出最关键的“线索”。
    • 嵌入矩阵(Embedding Matrices):在处理文本数据时,嵌入矩阵就是模型的“字典”。每一列都代表一个词汇,用一个数来表示这个词。这样,模型就能理解文本的意思了。
    • 隐藏状态初始化参数(Initial Hidden State Parameters):这些参数就是用来设置模型最初的隐藏状态的,就像是给模型定个基调,让它知道从哪里开始“思考”。
    • ......

    这些参数一般会使用4种表达和存储的格式:

    1. Float: 32比特的浮点数,即4字节
    2. Half/BF16: 16比特的浮点数,即2字节
    3. Int8: 8比特的整数,即1字节
    4. Int4: 4比特的整数,即0.5字节

    一般来说,参数的数量是影响大模型性能的主要因素。例如,13B-int8模型通常优于同一体系结构的7B-BF16模型。

    2. 大模型参数对内存的需求

    对于工程师而言,面对的是大模型训练或推理时会使用多少的内存资源。尽管V100(具备32GB的GPU内存)或A100(具备40GB的GPU内存)非常强大,大模型仍然无法在单个GPU上进行训练,例如使用Tensorflow或PyTorch。

    2.1 训练阶段的内存需求

    在模型训练期间,主要体现为模型状态和活动过程对内存的存储需求。模型状态包括由优化器状态、梯度和参数组成的张量。活动过程中包括在正向通道中创建的任何张量,这些张量是在反向通道中梯度计算所必需的。 为了优化内存使用,可以考虑以下几个方面: 1. 减少模型参数的数量:可以通过减小模型规模或使用稀疏矩阵等技术来减少参数的数量,并降低内存使用。 2. 优化器状态的存储:可以选择只存储必要的优化器状态,而不是保存全部状态。可以根据需要选择性地更新和存储优化器状态。 3. 修改张量的数据类型:

    在训练的任何时候,对于每个模型参数,总是需要有足够的 GPU 内存来存储:

    • 模型参数复制的字节数x
    • 梯度复制的字节数y
    • 优化器状态一般为12个字节,主要是参数、方差等的拷贝,会将所有优化器状态保存在 FP32中,以保持稳定训练并避免数值异常。

    这意味着,训练时需要如下内存来存储所有的模型状态和过程数据:(x+y+12 ) * model_size

    2.2 推理阶段的内存需求

    推理阶段利用预先训练好的 LLM 完成文本生成或翻译等任务。在这里,内存需求通常较低,主要的影响因素:

    • 有限的上下文: 推理通常处理较短的输入序列,需要较少的内存来存储与较小的文本块相关的激活。
    • 无反向传播: 在推理过程中,LLM 不需要保留反向传播的中间值,这是一种用于训练调整参数的技术。这消除了大量的内存开销。

    推理阶段所需的内存不会高于相同参数计数和类型的训练阶段所需内存的四分之一。例如,对于一个7B的模型而言,大体上,使用浮点精度需要28GB内存,使用BF16精度需要14GB内存,使用int8精度需要7GB内存。这个粗略的估计方式可以相应地应用到其他版本的模型。

    另外,当根据特定任务调整 LLM 时,微调需要更高的内存占用。微调通常包括更长的训练序列来捕捉目标任务的细微差别。当 LLM 处理更多的文本数据时,这将导致更大的激活。反向传播过程需要存储用于梯度计算的中间值,这些中间值用于在训练期间更新模型的权重。与推理相比,这增加了大量的内存负担。

    2.3 基于Transformer的大模型的内存估算

    具体而言, 对应基于Transformer的大模型,尝试计算一下训练时所需的内存,其中设:

    • l :transformer的层数
    • a:attention 的head 数量
    • b:批次大小
    • s:序列长度
    • h:隐藏层的维度大小
    • p:精度

    这里, bshp = b * s * h * p 代表了输入数据量的大小。在transformer 的线性层部分,大概需要9bshp+bsh 的空间来用于后面的激活。在attention 部分,self-attention 可以表达为:softmax((XQ)(XK)^T)XV

    那么,XQ,XK,XV均需bshp大小的空间。在标准self-attention中,乘法(XQ) * (XK) ^ T 的结果只是一个包含 logit 的 b * s * s 矩阵。然而在实践中,由于使用了多头注意力机制,需要为每个头都要建立一个单独的 s * s 存储空间。这意味着需要 abssp 字节的空间,而存储 softmax 的输出也同样需要 abssp 字节。在 softmax 之后还一般需要额外的 abss 字节来存储掩码,所以 attention部分需要2abssp+abss的存储空间。

    此外,transformer中还有两个Norm layer,每个仍需bshp的存储空间,共2个bshp。

    所以,基于Transformer 的大模型训练所需内存大约为:L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]

    解释一下,训练基于Transformer 的大模型所需内存大约是:模型的层数 x 训练批次的大小 x 序列长度 x 隐藏层的维度 x 精度 x 大于16的整数

    这或许就是基于Transfromer的大模型参数对训练时内存需求的一个理论下界。

    3. 大模型参数对GPU 的需求

    有了大模型参数对内存的要求, 可以进一步估算大模型在训练和推理中所需的GPU数量。但由于GPU数量估算依赖的参数稍多,有人(Dr. Walid Soula,https://medium.com/u/e41a20d646a8)给出了一个粗略估算的简单公式, 在工程上同样有一定的参考意义。

    7B?13B?175B?解读大模型的参数图片

    其中,

    • Model’s parameters in billions 是以B为单位的模型参数数量;
    • 18是训练期间不同组件的内存占用因子;
    • 1.25 代表了激活过程所需的内存数量因子,激活是随着模型处理输入数据而变化的动态数据结构。
    • GPU Size in GB是可用的 GPU 内存总量

    举个实际的例子,假设使用的是 NVIDIA RTX 4090 GPU,它有24GB 的 VRAM,计算一下训练‘ Llama3 7B’模型所需的 GPU 数量,大约为 :

    GPU 的总数≈(7 * 18 * 1.25)/24,大约等于7

    对于推理而言, 可以简化为训练阶段的1/8~1/9 , 当然,这些只是一般意义的粗略估计。

    4. 由大模型参数到分布式训练

    理解大模型参数的组成及其对内存和GPU的需求,有助于深入掌握分布式训练在工程实践中所面临的挑战。

    采用专为分布式训练设计的框架,例如TensorFlow或PyTorch,可以显著简化分布式训练策略的实施过程,这些框架提供了丰富的工具和API。通过运用梯度累积等技术在更新模型前,或利用梯度压缩等技术减少节点间的数据交换量,可以有效降低通信成本。确定分布式训练的最佳批次大小(即前文提到的参数b)至关重要;b值过小可能增加通信开销,而过大则可能导致内存不足。

    LLMOps的重要性日益凸显。定期监控为分布式训练配置的性能指标,调整超参数、分区策略和通信设置以优化性能,是提升训练效率的关键。实施模型的检查点机制并在发生故障时进行有效的恢复,可以确保训练过程在无需从头开始的情况下继续进行。

    换句话说,大模型的训练/推理本质上是一个复杂的分布式系统架构工程挑战,例如:

    • 通信开销:在执行梯度计算和数据更新时,通信所需时间可能会影响整体的加速效果。
    • 同步复杂性:多台机器并行训练时,同步的复杂性需要谨慎设计。
    • 容错与资源管理:单点故障对模型训练和推理的影响,以及CPU与GPU的资源分配与调度策略。
    • ......

    然而,实际上大多数工程师可能并不直接参与具体的训练工作,而是关注在构建应用时可以如何利用大模型的参数。

    7B?13B?175B?解读大模型的参数图片

    5. 大模型应用中使用的参数

    这里主要关注在使用大模型输出文本时,可以配置的三个参数:Temperature、Top-K和Top-P。

    Temperature参数通常被误解为仅控制模型创造性的开关,但其实它更深层的作用是调节概率分布的“软性”。当Temperature值设置较高时,概率分布变得更柔和、均匀,这促使模型生成更多样化、具创造性的输出。反之,较低的Temperature值会使分布更尖锐,峰值更明显,从而倾向于产生与训练数据类似的输出。

    Top-K参数用于限制模型在每个步骤中输出最可能的Top-K个标记,通过这种方式可以减少输出中的不连贯或无意义内容。这种策略在维持输出的最有可能的一致性与允许一定程度的创造性抽样之间形成平衡。

    Top-P是另一种解码方法,它根据设定的P值(0≤P≤1)来选择一组累积概率超过P值的最小单词集合作为输出。这种方法使得选中的单词数量能够根据下一个单词的概率分布动态地增加或减少。特别地,当P值为1时,Top-P会选择所有单词,相当于从整个分布中抽样,从而产生更加多样的输出;而当P值为0时,Top-P仅选择概率最高的单词,类似于贪婪解码,使输出更加集中和一致。

    这三个参数共同作用,影响模型的行为。例如,当设置Temperature=0.8、Top-K=36以及Top-P=0.7时,模型首先基于上下文计算整个词汇表的完整非规范化对数概率分布。Temperature=0.8意味着每个对数概率除以0.8,这在归一化前有效地增加了模型对其预测的信心。Top-K=36表示选择具有最高频比例对数概率的36个标记。接着,Top-P=0.7在这个Top-K=36集合中应用过滤,按概率从高到低保持排序,直到累积概率达到0.7。最后,将这个过滤后的集合重新归一化,用于后续的采样过程。

    6. 小结

    在工程实践中,理解大模型的参数是有意义的。参数在大模型中起着决定性的作用,它们定义了大模型的行为、性能、实现的成本以及对资源的需求。在工程上理解大模型的参数,就是要把握模型的复杂度、性能和能力之间的关系。从存储和计算的视角合理配置和优化这些参数,可以在实际应用中更好地选择和优化模型,以适应不同的任务需求和资源限制。

    【参考资料】

    • ZeRO: Memory Optimizations Toward Training Trillion Parameter Models ,https://arxiv.org/pdf/1910.02054v3.pdf
    • Reducing Activation Recomputation in Large Transformer Models,https://arxiv.org/pdf/2205.05198.pdf
    • https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/
    • https://blog.eleuther.ai/transformer-math/
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    业界资讯 模型
    上一篇: 金山PDF怎么拆分pdf文件 金山PDF拆分pdf文件的操作方法
    下一篇: PPT绘制任意曲线的操作流程
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。