InstantTensor로 모델 가중치 로드하기
InstantTensor로 모델 가중치 로드하기
InstantTensor는 CUDA 디바이스에서 Safetensors 가중치 로딩을 분산 로딩(distributed loading), 파이프라인 프리페치(pipelined prefetching), 직접 I/O(direct I/O)를 통해 가속하는 라이브러리예요. 사용 가능할 때 GDS(GPUDirect Storage)도 지원해 대형 모델의 로딩 시간을 획기적으로 줄여줘요. 자세한 내용은 InstantTensor GitHub 저장소를 참고하세요.
출처: 문서
본문
설치
pip install instanttensor
vLLM에서 InstantTensor 사용
커맨드라인 인자로 --load-format instanttensor를 추가하세요. 예를 들어:
vllm serve Qwen/Qwen2.5-0.5B --load-format instanttensor
벤치마크
만든 측정은 아니지만 공식 문서에 공개된 결과예요. InstantTensor는 모델 크기와 GPU 구성에 따라 Safetensors 대비 수십 배의 로딩 속도 향상을 보여줘요:
| Model | GPU | Backend | Load Time (s) | Throughput (GB/s) | Speedup |
|---|---|---|---|---|---|
| Qwen3-30B-A3B | 1*H200 | Safetensors | 57.4 | 1.1 | 1x |
| Qwen3-30B-A3B | 1*H200 | InstantTensor | 1.77 | 35 | 32.4x |
| DeepSeek-R1 | 8*H200 | Safetensors | 160 | 4.3 | 1x |
| DeepSeek-R1 | 8*H200 | InstantTensor | 15.3 | 45 | 10.5x |
전체 벤치마크 결과는 https://github.com/scitix/InstantTensor/blob/main/docs/benchmark.md 를 참고하세요.
InstantTensor은 분산 로딩으로 여러 GPU에 가중치를 병렬로 읽고, 파이프라인 프리페치로 읽는 동안 다음 청크를 미리 준비하며, 직접 I/O로 CPU 메모리를 경유하지 않는 등 여러 기법을 결합해 매우 높은 로딩 처리량을 달성해요. 대형 모델을 서빙하거나 여러 번 재시작해야 하는 배포에서 스타트업 시간을 크게 줄일 수 있어요.
동작 방식과 배포 시 고려 사항
InstantTensor은 단일 스트림에서 어떤 CUDA 디바이스든 직접 Safetensors 가중치를 읽는 것을 목표로 해요. 이를 위해 분산 로딩(여러 GPU가 병렬로 가중치를 읽음), 파이프라인 프리페치(청크를 읽는 동안 다음 청크를 미리 큐에 적재), 직접 I/O(CPU 메모리를 거치지 않음)를 조합해요. GDS가 지원되는 환경에서 추가 가속을 얻을 수 있어요. 대형 모델의 스타트업 시간이 병목인 배포, 특히 warm-up 시간을 줄여 SLO를 맞춰야 하는 온라인 서빙에서 유용해요. 단, --load-format instanttensor는 CUDA 환경이 필요하며 비 CUDA 백엔드(CPU, ROCm 등)에서는 사용할 수 없어요.