生成式语言大模型压缩技术思考——以ChatGPT为例

news2024/11/14 3:22:28

ChatGPT引领了生成式语言大模型的应用与技术热潮,首先简单回顾ChatGPT应用范式:将其应用于指定的下游任务时(如知识问答、翻译、编码),ChatGPT需要经历三个阶段的训练(增强人类语境的猜想):

  1. 使用人类标注数据微调,学习人类想要的答案;

  1. 训练Reward model,学习人类偏好或意图;

  1. 使用强化学习(PPO算法)微调大模型,对齐人类偏好。

ChatGPT是基于GPT3.5(1750亿参数规模)训练获得的,其模型结构为Decoder-only单向掩码架构,推理部署需要分布式推理调度的支持。其在单机A100上进行多卡分布式推理时,自回归解码的响应延迟在百毫秒到数秒量级,因此部署应用面临着响应延迟高、成本开销大的问题。模型压缩是实现ChatGPT小型化应用、减少部署成本的关键,但需要引入哪些压缩算法?具体有哪些技术挑战?实现高倍压缩,整体流程需要怎么设计?

从以下几个问题展开讨论:

  • 大规模预训练阶段:通过在线蒸馏或自蒸馏,预训练小尺寸模型,需要考虑蒸馏的知识类型、助教模型的设计等;除Decoder-only模型结构外,小型化架构创新也非常关键;

  • 下游迁移阶段的挑战:小样本学习的数据量少、训练周期数短,直接应用传统的结构剪枝、张量分解等结构化压缩方法,会引起较大的精度损失。一方面,基于少样本信息(Data-driven)与模型权重信息(Data-free),如何设计有效的压缩指示(Importance Indicator);另一方面,在少样本微调过程中,如何借助多种类型的教师知识设计蒸馏方法,也是辅助精度保持、泛化性保持的关键技术手段;

  • 稀疏化压缩:由于大模型参数规模巨大,非结构(Element-wise)或半结构(Vector-wise, etc.)稀疏化的冗余度相对较高,相比于结构剪枝所面临的精度损失风险更低,有助于实现更高倍数压缩。一方面,也需要考虑如何设计有效的压缩指示,以支持高比例压缩(如90%稀疏度,10倍压缩),并且高参数效率的稀疏正则化有助于降低训练成本;另一方面,稀疏化压缩的推理部署,需要稀疏访存与计算算子的支持,为达成理想的压缩与加速收益(减少稀疏格式解码等开销),更需要DSA计算芯片架构的支持;

  • 混合精度量化:生成式语言大模型(如OPT-175B、ChatGPT)的特征维度非常高(超过10000),特征当中的异常值(Outliers)占比通常超过1%,长尾分布显著。若对整个网络的不同Layer均采用相同位宽(如INT8)进行量化,将引起较大的量化精度损失。因此需要设计合理的混合精度量化方法以降低精度损失风险;并引入极低比特量化(如4/2-bit)提高压缩倍数,但1-bit量化可能需要设计针对Attention的二值化网络结构,二值化的精度收敛效果较难保证。混合精度量化以及极低比特量化,需要算子、硬件层面的软硬件协同支持。

参考:https://blog.csdn.net/nature553863/article/details/128177323?spm=1001.2014.3001.5502

  • 组合压缩:涉及多种压缩策略时(剪枝、张量分解、量化与稀疏化等),设计有效的组合压缩方案,是实现千亿模型至少20倍压缩、单机单卡部署的关键。此外,Training-aware压缩方法,需要考虑占用更少的分布式训练开销。

有关Transformer类模型压缩的讨论,具体参考:

https://blog.csdn.net/nature553863/article/details/120292394?spm=1001.2014.3001.5502

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

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

相关文章

基于nodejs+vue的平面设计课程管理系统vscode

后台由管理员,教师和学生三个角色,其主要功能包括首页,个人中心,学生管理,教师管理,课程类型管理,课程学习管理,试题讲解管理,作业信息管理,作业提交管理&…

Flutter3引用原生播放器-IOS(Swift)篇

前言由于Flutter项目中需要使用到播放器功能,因此对flutter中各种播放器解决方案进行了一番研究和比对,最后决定还是自己通过Plugin的方法去引用原生播放器符合自己的需求,本篇文章会对各种解决方案做一个简单的比较,以及讲解一下…

STM32—DMA

