写点什么

大模型推理服务架构

作者:陈一之

大模型推理服务表现上是内容生成,实际上是内容转义——基于输入产生输出,并非无中生有。

推理服务最小功能

推理服务的最小可运行单元需满足“输入-计算-输出”闭环,计算依赖模型实例系统资源,核心包括 5 个基本模块:

  • 模型加载模块:实现权重文件到计算设备加载,包括权重格式解析、精度转换、设备分配等。

  • 输入处理模块:完成用户请求的标准化转换,包括参数校验、文本分词、多模态数据解码等。

  • 前向计算模块:执行模型推理的核心计算逻辑,包括算子调度、过程数据的读写管理等。

  • 输出处理模块:将模型输出转换为用户可读形式,包括 Token 解码、结果过滤、格式封装等。

  • 资源管理模块:实现计算资源的隔离和监控,包括显存/内存用量统计、进程级资源限制、基础健康检查等。

模型加载

模型加载模块的设计目标是灵活高效地将模型权重部署到计算环境中,同时要兼顾系统的启动效率。

(1)权重解析:兼容多格式权重文件

  • 统一抽象的模型接口:定义通用的模型类或函数,让上层调用无需关注具体格式。

  • 构建格式解析和转换:针对每种格式开发解析器,在加载时自动识别格式并转换为统一的内存结构。

  • 增加格式校验和容错:校验权重维度、参数名称是否与当前模型匹配,避免因格式兼容问题导致推理错误。

(2)精度转换:平衡性能与显存占用

  • 动态精度:根据硬件能力和业务需求,在加载时完成精度转换,例如从 FP32(训练高精度)转换为 FP16/FP8(推理低精度)。

  • 量化参数:若模型支持 INT8/INT4 量化,加载时通过专用量化库完成映射,进一步降低显存占用。

(3)设备分配:灵活映射到计算资源

  • GPU 映射:优先使用 GPU 设备,对于单卡显存不足场景(如超大模型),实现多卡并行计算,如张量并行、专家并行、流水线并行等。

  • CPU 兜底:当无 GPU 可用时,加载到 CPU 内存,适合轻量级模型或调试场景。

(4)延迟加载:大幅缩短启动时间

  • 启动时仅加载模型结构(计算图)和必要的元数据(如权重文件索引),不实际读取权重数据到内存/显存;首次推理请求到来时,按需加载当前推理所需的权重分片。

输入处理

输入处理模块将多样化的用户请求标准化为模型可直接处理的格式,保障请求处理的准确性与高效性。

(1)多模数据解析

  • 文本解析:加载模型配套分词器,避免格式不匹配和语义映射错误导致的模型性能影响。

  • 多模数据:预处理非文本数据,完成模态转换(将非文本数据转为模型可理解的 Token)。

(2)请求参数校验

  • 范围校验:对核心参数设置边界检查,超出范围时自动修正或返回提示。

  • 逻辑校验:处理参数间的逻辑关系,避免矛盾配置导致推理异常。

  • 上下文校验:记录对话历史的 Token 累计长度,防止超出模型上下文窗口限制。

(3)批量请求优化

  • 优先级调度:根据请求类型(如实时/离线)设置优先级,按优先级排序推进计算。

  • 动态批处理:多个请求分组,组内对齐张量,提升吞吐效率,降低重复计算。

前向计算

前向计算模块是模型推理的核心执行引擎,负责将输入的 Token 序列通过模型各层(如 Attention、Feed-Forward 等)转化为输出结果,同时通过数据缓存(如 KVCache)优化重复计算,聚焦于算子高效调度与存储布局优化。

(1)核心计算链路:分层执行与算子调度

