【NLP 53、投机采样加速推理】

目录

一、投机采样

二、投机采样改进:美杜莎模型

流程

改进

三、Deepseek的投机采样

流程

Ⅰ、输入文本预处理

Ⅱ、引导模型预测

Ⅲ、候选集筛选(可选)

Ⅳ、主模型验证

Ⅴ、生成输出与循环


骗你的,其实我在意透了

                                —— 25.4.4

一、投机采样

找到一种方式加速我们的推理过程 —— 投机采样

        投机采样(Speculative Sampling)是一种用于加速大语言模型推理的技术,它通过预测模型可能生成的下一个 token 来减少计算量,同时尽量保持生成文本的质量 。

分层预测:投机采样基于这样一个假设,即可以使用一个较小、更快的 “引导模型”(也称为 “投机模型”)来对大语言模型(“主模型”)的生成进行预测。引导模型结构简单、计算成本低,能快速生成可能的下一个 token 及其概率分布。

验证与修正:引导模型提出若干可能的下一个 token 及其概率。这些预测结果被视为 “投机”。主模型随后仅对这些投机结果中的部分或全部进行验证,而不是对所有可能的 token 进行完整计算。如果引导模型的预测与主模型的验证结果相符,那么就采用引导模型的预测作为生成的下一个 token ,从而跳过主模型对其他大量 token 的计算。如果预测不符,主模型则会按照常规方式计算出正确的下一个 token ,同时这一信息也可用于微调引导模型,使其后续预测更准确。


二、投机采样改进:美杜莎模型

模型自带多个头,代替draft model (投机小模型) 起到打草稿的目的

流程

改进

把前一个头的输出,作为后一个头的输入的一部分;

把前一个头的输出当作下一个头的输入进行传递


三、Deepseek的投机采样

双模型架构:与常见的投机采样方法类似,Deepseek 采用主模型和引导模型的架构。主模型是具有强大语言处理能力的大型预训练模型,负责生成高质量的文本。引导模型则相对轻量级,设计目的是快速预测主模型可能生成的下一个词元(token)。引导模型经过优化,能够以较低的计算成本对主模型的输出进行近似预测。

分层预测与验证:在推理过程中,引导模型首先基于输入文本生成一系列可能的下一个 token 及其概率分布。这些预测并非随意生成,而是通过引导模型对语言模式的学习以及对主模型行为的近似模拟得出。然后,主模型对引导模型提供的预测 token 进行验证。主模型并非对词汇表中的所有 token 进行全面计算,而是集中精力评估引导模型给出的候选集。若引导模型的预测与主模型的验证结果匹配,就直接采用引导模型的预测作为生成结果,从而跳过主模型对其他大量 token 的计算,实现加速推理。若预测不匹配主模型则以常规方式计算正确的下一个 token

流程

Ⅰ、输入文本预处理

文本分词:将输入文本送入分词器,把文本分割成一个个词元(token)。这是语言模型处理文本的基础步骤,不同的语言模型可能使用不同的分词方法,如字节对编码(Byte - Pair Encoding,BPE)等。通过分词,将连续的文本转化为模型能够理解和处理的离散单元序列。

构建输入表示:对分词后的结果进行处理,添加必要的位置编码、段编码等信息(如果模型需要),将其转换为适合模型输入的张量形式。这个张量包含了文本的词元信息以及位置等上下文信息,为模型后续的处理提供基础。

Ⅱ、引导模型预测

快速前向传播:轻量级的引导模型接收预处理后的输入张量,通过其神经网络结构进行快速的前向传播计算。引导模型经过专门设计和训练,旨在以较低的计算成本快速生成预测结果。

生成候选 token 及概率:引导模型输出一组可能的下一个 token 及其对应的概率分布。这些候选 token 是引导模型基于对输入文本的理解和对主模型生成模式的学习而预测出来的。引导模型通过其内部的参数和训练学到的语言知识,评估每个可能 token 成为下一个生成词元的可能性,并输出概率值。例如,引导模型可能预测下一个 token 有 80% 的概率是 “苹果”,10% 的概率是 “香蕉” 等。

