支持大模型训练的计算机系统
摘要:
训练数据决定了基础大模型可用的理论信息,模型架构和训练目标决定了可以提取多少信息,计算机系统决定了实际可实现的内容。在数据和模型大小方面,系统是扩展的关键瓶颈,这两者似乎都可以可靠地跟踪能力的改进。在时间和成本方面,为了确保我们能够有效地训练下一代基础大模型,我们将需要协同设计算法、模型、软件和硬件。这种协同设计已经开始以各种形式发生,从精心调整的并行策略到新的架构,如基于检索和混合专家模型。除了训练之外,我们还考虑在基础模型之上部署应用程序所需的条件。
计算机系统是开发基础大模型的最大瓶颈之一。基础大模型通常太大,无法容纳单个加速器(例如,GPU)的主内存,并且需要大量的计算来训练(例如,对于GPT-3, > 1000 petaFLOP/s-days )。此外,随着时间的推移,这些模型可能会变得更大:例如,最先进的语言模型的计算和内存需求在过去三年中增长了三个数量级,并且预计将继续以远快于硬件能力的速度增长(图1)。一旦经过训练,这些大型模型执行推理的成本很高,并且难以在生产应用程序中进行调试、监控和维护。我们认为,基础模型的性能和可用性的进一步进步将需要跨算法、模型、软件和硬件系统进行仔细的协同设计,以及用于编程和部署ML应用程序的新接口。在本节中,我们讨论了在开发和生产大规模基础模型时的关键计算机系统挑战。

