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

为什么说大模型的推理,其实是“两份工作”?

当我们把一段文字输入给大语言模型,并看着屏幕上如流水般涌现出回答时,一切都显得那么自然,仿佛魔法一般。在日常的交流中,我们往往习惯用“推理”(Inference)这一个词来统称这个过程。但如果我们掀开这层优雅的表象,潜入底层算力的世界,就会发现一个常被忽略的真相:大模型的推理,从来都不是一项单一的工作。严格来说,它是两份截然不同的差事,只是它们之间的交接如此平滑,以至于我们很少察觉。

在模型真正开始“思考”之前,它必须先将人类的语言转化为它能理解的格式。机器不懂汉字或字母,它们只懂数字。因此,你输入的句子首先会被切分成一个个被称为 Token 的基础单元。你可以把 Token 想象成大模型词典里的基本音节。

prompt = "How does inference work?" ids = tokenizer.encode(prompt) # ids -> [2437, 1374, 32278, 670, 30] # embedding_table has shape [vocab_size, hidden_dim] vectors = embedding_table[ids] # shape: [num_tokens, 4096]

完成切分后,这些离散的 Token 会被映射到一个高维的数学空间中,变成密集的数字矩阵,也就是我们常听到的“词向量”(Embedding)。在这个空间里,意义相近的词汇会在距离上相互靠近。直到这一步,模型才算做好了处理信息的准备。

接下来,真正繁重的计算任务要在 Transformer 层中展开了。你可以把 Transformer 的网络层想象成一台极其庞大且精密的数学齿轮组。当词向量穿过这些网络层时,它们会经历一系列复杂的矩阵乘法运算。正是在这里,模型开始计算不同词汇之间的“注意力”(Attention),去理解你这段话里究竟谁才是重点,从而捕捉到上下文的真正含义。

但这台齿轮组的运转方式,在“阅读你的问题”和“写下它的答案”时,有着天壤之别。 这就引出了模型的第一份工作:“预填充”(Prefill)阶段。当你按下回车键,模型会一次性接收你的完整提示词。无论你输入的是短短一句问候,还是一篇长达万字的文章,对模型来说,所有的信息都已经摆在了桌面上。因为输入是完整的,GPU 就可以彻底释放它那恐怖的并行计算能力。它会在同一时间,对所有的输入 Token 进行海量的矩阵运算。在这个阶段,GPU 的计算核心全速运转,发热量飙升。此时限制模型速度的唯一因素,就是芯片做数学题的速度。在工程术语中,我们称之为“计算密集型”(Compute-bound)过程。在这个阶段,模型正在构建对你问题的深刻理解,为接下来的回答打下地基。

# Prefill: process the whole prompt in one shot hidden = embed(prompt_tokens) + positions for layer in model.layers: Q, K, V = project(hidden) # for ALL tokens at once hidden = attention(Q, K, V) + hidden hidden = feedforward(hidden) + hidden cache_kv(layer, K, V) # save for later first_token = sample(project_to_vocab(hidden[-1]))

然而,当模型彻底消化了你的提示词,准备开口说话时,工作的性质发生了彻底的反转。它进入了第二份工作:“解码”(Decode)阶段。这也是实际生成文字的阶段。 与阅读不同,大模型写文章是一个极其严格的流水线作业。它不能一挥而就,只能一个词、一个词地往外蹦。模型需要审视之前处理过的所有信息,去概率分布中猜测下一个最合适的 Token,把它输出到屏幕上,然后再把这个新生成的词加入到已知信息中,重新开始整个计算循环,去猜下下个词。

# Decode: one token per iteration token = first_token steps = 0 while token != STOP and steps < MAX_STEPS: x = embed(token) + position(steps) for layer in model.layers: q, k, v = project(x) K_all, V_all = caches[layer].append(k, v) # cached history + new x = layer.forward(q, K_all, V_all, x) # attention + FFN, residuals token = sample(project_to_vocab(x)) steps += 1 yield token

在这个逐字生成的过程中,一个反直觉的现象出现了。相比于刚才处理大段提示词,生成区区一个新词所需要的数学计算量其实非常小。但是,为了完成这道简单的“数学题”,系统却不得不把模型那多达几十上百 GB 的庞大参数矩阵,完整地从 GPU 的显存里搬运到计算核心中。计算在眨眼间就完成了,但数据的搬运却漫长而拥挤。因此,在解码阶段,拖慢速度的不再是芯片的算力,而是数据传输的通道——显存带宽。这就是所谓的“内存带宽密集型”(Memory-bound)瓶颈。

如果模型每生成一个新词,都要把之前所有词的关系从头到尾重新计算一遍,那这种令人绝望的低效,将让大模型的应用变得毫无可能。就像是你每写下读书笔记的一句话,都要把整本书从第一页重新读一遍。 为了打破这个僵局,工程师们引入了一个非常优雅的技术“作弊码”:KV 缓存(KV Cache)。这里的 K 和 V 代表 Key 和 Value,它们是模型在处理前面内容时留下的中间计算结果。工程师们的思路很直接:既然前面的内容已经算过了,为什么不把结果存下来呢?

