英伟达Llama-3.1-Nemotron-Ultra-253B-v1语言模型论文快读:FFN Fusion

FFN Fusion: Rethinking Sequential Computation in Large Language Models

代表模型:Llama-3.1-Nemotron-Ultra-253B-v1

1. 摘要

本文介绍了一种名为 FFN Fusion 的架构优化技术,旨在通过识别和利用自然并行化机会来减少大型语言模型(LLMs)中的顺序计算。研究发现,移除特定注意力层后剩余的前馈网络(FFN)层序列通常可以并行化,且对准确性影响最小。通过将这些序列转换为并行操作,显著降低了推理延迟,同时保留了模型行为。作者将这种技术应用于 Llama-3.1-405B-Instruct,创建了一个名为 Llama-Nemotron-Ultra-253B-Base 的高效模型,该模型在推理延迟上实现了 1.71 倍的速度提升,每令牌成本降低了 35 倍,同时在多个基准测试中保持了强大的性能。

2. 引言

大型语言模型(LLMs)已成为变革性技术,但其计算需求已成为部署成本和资源需求的根本瓶颈。现有的优化技术如量化、剪枝和专家混合(MoE)各自面临挑战。本文提出 FFN Fusion,通过识别 FFN 层中的计算独立性模式,实现多 GPU 上的并行执行,提高硬件利用率。

3. 预备知识

Transformer 基础

LLMs 通常基于 Transformer 架构,由一系列顺序块组成,每个块包含注意力层和 FFN 层。FFN 层使用 SwiGLU 模块,定义为:
其中,σ 是 SiLU 激活函数,

Puzzle 框架

Puzzle 是一种神经架构搜索(NAS)框架,通过剪枝或重新配置每个 Transformer 块来优化训练后的 LLM 的推理效率。Puzzle 通常会移除许多注意力层,留下连续的 FFN 层序列。

4. FFN Fusion 方法

关键洞察

FFN Fusion 的核心思想是,移除注意力层后,连续的 FFN 层序列可以被并行化。具体来说,多个顺序 FFN 层可以融合成一个更宽的层,从而实现简单的并行执行。

理论基础

定理 3.1 表明,多个 FFN 函数的和等价于一个单一的 FFN 函数,其权重矩阵是原始 FFN 权重矩阵的拼接。这使得多个 FFN 层可以融合为一个更宽的层。

效率动机与分析

LLMs 的设计通常是顺序块,随着模型规模的增大,块的大小和数量增加。通过减少计算图的深度,可以减少同步时间,提高硬件利用率。

块依赖分析

通过计算块之间的依赖关系,识别出适合并行化的 FFN 序列。依赖矩阵 M 的构造基于块 j 在移除块 i 后的贡献变化,量化块之间的依赖关系。

5. 大规模模型的 FFN Fusion 应用

从 Llama-405B 到 Ultra-253B-Base

通过 Puzzle 搜索结果,作者从 Llama-405B 派生出一个 253B 参数的基线模型,该模型移除了许多注意力层,留下 50 个连续的 FFN 层块。应用 FFN Fusion 后,这些层被融合为更少的层,显著减少了模型深度。

额外训练

为了恢复性能,作者使用知识蒸馏(KD)对融合后的模型进行微调。结果显示,融合后的模型在 MMLU 和 MT-Bench 等基准测试中的性能得到了恢复甚至提升。

效率提升

Ultra-253B-Base 在推理延迟上实现了 1.71 倍的速度提升,每令牌成本降低了 35 倍,同时在多个基准测试中匹配或超过了原始 Llama-405B 的性能。

6. 额外的实验研究

FFN Fusion 在 70B 规模模型中的应用

作者在 Llama-3.1-70B-Instruct 的派生模型上应用 FFN Fusion,结果表明,随着融合强度的增加,模型深度减少,准确性略有下降,但通过知识蒸馏可以恢复性能。

移除 FFN 层与 FFN Fusion 的比较

与直接移除 FFN 层相比,FFN Fusion 在保持模型质量方面具有明显优势。移除 FFN 层会导致显著的准确性下降,而融合则通过保留所有参数在一个并行模块中,最小化了性能损失。

FFN 序列中最后一层的敏感性

实验表明,融合 FFN 序列中的最后一层往往会导致更大的准确性下降,因此通常选择跳过这些层以实现高效的融合。

融合可解释性

通过分析层输入和输出之间的关系,作者解释了 FFN Fusion 的可行性,并指出融合区域的层间依赖性较低,使得融合对模型行为的影响较小。

7. 块并行化

方法