以 Transformer 架构为例,前向计算按“输入 → Embedding → Encoder/Decoder 层堆叠 → 输出投影”的顺序执行,核心在于每层内部的算子调度。

  • 嵌入层(Embedding):将输入的 TokenID 通过嵌入矩阵映射为向量,配合预计算的位置编码,通过矩阵加法融合位置信息。

  • 注意力层(Attention):输入先经过线性投影拆分为 Q/K/V,再按头分割并行计算注意力分数,最后拼接所有头的结果并线性变换,得到注意力交互后的特征。

  • 前馈层(Feed-Forward):对归一化后的特征执行两次线性变换,中间插入 ReLU/GELU 等非线性激活函数,增强模型对复杂模式的拟合能力。

  • 残差连接与层归一化(Add & LayerNorm):在 Attention 和 Feed-Forward 前后插入,将注意力输出与该层原始输入相加(残差连接),再通过层归一化稳定数值分布,避免梯度消失或爆炸。

(2)重复计算优化:数据缓存与结果复用

在自回归生成场景(如文本续写)中,避免每次生成新 Token 时对前序 Token 的 K/V 向量进行重复计算,通过 KVCache 缓存进行复用。

  • 写入:首次计算时,缓存当前序列所有 Token 的 K/V 向量,后续生成新 Token 时,仅计算新 Token 的 K/V,并拼接至历史缓存。

  • 读取:计算注意力分数时,直接使用缓存的 K/V 矩阵,避免对历史 Token 的重复计算,需要调度保障计算与数据在相同卡上。

输出处理

输出处理模块负责将模型输出的原始张量转化为用户可理解的结果,同时通过优化策略提升交互体验。

  • 序列解码:模型输出的原始结果通常是 TokenID 序列(或生成过程中的 logits 矩阵),解码是将这些 ID 映射回人类可读的文本。

  • 结果过滤:为提升输出准确性,需对结果进行过滤,常见策略包括阈值截断、重复抑制、非法 Token 过滤等。

  • 格式封装:将解码后的文本转换为用户指定的格式,满足多样化场景,如 API JSON 响应、流式交互协议等。

  • 流式输出:流式输出的核心是“边生成边返回”,通过迭代器模式实现感知延迟的降低。

资源管理

资源管理模块通过监控、限制和检查三大手段,避免模型/进程过度占用资源导致服务崩溃,同时保障整体系统的资源利用率。

  • 用量统计:针对模型推理中最核心的显存(GPU)和内存(CPU)资源,实现实时统计与数据反馈。

  • 资源限制:防止模型/进程消耗过多系统资源导致整体资源过载,对进程/任务的资源使用设置硬性上限。

  • 健康检查:定期检查模型进程的状态,及时发现并处理进程崩溃、僵死等异常。

推理过程数据分布

推理全流程中数据在磁盘、内存、显存间动态流转,不同阶段的存储介质分工明确。

磁盘存储:持久静态数据

  • 模型权重文件:大规模部署时优先使用对象存储,支持高可用和弹性扩容,适合跨节点共享权重;单节点部署可存于本地磁盘,减少网络传输延迟,尤其对 70B 等超大模型(FP16 约 140GB),本地读取能加速首次加载速度。

  • 元数据配置:体积小但不可或缺,如模型结构配置(config.json)和 Tokenizer 词汇表(vocab.json)等静态配置文件。总大小通常小于 10MB,适合与权重文件存放在同一目录,随权重一同加载,避免因配置缺失导致模型初始化失败。

  • 检查点快照:KVCache 快照主要用于超长文本生成(如万字文档续写)或推理中断恢复(如服务重启后从最近快照继续生成),通常采用本地高速磁盘存储,避免网络 IO 延迟影响续推效率。

内存存储:动态流转数据

  • 输入输出缓存:输入侧是 Tokenizer 处理后的输入序列,输出侧是解码过程中生成的 TokenID 序列,以及临时拼接的文本片段(字符串缓存)。避免重复编解码,例如同一用户的多轮对话中,历史输入序列可缓存复用,减少重复计算。

  • 模型权重临时区:模型从磁盘加载到设备(GPU)的过程中,内存需作为临时缓冲,加载完成后部分释放(仅保留 CPU 侧备份)。

  • 框架运行时数据:深度学习框架(如 PyTorch、TensorFlow)在推理过程中会产生大量辅助数据,支撑计算逻辑的正常运行,主要有张量元数据、计算图缓存、线程栈与上下文。这类数据随框架初始化而创建,推理过程中动态更新,且与模型结构强绑定(如 Transformer 层越多,张量元数据越多),但总体占用稳定。

  • 分布式通信缓存:在分布式推理(如模型并行、张量并行)中,内存需缓存跨节点传输的中间数据,按通信周期动态清理过期缓存,避免累积占用。使用零拷贝技术(如 CUDA IPC)可以直接在显存间传输数据,减少内存作为中间缓冲的开销。

显存存储:计算核心数据

  • 活跃模型权重:这类权重是模型完成推理的基础,直接参与张量运算,是显存的常驻核心数据。例如 Transformer 线性层的权重矩阵、注意力层的 Q/K/V 投影矩阵等,不包含未加载或已计算完成的非活跃层(部分模型并行场景会动态加载活跃层)。

  • KVCache:Prefill 阶段生成所有输入 Token 的 K/V 向量,Decode 阶段仅计算新 Token 的 K/V,拼接至历史 Cache,显存占用随生成长度线性增加。

  • 中间计算结果:包括 Attention 层的加权求和结果、Feed-Forward 层的 GELU 激活值、LayerNorm 的标准化输出等,每个层计算后会生成对应的临时张量,下一层计算完成后即可释放。峰值占用通常是活跃模型权重的 1.5-2 倍。

  • 优化器缓存:部分推理框架会将优化后的计算逻辑缓存到显存,避免重复编译。以 TensorRT-LLM、vLLM 为例,会将模型编译为适配 GPU 硬件的引擎文件(包含算子融合计划、Tensor Core 调度逻辑等),加载后常驻显存,约占活跃模型权重的 20%-30%。

单机推理优化策略

基础优化:计算效率优化

计算效率优化的核心目标是提升 GPU 计算单元的利用率,减少无效计算和数据传输耗时,无需改动模型结构即可快速获得吞吐量提升。

  • 算子融合:将 Linear/Bias/GELU 等连续执行的算子合并为一个,减少算子间的数据读写次数,降低内存访问开销。

  • 编译优化:提前编译模型生成优化引擎(如 TensorRT-LLM),针对特定 GPU 硬件优化算子执行逻辑,提升计算效率。

  • 量化压缩:通过不同量化方式压缩模型参数,平衡精度与效率。

  • 权重量化(PTQ):如 INT8(GPTQ)、FP8(AWQ),无需训练,直接对训练后模型量化,部署速度快,适合快速提效场景。

  • 量化感知训练(QAT):训练过程中融入量化误差,精度比 PTQ 更高,但需额外训练成本,适合对精度要求较高的场景。

并发优化:调度策略优化

调度策略优化的核心目标是让 GPU 持续处于高负载状态,避免因请求调度不当导致的资源闲置。

  • 静态批处理:合并多个请求共享计算资源提升效率,需平衡调度与资源。

  • 队列管理:维护请求等待队列,按序列长度分组,避免长序列阻塞短序列;设定批大小上限和最大等待时间阈值,平衡吞吐量和等待延迟。

  • 序列对齐:通过“Padding 补 0”生成统一形状的输入张量(批大小 × 最大序列长度),维护掩码矩阵,屏蔽 Padding 位置的计算贡献。

  • PD 分离:Prefill 阶段批内所有请求并行计算,充分利用 GPU 并行算力;Decode 阶段按批处理自回归生成,共享模型权重计算。

  • 动态批处理(流式批处理,Continuous Batching):通过动态调度与非连续内存管理,解决静态批处理固有缺陷。

  • 动态调度器:实时调整批次组成,通过实时插入策略、优先级调度和批重组机制,打破静态批处理“批次固定”的限制。

  • 非连续内存:借鉴 OS 内存分页思想,分页管理 KVCache,通过页表映射技术、按需分配策略和页替换算法,避免 KVCache 按“批内最大序列长度”连续分配导致的大量冗余碎片。

资源优化:内存效率优化

