콘텐츠로 이동

설정 가이드

개요

이 문서는 RBLN 전용 옵션과 표준 vLLM 엔진 인자에 적용되는 RBLN에만 적용되는 제약을 다룹니다.

설정 방법

표준 vLLM 인자는 LLM(...), vllm serve, EngineArgs로 지정합니다. RBLN 전용 옵션은 다음 세 가지 방법으로 지정할 수 있습니다.

  • CLI 플래그: --rbln-<field>. 필드 이름의 밑줄(_)을 하이픈(-)으로 바꿔 사용합니다. 불리언 옵션은 --no-rbln-<field>로 비활성화할 수 있습니다. vllm serve --help=rblnconfig로 전체 플래그를 확인할 수 있습니다.
  • Python 딕셔너리: LLM(...)에 additional_config={"<field>": value}를 전달합니다.
  • Python 설정 객체: LLM(...)에 additional_config=RBLNConfig(...) 또는 additional_config=OptimumRBLNConfig(...)를 전달합니다.

각 항목에는 필드 이름과 해당 --rbln-* CLI 플래그를 함께 표기합니다. additional_config 키는 필드 이름과 같습니다.

Model implementation

사용할 수 있는 RBLN 전용 옵션은 선택한 모델 구현(model implementation)에 따라 달라집니다. 각 구현에서 사용할 수 있는 옵션은 아래의 별도 섹션에 정리되어 있습니다.

구현은 --model-impl로 선택합니다. Python 설정 객체를 전달하면 객체의 클래스에 따라 모델 구현이 자동으로 선택됩니다.

  • RBLNConfig는 vllm을 선택합니다.
  • OptimumRBLNConfig는 transformers(optimum)을 선택합니다.

--model-impl과 설정 객체를 함께 지정할 경우 두 설정이 동일한 모델 구현을 선택해야 합니다. 해당 구현이 지원하지 않는 옵션을 전달하면 오류가 발생합니다.

두 모델 구현의 차이는 아키텍처 디자인에서 확인할 수 있습니다.


Engine Arguments

엔진 인자는 upstream vLLM과 동일한 방식으로 설정합니다. 아래 인자에는 RBLN에만 적용되는 제약이 적용됩니다.

model_impl

기본값: auto.

모델 서빙에 사용할 구현을 선택합니다.

  • transformers(별칭 optimum): optimum-rbln을 통해 모델을 실행합니다.
  • vllm: vLLM 자체 구현으로 실행합니다. ATOM™ 호스트(RBLN-CAxx)에서는 이 설정을 허용하지 않습니다.
  • auto: 모델 경로에 컴파일된 optimum-rbln 아티팩트가 있거나 optimum-rbln이 해당 모델 아키텍처를 지원하면 transformers를 선택합니다. 그렇지 않으면 vllm을 선택합니다.

upstream vLLM의 auto 설정은 이와 달리 vllm을 우선합니다.

block_size

max_model_len과 함께 attention 모드를 결정합니다.

  • block_size == max_model_len: Naive Attention.
  • max_model_len이 block_size의 배수: Flash Attention.

모델 컴파일 시 block_size 설정

  • 대부분의 모델: block_size를 직접 지정해야 합니다.
  • 풀링·인코더-디코더 모델: 아래의 Qwen3 예외를 제외하면 block_size는 max_model_len과 같아야 합니다. 생략하면 max_model_len으로 자동 설정됩니다.
  • Qwen3 백본 기반 풀링 모델: Flash Attention을 사용하려면 max_model_len보다 작은 block_size를 지정해야 합니다.

transformers(optimum) 구현에서 미리 컴파일된 모델을 불러올 때는 컴파일된 모델 설정의 블록 크기를 사용합니다.

자세한 내용은 Attention 모드에서 확인할 수 있습니다.

max_model_len

기본값: 모델의 최대 시퀀스 길이.

block_size와 함께 attention 모드를 결정합니다. 자세한 내용은 block_size에서 확인할 수 있습니다.

max_num_seqs

