RBLN vLLM: RBLN NPU용 vLLM 플러그인¶
RBLN vLLM(vllm-rbln)은 vLLM용 하드웨어 플러그인입니다. 리벨리온 NPU에서 LLM 추론과 서빙을 수행합니다.
설치 방법¶
RBLN vLLM을 설치하기 이전에 반드시 rebel-compiler 최신 버전을 설치해야 합니다.
RBLN vLLM은 PyPI에서 설치하거나 소스 코드를 직접 빌드하여 설치하는 두 가지 방법을 제공합니다.
최신 버전 및 변경 사항에 대한 자세한 내용은 릴리즈 노트에서 확인할 수 있습니다.
PyPI 설치¶
다음은 pip를 통해 최신 릴리즈를 설치하는 명령어입니다.
소스 코드 설치¶
1. vllm과 vllm-rbln 저장소 클론¶
필요한 vllm 버전은 vllm-rbln의 버전과 다를 수 있습니다.
2. vllm 설치¶
RBLN NPU용 vLLM을 빌드할 때 VLLM_TARGET_DEVICE=empty를 설정해야 합니다.
기능별 추가 패키지¶
사용할 기능에 필요한 의존성을 추가로 설치해야 합니다.
KV 캐시 오프로딩 및 Disaggregated Prefill / Decode¶
kv_connectors extra는 KV 캐시 오프로딩과 Disaggregated Prefill / Decode에 필요한 nixl-rbln, lmcache-rbln을 설치합니다. 기본 설치에는 포함되지 않습니다.
소스 코드로 설치하는 경우, vllm-rbln 디렉터리에서 pip install -e '.[kv_connectors]'를 실행합니다.
Disaggregated Encoder¶
Disaggregated Encoder를 사용하려면 인코더와 PD 인스턴스를 실행하는 Python 환경에 nixl이 필요합니다. vllm-rbln 외에 추가로 설치해야 합니다.
아키텍처 디자인¶
RBLN vLLM은 모델을 두 가지 model implementation, vllm과 transformers 중 하나로 실행합니다. 이 이름은 upstream vLLM --model-impl 옵션의 값입니다. transformers는 이를 제공하는 패키지가 optimum-rbln이라서 optimum이라고도 부릅니다. 두 구현은 모델 코드, 컴파일 방식, worker, 스케줄링, 지원 기능이 다릅니다. 구현별 기능 지원은 Feature Matrix에 정리되어 있습니다.
두 구현 모두 RBLN 컴파일러(rebel-compiler)로 모델을 컴파일하고 그 결과를 캐시하므로, 같은 설정으로 다시 실행하면 재컴파일 없이 캐시를 재사용합니다. 자세한 내용은 Compile Cache에서 확인할 수 있습니다.
| 항목 | vllm | transformers(optimum) |
|---|---|---|
| 모델 구현 출처 | vLLM 자체 모델 구현 | optimum-rbln |
| 컴파일 | 엔진 시작 시 | 엔진 시작 시, 또는 optimum-rbln으로 사전에 |
| 멀티 디바이스 | TP, PP, EP, DP. 프로세스에 걸쳐 | RSD. 단일 프로세스 내부 |
| 지원 디바이스 | Rebel100™ | Rebel100™, ATOM™ |
vllm¶
모델 코드를 vLLM 자체 모델 구현에서 가져옵니다. 엔진이 rbln 백엔드의 torch.compile로 엔진 시작 시 컴파일합니다.
여러 디바이스를 사용할 때는 vLLM의 병렬화 메커니즘인 tensor parallelism(TP), pipeline parallelism(PP), expert parallelism(EP), data parallelism(DP)을 사용합니다. 자세한 내용은 모델 병렬화에서 확인할 수 있습니다.
transformers(optimum)¶
모델 코드를 optimum-rbln에서 가져옵니다. optimum-rbln은 지원하는 아키텍처마다 RBLN 모델 클래스(예: RBLNLlamaForCausalLM)를 제공합니다.
model에는 HuggingFace model ID를 지정하거나, optimum-rbln으로 따로 컴파일한 모델이 들어 있는 디렉터리 경로를 지정합니다. model ID를 지정하면 RBLN vLLM이 엔진 시작 시 컴파일하고, 디렉터리 경로를 지정하면 컴파일된 모델을 불러옵니다.
여러 디바이스를 사용할 때는 Rebellions Scalable Design(RSD)을 사용합니다. vLLM 수준의 모델 분할에 기대지 않고 RBLN 컴파일러가 모델을 여러 디바이스에 분할합니다.
model implementation 선택¶
vLLM의 --model-impl 옵션(LLM()에서는 model_impl 인자)으로 사용할 구현을 선택합니다.
| 값 | 동작 |
|---|---|
auto(기본값) | 모델의 아키텍처를 optimum-rbln이 지원하면 transformers 구현을, 그렇지 않으면 vllm 구현을 사용합니다. |
vllm | vllm 구현을 사용합니다. |
transformers(별칭: optimum) | transformers(optimum) 구현을 사용합니다. |
vllm serve --help에는 upstream vLLM의 --model-impl 설명이 출력되는데, RBLN vLLM에서의 동작과 일부 다릅니다. 특히 RBLN vLLM의 auto는 transformers를 우선하고, upstream의 auto는 vllm을 우선합니다.
RBLN 전용 옵션은 --rbln-* 접두사를 사용합니다. 각 옵션은 하나의 model implementation에만 적용되며, 선택한 구현에 해당하지 않는 옵션은 엔진 설정을 만드는 단계에서 거부됩니다.
--rbln-* 옵션이 대체한 환경 변수는 deprecated입니다. 해당 VLLM_RBLN_* 변수와 각각의 대체 옵션은 설정 가이드에서 확인할 수 있습니다.
지원 디바이스
vllm model implementation은 Rebel100™에서만 동작합니다. ATOM™ 호스트에서는 --model-impl vllm으로 직접 선택했든 auto가 vllm으로 결정했든, 엔진이 디바이스 이름을 담은 에러를 냅니다. 따라서 ATOM™에서 서빙하려면 transformers(optimum) 구현이 지원하는 아키텍처여야 합니다.
주요 기능¶
다양한 실행 모드와 서버 기능 등 RBLN vLLM이 제공하는 핵심 기능들을 설명합니다.
- Feature Matrix
- Attention 모드
- Sampler 모드
- Prefix Caching
- Speculative Decoding
- KV 캐시 오프로딩
- 모델 병렬화
- 세부 디바이스 할당
- 동적 배치 크기
- 프로파일링 가이드
- Compile Cache
- Disaggregated Encoder
- Disaggregated Prefill / Decode
지원하는 아키텍처¶
아래 표는 RBLN vLLM이 지원하는 아키텍처를 model implementation별로 정리한 것입니다. Architecture는 체크포인트의 config.json에 기록된 이름입니다.
vllm implementation 아키텍처¶
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 아키텍처¶
각 표는 디바이스 계열별로 나뉩니다. Rebel100™ 탭은 Rebel100™에서 검증된 아키텍처를, ATOM™ 탭은 이 구현이 지원하는 전체 아키텍처를 보여줍니다.
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 |
변경 사항
RBLN vLLM v0.10.1부터 V0는 더 이상 지원되지 않습니다. 이에 따라 encoder–decoder 모델로는 Whisper만 지원되며, 그 외 모든 encoder–decoder 모델에 대한 지원은 제거되었습니다. 자세한 내용은 vLLM V1 사용자 가이드에서 확인할 수 있습니다.
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¶
지원하지 않습니다.
| 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 |

