tiny-vllm은 vLLM의 소형 교육용 버전이다. C++과 CUDA로 LLM 추론 엔진을 바닥부터 구현하는 단계별 과정을 제공하며, 완성된 소스 코드와 개념 해설이 하나의 저장소에 담겨 있다. Llama 3.2 1B Instruct를 실제로 로드하고 실행하는 전체 동작하는 추론 서버를 결과물로 얻는다.
구현하는 핵심 구성 요소
✓ Safetensors에서 실제 LLM 모델 로드 (Llama 3.2 1B Instruct)
✓ 완전한 LLM 순전파 (프리필 + 디코드)
✓ 모든 연산을 CUDA 커널로 구현
✓ KV 캐시
✓ 정적 배칭(static batching)
✓ 연속 배칭(continuous batching)
✓ 온라인 소프트맥스 / FlashAttention 스타일
✓ PagedAttention학습 경로
주요 챕터 순서는 LLM 추론의 개념 층위를 따른다:
- Safetensors와 모델 가중치 로딩
- bfloat16 부동소수점의 작동 원리
- 토큰화 및 임베딩
- CUDA 커널 엔지니어링 (임베딩, RMSNorm, RoPE)
- KV 캐시가 필요한 이유와 구현
- 어텐션, GQA, 인과 마스크
- 정적 배칭 → 연속 배칭 전환
- PagedAttention과 페이지드 KV 캐시
훈련(training)은 다루지 않는다. 훈련된 모델을 NVIDIA GPU에서 빠르게, 여러 요청을 병렬로 실행하는 추론에 집중한다.
개발 환경
- Linux x64, CUDA Toolkit 13.1, C++ 17, GCC 15.2.1
- NVIDIA GPU 필요 (개발자: RTX 5090)
- 외부 의존성:
nlohmann/json단일 헤더 파일만 포함 - 빌드 및 실행:
./test.sh
누구에게 적합한가
- ML 시스템 엔지니어 지망생: LLM 추론 스택의 내부를 CUDA 수준까지 이해하고 싶은 경우
- 강의자·교수: C++/CUDA 기반 추론 엔진 강의 교재가 필요한 경우
- vLLM 기여 희망자: vLLM의 핵심 개념을 소규모 구현으로 먼저 체득하고 싶은 경우
일반 ML 엔지니어가 vLLM을 사용하기만 한다면 이 과정은 과도하다. C++과 CUDA를 다룰 의지가 있는 사람에게 적합하다.
관련 문서
- llm-inference — LLM 추론 개념 해설 (토큰화부터 KV 캐시까지)
- vllm-recipes — vLLM 실전 실행 레시피
- llm-inference-tutorial-continuous-batching — 연속 배칭 원리와 구현
참고 자료
- jmaczan/tiny-vllm — GitHub 공식 저장소