内存效率优化的核心目标是最大化利用有限显存,避免 OOM(内存溢出),支持更大模型或更多并发。

  • KVCache 优化:通过离散化或动态管理提升显存利用率。

  • 动态分配:根据请求序列长度动态分配缓存空间,而非固定预分配,减少显存浪费。

  • 分页管理:如 PagedAttention(vLLM)离散化管理 KVCache;RadixAttention(SGLang)通过基数排序优化页表查询,页表访问延迟更低,更适合短序列高频请求。

  • 模型权重共享:多实例部署时共用一份只读模型权重,直接降低显存占用,尤其适合批量部署场景。

  • 内存碎片整理:限制单进程显存占比,预留空间用于碎片合并;在批重组间隙主动整理内存,避免在计算高峰期执行导致延迟飙升。

深度优化:模型结构优化

模型结构优化的核心目标是降本提效,适合长期部署,需权衡精度损失。

  • 剪枝:以结构化剪枝为主,减少精度暴跌风险。

  • 可剪枝部分:Transformer 层的 FeedForward 网络剪枝部分冗余通道;Attention 层通过注意力权重热力图筛选,移除少量贡献度低的注意力头,对精度影响较小。

  • 避免剪枝部分:LayerNorm 和 Attention 的 Query/Key 投影层,这些层对语义理解至关重要,剪枝后精度损失较大。

  • 蒸馏:用小模型(如 7B 参数模型)学习大模型(如 13B 参数模型)的输出分布,实现小模型代替大模型推理,平衡精度与效率。

主要推理并行模型

从单机单卡到单机多卡,再到多节点集群,推理架构的每一次升级,都是为了突破前一阶段的资源瓶颈

单机单卡的瓶颈是显存容量与单卡算力,无法承载超大规模模型;单机多卡的瓶颈是跨卡通信效率,易因数据传输延迟降低性能;多节点集群的瓶颈是节点间扩展性,需解决分布式环境下的协同与负载均衡问题。

无论是处理千亿参数模型的容量超限问题,还是解决高并发请求下的阻塞等待问题,分布式推理服务的核心都建立在并行推理技术之上。不同并行模型的拆分对象、结果聚合方式、通信依赖度和适用场景存在显著差异,需根据模型规模、请求特征和硬件环境选择。

张量并行(Tensor Parallelism)

  • 核心逻辑:将模型单层内的参数与计算过程拆分到多张卡,聚焦解决单卡显存无法容纳单层大参数的问题。

  • 技术细节:以最典型的 Linear 层为例,假设权重矩阵维度为(in_dim, out_dim),会将其沿 out_dim 维度拆分为 N 份(N 为卡数)。每张卡仅存储对应份额的权重,计算时同步接收相同的输入数据,各自完成“输入 × 本地权重”的矩阵乘法,最后通过 NVLink 或 PCIe 进行跨卡通信,将所有卡的中间结果拼接为完整输出。

  • 适用场景:参数规模极大的单层模型,如千亿参数大模型的 Transformer 层;不适合计算量小、通信频繁的浅层模型,否则通信开销会抵消并行收益。

流水线并行(Pipeline Parallelism)

  • 核心逻辑:将模型按“层”划分为多个连续阶段(Stage),每个阶段由 1 张或多张卡负责,通过接力计算形成流水线,提升整体吞吐量。

  • 技术细节:以 60 层 Transformer 模型为例,可按层序拆分为 3 个阶段,每个阶段包含 20 层。计算时,输入数据先由卡 1 完成“层 1-20”的推理,将输出传递给卡 2;卡 2 同步处理“层 21-40”,再传递给卡 3 处理“层 41-60”。为避免流水线空置,会引入微批次(Micro-batch)机制,让多个微批次在不同阶段并行流转,减少等待时间。

  • 适用场景:层数极多的深度模型(如超百层的 CV 或 NLP 模型);不适合层数少的模型,否则阶段划分过粗,流水线优势无法体现。