기본값: 1.

upstream vLLM의 기본값 128 대신 1을 사용합니다.

max_num_batched_tokens

기본값: 모델 구현과 NPU에 따라 다릅니다.

모델 구현에 따라 의미와 기본값이 달라집니다.

  • vllm: 스케줄링 한 단계에서 처리할 수 있는 최대 토큰 수입니다. upstream vLLM의 기본값을 사용합니다.
  • transformers(optimum): 디코더 전용 모델과 멀티모달 모델의 prefill chunk size입니다. 기본값은 Rebel100™에서 512, ATOM™ NPU에서 128입니다.

transformers에서는 프롬프트를 max_num_batched_tokens 토큰 단위로 나누어 prefill하며, chunk size는 컴파일 시 모델에 반영됩니다. 미리 컴파일된 모델을 서빙할 때 이 인자를 생략하면 모델에 기록된 chunk size를 사용합니다. 다른 값을 지정하면 오류가 발생합니다.

tensor_parallel_size

기본값: 1.

vLLM 레벨의 텐서 병렬을 설정합니다. 지원 범위는 모델 구현에 따라 다릅니다.

  • vllm: 모델을 여러 워커 프로세스로 분할하고 Rebellions Collective Communications Library(RCCL)로 통신합니다.
  • transformers(optimum): 미리 컴파일된 모델을 사용하므로 1만 허용합니다. 다른 값을 지정하면 오류가 발생합니다.

transformers에서 단일 프로세스로 여러 NPU에 걸쳐 모델을 실행하려면 num_devices_per_local_rank를 사용해야 합니다. 컴파일러가 Rebellions Scalable Design(RSD) 방식으로 모델을 분할합니다. RSD와 vLLM 레벨 텐서 병렬의 차이는 모델 병렬화에서 확인할 수 있습니다.

엔진 인자 설정 예시:

1
2
3
4
5
6
7
8
9
from vllm import LLM

llm = LLM(
    model="<huggingface-model-id>",
    block_size=4096,
    max_model_len=32768,
    max_num_seqs=1,
    tensor_parallel_size=1,
)

RBLN Options: vllm

vllm 구현(--model-impl vllm)에서 사용할 수 있는 옵션입니다.

sub_block_size

CLI 옵션: --rbln-sub-block-size

기본값: prefill chunk size, 즉 max_num_batched_tokens 값.

Prefix 캐시에서 재사용 여부를 확인하는 단위인 sub-block의 크기를 토큰 수로 지정합니다.

  • 값은 0보다 커야 합니다.
  • 모든 KV 캐시 그룹의 block_size는 이 값보다 크고, 이 값의 배수여야 합니다.
  • enable_sub_block_cache가 꺼진 상태에서 지정하면 오류가 발생합니다.

자세한 내용은 Prefix Caching에서 확인할 수 있습니다.

use_custom_sampler

CLI 옵션: --rbln-use-custom-sampler

기본값: True.

RBLNSampler를 사용해 RBLN NPU에서 샘플링을 실행합니다.

--no-rbln-use-custom-sampler를 지정하면 upstream vLLM 샘플러를 사용합니다.

enforce_model_fp32

CLI 옵션: --rbln-enforce-model-fp32

기본값: False.

모델 설정에 지정된 dtype과 관계없이 fp32를 사용하도록 강제합니다.

use_dynamic_kv_cache

CLI 옵션: --rbln-use-dynamic-kv-cache

기본값: unset(지원되는 설정에서 자동 활성화).

컴파일된 모델의 디바이스 배치 정보와 디바이스 용량을 기준으로 KV 캐시 크기를 정합니다. 워밍업 후 컴파일 산출물의 메모리 프로파일을 읽고, 디바이스에 맞게 캐시 크기를 조정합니다.

캐시의 블록 개수는 런타임에 변경할 수 있습니다. 컴파일 시에는 적은 수의 블록을 기준으로 사용하고, 실제 블록 수는 런타임에 결정합니다.

