jmaczan/tiny-vllm

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

해결하는 문제

대규모 언어 모델을 배포하려면 GPU에서 모델을 효율적으로 실행하고 여러 요청을 동시에 처리할 수 있는 추론 서버가 필요합니다. tiny-vllm은 C++과 CUDA로 작성된 처음부터 구현된 추론 엔진을 제공하여 실제 모델(Llama 3.2 1B Instruct)을 로드하고 성능 지향 기술로 전체 순전파를 실행하는 방법을 보여줍니다. 또한 기반이 되는 수학과 엔지니어링 결정을 가르치는 학습 자료로도 사용됩니다.

작동 방식

엔진은 Safetensors 모델 파일을 읽고 bfloat16 가중치를 추출하며 Llama 3.2 아키텍처를 구현합니다. 임베딩, RMSNorm, RoPE, 어텐션(FlashAttention 유사 온라인 소프트맥스), 피드포워드 레이어용 CUDA 커널을 포함합니다. KV 캐싱, 정적 및 연속 배칭, PagedAttention을 사용하여 메모리와 동시 요청을 효율적으로 관리합니다. 코드는 CMake로 빌드되며 CUDA/cuBLAS를 통해 NVIDIA GPU에서 실행되고 ROCm/HIP를 통한 AMD 지원도 선택적으로 제공됩니다.

대상 독자

LLM 추론 내부를 이해하는 데 관심이 있는 개발자, CUDA 및 고성능 컴퓨팅을 배우는 학생, 실습형 교육 자료를 원하는 강사에게 적합합니다. C++에 대한 기본적인 이해와 신경망에 대한 어느 정도의 친숙함을 가정하지만, 각 개념을 단계별로 설명합니다.

주요 특징

  • 프리필 및 디코드 단계를 갖춘 추론 서버의 전체 구현
  • 모든 주요 연산에 대한 CUDA 커널(AMD GPU용 선택적 HIP 지원 포함)
  • 처리량 향상을 위한 PagedAttention 및 연속 배칭 포함
  • 교육적: 각 구성 요소가 첫 번째 원리에서 파생되어 자세히 설명됨
  • 최소한의 외부 종속성(nlohmann/json만)

관련

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