Model or dataset
alibaba/rtp-llm avatar
alibaba/rtp-llm

RTP-LLM: Alibaba's Inference Engine, Read Through Its Own Documentation

RTP-LLM: Alibaba's high-performance LLM inference engine for diverse applications.

1,337 stars275 forksPythonApache-2.0

At a glance

What is it?
RTP-LLM is the inference engine Alibaba's Foundation Model Inference Team runs behind Taobao, Tmall and OpenSearch. The README lists the acceleration techniques but leaves the operational detail to rtp-llm.ai, so the honest question is whether that split works for an outside team.
Who is it for?
RTP-LLM is a reasonable candidate if you run Qwen-family or multimodal models on NVIDIA hardware, want GPTQ or AWQ weight-only quantisation, and are willing to treat rtp-llm.ai as the real documentation because the README is a feature list. It is the wrong tool if you need a single small dependency, if your models fall outside the supported families, or if you expect the GitHub repository alone to tell you how to deploy.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem RTP-LLM Solves, and for Whom

Serving a large language model is not the same task as running one. A single user gets acceptable latency from a straightforward forward pass. Hundreds of concurrent users with prompts of wildly different lengths do not, because the scheduler has to decide what to batch, how to lay out attention state in memory, and what to evict when the cache fills. RTP-LLM exists to answer those questions inside Alibaba's own traffic.

The README names the deployments: Taobao Wenwen, Alibaba's international AI platform Aidge, OpenSearch LLM Smart Q&A Edition, and a long-tail query rewriting system in Taobao Search that has an arXiv paper attached. That list is the most useful signal in the document. It tells you the engine was built for consumer-facing question answering and search rewriting at Alibaba scale, not for a research cluster running one model at a time.

So the audience is narrower than the topic tags suggest. The topics include llmops and model-serving, which pull in anyone running a model in production. But the feature list is written for an engineer who already has GPU capacity, a model checkpoint in HuggingFace or Megatron format, and a latency budget to defend. If you are choosing an engine for a weekend prototype, the production framing here adds weight without adding value.

The Architecture: C++ Scheduling, CUDA Kernels, Device Backends

The README's news section records a June 2024 refactor: the scheduling and batching framework was rewritten in C++, GPU memory management became complete, and a new device backend was introduced. That is the structural fact that matters most, and it is stated in one line among release announcements rather than in an architecture section.

What it implies is a split. The Python layer handles model loading, tokenisation and request handling, which is why the repository's primary language is listed as Python. The scheduling and batching decisions live in compiled code. Memory management for the KV cache is likewise not a Python object lifecycle problem in this design.

On top of that sit the kernels the README enumerates: PagedAttention, FlashAttention and FlashDecoding, plus weight-only INT8 quantisation applied automatically at load time, weight-only INT4 through GPTQ and AWQ, and adaptive KV cache quantisation. The acknowledgements section says the project is mainly based on FasterTransformer, with kernel implementations integrated from TensorRT-LLM, and that it draws inspiration from vLLM, transformers, LLaVA and Qwen-VL.

That lineage explains the shape of the thing. FasterTransformer contributed the multi-GPU tensor parallelism model. vLLM contributed the paged attention idea that the README credits as inspiration. The result is an engine that looks like FasterTransformer with a paged cache and a scheduler that was rewritten because the original was not fast enough for the batching overhead the team measured.

Prefill/Decode Separation and the Cache Features

The January 2025 news entry announces Prefill/Decode separation with a technical report. This is the most consequential capability in the list for anyone sizing hardware, because prefill is compute-bound and decode is memory-bandwidth-bound, and splitting them lets each phase run on hardware suited to it. The README does not describe the mechanism, the transport between the two phases, or what happens to the KV cache when it moves. It points at a technical report instead.

Alongside that sit three caching features: Contextual Prefix Cache for multi-turn dialogues, System Prompt Cache, and speculative decoding. The first two address a specific waste. A chat system resends the same system prompt on every turn, and a multi-turn conversation resends its own history. Caching the computed KV state for those prefixes avoids recomputing tokens that have not changed.

The distinction between the two cache types is worth noting. A system prompt is fixed and shared across every request that uses it, so the cache is effectively a shared artefact. A conversational prefix is per-session and grows. The README does not say how either is invalidated, how much memory they are allowed to occupy, or whether they survive a process restart. Those are the questions to bring to the documentation site, because the README will not answer them.

Getting It Running: Where the Instructions Actually Live

The README does not contain install commands. The Getting Started section is four links: Install RTP-LLM, Quick Start, Backend Tutorial, and Contribution Guide, all pointing at rtp-llm.ai. The performance section links to a benchmark tool at rtp-llm.ai/build/en/benchmark/benchmark.html. There is no pip install line, no Docker invocation, no sample config in the repository text supplied here.

