支持大模型训练的计算机系统

news2024/11/28 6:53:25

摘要:

       训练数据决定了基础大模型可用的理论信息,模型架构和训练目标决定了可以提取多少信息,计算机系统决定了实际可实现的内容。在数据和模型大小方面,系统是扩展的关键瓶颈,这两者似乎都可以可靠地跟踪能力的改进。在时间和成本方面,为了确保我们能够有效地训练下一代基础大模型,我们将需要协同设计算法、模型、软件和硬件。这种协同设计已经开始以各种形式发生,从精心调整的并行策略到新的架构,如基于检索和混合专家模型。除了训练之外,我们还考虑在基础模型之上部署应用程序所需的条件。

       计算机系统是开发基础大模型的最大瓶颈之一。基础大模型通常太大,无法容纳单个加速器(例如,GPU)的主内存,并且需要大量的计算来训练(例如,对于GPT-3 > 1000 petaFLOP/s-days )。此外,随着时间的推移,这些模型可能会变得更大:例如,最先进的语言模型的计算和内存需求在过去三年中增长了三个数量级,并且预计将继续以远快于硬件能力的速度增长(1)。一旦经过训练,这些大型模型执行推理的成本很高,并且难以在生产应用程序中进行调试、监控和维护。我们认为,基础模型的性能和可用性的进一步进步将需要跨算法、模型、软件和硬件系统进行仔细的协同设计,以及用于编程和部署ML应用程序的新接口。在本节中,我们讨论了在开发和生产大规模基础模型时的关键计算机系统挑战。

1所示。图中显示了基于transformer的语言模型的参数数和训练操作数(FLOPs)的增长(蓝色表示),以及NVIDIA P100V100A100 gpu的内存容量和峰值设备吞吐量(红色表示)随时间的增长。最先进的语言模型的增长率(每条线的斜率)(大约每年10)远远超过硬件计算能力的增长率(大约410),这激发了对大量加速器之间并行性的需求,以及算法、模型、软件和硬件的协同设计,以推动进一步的进步。参数数量和训练操作次数从相关论文中获得,内存容量和峰值吞吐量从GPU规格表中获得。

1. 通过协同设计提高性能

       如今,训练大规模基础模型通常需要定制软件系统,如威震天、深速或Mesh Transformer JAX ,建立在PyTorchTensorFlowJAX等标准框架之上这些软件系统依赖于跨堆栈的许多创新来大规模高效地训练模型:新的并行化维度,如管道parallelism 在保持设备繁忙的同时限制通信,状态分片优化器减少内存使用,即时(JIT)编译器优化计算图,以及优化库如cuDNNNCCL 威震天和深速在特定规模上是有效的;例如,威震天可以在具有1万亿个参数的模型上使用大约3000GPU提取高达现代硬件理论峰值吞吐量的52% 。然而,扩展到具有更多GPU的更大模型仍然具有挑战性,因为现有的并行化策略在更大的GPU数量下会崩溃。数据并行性受限于批大小,管道并行性受限于模型中的层数,以及单个服务器上GPU数量的张量模型并行度

       虽然我们将继续从新硬件中实现性能提升,但大型模型资源需求的增长远远超过了几代硬件的改进。为了促进模型容量的下一个重大飞跃,并使模型质量的进步民主化,协同设计训练算法、模型、软件和硬件将变得越来越重要,因为许多显著提高性能的途径会改变训练计算的语义。例如,以较低精度(fp16)执行操作可以帮助提高现代硬件的吞吐量(例如,V100A100 GPU具有用于低精度矩阵乘法的专用张量核心单元),但也会影响优化过程的数值。类似地,利用权值稀疏性可以显著提高训练和推理时间只对模型中的非零进行数学运算,但需要不同的训练算法协同设计的其他例子包括更有效地映射到硬件的模型架构,新颖的代币化替代方案,专门架构的硬件训练平台,以及放宽权重更新语义的分布式并行化策略

