LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment

在这里插入图片描述

现在,您已经了解了如何调整和对齐大型语言模型以适应您的任务,让我们讨论一下将模型集成到应用程序中需要考虑的事项。
在这里插入图片描述

在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快?您有多少计算预算可用?您是否愿意为改善推理速度或降低存储空间而牺牲模型性能?
在这里插入图片描述

第二组问题与您的模型可能需要的额外资源有关。您是否打算让您的模型与外部数据或其他应用程序进行交互?如果是的话,您将如何连接到这些资源?
在这里插入图片描述

最后,还有一个问题,即您的模型将如何被使用。您的模型将通过什么样的预期应用程序或API界面来使用?

让我们首先探讨一些在将模型部署到推理之前用于优化模型的方法。
在这里插入图片描述

虽然我们可以将几节课用于讨论这个主题,但本节的目标是为您介绍最重要的优化技术。大型语言模型在计算和存储要求方面提出了推理挑战,以及确保消费应用程序具有低延迟。无论是在本地部署还是部署到云上,当部署到边缘设备时,这些挑战都会更加突出。
在这里插入图片描述

提高应用程序性能的主要方法之一是减小LLM的大小。这可以允许模型更快地加载,从而减少推理延迟。但是,挑战在于在保持模型性能的同时减小模型的大小。对于生成模型,某些技术比其他技术效果更好,准确性和性能之间存在权衡。在本节中,您将了解三种技术。

蒸馏使用一个较大的模型,即教师模型,来训练一个较小的模型,即学生模型。然后,您可以使用较小的模型进行推理,以降低存储和计算预算。与量化感知训练类似,后期训练量化将模型的权重转换为较低精度的表示,例如16位浮点或8位整数。如您在课程第一周学到的那样,这会减小模型的内存占用。第三种技术,模型修剪,删除了对模型性能贡献不大的冗余模型参数。让我们更详细地讨论这些选项。
在这里插入图片描述

模型蒸馏是一种侧重于使用较大的教师模型来训练较小的学生模型的技术。学生模型学会统计上模仿教师模型的行为,可以是在最终预测层或模型的隐藏层中。
在这里插入图片描述

这里我们将重点放在第一种选项上。您可以使用您的微调LLM作为教师模型,为学生模型创建一个较小的LLM。您冻结教师模型的权重,并使用它来为您的训练数据生成完成。同时,您使用学生模型为训练数据生成完成。通过最小化称为蒸馏损失的损失函数来实现教师和学生模型之间的知识蒸馏。为了计算这个损失,蒸馏使用了由教师模型的softmax层产生的标记概率分布。
在这里插入图片描述

现在,教师模型已经在训练数据上进行了微调。因此,概率分布可能与基本事实数据非常接近,标记中的令牌不会有太大的变化。这就是为什么蒸馏应用了一个小技巧,即在softmax函数中添加温度参数。如您在第一课中学到的,温度越高,模型生成的语言的创造力就越大。
在这里插入图片描述

通过一个大于一的温度参数,概率分布变得更广泛,峰值不那么尖锐。
在这里插入图片描述

这种较软的分布为您提供了一组与基本事实标记相似的标记。

在蒸馏的上下文中,教师模型的输出通常被称为软标签,
在这里插入图片描述

学生模型的预测被称为软预测。
在这里插入图片描述

同时,您训练学生模型生成基于您的基本事实训练数据的正确预测。在这里,您不会改变温度设置,而是使用标准的softmax函数。蒸馏将学生和教师模型之间的损失和学生损失结合起来,通过反向传播来更新学生模型的权重。
在这里插入图片描述

蒸馏方法的关键好处是可以在部署中使用较小的学生模型,而不是教师模型。
在这里插入图片描述

在实践中,蒸馏对生成解码器模型通常不太有效。通常对仅编码器模型,如具有大量表示冗余的Bert模型,更有效。请注意,使用蒸馏,您训练了一个第二个较小的模型,用于推理。您没有以任何方式减小初始LLM的模型大小。