That is a deliberate documentation strategy and it has a cost. The GitHub repository is the artefact you clone, but the instructions for building it live on a separate site. If you are evaluating the project from the repository alone, you cannot confirm the build prerequisites, the supported CUDA versions, or the Python version range. The README's claim that installation is documented elsewhere is all you have.

The one operational detail the README does give is model loading: it states integration with HuggingFace models and support for SafeTensors, PyTorch and Megatron weight formats. So the configuration surface you can infer is a model path plus a format, with quantisation applied at load time for INT8 and via GPTQ or AWQ checkpoints for INT4. Everything else, including how to enable Prefill/Decode separation or the prefix caches, has to come from the site. Treat the absence of a copy-pasteable quick start in the repository as a real friction point, not a cosmetic one.

Where the README Leaves You Guessing

Several claims are stated without a mechanism or a boundary. Multi-LoRA serving from a single model instance is listed under flexibility. The README does not say how many adapters, how they are selected per request, or what the memory cost is. Loading pruned irregular models is listed as an acceleration technique, with no indication of which pruning schemes produce loadable checkpoints.

The hardware story is the thinnest part. The README says the engine is specially optimised for the V100 GPU, a 2017 datacenter card. It also announces Qwen and BERT embedding support on Yitian ARM CPU, and lists AMD ROCm, Intel CPU and ARM CPU as multi-hardware support in development as of June 2024. In development is not the same as supported. If your fleet is H100 or A100, the README gives you no specific claim, only the generic kernel list.

The multimodal support is similarly one line: handles multimodal inputs combining images and text. Given that the acknowledgements credit LLaVA and Qwen-VL as inspirations, the likely scope is those model families, but the README does not commit to a list. If you need a different vision-language architecture, you are guessing.

None of this is unusual for a README. It is a problem only if you treat it as the specification.

How It Differs from vLLM

vLLM appears in RTP-LLM's acknowledgements as an inspiration, which makes the comparison fair rather than adversarial. The two projects overlap on the core idea: paged KV cache, continuous batching, a kernel layer tuned for attention.

The difference is in what surrounds the core. vLLM is Python-first, and its scheduler runs in Python, which makes it straightforward to read, patch and extend. RTP-LLM moved scheduling and batching into C++ in the June 2024 refactor, explicitly to cut dynamic batching overhead at the framework level. That is a performance argument with a maintenance cost: contributing a scheduler change means working in compiled code, and the README's contribution guide link suggests the project knows this.

The second difference is deployment context. RTP-LLM's production references are all Alibaba properties, and its optimisation target named in the README is the V100. vLLM's development is driven by a broad community across newer hardware. If you are on V100s and running Qwen models, RTP-LLM's stated focus lines up with your situation. If you are on newer accelerators and want the largest pool of people who have hit your exact error message, the calculus changes.

The third difference is documentation shape. vLLM's repository carries its own quick start. RTP-LLM's does not.

Licence, Releases and the Cost of Upgrading

The licence is Apache-2.0, the same licence vLLM uses. That permits commercial use and modification, and it includes a patent grant. It does not give legal advice, and if you are embedding the engine in a product you should read the LICENSE file in the repository rather than this paragraph.

The release cadence visible here is uneven. v0.1.12 and v0.1.13 landed eight days apart in April 2024. Then nothing until v0.2.0 in October 2025, roughly eighteen months later. The README's news entries for January 2025 and September 2025 sit between those tags, so development continued while tagged releases did not. The last push recorded is September 2026.

For an operator, that pattern has a specific consequence. If you pin v0.1.13, you are pinning code from before the Prefill/Decode separation work and before the Yitian ARM support. Moving to v0.2.0 means crossing all of that at once, including the C++ scheduler rewrite if you were on an older tag still. The README describes v0.2.0 as bringing enhanced performance and new features without enumerating breaking changes. Read the release notes before you plan that jump.

The maintenance cost beyond upgrades is harder to assess from the material. The project depends on CUDA kernels and a compiled scheduler, so a build environment that can produce those is a prerequisite you carry. The README does not state supported CUDA or compiler versions.

Editorial conclusion

RTP-LLM is a reasonable candidate if you run Qwen-family or multimodal models on NVIDIA hardware, want GPTQ or AWQ weight-only quantisation, and are willing to treat rtp-llm.ai as the real documentation because the README is a feature list. It is the wrong tool if you need a single small dependency, if your models fall outside the supported families, or if you expect the GitHub repository alone to tell you how to deploy. Before committing, open the install and quick start pages, confirm the v0.2.0 release notes match the version you plan to pin, and check the repository layout for the C++ scheduling code and the device backend directory to see which hardware paths are actually present rather than announced.

Official sources

  1. alibaba/rtp-llm on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Community notes

Community notes