案例研究:有效的知识表示

      作为成功协同设计的具体案例研究,基于检索的模型,如REALMRAGColBERT-QARETRO 采用了与简单增加模型参数数量不同的模型设计方法。基于检索的模型不是试图将越来越大的数据集中的隐性知识直接积累到具有数十亿个参数的DNN模型中(GPT- 3),而是以文本段落的形式存储模型参数之外的知识,以密集的向量表示捕获段落内的知识。然后,这些模型使用可扩展的top-𝑘搜索机制来提取与每个输入相关的知识,同时保持DNN模型本身较小。这种设计提高了模型在生产中的计算效率和可维护性:例如,开发人员可以通过替换文本段落来更新模型的知识,而无需重新训练大型DNN

       基于检索的模型通过利用几个新的跨职能思想取得了有希望的初步结果,包括在训练期间通过检索器反向传播损失(这需要通过由数百万个段落组成的知识存储近似梯度)和建模查询和段落之间的细粒度交互(这需要将计算分解为向量级最近邻搜索操作)这些技术允许基于检索的模型是准确的和高效,但需要的功能不容易被流行的ML框架和最近邻指数(如FAISS)支持

2. 自动优化

       系统中的另一个重要挑战是自动化跨算法、模型、软件和硬件的优化应用。虽然许多优化和并行化策略是互补的,但识别最有效的优化组合是具有挑战性的,因为联合搜索空间以组合方式增长,优化以非平凡的方式相互作用。基础模型增加了对自动优化的需求,因为在数千个gpu的规模下,手动实验非常昂贵且耗时。

       该领域最近的工作集中在以语义保持优化为目标的系统上。特别是,已经提出了自动发现数学等效图替换的系统,通过高级api和低级编译器促进算子图的分布式执行,以及混合配送策略的自动化选择这些系统已经帮助在工业中部署了许多基础模型

      不幸的是,当组合语义改变优化时,自动优化变得更加困难,因为通常不清楚如何联合建模这些技术的统计影响(例如,需要多少训练迭代才能达到特定的精度?)。因此,我们将需要新的软件工具、库和编译器来自动识别针对时间-精度等综合指标的优化组合构建这样的工具需要系统和机器学习专家之间的紧密协作。

