大模型学习笔记 - LLM 解码与部署

news2024/10/1 9:37:40

LLM 解码与部署

  • LLM 解码与部署
    • 1. 解码策略
      • 1.1 背景
        • 1.1 贪心搜所
        • 1.2 概率采样
      • 1.2 贪心搜所改进
        • 1.2.1 束搜索 (保留前n个高概率的句子,最终选取整体概率高的生成)
        • 1.2.2 长度惩罚 (估计生成更长句子)
        • 1.2.3 重复惩罚 (n元惩罚避免重复:出现惩罚和频率惩罚)
      • 1.3 随机采样改进
        • 1.3.1 温度采样
        • 1.3.2 Top-𝑘 采样
        • 1.3.3 Top-p 采样
        • 1.3.4 对比解码
    • 2. 解码加速算法
    • 3. 低资源部署策略
    • 4. 其他模型压缩方法

当完成训练后,我们就可以将大语言模型部署到真实场景中进行使用。大语言模型是通过文本生成的方式进行工作的。在自回归架构中,模型针对输入内容(即提示文本,详见第10 章)逐个单词生成输出内容的文本。这个过程一般被称为解码。
下面针对解码策略、加速方法、部署策略、压缩方法进行介绍。

1. 解码策略

大语言模型的生成方式本质上是一个概率采样过程,需要合适的解码策略来生成合适的输出内容。

1.1 背景

在介绍具体的解码策略之前,首先介绍一下语言模型解码的背景知识。这里,主要介绍自回归场景下的解码策略。下图展示了一个整体的自回归解码流程。可以看到,模型M 每次根据当前上下文词元序列𝒖 = [𝑢1, 𝑢2, · · · , 𝑢𝑡 ] 建模下一个词的概率分布𝑃(即公式5.11 的输出),然后根据一定的解码策略选择下一个词𝑢′,之后再将𝒖 和𝑢′ 作为新的上下文重复上述步骤,直到生成结束词元或者达到长度上限为止。在这个流程中,解码策略将主要关注如何基于概率分布𝑃 选择合适的下一个词𝑢′。自回归的解码策略并不局限于特定架构,常见的编码器-解码器、因果解码器和前缀解码器均可适用。
在这里插入图片描述

1.1 贪心搜索

目前常见的大语言模型主要是通过语言建模任务进行预训练的。基于这种训练方式,一种直观的解码策略是贪心搜索(Greedy Search)。具体来说,贪心搜索在每个生成步骤中都选择概率最高的词元,
其可以描述为以下形式: u i = a r g m a x u P ( u ∣ u < i ) u_i = argmax_{u}P(u|u_{<i}) ui=argmaxuP(uu<i)
在这里插入图片描述

在预测句子“I am sleepy. I start a pot of”的下一个词元时,贪心搜索选择了当前步骤下概率最高的词元——“coffee”。然后模型将“coffee”加入上下文,并不断重复该过程。由于贪心搜索所采取的是确定性策略,它的效果在不同类型的任务中具有一定的差异。在机器翻译和文本摘要等任务中,任务输出高度依赖于输入内容,贪心搜索通常能够获得不错的结果,但是在开放式生成任务(如故事生成和对话系统)中,贪心搜索有时会因为过于关注局部最优,而生成不自然、重复的句子.

1.2 概率采样

除了贪心搜索外,另一种可选的解码策略是概率采样(Probability Sampling)。该方法根据模型建模的概率分布采样得到下一个词元,旨在增强生成过程中的随机性和结果的多样性: u i ∼ P ( u ∣ u < i ) u_i\sim P(u|u_{<i}) uiP(uu<i)
在这里插入图片描述

上图中展示了下一个词元的概率分布,虽然单词“coffee”被选中的概率较高,但基于采样的策略同时也为选择其他单词(如“water”、“tea”等)留有一定的可能性,从而增加了生成文本的多样性和随机性。

1.2 贪心搜所改进

贪心搜索在每个生成步骤中均选择最高概率的词元,这可能会由于忽略在某些步骤中概率不是最高、但是整体生成概率更高的句子而造成局部最优。为了解决这个问题,可以进一步采用以下的改进策略。

1.2.1 束搜索 (保留前n个高概率的句子,最终选取整体概率高的生成)
  • 束搜索. 在解码过程中,束搜索(Beam Search) 会保留前𝑛 个具有最高概率的句子,并最终选取整体概率最高的生成回复。这里的𝑛 被称为束大小(BeamSize)。当𝑛 = 1,束搜索就退化为贪心搜索。
    在这里插入图片描述