数据并行(Data Parallelism)

  • 核心逻辑:让多节点或多卡同时处理不同批次的输入数据,通过“批量并行”提升单位时间内的请求处理量,聚焦解决高并发场景下吞吐量不足的问题。

  • 技术细节:无需拆分模型结构,每个计算节点或卡都保存完整的模型参数。例如,集群包含 3 个计算节点,当接收 9 个请求时,会将其分为 3 个批次(每批次 3 个请求),3 个节点同时独立处理 1 个批次,推理完成后直接输出各自批次的结果,无需跨节点合并。

  • 适用场景:高并发的在线推理场景(如推荐系统、语音识别);要求每个节点/卡的显存能容纳完整模型,不适合超大规模单模型。

专家并行(MoE Parallelism)

  • 核心逻辑:仅针对 MoE(混合专家)模型,将其 FFN 层拆分为多个独立专家,分散到多节点多卡,每个请求仅激活部分专家参与计算,兼顾模型规模与推理效率。

  • 技术细节:MoE 模型的 FFN 层包含数十甚至上百个专家,推理时先通过门控网络判断当前请求需要激活哪些专家(通常仅激活 10%-20%)。这些专家分散在不同节点的卡上,门控网络会将请求数据路由到对应专家所在的硬件,专家计算完成后,再将结果汇总输出,未激活的专家不参与计算。

  • 适用场景:超大规模 MoE 模型(如 GPT-4 MoE 版本);需配合高效的路由与通信机制,否则专家间的数据调度会增加延迟。

推理服务分层架构

推理服务从模式上看是一个在/离线混合的 Web 应用,它的不同功能模块具有不同的资源偏好,因此,分布式推理服务适合垂直拆分的分层架构。

核心分层模块

分布式推理服务以“用户请求-任务调度-推理计算-结果返回”为核心处理路径,采用“接入层-调度层-计算层”三层业务架构,而“存储层”作为共享层,为会话保持、模型加载、队列恢复及数据缓存提供支撑。

  • 接入层:接入层作为客户端与服务器的直接交互节点,承担双向数据流转职责。它负责接收客户端发起的推理请求,并将其转发给调度层,同时接收计算层反馈的计算结果,最终将整理后的推理结果回传给客户端,实现请求与响应的闭环。

  • 调度层:调度层是推理任务的核心决策环节,主要负责三项关键工作。首先,读取模型结构以识别任务类型、参数规格及分块策略;其次,依据预设优先级规则对任务进行分组排队,并结合计算层资源使用情况,动态确定任务执行批次;最后,调用计算层节点,协同完成推理迭代过程。

  • 计算层:计算层是推理计算的实际执行载体,以模型为核心构建运行能力。它先加载模型文件生成推理引擎实例,再向调度层实时上报节点资源用量;在接收调度层的任务分派后,利用本地算力完成分配的计算任务,一方面将结果推送至接入层,另一方面根据调度策略,将结果写入存储层进行缓存备份。

  • 存储层:存储层包含持久化存储与分布式缓存能力,为全流程提供数据支撑。具体存储内容如多版本模型文件、调度任务队列快照、计算结果快照及用户会话缓存等,既满足各层级的数据调用需求,也能在服务异常时,通过数据快照实现队列与结果的恢复。

连接会话保持

推理任务的异步调度特性,推理结果的计算耗时与输出容量的不可控性,传统的同步响应模式难以适配推理服务的需求场景。因此,客户端与接入层之间一般采用长连接的方式:

  • 一方面可以节省多轮交互的重复建连开销,提升通信效率;

  • 另一方面也契合大模型逐 Token 生成的流式输出特性,将生成的内容连续推给前端,优化用户体验。

接入层的节点是无状态的,但用户的会话是有状态的。用户会话的状态数据主要有两类:

  • 一是会话交互的过程信息,如问答历史,为下一次推理提供历史上下文;

  • 二是会话交互的通道信息,如连接状态与端点,让计算层能反查任务的接入节点,将结果推回客户端。

在异常恢复场景,接入层节点故障与客户端断线重连在表现是一致的——都是客户端与新的接入节点重新建立连接。实现会话保持的关键在于为每次会话分配一个唯一标识(SessionID),由客户端在会话存续的请求中携带以保持黏性。而实现会话恢复的核心是数据存储的外部性,通过引入分布式缓存保存会话状态,从而在客户端连接转移时不影响会话交互的连续性。会话迁移恢复示意如下图。