설정에 따른 동작은 다음과 같습니다.

  • 미지정: 동적 크기 조정을 사용하되, 지원하지 않는 설정에서는 자동으로 끕니다.
  • --rbln-use-dynamic-kv-cache: 동적 크기 조정을 반드시 사용합니다. 해당 설정에서 캐시 크기를 결정할 수 없으면 엔진이 시작되지 않습니다.
  • --no-rbln-use-dynamic-kv-cache: 동적 크기 조정을 끄고 컴파일 전 추정치를 유지합니다.

enable_sub_block_cache

CLI 옵션: --rbln-enable-sub-block-cache

기본값: True.

prefix caching이 활성화된 경우 sub_block_size 단위의 sub-block prefix caching을 활성화합니다. 자세한 내용은 Prefix Caching에서 확인할 수 있습니다.

specialize_moe_decode

CLI 옵션: --rbln-specialize-moe-decode

기본값: True.

mixture-of-experts(MoE) 모델에서 배치의 모든 요청이 decode 단계일 때 사용할 특화 그래프를 컴파일합니다.

use_moe_tokens_mask

CLI 옵션: --rbln-use-moe-tokens-mask

기본값: True.

MoE expert kernel에 token mask를 적용합니다.

use_all2all_dispatch

CLI 옵션: --rbln-use-all2all-dispatch

기본값: False.

MoE data-parallel dispatch에 all-gather 대신 all-to-all dispatch를 사용합니다.

use_all2all_combine

CLI 옵션: --rbln-use-all2all-combine

기본값: False.

MoE data-parallel combine에 reduce-scatter 대신 all-to-all combine을 사용합니다.

decode_batch_bucket_strategy

CLI 옵션: --rbln-decode-batch-bucket-strategy

기본값: exponential.

decode batch bucket 생성 방식을 exponential, linear, manual 중에서 선택합니다.

각 decode 배치는 현재 요청 수 이상인 bucket 크기 중 가장 작은 크기로 패딩됩니다. 따라서 새로운 배치 크기가 나타나도 그래프를 다시 컴파일하지 않습니다.

decode_batch_bucket_min

CLI 옵션: --rbln-decode-batch-bucket-min

기본값: 1.

가장 작은 decode batch bucket의 크기를 지정합니다.

decode_batch_bucket_step

CLI 옵션: --rbln-decode-batch-bucket-step

기본값: 2.

decode batch bucket 사이의 간격을 지정합니다.

  • exponential: 이전 bucket 크기를 나눌 값.
  • linear: 이전 bucket 크기에서 뺄 값.

decode_batch_bucket_limit

CLI 옵션: --rbln-decode-batch-bucket-limit

기본값: 1.

decode batch bucket의 최대 개수를 지정합니다.

decode_batch_bucket_manual_buckets

CLI 옵션: --rbln-decode-batch-bucket-manual-buckets

기본값: [].

decode_batch_bucket_strategy가 manual일 때 사용할 decode 배치 크기 목록을 지정합니다.

각 값은 0보다 커야 하며, 중복될 수 없습니다.

use_w8a8

CLI 옵션: --rbln-use-w8a8

기본값: False.

W8A8 양자화 실행을 활성화합니다.

W8A8은 커널이 fp8 activation을 지원하는 NPU에서만 실행할 수 있습니다. W8A16은 모든 RBLN NPU에서 지원합니다.

compile_dtype

CLI 옵션: --rbln-compile-dtype

기본값: "".

선택값: "", float16, bfloat16.

컴파일된 그래프가 NPU에서 실행될 dtype을 지정합니다. ""로 설정하면 대상 NPU에 대한 컴파일러 기본 dtype을 사용합니다.

RBLN Compiler v0.12.0 이상이 필요합니다.

Info

compile_dtype은 vLLM의 dtype 옵션과 별개입니다. 컴파일된 NPU 그래프의 dtype을 제어합니다.


RBLN Options: transformers(optimum)

transformers(optimum) 구현(--model-impl transformers 또는 별칭 optimum)에서 사용할 수 있는 옵션입니다.