Ⅲ、候选集筛选(可选)

根据概率排序与筛选:如果引导模型生成的候选 token 数量较多,可能会根据预测概率对候选集进行排序,然后筛选出概率较高的一部分 token 作为最终的候选集。例如,只选择概率最高的前 5 个 token,这样可以进一步减少主模型需要验证的 token 数量,提高整体效率。这一步骤并非绝对必要,具体是否执行以及筛选的标准可能根据模型的设计和应用场景而定。

Ⅳ、主模型验证

针对候选集计算:主模型接收输入文本以及引导模型生成的候选 token 集对这些候选 token 进行验证。主模型会根据自身强大的语言理解和生成能力,对每个候选 token 在当前上下文下的合理性进行评估。与传统生成方式不同,此时主模型无需对整个词汇表中的所有 token 进行计算,大大减少了计算量。

确定最终 token:主模型通过计算,确定在候选集中哪个 token 是最符合当前文本上下文的下一个生成词元。如果引导模型的预测准确,主模型验证后选择的 token 与引导模型预测概率最高的 token 一致,就直接采用该 token 作为生成结果;若主模型验证后认为引导模型的预测均不准确,则按照常规方式,对整个词汇表进行计算,确定正确的下一个 token。

Ⅴ、生成输出与循环

输出当前 token:将确定的下一个 token 输出,作为文本生成的一部分。这个 token 可能会被添加到已生成的文本序列中,形成新的上下文。

循环进行下一轮预测:以新的文本序列作为输入,重复上述步骤,继续生成下一个 token,直到满足预设的生成结束条件,如达到指定的文本长度、生成特定的结束标志 token 等。通过这样的循环过程,逐步生成完整的文本。

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

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

相关文章

ffmpeg时间基与时间戳

时间基、时间戳 时间基:表示时间单位的分数,用来定义视频或音频流中时间的精度。其形式是一个分数,分子通常为 1,而分母则表示每秒的单位数。 时间戳:代表在时间轴里占了多少个格子,是特定的时间点。 时间…

激光加工中平面倾斜度的矫正

在激光加工中,加工平面的倾斜度矫正至关重要,直接影响加工精度和材料处理效果。以下是系统的矫正方法和步骤: 5. 验证与迭代 二次测量:加工后重新检测平面度,确认残余误差。 反馈优化:根据误差分布修正补偿…

算法刷题记录——LeetCode篇(2.2) [第111~120题](持续更新)

更新时间:2025-04-04 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 114. 二叉树展开为链表 给你二…

C语言学习笔记-9

九、结构体 构造类型: 不是基本类型的数据结构也不是指针类型, 它是若干个相同或不同类型的数据构成的集合 结构体类型: 结构体是一种构造类型的数据结构,是一种或多种基本类型或构造类型的数据的集合。 1.结构体类型定义 定…

Test——BUG篇

目录 一软件测试的生命周期 二BUG 1概念 2描述Bug 3Bug级别 4Bug的生命周期 三与开发人员发生争执怎么办 ​编辑1先自省:是否Bug描述不清晰 2站在用户角度考虑并抛出问题 3Bug定级有理有据 4不仅要提出问题,还要给出解决方案 5Bug评审 5.1…

【Block总结】HWAB,半小波注意力块|即插即用

论文信息 标题: HALF WAVELET ATTENTION ON M-NET+ FOR LOW-LIGHT IMAGE ENHANCEMENT 地址: arXiv:2203.01296 日期: 2022年3月 创新点 改进的分层架构 M-Net+: 提出了一个专为低光图像增强设计的改良分层模型 M-Net+。该架构旨在缓解采样过程中的空间信息损失问题。通过采用…

Spring 中的事务

🧾 一、什么是事务? 🧠 通俗理解: 事务 一组操作,要么全部成功,要么全部失败,不能只做一半。 比如你转账: A 账户扣钱B 账户加钱 如果 A 扣了钱但 B 没收到,那就出问…

Flutter极速接入IM聊天功能并支持鸿蒙