调度服务集群

调度是计算密集型任务,工作信息通常不适合放在外部存储,否则会大大降低调度效率。

如果采用每个调度器各自调度的独立调度模式,各节点的局部信息与全局资源的统一分配存在天然矛盾,需要通过互斥机制来保障资源分配的准确性,例如资源竞争锁资源预分配等方式。不过,锁竞争会带来性能劣化,预分配可能会降低资源利用率。除此之外,局部调度也难满足全局队列的要求,调度节点故障仍然要考虑工作恢复。

所以,调度器从单节向集群扩展时,一般优先采用主调度模式

  • 选举一个主调度器,负责所有任务的排序和资源分配,接入层通过注册配置中心获取当前主节点信息,建立连接后提交推理任务;

  • 主调度器故障后由其他节点重新选主接续,对于选举中间态或接入层旧连接,可以通过自定义协议引导接入层重新连接正确的主节点。

主调度模式在保持了本地调度性能的前提下解决了高可用问题,但也存在单点性能瓶颈。对于超大规模推理服务,可能无法仅通过提升调度节点规格来支撑业务的推理量级,再者,主从模式存在资源闲置(从节点),节点规格越高,资源浪费也就越多。

垂直扩展受限的情况下,可以考虑水平扩展,也就是分组调度模式

  • 采用分治的思想,调度服务从一个大主从集群拆成多个小主从集群,每个小集群承担一部分任务调度工作。假设拆为 N 个分组,则相较单主调度模式吞吐量可提升 N 倍。

  • 增加调度管理服务,负责任务分配和迁移。接入层不直接从注册配置中心查询主调度节点信息,而是从调度管理服务获取任务所属分组。调度管理服务对外提供统一接口,可以屏蔽分配细节,在上层无感的情况下变更调度策略,例如扩展优先队列、绑定调度组、增加调度资源等。

计算分配模式

计算节点获取任务有推拉两种模式。

  • 拉模式:指计算节点空闲时主动向调度节点拉取可运行的任务。

  • 推模式:指调度节点根据任务特征和空闲资源主动给计算节点分配任务。

推理任务是自回归的,其特点之一是前向数据依赖,即前述引入 KVCache 的原因。假设推理计算时前序 Token 的 KVCache 不在同一节点,则会导致 KV 数据在跨节点间传输,极大影响计算效率。所以,推理任务和计算节点之间存在黏性,一个推理任务最好由一个计算节点完成,任务分配一般采用推模式。

推模式依赖调度节点对计算节点资源状态的精准把控,若调度节点感知资源存在延迟,可能导致任务分配不均。此外,在分组调度模式下,如果计算节点不进行分组,存在与独立调度模式类似的资源竞争问题。所以,对于大规模推理任务的分治,既包括调度,也包括计算。

在推模式下,计算节点离线由调度节点感知,调度节点可以将分配给它的任务转移给其他计算节点执行。计算任务的高可用除了计算能力的转移,更重要的是计算数据的恢复,即 KVCache 的高可用。

KVCache 需要加载到显存才能直接使用,显存数据随计算节点的故障而消亡,所以故障恢复必然会依赖外部数据,从而自然地引出 KVCache 的分层存储架构。

  • 本地显存:KVCache 缓存在计算节点的本地显存,调度节点根据缓存所在机器分配计算任务。调度服务也可以根据计算节点的负载主动迁移计算任务,跨节点显存数据传输一般基于硬件原生通信协议,跳过复杂软件抽象,直接在节点间 GPU 层面传输 KVCache 数据,如 NVLink/NVSwitch、IB、RoCE 等。

  • 分布式缓存:计算节点可以主动将 KVCache 快照推到外部存储,用于计算任务的迁移,也可以在节点显存不足时将部分 KVCache 卸载到远程存储,以部分性能换取“内存扩容”。

  • 持久化存储:对于高频问题、常识问题及提取的记忆数据,可以将 KVCache 保存到持久化文件中,用于跨用户、跨会话的缓存复用。