接下来,让我们看看下一个可以实际减小LLM大小的模型优化技术。在第一周,您已经在培训的上下文中介绍了第二种方法,即量化感知训练Specifically Quantization Aware Training,简称QAT。
在这里插入图片描述

然而,一旦模型训练完毕,您可以执行后期训练量化Post Training quantization,简称PTQ,以优化部署。PTQ将模型的权重转换为较低精度的表示,例如16位浮点或8位整数,以减小模型大小和内存占用,以及模型服务所需的计算资源。一般来说,包括激活的量化方法对模型性能的影响较大。
在这里插入图片描述

量化还需要额外的校准步骤,以统计捕获原始参数值的动态范围。
在这里插入图片描述

与其他方法一样,存在权衡,因为有时量化会导致模型评估指标略微下降。然而,这种降低通常可以抵消成本节省和性能提高的成本。

最后一个模型优化技术是修剪Pruning。在高层次上,目标是通过消除对总体模型性能贡献不大的权重来减小推理的模型大小。这些权重的值非常接近或等于零。请注意,一些修剪方法需要对模型进行全面重新训练,而其他方法属于参数高效微调的范畴,例如LoRA。还有一些方法专注于后期修剪。在理论上,这可以减小模型的大小并提高性能。然而,在实践中,如果只有一小部分模型权重接近零,那么模型的大小和性能可能没有太大影响。
在这里插入图片描述

量化、蒸馏和修剪都旨在减小模型大小,以提高推理时的模型性能,而不影响准确性。优化您的模型以供部署将有助于确保您的应用程序运行良好,并为用户提供最佳体验。

Reference

https://www.coursera.org/learn/generative-ai-with-llms/lecture/qojKp/model-optimizations-for-deployment

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

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

相关文章

数据结构———— 堆

(一)基础补充 满二叉树是每一层节点都放满的二叉树。 完全二叉树是只有最后一层节点右边不放满的二叉树。 满二叉树(Perfect Binary Tree) 如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。另一种说法:一个深度为k(>=-1)且有2^(k+1) - 1个结…

一种重要的天然氨基酸L-Homopropargylglycine(HPG)|CAS:942518-19-6

产品简介:L-Homopropargylglycine是一种重要的天然氨基酸,具有多种生物活性和医学应用价值。它广泛应用于生物学、药学、化学等多个领域。在生物学中,HPG被用作蛋白质合成的标记物,可以通过其特殊的化学反应与蛋白质中的半胱氨酸残…

Rocky(centos)安装nginx并设置开机自启

一、安装nginx 1、安装依赖 yum install -y gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel 2、去官网下载最新的稳定版nginx nginx: downloadhttp://nginx.org/en/download.html 3、将下载后的nginx上传至/usr/local下 或者执行 #2023-10-8更新 cd /usr/…

图像分割-Segment Anything实践

一、模型介绍 Segment Anything 模型是一种新的图像分割模型,它可以在不需要大量标注数据的情况下,对图像中的任何物体进行分割。这种方法可以帮助计算机视觉领域的研究人员和开发人员更轻松地训练模型,从而提高计算机视觉应用程序的性能。该…

线段树基本原理和操作

线段树的一些基本操作和原理: 由二分的思想而来,一段区间划分,实现大量数据的查询删除O(log(n)) 线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明&#xff0…

【网络安全---XSS漏洞(1)】XSS漏洞原理,产生原因,以及XSS漏洞的分类。附带案例和payload让你快速学习XSS漏洞

以pikachu靶场为例子进行讲解,pikachu靶场的搭建请参考以下博客; 【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客【网路安全 --- pikachu靶场安装】超详细的pi…

设计模式——Decorator(装饰器模式)

Decorator(装饰器模式) 目的: 动态地给一个对象添加一些额外的职责。 适用性: 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 简单解释 当有一个已经完成的系统,其中类和对象的关系的错综复杂的&#x…

【【萌新的SOC学习之小水文系列】】

萌新的SOC学习之小水文系列 SD卡读写TXT文本实验 SD 卡共有 9 个引脚线,可工作在 SDIO 模式或者 SPI 模式。在 SDIO 模式下,共用到 CLK、CMD、DAT[3:0]六根信号线;在 SPI 模式下,共用到 CS(SDIO_DAT[3])、…

