Tiny-vLLM, C++와 CUDA로 LLM inference를 끝까지 따라가는 교재형 엔진

Tiny-vLLM은 “작은 vLLM”을 표방하지만, 장난감 예제만은 아니다. C++와 CUDA로 Llama 3.2 1B Instruct를 실제로 로드하고, prefill과 decode, KV cache, static batching, continuous batching, online softmax, FlashAttention 계열 접근, PagedAttention까지 구현하는 inference engine이다. 저장소는 코드와 함께 긴 course 형태의 README를 제공한다.

읽을 만한 지점은 구현 범위와 설명 방식이 같이 붙어 있다는 데 있다. 많은 LLM inference 자료는 논문, 프레임워크 코드, 블로그 조각으로 흩어져 있다. Tiny-vLLM은 Safetensors 파일을 읽는 단계부터 tensor shape, bfloat16, CUDA kernel, cuBLAS, attention, Paged KV cache까지 순서대로 밟는다. 성능을 극단까지 밀어붙이는 프로젝트라기보다, 왜 inference server가 이런 구조를 가져야 하는지 손으로 복원하는 쪽에 가깝다.

HN 댓글도 그 부분을 파고들었다. 작성자는 README를 가장 중요한 부분으로 봤다고 설명했고, 댓글에서는 lesson 형태의 문서가 CUDA와 LLM inference를 처음 연결하는 사람에게 유용하다는 반응이 이어졌다. llama.cpp 초창기를 떠올리게 한다는 말도 있었다. 작은 코드베이스가 큰 프레임워크보다 개념을 더 빨리 보여줄 때가 있다는 뜻이다.

실무 관점에서는 제한도 분명하다. 특정 모델과 NVIDIA GPU, CUDA 환경을 전제로 하고, 범용 inference serving의 운영 기능을 모두 담지는 않는다. 그래도 vLLM, TensorRT-LLM, llama.cpp 같은 시스템을 읽기 전에 메모리 배치와 attention 비용을 몸으로 이해하려는 개발자에게는 좋은 진입점이다.