
目录
[一、上层业务完整运行链路(调用 API / 本地部署流程)](#一、上层业务完整运行链路(调用 API / 本地部署流程))
[1. 用户请求接入层](#1. 用户请求接入层)
[2. 请求分发与调度](#2. 请求分发与调度)
[3. 上下文组装](#3. 上下文组装)
[4. 前端预处理](#4. 前端预处理)
[5. Tokenizer 分词(文本→数字 ID,模型唯一能看懂的语言)](#5. Tokenizer 分词(文本→数字 ID,模型唯一能看懂的语言))
[6. 模型推理核心阶段(最耗算力)](#6. 模型推理核心阶段(最耗算力))
[(1)Prefill 预填充:一次性处理全部输入上下文](#(1)Prefill 预填充:一次性处理全部输入上下文)
[(2)Decode 解码生成:逐 token 串行输出](#(2)Decode 解码生成:逐 token 串行输出)
[7. 后处理:数字 ID 转回人类文字](#7. 后处理:数字 ID 转回人类文字)
[8. 结果返回与后置流程](#8. 结果返回与后置流程)
[二、底层 Transformer 内部计算链路(单 token 微观逻辑)](#二、底层 Transformer 内部计算链路(单 token 微观逻辑))
一句话总览:用户输入→预处理→Tokenizer 分词→模型推理(Transformer 核心计算)→解码生成→后处理输出 ,配套调度、显存、上下文缓存、硬件调度整套工程链路。 分两大层:业务应用链路(使用者视角) + 底层模型计算链路(算法 / 工程视角)
一、上层业务完整运行链路(调用 API / 本地部署流程)
1. 用户请求接入层
用户发消息(网页、客户端、API 接口),携带信息:
- 文本 prompt、图片(多模态)、系统提示词 system prompt、历史对话上下文、参数(温度 top_p、最大生成长度、流式开关)
- 网关校验:鉴权、限流、计费、格式校验、恶意内容过滤
2. 请求分发与调度
多机器 / 多卡集群场景: 负载均衡将请求分配到空闲 GPU 节点; 本地单卡则跳过,直接送入模型推理服务(vLLM/TensorRT-LLM/Transformers)。
3. 上下文组装
服务拼接三段文本: 系统提示词 + 历史对话轮次 + 用户当前提问 长对话会触发上下文截断:超出窗口长度时,丢弃最早历史,保证总 token 不超限。
4. 前端预处理
清洗输入文本:去空格、特殊符号过滤、多模态切分(图文分离)、格式统一。
5. Tokenizer 分词(文本→数字 ID,模型唯一能看懂的语言)
这是文本和模型之间的翻译器,核心步骤:
- 文本切分子词(不是简单汉字 / 单词,如 "人工智能" 拆成 2~3 个子词)
- 映射为词表内唯一整数 token_id
- 补充特殊标记:
<bos>:开始符、<eos>:结束符、<pad>:填充符
- 生成 input_ids、attention_mask(掩码,区分有效文字和填充空白)
示例: 文字:你好 → 分词子词 → 123,456 数字序列,送入 GPU 张量。
6. 模型推理核心阶段(最耗算力)
分为Prefill 预填充阶段 + Decode 逐一生成阶段,是整条链路性能瓶颈
(1)Prefill 预填充:一次性处理全部输入上下文
把用户所有输入 token 并行计算,一次性算出所有 token 的 Key/Value 缓存(KV Cache) 作用:保存上下文记忆,后续生成新字不用重复计算历史,大幅提速。 输入越长,Prefill 耗时越高。
(2)Decode 解码生成:逐 token 串行输出
大模型是自回归生成,一次只能输出 1 个 token:
- 基于 Prefill 得到的 KV 缓存,计算下一个 token 概率分布
- 根据采样参数(temperature、top-k、top-p)筛选概率最高的词
- 输出 1 个 token,把这个 token 的 K、V 追加进 KV 缓存
- 循环重复,直到输出
<eos>结束符 / 达到最大长度限制
流式输出:每算出 1 个 token 立刻返回前端;非流式:全部生成完一次性返回。
7. 后处理:数字 ID 转回人类文字
- Detokenizer:把输出 token 数字 ID 反向还原成子词、拼接成完整中文 / 英文
- 清洗:剔除特殊标记、多余换行、无效乱码
- 多模态还原:如果是图文模型,还原图片嵌入内容
8. 结果返回与后置流程
- 返回文本给用户;
- 日志落盘:记录输入输出、token 消耗、推理耗时;
- 安全二次审核:输出内容风控过滤;
- 计费统计:统计输入 token、输出 token 数量扣费。
二、底层 Transformer 内部计算链路(单 token 微观逻辑)
输入张量 input_ids → 嵌入层 Embedding → 多层 Transformer Encoder/Decoder → 输出层
- Embedding 嵌入层 数字 token_id 映射为高维向量(如 4096 维),文字转化为可计算浮点矩阵。
- 位置编码 Positional Encoding 给向量加入位置信息,让模型区分 "我打他" 和 "他打我" 语序差异。
- 多层 Transformer Block(模型核心骨架,几十至上百层) 每层固定两步: ① 多头自注意力 Multi-Head Attention 利用 KV Cache,让每个 token 和上下文所有 token 做关联计算,理解语义逻辑、指代、上下文关系; ② 前馈神经网络 FFN 非线性变换,挖掘深层语义、知识推理。 每层前后搭配层归一化 LN、残差连接,保证深层网络可训练。
- 输出层 LM Head 将最后一层隐藏向量映射回词表维度,输出每个候选 token 的概率。
- 采样策略 贪心采样、TopP、TopK、随机温度采样,控制回答创造力、随机性。
三、关键核心概念串联理解链路
-
KV Cache 缓存(性能核心) Prefill 阶段缓存全部历史 token 的 K/V 向量,Decode 阶段只计算新增 token,避免重复计算上下文; 没有 KV Cache,长对话推理速度会暴跌几十倍。
-
上下文窗口 Context Window 模型能一次性读取的最大总 token 数,链路中组装对话、截断历史都受窗口限制。
-
Prefill / Decode 资源差异
- Prefill:并行计算,占用高算力,适合批量请求;
- Decode:串行逐字生成,显存占用持续上涨,并发上限由 Decode 瓶颈决定。
- 多模态模型扩展链路(图文大模型) 图片单独经过视觉编码器 ViT,转为图像向量,和文本 Embedding 拼接后统一送入 Transformer,其余推理链路和纯文本一致。
四、极简版链路记忆口诀
用户提问 → 拼对话上下文 → 清洗文本 → Tokenizer 转数字张量 → Prefill 批量算上下文 KV 缓存 → 循环 Decode 逐字预测 token → ID 转回文字 → 风控 + 日志返回用户
五、为什么要懂完整运行链路?
- 调优体验:对话卡顿、长上下文丢失、输出乱码,都能定位是 Tokenizer / 截断 / KV 缓存问题;
- 性能优化:吞吐低、显存溢出,区分 Prefill 和 Decode 瓶颈做优化(vLLM 分页缓存、量化);
- 故障排查:输出幻觉、重复文字、截断丢失历史,对应链路不同环节;
- 工程部署:区分 API 服务、本地推理、多卡分布式调度的差异。