RBLN vLLM: A vLLM Plugin for RBLN NPU¶
RBLN vLLM (vllm-rbln) is a hardware plugin for vLLM. It runs large language model inference and serving on RBLN NPUs.
Installation¶
Install the latest rebel-compiler before installing RBLN vLLM.
Install RBLN vLLM from PyPI, or build it from source.
See the Release Notes for version information and changes.
PyPI install¶
Install the latest release with pip:
Source-code install¶
1. Clone the vllm and vllm-rbln repositories¶
The required vllm version may differ from the vllm-rbln version.
2. Install vllm¶
Set VLLM_TARGET_DEVICE=empty when building vLLM for RBLN NPUs.
Optional dependencies¶
Install the additional dependencies for the features you use.
KV Cache Offloading and Disaggregated Prefill / Decode¶
The kv_connectors extra installs nixl-rbln and lmcache-rbln, which KV Cache Offloading and Disaggregated Prefill / Decode require. These dependencies are not included in the default installation.
For a source-code install, run pip install -e '.[kv_connectors]' in the vllm-rbln directory.
Disaggregated Encoder¶
Disaggregated Encoder requires nixl in the Python environments that run the encoder and PD instances. Install it in addition to vllm-rbln:
Speech recognition¶
The audio extra installs the audio decoders required by Whisper and other models served through /v1/audio/transcriptions. Without these dependencies, the server starts, but the first transcription request fails.
For a source-code install, run pip install -e '.[audio]' in the vllm-rbln directory.
Design Overview¶
RBLN vLLM runs a model through one of two model implementations, vllm and transformers. These names are values of upstream vLLM's --model-impl option. The transformers implementation is also called optimum because the optimum-rbln package provides it. The implementations differ in model code, compilation workflow, workers, scheduling, and supported features. The Feature Matrix lists the feature support of each.
Both implementations compile the model with the RBLN Compiler (rebel-compiler) and cache the result, so a later run with the same configuration reuses it instead of compiling again. See Compile Cache for details.
| Aspect | vllm | transformers (optimum) |
|---|---|---|
| Model implementation source | vLLM's own model definitions | optimum-rbln |
| Compilation | At engine startup | At engine startup, or ahead of time with optimum-rbln |
| Multi-device | TP, PP, EP and DP across processes | RSD, inside one process |
| Devices | Rebel100™ | Rebel100™ and ATOM™ |
vllm¶
The model code comes from vLLM's own model definitions. The engine compiles it through torch.compile with the rbln backend at engine startup.
Multi-device execution uses vLLM's parallelism mechanisms: tensor parallelism (TP), pipeline parallelism (PP), expert parallelism (EP), and data parallelism (DP). See Model Parallelism for details.
transformers (optimum)¶
The model code comes from optimum-rbln, which provides an RBLN model class for each supported architecture, such as RBLNLlamaForCausalLM.
Set model to either a HuggingFace model ID or the path to a directory containing a model compiled separately with optimum-rbln. RBLN vLLM compiles the model at engine startup when given a model ID, or loads the compiled model when given a directory path.
Multi-device execution uses Rebellions Scalable Design (RSD), which lets the RBLN Compiler partition the model across devices rather than relying on vLLM-level model partitioning.
Model Implementation Selection¶
Choose the implementation with vLLM's --model-impl option, or with the model_impl argument of LLM().
| Value | Behavior |
|---|---|
auto (default) | Uses the transformers implementation if optimum-rbln supports the model's architecture, or the vllm implementation otherwise. |
vllm | Uses the vllm implementation. |
transformers (alias: optimum) | Uses the transformers (optimum) implementation. |
vllm serve --help shows upstream vLLM's description of --model-impl, which does not fully match its behavior in RBLN vLLM. In particular, auto in RBLN vLLM prefers transformers, whereas upstream's auto prefers vllm.
RBLN-specific options use the --rbln-* prefix. Each option applies to only one model implementation. Options that do not apply to the selected implementation are rejected when the engine configuration is built.
The environment variables replaced by --rbln-* options are deprecated. See the Configuration Guide for the affected VLLM_RBLN_* variables and which options to use instead.
Device support
The vllm model implementation runs on Rebel100™ only. On an ATOM™ host the engine raises an error naming the device, whether --model-impl vllm selected the implementation or auto resolved to it. Serving on ATOM™ therefore requires an architecture the transformers (optimum) implementation supports.
Features¶
RBLN vLLM feature guides:
- Feature Matrix
- Attention Modes
- Sampler Modes
- Prefix Caching
- Speculative Decoding
- KV Cache Offloading
- Model Parallelism
- Fine-Grained Device Assignment
- Dynamic Batch Sizes
- Profiling Guide
- Compile Cache
- Disaggregated Encoder
- Disaggregated Prefill / Decode
Supported Architectures¶
The tables below list the architectures RBLN vLLM supports, grouped by model implementation. The model architecture is specified in the checkpoint's config.json file.
vllm Implementation Architectures¶
These architectures run on the vllm model implementation, --model-impl vllm.
| Architecture | Recipe |
|---|---|
| GptOssForCausalLM | gpt-oss-120b |
| MiniMaxM2ForCausalLM | MiniMax-M2.7 |
| DeepseekV32ForCausalLM | DeepSeek-V3.2 |
| AXK2ForCausalLM | A.X-K2 |
transformers (optimum) Implementation Architectures¶
The tables are organized by device family. The Rebel100™ tab lists the architectures verified on Rebel100™. The ATOM™ tab lists every architecture the implementation supports.
Decoder-only Models¶
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| LlamaForCausalLM | RBLNLlamaForCausalLM | Llama-3.1-8B-Instruct |
| GemmaForCausalLM | RBLNGemmaForCausalLM | gemma-7b-it |
| Gemma2ForCausalLM | RBLNGemma2ForCausalLM | gemma-2-9b-it |
| PhiForCausalLM | RBLNPhiForCausalLM | phi-2 |
| OPTForCausalLM | RBLNOPTForCausalLM | opt-6.7b |
| GPT2LMHeadModel | RBLNGPT2LMHeadModel | gpt2 |
| MistralForCausalLM | RBLNMistralForCausalLM | Mistral-7B-Instruct-v0.3 |
| ExaoneForCausalLM | RBLNExaoneForCausalLM | EXAONE-3.5-7.8B-Instruct |
| Qwen2ForCausalLM | RBLNQwen2ForCausalLM | Qwen2.5-7B-Instruct |
| Qwen3ForCausalLM | RBLNQwen3ForCausalLM | Qwen3-8B |
| GptOssForCausalLM | RBLNGptOssForCausalLM | gpt-oss-20b |
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| LlamaForCausalLM | RBLNLlamaForCausalLM | Llama-3.1-8B-Instruct |
| GemmaForCausalLM | RBLNGemmaForCausalLM | gemma-7b-it |
| Gemma2ForCausalLM | RBLNGemma2ForCausalLM | gemma-2-9b-it |
| PhiForCausalLM | RBLNPhiForCausalLM | phi-2 |
| OPTForCausalLM | RBLNOPTForCausalLM | opt-6.7b |
| GPT2LMHeadModel | RBLNGPT2LMHeadModel | gpt2 |
| MistralForCausalLM | RBLNMistralForCausalLM | Mistral-7B-Instruct-v0.3 |
| ExaoneForCausalLM | RBLNExaoneForCausalLM | EXAONE-3.5-7.8B-Instruct |
| Qwen2ForCausalLM | RBLNQwen2ForCausalLM | Qwen2.5-7B-Instruct |
| Qwen3ForCausalLM | RBLNQwen3ForCausalLM | Qwen3-8B |
| Qwen3MoeForCausalLM | RBLNQwen3MoeForCausalLM | Qwen3-30B-A3B |
| GptOssForCausalLM | RBLNGptOssForCausalLM | gpt-oss-20b |
Encoder-Decoder Models¶
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| WhisperForConditionalGeneration | RBLNWhisperForConditionalGeneration | whisper-large-v3 |
Change
As of RBLN vLLM v0.10.1, V0 has been deprecated. Consequently, Whisper is now the only supported encoder–decoder model, and support for all other encoder–decoder models has been removed.
For more information, see the vLLM V1 User Guide.
Multimodal Language Models¶
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| LlavaNextForConditionalGeneration | RBLNLlavaNextForConditionalGeneration | llava-v1.6-mistral-7b-hf |
| Qwen2VLForConditionalGeneration | RBLNQwen2VLForConditionalGeneration | Qwen2-VL-7B-Instruct |
| Qwen2_5_VLForConditionalGeneration | RBLNQwen2_5_VLForConditionalGeneration | Qwen2.5-VL-7B-Instruct |
| Qwen3VLForConditionalGeneration | RBLNQwen3VLForConditionalGeneration | Qwen3-VL-8B-Instruct |
| Qwen3_5ForConditionalGeneration | RBLNQwen3_5ForConditionalGeneration | Qwen3.5-9B, Qwen3.6-27B |
| Idefics3ForConditionalGeneration | RBLNIdefics3ForConditionalGeneration | Idefics3-8B-Llama3 |
| Gemma3ForConditionalGeneration | RBLNGemma3ForConditionalGeneration | gemma-3-12b-it |
| Gemma4ForConditionalGeneration | RBLNGemma4ForConditionalGeneration | gemma-4-31B-it |
| Blip2ForConditionalGeneration | RBLNBlip2ForConditionalGeneration | blip2-opt-2.7b |
| PaliGemmaForConditionalGeneration | RBLNPaliGemmaForConditionalGeneration | paligemma-3b-mix-224 |
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| LlavaNextForConditionalGeneration | RBLNLlavaNextForConditionalGeneration | llava-v1.6-mistral-7b-hf |
| Qwen2VLForConditionalGeneration | RBLNQwen2VLForConditionalGeneration | Qwen2-VL-7B-Instruct |
| Qwen2_5_VLForConditionalGeneration | RBLNQwen2_5_VLForConditionalGeneration | Qwen2.5-VL-7B-Instruct |
| Qwen3VLForConditionalGeneration | RBLNQwen3VLForConditionalGeneration | Qwen3-VL-8B-Instruct |
| Qwen3_5ForConditionalGeneration | RBLNQwen3_5ForConditionalGeneration | Qwen3.5-9B, Qwen3.6-27B |
| Idefics3ForConditionalGeneration | RBLNIdefics3ForConditionalGeneration | Idefics3-8B-Llama3 |
| Gemma3ForConditionalGeneration | RBLNGemma3ForConditionalGeneration | gemma-3-12b-it |
| Gemma4ForConditionalGeneration | RBLNGemma4ForConditionalGeneration | gemma-4-31B-it |
| LlavaForConditionalGeneration | RBLNLlavaForConditionalGeneration | llava-1.5-7b-hf |
| Blip2ForConditionalGeneration | RBLNBlip2ForConditionalGeneration | blip2-opt-2.7b |
| PaliGemmaForConditionalGeneration | RBLNPaliGemmaForConditionalGeneration | paligemma-3b-mix-224 |
| PaliGemmaForConditionalGeneration | RBLNPaliGemmaForConditionalGeneration | paligemma2-3b-mix-224 |
| Exaone4_5_ForConditionalGeneration | RBLNExaone4_5_ForConditionalGeneration | EXAONE-4.5-33B |
Pooling Models¶
Not supported.
| Architecture | RBLN Model Class | Recipe |
|---|---|---|
| BertModel | RBLNBertModel | bge-base-en-v1.5 |
| XLMRobertaModel | RBLNXLMRobertaModel | bge-m3 |
| XLMRobertaForSequenceClassification | RBLNXLMRobertaForSequenceClassification | bge-reranker-v2-m3 |
| RobertaForSequenceClassification | RBLNRobertaForSequenceClassification | twitter-roberta-base-emotion |
| Qwen3ForSequenceClassification | RBLNQwen3ForCausalLM | Qwen3-Reranker-4B |
| Qwen3Model | RBLNQwen3Model | Qwen3-Embedding-4B |

