想象你走进一家米其林级别的“AI 餐厅”——门口挂着“Text Generation Inference“的招牌,缩写叫 TGI。这家餐厅由 Hugging Face 大厨创办,专为”生产级”而生:不是做一桌家常菜,而是要同时接待成百上千位顾客(也就是大模型推理请求),还要保证上菜又快又稳。 餐厅后厨藏着三大绝活:第一,“连续批处理”——不再等一桌客人全部吃完才翻台,而是谁吃完谁走、新客立即入座;第二,“分页注意力”——把厨房大冰箱改成一个个小格子,按需分配食材存储,绝不浪费一寸空间;第三,“张量并行”——一道硬菜由多位厨师联手烹制,每人负责一部分工序。餐厅还提供两种点菜方式(REST 与 gRPC 接口),支持“先上开胃菜再逐步上主菜”(流式输出),甚至能按固定菜单规格出餐(JSON 结构化生成)。如今,全球多家云厂商都把这套“中央厨房”方案搬上了自己的云端。
TGI 是当下生产级大模型推理的主流框架之一。学会它,你就掌握了从“模型训练完”到“线上稳定服务”的关键一环,这正是 AI 工程师与 MLOps 岗位的核心竞争力。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
定位与特性
想象你是一名餐厅老板,想开一家能同时接待几百人的“AI 餐厅”。你当然不会让每位顾客都去小作坊里排队——你需要一套成熟的后厨系统。TGI 就是 Hugging Face 大厨开出的这家“米其林餐厅”:它叫 Text Generation Inference,从名字就能看出,它专职做“文本生成推理”这一件事,而且是按“生产级”标准来做的。
所谓“生产级”,意味着它不是实验室里的玩具:能扛住真实流量、能监控、能水平扩展、能对接各种调用方。TGI 由 Hugging Face 官方开源维护,天然支持 Hugging Face Hub 上成千上万的模型,你不用改代码就能把 Llama、Qwen、Mistral 等模型“端上餐桌”。它内置了连续批处理、分页注意力、张量并行三大优化,还提供了 REST 和 gRPC 两种点菜通道,甚至兼容 OpenAI 的 API 协议——让原本为 OpenAI 写的代码几乎零改动就能切换过来。
推理一次请求的耗时,可以拆成两段来看:
理解了 TGI 的定位,就明白它为什么要折腾后面那么多优化——因为它要同时服务太多“客人”,后厨必须精打细算。
- 预填充阶段 \(L_{\text{prefill}}\)模型拿到整段输入提示词后,一次性并行计算所有输入的注意力信息,生成第一个输出 token 之前的全部耗时。这很像服务员先看一眼整桌客人的完整点单,心里有数。
- 解码阶段 \(L_{\text{decode}}\)从第一个 token 之后,模型每个时间步只生成一个 token,且下一步必须依赖上一步的结果,无法并行。这就像一道道菜必须按顺序做,后面的菜依赖前面的火候。
- 总延迟相加预填充 + 解码构成完整的响应时间。理解这个分解才能明白:连续批处理优化的是“多桌客人同时吃”的效率,流式输出优化的是“第一道菜多快上桌”,它们动的是不同的环节。
连续批处理
早期的大模型推理服务有点像“团餐制”:一批请求必须凑齐了才一起开饭(静态批处理),而且这一批人全部吃完才允许翻台。问题来了——每桌客人的用餐速度不一样,有人 5 分钟吃完,有人要 30 分钟。但后厨必须等最慢的那桌放下筷子,才能接待下一批客人。GPU 这个“大厨”明明有空闲,却因为一两个慢请求干等着。
TGI 的连续批处理改变了游戏规则:每个请求在 GPU 上“占一个座位”独立计算,谁先生成完谁就离开,空出的位置立刻让新请求坐进来。就像自助餐厅不再等整批客人吃完,而是随时有人走、随时有人补位。请求粒度从“一批”细化为“一个 token 步”,GPU 的每一刻都在干活,而不是干等。
用一个简单的吞吐公式对比:
连续批处理让 GPU 大厨几乎每时每刻都有活干,餐厅的“翻台率”大幅提升。
- \(B\) 一批请求数量同时进入 GPU 处理的请求个数。就像一桌坐了 8 位客人,B 就是 8。
- \(t_{\max}\) 最慢请求耗时静态批处理中,整批要等最慢的那个请求完成才能释放资源。一桌人里有人吃 3 小时,其他人也得陪着。
- \(\bar{t}\) 平均请求耗时连续批处理中,每个请求按自己的真实速度完成,新请求能及时补上,因此整体节奏由平均速度而非最慢速度决定。
- 吞吐量对比由于 \(\bar{t} < t_{\max}\),在相同请求量下 \(Q_{\text{continuous}} > Q_{\text{static}}\)。这就是 TGI 提升吞吐量的核心逻辑。
分页注意力
推理时,模型会把历史的“聊天记忆”(Key-Value 向量,简称 KV 缓存)存在显存里,用于计算下一个 token 的注意力。问题来了:这段记忆占空间极大,而且长度随对话增长。早期的做法是给每个请求一次性预留足够大的连续显存空间,结果大量空间闲置浪费——就像厨房给每桌客人单独配一整层大冰柜,但大多数客人的食材根本没那么多。
更麻烦的是显存碎片化:请求 A 完成释放了 1GB,请求 B 又占走 0.5GB,剩下的空间东一块西一块,新请求虽然总空闲显存够用,却因为找不到连续的整块空间而无法分配。TGI 借鉴操作系统虚拟内存的思路,把显存切成固定大小的“页”(PagedAttention),KV 缓存按页分配、按需取用,物理上不需要连续,逻辑上依然连续。就像把大冰柜改成一个个小格子,A 用 3 格、B 用 5 格、C 用 2 格,格子随用随取,碎片大大减少。
KV 缓存到底有多大?计算公式如下:
分页注意力让显存的“格子”利用率大幅提升,同一块 GPU 上能容纳更多并发的“食客”。
- 系数 2(K 和 V 两份)每个注意力头都要同时保存 Key 和 Value 两组向量,所以先乘以 2。就像每个菜位既要记“菜名编号”也要记“菜品内容”。
- 层数 \(n_{\text{layer}}\)Transformer 有几十层,每一层都要保存自己的 KV 缓存。层数越多,模型越聪明,缓存也越重。
- 头数与维度相乘注意力头数 × 每头向量维度,得到单个 token 的表示大小。常见 7B 模型的这个乘积可能达到数千维。
- 序列长度 \(L\)缓存随输入和输出总长度线性增长,所以长上下文对话的 KV 缓存会迅速吃满显存,分页管理就成了刚需。
张量并行
当模型大到一张 GPU 显卡放不下时,就得请多位“厨师”联手。张量并行(Tensor Parallelism)的做法是:把模型权重矩阵切成多块,分别放在多张 GPU 上,每次前向计算时各卡协同完成。就像做佛跳墙,主厨负责调汤底、二厨负责处理海参、三厨负责鲍鱼,最后汇合到一口锅里。
但协作是有代价的:每个 token 计算完,各卡之间需要同步结果,这个“对讲机沟通”(AllReduce 通信)非常耗时。卡越多,通信越频繁,而且通信时间并不因为卡多而减少。因此加速比不会随着卡数线性增长,而是越来越“钝”。
张量并行的理想加速比公式如下:
张量并行是“大模型放不进单卡”时的硬核解法,TGI 将其内建支持,用户只需配置即可让多卡协作。
- \(p\) 卡数参与并行推理的 GPU 数量。4 张卡时 p = 4。
- \(\frac{1}{p}\) 计算均分如果没有通信开销,计算时间能降到原来的 1/p。这是量化“理想状况”的参照系。
- \(\frac{T_{\text{comm}}}{T_1}\) 通信占比每次 token 生成都需要跨卡同步,通信耗时占单卡总计算时间的比例。这个比例越大,加速比损失越严重。
- 整体加速比分母由“均分后的计算 + 通信占比”组成,分母大于 1/p,所以 S(p) < p。加了 3 张卡,速度不可能变成 4 倍——能跑到 3 倍已属优秀。
接口服务
餐厅再厉害,客人也得知道怎么点菜。TGI 提供两种点菜通道:REST API 和 gRPC 接口。REST 就像传统的手写菜单——基于 HTTP + JSON,简单通用,任何语言都能轻松调用,适合大多数外部业务系统。gRPC 则像电子点菜系统——使用二进制协议和 HTTP/2,传输更紧凑、延迟更低,适合内部高性能调用场景。
更贴心的是,TGI 提供了兼容 OpenAI Chat Completions 的接口。这意味着,原来调用 OpenAI 的代码,只需把 base_url 换成 TGI 服务的地址,就能无缝切换到开源自建模型。这就像餐厅统一了“标准菜单语言”,不管你之前是在哪家餐厅学的中文还是英文,看同一份菜单就能点菜。
一次典型的 REST 调用延迟可以这样拆解:
接口是餐厅的“门面”,TGI 把门面做得足够标准,让全世界的“食客”都能轻松入座。
- \(T_{\text{request}}\) 请求上行客户端把提示词封装成 JSON,通过 HTTP 发送到 TGI 服务端。网络越稳定,这部分越小。
- \(T_{\text{infer}}\) 推理计算TGI 完成前文提到的 prefill + decode 全部计算,这是三部分中的绝对大头。
- \(T_{\text{response}}\) 响应下行生成的文本封装回 JSON,返回给客户端。如果关了流式输出,就要等全部生成完才一次性返回。
流式输出
传统的非流式生成像“所有菜做齐才端上来”:用户发一句话,苦等 3 秒、5 秒甚至更久,屏幕才一次性蹦出全部内容。虽然总时间没变,但用户的心理感觉难受极了——鬼知道后厨是不是出了什么问题。TGI 的流式输出(Streaming)则像“先上开胃菜”:模型每生成一个 token(约一个字或词),服务端就立刻通过 SSE(Server-Sent Events)推送给客户端,用户几百毫秒内就能看到第一个字,后面的内容像打字机一样不断冒出来。
关键指标叫 TTFT(Time To First Token,首 Token 延迟)。流式输出优化的是“第一道菜多快上桌”,让用户感觉 AI“开口说话了”,而不是对着空气发呆。这对聊天机器人、Copilot 这类交互式应用是体验质的飞跃——同样 5 秒生成完,流式让用户觉得 0.5 秒就开始响应了。
TTFT 的计算公式:
流式输出并没有减少后厨的总工作量,但它把等待变成了“看得见的进度”,让客人心安。
- \(T_{\text{prefill}}\) 预填充耗时模型先读完用户输入的整段提示词,完成这一阶段的并行计算。输入越长,这个耗时越大。
- \(T_{\text{token1}}\) 首 Token 生成预填充结束后,模型输出第一个 token 所需的时间。因为第一个 token 开始产出后,后续 token 就能逐个流式送出。
- 相加得到 TTFT用户感知的“首字等待”就是这两部分之和。流式输出把“全部生成完才发送”变成“边生成边发送”,TTFT 就替代总延迟成为体验的关键。
结构化生成
大模型在真实业务中经常需要输出 JSON 给下游程序解析,比如让 AI 调用搜索工具时返回 {"query": "成都天气"}。但自由生成时,模型可能输出多余的说明文字、错误的关键字或残缺的括号,导致程序直接崩溃。传统的补救方式是“先自由生成,再正则抽取、硬解析”,就像让顾客自由发挥点菜,然后后厨再猜他想吃什么——既不稳定又浪费。
TGI 的结构化生成(JSON 模式)改成了“标准套餐”模式:你提前给定 JSON Schema(比如必须有哪些字段、字段类型),TGI 在解码时实时检查词表,凡是会导致 JSON 非法的 token 直接概率置零,不允许输出。这相当于后厨只按固定菜单的规格做菜,上桌必然符合标准。
约束解码的数学表达:
结构化生成让 AI 的输出“天然合法”,工具调用、函数参数提取等场景从此不再看运气。
- \(V_G\) 合法 Token 集根据 JSON Schema 或正则规则,动态计算出当前这一步允许输出的 token 集合。比如字段名位置只允许"key"对应的那几个 token。
- 条件分支判断如果候选 token \(y_i\) 在合法集内,按 softmax 计算归一化概率;如果不在合法集内,概率直接置为 0,绝不输出。
- 分母归一化注意分母只在合法子集 \(V_G\) 内求和,而不是全词表。这样能保证合法 token 的概率总和为 1,模型在“正确轨道”里继续生成。
部署与生态
一家餐厅的菜做得再好,也要考虑怎么开连锁。TGI 的部署生态已经非常成熟:它提供了一个高性能 Rust 后端,通过 Docker 容器即可一键拉起服务,也支持 Kubernetes 集群编排与多实例水平扩展。因为稳定性和性能经过了大规模验证,AWS、Azure、Google Cloud 等云厂商都在自家平台上直接提供基于 TGI 的模型推理服务,用户点几下鼠标就能部署一个 Llama-3 或 Qwen 的推理 API。
在真正的生产环境,单实例能力总归有上限,所以 TGI 的部署架构天然支持“多实例 + 负载均衡”:一台 TGI 服务不够,就横向加机器,前面挂一个负载均衡器分发请求。但由于请求路由和实例间通信的开销,集群整体的吞吐并不是简单线性叠加。
集群吞吐的估算公式:
从 Docker 单机到云厂商托管,TGI 已经证明自己是一套经得起生产考验的“中央厨房”方案。它让大模型推理不再是“玄学”,而是一条标准化的流水线。
- \(Q_{\text{single}}\) 单实例吞吐一台 GPU 上 TGI 服务每秒钟能处理的请求数。连续批处理和分页注意力保证这个基数足够高。
- \(N_{\text{instance}}\) 实例数横向扩容的服务副本数量。10 台实例,N = 10。
- \(E\) 扩展效率负载均衡分发不均、实例间通信、冷启动等造成的损耗,E 通常小于 1。实例越多,E 越低。
AI 应用场景
企业大模型统一网关
阶段:模型部署与推理服务
解决的问题:企业内部往往有多个开源大模型(如 Llama、Qwen、DeepSeek)要对外提供能力,若每个模型一套部署方式,调用方维护成本极高。传统方式需要为每个模型写不同客户端,极其痛苦。TGI 提供统一的 REST/gRPC 接口和 OpenAI 兼容协议,一套网关就能统一管理多个模型,调用方只认一套 API 规范。
具体案例:某大型企业的算法平台团队用 TGI 分别部署了 Llama-3-70B 和 Qwen2.5-72B,所有业务线通过统一的 OpenAI 兼容接口访问。内部系统从 OpenAI 迁移到自建时,只改了 base_url 一个配置,测试环境一天内全部跑通。
智能客服的流式体验改造
阶段:推理服务优化与用户体验
解决的问题:传统非流式接口要求用户等 3~5 秒才能看到完整回复,体验非常“死板”,用户以为系统卡死了。TGI 的流式输出让首 token 在几百毫秒内送达,配合打字机效果给用户“正在思考”的反馈,大幅降低了等待焦虑。
具体案例:某电商平台的智能客服机器人从自研推理服务切换到 TGI 的 /generate_stream 接口后,首字响应从 3.2 秒降到 0.4 秒,用户满意度评分提升 23%,高峰期同时在线会话数翻了一倍。
多租户 GPU 集群提效
阶段:推理性能调优与资源管理
解决的问题:多个团队共用一个 GPU 集群时,传统静态批处理让 GPU 利用率长期徘徊在 30% 左右,算力浪费严重。TGI 的连续批处理 + 分页注意力让同样的 GPU 能同时服务更多请求,显存碎片减少,资源利用率显著提升。
具体案例:一家 AI 创业公司的 GPU 集群原来跑 5 个推理服务就接近显存上限,改用 TGI 后,通过 PagedAttention 按页分配 KV 缓存,同样的集群跑起了 8 个服务,整体吞吐提升 2.1 倍,每月云账单减少 30%。
Python 演示
"""调用 TGI 推理服务的客户端示例:普通生成 + 流式生成"""import jsonimport requests TGI_URL = "http://localhost:8080" def generate(prompt, max_new_tokens=128): """调用 /generate 接口,一次性返回完整结果。""" payload = { "inputs": prompt, "parameters": { "max_new_tokens": max_new_tokens, "temperature": 0.7, }, } resp = requests.post(f"{TGI_URL}/generate", json=payload, timeout=60) resp.raise_for_status() return resp.json()["generated_text"] def generate_stream(prompt, max_new_tokens=64): """调用 /generate_stream 接口,逐个 token 产出。""" payload = { "inputs": prompt, "parameters": {"max_new_tokens": max_new_tokens}, "stream": True, } with requests.post(f"{TGI_URL}/generate_stream", json=payload, stream=True, timeout=60) as resp: resp.raise_for_status() for line in resp.iter_lines(): if not line: continue text = line.decode("utf-8") if text.startswith("data:"): item = json.loads(text[len("data:"):].strip()) yield item["token"]["text"] if __name__ == "__main__": print(generate("用一句话介绍成都:")) print("\n--- 流式输出 ---") for token in generate_stream("写一句关于春天的诗:"): print(token, end="", flush=True) print()
payload = {...}构造请求体,inputs是提示词,parameters控制生成参数,这是 TGI REST API 的标准结构resp.raise_for_status()如果 HTTP 状态码不是 2xx 就直接抛异常,快速暴露服务异常"stream": True告诉 TGI 以 SSE 流式模式返回,否则会等全部生成完才响应resp.iter_lines()逐行读取流式响应而不是一次性加载到内存,配合“边生成边显示”text.startswith("data:")SSE 数据行以data:前缀开头,识别并剥离它item["token"]["text"]从每个 SSE 数据块中提取当前生成的 token 文本flush=True立即刷新输出缓冲区,控制台就能模拟“逐字上菜”的打字机效果
常见误区
误区我以为 PagedAttention 是 Hugging Face 自己发明的独有技术,离开 TGI 就用不上,其他框架都没有。
正解PagedAttention 的核心思想——把显存切成页、按需分配 KV 缓存——是行业通用方案,vLLM、TensorRT-LLM 等主流推理框架都有类似实现。TGI 只是率先将它工程化落地到自己的服务中。就像“分格冰箱”不是某家餐厅的专利,而是整个餐饮行业都在用的通用做法。
为何常见:TGI 的宣传材料会突出自研优化,读者容易把“框架内置能力”误当成“框架独有专利”。
误区我以为连续批处理就像给每个请求都装了加速器,开了以后所有请求的响应时间都会明显缩短。
正解连续批处理提升的是“吞吐量”,即单位时间内能处理的请求总数;单个请求的延迟不一定会变短,甚至在高并发时因为资源竞争还可能有轻微波动。就像餐厅翻台率提高,不代表每桌客人上菜变快,而是同样的时间能接待更多桌客人。
为何常见:很多人把“整体吞吐”和“单请求延迟”两个指标混为一谈,看到吞吐数字翻倍就以为所有请求都变快了。
误区我以为流式输出既然“看起来快了很多”,那后端计算总时间也一定缩短了,是算法上的优化。
正解流式输出改变的是数据的传输时机,不是计算量。模型依然要生成同样数量的 token,总耗时基本不变。它把“全部生成完再发送”变成“边生成边发送”,让用户的首字等待变短,但后端工作量还是那么多。就像“先上开胃菜”并没有让后厨做菜更快,只是让你不用干等主菜。
为何常见:用户感知的“响应速度”是一种体验指标,被误当成系统性能指标,两者被混为一谈。
误区我以为只要在提示词里写“请输出 JSON 格式”,模型就能保证输出合法 JSON,不需要额外机制。
正解自由生成时模型完全可能输出非法 JSON,比如多一个逗号、少一个引号。TGI 的 JSON 结构化生成是在解码时实时用语法约束过滤 token,把会导致 JSON 非法的候选直接概率置零。这等于后厨按标准菜单规格出餐,而不是靠顾客口头承诺“我会按格式点菜”。
为何常见:ChatGPT 等产品输出 JSON 看起来总是很规范,让人误以为“提示词就够了”,没意识到背后有约束解码在工作。
面试题
Q1. TGI 最准确的定位是下列哪一项?
- A.模型训练加速框架
- B.生产级推理服务框架← 正确答案
- C.数据标注管理平台
- D.向量数据库引擎
答案:B。TGI 全称 Text Generation Inference,专为生产环境的大模型文本生成推理服务设计,内置连续批处理等优化。训练加速(A)是训练框架的职责;数据标注(C)和向量数据库(D)与推理服务无关。
Q2. 连续批处理解决的核心问题是?
- A.梯度计算速度过慢
- B.静态批次的等待浪费← 正确答案
- C.模型参数数量过多
- D.训练数据集不平衡
答案:B。静态批处理要等整批中最慢的请求完成才释放资源,导致 GPU 空闲等待。连续批处理让请求独立调度、完成即释放,像餐厅随时翻台。梯度(A)、参数规模(C)、数据不平衡(D)都是训练阶段的问题。
Q3. PagedAttention 的思想最类似于操作系统中的哪种机制?
- A.虚拟内存分页管理← 正确答案
- B.进程优先级调度
- C.CPU 缓存一致性协议
- D.RAID 磁盘阵列冗余
答案:A。PagedAttention 把显存切成固定大小的页,KV 缓存按页分配、物理上可以不连续但逻辑连续,这正是虚拟内存分页的核心思想。优先级调度(B)解决排队顺序,缓存一致性(C)解决多核同步,RAID(D)解决数据冗余,都与显存碎片化问题无关。
Q4. 张量并行中通信开销主要发生在什么时机?
- A.每个 token 生成的同步过程← 正确答案
- B.模型权重的初始加载阶段
- C.训练数据的批量预处理
- D.推理服务的请求路由转发
答案:A。张量并行下,每生成一个 token 都需要跨卡完成矩阵分片计算并用 AllReduce 同步结果,通信发生在每一步解码过程中。初始加载(B)和数据预处理(C)是部署准备阶段,请求路由(D)是接入层行为,都不是每步都发生的通信开销。
Q5. TGI 流式输出给用户带来最直接的效果是?
- A.首 token 更快到达客户端← 正确答案
- B.模型总计算量大幅减少
- C.KV 缓存占用自动减半
- D.生成结果准确率自动提升
答案:A。流式输出让模型每生成一个 token 就立即推送,首字延迟(TTFT)显著降低,提升交互体验。但它不减少总计算量(B)、不改变显存策略(C)、不影响生成质量(D),这些是其他优化手段的范畴。
Q6. TGI 的 /generate_stream 接口返回的数据格式是?
- A.完整 JSON 整包一次性返回
- B.SSE 多行数据流推送← 正确答案
- C.二进制 protobuf 帧序列
- D.纯文本无前缀单行输出
答案:B。/generate_stream 基于 SSE(Server-Sent Events)协议,每行以 data: 前缀携带一个 token 的 JSON 数据。整包返回(A)是非流式接口,protobuf 帧(C)是 gRPC 的传输格式,纯文本无前缀(D)不符合 SSE 规范。
Q7. 除了 REST API 之外,TGI 还提供哪种高性能接口?
- A.JDBC 数据库连接接口
- B.gRPC 远程调用接口← 正确答案
- C.LDAP 目录访问接口
- D.SNMP 网络管理接口
答案:B。TGI 提供 REST 和 gRPC 双通道,gRPC 基于 HTTP/2 和二进制序列化,适合内部高性能调用。JDBC(A)是数据库接口,LDAP(C)是目录服务协议,SNMP(D)是网络设备管理协议,都与推理服务无关。
Q8. TGI 内置的推理优化包含以下哪些项?
- A.连续批处理优化← 正确答案
- B.分页注意力缓存← 正确答案
- C.张量并行计算← 正确答案
- D.自动数据增强
答案:ABC。Continuous Batching(连续批处理)、PagedAttention(分页注意力)、Tensor Parallelism(张量并行)是 TGI 的三大核心优化。自动数据增强(D)属于训练阶段的数据处理技术,与推理服务优化无关。
Q9. 关于 TGI 的 JSON 结构化生成,下列说法正确的有哪些?
- A.通过约束解码保证输出合法← 正确答案
- B.采样时排除非法 token← 正确答案
- C.只能在非流式模式下使用
- D.可用于工具调用场景← 正确答案
答案:ABD。TGI 在解码每一步动态检查语法约束,将不符合 JSON Schema 的 token 概率置零,保证输出合法(A、B)。结构化生成的核心价值就是让下游程序稳定解析,常用于工具调用的参数提取(D)。它同时支持流式模式(C 错误)。
Q10. 生产环境同时启用多卡张量并行、连续批处理与流式输出,以下哪些判断是正确的?
- A.通信开销会限制张量并行加速比← 正确答案
- B.流式输出会减少模型总计算量
- C.连续批处理能提升集群整体吞吐← 正确答案
- D.分页注意力可缓解显存碎片问题← 正确答案
答案:ACD。通信是张量并行的固有成本,加速比永远小于卡数(A 对)。连续批处理提高单位时间处理请求数(C 对)。分页注意力按页分配 KV 缓存,有效缓解碎片(D 对)。流式输出只是改变发送时机,不减少后端计算量(B 错)。