num_devices_per_local_rank

CLI 옵션: --rbln-num-devices-per-local-rank

기본값: 1.

하나의 local rank(엔진 프로세스)에 할당할 RBLN NPU 디바이스 수를 지정합니다.

컴파일러는 Rebellions Scalable Design(RSD) 방식으로 모델을 여러 디바이스에 분할합니다. 단일 프로세스로 실행하므로 런타임 오버헤드를 줄일 수 있습니다.

Rebel100™: 1만 지원합니다. 카드 내부의 칩렛 4개에 대한 분할은 컴파일러가 처리합니다.

자세한 내용은 모델 병렬화에서 확인할 수 있습니다.

sub_block_size

CLI 옵션: --rbln-sub-block-size

기본값: prefill chunk size, 즉 max_num_batched_tokens 값.

Prefix 캐시에서 재사용 여부를 확인하는 단위인 sub-block의 크기를 토큰 수로 지정합니다.

  • 값은 max_num_batched_tokens의 배수여야 합니다.
  • attention 블록 크기는 이 값의 배수여야 합니다.

자세한 내용은 Prefix Caching에서 확인할 수 있습니다.

use_custom_sampler

CLI 옵션: --rbln-use-custom-sampler

기본값: True.

RBLNSampler를 사용해 RBLN NPU에서 샘플링을 실행합니다.

--no-rbln-use-custom-sampler를 지정하면 upstream vLLM 샘플러를 사용합니다.

optimum_overrides

CLI 옵션: --rbln-optimum-overrides

기본값: {}.

컴파일 시 RBLN vLLM이 엔진 설정을 바탕으로 생성한 optimum-rbln 모델 설정을 덮어씁니다.

미리 컴파일된 모델에는 device 항목만 적용됩니다.

사용 가능한 항목은 RblnModelConfig에서 확인할 수 있습니다. 아래에서는 이 페이지의 엔진 설정과 연관된 항목을 설명합니다.

device

기본값: None.

생략하면 디바이스 ID는 [0, 1, ..., N - 1]이며, N은 설정된 디바이스 수입니다.

사용할 디바이스 ID를 지정합니다. 기본 할당은 optimum_overrides의 최상위 device로 설정하고, 특정 서브모듈의 할당은 해당 서브모듈의 설정 키 아래에 지정합니다. 디바이스 ID의 개수는 설정된 디바이스 수와 일치해야 합니다.

Vision encoder와 language model 같은 서브모듈을 서로 다른 디바이스에 배치하는 방법은 세부 디바이스 할당에서 확인할 수 있습니다.

decoder_batch_sizes

기본값: None.

생략하면 배치 크기가 max_num_seqs인 디코더 하나만 컴파일합니다. 값을 지정하면 각 배치 크기마다 디코더를 하나씩 컴파일합니다. 엔진은 각 decode 단계에서 처리할 요청 수 이상의 배치 크기 중 가장 작은 크기의 디코더를 선택합니다.

배치 크기의 입력 순서는 상관없으며, 각 값은 max_num_seqs 이하여야 합니다. 리스트에 max_num_seqs가 없으면 자동으로 추가됩니다. 설정 예시는 동적 배치 크기에서 확인할 수 있습니다.

다음 예시는 sub_block_size를 설정하고, optimum_overrides로 visual 및 language_model 서브모듈에 디바이스를 할당합니다.

from vllm import LLM

llm = LLM(
    ...,
    additional_config={
        "sub_block_size": 256,
        "optimum_overrides": {
            "visual": {
                "device": [0],
            },
            "language_model": {
                "device": [1, 2, 3, 4],
            },
        },
    },
)

환경 변수

아래 RBLN 전용 환경 변수는 엔진을 실행하기 전에 설정합니다. upstream vLLM의 환경 변수는 vLLM 환경 변수 문서에서 확인할 수 있습니다.

VLLM_RBLN_ENABLE_WARM_UP

기본값: True.

