LLM 클래스 API 레퍼런스 (vllm.LLM)
LLM 클래스 API 레퍼런스 (vllm.LLM)
vLLM의 추론은 대부분 이 LLM 클래스에서 시작돼요. 주어진 프롬프트와 샘플링 파라미터로 텍스트를 생성하는 역할을 하는데, 한 건씩 처리하는 게 아니라 지능적인 배치 메커니즘과 효율적인 메모리 관리를 이용해서 여러 프롬프트를 묶어 처리해요. 이 문서는 그 LLM 클래스의 생성자와 핵심 메서드를 정리한 레퍼런스예요.
생성자 파라미터
LLM(...)을 만들 때 받는 주요 인자들이에요. 대부분 모델을 어떻게 불러올지를 정해요.
model(str) — HuggingFace Transformers 모델의 이름이나 경로. 가장 중요한 인자예요.tokenizer— 모델과 다른 토크나이저를 쓰고 싶을 때 따로 지정해요.dtype— 가중치를 불러올 때 쓸 데이터 타입.auto로 두면 모델 config의dtype속성을 따르는데, config이float32면 대신float16을 써요.quantization— 모델 가중치를 양자화하는 방식.tokenizer_revision— 쓸 토크나이저 버전(브랜치 이름, 태그, 커밋 id).chat_template— 채팅에 적용할 템플릿.seed— 샘플링 랜덤 넘버 생성기를 초기화하는 시드.return_sampling_mask— 각각 샘플링한 토큰의 후처리 지원 집합을 돌려줄지 여부.spec_method/spec_model— 스펙큘레이티브 디코딩의method·model최상위 별칭.
생성 (Generative) API
LLM.generate(prompts, sampling_params=None, ...)— 주어진 입력 프롬프트에 대한 완성문(completion)을 생성해요. 성능을 위해 모든 프롬프트를 하나의 리스트에 담아 한 번에 넘기는 걸 권장해요.sampling_params를 하나만 주면 모든 프롬프트에 그대로 적용되고,None이면 기본값을 써요.LLM.chat(messages, sampling_params=None, ...)— 채팅 대화에 대한 응답을 생성해요. 내부적으로 토크나이저로 채팅 메시지를 텍스트 프롬프트로 변환한 뒤generate를 호출해요. 각 메시지는role과content키를 가진 딕셔너리예요.
비동기 큐 API (Asynchronous Queue)
LLM.enqueue(prompts, ...)— 완료를 기다리지 않고 프롬프트를 생성 큐에 넣어요.LLM.enqueue_chat(messages, ...)— 채팅 대화를 기다리지 않고 큐에 넣어요.LLM.wait_for_completion(output_type=None, ...)— 큐에 넣은 모든 요청이 끝날 때까지 기다렸다가 결과를 돌려줘요.enqueue후에 결과를 받아오는 데 써요.
Pooling API
LLM.classify(...)— 분류 모델에만 적용돼요.LLM.embed(...)— 임베딩 모델에만 적용돼요.LLM.score(...)— 스코어 모델(크로스 인코더·바이 인코더·late-interaction)에 적용돼요.LLM.encode(...)— 모든 pooling 모델에 적용돼요.
그 외 API
LLM.collective_rpc(method, timeout=None, args=(), kwargs=None)— 모든 워커에서 메서드를 집합적으로 실행해요.method가 콜러블이면 모든 워커로 직렬화되어 보내져 실행돼요.timeout은 실행을 기다리는 최대 시간(초)이고,None이면 무한정 기다려요.LLM.get_metrics()— Prometheus에서 집계된 전체 메트릭 스냅샷을 돌려줘요. V1 LLM 엔진에서만 사용 가능해요.
핵심 포인트
LLM객체 하나로 배치 추론을 하려면 프롬프트를 전부 리스트로 묶어generate에 넘기는 게 처리량 면에서 가장 좋아요.- 완료까지 기다리지 않고 큐에 쌓는
enqueue류 API는 대용량 작업을 비동기로 돌릴 때 유용해요. get_metrics와 같은 일부 메서드는 V1 엔진 전용이라, 사용 중인 엔진 버전을 확인해야 해요.