大型语言模型(LLM)的小型化研究进展

2024年,大型语言模型(LLM)的小型化研究取得了显著进展,主要采用以下几种方法实现:

  1. 模型融合:通过将多个模型或检查点合并为一个单一模型,减少资源消耗并提升整体性能。例如,《WARM: On the Benefits of Weight Averaged Reward Models》这篇论文通过权重平均多个微调后的奖励模型,有效缓解了LLM中的奖励骇入问题,提升了RLHF对齐步骤的稳健性。

  2. 混合专家模型(Mixture of Experts, MoE):使用多个小型专家模块构建模型,如Mixtral 8x7B。这类模型参数效率高,可达到或超过更大模型的效果。

  3. 小型LLM的开发:研究者也在探索构建更小的开源LLM,以降低训练成本、提高可及性。如TinyLlama只有1.1B参数且完全开源。

  4. 参数高效的LLM优化技术:如代理调优(Proxy Tuning)。它可使用小型模型提升大型模型,无需改动大模型权重。

  5. 知识蒸馏:通过将一个大型的教师模型的知识转移到一个小型的学生模型中,来实现模型的小型化。这种方法可以在几乎不降低精度的情况下,将模型的参数量大幅度减小。

  6. 剪枝:通过删除权重矩阵的一些行和列,降低网络的嵌入维数,同时保持模型性能。例如,微软的SliceGPT方法通过删除权重矩阵中的行和列来降低网络的嵌入维数,同时保持模型性能。

  7. 量化:通过将模型中的参数和激活值转换为低精度的表示形式,以减少模型的存储空间和计算量,从而实现模型的小型化。

  8. 结构化剪枝与知识蒸馏相结合:英伟达研究表明,这种方法可以从初始较大的模型中逐步获得较小的语言模型。例如,将Llama 3.1 8B模型提炼为Llama-3.1-Minitron 4B,其表现优于类似大小的最先进的开源模型。

这些方法各有优势和适用场景,研究者可以根据具体需求和资源限制选择合适的小型化策略。通过这些技术,可以在保持模型性能的同时,实现模型的小型化和加速,使其更适合在各种设备上部署。

量化

量化技术在解决大模型小型化方面发挥着重要作用。通过将模型中的参数和激活值从浮点数(如32位的FP32)转换为低精度的表示形式(如8位的INT8),量化可以显著减少模型的存储空间和计算量,从而实现模型的小型化。这种方法不仅降低了模型对算力的需求,还减少了内存需求,并压缩了存储空间,使得大模型能够在资源受限的设备上高效运行。

微软亚洲研究院在这一领域取得了显著成果,他们推出的数据编译器Ladder和算法T-MAC,使得只支持对称精度计算的硬件能够直接运行混合精度矩阵乘法。测试结果表明,Ladder在支持GPU原本不支持的自定义数据类型方面,最高提速可达14.6倍;T-MAC在搭载了最新高通Snapdragon X Elite芯片组的Surface AI PC上,使CPU上运行的大模型吞吐率比专用加速器NPU快两倍。

此外,量化技术还可以提高模型的计算效率和性能。例如,通过量化,模型的权重参数可以压缩为原来的1/4,理论上可以获得最大4倍的性能提升。实际加速效果依赖于硬件支持,例如NVIDIA A100提供的Tensor Core对INT8、INT4和INT1运算都有运算单元进行加速。

量化技术的应用不仅限于提高效率,它还可以降低模型的存储和传输成本,加速模型的部署和迭代,提高模型的灵活性和适用性。随着硬件的发展和量化技术的进步,量化模型的应用将越来越广泛,推动大模型在更广泛场景中的应用。

结构化剪枝与知识蒸馏相结合

英伟达的研究团队通过结合结构化剪枝和知识蒸馏的方法,成功地将较大的Llama 3.1 8B模型压缩成了更小的Llama-3.1-Minitron 4B模型。这一过程不仅减少了模型的参数数量,还保持了模型的性能,甚至在某些方面有所提升。具体来说,这项技术的优势包括:

  1. 性能提升:Llama-3.1-Minitron 4B模型在多任务语言理解(MMLU)等复杂任务上的表现优于其他同等规模的模型,MMLU分数提高了16%。

  2. 训练数据和成本的减少:通过这种方法,训练新模型所需的令牌数量减少了40倍,同时训练一系列模型的成本节省高达1.8倍。

  3. 推理性能的增强:使用NVIDIA TensorRT-LLM工具包优化后,Llama-3.1-Minitron 4B模型在各种情况下的FP8精度吞吐量是原始Llama 3.1 8B模型的2.7倍。

  4. 多维度剪枝策略:英伟达的研究详细探讨了如何在多个维度上进行剪枝,包括神经元、注意力头、嵌入维度和模型深度,并结合知识蒸馏优化每一个步骤。

  5. 迭代的剪枝和知识蒸馏策略:研究发现,逐步剪枝并在每一步进行蒸馏训练,能够更有效地保持模型的原始性能,特别适用于需要高压缩率的场景。

  6. 实际应用潜力:压缩后的模型可以更高效地在资源有限的设备上运行,并能够提供近似于大模型的性能,尤其是在计算资源有限的设备上,如移动设备、边缘计算设备。

