Feature Matrix¶
개요¶
RBLN vLLM은 모델을 두 가지 model implementation 중 하나로 실행하며, 어떤 기능을 사용할 수 있는지는 이 선택에 따라 결정됩니다. 구현 이름은 --model-impl 옵션의 값입니다.
vllmmodel implementation- 모델 코드를 vLLM 자체 구현에서 가져와
torch.compile백엔드로 컴파일합니다.--model-impl vllm으로 선택합니다. Rebel100™에서만 동작합니다. transformers(optimum) model implementation- 모델 코드를
optimum-rbln에서 가져옵니다. RBLN이 지원하는 아키텍처마다 전용 모델 클래스(예:RBLNLlamaForCausalLM)를 제공합니다.
외부 API는 어느 쪽이든 동일합니다. model에 model ID나 디렉터리를 전달하고, 현재 설정에 맞는 컴파일 결과물이 없으면 그 자리에서 컴파일합니다. 두 구현은 모델 코드와 컴파일 방식이 다릅니다.
아래 표는 RBLN vLLM이 RBLN NPU에서 추가하거나 제약하는 기능을 실행·스케줄링, 캐싱·KV 전송, 분리형 서빙, 병렬화, 확장·도구로 나누어 정리한 것입니다.
Note
이 표는 현재 릴리스의 기능 지원 범위를 나타냅니다. 여기에 없는 upstream vLLM 기능은 vLLM 문서에 기술된 대로 동작합니다.
표기
| 기호 | 의미 |
|---|---|
| ✅ | 지원 |
| 🚧 | 사용 가능하나 개발 진행 중 |
| ❌ | 현재 미지원 |
실행 및 스케줄링¶
| 기능 | vllm | transformers(optimum) | 상세 |
|---|---|---|---|
| Naive Attention / Flash Attention | ✅ | ✅ | 커널 선택과 디바이스 제약은 Attention 모드에서 확인할 수 있습니다. |
| Chunked prefill | ✅ | ✅ | 항상 활성화되며 비활성화할 수 없습니다. |
| 동적 배치 크기 | ✅ | ✅ | 여러 decode 배치 크기를 사용하여 padding을 줄입니다. 설정 방법은 동적 배치 크기에서 확인할 수 있습니다. |
| RBLN Sampler | ✅ | ✅ | NPU에서 greedy 및 top-p/top-k sampling을 실행합니다. 설정 방법은 RBLN Sampler에서 확인할 수 있습니다. |
| Structured output | ✅ | ✅ | JSON schema, regex, grammar, choice, structural tag를 지원합니다. |
| 비동기 스케줄링 | ✅ | ❌ | transformers에서는 엔진이 이를 비활성화하고 동기적으로 실행합니다. |
| Speculative decoding | ✅ | ❌ | 여러 토큰을 제안하고 target 모델의 한 번의 forward pass로 검증합니다. 지원 방식과 설정은 Speculative Decoding에서 확인할 수 있습니다. |
| LoRA 어댑터 | ❌ | ✅ | 추론에 사용할 LoRA 어댑터를 로드합니다. |
캐싱 및 KV 전송¶
| 기능 | vllm | transformers(optimum) | 상세 |
|---|---|---|---|
| Prefix caching | ✅ | ✅ | 텍스트 및 멀티모달 생성을 지원합니다. 모델별 지원 제한은 Prefix Caching에서 확인할 수 있습니다. |
| Sub-block prefix caching | ✅ | ✅ | Sub-block 단위로 prefix를 재사용합니다. 설정 제약은 Sub-block prefix caching에서 확인할 수 있습니다. |
| Sub-block KV 캐시 이벤트 | ✅ | ❌ | 라우팅을 위해 캐시된 sub-block을 알립니다. 설정 방법은 Prefix cache-aware routing에서 확인할 수 있습니다. |
| KV 캐시 오프로딩 | ✅ | ❌ | LMCache를 통해 KV 캐시를 CPU 메모리 또는 NVMe로 오프로딩합니다. 설정 방법은 KV Cache Offloading에서 확인할 수 있습니다. |
분리형 서빙¶
| 기능 | vllm | transformers(optimum) | 상세 |
|---|---|---|---|
| Disaggregated encoder | ❌ | 🚧 | 멀티모달 모델의 encoder를 별도 인스턴스에서 실행합니다. 설정 방법은 Disaggregated Encoder에서 확인할 수 있습니다. |
| Disaggregated prefill and decode | ✅ | ❌ | Prefill과 decode를 별도 인스턴스에서 실행합니다. 설정 방법은 Disaggregated Prefill / Decode에서 확인할 수 있습니다. |
병렬화¶
| 기능 | vllm | transformers(optimum) | 상세 |
|---|---|---|---|
| Tensor parallelism | ✅ | ❌ | 설정 방법은 Tensor parallelism에서 확인할 수 있습니다. |
| Pipeline parallelism | ✅ | ❌ | 모델 레이어를 순차적인 stage로 나눕니다. 설정 방법은 Pipeline parallelism에서 확인할 수 있습니다. |
| Data parallelism | ✅ | ❌ | 모델을 복제하여 각 복제본이 독립적으로 요청을 처리합니다. 설정 방법은 Data parallelism에서 확인할 수 있습니다. |
Rebellions Scalable Design(RSD)
위의 vLLM 수준 병렬화 방식 외에도, RBLN은 RBLN Compiler에 내장된 병렬화 기능인 Rebellions Scalable Design(RSD)을 지원합니다. ATOM™에서는 사용자가 칩 간 User-level RSD를 설정할 수 있습니다. Rebel100™에서는 컴파일러가 칩렛 간 Internal RSD를 자동으로 처리합니다. 자세한 내용은 Rebellions Scalable Design(RSD)에서 확인할 수 있습니다.
확장 및 도구¶
| 기능 | vllm | transformers(optimum) | 상세 |
|---|---|---|---|
| RBLN Profiler | ✅ | ✅ | 설정 방법과 trace 시각화는 프로파일링 가이드에서 확인할 수 있습니다. |
| OpenAI 호환 서버 | ✅ | ✅ | OpenAI 호환 API로 요청을 처리합니다. |