图1所示。图中显示了基于transformer的语言模型的参数数和训练操作数(FLOPs)的增长(蓝色表示),以及NVIDIA P100、V100和A100 gpu的内存容量和峰值设备吞吐量(红色表示)随时间的增长。最先进的语言模型的增长率(每条线的斜率)(大约每年10倍)远远超过硬件计算能力的增长率(大约4年10倍),这激发了对大量加速器之间并行性的需求,以及算法、模型、软件和硬件的协同设计,以推动进一步的进步。参数数量和训练操作次数从相关论文中获得,内存容量和峰值吞吐量从GPU规格表中获得。
1. 通过协同设计提高性能
如今,训练大规模基础模型通常需要定制软件系统,如Megatron, DeepSpeed, or Mesh Transformer JAX,建立在PyTorch、TensorFlow和JAX等标准框架之上。这些软件系统依赖于跨堆栈的许多创新来大规模高效地训练模型:新的并行化维度,如管道parallelism 在保持设备繁忙的同时限制通信,状态分片优化器减少内存使用,即时(JIT)编译器优化计算图,以及优化库如cuDNN和NCCL 。Megatron和DeepSpeed在特定规模上是有效的;例如,Megatron可以在具有1万亿个参数的模型上使用大约3000个GPU提取高达现代硬件理论峰值吞吐量的52% 。然而,扩展到具有更多GPU的更大模型仍然具有挑战性,因为现有的并行化策略在更大的GPU数量下会崩溃。数据并行性受限于批大小,管道并行性受限于模型中的层数,以及单个服务器上GPU数量的张量模型并行度。
虽然我们将继续从新硬件中实现性能提升,但大型模型资源需求的增长远远超过了几代硬件的改进。为了促进模型容量的下一个重大飞跃,并使模型质量的进步民主化,协同设计训练算法、模型、软件和硬件将变得越来越重要,因为许多显著提高性能的途径会改变训练计算的语义。例如,以较低精度(如fp16)执行操作可以帮助提高现代硬件的吞吐量(例如,V100和A100 GPU具有用于低精度矩阵乘法的专用张量核心单元),但也会影响优化过程的数值。类似地,利用权值稀疏性可以显著提高训练和推理时间只对模型中的非零进行数学运算,但需要不同的训练算法。协同设计的其他例子包括更有效地映射到硬件的模型架构,新颖的代币化替代方案,专门架构的硬件训练平台,以及放宽权重更新语义的分布式并行化策略。
案例研究:有效的知识表示
作为成功协同设计的具体案例研究,基于检索的模型,如REALM、RAG、ColBERT-QA和RETRO 采用了与简单增加模型参数数量不同的模型设计方法。基于检索的模型不是试图将越来越大的数据集中的隐性知识直接积累到具有数十亿个参数的DNN模型中(如GPT- 3),而是以文本段落的形式存储模型参数之外的知识,以密集的向量表示捕获段落内的知识。然后,这些模型使用可扩展的top-𝑘搜索机制来提取与每个输入相关的知识,同时保持DNN模型本身较小。这种设计提高了模型在生产中的计算效率和可维护性:例如,开发人员可以通过替换文本段落来更新模型的知识,而无需重新训练大型DNN。
基于检索的模型通过利用几个新的跨职能思想取得了有希望的初步结果,包括在训练期间通过检索器反向传播损失(这需要通过由数百万个段落组成的知识存储近似梯度)和建模查询和段落之间的细粒度交互(这需要将计算分解为向量级最近邻搜索操作)。这些技术允许基于检索的模型是准确的和高效,但需要的功能不容易被流行的ML框架和最近邻指数(如FAISS)支持。
2. 自动优化
系统中的另一个重要挑战是自动化跨算法、模型、软件和硬件的优化应用。虽然许多优化和并行化策略是互补的,但识别最有效的优化组合是具有挑战性的,因为联合搜索空间以组合方式增长,优化以非平凡的方式相互作用。基础模型增加了对自动优化的需求,因为在数千个gpu的规模下,手动实验非常昂贵且耗时。
该领域最近的工作集中在以语义保持优化为目标的系统上。特别是,已经提出了自动发现数学等效图替换的系统,通过高级api和低级编译器促进算子图的分布式执行,以及混合配送策略的自动化选择。这些系统已经帮助在工业中部署了许多基础模型。
不幸的是,当组合语义改变优化时,自动优化变得更加困难,因为通常不清楚如何联合建模这些技术的统计影响(例如,需要多少训练迭代才能达到特定的精度?)。因此,我们将需要新的软件工具、库和编译器来自动识别针对时间-精度等综合指标的优化组合。构建这样的工具需要系统和机器学习专家之间的紧密协作。
3. 执行和编程模型
基础模型独特的多任务性质提供了将训练和推理成本分摊到许多应用程序上的机会。特别是,适应等范式意味着在模型实例之间有更多的共享。例如,来自同一预训练模型的两个经过前缀调优的模型可以共享相同的模型“干”,从而减少了存储占用(共享的干只需要存储一次),同时也使得跨前缀调优模型共享和批处理执行成为可能。因此,所使用的特定适应机制为系统优化提供了信息。
应该使用什么编程接口来指定从相同的预训练模型(例如,模型)派生的各种适应模型,这是一个悬而未决的问题 (𝑌和 𝑍是从相同的预训练模型𝑋衍生出来), 或者两个模型的各个组成部分共享参数(例如,两个模型𝐴和𝐵具备相同的网络层)。Ludwig和PyTorch的Module提供了在模型内组合功能的简单方法,但目前没有系统支持跨模型依赖关系。让用户有机会提供注释将允许训练和推理系统更有效地优化和编排计算;如果没有这样的注释,系统将无法看到哪些计算和参数可以跨模型实例共享。模型的“适应历史”(这个特定的模型是从什么模型改编的)也可以用于调试:一个被改编的模型在特定类型的输入上的错误可能源于预训练的模型,指出预训练过程与适应过程中的问题。像PyTorch这样的框架,以及训练基础模型,如HuggingFace Transformers,不允许指定整个模型实例的细粒度血统信息。
构建和维护一个由数千个加速器组成的集群也需要巨大的努力。新的培训范式如Learning@Home 探索利用互联网上的志愿者计算来协同训练基础模型。这种全新的执行模型可以降低任何一个实体的培训成本,但需要跨多个不同领域的协作,如安全性(确保恶意志愿者不能显著改变培训过程)、分布式系统(在志愿者退出时处理容错问题)和众包。
4. 基础模型的产品化
随着社区继续推动基础模型的能力,实现其潜力将需要解决与在生产中部署这些资源密集型模型相关的挑战。这些挑战包括以严格的延迟目标执行模型推理,并确保以自动化的方式监控模型和数据。
对于具有严格成本和延迟约束的应用,蒸馏等模型压缩技术,量化,修剪和稀疏性可以通过转换更大的模型来获得所需的推理时间属性来帮助部署。这些技术最初是为低内存环境(例如,移动电话)中的较小模型(例如,BERT-L)设计的,但现在需要处理数据中心部署中现代基础模型的极端规模。像张量模型并行化(tensor model parallelism) 这样传统上用于训练的并行化技术,也可能有助于减少推理延迟,并且还可以跨gpu提供额外的内存容量来拟合模型的参数。
除了这些实际约束外,基础模型的大小和复杂性以及用于训练它们的数据集的增加也给模型和数据集生命周期管理带来了新的挑战。由于具有大量参数的模型很难由人类手动检查,因此我们需要更好的系统来实现自动数据集管理和模型质量保证。行为测试和模型断言等技术通过为最终应用程序中部署的模型提供类似于单元测试、运行时监控(以测试时间断言的形式)和持续的模型改进(随着新输入的到来)来简化生产中的模型维护。这些工具可以帮助解决公平性和偏见问题,并减少模型错误预测。
相关文章:
支持大模型训练的计算机系统
摘要: 训练数据决定了基础大模型可用的理论信息,模型架构和训练目标决定了可以提取多少信息,计算机系统决定了实际可实现的内容。在数据和模型大小方面,系统是扩展的关键瓶颈,这两者似乎都可以可靠地跟踪能力的改进。在…...
SAP ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应
ABAP-AVL-OO方法中的ALV的如何自己添加按钮及其响应 SAP在做报表开发中,不同公司对报表的风格往往各异,为此经常在使用OO方法做ALV报表中需要去掉自带的工具栏而自行添加一些工具按钮,下面将简单介绍一下添加按钮及如何响应的实现方法&#…...
uniapp移动端悬浮按钮(吸附边缘)
Uniapp移动端悬浮按钮可以通过CSS实现吸附边缘的效果。具体实现步骤如下: html: <movable-area class"movable-area"><movable-view class"movable-view" :position"position" :x"x" :y"y"…...
【成功】Linux安装Mysql8并设置远程连接
今天在新搞来的阿里云的服务器里安装MySQL8,记录一下过程: 这是MySQL的官网和下载地址:MySQL :: Download MySQL Community Server (Archived Versions) 1. 先进入安装目录 cd /usr/local 2. 安装 wget https://downloads.mysql.com/arch…...
高效纯化树脂A-2313 CPR
在化工、制药等行业中,对colorful chemicals的纯化一直是挑战。本文将为您介绍一款具有卓越性能的强碱性阴离子交换树脂——Tulsion A-2313 CPR。通过分析其特性和应用,展示其在colorful chemicals纯化领域的优势。 一、Tulsion A-2313 CPR离子交换树脂的…...
uni-app实现安卓原生态调用身份证阅读器读卡库读身份证和社保卡、银行卡、IC卡等功能
DONSEE系列多功能读写器Android Uniapp API接口规范V1.0.0 本项目Uniapp调用了身份证读卡器的库文件:DonseeDeviceLib-debug.aar,该库放到nativeplugins\donsee-card\android,然后会自动加载。SDK会自动检查是否拥有USB设备权限,…...
【QT】QComboBox和QPlainTextEdit基本介绍和应用示例
目录 1.QComboBox 1.1 QComboBox概述 1.2 QComboBox信号 1.3 QComboBox常用功能 1.4 QComboBox添加简单项 1.6 QComboBox列表项的访问 2.QPlainTextEdit 2.1 QPlainTextEdit概述 2.2 QPlainTextEdit的基本属性 2.3 QPlainTextEdit的公共函数 2.4 QPlainTextEdit的公…...
Path的使用-path绘制折线的时候带上圆角
场景: 使用antv-g6 自定义边的时候,绘制折线,此时都是直角,需要加圆角,没找到属性,自己绘制: 最后使用了A(elliptical Arc)弧形 A命令用于画弧形。 A rx ry x-axis-r…...
Go Fyne 入门
Fyne是一个用于创建原生应用程序的UI工具包,它简单易用,并且支持跨平台。以下是一个简单的Fyne教程,帮助你入门: 1. 安装Fyne 首先,确保你已经安装了Go语言。然后,在终端中运行以下命令来安装Fyne&#x…...
如何为游戏角色3D模型设置纹理贴图
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格…...
2024 年 SEO 现状
搜索引擎优化(SEO)一直以来都是网络知名度和成功的基石。随着我们踏上 2024 年的征程,SEO领域正在经历重大变革,有些变革已经开始,这对企业、创作者和营销人员来说既是挑战也是机遇。 语音搜索 语音搜索曾是一个未来…...
Mac虚拟机CrossOver23破解版下载和许可证下载
CrossOver Mac Mac 和 Windows 系统之间的兼容工具。使 Mac 操作系统的用户可以运行 Windows 系统的应用,从办公软件、实用工具、游戏到设计软件, 您都可以在 Mac 程序和 Windows 程序之间随意切换。 系统要求 运行macOS的基于Intel或Apple Silicon 的…...
宝藏级实用工具,制作电子书轻而易举
电子书是一种数字化的书籍形式,可以通过互联网进行传播和分享。相比于传统的纸质书籍,电子书具有便携、环保、易于分享等优点。如今,越来越多的人开始选择阅读电子书,它已经成为了一种流行的阅读方式。 那么,如何制作电…...
虚拟局域网(VLAN)解析(Virtual Local Area Network)(用于在不受物理位置限制的情况下将设备划分到同一网络或不同网络)
文章目录 虚拟局域网(VLAN)解析1. VLAN简介2. VLAN工作原理3. VLAN类型1. 静态VLAN2. 动态VLAN 4. VLAN优点提高安全性降低网络拥堵更简单的管理 5. 如何配置VLAN1. 进入全局配置模式2. 创建VLAN并命名3. 将端口分配给VLAN4. 验证VLAN配置 6. 常见问题与…...
uni-app 微信小程序之好看的ui登录页面(四)
文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…...
解决火狐浏览器拖拽事件打开新页面的问题
产生原因及解决方案 我们在进行拖拽事件的编写时会发现,在火狐浏览器上会发生打开新窗口的问题,这是火狐浏览器的一个特性。 这是因为在 Firefox 中 ondrop 事件会触发 Firefox 自带的拖拽搜索功能,在 ondrop 事件触发执行时触发的函数中加…...
以为回调函数是同步的(js的问题)
回调函数可以用来处理 JavaScript 的异步操作,但是选用 Promise、async/await 更好,因为多重回调函数会导致回调地狱。 回调函数不是**同步的**,它是延时操作执行完毕后会被调用的一个函数。 比如全局方法 "setTimeout" …...
如何在小米路由器4A千兆版刷入OpenWRT并通过内网穿透工具实现公网远程访问
文章目录 前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 前言 OpenWRT是一个高度模块化、高度自…...
diffusers pipeline拆解:理解pipelines、models和schedulers
diffusers pipeline拆解:理解pipelines、models和schedulers 翻译自:https://huggingface.co/docs/diffusers/using-diffusers/write_own_pipeline v0.24.0 diffusers 设计初衷就是作为一个简单且易用的工具包,来帮助你在自己的使用场景中构建…...
Spring 装配Bean详解
一、简介 Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。Spring具有非常大的灵活性,它提供了三种主要的装配机制: 在XML中进行显示配置;在Java中进行显示配置;隐式的bean发现机制和自动装配。 二、…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