作者扩展了块依赖分析,识别出适合并行化的完整 Transformer 块序列。通过贪心算法选择依赖性较低的块序列进行并行化。

结果

实验结果表明,完整块并行化比 FFN Fusion 更具挑战性,因为完整块之间的依赖性更强。尽管如此,某些块序列仍然可以并行化,从而提高推理吞吐量。

8. 结论

FFN Fusion 是一种有效的优化技术,可以显著减少 LLMs 的顺序计算,提高推理效率。通过在不同规模的模型上进行广泛实验,作者证明了 FFN Fusion 的有效性,并指出了未来研究方向,包括模型可解释性、新架构设计和扩展到 MoE 模型等。

整理

技术关系图:

在这里插入图片描述

核心技术表

技术名称描述优势应用场景
FFN Fusion通过识别 FFN 层中的计算独立性模式,将多个顺序 FFN 层融合为一个更宽的层,实现并行化。显著降低推理延迟,减少模型深度,提高硬件利用率,保持模型性能。优化大型语言模型(LLMs),特别是在移除注意力层后的 FFN 序列。
Puzzle 框架一种神经架构搜索(NAS)方法,用于优化推理效率,通过剪枝或重新配置 Transformer 块。移除冗余的注意力层,生成适合 FFN Fusion 的模型结构。作为 FFN Fusion 的前置步骤,优化模型架构。
注意力剪枝移除模型中的注意力层,减少模型深度,生成连续的 FFN 层序列。降低计算复杂度,提高硬件利用率,为 FFN Fusion 提供基础。为 FFN Fusion 提供连续的 FFN 层序列。
块依赖分析通过量化块之间的依赖关系,识别适合并行化的区域。提供模型中适合并行化的区域的可视化和量化依据。模型架构优化,识别适合 FFN Fusion 或完整块并行化的区域。
知识蒸馏(KD)使用知识蒸馏从原始模型中恢复或提升融合后的模型性能。提高模型准确性,尤其是在融合或剪枝后。模型微调,特别是在应用 FFN Fusion 后恢复性能。
完整块并行化尝试将完整的 Transformer 块(包含注意力和 FFN)并行化。进一步提高推理吞吐量,特别是在大规模模型部署中。大规模模型部署,探索更高的并行化潜力。

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

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

相关文章

Django学习记录-1

Django学习记录-1 虽然网上教程都很多,但是感觉自己记录一下才属于自己,之后想找也方面一点,文采不佳看的不爽可绕道。 参考贴 从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍&#xff…

Python爬虫第7节-requests库的高级用法

目录 前言 一、文件上传 二、Cookies 三、会话维持 四、SSL证书验证 五、代理设置 六、超时设置 七、身份认证 八、Prepared Request 前言 上一节,我们认识了requests库的基本用法,像发起GET、POST请求,以及了解Response对象是什么。…

Python 要致富先修路

今天准备在原有基础上重新深入学习并记录python学习进程。 # 整体思路 不废话: 阶段1:精选入门电子教程坚持学习; 阶段2:跟着教程学习代码思维,做好学习笔记并构建知识库方便以后速查; 阶段3&#xff…

微服务无感发布实践:基于Nacos的客户端缓存与故障转移机制

微服务无感发布实践:基于Nacos的客户端缓存与故障转移机制 背景与问题场景 在微服务架构中,服务的动态扩缩容、滚动升级是常态,而服务实例的上下线需通过注册中心(如Nacos)实现服务发现的实时同步。但在实际生产环境…

2025年的Android NDK 快速开发入门

十年前写过一篇介绍NDK开发的文章《Android实战技巧之二十三:Android Studio的NDK开发》,今天看来已经发生了很多变化,NDK开发变得更加容易了。下面就写一篇当下NDK开发快速入门。 **原生开发套件 (NDK) **是一套工具,使开发者能…

Shell 编程之条件语句

目录 条件测试操作 文件测试 整数值比较 字符串比较 逻辑测试 if 条件语句 if语句的结构 1、单分支 if 语句 2、双分支 if 语句 3、多分支 if 语句 if语句应用实例 1、单分支 if 语句应用 2、双分支 if 语句应用 3、多分支 if 语句应用 case 分支语句 case语句的结构 case语…

【模板】缩点

洛谷p3387 思路: 算法:tarjan算法 根据题意,我们只要找到一个路径,使得最终权重最大即可,首先,根据题目可知,如果一个点在一个环上,那么我们就将这整个环都选上,题目上允许我们能够重复走,因此,我们可以将环缩成点,将环所称点后,就可以转换成树,从没有父节点的结点开始,我们向…

js触发隐式类型转换的场景

