平台网站建设 厦门/专业的网站优化公司

平台网站建设 厦门,专业的网站优化公司,asp网站500错误iis7,优秀单页网站一、LLM推理的核心过程:自回归生成 LLM(如DeepSeek、ChatGPT、LLaMA系列等)的推理本质是自回归生成:从初始输入(如[CLS]或用户prompt)开始,逐token预测下一个词,直到生成结束符&…

在这里插入图片描述

一、LLM推理的核心过程:自回归生成

LLM(如DeepSeek、ChatGPT、LLaMA系列等)的推理本质是自回归生成:从初始输入(如[CLS]或用户prompt)开始,逐token预测下一个词,直到生成结束符(如[EOS])。其核心分为两个阶段:

1. Initialization阶段(初始化)
  • 目标:准备第一个token的生成条件。
  • 关键步骤
    • 输入编码:将初始prompt转换为token序列(如[CLS]你好),嵌入为向量x_0
    • 初始隐藏状态:通过Transformer的编码器(或直接使用预训练参数)生成第一层的隐藏状态h_0
    • KV Cache初始化:为每一层的每个注意力头创建空的Key/Value缓存(形状:[batch, heads, seq_len, head_dim])。此时seq_len=0,因为尚无历史token。

示例:生成首词“今天”时,输入为[CLS],初始化后仅计算第一层的h_0,KV Cache为空。

在LLM推理中,Initialization阶段(初始化阶段)又称“预填充阶段”(Prefill Stage)。这一命名源于其核心功能:为后续的逐token生成预填充(Prefill)KV Cache和初始隐藏状态

工程实现

Hugging Face的transformers库、NVIDIA的FasterTransformer均采用prefillgeneration区分这两个阶段。例如:

# 伪代码:Hugging Face生成逻辑
outputs = model.prefill(prompt)  # 预填充KV Cache(Initialization)
for _ in range(max_new_tokens):outputs = model.generate_step(outputs)  # 解码阶段,逐token生成
术语对比:Initialization vs Prefill
场景常用术语含义侧重
学术描述Initialization强调“初始化隐藏状态和缓存”
工程实践Prefill强调“预填充固定长度的输入”
用户视角输入处理阶段对应“用户输入的prompt处理”

本质是同一阶段,但“Prefill”更直观反映了其“为生成提前准备历史KV”的工程目标。

2. Decoding阶段(解码)
  • 目标:逐token生成,每步复用历史计算结果
  • 核心逻辑(以生成第t个token为例):
    1. 当前token处理:将第t-1步生成的token嵌入x_t,与前一步隐藏状态拼接,输入Transformer层。
    2. 注意力计算优化
      • 查询(Query):仅计算当前token的Query向量Q_t(因为只关注当前位置)。
      • 键值(Key/Value)复用KV Cache中的历史Key/Value,并追加当前token的Key_t、Value_t。
      • 注意力得分:计算Q_t与所有历史Key的相似度(仅需一次矩阵乘法,而非重复全量计算)。
    3. 更新KV Cache:将当前层的Key_t、Value_t追加到缓存中(seq_len += 1)。
    4. 生成概率:通过LM头输出第t个token的概率分布,选择下一词(贪心/采样)。
3. 举个栗子🌰
  • 输入:用户prompt“请写一首诗:”(4个token)。
  • Prefill阶段
    1. 计算这4个token的所有层Key/Value,填充到KV Cache(此时缓存长度=4)。
    2. 生成第一个待扩展的隐藏状态(对应第4个token的输出)。
  • Decoding阶段
    逐句生成诗句,每步:
    1. 计算当前token的Q(仅1个token)。
    2. 复用Prefill的4个KV + 之前生成的KV,计算注意力。
    3. 追加当前token的KV到缓存(缓存长度逐步增加到4+N)。

通过“预填充”,避免了每次生成新token时重复计算prompt的KV,这正是LLM实现高效推理的关键优化之一。

二、原始Transformer的效率瓶颈:O(n²)的重复计算

  • 时间复杂度:训练时并行计算所有token的注意力(O(n²)),但推理时需自回归生成,每步需重新计算所有历史token的Key/Value,导致总复杂度为O(n³)(n为序列长度)。
  • 空间复杂度:每次推理需保存所有中间层的Key/Value,内存占用随n线性增长,长文本(如n=4k)时显存爆炸。
  • 现实痛点:生成1000字的文章需重复计算百万次注意力,传统Transformer无法支持实时交互。

三、KV Cache:用空间换时间的核心优化

1. 方法本质

缓存历史层的Key/Value,避免重复计算。每个Transformer层维护独立的KV Cache,存储该层所有已生成token的Key/Value向量。

