当前位置: 首页 > article >正文

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

目录

一、投机采样

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

流程

改进

三、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 等。通过这样的循环过程,逐步生成完整的文本。

相关文章:

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

目录 一、投机采样 二、投机采样改进:美杜莎模型 流程 改进 三、Deepseek的投机采样 流程 Ⅰ、输入文本预处理 Ⅱ、引导模型预测 Ⅲ、候选集筛选(可选) Ⅳ、主模型验证 Ⅴ、生成输出与循环 骗你的,其实我在意透了 —— 25.4.4 一、…...

如何在 Windows 上安装 Python

Python是一种高级编程语言,由于其简单性、多功能性和广泛的应用范围而变得越来越流行。如何在 Windows 操作系统中安装 Python 的过程相对简单,只需几个简单的步骤。 本文旨在指导您完成在 Windows 计算机上下载和安装 Python 的过程。 如何在 Windows…...

【Groovy快速上手 ONLY ONE】Groovy与Java的核心差异

最近在使用的平台上写脚本的语言是Groovy,所以也学习一下,作为 Java 开发者,Groovy 对我们来说会非常友好,而且它的语法更简洁且支持动态类型,所以其实了解下Java和Groovy的差异点就可以快速上手了,以下是 …...

计算机系统---CPU

定义与功能 中央处理器(Central Processing Unit,CPU),是电子计算机的主要设备之一,是计算机的核心部件。CPU是计算机的运算核心和控制核心,负责执行计算机程序中的指令,进行算术运算、逻辑运算…...

WEB安全--提权思路

一、情形 在我们成功上传webshell到服务器中并拿到权限时,发现我们的权限很低无法执行特定的命令,这时为了能做更多的操作,我们就需要提升权限。 二、方式 2.1、Windows提权 1、普通用户执行systeminfo命令获取服务器的基本信息&#xff0…...

多layout 布局适配