Flutter极速接入IM聊天功能并支持鸿蒙 如果你们也是Flutter项目,想快速接入聊天,包括聊天的UI界面,强烈推荐这一家。因为我们已经完成了集成,使用非常稳定,集成也非常快捷方便。 而且,就在今天&#xff0c…

C# 类库生成后自动复制到指定目录

C# 类库生成后自动复制到指定目录 在C#中,当你开发了一个类库项目(通常是.NET Core或.NET Framework项目),你可能会希望在构建(Build)完成后自动将生成的DLL文件复制到指定的目录。有几种方法可以实现这个需求,下面是一些常用的方法: 方法1:使用MSBuild的AfterBuild…

13-产品经理-产品多分支平台管理

禅道16.0版本开始,优化和增强了产品的分支/平台功能,主要特点如下: 多分支/平台功能兼容各种大小型项目,项目/迭代可以关联对应产品的某个分支/平台。分支/平台支持灵活管理,可以把分支/平台理解为时间层面的概念&…

手搓多模态-04 归一化介绍

在机器学习中,归一化是一个非常重要的工具,它能帮助我们加速训练的速度。在我们前面的SiglipVisionTransformer 中,也有用到归一化层,如下代码所示: class SiglipVisionTransformer(nn.Module): ##视觉模型的第二层&am…

Qt 入门 1 之第一个程序 Hello World

Qt 入门1之第一个程序 Hello World 直接上操作步骤从头开始认识,打开Qt Creator,创建一个新项目,并依次执行以下操作 在Qt Creator中,一个Kits 表示一个完整的构建环境,包括编译器、Qt版本、调试器等。在上图中可以直…

深入理解MySQL:核心特性、优化与实践指南

MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。它是目前世界上最流行的开源数据库之一,广泛应用于各种规模的Web应用和企业系统中。 目录 一、核心特点 关系型数据库: 开源免费&am…

Linux 系统安装与优化全攻略:打造高效开发环境

一、开篇引言 (一)Linux 系统的广泛应用 Linux 凭借其开源、稳定且安全的特性,在服务器、嵌入式设备以及开发环境等领域都有着极为广泛的应用。 (二)撰写本文的目的 为读者提供一套全面且实用的指南,助…

代码训练day22回溯算法p1

1.组合 (1)模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯&#…

2024华为OD机试真题-任务最优调度(C++/Java/Python)-E卷-200分

2024华为OD机试最新E卷题库-(D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 考点 题目解析 代码 c++ java python 题目描述 给定一个正整数数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。请计算执…

每日习题:20250407

2025 2025 2025年 04 04 04月 06 06 06日 题目 1 设 X X X是实随机变量,任意光滑的函数 f : R → R f:\mathbf{R} \rightarrow \mathbf{R} f:R→R,都有: E ( X f ( X ) ) E ( f ′ ( X ) ) E\left(Xf(X)\right)E\left(f(X)\right) E(Xf(X)…

TensorRT 有什么特殊之处

一、TensorRT的定义与核心功能 TensorRT是NVIDIA推出的高性能深度学习推理优化器和运行时库,专注于将训练好的模型在GPU上实现低延迟、高吞吐量的部署。其主要功能包括: 模型优化:通过算子融合(合并网络层)、消除冗余…

JCR一区文章,壮丽细尾鹩莺算法Superb Fairy-wren Optimization-附Matlab免费代码

本文提出了一种新颖的基于群体智能的元启发式优化算法——壮丽细尾鹩优化算法(SFOA),SFOA从精湛的神仙莺的生活习性中汲取灵感。融合了精湛的神仙莺群体中幼鸟的发育、繁殖后鸟类喂养幼鸟的行为以及它们躲避捕食者的策略。通过模拟幼鸟生长、繁殖和摄食阶…

使用Ubuntu18恢复群晖nas硬盘数据外接usb

使用Ubuntu18恢复群晖nas硬盘数据外接usb 1. 接入硬盘2.使用Ubuntu183.查看nas硬盘信息3. 挂载nas3.1 挂载损坏nas硬盘(USB)3.2 挂载当前运行的nas 4. 拷贝数据分批传输 5. 新旧数据对比 Synology NAS 出现故障,DS DiskStation损坏,则可以使用计算机和 U…