2. 具体实现步骤(以单batch为例)
  1. 初始化缓存(t=0):

    • 每层创建空缓存:K_cache = [], V_cache = [](形状:[num_layers, heads, 0, head_dim])。
  2. 第t步生成(t≥1):

    • 前向传播:输入当前token嵌入,通过Transformer层计算当前层的Q_t, K_t, V_t
    • 拼接缓存
      K_cache[t_layer] = torch.cat([K_cache[t_layer], K_t], dim=2)  # 在seq_len维度追加
      V_cache[t_layer] = torch.cat([V_cache[t_layer], V_t], dim=2)
      
    • 注意力计算
      attn_scores = Q_t @ K_cache[t_layer].transpose(-2, -1)  # Q_t: [1, heads, 1, d], K_cache: [1, heads, t, d]
      attn_probs = softmax(attn_scores / sqrt(d)) @ V_cache[t_layer]  # 仅需O(t)计算
      
    • 更新隐藏状态:将注意力输出传入下一层,直到LM头生成token。
  3. 循环:重复步骤2,直到生成[EOS]或达到最大长度。

3. 优化效果
  • 时间:每步注意力从O(n²)→O(n),总复杂度O(n²)(接近线性)。
  • 空间:缓存占用O(n)(每层存储历史K/V),但避免了重复计算的中间变量,实际显存节省50%+。
  • 典型案例:LLaMA-2 70B在4k序列长度下,KV Cache使推理速度提升4倍(NVIDIA官方数据)。

四、延伸:KV Cache的局限性与改进

  • 显存瓶颈:长上下文(如100k token)的KV Cache占用巨大(每层约4k token×4byte×2(KV)≈32KB,64层×100k≈2GB)。
  • 优化方向
    • 分页缓存(Paged Attention):NVIDIA提出,用非连续内存存储KV,减少碎片化(2023年突破)。
    • 动态缓存:仅保留最近相关token的KV(如检索增强LLM)。

KV Cache是LLM落地的基石,其设计思想(复用历史计算)贯穿现代推理优化(如FlashAttention、QLoRA),最终实现了从“实验室模型”到“实时对话”的跨越。

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

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

相关文章

【从零开始学习计算机科学】编译原理(一)编译过程概述

【从零开始学习计算机科学】编译原理(一)编译过程概述 绪论编译过程概述词法分析语法分析代码优化代码生成其他功能编译器的前端和后端绪论 什么叫编译程序?为什么我们需要编译程序?编译程序就是一个程序,将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻…

【AIGC】计算机视觉-YOLO系列家族