安卓多布局文件适配方案操作流程 以下为通过多套布局文件适配不同屏幕尺寸/密度的详细步骤,结合主流适配策略及最佳实践总结: 一、‌创建多套布局资源目录‌ ‌按屏幕尺寸划分‌ 在 res 目录下创建以下文件夹(根据设备特性自动匹配&#xff…...

selectdb修改表副本

如果想修改doris(也就是selectdb数据库)表的副本数需要首先确定是否分区表,当前没有数据字典得知哪个表是分区的,只能先show partitions看结果 首先,副本数不应该大于be节点数 其次,修改期间最好不要跑业务…...

Metabase:一个免费开源的BI平台

今天给大家介绍一个开源数据可视化分析工具:Metabase。它可以帮助用户快速连接数据库、执行查询并创建交互式仪表盘,即使非技术人员也能快速上手。 Metabase 支持多种数据源,包括 MySQL、PostgreSQL、Oracle、SQL Server、SQLite、MongoDB、P…...

第15届蓝桥杯省赛python组A,B,C集合

过几天就省赛了,一直以来用的是C,Python蓝桥杯也是刚刚开始准备(虽然深度学习用的都是python,但是两者基本没有任何关系),这两天在做去年题时犯了很多低级错误,因此记录一下以便自己复查 PS&am…...

AWS 云运维管理指南

一、总体目标 高可用性:通过跨可用区 (AZ) 和跨区域 (Region) 的架构设计,确保系统运行可靠。性能优化:优化AWS资源使用,提升应用性能。安全合规:利用AWS内置安全服务,满足行业合规要求(如GDPR、ISO 27001、等保2.0)。成本管控:通过成本优化工具,减少浪费,实现FinOp…...

为什么有的深度学习训练,有训练集、验证集、测试集3个划分,有的只是划分训练集和测试集?

在机器学习和深度学习中,数据集的划分方式取决于任务需求、数据量以及模型开发流程的严谨性。 1. 三者划分:训练集、验证集、测试集 目的 训练集(Training Set):用于模型参数的直接训练。验证集(Validati…...

虚拟现实 UI 设计:打造沉浸式用户体验

VR UI 设计基础与特点 虚拟现实技术近年来发展迅猛,其独特的沉浸式体验吸引了众多领域的关注与应用。在 VR 环境中,UI 设计扮演着至关重要的角色,它是用户与虚拟世界交互的桥梁。与传统 UI 设计相比,VR UI 设计具有显著的特点。传…...

前端Uniapp接入UviewPlus详细教程!!!

相信大家在引入UviewPlusUI时遇到很头疼的问题,那就是明明自己是按照官网教程一步一步的走,为什么到处都是bug呢?今天我一定要把这个让人头疼的问题解决了! 1.查看插件市场 重点: 我们打开Dcloud插件市场搜素uviewPl…...

【性能优化点滴】odygrd/quill在编译期做了哪些优化

Quill 是一个高性能的 C 日志库,它在编译器层面进行了大量优化以确保极低的运行时开销。以下是 Quill 在编译器优化方面的关键技术和实现细节: 1. 编译时字符串解析与格式校验 Quill 在编译时完成格式字符串的解析和校验,避免运行时开销&…...

02 反射 泛型(II)

目录 一、反射 1. 反射引入 2. 创建对象 3. 反射核心用法 二、泛型 1. 泛型的重要性 (1)解决类型安全问题 (2)避免重复代码 (3)提高可读性和维护性 2. 泛型用法 (1)泛型类 …...

Spring Boot 七种事务传播行为只有 REQUIRES_NEW 和 NESTED 支持部分回滚的分析

Spring Boot 七种事务传播行为支持部分回滚的分析 支持部分回滚的传播行为 REQUIRES_NEW:始终开启新事务,独立于外部事务,失败时仅自身回滚。NESTED:在当前事务中创建保存点(Savepoint),可局部…...

ZLMediaKit 源码分析——[5] ZLToolKit 中EventPoller之延时任务处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三…...

元宇宙浪潮下,前端开发如何“乘风破浪”?

一、元宇宙对前端开发的新要求 元宇宙的兴起,为前端开发领域带来了全新的挑战与机遇。元宇宙作为一个高度集成、多维互动的虚拟世界,要求前端开发不仅具备传统网页开发的能力,还需要掌握虚拟现实(VR)、增强现实&#…...

2025年3月 Scratch 图形化(二级)真题解析 中国电子学会全国青少年软件编程等级考试

2025.03Scratch图形化编程等级考试二级真题试卷 一、选择题 第 1 题 甲、乙、丙、丁、戊五人参加100米跑比赛,甲说:“我的前面至少有两人,但我比丁快。”乙说:“我的前面是戊。”丙说:“我的后面还有两个人。”请从前往后(按照速度快慢&a…...

【新能源汽车整车动力学模型深度解析:面向MATLAB/Simulink仿真测试工程师的硬核指南】

1. 前言 作为MATLAB/Simulink仿真测试工程师,掌握新能源汽车整车动力学模型的构建方法和实现技巧至关重要。本文将提供一份6000+字的深度技术解析,涵盖从基础理论到Simulink实现的完整流程。内容经过算法优化设计,包含12个核心方程、6大模块实现和3种验证方法,满足SEO流量…...

MCP协议的Streamable HTTP:革新数据传输的未来

引言 在数字化时代,数据传输的效率和稳定性是推动技术进步的关键。MCP(Model Context Protocol)作为AI生态系统中的重要一环,通过引入Streamable HTTP传输机制,为数据交互带来了革命性的变化。本文将深入解读MCP协议的…...

dify中配置使用Ktransformer模型

一共是两个框架一个是Ktransformer,一个是dify。 Ktransformer用来部署LLM,比如Deepseek,而LLm的应用框架平台Dify主要用来快速搭建基于LLM应用。 这篇教程主要是用来介绍两个框架的交互与对接的,不是部署Ktransformer也部署部署Dify,要部署Dify、Ktransformer可以直接参考…...

从代码学习深度学习 - GRU PyTorch版

文章目录 前言一、GRU模型介绍1.1 GRU的核心机制1.2 GRU的优势1.3 PyTorch中的实现二、数据加载与预处理2.1 代码实现2.2 解析三、GRU模型定义3.1 代码实现3.2 实例化3.3 解析四、训练与预测4.1 代码实现(utils_for_train.py)4.2 在GRU.ipynb中的使用4.3 输出与可视化4.4 解析…...

二叉树 递归

本篇基于b站灵茶山艾府的课上例题与课后作业。 104. 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&…...

#SVA语法滴水穿石# (002)关于 |-> + ##[min:max] 的联合理解

今天,我们着重理解一些概念。依靠死记硬背去理解知识点,是不长久的,必须深刻理解知识点的精髓,才能长久记忆。 先看如下的代码: property a2b_p; //描述属性@(posedge clk) $rose(tagError) |-> ##[2:4] $rose(tErrorBit); endproperty a2b_a: asser…...

反常积分和定积分的应用 2

世界尚有同类 前言伽马函数的推论关于数学的思考平面图形的面积笛卡尔心形线伯努利双纽线回顾参数方程求面积星型线摆线 旋转体体积一般轴线旋转被积函数有负数部分曲线的弧长最后一个部分内容-旋转曲面侧表面积直角坐标系极坐标系参数方程 总结 前言 力大出奇迹。好好加油。 …...

新零售系统是什么样的?有什么好处?

一、新零售系统的核心架构与特征 ​技术驱动的分层架构 **​前端展示层:**支持多终端适配(如APP、小程序、线下智能设备),采用响应式设计提升用户体验。 **​业务中台层:**基于微服务架构(如Spring Clou…...

Element-plus弹出框popover,使用自定义的图标选择组件

自定义的图标选择组件是若依的项目的 1. 若依的图标选择组件 js文件,引入所有的svg图片 let icons [] // 注意这里的路径,一定要是自己svg图片的路径 const modules import.meta.glob(./../../assets/icons/svg/*.svg); for (const path in modules)…...

16进制在蓝牙传输中的应用

在蓝牙传输中,16进制(Hexadecimal)是一种常用的数据表示方法。它主要用于描述数据包的内容、地址、命令、参数等信息。以下是16进制在蓝牙传输中的具体应用场景和作用: 1. 数据包的表示 蓝牙通信中,所有数据最终都以二…...

思维链 Chain-of-Thought(COT)

思维链 Chain-of-Thought(COT):思维链的启蒙 3. 思维链 Chain-of-Thought(COT)存在问题?2. 思维链 Chain-of-Thought(COT)是思路是什么?1. 什么是 思维链 Chain-of-Thoug…...