객체 스토리지에서 모델 불러오기
객체 스토리지에서 모델 불러오기 (Loading Models from Object Storage)
SGLang은 로컬 전체 다운로드 없이 객체 스토리지에서 직접 모델을 불러올 수 있어요. runai_streamer 로드 포맷을 이용해 클라우드 스토리지에서 모델 가중치를 스트리밍하며, 시작 시간과 로컬 스토리지 요구량을 줄입니다.
출처: 문서
본문
개요 (Overview)
객체 스토리지에서 모델을 불러올 때 SGLang은 두 단계 방식을 사용합니다:
- 메타데이터 다운로드 (Metadata Download) (프로세스 시작 전, 한 번): 설정 파일과 토크나이저 파일을 로컬 캐시로 내려받음
- 가중치 스트리밍 (Weight Streaming) (지연, 모델 로드 중): 모델 가중치를 필요에 따라 객체 스토리지에서 직접 스트리밍
지원 스토리지 백엔드 (Supported Storage Backends)
- Amazon S3:
s3://bucket-name/path/to/model/ - Google Cloud Storage:
gs://bucket-name/path/to/model/ - Azure Blob:
az://some-azure-container/path/ - S3 호환 (S3 compatible):
s3://bucket-name/path/to/model/
빠른 시작 (Quick Start)
기본 사용법 (Basic Usage)
모델 경로로 객체 스토리지 URI만 제공하면 됩니다:
# S3
python -m sglang.launch_server \
--model-path s3://my-bucket/models/llama-3-8b/ \
--load-format runai_streamer
# Google Cloud Storage
python -m sglang.launch_server \
--model-path gs://my-bucket/models/llama-3-8b/ \
--load-format runai_streamer
참고: 객체 스토리지 URI를 사용하면 --load-format runai_streamer가 자동으로 감지되므로 생략할 수 있어요:
python -m sglang.launch_server \
--model-path s3://my-bucket/models/llama-3-8b/
텐서 병렬과 함께 (With Tensor Parallelism)
python -m sglang.launch_server \
--model-path gs://my-bucket/models/llama-70b/ \
--tp 4 \
--model-loader-extra-config '{"distributed": true}'
설정 (Configuration)
로드 포맷 (Load Format)
runai_streamer 로드 포맷은 객체 스토리지, SSD, 공유 파일시스템을 위해 설계되었습니다.
python -m sglang.launch_server \
--model-path s3://bucket/model/ \
--load-format runai_streamer
확장 설정 파라미터 (Extended Configuration Parameters)
--model-loader-extra-config로 JSON 문자열 형태의 추가 설정을 전달합니다:
python -m sglang.launch_server \
--model-path s3://bucket/model/ \
--model-loader-extra-config '{
"distributed": true,
"concurrency": 8,
"memory_limit": 2147483648
}'
사용 가능한 파라미터 (Available Parameters)
| Parameter | Type | Description | Default |
|---|---|---|---|
distributed |
bool | Multi-GPU 환경에서 분산 스트리밍을 활성화. CUDA 유사 디바이스의 객체 스토리지 경로에 대해 자동으로 true로 설정됨. |
Auto-detected |
concurrency |
int | 동시 다운로드 스트림 수. 값이 클수록 대형 모델 처리량이 향상될 수 있음. | 4 |
memory_limit |
int | 스트리밍 버퍼의 메모리 한도(바이트). | System-dependent |
성능 고려사항 (Performance Considerations)
분산 스트리밍 (Distributed Streaming)
멀티 GPU 환경에서는 분산 스트리밍을 활성화해 프로세스 간에 가중치 로드를 병렬화할 수 있습니다:
python -m sglang.launch_server \
--model-path s3://bucket/model/ \
--tp 8 \
--model-loader-extra-config '{"distributed": true}'
제한사항 (Limitations)
- 지원 포맷:
.safetensors가중치 포맷만 지원됩니다. - 지원 디바이스: 분산 스트리밍은 CUDA 유사 디바이스에서 지원되며, 그 외에는 비분산 스트리밍으로 폴백합니다.