Qwen2.5-VL 7B¶
개요¶
이 튜토리얼은 여러 개의 RBLN NPU를 사용하여 vLLM에서 멀티 모달 모델을 실행하는 방법을 설명합니다. 이 가이드에서는 이미지와 비디오를 입력받을 수 있는 Qwen/Qwen2.5-VL-7B-Instruct 모델을 사용합니다.
환경 설정 및 설치 확인¶
시작하기 전에 시스템 환경이 올바르게 구성되어 있고 필요한 패키지가 모두 설치되어 있는지 확인합니다. 필요한 항목은 다음과 같습니다:
- 시스템 요구 사항:
- Python: 3.10–3.14
- RBLN Driver
- 필수 패키지:
- torch
- transformers
- numpy
- RBLN Compiler
- optimum-rbln
- huggingface_hub[cli]
- vllm-rbln –
vllm은 함께 자동으로 설치됨.
- 설치 명령어:
Note
rebel-compiler를 설치하려면 RBLN Portal 계정이 필요합니다.- 위 명령은 Debian 계열 Linux(예: Ubuntu)에서 pip로 패키지를 설치하는 일반적인 절차를 전제로 합니다. OS나 환경이 다른 경우에는 설치 가이드에서 지원되는 설치 조합과 적용 가능한 명령을 확인할 수 있습니다.
1. 실행: 사전 컴파일 사용¶
이 단계는 여러 개의 RBLN NPU를 사용해 vLLM으로 Qwen/Qwen2.5-VL-7B-Instruct 모델을 서빙하는 방법을 설명합니다.
1.1. 모델 컴파일¶
rbln_config를 통해 메인 모듈을 비롯한 서브 모듈의 파라미터를 수정할 수 있습니다. 원본 소스 코드는 RBLN Model Zoo에서 확인할 수 있습니다. API 레퍼런스는 RblnModelConfig에 정리되어 있습니다.
-
visual submodule:
-
max_seq_len: Vision Transformer(ViT)에서의 최대 시퀀스 길이를 정의하며, 이는 이미지 내 패치(patch)의 개수를 나타냅니다. -
device: 실행 중 각 서브모듈에 할당할 디바이스를 정의합니다.Qwen2.5-VL은 여러 서브모듈로 구성되어 있어, 모든 모듈을 하나의 디바이스에 로드하면 특히 배치 사이즈가 클 경우 메모리 용량을 초과할 수 있습니다. 서브모듈을 여러 디바이스에 분산하면 각 디바이스의 메모리 사용량을 줄일 수 있습니다.
-
-
main module:
-
num_devices: 추론에 사용할 NPU의 수를 정의합니다. -
kvcache_partition_len: Flash Attention을 위한 KV 캐시 파티션의 길이를 정의합니다. -
max_seq_len: 언어 모델의 최대 위치 임베딩을 정의하며,kvcache_partition_len의 배수여야 합니다. -
device: 디바이스를 명시적으로 할당하지 않은 서브모듈에 사용할 기본 디바이스를 지정합니다. -
batch_size: 컴파일 시의 배치 사이즈를 정의합니다. -
decoder_batch_sizes:다이나믹 배칭을 위한 배치 크기들을 정의합니다.
-
Note
모델 크기와 NPU 사양에 따라 적절한 배치 사이즈를 선택하는 것을 권합니다. RBLN vLLM은 동적 배치(Dynamic Batching)도 지원합니다. 자세한 내용은 Dynamic Batching에서 확인할 수 있습니다.
1.2. vLLM을 활용한 추론¶
컴파일된 모델은 vLLM과 함께 사용할 수 있습니다. 아래 예시는 컴파일된 모델을 사용하여 vLLM 엔진을 설정하고 추론을 수행하는 방법을 보여줍니다.
Note
from_pretrained의 매개변수는 일반적으로 rbln_batch_size, rbln_max_seq_len과 같이 rbln 접두사가 필요합니다.
하지만 rbln_config 내부의 매개변수는 이러한 접두사가 필요하지 않습니다. 동일한 매개변수를 rbln_config에서 설정할 때는 절대로 rbln 접두사를 붙여서는 안 됩니다.
예시 출력:
2. 실행: 사전 컴파일 미사용(베타)¶
Info
이 기능은 베타 단계입니다. RBLN vLLM 0.10.4부터는 별도의 사전 컴파일 스크립트 없이 모델을 서빙할 수 있습니다. vLLM 엔진 파라미터를 LLM()에 직접 전달하면 RBLN vLLM이 엔진 시작 시 optimum-rbln의 컴파일 단계를 자동으로 처리합니다.
2.1. vLLM을 활용한 컴파일 및 추론¶
additional_config의 num_devices_per_local_rank로 local rank당 NPU 디바이스 수를 설정하고, block_size, max_model_len, max_num_seqs를 LLM()에 직접 전달합니다. additional_config["optimum_overrides"]["visual"]로 visual 서브모듈을 설정합니다.
Note
컴파일된 모델은 $VLLM_CACHE_ROOT/compiled_models 아래에 저장됩니다. VLLM_CACHE_ROOT는 기본값이 ~/.cache/vllm이며, 환경 변수로 다른 위치를 지정할 수 있습니다.