모델 병렬화¶
개요¶
RBLN vLLM은 두 가지 모델 병렬화 방식을 제공합니다.
- vLLM-수준 병렬화
- 프레임워크가 vLLM 표준 병렬화 파라미터에 따라 모델을 여러 워커 프로세스에 분산합니다.
- Rebellions Scalable Design(RSD)
- RBLN 컴파일러가 모델을 디바이스 간(User-level RSD) 또는 디바이스 내부의 칩렛 간(Internal RSD)으로 분할합니다.
기능별 지원 여부는 Feature Matrix의 병렬화 섹션에서 확인할 수 있습니다.
vLLM-수준 병렬화¶
Model implementation 지원
vLLM-수준 병렬화는 --model-impl vllm에서만 지원됩니다.
vLLM은 모델 실행을 여러 워커 프로세스에 분산하고, rbln-ccl을 통해 프로세스 간 통신을 조정합니다.
Rank는 병렬 실행에 참여하는 워커 프로세스를 식별합니다.
| 방식 | 파라미터 | 동작 |
|---|---|---|
| Data parallelism(DP) | --data-parallel-size | 모델을 복제하여 요청을 독립적으로 처리합니다 |
| Tensor parallelism(TP) | --tensor-parallel-size | 레이어 내부 연산을 rank 간에 분산합니다 |
| Pipeline parallelism(PP) | --pipeline-parallel-size | 레이어를 순차적인 stage로 분할합니다 |
| Expert parallelism(EP) | --enable-expert-parallel | Mixture-of-experts 레이어의 expert를 rank 간에 분할합니다 |
Tensor parallelism¶
TP는 레이어 내부 연산을 rank 간에 분산합니다. 각 rank는 rbln-ccl을 통해 중간 결과를 주고받습니다.
Pipeline parallelism¶
PP는 모델 레이어를 순차적인 stage로 나누고 rank마다 하나씩 배정합니다.
각 pipeline stage는 최대 max_num_seqs // pipeline_parallel_size개의 시퀀스를 처리합니다. 처리 용량을 낭비하지 않으려면 max_num_seqs를 pipeline_parallel_size 이상의 배수로 설정하는 것을 권장합니다. 배수가 아닌 값을 지정하면 엔진이 경고를 출력합니다.
Data parallelism¶
DP는 모델을 여러 rank에 복제합니다. 각 복제본은 요청을 독립적으로 스케줄링합니다.
DP에서는 max_num_batched_tokens가 max_num_seqs의 배수여야 합니다. Padding된 토큰을 추적하려면 --rbln-use-moe-tokens-mask를 활성화된 상태로 유지해야 합니다. 이 옵션은 기본값으로 활성화되어 있습니다.
Expert parallelism¶
EP는 MoE expert를 DP rank 간에 분산합니다.
DP와 마찬가지로, padding을 추적하려면 --rbln-use-moe-tokens-mask를 활성화된 상태로 유지해야 합니다.
Rebellions Scalable Design(RSD)¶
RSD에서는 RBLN 컴파일러가 모델 분할을 담당합니다. 컴파일러가 연산 그래프를 분할하고 필요한 통신 연산을 컴파일된 바이너리에 포함합니다.
분할 범위는 하드웨어와 model implementation에 따라 다릅니다. ATOM™의 transformers에서는 User-level RSD로 사용자가 지정한 수의 칩에 모델을 분할하며, 칩 하나를 NPU 디바이스 하나로 셉니다. Rebel100™에서는 두 model implementation 모두 Internal RSD로 NPU 카드 하나에 포함된 서로 연결된 칩렛 4개에 모델을 자동으로 분할합니다. 배경 설명은 RSD 개요에서 확인할 수 있습니다.
표기
- ✅: 지원
- ❌: 현재 미지원
- —: 해당 없음
| RSD 유형 | 항목 | ATOM™ | Rebel100™ |
|---|---|---|---|
| Model implementation | transformers | transformers / vllm | |
| User-level RSD | 지원 여부 | ✅ | ❌ |
| 분할 범위 | 여러 칩 간 | — | |
| Internal RSD | 지원 여부 | — | ✅ |
| 분할 범위 | — | 카드 내 칩렛 간 |
User-level RSD¶
ATOM™ + transformers¶
--rbln-num-devices-per-local-rank로 하나의 엔진 프로세스에서 사용할 ATOM™ 칩 수를 지정합니다.
이 옵션은 카드 수가 아닌 칩 수를 지정합니다. RBLN-CA22 카드 한 장에는 칩 1개, RBLN-CA25 카드 한 장에는 칩 4개가 포함됩니다.