Qwen2.5-VL-7B (멀티모달)¶
개요¶
이 튜토리얼은 여러 개의 RBLN NPU를 사용하여 vLLM에서 멀티 모달 모델을 실행하는 방법을 설명합니다. 이 가이드에서는 이미지와 비디오를 입력받을 수 있는 Qwen/Qwen2.5-VL-7B-Instruct
모델을 사용합니다.
환경 설정 및 설치 확인¶
시작하기 전에 시스템 환경이 올바르게 구성되어 있으며, 필요한 모든 필수 패키지가 설치되어 있는지 확인하십시오. 다음 항목이 포함됩니다:
- 시스템 요구 사항:
- Python: 3.9–3.12
- RBLN Driver
- 필수 패키지:
- torch
- transformers
- numpy
- RBLN Compiler
- optimum-rbln
- huggingface_hub[cli]
- vllm-rbln –
vllm
은 함께 자동으로 설치됨.
- 설치 명령어:
Note
rebel-compiler
를 사용하려면 RBLN 포털 계정이 필요하니 참고하십시오.
Execution¶
모델 컴파일¶
rbln_config
를 통해 메인 모듈을 비롯한 서브 모듈의 파라미터를 수정할 수 있습니다. 원본 소스 코드는 RBLN Model Zoo를 참고하세요.
API 레퍼런스가 필요하다면 RblnModelConfig를 확인하세요.
-
visual submodule:
-
max_seq_lens
: DVision Transformer (ViT)에서의 최대 시퀀스 길이를 정의하며, 이는 이미지 내 패치(patch)의 개수를 나타냅니다. -
device
: 실행 중 각 서브모듈에 할당할 디바이스를 정의합니다.Qwen2.5-VL
은 여러 서브모듈로 구성되어 있어, 모든 모듈을 하나의 디바이스에 로드하면 특히 배치 사이즈가 클 경우 메모리 용량을 초과할 수 있습니다. 서브모듈을 여러 디바이스에 분산시킴으로써 메모리 사용을 최적화하고 효율적인 실행 성능을 확보할 수 있습니다.
-
-
main module:
-
export
: 모델을 컴파일하려면True
로 설정해야 합니다. -
tensor_parallel_size
: 추론에 사용할 NPU의 수를 정의합니다. -
kvcache_partition_len
: Flash Attention을 위한 KV 캐시 파티션의 길이를 정의합니다. -
max_seq_len
: 언어 모델의 최대 위치 임베딩을 정의하며,kvcache_partition_len
의 배수여야 합니다. -
device
:특정 디바이스에 할당된 서브모듈을 제외한 메인 모듈의 디바이스 할당을 정의합니다. -
batch_size
: 컴파일 시의 배치 사이즈를 정의합니다. -
decoder_batch_sizes
:다이나믹 배칭
을 위한 배치 크기들을 정의합니다.
-
Note
모델 크기와 NPU 사양에 따라 적절한 배치 사이즈를 선택하세요.
또한, vllm-rbln
은 최적의 처리량과 자원 활용을 보장하기 위해 동적 배치(Dynamic Batching)을 지원합니다.
자세한 내용은 Dynamic Batching를 참고하세요.
vLLM을 활용한 추론¶
컴파일된 모델은 vLLM
과 함께 사용할 수 있습니다. 아래 예시는 컴파일된 모델을 사용하여 vLLM
엔진을 설정하고 추론을 수행하는 방법을 보여줍니다.
Note
from_pretrained
의 매개변수는 일반적으로 rbln_batch_size
, rbln_max_seq_len
과 같이 rbln
접두사가 필요합니다.
하지만 rbln_config
내부의 매개변수는 이러한 접두사가 필요하지 않습니다. 동일한 매개변수를 rbln_config에서 설정할 때는 절대로 rbln
접두사를 붙이지 마세요.
예시 출력: