alibaba/rtp-llm · 上手攻略
- 仓库:alibaba/rtp-llm
- 链接:https://github.com/alibaba/rtp-llm
- 分类:ai
- 作者:Jay
- 更新:2026-08-22
这是什么
RTP-LLM(Real-Time Prefill-Decode LLM)是阿里巴巴大模型推理团队开发的高性能 LLM 推理加速引擎,脱胎于 FasterTransformer,在其基础上融合了 TensorRT-LLM 的部分 CUDA kernel 实现,并参考了 vLLM 的 PagedAttention 等设计。该项目已在阿里内部广泛落地,支持淘宝问问、淘宝搜索、Lazada、AE 等多个业务线,服务用户量级超过 1 亿。
0.2.0 版本(2025 年 9 月)包含 Prefill/Decode 分离、多模态支持、多机多卡张量并行等能力,是面向工业级部署的完整推理框架。
解决什么问题
大模型推理有三个核心瓶颈:GPU 内存效率(KVCache 管理)、计算吞吐(Attention kernel 优化)、多卡/多机并行效率。RTP-LLM 从底层 CUDA kernel 到上层调度框架做了一体化优化,目标是让 Qwen、DeepSeek 等开源模型的推理性能达到生产级别,同时保持部署灵活性(pip / Docker / Kubernetes 多路径)。
快速安装
方式一:pip(最简)
pip install --upgrade pip
pip install "rtp_llm>=0.2.0"
方式二:源码编译
前提:Linux + Python 3.10 + NVIDIA GPU(计算能力 7.0+,即 RTX 20xx 及以上 / V100 / A100 / H100 等)+ bazelisk。
# 克隆仓库(使用最新 release 分支)
git clone git@github.com:alibaba/rtp-llm.git
cd rtp-llm
# 编译(NVIDIA GPU,CUDA 12.6)
bazelisk build //rtp_llm:rtp_llm \
--verbose_failures \
--config=cuda12_6 \
--test_output=errors \
--test_env="LOG_LEVEL=INFO" \
--jobs=64
# 建立 proto 文件软链
ln -sf "$(pwd)"/bazel-out/k8-opt/bin/rtp_llm/cpp/model_rpc/proto/model_rpc_service_pb2_grpc.py \
"$(pwd)"/rtp_llm/cpp/model_rpc/proto/
ln -sf "$(pwd)"/bazel-out/k8-opt/bin/rtp_llm/cpp/model_rpc/proto/model_rpc_service_pb2.py \
"$(pwd)"/rtp_llm/cpp/model_rpc/proto/model_rpc_service_pb2.py
方式三:Docker(推荐用于 DeepSeek / Kimi-K2 / QwenMoE)
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v /mnt:/mnt \
-v /home:/home \
--ipc=host \
ali-hangzhou-hub-registry.cn-hangzhou.cr.aliyuncs.com/isearch/rtp_llm_sm8x_opensource:0.2.0_0.2.0_2025_10_09_17_35_8fa289f5 \
/opt/conda310/bin/python -m rtp_llm.start_server \
--checkpoint_path=/mnt/nas1/hf/models--Qwen--Qwen1.5-0.5B-Chat/snapshots/6114e9c18dac0042fa90925f03b046734369472f/ \
--model_type=qwen_2 \
--start_port=30000
更多 Docker 镜像版本见 RTP-LLM Release 页面。
核心用法
启动服务(Python)
from rtp_llm.utils.util import wait_sever_done
import subprocess
port = 8090
server_process = subprocess.Popen([
"/opt/conda310/bin/python", "-m", "rtp_llm.start_server",
"--checkpoint_path=/path/to/model/",
"--model_type=qwen_2",
f"--start_port={port}"
])
wait_sever_done(server_process, port)
curl 请求
curl -X POST http://localhost:8090/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "What is the capital of France?"}
]
}'
Python Requests
import requests
port = 8090
url = f"http://localhost:{port}/v1/chat/completions"
response = requests.post(url, json={
"messages": [{"role": "user", "content": "What is the capital of France?"}]
})
print(response.json())
OpenAI Python 客户端(兼容 OpenAI API 格式)
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8090/v1/chat/completions",
api_key="None" # RTP-LLM 不强制要求 API key
)
response = client.chat.completions.create(
model="qwen/qwen2.5-0.5b-instruct",
messages=[{"role": "user", "content": "List 3 countries and their capitals."}],
temperature=0,
max_tokens=64
)
print(response)
流式输出
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8090/v1/chat/completions", api_key="None")
stream = client.chat.completions.create(
model="qwen/qwen2.5-0.5b-instruct",
messages=[{"role": "user", "content": "List 3 countries and their capitals."}],
temperature=0, max_tokens=64, stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
核心优化技术
RTP-LLM 的技术栈涵盖以下工业级优化(参考 arXiv:2605.29639v1):
- PagedAttention + FlashAttention + FlashDecoding:高性能 CUDA attention kernel,支持 vLLM 风格的显存管理
- WeightOnly INT8/INT4 量化:加载时自动 INT8 量化;INT4 支持 GPTQ / AWQ 量化权重
- 自适应 KVCache 量化:动态调整 KVCache 精度,减少显存占用
- Prefill/Decode 分离:将预填充和解码阶段分到不同实例处理,适合长上下文场景
- 动态批处理开销优化:框架层面精细化调度,降低 padding 开销
- 多 LoRA 单实例:一份模型权重同时服务多个 LoRA adapter,降低资源占用
- 多模态:支持图文混合输入(参考 LLaVA、Qwen-VL)
- Prefix Cache:多轮对话场景复用 system prompt 的 KVCache
- Speculative Decoding:投机解码加速生成
- 多机多卡张量并行:LeaderWorkerSet 方案,支持 TP=8 等大规模部署
Kubernetes 部署(生产级)
单实例 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: Qwen1.5-0.5B-Chat
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: Qwen1.5-0.5B-Chat
template:
spec:
containers:
- name: rtp-llm
image: ali-hangzhou-hub-registry.cn-hangzhou.cr.aliyuncs.com/isearch/rtp_llm_sm8x_opensource:0.2.0_0.2.0_2025_10_09_17_35_8fa289f5
command: ["/opt/conda310/bin/python", "-m", "rtp_llm.start_server",
"--checkpoint_path", "/mnt/models/Qwen1.5-0.5B-Chat/",
"--model_type", "qwen_2", "--start_port", "30000"]
resources:
limits:
nvidia.com/gpu: "1"
memory: "20G"
volumeMounts:
- name: shm
mountPath: /dev/shm
volumes:
- name: shm
emptyDir:
medium: Memory
sizeLimit: 2Gi
大模型多节点部署(LeaderWorkerSet)
部署 Qwen3-Coder-480B-A35B(TP=8,2 个节点各 4 卡):
apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
name: Qwen3-Coder-480B-A35B-Instruct
spec:
replicas: 1
leaderWorkerTemplate:
size: 2
restartPolicy: RecreateGroupOnPodRestart
leaderTemplate:
spec:
containers:
- name: rtp-llm
image: ali-hangzhou-hub-registry.cn-hangzhou.cr.aliyuncs.com/isearch/rtp_llm_sm8x_opensource:0.2.0_0.2.0_2025_10_09_17_35_8fa289f5
resources:
limits:
nvidia.com/gpu: "4"
memory: "800G"
workerTemplate:
spec:
containers:
- name: rtp-llm
resources:
limits:
nvidia.com/gpu: "4"
memory: "800G"
⚠️ Docker 镜像托管在阿里云内网 registry(
ali-hangzhou-hub-registry.cn-hangzhou.cr.aliyuncs.com),公网访问可能受限;可尝试代理或参考 RTP-LLM Release 查找公网镜像。
坑与注意
- 阿里云内网镜像:官方 Docker 镜像在阿里云内网 registry,公网可能拉不到;需要 VPN 或配置镜像代理
- Bazel 编译环境:从源码编译需要 Bazelisk、CUDA、cuDNN 等全套 GPU 开发环境,门槛较高;pip 安装是更务实的入门路径
- model_type 参数:必须与模型匹配(如
--model_type=qwen_2),不同模型系列参数不同,参考后端教程 - 模型权重格式:支持 SafeTensors、PyTorch、Megatron 格式;从 HuggingFace 加载时路径写法需包含快照目录(如
models--Qwen--Qwen1.5-0.5B-Chat/snapshots/...) - GPU 显存:INT4 量化可在单卡(如 T4)运行大模型;FP16 通常需要 A100/H100 等大显存卡;裸机 4×A100 约 160GB 可运行 Qwen-72B FP16
- 多模态配置:多模态模型需要额外配置 ViT 路径,参考 OpenAI Vision API
与同类对比
| RTP-LLM | vLLM | TensorRT-LLM | |
|---|---|---|---|
| 开发方 | 阿里巴巴 | UC Berkeley / vLLM 团队 | NVIDIA |
| 核心基础 | FasterTransformer | PagedAttention | CUDA / TensorRT |
| 量化支持 | INT8 / INT4(GPTQ/AWQ) | INT8 / FP8 | INT8 / FP8 |
| Prefill/Decode 分离 | ✅ 原生支持 | ✅ | ✅ |
| 多模态 | ✅(LLaVA / Qwen-VL) | 有限 | ✅ |
| LoRA 多实例 | ✅ | ✅ | ✅ |
| 多机多卡 | ✅ LeaderWorkerSet | ✅ | ✅ |
| Kubernetes 原生 | ✅ | 需自行适配 | 需自行适配 |
| 开源生态 | 参考 vLLM/TRT-LLM | 主导 | NVIDIA 官方 |
RTP-LLM 处于 vLLM 和 TensorRT-LLM 之间的定位——比 vLLM 更贴近工业定制,比 TensorRT-LLM 更易部署和扩展。适合已有阿里内部工程能力、需要在 Kubernetes 环境中规模化部署 Qwen/DeepSeek 系列模型的团队。
一句话推荐结论
需要在 Kubernetes 环境大规模部署 Qwen/DeepSeek 系列模型、追求 Prefill-Decode 分离和量化优化、且团队有一定 CUDA 编译能力的,推荐评估 RTP-LLM;个人用户或快速实验场景优先用 vLLM。