3. 执行和编程模型

        基础模型独特的多任务性质提供了将训练和推理成本分摊到许多应用程序上的机会。特别是,适应等范式意味着在模型实例之间有更多的共享。例如,来自同一预训练模型的两个经过前缀调优的模型可以共享相同的模型“干”,从而减少了存储占用(共享的干只需要存储一次),同时也使得跨前缀调优模型共享和批处理执行成为可能因此,所使用的特定适应机制为系统优化提供了信息

      应该使用什么编程接口来指定从相同的预训练模型(例如,模型)派生的各种适应模型,这是一个悬而未决的问题 (𝑌 𝑍是从相同的预训练模型𝑋衍生出来, 或者两个模型的各个组成部分共享参数(例如,两个模型𝐴和𝐵具备相同的网络)LudwigPyTorchModule提供了在模型内组合功能的简单方法,但目前没有系统支持跨模型依赖关系。让用户有机会提供注释将允许训练和推理系统更有效地优化和编排计算;如果没有这样的注释,系统将无法看到哪些计算和参数可以跨模型实例共享。模型的“适应历史”(这个特定的模型是从什么模型改编的)也可以用于调试:一个被改编的模型在特定类型的输入上的错误可能源于预训练的模型,指出预训练过程与适应过程中的问题。像PyTorch这样的框架,以及训练基础模型,如HuggingFace Transformers,不允许指定整个模型实例的细粒度血统信息。

    构建和维护一个由数千个加速器组成的集群也需要巨大的努力。新的培训范式如Learning@Home 探索利用互联网上的志愿者计算来协同训练基础模型。这种全新的执行模型可以降低任何一个实体的培训成本,但需要跨多个不同领域的协作,如安全性(确保恶意志愿者不能显著改变培训过程)、分布式系统(在志愿者退出时处理容错问题)和众包。

4. 基础模型的产品化

       随着社区继续推动基础模型的能力,实现其潜力将需要解决与在生产中部署这些资源密集型模型相关的挑战。这些挑战包括以严格的延迟目标执行模型推理,并确保以自动化的方式监控模型和数据。

       对于具有严格成本和延迟约束的应用,蒸馏等模型压缩技术,量化,修剪和稀疏性可以通过转换更大的模型来获得所需的推理时间属性来帮助部署。这些技术最初是为低内存环境(例如,移动电话)中的较小模型(例如,BERT-L)设计的,但现在需要处理数据中心部署中现代基础模型的极端规模。像张量模型并行化(tensor model parallelism) 这样传统上用于训练的并行化技术,也可能有助于减少推理延迟,并且还可以跨gpu提供额外的内存容量来拟合模型的参数。

       除了这些实际约束外,基础模型的大小和复杂性以及用于训练它们的数据集的增加也给模型和数据集生命周期管理带来了新的挑战。由于具有大量参数的模型很难由人类手动检查,因此我们需要更好的系统来实现自动数据集管理和模型质量保证。行为测试和模型断言等技术通过为最终应用程序中部署的模型提供类似于单元测试、运行时监控(以测试时间断言的形式)和持续的模型改进(随着新输入的到来)来简化生产中的模型维护。这些工具可以帮助解决公平性和偏见问题,并减少模型错误预测。

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

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

相关文章

Bypass open_basedir

讲解 open_basedir是php.ini中的一个配置选项,可用于将用户访问文件的活动范围限制在指定的区域。 假设open_basedir/var/www/html/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/var/www/html/web1/和/tmp/这两个目录以外的文件。…

【网络安全】vulhub靶场搭建与一个漏洞的简单示例

vulhub是一个经典的靶场,里面大约包含了200个不同的漏洞,可以说是安全从业者必刷。 无需docker知识,简单执行一条命令即可编译、运行一个完整的漏洞靶场镜像。 我的环境是CentOS 7。 先安装docker sudo curl -L "https://github.com…

Linux-帮助命令的使用和练习(type、man、help、info详解)

目录 5.3.1 type-判断是否为内部命令 5.3.2 man-查看详细文档 5.3.3 help-查看shell内部命令的帮助信息 5.3.4 --help-查看系统外部命令帮助信息 5.3.5 info-查看info格式的帮助指令 5.3.6 /usr/share/doc-存储软件包的文档信息 平时我们看到的命令大多数都可以查看帮助文…

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现,每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member),而第二个元素则保存元素的分值(score)。 127.0.0.…

全面解析“由于找不到hid.dll,无法继续执行代码”的4个解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到hid.dll”。这个问题通常出现在尝试运行某个程序或访问某个设备时。那么,当我们遇到这个问题时,应该如何解决呢?本文将详细介绍找不到hid.dll的解…

Java第二十一章总结

网络编程三要素 ip地址:计算机在网络中的唯一标识 端口:应用程序在计算机中唯一标识 协议:通信协议,常见有UDP和TCP协议 InetAddress类 表示Internet协议地址 //返回InetAddress对象 InetAddress byName InetAddress.…

程序员的养生之道

程序员的养生之道 1 对程序员的初次印象2 我的养生之道2.1 规律作息:2.2 合理饮食:2.3 健康饮食:2. 4 增强锻炼:2. 5 心态平和:2. 6 生活习惯:2.7 定期体检:2.8 特殊注意:2.9 补充能…

Zookeeper系统性学习-应用场景以及单机、集群安装

Zookeeper 是什么? Zookeeper 为分布式应用提供高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper 并没有直接采用 Paxos 算法,而是采用了名为 …

微表情检测(三)----基于光流特征的微表情检测

Micro-expression spotting based on optical flow features 基于光流特征的微表情检测 Abstract 本文提出了一种高精度和可解释性的自动微表情检测方法。首先,我们设计了基于鼻尖位置的图像对齐方法,以消除由头部晃动引起的全局位移。其次&#xff0…

