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 カーネルを使用して LLM の全前方パス(prefill と decode)を実装しています。特に Llama 3.2 1B Instruct アーキテクチャを対象とし、Safetensors ファイルからモデル重みをロードします。主な技術要素は以下の通りです。

  • Memory Management: KV キャッシュと PagedAttention を実装し、トークン生成時のメモリ使用を最適化します。
  • Batching: 静的バッチと連続バッチの両方をサポートし、複数リクエストを並列処理します。
  • Computational Optimizations: オンライン softmax と FlashAttention に類似した仕組みを用いて効率を向上させます。
  • Core Operations: CUDA で RMSNorm、RoPE、SiLU 活性化、Feed Forward Network(FFN)などの重要な LLM コンポーネントを直接実装します。

Who it’s for

このプロジェクトは、LLM 推論エンジンの内部メカニズムを理解したい開発者、学生、講師向けです。特に C++ と CUDA のバックグラウンドを持ち、最新の LLM サービングの数学とエンジニアリングをハンズオンで学びたい方に有用です。

Highlights

  • Full CUDA Implementation: すべての計算をカスタム CUDA カーネルで実行し、ハードウェア効率を最大化します。
  • Advanced Inference Techniques: PagedAttention と連続バッチ処理を含み、vLLM のような本番レベルエンジンの機能を再現します。
  • Educational Focus: ソースコードリポジトリとガイドコースの両方として構成され、必要な数学とロジックをゼロから導出します。
  • Llama 3.2 Support: Llama 3.2 1B Instruct モデルの実行に特化して最適化されています。