于是,系统在显存中专门开辟了一块空间,用来存储这些历史 Token 的状态。当模型需要生成新词时,它不再去回溯历史,而是直接从 KV 缓存中调取之前的上下文信息,只对当前这一个新词进行增量计算。这是一种极其聪明的“空间换时间”的策略:牺牲一部分宝贵的显存容量,换取了文本生成速度的成倍提升。

# Decode: With KV caching (空间换时间) def decode_with_kv_cache(prompt_tokens, max_gen_len): # 第一阶段:Prefill(预填充),一次性处理所有输入,并初始化 KV Cache logits, kv_cache = prefill(prompt_tokens) next_token = sample(logits[-1]) generated_tokens = [next_token] # 第二阶段:Decode(解码),利用 KV Cache 增量生成 for _ in range(max_gen_len - 1): # 1. 每次只对最新生成的一个 Token 进行处理,无需重新处理前面的词 hidden_states = embedding(next_token) # 2. 核心魔法:读取历史 KV Cache,与新 Token 一起计算注意力, # 并将新 Token 的状态更新进 KV Cache 中。避免了重复计算! attention_output, kv_cache = attention_with_kv(hidden_states, kv_cache) # 3. 仅对当前单个 Token 进行前向计算(计算量极小,但需将庞大的模型权重从显存搬运过来) logits = mlp(attention_output) # 4. 预测下一个 Token next_token = sample(logits[-1]) generated_tokens.append(next_token) return generated_tokens

所以,下次当你注视着屏幕上那些流畅生长的文字时,或许能体会到硅晶片深处那场无声的交响乐。它始于一场狂暴的算力冲刺,大模型调动全部并发能力去倾听和理解你的意图;随后,它又化作一场考验数据搬运能力的马拉松,在 KV 缓存的默默支撑下,字斟句酌地给出回答。理解大模型的推理是“两份工作”,并不仅仅是一个硬核的技术冷知识。对于所有试图在 AI 时代构建应用的人来说,看透算力与带宽的这层博弈,正是驯服这些庞然大物,让它们跑得更快、更稳的关键所在。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

http://www.jsqmd.com/news/1195655/

相关文章:

  • 成都市金牛区轮胎更换靠谱的 - 资讯纵览
  • 亲身到店探访长沙劳力士官方售后服务中心|官方地址及24小时售后电话(2026年7月最新) - 劳力士官方服务中心
  • 51单片机(三)独立按键消抖与状态机实战
  • TK1终端优化五步法:从卡顿到秒响应的实操指南
  • 金水花园路名表回收,线上免费估价,30 分钟上门 - 全城热点
  • 科研信息过滤系统:90分钟精读4篇论文的方法论
  • 宁波蒂芙尼六爪钻戒回收,微笑项链钥匙吊坠,发图即估价 - 大牌深度测评
  • 长沙岳麓区保洁收纳|维小达|日常保洁、深度保洁、开荒保洁、窗户保洁、收纳整理、暖气清洗、家电清洗全屋家政一站式清洁收纳养护服务 - 一点传媒
  • 前端三基石:从后端视角理解 HTML、CSS 与 JavaScript
  • 每天认识一种投资品类:股票
  • kucx实战指南:5个步骤集成不同通信库的完整方案
  • 姑苏区2026闲置包包回收防骗宝典|深度揭秘套路+完整维权流程+合规正规门店合集 - 生活时报
  • 国产代码大模型CLI工具选型与本地化实践指南
  • mybatis-plus 常用方法
  • 【电路仿真实战】基于Multisim的555双音门铃设计与频率调校全解析
  • Flink系列之:窗口聚合的进阶应用与性能调优
  • 从选型到实战:深入解析USB转串口芯片CH340的设计与应用
  • OpenClaw 2.6.6 Win10本地技能调度器零基础部署指南
  • 2026五年级语文暑假预习攻略:上册生字高清无水印可打印资料速取 - 时时资讯
  • 美度保养配件要从瑞士进口吗-解析原厂配件供应流程与时长权威公示(2026年7月最新) - 亨得利钟表维修中心
  • 车载测试培训选择指南:从CANoe实操到就业实战全解析
  • 技术社群运营:从视频引导到高质量社群构建的完整策略
  • INT102 算法核心:从伪代码到时间复杂度实战解析
  • 百达翡丽中国官方售后服务中心|官方电话和维修地址权威信息公告(2026年7月最新) - 百达翡丽服务中心
  • 19-大模型智能体开发:LangChainLangGraph是如何诞生的
  • 别再把电池拆得稀巴烂!慧寄侠整车直发,260元搞定省内短途寄车,省心更省钱 - 快递物流资讯
  • VC++仿360安全桌面开发实战:Win32 API与GDI+界面编程详解
  • 华芯微特SWM34S系列MCU 开发环境搭建与避坑指南
  • 选择外卖托管服务商:如何系统规避差评与运营风险 - 行业观察日记
  • 如何使用 Image-2 大模型生成小红书九宫格图片并自动裁切(自媒体高效搞流教程)