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に似たオンラインsoftmax)、フィードフォワード層用のCUDAカーネルが含まれています。KVキャッシング、静的および連続バッチ処理、PagedAttentionを使用して、メモリと同時リクエストを効率的に管理します。コードはCMakeでビルドされ、CUDA/cuBLASを介してNVIDIA GPU上で実行され、ROCm/HIPを介したAMDサポートもオプションで提供されます。
対象読者
LLM推論の内部を理解することに興味がある開発者、CUDAとハイパフォーマンスコンピューティングを学ぶ学生、実践的な教育リソースを求める講師向けです。C++の基本的な理解とニューラルネットワークに関するある程度の知識を前提としていますが、各概念を順を追って説明します。
ハイライト
- プリフィルとデコードのステップを備えた推論サーバーの完全な実装
- すべての主要操作のCUDAカーネル(AMD GPU用のオプションのHIPサポート付き)
- スループット向上のためのPagedAttentionと連続バッチ処理を搭載
- 教育的:各コンポーネントが第一原理から詳細に説明されています
- 最小限の外部依存関係(nlohmann/jsonのみ)
関連
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト