jmaczan/tiny-vllm

Build your own high performance LLM inference engine in C++ and CUDA - a smaller version of vLLM

tiny‑vllm – 실습 중심의 C++/CUDA LLM 추론 엔진 (및 튜토리얼)

무엇인가요tiny‑vllm은 C++로 작성된 완전한 오픈소스 LLM 추론 서버 구현체이며, CUDA(또는 AMD GPU용으로 옵션인 HIP)를 지원합니다. 엔진의 소스 코드와 함께, 현대적인 트랜스포머 기반 언어 모델의 모든 구성 요소(가중치 로드부터 토큰 생성까지)를 단계별로 설명하는 교육용 강좌도 제공합니다.

왜 중요한가요 – 대부분의 고성능 추론 서버(예: vLLM, TensorRT‑LLM)는 대규모 프로덕션용 코드베이스입니다. tiny‑vllm은 의도적으로 문제를 10억 파라미터의 Llama 3.2 모델로 축소하여, 추론을 빠르게 만드는 CUDA 커널, 메모리 레이아웃, 배치 처리 로직을 학습자가 명확히 이해할 수 있도록 합니다. 따라서 이론(어텐션, RMSNorm, FlashAttention 스타일 소프트맥스, PagedAttention)과 실제로 컴파일하고 실행할 수 있는 시스템 사이의 다리 역할을 합니다.

주요 기능 (README에 기재된 내용)

  • 실제 LLM을 Safetensors 파일에서 로드 (Llama 3.2 1B Instruct, BF16 가중치로 테스트 완료).
  • prefill (프롬프트 처리) 및 decode (단일 토큰 생성)를 모두 지원하는 완전한 포워드 패스.
  • 다음 모든 중량 계산을 커스텀 CUDA 커널로 수행:
    • 임베딩 검색
    • 병렬 리덕션을 사용한 RMSNorm
    • 회전 위치 임베딩 (RoPE)
    • 그룹화 쿼리 어텐션 (GQA)
    • Flash 스타일 온라인 소프트맥스
    • PagedAttention 및 페이지 기반 KV 캐시 (긴 컨텍스트의 메모리 효율성 향상).
  • 두 가지 배치 전략:
    • 정적 배치 – 단순 워크로드용 고정 크기 배치.
    • 연속 배치 – 요청의 동적 추가/제거 가능, 프로덕션 서버를 모방.
  • 옵션으로 AMD GPU 지원은 HIP/hipBLAS를 통해 가능하며, 동일한 CUDA 소스 코드를 얇은 호환성 헤더를 통해 재사용.

기술 스택

  • 언어: C++ 17
  • GPU API: CUDA 13.1 (nvcc) + cuBLAS; AMD GPU용으로 옵션의 HIP.
  • 모델 형식: Safetensors (BF16 가중치).
  • 의존성: 단일 헤더 JSON 파서 nlohmann/json (v3.12.0).
  • 빌드 시스템: CMake (Ninja 지원, -DUSE_HIP=ON으로 전환 가능).

누가 사용해야 하나요

  • 학생 / 자율 학습자 – LLM 추론이 카드레벨에서 어떻게 작동하는지 이해하고 싶은 사람.
  • 강사 – 코드와 서사적 설명을 결합한 교육 자료를 찾는 사람.
  • 엔지니어 – 저수준 성능 기술(FlashAttention, KV 캐시 페이지화)에 관심이 있고, 최소한의 가독성 높은 참조 구현을 원하는 사람.

프로젝트 상태

  • README는 모든 주요 엔진 컴포넌트가 구현되었음을 표시(체크박스 체크됨).
  • test.sh 스크립트는 프로젝트를 빌드하고 간단한 추론 데모를 실행하며, 작성자의 Linux + RTX 5090 환경에서 코드가 컴파일되고 출력이 생성됨을 보여줍니다.
  • 교육 목적을 위해 지속적으로 유지보수 중이며, 빌드 도움을 위한 이슈 제출을 환영합니다.

시작 방법

  1. 리포지토리 클론 후, 필요 시 CUDA/GCC 경로 조정.
  2. CUDA 툴킷(AMD용은 ROCm) 설치 및 호환 GPU 확보.
  3. Hugging Face에서 Llama 3.2 1B Instruct용 model.safetensors 다운로드.
  4. ./test.sh 실행 – 스크립트는 엔진을 빌드하고 최소한의 추론 테스트 실행.
  5. 마크다운 기반 강좌 섹션(예: Tokenization, Attention, Paged KV cache)을 따라가며 이론을 읽고 해당 소스 파일을 확인.

이름의 유래 – 인기 있는 vLLM 프로젝트의 "작고 어린 형제"로 위치지어지며, 기능의 광범위성보다 명확성과 학습을 우선시합니다.


위 모든 세부 정보는 리포지토리의 README에서 직접 인용되었으며, 추가 기능은 추측되지 않았습니다.

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • Dispatch
  • Dispatch