CoreWeave의 Tensorizer로 모델 로드하기
CoreWeave의 Tensorizer로 모델 로드하기
vLLM은 CoreWeave의 Tensorizer로 모델을 로드하는 것을 지원해요. 디스크, HTTP/HTTPS 엔드포인트, 또는 S3 엔드포인트에 직렬화(serialize)된 vLLM 모델 텐서를 런타임에 GPU로 매우 빠르게 역직렬화할 수 있어요. 이 덕분에 Pod 시작 시간과 CPU 메모리 사용이 크게 줄어듭니다. 텐서 암호화도 지원돼요.
vLLM은 Tensorizer를 모델 로딩 메커니즘에 완전히 통합했어요. 아래에서는 vLLM에서 Tensorizer를 시작하는 방법을 간단히 소개합니다.
Tensorizer 설치
tensorizer를 설치하려면 pip install vllm[tensorizer]를 실행하세요.
기본 (The basics)
Tensorizer로 모델을 로드하려면 먼저 모델이 Tensorizer에 의해 직렬화되어 있어야 해요. 예제 스크립트가 이 과정을 처리합니다.
facebook/opt-125m을 직렬화하고 추론용으로 로드하는 기본 예제를 살펴볼게요.
Tensorizer로 vLLM 모델 직렬화하기
모델을 직렬화하려면 예제 스크립트를 필요한 CLI 인자와 함께 호출해요. S3 버킷 s3://my-bucket에 저장한다고 가정해볼게요.
python examples/features/tensorize_vllm_model.py \
--model facebook/opt-125m \
serialize \
--serialized-directory s3://my-bucket \
--suffix v1
이렇게 하면 모델 텐서가 s3://my-bucket/vllm/facebook/opt-125m/v1에 저장돼요. 텐서화된 모델에 LoRA 어댑터를 적용하려면 위 명령에 LoRA 어댑터의 HF id를 전달할 수 있고, 아티팩트도 함께 저장됩니다.
python examples/features/tensorize_vllm_model.py \
--model facebook/opt-125m \
--lora-path <lora_id> \
serialize \
--serialized-directory s3://my-bucket \
--suffix v1
Tensorizer로 모델 서빙하기
모델을 원하는 위치에 직렬화했다면 vllm serve나 LLM 엔트리포인트로 로드할 수 있어요. 모델을 저장한 디렉토리를 model 인자에 전달하면 됩니다.
vllm serve s3://my-bucket/vllm/facebook/opt-125m/v1 --load-format tensorizer --enable-lora
또는 LLM()으로:
from vllm import LLM
llm = LLM("s3://my-bucket/vllm/facebook/opt-125m/v1", load_format="tensorizer", enable_lora=True)
Tensorizer 구성 옵션
tensorizer의 핵심 객체인 TensorSerializer와 TensorDeserializer는 직렬화와 역직렬화를 각각 수행해요. 여기에 임의의 kwargs를 전달해 직렬화/역직렬화 과정을 구성할 수 있는데, model_loader_extra_config에 serialization_kwargs와 deserialization_kwargs 키로 제공하면 됩니다.
예를 들어 직렬화 시 CPU 동시성을 limit_cpu_concurrency 파라미터로 제한할 수 있어요.
python examples/features/tensorize_vllm_model.py \
--model facebook/opt-125m \
--lora-path <lora_id> \
serialize \
--serialized-directory s3://my-bucket \
--serialization-kwargs '{"limit_cpu_concurrency": 2}' \
--suffix v1
역직렬화 중 읽기 동시성을 num_readers 파라미터로 제한할 수도 있어요.
vllm serve s3://my-bucket/vllm/facebook/opt-125m/v1 \
--load-format tensorizer \
--enable-lora \
--model-loader-extra-config '{"deserialization_kwargs": {"num_readers": 2}}'