JavaScript 的隐式类型转换(Implicit Type Coercion)会在某些操作或上下文中自动触发,将值从一种类型转换为另一种类型。以下是常见的触发场景: 1. 使用 (宽松相等)比较时 会尝试将两边的值转换为相同类型后…

c++将jpg转换为灰度图

c将jpg转换为灰度图 step1:添加依赖 下载这两个文件,放在cpp同一目录下,编译生成 https://github.com/nothings/stb/blob/master/stb_image_write.h https://github.com/nothings/stb/blob/master/stb_image.hstep2:C:\Users\wangrusheng\source\repos…

python——正则表达式

一、简介 在 Python 中,正则表达式主要通过 re 模块实现,用于字符串的匹配、查找、替换等操作。 二、Python的re模块 使用前需要导入: import re 三、常用方法 方法描述re.match(pattern, string)从字符串开头匹配,返回第一个匹…

Soybean Admin 配置vite兼容低版本浏览器、安卓电视浏览器(飞视浏览器)

环境 window10 pnpm 8.15.4 node 8.15.4 vite 5.1.4 soybean admin: 1.0.0 native-ui: 2.38.0 小米电视 MIUI TV版本:MiTV OS 2.7.1886(稳定版) 飞视浏览器:https://www.fenxm.com/1220.html在小米电视安装飞视浏览器可以去小红书查安装教程&#xff1a…

系统与网络安全------网络通信原理(1)

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 文章目录 网络通信模型协议分层计算机网络发展计算机网络功能什么是协议为什么分层邮局实例 OSI模型OSI协议模型OSI七层模型OSI七层的功能简介 TCP/IP模型OSI模型与TCP/IP模型TCP/IP协议族的组成各层PDU设备与…

如何使用通义灵码完成PHP单元测试 - AI辅助开发教程

一、引言 在软件开发过程中,测试是至关重要的一环。然而,在传统开发中,测试常常被忽略或草草处理,很多时候并非开发人员故意为之,而是缺乏相应的测试思路和方法,不知道如何设计测试用例。随着 AI 技术的飞…

批量清空图片的相机参数、地理位置等敏感元数据

我们在使用相机或者手机拍摄照片的时候,照片中都会带有一些敏感元数据信息,比如说相机的型号,参数,拍摄的时间地点等等。这些信息虽说不是那么引人注意,但是在某些时候他是非常隐私非常重要的。如果我们将这些信息泄露…

SQL优化算法解析 | PawSQL 如何将EXISTS子查询“秒拆“为JOIN连接

在数据库性能调优中,子查询优化是提升查询效率的关键点之一。今天,我们将分享一个使用 PawSQL 对EXISTS子查询进行重写优化的案例,展示如何通过合理的SQL重写与索引设计,实现超过487516.45%的性能提升! 一、案例分析:EXISTS子查询的性能困境 这个查询的目的是找出…

大模型day1 - 什么是GPT

什么是GPT 全称 Generative Pre-trained Transformer 是一种基于 Transformer 架构的大规模 预训练 语言模型,由OpenAI研发,但GPT仅仅只是借鉴了Transformer 中 Decoder 的部分,并且做了升级 Transformer 架构 Transformer架构 是一种用于…

MDM功能演示:远程锁定与数据擦除,保障企业移动设备安全

在当今高度互联的商业环境中,企业数据伴随着员工穿梭于不同城市、时区和设备之间。智能手机、平板电脑和笔记本电脑赋予员工随时随地办公的能力,但也带来了新的安全挑战:设备一旦遗失或落入不当之手,企业数据就面临泄露风险。 无…

深度集成学习不均衡样本图像分类

用五个不同的网络,然后对分类概率进行平均,得到分类结果。基本上分类精度可以提升10% 1.导入基本库 import torch import copy import torch.nn as nn import torchvision.models as models from torchvision import datasets from torchvision import…

从零开始学java--泛型

泛型 目录 泛型 引入 泛型类 泛型与多态 泛型方法 泛型的界限 类型擦除 函数式接口 Supplier供给型函数式接口: Consumer消费型函数式接口: Function函数型函数式接口: Predicate断言式函数式接口: 判空包装 引入 …

5️⃣ Coze+AI应用基础教学(2025年全新版本)

目录 一、了解应用开发 1.1 扣子应用能做什么 1.2 开发流程 1.3 开发环境 二、快速搭建一个AI应用 2.1 AI翻译应用介绍 2.2 设计你的应用功能 2.3 创建 AI 应用项目 2.4 编写业务逻辑(新建工作流) 2.5 搭建用户界面 2.6 效果测试 2.7 发布应用 一、了解应用开发 …