这项研究展示了如何通过技术创新来推动大语言模型的发展,使AI训练变得更加高效和经济,同时保持或甚至提升模型的性能。

TinyLlama

TinyLlama是一个小型但功能强大的开源语言模型,由新加坡科技设计大学(SUTD)的研究者开发。这个模型具有以下特点:

  1. 模型参数:TinyLlama的参数量为1.1亿(1.1B),这使得它在计算和内存需求上相对较小,适用于资源受限的环境。

  2. 预训练数据:TinyLlama在大约3万亿个token上进行了预训练,这是一个相当大的数据集,有助于模型学习丰富的语言特征。

  3. 架构和分词器:TinyLlama基于Llama 2架构和分词器(tokenizer),这意味着它可以在许多基于Llama的开源项目中即插即用。

  4. 训练效率:研究者们使用16块A100-40G的GPU,在90天内完成了TinyLlama的训练。此外,TinyLlama还采用了多种优化方法,如flash attention 2、FSDP(Fully Sharded Data Parallel)、xFormers等,提高了训练的效率和吞吐量。

  5. 性能:尽管规模相对较小,但TinyLlama在一系列下游任务中表现出色,性能显著优于同等大小的现有开源语言模型,如OPT-1.3B和Pythia1.4B。

  6. 开源:TinyLlama的所有模型检查点和代码都在GitHub上公开提供,这使得研究人员和开发者可以轻松地访问和使用这个模型。

  7. 应用场景:TinyLlama适用于多种应用场景,包括辅助大型模型进行推测性解码、在边缘设备上运行(如离线实时机器翻译)、在游戏中实现实时对话生成等。

  8. 性能比较:在常识推理任务中,TinyLlama展现了出色的表现,并在多个基准测试中超越了Pythia-1.4B。

TinyLlama的这些特点使其成为一个有吸引力的选择,特别是对于那些寻求在资源受限的环境中部署高效语言模型的研究人员和开发者。

剪枝

剪枝是一种模型压缩技术,它通过去除神经网络中的冗余参数(如权重)来减小模型的大小和计算量,同时尽量保持模型的性能。剪枝可以分为两大类:结构化剪枝和非结构化剪枝。

  1. 结构化剪枝(Structured Pruning)

    • 这种剪枝方式按整个结构单元进行剪枝,例如,对整个神经元、通道(channel)、或层(layer)进行剪枝,来简化模型。
    • 结构化剪枝的优点在于它保留了整体的网络结构,使得剪枝后的模型更容易在现有的硬件和软件上实现加速。
    • 例如,LLM-Pruner 就是一种结构化剪枝方法,它通过评估网络参数的重要性来移除冗余的组,从而降低模型的参数量。
  2. 非结构化剪枝(Unstructured Pruning)

    • 非结构化剪枝则是在权重矩阵中随机地对独立权重或者神经元链接进行剪枝。
    • 这种方法的剪枝算法简单,模型压缩比高,但剪枝后的权重矩阵稀疏,没有专用硬件难以实现压缩和加速的效果。

剪枝的过程通常包括以下几个步骤:

  1. 训练一个初始模型。
  2. 对模型进行剪枝,移除一定比例的参数。
  3. 对剪枝后的模型进行微调,以恢复由于剪枝可能造成的性能损失。

剪枝的可行性基于这样的观察:并不是所有的参数都在模型中发挥作用,部分参数作用有限、表达冗余,甚至可能会降低模型的性能。有研究表明,很多的深度神经网络仅仅使用很少一部分(如5%)的权值就足以预测剩余的权值,也就是说,仅仅训练一小部分原来的权值参数就有可能达到和原来网络相近甚至超过原来网络的性能。

在实际应用中,剪枝可以帮助减少模型的存储空间需求,加速模型的训练和推理过程,使得模型更适合部署在资源受限的设备上,如移动设备或嵌入式系统。此外,剪枝还可以与量化、知识蒸馏等其他模型压缩技术结合使用,以进一步优化模型的性能和效率。

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

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