leetcode:2427. 公因子的数目(python3解法)

难度:简单 给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。 如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。 示例 1: 输入:a 12, b 6 输出:4 解释:12 和 6 的公因…

016 Spring Boot + Vue 图书管理系统

Spring Boot Vue 图书馆管理系统(library-system) 本地快捷预览项目 第一步:运行 db 文件夹下的springboot-vue.sql(询问作者获取),创建springboot-vue数据库 第二步:修改后端数据库配置文件,启动后端 …

OpenCV防抖实践及代码解析笔记

视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移(比如沿着x、y、z方向上的运动)或旋转(偏航、俯仰、翻滚)。 正如你在上面的图片中看到的,在欧几里得运动模型中,图像…

opencv图像的直方图,二维直方图,直方图均衡化

文章目录 opencv图像的直方图,二维直方图,直方图均衡化一、图像的直方图1、什么是图像的直方图:2、直方图的作用:3、如何绘制图像的直方图:(1)cv::calcHist()函数原型:英文单词 calc…

【C/C++】结构体内存分配问题

规则1:以多少个字节为单位开辟内存 就是说,该结构体最终所占字节大小,是这个单位的整数倍 给结构体变量分配内存的时候,会去结构体变量中找基本类型的成员 哪个基本类型的成员占字节数多,就以它大大小为单位开辟内存 …

【刷题】只出现一次的数字(三种解法)

【刷题】只出现一次的数字 文章目录 【刷题】只出现一次的数字解法异或运算解法一 : 异或运算解法二:集合类Set集合Map集合 链接: https://www.nowcoder.com/share/jump/2008263481696810321082 https://leetcode.cn/problems/single-number/description/ 题目描述 给定一个整…

[PyTorch][chapter 57][WGAN-GP 代码实现]

前言: 下图为WGAN 的效果图: 绿色为真实数据的分布: 8个高斯分布 红色: 为随机产生的数据分布,跟真实分布基本一致 WGAN-GP: 1 判别器D: 最后一层去掉sigmoid 2 生成器G 和判别器D: loss不取log 3 损失函数…

讲讲项目里的仪表盘编辑器(四)分页卡和布局容器组件

讲讲两个经典布局组件的实现 ① 布局容器组件 配置面板是给用户配置布局容器背景颜色等属性。这里我们不需要关注 定义文件 规定了组件类的类型、标签、图标、默认布局属性、主文件等等。 // index.js import Container from ./container.vue; class ContainerControl extends…

java:代理模式

概念代理模式 概念: 真实对象:被代理的对象,背景的联想总部代理对象:也就是那个西安联想代理商代理模式:代理对象代理真实对象,达到增强真实对象功能的目的 实现方式: 静态代理:有一…

边缘计算网关

一、项目整体框架图 二、项目整体描述 边缘计算网关项目主要实现了智能家居场景和工业物联网场景下设备的数据采集和控制。 整个项目分为三大层:用户接口层、网关层、设备层。 其中用户层通过QT客户端、WEB界面及阿里云提供数据展示和用户接口。 网关使用虚拟机代替…

ArcGIS Engine:实现Shp/Mxd数据的加载、图层的简单查询

本博客参考&#xff1a;BiliBili UP主 <羊羊旸> &#xff1a; Arcgis Engine学习 目录 01 加载控件以及控件的基本信息等调整 02 编写 <菜单-地图控件> 中各个子工具的代码 2.1 加载Shapefile数据-代码 2.2 加载地图文档数据-代码 2.3 获取图层数量-代码 2.…

如何从零开始系统的学习项目管理?

一、项目的概念 根据项目管理协会&#xff08;PMI&#xff09;的定义&#xff0c;项目是指为了创造独特的产品、服务或成果而进行的临时性工作。这意味着项目需要有明确的目标&#xff0c;且不是日常重复性工作。尽管项目是临时性工作&#xff0c;但它所交付的成果可能会持续存…