Run:ai Model Streamer로 모델 로드하기

Run:ai Model Streamer로 모델 로드하기

Run:ai Model Streamer는 텐서를 GPU 메모리로 스트리밍하면서 동시성(concurrency)으로 읽는 라이브러리예요. 자세한 내용은 Run:ai Model Streamer 문서에서 볼 수 있습니다.

vLLM은 Run:ai Model Streamer를 사용해 Safetensors 형식의 가중치 로딩을 지원해요. 먼저 vLLM RunAI 선택 의존성을 설치해야 해요:

pip3 install vllm[runai]

출처: vLLM 공식 문서 — models-extensions-runai_model_streamer

OpenAI 호환 서버로 실행하기

--load-format runai_streamer 플래그를 추가하면 됩니다.

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct --load-format runai_streamer

객체 스토리지에서 로드하기

다양한 클라우드 객체 스토리지에서도 로드할 수 있어요.

AWS S3:

vllm serve s3://core-llm/Llama-3-8b --load-format runai_streamer

Google Cloud Storage:

vllm serve gs://core-llm/Llama-3-8b --load-format runai_streamer

Azure Blob Storage:

AZURE_STORAGE_ACCOUNT_NAME=<account> \
vllm serve az://<container>/<model-path> --load-format runai_streamer

Azure 인증은 DefaultAzureCredential을 사용하며, 이는 az login, managed identity, 환경 변수(AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET) 등 여러 방식을 지원해요.

S3 호환 객체 스토리지:

RUNAI_STREAMER_S3_USE_VIRTUAL_ADDRESSING=0 \
AWS_EC2_METADATA_DISABLED=true \
AWS_ENDPOINT_URL=https://storage.googleapis.com \
vllm serve s3://core-llm/Llama-3-8b --load-format runai_streamer

튜닝 파라미터 (Tunable parameters)

--model-loader-extra-config로 파라미터를 조절할 수 있어요.

distributed — 분산 스트리밍 사용 여부를 제어해요. 현재 CUDA와 ROCM 디바이스에서만 가능하며, 객체 스토리지나 고처리량 네트워크 파일 공유에서 로딩 시간을 크게 개선할 수 있어요.

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer \
    --model-loader-extra-config '{"distributed":true}'

concurrency — 파일에서 CPU 버퍼로 텐서를 읽는 OS 스레드의 동시성 수준을 제어해요.

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer \
    --model-loader-extra-config '{"concurrency":16}'

memory_limit — 텐서를 읽는 CPU 메모리 버퍼의 크기를 제한해요.

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer \
    --model-loader-extra-config '{"memory_limit":5368709120}'

샤딩된 모델 (Sharded models)

vLLM은 Run:ai Model Streamer로 샤딩된 모델 로딩도 지원해요. 여러 파일로 쪼개진 대형 모델에 특히 유용합니다. --load-format runai_streamer_sharded 플래그를 쓰세요.

vllm serve /path/to/sharded/model --load-format runai_streamer_sharded

샤딩 로더는 일반 sharded state 로더와 같은 명명 패턴(model-rank-{rank}-part-{part}.safetensors)을 기대해요. pattern 파라미터로 패턴을 바꿀 수 있어요.

vllm serve /path/to/sharded/model \
    --load-format runai_streamer_sharded \
    --model-loader-extra-config '{"pattern":"custom-model-rank-{rank}-part-{part}.safetensors"}'

샤딩된 형식의 모델 파일을 만들려면 examples/features/sharded_state/save_sharded_state_offline.py 스크립트를 사용할 수 있어요. 샤딩 로더는 일반 Run:ai Model Streamer와 동일한 튜닝 파라미터(concurrency, memory_limit 포함)를 지원합니다.

참고: 샤딩 로더는 각 워커가 전체 체크포인트가 아니라 자기 샤드만 읽으면 되는 tensor/pipeline parallel 모델에서 특히 효율적이에요.

더 알아보기 (Learn more)