오프라인 추론

오프라인 추론 (Offline Inference)

vLLM은 서버를 띄우지 않고도, 여러분의 코드 안에서 직접 모델을 실행할 수 있어요. 바로 vLLM의 LLM 클래스를 쓰는 거예요. 배치 처리나 실험, 파이프라인 안에서 모델을 돌릴 때 아주 유용하죠. 이 페이지에서 LLM 클래스가 제공하는 다양한 API를 정리해볼게요.

출처: vLLM 공식 문서 — serving/offline_inference

오프라인 추론은 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 모델에 대한 자세한 내용은 이 페이지를 참고하세요.

프로파일링 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)

오프라인 추론 (Offline Inference)

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 문서를 참고하세요.

더 알아보기 (Learn more)