엔진 시작 시 모델 워밍업 단계를 실행해 최초 초기화 작업으로 인해 첫 요청의 처리가 지연되지 않도록 합니다. False로 설정하면 워밍업을 건너뜁니다.

VLLM_RBLN_COMPILE_STRICT_MODE

기본값: True.

그래프 컴파일에 실패하면 오류를 발생시킵니다. False로 설정하면 지원되는 경우 CPU fallback을 허용합니다.

VLLM_RBLN_COMPILE_ONLY

기본값: False.

모델 그래프를 실행하지 않고 컴파일하여 컴파일 캐시에 저장합니다. 이 모드를 사용하면 NPU가 없는 호스트에서도 나중에 실행할 캐시 산출물을 미리 준비할 수 있습니다.

Info

NPU가 없는 호스트에서는 RBLN_FORCE_NPU_NAME에 대상 NPU 이름(예: RBLN-CA25)을 지정해야 합니다. 컴파일 캐시가 활성화되어 있어야 합니다(VLLM_DISABLE_COMPILE_CACHE=0).

VLLM_RBLN_DISABLE_OFFLOAD

기본값: True.

적용 대상: vllm 전용.

True로 설정하면 모델 로딩과 워밍업 중 호스트 쪽 weight 데이터를 메모리에 유지합니다. False로 설정하면 이 데이터를 디스크에 저장할 수 있습니다.

VLLM_RBLN_METRICS

기본값: False.

각 워커에서 step별 지연 시간을 수집하고, 엔진 종료 시 성능 리포트를 출력합니다.

VLLM_RBLN_METRICS_FILE

기본값: "".

적용 대상: transformers(optimum) 전용.

VLLM_RBLN_METRICS=True로 설정해야 합니다.

성능 리포트를 텍스트 파일로 저장합니다. ""로 설정하면 리포트를 로그에만 출력합니다.

각 워커는 별도의 파일에 기록합니다. 예를 들어 report.log는 report.<PID>.log가 됩니다.

VLLM_RBLN_METRICS_DIR

기본값: "".

적용 대상: vllm 전용.

VLLM_RBLN_METRICS=True로 설정해야 합니다.

성능 리포트를 이 디렉터리에 JSON 파일로 저장합니다. ""로 설정하면 리포트를 로그에만 출력합니다.

파일 이름에는 metrics_tp0.json과 같이 워커 rank가 반영됩니다. 여러 rank를 사용하지 않는 경우 파일 이름은 metrics.json입니다.

지원 중단 예정인 변수

RBLN vLLM v0.14.0에서 제거 예정

아래 환경 변수와 additional_config 키는 사용 중단이 권고되며(deprecated), RBLN vLLM v0.14.0에서 제거될 예정입니다. 그전까지는 사용할 수 있지만, 사용 시 지원 중단 예정임을 알리는 경고가 출력됩니다.

환경 변수

기존 환경 변수 대신 해당 RBLN 파라미터를 사용하는 것을 권장합니다. 아래 표에는 환경 변수 이름과 대체 파라미터 이름이 서로 다른 항목을 정리했습니다.

기존 환경 변수와 대체 항목에 나열된 파라미터를 함께 지정하면 파라미터 값이 우선 적용됩니다.

변수 대체 항목
VLLM_RBLN_USE_VLLM_MODEL model_impl
VLLM_RBLN_NUM_DEVICES_PER_LOCAL_RANK, VLLM_RBLN_TP_SIZE num_devices_per_local_rank
VLLM_RBLN_SAMPLER use_custom_sampler
VLLM_RBLN_SUB_BLOCK_CACHE enable_sub_block_cache
VLLM_RBLN_DISPATCH_ALL2ALL use_all2all_dispatch
VLLM_RBLN_COMBINE_ALL2ALL use_all2all_combine

additional_config 키

transformers(optimum) 구현을 사용할 때는 additional_config의 아래 키를 대체 파라미터 이름으로 변경하는 것을 권장합니다.

이전 키 대체 항목
rbln_config optimum_overrides
prefix_block_size sub_block_size