如上图所示,第一步保留了概率最高的两个词“coffee”和“water”作为候选;第二步基于“coffee”和“water”均进行扩展,得到模型在两个上下文内容下的概率分布,最后选择联合概率最高的两个句子“coffee then”和“coffee and”作为候选。在下面的生成步骤中,将会继续基于这两个候选去进行扩展,每次都选择联合概率最高的两个句子。最后,当两个束的句子均生成结束后,选择整体生成概率最高的候选句子作为最终的输出。在实践中,束的数量通常设定在3 到6 的范围内,设置过大的束会显著增加运算开销,并可能会导致性能下降。

1.2.2 长度惩罚 (估计生成更长句子)
  • 长度惩罚 由于束搜索中需要比较不同长度候选句子的概率,往往需要引入长度惩罚(Length Penalty)(亦称为长度归一化)技术。如果没有长度惩罚,传统的束搜索会倾向于生成较短的句子,因为每生成一个单词,都会乘以一个小于1的概率,使得句子的生成概率逐渐变小。因此,可以在生成概率的计算中引入长度惩罚,通过将句子概率除以其长度的指数幂𝛼,对于句子概率进行归一化处理,从而鼓励模型生成更长的句子。在实践中,𝛼 通常设置为0.6 到0.7 之间的数值。
1.2.3 重复惩罚 (n元惩罚避免重复:出现惩罚和频率惩罚)
  • 3. 重复惩罚. 为了缓解贪心搜索重复生成的问题,可以使用𝑛-元惩罚(𝑛-gram Penalty)来强制避免生成重复的连续𝑛 个词元,实践中𝑛 通常设置为3 到5 之间的整数。进一步地,研究人员还提出了相对“温和”的惩罚机制来降低生成重复词元的概率,而不是“一刀切”地完全避免某些短语的生成,如出现惩罚(PresencePenalty)和频率惩罚(Frequency Penalty)。具体地,出现惩罚在生成过程中会将已经生成词元的logits减去惩罚项𝛼 来降低该词元之后生成的概率。频率惩罚相较于出现惩罚,会记录每个词元生成的数目,然后减去出现次数乘以惩罚项𝛼,因此如果一个词元生成得越多,惩罚也就越大。在实践中,𝛼 的取值范围通常在0.1 到1 之间。这些重复惩罚方法不止适用于贪心搜索,对于随机采样也均适用。

1.3 随机采样改进

基于概率采样的方法会在整个词表中选择词元,这可能会导致生成不相干的词元 。为了进一步提高生成质量,可以进一步使用一些改进的采样策略,减少具有极低概率词汇对于生成结果的影响。

1.3.1 温度采样

温度采样(Temperature Sampling). 为了调节采样过程中的随机性,一种有效的方法是调整softmax 函数中的温度系数。具体来说, l = W L y L l = W^Ly_L l=WLyL称为logits,调整温度系数后的softmax 计算式如下:

其中, l j ′ l_{j'} lj 表示每个候选词元的logit,t是温度系数。具体来说,

  • 降低温度系数t会使得概率分布更加集中,从而增加了高概率词元的采样可能性,同时降低了低概率词元的采样可能;
  • 当温度系数t设置为1 时,该公式退化为标准的随机采样方法;
  • 而当t趋近于0 时,实际上等同于贪心搜索,即总是选择概率最高的词。
  • 此外,当t趋近于无穷大时,温度采样会退化为均匀采样.
    在这里插入图片描述
1.3.2 Top-𝑘 采样

Top-𝑘 采样(Top-𝑘 Sampling). 与温度采样不同,top-𝑘 采样策略是直接剔除概率较低的词元,限制模型从概率最高的前𝑘 个词元中进行采样。当采用top-3 采样策略时,模型将会从三个概率最高的词元中,基于原始概率分布进行采样。

1.3.3 Top-p 采样

Top-𝑝 采样(Top-𝑝 Sampling). 由于top-𝑘 采样策略并不考虑整体概率分布,因此固定的常数𝑘 可能无法适应不同的上下文语境。在较为确定的生成场景中,例如给定前缀为“世界最高峰是”,当𝑘 设置为大于1 的数值时,均有可能引入错误答案;而在需要多样性的场景中,例如“我最喜欢的城市是”,𝑘 设置为较小的值则会限制模型的多样化生成。为了克服上述问题,研究人员提出了top-𝑝 采样方法(又称为核采样,Nucleus Sampling)。该方法的核心思想是从一个符合特定概率条件的最小词元集合中进行采样,要求其中包含的所有词元累积概率大于或等于预设阈值𝑝。在具体的实现过程中,top-𝑝 采样首先会按照生成概率从高到低的顺序对词元进行排序,然后不断将词元添加到一个临时的集合中,直到集合的累积概率首次超过阈值𝑝. 下图中top-𝑝 采样的解码流程(𝑝 = 0.8):第一步时“coffee”和“water”的累积概率为0.681 + 0.119 = 0.8,因此只会在这两个单词中进行采样,而不会考虑“tea”。
在这里插入图片描述

1.3.4 对比解码

对比解码(Contrastive Decoding). 有研究显示,由于大模型比小模型具有更强的生成能力,因而在预测下一个词元时,大语言模型相较于小模型更倾向于为重要词元分配更高的概率。基于这个想法,对比解码通过计算一个较大的语言模型(例如GPT-2 XL)和一个较小的语言模型(例如GPT-2 small)之间的对数概率分布差值,然后基于归一化的差值分布采样下一个词元,从而有效地提升重要词元在生成过程中的影响力。为了方便读者理解,这里构造一个例子来说明对比解码的工作原理。在预测一个给定片段“李时珍是湖北人,他出生于__”的下一个词时,GPT-2 XL 有15% 的概率生成“湖北”、10% 的概率生成“明朝”,而GPT-2 small 有10% 的概率生成“湖北”、0.1% 的概率生成“明朝”,可以看到虽然GPT-2 XL 生成“湖北”的概率仍然最高,但是其生成“明朝”的概率大幅增长,对比解码可以有效利用这一现象,在解码过程中提升重要词汇的影响力。

2. 解码加速算法

由于自回归算法的序列化生成特点,使得解码算法存在效率较低的问题。在本节中,我们将首先定量分析解码算法的效率,再介绍针对性的效率优化算法。
本节将首先介绍解码的两个阶段(即全量解码和增量解码),然后对这两个阶段分别进行效率分析,从而发现解码过程中的效率瓶颈所在.
在这里插入图片描述

to be added

3. 低资源部署策略

4. 其他模型压缩方法

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

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

相关文章

stm32入门-----硬件I2C读写MPU6050

目录 前言 一、stm32中I2C库函数介绍&#xff08;stm32f10x_i2c.h&#xff09; 1.初始化 2.使能操作 3.生成起始位和结束位标志 4.发送I2C从机地址 5.发送数据和接收数据 6.发送应答位 7.状态检测 二、硬件I2C读取MPU6050 1.电路连线图 2.主要工程文件 3.MPU6050.…

WordPress网站被入侵,劫持收录事件分析

7.15&#xff0c;网站被入侵&#xff0c;但是直到7月17日&#xff0c;我才发现被入侵。 16日&#xff0c;17日正常更新文章&#xff0c;17日查询网站收录数据时&#xff0c;在站长资源平台【流量与关键词】查询上&#xff0c;我发现了比较奇怪的关键词。 乱码关键词排名 起初…

案例分享:如何使用原生的NodeJs下载视频网站上的视频资源到本地生成MP4文件

如何使用原生的NodeJs下载视频网站上的视频资源到本地生成MP4文件 1、当下视频网站的视频资源无法通过常规手段下载的原因2、什么是M3U8是什么视频文件?3、如何下载M3U8文件中的TS文件并在本地合并为MP4文件?3.1 FFmpeg 是什么工具?3.2 安装 FFmpeg 工具3.3 使用 FFmpeg 工具…

每天五分钟深度学习:向量化方式完成逻辑回归模型的参数更新

本文重点 上一节课程中,我们学习了m个样本的前向传播的向量化,我们可以同时完成m个样本的前向传播,也就是m个样本z的计算,然后a的计算。本节课程我们将学习dw和db参数更新的向量化,最终得到整个逻辑回归算法的参数更新的向量化表示。 非向量化的逻辑回归梯度下降算法 如…

学习日志8.4--DHCP攻击防范

目录 DHCP饿死攻击 DHCP Sever仿冒攻击 DHCP攻击防范 DHCP动态主机配置协议&#xff0c;是给主机提供自动获取IP地址等配置信息的服务。在主机对DHCP服务器发送DHCP Discover请求之后&#xff0c;服务器回复offer&#xff0c;主机再回复request&#xff0c;最后服务器回复AC…

uni-app开发打包成H5部署到服务器

1. 点击发行 2. 点击进入manifest.json的h5配置里&#xff0c;根据自己的情况配置一些信息。一定要注意配置 “运行的基础路径”&#xff0c;如果出现空白页面或者静态文件404的情况&#xff0c;可能是因为这个路径没有配置好。 3. 填写域名 4. 点击发行后&#xff0c;控制台后…

如何让左右两个div各占50%,并且高度相同?

如何设置两个div各占一半&#xff0c;并且高度随着内容增加&#xff0c;而且两边div的高度一致呢&#xff1f;默认会发现高度不一致&#xff0c;改用flex就可以了&#xff0c;另外发现传统的table也可以轻易实现。不知道不用flex的话是否可以实现。 方法1&#xff08;div实现&a…

二分+dp,CF 1993D - Med-imize

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 D - Med-imize 二、解题报告 1、思路分析 对于n < k的情况直接排序就行 对于n > k的情况 最终的序列长度一定是 (n - 1) % k 1 这个序列是原数组的一个子序列 对于该序列的第一个元素&#xff0…

Spring中使用Async进行异步功能开发实战-以大文件上传为例

目录 前言 一、场景再现 1、Event的同步机制 二、性能优化 1、异步支持配置 2、自定义处理线程池扩展 3、将线程池配置类绑定到异步方法 三、总结 前言 在之前的博客中&#xff0c;曾将讲了在SpringBoot中如何使用Event来进行大文件上传的解耦&#xff0c;原文地址&…

算法回忆录(2)

6.输入一个非递减排列的整数数组nums,和一个目标值target。请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,则输出0&#xff0c;0。请设计一个时间复杂度为0(log n)的算法解决此问题。 输入包括两行&#xff0c;第一行输入两个整数&#xff0c…

【电路笔记】-偏置晶体管

偏置晶体管 文章目录 偏置晶体管1、概述2、共发射极晶体管偏置3、集极反馈偏置4、双反馈晶体管偏置5、发射极反馈配置6、分压器晶体管偏置晶体管偏置是将晶体管直流工作电压或电流条件设置为正确电平的过程,以便晶体管可以正确放大任何交流输入信号 1、概述 双极晶体管的稳态…

DBA | 炼气期,关系数据库及六大范式(NF)理论概述!

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 前言简述 描述&#xff1a;上一章&#xff0c;我们简单了解了关系类型数据库&#xff0c;以及其相关产品&#xff0c;此章节我们由浅入深的学习一下什么是关系型数据库&#xff0c;不过在讲解关系…

中国县城建设统计年鉴(2015-2022年)

数据年限&#xff1a;2015-2022年&#xff0c;年鉴时间即为数据时间 数据格式&#xff1a;pdfexcel 数据内容&#xff1a; 共分12个部分&#xff0c; 包括县城市政公用设施水平&#xff08;人口密度/人均日生活用水量/供水普及率/燃气普及率/人均道路面积/建成区路网密度/污水处…

51单片机—电动车报警器

一. 入门 1.1 开发环境的安装 用什么写代码--语言是C&#xff0c;环境是keilKeil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统&#xff0c;与汇编相比&#xff0c;C语言在功能上、结构性、可读性、可维护性上有明显的优势&#xff0c;因而易学易用。…

江协科技51单片机学习- p37 红外遥控(外部中断)

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

提供三方API接口、调用第三方接口API接口、模拟API接口(三)使用AOP切面编程实现signature签名验证

接着第一篇文章 提供三方API接口、调用第三方接口API接口、模拟API接口&#xff08;一&#xff09;通过signature签名验证&#xff0c;避免参数恶意修改 我们来继续优化&#xff1a; /*** 模拟后端校验签名* param request* param data* return* throws UnsupportedEncodingEx…

[环境配置]C4D OC渲染器解决缺少cudnn_8_0_4Octance正版缺少cudnn_8_0_4_win文件解决方法

关于Octance正版缺少cudnn_8_0_4_win文件解决方法 可在此处https://download.csdn.net/download/FL1623863129/89605383进行下载 放到对应文件位置即可 在计算机图形学领域&#xff0c;Cinema 4D&#xff08;C4D&#xff09;作为一款顶尖的专业3D建模、动画与渲染软件&#x…

学生管理系统之数据模拟与数据显示

学生管理系统之数据模拟与数据显示 设计一个单例 模拟数据 显示数据

CSP-J 2022 填程题19.解析

19. &#xff08;枚举因数&#xff09;从小到大打印正整数 n 的所有正因数。 试补全枚举程序。 01 #include <bits/stdc.h> 02 using namespace std; 03 04 int main() { 05 int n; 06 cin >> n; 07 08 vector<int> fac; 09 fac.reserve((int)ce…

【算法】动态规划---多态dp问题

多态dp问题 一.[leetcode] (打家劫舍I) 17.16.按摩师二. [leetcode] 213. 打家劫舍 II三.[leetcode] 740. 删除并获得点数四.[leetcode] LCR 091. 粉刷房子五.[leetcode] 309. 买卖股票的最佳时机含冷冻期六.[leetcode] 714. 买卖股票的最佳时机含手续费七.[leetcode] 123. 买卖…