Model or dataset
triton-inference-server/tensorrtllm_backend avatar
triton-inference-server/tensorrtllm_backend

tensorrtllm_backend: a Triton backend that is now mostly a pointer

The Triton TensorRT-LLM Backend

944 stars146 forksUnknownApache-2.0

At a glance

What is it?
The repository that used to hold the Triton TensorRT-LLM backend has moved its C++ source and tests into the TensorRT-LLM tree. What remains is documentation, a Python LLM API path, and a set of YAML files you configure before launching Triton.
Who is it for?
Adopt this if you already run Triton Inference Server and want TensorRT-LLM models behind the same HTTP and gRPC surface as your other models, and if you are willing to track two repositories instead of one. Do not adopt it if you need a self-contained backend tree you can vendor, because the README states the C++ source and tests now live under triton_backend in the TensorRT-LLM repository.
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 last received commits 29 days ago.
What is it written in?
GitHub does not report a main language for this repository.

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

What this repository is responsible for after the source move

The README opens with a note that the Triton backend source code and tests have been moved to TensorRT-LLM under the triton_backend directory. That single sentence changes what this repository is. It is no longer the place where the inflight batching C++ implementation lives, even though the README still points readers at the inflight_batcher_llm directory as the location of that implementation. The stated goal is unchanged: let you serve TensorRT-LLM models with Triton Inference Server. The audience is narrow and specific. You need Triton already, you need NVIDIA GPUs, and you need a reason to prefer Triton's model repository and endpoint conventions over a plain Python server. If you are serving a single model for one application, the container and the launch script described here are more machinery than the job requires.

The two paths: PyTorch backend with LLM API, or a compiled engine

The README documents a PyTorch backend path built on the LLM API, and the tagline for it is direct: serve any HuggingFace model with no engine compilation required. That is the path the Getting Started section walks through end to end. The older route, compiling a TensorRT-LLM engine and loading it through the inflight_batcher_llm model directory, is referenced through the table of contents entries for model config and model deployment rather than spelled out in the excerpt. The distinction matters for planning. The LLM API path trades away explicit engine build control in exchange for pointing a YAML file at a HuggingFace model ID. The engine path gives you a build step you own. The README does not present these as equivalent, and the ordering of the document suggests the LLM API path is the one NVIDIA expects new users to take.

Configuration is one YAML file that maps to LLM() arguments

The configuration surface for the LLM API path is a single file: TensorRT-LLM/triton_backend/all_models/llmapi/tensorrt_llm/1/model.yaml. The README states that all keys in model.yaml map directly to LLM() constructor arguments, and links to the TensorRT-LLM LLM API documentation. The example given is a one-line change, setting model to TinyLlama/TinyLlama-1.1B-Chat-v1.0, or to a local path. The README also says this is where you configure KV cache, quantization, parallelism, and more. That phrasing is doing a lot of work. It means the backend itself does not define a separate configuration vocabulary you can read in this repository. The authoritative key list lives in the TensorRT-LLM documentation, and the version of that documentation has to match your container tag. For gated models such as Llama, the README gives one concrete step: export HF_TOKEN before launching.

Launching the server, and the working-directory trap

The container is pulled from NGC, for example nvcr.io/nvidia/tritonserver:25.12-trtllm-python-py3, with the README telling you to replace 25.12 with the latest tag from the NGC catalog. The run command passes --net host, --shm-size=2g, --ulimit memlock=-1, --gpus all, and mounts ~/.cache/huggingface so model weights survive container restarts. Inside, you clone TensorRT-LLM and edit the model.yaml. Then you launch with python3 TensorRT-LLM/triton_backend/scripts/launch_triton_server.py --model_repo=TensorRT-LLM/triton_backend/all_models/llmapi/. The README flags an important detail in a callout: run from the directory where you ran git clone, the parent of TensorRT-LLM, not from inside it. Running from inside produces ModuleNotFoundError: No module named 'tensorrt_llm.bindings'. That is a real failure mode with a documented cause, and it is the kind of thing that costs an afternoon if you skim. Once the server is up, a request goes to localhost:8000/v2/models/tensorrt_llm/generate with a JSON body containing text_input and sampling_param_max_tokens.

