vLLM-Project/Speculators
vLLM-Project/Speculators
Speculators는 스페큘레이티브 디코딩을 통해 LLM 추론을 가속화하는 라이브러리예요. vLLM과 자연스럽게 통합되면서 효율적인 드래프트 모델 학습을 제공하고, 결과적으로 레이턴시를 줄이고 처리량(throughput)을 높이는 데 도움을 줍니다.
Speculators가 제공하는 핵심 기능은 다음과 같아요.
- vLLM을 활용한 오프라인 학습 데이터 생성: vLLM을 사용해 hidden states를 생성할 수 있어요. 데이터 샘플은 디스크에 저장되고 드래프트 모델 학습에 사용될 수 있죠.
- 드래프트 모델 학습 지원: 단일 및 다중 레이어 드래프트 모델의 E2E 학습을 지원해요. non-MoE와 MoE 모델 모두 학습을 지원합니다.
- 표준화되고 확장 가능한 형식: 스페큘레이티브 모델을 정의하기 위한 Hugging Face 호환 형식을 제공하고, 외부 연구 저장소를 표준 speculators 형식으로 변환하는 도구도 있어 쉽게 도입할 수 있어요.
- 완벽한 vLLM 통합: vLLM에 바로 배포할 수 있도록 설계되어, 최소한의 오버헤드로 저지연의 프로덕션급 추론을 가능하게 합니다.
왜 Speculators를 써야 할까요? (Why use Speculators?)
대형 언어 모델은 한 번에 한 토큰씩 텍스트를 생성해요. 이게 근본적인 병목인 이유는, 각 토큰마다 모델 전체 forward pass가 필요하고, 메모리 바운드 연산을 기다리는 동안 GPU 연산 자원이 놀기 때문이죠. 스페큘레이티브 디코딩은 더 작고 빠른 "드래프트" 모델(대개 단일 트랜스포머 레이어)로 여러 토큰을 미리 예측하고, 이어서 주 모델로 토큰들을 병렬로 검증하는 방식으로 이 문제를 해결해요.
스페큘레이티브 디코딩의 장점은 다음과 같아요.
- 레이턴시 감소: 챗봇이나 코드 어시스턴트 같은 대화형 애플리케이션에서 토큰 생성이 2~3배 빨라져요. 응답 시간이 사용자 경험에 직접 영향을 주는 곳이라 특히 중요하죠.
- GPU 활용도 개선: 대형 모델의 레이턴시/메모리 바운드 디코딩을, 컴퓨트 바운드인 병렬 토큰 검증으로 전환해서 하드웨어 활용을 높여요.
- 품질 손실 없음: 스페큘레이티브 디코딩은 타깃 모델을 근사하지 않아요. 받아들여진 토큰은 같은 샘플링 설정에서 타깃 모델이 만들었을 토큰과 정확히 동일해요. 거부된 드래프트 토큰은 버려지고 타깃 모델이 다시 생성합니다.
- 비용 효율성: 각 요청이 하드웨어를 점유하는 시간을 줄여 GPU 하나로 더 많은 요청을 처리할 수 있어요.
Speculators는 대화형 AI, 인터랙티브 코딩 어시스턴트, 스트리밍 텍스트 생성처럼 사용자가 실시간으로 응답을 기다리는 레이턴시 민감 애플리케이션에서 특히 가치가 있어요.