객체 스토리지에서 모델 불러오기

객체 스토리지에서 모델 불러오기 (Loading Models from Object Storage)

SGLang은 로컬 전체 다운로드 없이 객체 스토리지에서 직접 모델을 불러올 수 있어요. runai_streamer 로드 포맷을 이용해 클라우드 스토리지에서 모델 가중치를 스트리밍하며, 시작 시간과 로컬 스토리지 요구량을 줄입니다.

출처: 문서

본문

개요 (Overview)

객체 스토리지에서 모델을 불러올 때 SGLang은 두 단계 방식을 사용합니다:

  1. 메타데이터 다운로드 (Metadata Download) (프로세스 시작 전, 한 번): 설정 파일과 토크나이저 파일을 로컬 캐시로 내려받음
  2. 가중치 스트리밍 (Weight Streaming) (지연, 모델 로드 중): 모델 가중치를 필요에 따라 객체 스토리지에서 직접 스트리밍

지원 스토리지 백엔드 (Supported Storage Backends)

  1. Amazon S3: s3://bucket-name/path/to/model/
  2. Google Cloud Storage: gs://bucket-name/path/to/model/
  3. Azure Blob: az://some-azure-container/path/
  4. 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 유사 디바이스에서 지원되며, 그 외에는 비분산 스트리밍으로 폴백합니다.

더 알아보기 (See Also)