콘텐츠로 이동

Feature Matrix

개요

RBLN vLLM은 모델을 두 가지 model implementation 중 하나로 실행하며, 어떤 기능을 사용할 수 있는지는 이 선택에 따라 결정됩니다. 구현 이름은 --model-impl 옵션의 값입니다.

vllm model 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로 요청을 처리합니다.