附录:推理服务框架参考

  1. vLLM

  • 核心特性:开源分布式推理框架,基于 PagedAttention 技术优化 KV 缓存,支持动态批处理和异步调度,实现高吞吐低延迟;兼容 Hugging Face 模型生态,支持 GPTQ/AWQ 等量化方案,支持多 GPU 分布式部署,千亿参数模型友好。

  • 适用场景:企业级高并发在线推理(如智能客服、文档处理、API 服务),对延迟和吞吐量有严格要求的场景。

  • 依赖与限制:依赖 NVIDIA GPU(A100/H100/H20 等)及 CUDA 环境,硬件成本高;代码架构较复杂,定制开发需一定技术门槛。

  1. Ollama

  • 核心特性:开源跨平台(Windows/macOS/Linux),一键安装无复杂配置;底层复用了 llama.cpp 的核心推理逻辑,内置 1700+ 预训练模型(默认 int4 量化),显存需求低;支持完全离线运行,数据隐私可控,提供简单 CLI 和 UI 界面,模型管理便捷。

  • 适用场景:个人开发者原型验证、教育演示、本地轻量推理,以及数据隐私要求高的小规模场景(如本地文档问答、个人助手)。

  • 依赖与限制:高并发场景下性能瓶颈明显;扩展性弱,插件生态不完善,不适合大规模在线部署。

  1. SGLang

  • 核心特性:开源轻量级推理框架,通过 RadixAttention 优化前缀共享与缓存策略,吞吐量极高;支持结构化数据解析(如 JSON),模块化架构易扩展,兼容主流 LLM(Llama/GPT 系列),支持流式输出。

  • 适用场景:金融/医疗/搜索领域的高并发实时推理,结构化数据查询、API 服务等场景。

  • 依赖与限制:仅支持 Linux 平台,跨平台兼容性不足;多模态任务支持较弱,生态处于起步阶段。

  1. LMDeploy

  • 核心特性:开源推理部署工具链,支持国产 GPU(华为昇腾)与 NVIDIA GPU 双平台优化;对视觉-语言多模态模型(如 LLaVA)适配性强,支持量化、张量并行等优化,兼容 Hugging Face 生态。

  • 适用场景:国内企业/机构的国产 GPU 部署场景,多模态交互(图文问答)、视觉语言任务推理。

  • 依赖与限制:更新迭代速度较慢;分布式高并发处理能力需进一步优化,部分特性对国产 GPU 依赖度高。

  1. Hugging Face TGI(Text Generation Inference)

  • 核心特性:开源推理服务框架,专为 Hugging Face 模型优化;支持 RESTful/OpenAI 兼容 API,内置连续批处理、流式输出、量化(GPTQ/AWQ);生态成熟,无缝集成 Hugging Face Hub 模型,部署简单。

  • 适用场景:企业级云端推理 API、生产级文本生成服务,需要快速集成现有 LLM 生态的场景。

  • 依赖与限制:极端高并发场景下,定制化优化能力弱于 vLLM 等专用框架;部分高级特性需配合 Hugging Face 生态工具。

  1. TensorRT-LLM

  • 核心特性:NVIDIA 开源的 LLM 推理优化框架,基于 TensorRT 实现层融合、量化(FP8/INT4)、KV 缓存优化,可实现极致低延迟高吞吐量;支持多 GPU 分布式推理,兼容主流 LLM(Llama/GPT/PaLM)。

  • 适用场景:大规模实时推理服务、对性能要求极致的企业级应用(如在线 AI 助手、实时内容生成)。

  • 依赖与限制:仅限 NVIDIA CUDA 平台,依赖高端 NVIDIA GPU;预编译过程可能产生冷启动延迟,跨平台部署受限。

发布于: 1 小时前阅读数: 10
用户头像

陈一之

关注

靡不有初,鲜克有终 2017-10-19 加入

让时间流逝

评论

发布
暂无评论
大模型推理服务架构_大模型_陈一之_InfoQ写作社区