jmaczan/tiny-vllm

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

What it solves

tiny-vllm 是一个高性能 LLM 推理引擎,旨在成为 vLLM 的更小、更具教育意义的版本。它提供了在 NVIDIA GPU 上运行大型语言模型(LLM)所需的复杂操作的实用实现,让用户能够从零开始使用 C++ 和 CUDA 构建推理服务器。

How it works

该项目使用 CUDA kernel 实现完整的 LLM 前向传播(prefill 和 decode)所有计算。它专门针对 Llama 3.2 1B Instruct 架构,并从 Safetensors 文件加载模型权重。关键技术组件包括:

  • Memory Management: 实现 KV 缓存和 PagedAttention,以在生成 token 时优化内存使用。
  • Batching: 支持静态和连续批处理,以并行处理多个请求。
  • Computational Optimizations: 使用在线 softmax 和类似 FlashAttention 的机制提升效率。
  • Core Operations: 在 CUDA 中直接实现 RMSNorm、RoPE、SiLU 激活和前馈网络(FFN)等关键 LLM 组件。

Who it’s for

该项目面向开发者、学生和讲师,帮助他们理解 LLM 推理引擎的内部机制。特别适合具备 C++ 和 CUDA 背景,想通过动手实践学习现代 LLM 服务背后数学和工程原理的人。

Highlights

  • Full CUDA Implementation: 所有计算均使用自定义 CUDA kernel 完成,以实现最大硬件效率。
  • Advanced Inference Techniques: 包含 PagedAttention 和连续批处理,镜像生产级引擎(如 vLLM)的功能。
  • Educational Focus: 既是源码仓库也是引导课程,从零推导所需的数学和逻辑。
  • Llama 3.2 Support: 专门优化以运行 Llama 3.2 1B Instruct 模型。