
RTP-LLM 是阿里巴巴智能引擎团队推出的大模型推理框架,支持了包括淘宝、天猫、闲鱼、菜鸟、高德、饿了么、AE、Lazada 等多个业务的大模型推理场景。RTP-LLM 与当前广泛使用的多种主流模型兼容,使用高性能的 CUDA kernel, 包括 PagedAttention、FlashAttention、FlashDecoding 等,支持多模态、LoRA、P-Tuning、以及 WeightOnly 动态量化等先进功能,已在众多 LLM 场景中得到实际应用与检验。
本篇文章介绍了 RTP-LLM 的整体架构,并着重分析了模型加载过程中的核心部分:模型的权重和配置文件。本文主要由社区用户 mingming 贡献,特此感谢其对项目的支持。
一、架构介绍
我们首先对 RTP-LLM,该系统由多个层次组成,从最外层的 InferenceApp
到最内层的 AsyncModel
,每一层都有特定的职责。

1.1 InferenceApp 和 FastAPI 服务
最外层是 InferenceApp
,其核心是一个基于 FastAPI
的异步服务。这一层负责接受外部的 HTTP 请求,并将请求传递给内部的推理服务器。
1.2 InferenceServer 和 InferenceWorker
InferenceServer
是实际处理推理请求的服务器,内部有多个 InferenceWorker
负责具体的任务。每个 InferenceWorker
包含一个 Pipeline
,包含了用于处理请求的异步模型 AsyncModel
。
二、异步模型 AsyncModel 的工作流程
AsyncModel
是整个系统的核心组件,负责具体的推理任务。它包含两个主要部分:Scheduler
和 ModelExecutor
。
2.1 接收请求
当 HTTP 请求到达时,系统会依次进行以下处理:
-
Prompt 构建:根据请求内容,构建推理所需的 prompt。
-
Tokenize:将 prompt 转换为模型可以理解的 token。
2.2 任务排队
处理完请求后,系统会将任务通过 model.enqueue
放入队列中,准备进行后续处理。
2.3 Decoder Engine
Decoder Engine
是异步推理的核心,包含两个部分:Scheduler
和 ModelExecutor
。
Scheduler
Scheduler
负责调度任务,它会从 waiting_streams
中选择需要处理的任务,并安排执行。在后台,Scheduler
会不断运行 step
函数:
-
Scheduler.schedule
获取 batch_query。 -
ModelExecutor.process
执行推理任务。
ModelExecutor
ModelExecutor
负责实际的模型执行过程:
-
Process BatchQuery:处理 batch_query。
-
Token Embedding:将 img token 转换为 img embedding。
-
CUDA 预测:将输入数据送入 CUDA 引擎进行预测。
2.4 执行推理
Decoder
&nb