Installation
Modes of operation
TRL supports two modes for integrating vLLM during training.Colocate mode (default)
In colocate mode, vLLM runs inside the trainer process and shares GPU memory with the training model. No separate server process is required, but memory contention on the training GPUs is possible.- GRPO
- RLOO
- OnlineDPO
- NashMD
- XPO
Server mode
In server mode, vLLM runs as a separate process on dedicated GPUs and communicates with the trainer over HTTP. This is ideal when you have GPUs dedicated to inference.1
Start the vLLM server on dedicated GPUs
In this example, GPUs 0–3 serve the model with tensor parallelism across all 4 GPUs:
2
Write a training script with server mode enabled
- GRPO
- RLOO
- OnlineDPO
- NashMD
- XPO
3
Launch training on the remaining GPUs
How it works under the hood
When you runtrl vllm-serve --model <model_name>:
- vLLM spawns workers determined by
--tensor-parallel-size × --data-parallel-size. With--tensor-parallel-size 4, it spawns 4 workers. - Incoming prompts are distributed across workers. The model weights are split across GPUs according to
--tensor-parallel-size. - GPUs communicate via NVIDIA’s NCCL library to ensure each GPU processes its correct slice of the requests.
- The trainer sends prompts to the server; the server generates completions via
vllm_client.generate. - Completions are used to compute the reward signal and the training loss.
- After the backward pass, the trainer pushes updated weights to the server via
vllm_client.update_named_param.
The vLLM server handles only generation — it does not train the model. Updated weights are pushed from the trainer to the server after each backward pass.
Server configuration reference
Alltrl vllm-serve arguments:
Transformers backend
vLLM can use the Transformers backend for model implementations, including vision-language models (VLMs):vllm_model_impl="transformers" in your trainer config or pass it as a CLI argument. See the vLLM Transformers Backend blog post for details.