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 模型。