C# Winform 日志系统

目录 一、效果 1.刷新日志效果 2.单独日志的分类 3.保存日志的样式 二、概述 三、日志系统API 1.字段 Debug.IsScrolling Debug.Version Debug.LogMaxLen Debug.LogTitle Debug.IsConsoleShowLog 2.方法 Debug.Log(string) Debug.Log(string, params object[]) …

lv12 系统移植导学 1

1 导学 Kernel学习主要包括三块内容,ARM(汇编、协议)、系统移植、驱动移植 lv12主要时安装系统linux linux主要帮我们实现了5大功能 1 进程、线程管理 2 内存管理 3 网络协议栈管理 4 文件系统管理 5 设备管理 2 移植的目的 不同架构…

ptmalloc:从内存虚拟化说起

前言 本文并不局限于ptmalloc的原理,而是从linux的内存虚拟化和系统调用原理出发,结合各种语言实现,讲明内存分配方面的trade off,力图事无巨细,追根究底。本文内容包括但不限于:NIO原理、0拷贝原理、内存…

AirServer 5.63中文破解2024最新图文安装激活教程含许可证

AirServer是一款便捷式投屏软件,它的主要功能在于实时地将移动设备上的图像画面内容投放到电脑设备上,让电脑成为iPad、iPhone等iOS系统设备的大屏显示器。 在设备之间建立局域网内的信号发送与接收通道,确保数据可以稳定安全地进行传输。下面…

大模型对数据分布变化的鲁棒性研究综述

摘要: 标准机器学习的一个主要限制是它产生的模型对分布变化不鲁棒,其中训练分布与测试分布不匹配(对于下游任务)。现有的工作表明,调整在广泛的未标记数据上训练的基础模型可以提高适应模型在各种变化中的鲁棒性。这为…

【Java 基础】28 字符编码

文章目录 1.字符集2.编码方式1)ASCII2)UTF-8 编码3)UTF-16 编码4)ISO-8859-1 编码 3.使用样例Charset 类String 类 4.注意事项结语 字符编码(Character Encoding)是一种将字符映射为二进制数据的规则或算法…

如何理解 RPC 远程服务调用?

本文主要讲解 RPC 远程服务调用相关的知识。 RPC 远程服务调用是分布式服务架构的基础,无论微服务设计上层如何发展,讨论服务治理都绕不开远程服务调用,那么如何理解 RPC、有哪些常见的 RPC 框架、实现一款 RPC 框架需要哪些技术呢&#xff…

macos下安装科研绘图软件Origin

科研人必备软件Origin,主要是考虑到很多期刊都要求绘制origin可编辑的图,所以有些时候必须用这个软件,但是这个软件macos并不支持,所以必须考虑其他的方案,我没有安装虚拟机,而是使用crossover 安装crosso…

Vue 静态渲染 v-pre

v-pre 指令&#xff1a;用于阻止 Vue 解析这个标签&#xff0c;直接渲染到页面中。 语法格式&#xff1a; <div v-pre> {{ 数据 }} </div> 基础使用&#xff1a; <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染&#xff1a;{{ n…

Java中的IO流②——字符集、字符流、缓冲流

主要的编码规范&#xff1a; GBK编码 Windows自带 Unicode编码 为什么会有乱码&#xff1f; 原因一 原因二 编码和解码的代码实现 字符流 FileReader read()细节&#xff1a; 一&#xff1a;默认也是一个字节一个字节的读取&#xff0c;如果遇到中文就会一次读取多个 二&a…

Terminator的layout设置(一个新的一键启动思路)

首先你得有terminator&#xff1a; sudo apt install terminator然后就能使用了&#xff0c;我一般喜欢修改它原本的水平和垂直分割&#xff1a;用ctrlshifta和ctrlshifts 把屏幕先分成多块&#xff1a; 比如是这样的&#xff0c;接下来 右键->点击Preference 弹框中上方标…