训练昂贵但模型只是静态权重
训练前沿模型可能花费数亿美元并耗时数月,但训练完成后模型只是一大堆闲置在内存中的数字,本身并不知道如何做任何事。
解释LLM推理如何把静态权重变成实时响应,并拆解推理引擎从分词、路由、批处理到prefill与decode的完整流程。
介绍推理及其随请求累积的成本,并说明使用规模和配置会影响成本。
训练前沿模型可能花费数亿美元并耗时数月,但训练完成后模型只是一大堆闲置在内存中的数字,本身并不知道如何做任何事。
推理是让训练好的模型对新输入运行并产生输出的过程,每次请求都会产生推理计算。训练得到权重后,模型仍可继续微调或重新训练。
推理会随请求产生计算成本。累计推理成本是否超过训练成本,取决于模型、使用量、训练规模、硬件和运行方式。
本期聚焦提示到响应之间真正发生了什么,以及如何让服务过程尽可能快速、便宜。
介绍推理引擎的职责与常见例子,并说明请求入口的OpenAI兼容端点与分词步骤。
管理推理的软件叫推理引擎,职责是把一堆权重变成能可靠、快速、大规模服务请求的系统,包括调度请求、管理GPU资源和决定如何一起处理工作。
Ollama和llama.cpp都是推理引擎的例子。
多数推理引擎提供标准的OpenAI兼容端点,同一请求格式可用于不同底层模型,便于应用换模型而不改代码;但请求进入数据中心前,还需转成模型能理解的格式。
分词把文本拆成token,可能是整词、词的一部分或标点,再把每个token映射为任意token ID;模型看不到单词,只看到ID流。
分词将文本拆成token并映射为token ID。一些模型服务按输入和输出token数量计费;实际价格、词表及分词效率因模型和服务而异。
介绍硬件路由、批处理与连续批处理,以及它们对利用率和吞吐的影响。
请求需要物理硬件处理,通常位于数据中心;到达后先通过API密钥或token认证,证明你有权使用这些GPU资源。
认证后请求被路由到特定硬件,推理路由器查看提示的长度和内容,把它分配到当时最适合该请求的可用硬件。
请求并非只有一条,逐条送入模型就像工业烤箱一次只烤一个点心,会浪费大量GPU资源并拖垮系统吞吐量,即系统一次能承载的请求数。
批处理把请求分组,让GPU把它们当作一个更大、更高效的工作单元来处理。
连续批处理允许已完成的请求退出并让新请求加入,有助于减少空闲并提高吞吐;实际利用率取决于请求负载和配置。
调度器负责批处理过程,并把请求路由到真正执行计算、生成响应的硬件。
介绍prefill如何处理输入并建立KV缓存,以及decode如何生成输出;两阶段的瓶颈和延迟受具体配置影响。
LLM推理包含两个不同阶段:prefill和decode。
Prefill处理输入提示并建立可复用的KV缓存;实现也可能分块处理长提示。KV缓存帮助后续解码复用已有计算,避免每次重新计算全部上下文。
Prefill通常需要并行处理输入并建立缓存,常表现为计算密集;实际瓶颈也会受输入长度、缓存和硬件配置影响。
KV缓存随后交给decode阶段,模型在这里逐token生成响应。
decode每一步都做一次前向传播,对词表中每个token产生概率分布,即下一个token的候选排名;选中一个token后追加到序列,再从头重复。
常见的逐token解码需要反复读取模型权重和缓存,常受内存带宽限制;批量大小、推测解码和硬件等因素可能改变瓶颈。
客户端TTFT通常指发送请求到收到首个输出的时间,可能包含网络、排队和prefill;ITL衡量相邻输出之间的时间,具体口径依测量方式而异。
总结推理是调度、路由与两阶段计算的组合,并邀请观众在评论区提出后续问题。
推理利用训练好的模型生成响应,请求经过调度与批处理,再由prefill处理输入、decode生成输出。计算与内存带宽的具体约束取决于运行配置。
欢迎在评论区提出后续问题,或说明你正在优化推理栈的哪一部分。
由知否生成 · 整理你自己的资料 · 登录后按账户权益阅读、整理与提问