오프라인 추론
오프라인 추론 (Offline Inference)
vLLM은 서버를 띄우지 않고도, 여러분의 코드 안에서 직접 모델을 실행할 수 있어요. 바로 vLLM의 LLM 클래스를 쓰는 거예요. 배치 처리나 실험, 파이프라인 안에서 모델을 돌릴 때 아주 유용하죠. 이 페이지에서 LLM 클래스가 제공하는 다양한 API를 정리해볼게요.
오프라인 추론은 vLLM의 LLM 클래스를 사용해 여러분의 코드에서 가능해요.
모델 유형 (Model Types)
vLLM 모델은 두 가지 유형으로 나눌 수 있어요.
- 생성형 모델 (Generative Models): 텍스트 완성이나 챗 응답을 생성하는 모델이에요 (예: LLaMA, Qwen, DeepSeek). 이 모델에는
LLM.generate()와LLM.chat()을 사용해요. - Pooling 모델: 내용을 생성하지 않는 모델이에요. 주로 분류와 검색 태스크에 쓰이죠 (예: bge-m3, Qwen3 Reranker).
생성형 API (Generative APIs)
생성형 모델에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.generate- 주어진 입력 프롬프트에 대한 완성을 생성해요.LLM.chat- 챗 대화에 대한 응답을 생성해요.
비동기 큐 API (Asynchronous Queue APIs)
LLM.enqueue- 완료를 기다리지 않고 프롬프트를 생성 큐에 넣어요.LLM.enqueue_chat- 기다리지 않고 챗 대화를 생성 큐에 넣어요.LLM.wait_for_completion- 큐에 넣은 모든 요청이 완료될 때까지 기다리고 결과를 반환해요.
Pooling API (Pooling APIs)
pooling 모델에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.classify- 분류 모델에만 사용 가능.LLM.embed- 임베딩 모델에만 사용 가능.LLM.score- score 모델(cross-encoder, bi-encoder, late-interaction)에 사용 가능.LLM.encode- 모든 pooling 모델에 사용 가능.
프로파일링 API (Profiling APIs)
프로파일링에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.start_profile- 선택적인 커스텀 트레이스 접두사로 프로파일링을 시작해요.LLM.stop_profile- 진행 중인 프로파일링 세션을 중지해요.
슬립 모드 API (Sleep Mode APIs)
슬립 모드에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.sleep- 엔진을 슬립 모드로 전환해요.LLM.wake_up- 슬립 모드에서 엔진을 깨워요.
캐시 관리 API (Cache Management APIs)
LLM.reset_mm_cache- 멀티모달 캐시를 리셋해요.LLM.reset_prefix_cache- prefix 캐시를 리셋해요.
메트릭스 API (Metrics APIs)
메트릭스에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.get_metrics- Prometheus에서 집계된 메트릭스의 스냅샷을 반환해요.
가중치 전송 API (RL 학습) (Weight Transfer APIs)
가중치 전송(Weight Transfer)에 대한 자세한 내용은 이 페이지를 참고하세요.
LLM.init_weight_transfer_engine- RL 학습용 가중치 전송 엔진을 초기화해요.LLM.start_weight_update- 새 가중치 업데이트 주기를 시작해요.LLM.update_weights- 모델 가중치를 업데이트해요.LLM.finish_weight_update- 현재 가중치 업데이트 주기를 끝내요.LLM.update_weight_version- 모델 가중치를 업데이트하지 않고 가중치 버전을 설정해요.LLM.get_weight_version- 마지막으로 커밋된 가중치 버전을 반환해요.
추가 API (Additional APIs)
LLM.collective_rpc- 모든 worker에 걸쳐 메서드나 callable을 집단적으로 실행해요.LLM.apply_model- 각 worker 안의 모델에 함수를 직접 적용해요.
API 참조 (API Reference)
Ray Data LLM API
Ray Data LLM은 vLLM을 기본 엔진으로 쓰는 대안적인 오프라인 추론 API예요. 이 API는 대규모, GPU 효율적 추론을 단순화하는 여러 "batteries-included" 기능을 추가해요.
- 클러스터 총 메모리를 초과하는 데이터셋을 처리하는 스트리밍 실행.
- Ray 클러스터에 걸쳐 작업을 분산하는 자동 샤딩, 로드 밸런싱, 자동 스케일링 (내장 fault tolerance 포함).
- vLLM 레플리카를 포화 상태로 유지하고 GPU 사용률을 극대화하는 연속 배칭(continuous batching).
- 효율적인 멀티-GPU 추론을 가능케 하는 tensor·pipeline 병렬의 투명한 지원.
- 대부분의 인기 파일 포맷과 클라우드 객체 스토리지 읽기/쓰기.
- 코드 변경 없이 워크로드 확장.
import ray # Requires ray>=2.44.1
from ray.data.llm import vLLMEngineProcessorConfig, build_llm_processor
config = vLLMEngineProcessorConfig(model_source="unsloth/Llama-3.2-1B-Instruct")
processor = build_llm_processor(
config,
preprocess=lambda row: {
"messages": [
{"role": "system", "content": "You are a bot that completes unfinished haikus."},
{"role": "user", "content": row["item"]},
],
"sampling_params": {"temperature": 0.3, "max_tokens": 250},
},
postprocess=lambda row: {"answer": row["generated_text"]},
)
ds = ray.data.from_items(["An old silent pond..."])
ds = processor(ds)
ds.write_parquet("local:///tmp/data/")
Ray Data LLM API에 대한 자세한 내용은 Ray Data LLM 문서를 참고하세요.