什么是DMA? DMA(Direct Memory Access,直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来…

Leetcode 剑指 Offer II 016. 不含重复字符的最长子字符串

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长…

软考之操作系统知识

目录 1.进程管理-进程的概念 2.进程的三态图和五态图 3.进程的同步与互斥 4.PV操作应用 5.死锁问题 6.银行家算法 7.存储管理 8.段式存储组织 9.段页式存储组织 10.页面置换算法 11.磁盘管理 12.作业管理 13.索引文件结构 14.树型目录结构 15.空闲存储空间管理 …

第四届蓝桥杯省赛 C++ B组 - 翻硬币

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:蓝桥杯题解集合 📝原题地址:翻硬币 📣专栏定位:为想参加蓝桥杯的小伙伴整理常考算法题解,祝大家都…

人工智能学习07--pytorch09--LeNet

参考: 视频: https://www.bilibili.com/video/BV187411T7Ye/?spm_id_from333.999.0.0&vd_sourceb425cf6a88c74ab02b3939ca66be1c0d 博客:https://blog.csdn.net/STATEABC/article/details/123661612?utm_mediumdistribute.pc_feed_404.…

如何使用goquery进行HTML解析以及它的源码分析和实现原理

目录 goquery 是什么 goquery 能用来干什么 goquery quick start 玩转goquery.Find() 查找多个标签 Id 选择器 Class 选择器 属性选择器 子节点选择器 内容过滤器 goquery 源码分析 图解源码 总结 goquery 简介 goquery是一款基于Go语言的HTML解析库,…

聚类算法(上):8个常见的无监督聚类方法介绍和比较

无监督聚类方法的评价指标必须依赖于数据和聚类结果的内在属性,例如聚类的紧凑性和分离性,与外部知识的一致性,以及同一算法不同运行结果的稳定性。 本文将全面概述Scikit-Learn库中用于的聚类技术以及各种评估方法。 本文将分为2个部分&…

【Mac 教程系列】如何在 Mac 中用终端命令行方式打开 Sublime Text ?

如何在 Mac 中用终端命令行方式打开 Sublime Text ? 用 markdown 格式输出答案。 不少于1000字。细分到2级目录。 如何在 Mac 中用终端命令行方式打开 Sublime Text ? 一、首先确保已经安装 Sublime Text 前往官网https://www.sublimetext.com/下载 Sublime Text&#xff0c…

Bootstrap表单的使用

文章目录前言一、创建基础表单垂直表单(默认)内联表单(水平显示)表单控制尺寸大小给表单控件添加帮助文本禁用/只读表单无边框的控件取色器选择菜单(默认宽度100%)调整下拉菜单的大小表单开关滑块表单组多个…

LabVIEW网络服务安全

LabVIEW网络服务安全如何保护Web服务?当许多人考虑安全性时,他们会考虑加密、用户ID和密码。用户ID和密码用于授权(告诉目标谁在发出请求)。加密保护客户端和服务器之间的通信流量,以便未经授权的个人无法拦截和读取发…

【架构师】零基础到精通——康威定律

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

20_FreeRTOS低功耗模式

目录 低功耗模式简介 STM32低功耗模式 Tickless模式详解 Tickless模式相关配置 实验源码 低功耗模式简介 很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等。 一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。 FreeRTOS也…

Linux学习(8.7)命令与文件的搜寻

目录 命令与文件的搜寻 which 文件档名的搜寻: whereis (寻找特定文件) locate find 以下内容转载自鸟哥的Linux私房菜 命令与文件的搜寻 which 这个命令是根据『PATH』这个环境变量所规范的路径,去搜寻『运行档』的档名~ 所以&am…

计算机组成原理——运算方法续集(浮点数表示法)

浮点表示法把一个数字的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以浮点,所以称为浮点表示法。在计算机中一个任意二进制数N可以写成N 2^e.M其中M称为浮…

Overleaf推广奖励:增加合作者的数量、解锁Dropbox同步和项目修改历史

Overleaf推广奖励 Overleaf是一个LaTeX\LaTeXLATE​X在线编译器,它可以让你与合作者共同在线编辑文档。但是默认的免费账号仅能邀请一个合作者。那么如何增加合作者的数量呢? Overleaf推出了一个奖励计划,你邀请其他人注册Overleaf&#xf…

使用MavenCentral发布Kotlin多平台库的远程依赖(KMM,KMP)

前言 开发者可能都会做自己的开源库,像我以前只做一些单平台的,如Android或JVM平台,这时候直接使用jitpack即可,很简单就能发布远程依赖 jitpack参考: 发布开源库的踩坑经历:jitpack.io_李小白lt的博客 而现在Kotlin可以通过expect来实现原生多平台项目(或库),这时我们开发…

【计算机三级网络技术】 第二篇 中小型系统总体规划与设计

文章目录一、基于网络的信息系统基本结构二、划分网络系统组建工程阶段三、网络需求调研与系统设计原则四、网络用户调查与网络工程需求分析1.网络用户调查2.网络节点的地理位置分布3.应用概要分析4.网络需求详细分析五、网络总体设计基本方法1.网络工程建设总体目标与设计原则…

C++---线性dp---传纸条(每日一道算法2023.2.26)

注意事项: 本题dp思路与 “线性dp–方格取数” 一致,下方思路仅证明为什么使用方格取数的思路是正确的。 题目: 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。 一次素质拓展活动中,班上同学安排坐成…