YOLO系列家族 (1)YOLO发展史(2) YOLOX(3) YOLOv6(4) YOLOv7(5) YOLOv8(6) YOLOv9(7)YOLOv10(8&…

基于Python懂车帝汽车数据分析平台(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,汽车数据分析平台当然不能排除在外。本次我所开发的懂车帝汽车数据分析平台是在实际应用和软件工程的开发原理之上,运用Python…

MySQL -- 数据库基础

1、基础登录操作 mysql 指定选项 选项&#xff1a; <1> -h 指定ip地址&#xff0c;即连接的主机&#xff0c;不带时&#xff0c;默认连本机 <2> -P 指定的端口号&#xff0c;指定默认端口号&#xff08;配置文件中进行配置&#xff09; <3>-u 指定的用户 &l…

02C#基本结构篇(D3_内部类-代码块-数据类型-变量-常量-字面量-运算符-流程控制语句)

目录 一、内部类 1. 定义内部类 2. 创建内部类的实例 3. 访问外部类的私有成员 4. 内部静态类 5. 使用场景和优点 6. 注意事项 ------------------------------------------- 二、代码块 1. 控制流语句 1.1. 条件语句 1> if 语句 2> switch 语句 1.2. 循环语…

15 | 定义简洁架构 Store 层的数据类型

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课&#xff1b;欢迎加入 云原生 AI 实战 星球&#xff0c;12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力&#xff08;聚焦于 Go、云原生、AI Infra&#xff09;&#xff1b;本节课最终…

设计模式-结构型模式-装饰器模式

概述 装饰器模式 : Decorator Pattern : 是一种结构型设计模式. 作用 &#xff1a; 允许你动态地给对象添加功能或职责&#xff0c;而无需修改其原始类的代码,非常的符合 开闭原则。 实现思路 &#xff1a;通过创建一个包装对象&#xff08;即装饰器&#xff09;&#xff0c;来…

Qt/C++音视频开发82-系统音量值获取和设置/音量大小/静音

一、前言 在音视频开发中&#xff0c;音量的控制分两块&#xff0c;一个是控制播放器本身的音量&#xff0c;绝大部分场景都是需要控制这个&#xff0c;这个不会影响系统音量的设置。还有一种场景是需要控制系统的音量&#xff0c;因为播放器本身的音量是在系统音量的基础上控…

基于深度学习的医学CT图像肺结节智能检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Linux:Ubuntu server 24.02 上搭建 ollama + dify

一、安装Ubuntu 具体的安装过程可以参见此链接&#xff1a;链接&#xff1a;Ubuntu Server 20.04详细安装教程&#xff0c;这里主要记录一下过程中遇到的问题。 安装时subnet如何填写 在Ubuntu中subnet填写255.255.255.0是错误的&#xff0c;其格式为 xx.xx.xx.xx/yy &#…

大语言模型打卡学习DAY1

学习目标&#xff1a; 语言模型的发展历程 大模型的技术基础 学习内容&#xff1a; 1. 语言模型的发展历程 语言模型通常是指能够建模自然语言文本生成概率的模型&#xff0c;从语言建模到任务求解&#xff0c;这是科学思维的一次重要跃升。2. 大语言模型技术基础 定义&#…

基于python的升级队列加速决策

a-f大等级是3级 a-c建筑每升1级分别需要8天 d-f建筑每升1级分别需要10天 目前以下建筑队列正在从0级升至1级 建筑A升级需要7天05&#xff1a;16&#xff1a;20 建筑b升级需要06&#xff1a;06&#xff1a;54 建筑c升级需要00&#xff1a;37&#xff1a;00 建筑d升级需要…

【redis】hash基本命令和内部编码

文章目录 表示形式命令HSET 和 HGET HEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSETNXHINCRBYHINCRBYFLOAT命令小结内部编码 表示形式 Redis 自身已经是键值对结构了 Redis 自身的键值对就是通过哈希的方式来组织的 把 key 这一层组织完成之后&#xff0c;到了 value 这一层&…

行为模式---策略模式

概念 策略模式是一种行为设计摸是&#xff0c;它的核心思想是将一些列的算法封装成独立的对象&#xff0c;并使它们可以相互替换&#xff0c;通过上下文进行调用。 策略模式通过算法抽象为独立的策略类&#xff0c;客户端可以根据自身需求选择不同的策略类来完成任务、这种方…

【社区投稿】深入再谈智能指针、AsRef引用与Borrow借用

深入再谈智能指针、AsRef引用与Borrow借用 这是一个具有深度的技术主题。每次重温其理论知识&#xff0c;都会有新的领悟。大约 2 年前&#xff0c;我曾就这一技术方向撰写过另一篇短文《从类型转换视角&#xff0c;浅谈Deref<Target T>, AsRef<T>, Borrow<T&g…

外层元素旋转,其包括在内的子元素一并旋转(不改变旋转中心),单元测试

思路&#xff1a;外层旋转后坐标&#xff0c;元素旋转后坐标&#xff0c;计算偏移坐标 <template><div class"outbox"><label>角度: <input v-model.number"rotate" type"number" /></label><br><div c…

Oracle数据库存储结构--物理存储结构

数据库存储结构&#xff1a;分为物理存储结构和逻辑存储结构。 物理存储结构&#xff1a;操作系统层面如何组织和管理数据 逻辑存储结构&#xff1a;Oracle数据库内部数据组织和管理数据&#xff0c;数据库管理系统层面如何组织和管理数据 存储结构 在Oracle数据库的存储结构…

纺织服装制造行业现状 内检实验室系统在纺织服装制造行业的应用

在纺织服装制造行业&#xff0c;内检实验室LIMS系统&#xff08;实验室信息管理系统&#xff09;已成为提升检测效率、优化质量控制和满足行业合规性要求的关键工具。随着行业竞争的加剧和消费者对产品质量要求的提高&#xff0c;纺织服装制造企业需要更加高效、准确的检测流程…

3分钟复现 Manus 超强开源项目 OpenManus

文章目录 前言什么是 OpenManus构建方式环境准备克隆代码仓库安装依赖配置 LLM API运行 OpenManus 效果演示总结个人简介 前言 近期人工智能领域迎来了一位备受瞩目的新星——Manus。Manus 能够独立执行复杂的现实任务&#xff0c;无需人工干预。由于限制原因大部分人无法体验…

【大模型统一集成项目】如何封装多个大模型 API 调用

&#x1f31f; 在这系列文章中&#xff0c;我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程&#xff0c;从 架构设计 到 代码实战&#xff0c;逐步搭建一个支持 多种大模型&#xff08;GPT-4、DeepSeek 等&#xff09; 的 一站式大模型集成与管理平台&#xff…