Request cancellation is a second POST, not a connection close

The cancellation mechanism is worth reading closely because it is not the usual one. To cancel, you send a second request with stop set to true and the same request_id as the original. The README's example starts a long generation with the header triton-request-id: my-req-1 and a max token count of 500, then sends the cancellation POST. This means the request identity is carried in a Triton header rather than inferred from the transport. If your client code does not propagate that header, or if you generate a fresh identifier per call, cancellation will not reach the original request. The README does not describe what happens to partially generated output on the first request, and it does not state a timeout after which a cancelled request is guaranteed to have stopped consuming GPU time. Treat those as questions to answer against your own deployment rather than documented guarantees.

Deployment features the table of contents promises, and what the excerpt does not show

The table of contents lists a substantial set of capabilities: multi-instance support with leader and orchestrator modes, multi-node support, tensor, pipeline and expert parallelism, MIG support, scheduling, KV cache handling, decoding modes including top-k, top-p, beam search, Medusa, ReDrafter, Lookahead and Eagle, speculative decoding, chunked context, quantization, and LoRA. There are also sections for launching within Slurm clusters, Triton metrics, benchmarking, and testing. None of this detail appears in the excerpt, so the honest position is that the feature list is asserted by the document structure and not verifiable from the material at hand. What is verifiable is the shape of the repository: a documentation-heavy front door that routes you into TensorRT-LLM for the implementation and into the LLM API reference for the configuration keys. If you are evaluating whether a specific decoding mode works with a specific model, this README will not answer that. You will be reading the TensorRT-LLM documentation.

The alternative: serving TensorRT-LLM without Triton in front

The clearest alternative is to run TensorRT-LLM's own serving path directly and skip Triton entirely. The difference is architectural, not cosmetic. With Triton in front, your model becomes one entry in a model repository, requests arrive at the standard /v2/models/<name>/generate endpoint, request identity travels in the triton-request-id header, and cancellation is a second POST with stop set to true. Without Triton, you own the HTTP layer, the request identifier scheme, and the cancellation semantics yourself. That is worth doing when Triton's model repository abstraction buys you nothing, for instance when you serve exactly one model and have no other Triton models to co-host. It is the wrong trade when you already have Triton deployments, because you would be reimplementing endpoint conventions that your clients already speak. The repository's own structure reflects this: the LLM API path exists precisely so that the thing Triton adds can be a thin layer over a HuggingFace model ID.

Licence, maintenance and the two-repository tracking cost

The repository is Apache-2.0, and the README carries an NVIDIA copyright header covering 2024 through 2026 with the standard redistribution and warranty disclaimer clauses. That header governs the README file itself. The backend source now lives in TensorRT-LLM, which has its own licence terms, so anyone auditing the full dependency chain has two licences to read rather than one. This is not legal advice; read both licences against your distribution model. On maintenance: there are no releases retrieved for this repository, and the README states plainly that source and tests moved elsewhere. The practical consequence is that upgrades are container-tag upgrades. You pin a tag such as 25.12-trtllm-python-py3, and the model.yaml keys you can use are the ones that match the TensorRT-LLM version inside that tag. Bumping the tag without re-reading the LLM API documentation is the most likely way to break a working deployment, because the key set is defined outside this repository.

Editorial conclusion

Adopt this if you already run Triton Inference Server and want TensorRT-LLM models behind the same HTTP and gRPC surface as your other models, and if you are willing to track two repositories instead of one. Do not adopt it if you need a self-contained backend tree you can vendor, because the README states the C++ source and tests now live under triton_backend in the TensorRT-LLM repository. Before committing, verify the model.yaml key set against the LLM() constructor arguments for your pinned container tag, and confirm that launch_triton_server.py is being invoked from the parent of the TensorRT-LLM clone.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. triton-inference-server/tensorrtllm_backend on GitHub
Community notes

Community notes