相关文章

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件,支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定! 二、烧录说明 固件及工具打包下载地址: https://download.csdn.net/download/flyai…

探秘机器学习算法:智慧背后的代码逻辑

1、 线性回归 线性回归是预测连续变量的一种简单而有效的方法。其数学模型假设因变量 y 与自变量 x 之间存在线性关系,用公式表示为: ​ Python代码实现 import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.…

【合肥工业大学】操作系统 习题解析 作业答案(仅作学习与交流/侵删)

第一章习题解析 1.设计现代OS的主要目标是什么? 答:(1)有效性 ( 2)方便性 ( 3)可扩充性 ( 4)开放性 2. OS 的作用可表现在哪几个方…

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局

文章目录 主要特点:基本用法:常用属性: 要在微信小程序中让一个 view 元素内部的文字水平垂直居中,可以使用 Flexbox 布局。以下是如何设置样式的示例: .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…

JSON交互处理

目录 一、什么是JSON 二、JSON和JavaScript对象互转 ​三、Controller返回JSON数据 3.1 使用Jackson 编写Controller 1. 一个对象 2. 多个对象 3. 输出时间对象 4. 优化:抽取为工具类 一、什么是JSON Json是JavaScript对象的字符串表示法,它用…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…

无人机多机编队控制算法详解!

一、主要算法类型 长机-僚机法(Leader-Follower) 原理:通过设定一架无人机作为长机(领航者),其他无人机作为僚机(跟随者),僚机根据长机的信息来调整自身的飞行状态&#…

RL学习笔记-表格型方法

参考资料:蘑菇书;《世界冠军带你从零实践强化学习》B站课程 Q表格 前面讲马尔可夫过程的时候提到过Q函数,Q函数是在某状态s下采取某动作a得到的平均奖励(状态动作价值)。Q表格就是在状态和动作两个维度上可视化的一张二…

基于SSM+微信小程序的订餐管理系统(点餐2)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的订餐管理系统实现了管理员和用户。管理端实现了 首页、个人中心、用户管理、菜品分类管理、菜品信息管理、订单信息管理、配送信息管理、菜品评价管理、订单投诉管理、…

太速科技-712-6U VPX飞腾处理器刀片计算机

6U VPX飞腾处理器刀片计算机 一、产品概述 该产品是一款基于国产飞腾FT-2000四核处理器或D2000八核处理器的高性能6U VPX刀片式计算机。产品提供了可支持全网状交换的高速数据通道,其中P1、P2均支持1个PCIe x16 Gen3或2个PCIe x8 Gen3或4个PCIe x4 Gen3总…

uaGate SI——实现OT与IT的安全连接

对于许多制造商来说,诸如工业物联网(IIoT)、信息物理系统(CPS)和大数据等概念已经开始与其智能工厂的愿景紧密相连。智能工厂是将信息技术(IT)的数字世界与运营技术(OT)的…

51c大模型~合集12

我自己的原文哦~ https://blog.51cto.com/whaosoft/11564858 #ProCo 无限contrastive pairs的长尾对比学习 , 个人主页:https://andy-du20.github.io 本文介绍清华大学的一篇关于长尾视觉识别的论文: Probabilistic Contrastive Learning for Long-Tailed Visua…

基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 这里实现的是256*256双线性插值到512*512的系统模块 局部放大: 将数据导入到matlab,得到插值效果…

书生大模型第一关Linux基础知识

任务一:完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件: 3.创建开发机 最后点击创建,然后可能需要等待一段较长的时间,大概需要5分钟左右,如果需要排队则更长时间 然后选择…

SpringBoot配置Access-Control-Allow-Origin

1. 配置过滤器 Component WebFilter(urlPatterns "/*", filterName "CorsFilter") public class CorsFilter implements Filter {Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, Serv…

如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐

如何压缩pdf文件的大小?在现代办公和学习中,PDF文件因其稳定性和广泛的兼容性被广泛使用。然而,随着文件内容的增多,制作好的PDF文件常常变得过大,给使用带来了诸多不便。无论是电子邮件附件的发送,还是在线…

二十九、Python基础语法(继承-上)

一、概念介绍 继承:继承描述的是类与类之间的关系,集成之后子类对象可以直接使用父类中定义的方法的属性,可以减少代码冗余,提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…

Creo/Proe 入门基础教程(二)

本文章继续接着《Creo/Proe 入门基础教程(一)》的内容往下介绍: 2、绘制草图 草图绘制就是建立2D的截面图,然后以此截面生成拉伸、旋转等 特征实体。构成2D截面的要素有3个:2D几何图形(Geometry&#xff0…

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…

江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…