FlashInfer LLMカーネルライブラリ概要
FlashInferは、大規模言語モデル(LLM)のサービス提供と推論に特化した高性能カーネルライブラリです。FlashAttention、SparseAttention、PageAttention、Samplingなど、多様なGPUカーネル実装を提供します。本記事では、FlashInferのインストール方法、主要機能、および一般的な問題の解決策を詳しく解説します。
主要機能
- 高性能スパース/デンス注意カーネル:CUDAコアおよびテンソルコア上でスパース(ページ)/デンスKVキャッシュによる単一/バッチ注意計算をサポート
- 負荷分散スケジューリング:計画/実行段階を分離することで可変長入力の計算をスケジュールし、負荷不均衡を緩和
- メモリ効率最適化:階層型KVキャッシュの多段連結注意を提供し、ヘッドクエリ融合によるグループクエリ注意の高速化をサポート
- 高度なカスタマイズ性:JITコンパイルによるカスタム注意バリエーションの実装をサポート
- CUDAGraphとtorch.compile互換:低遅延推論のためにCUDAGraphsとtorch.compileでキャプチャ可能
インストール方法
PyPIからのインストール
最も簡単なインストール方法は、pipを使用してコアパッケージをインストールすることです:
pip install flashinfer-python
パッケージオプション:
flashinfer-python:コアパッケージ、初回使用時にカーネルをコンパイル/ダウンロードflashinfer-cubin:すべてのGPUアーキテクチャをサポートするプリコンパイル済みカーネルバイナリflashinfer-jit-cache:特定のCUDAバージョン向けのプリビルドカーネルキャッシュ
より高速な初期化とオフライン使用のため、オプションパッケージのインストールを推奨します:
pip install flashinfer-python flashinfer-cubin
# CUDAバージョンに応じたJITキャッシュパッケージを選択
pip install flashinfer-jit-cache --index-url https://flashinfer.ai/whl/cu129
ソースからのインストール
最新機能の使用やカスタム開発が必要な場合、ソースからインストールできます:
git clone https://gitcode.com/gh_mirrors/fl/flashinfer.git --recursive
cd flashinfer
python -m pip install -v .
開発モードでのインストール:
python -m pip install --no-build-isolation -e . -v
オプションパッケージのビルド:
flashinfer-cubinのビルド:
cd flashinfer-cubin
python -m build --no-isolation --wheel
python -m pip install dist/*.whl
flashinfer-jit-cacheのビルド(カスタムターゲットGPUアーキテクチャ):
export FLASHINFER_CUDA_ARCH_LIST="7.5 8.0 8.9 10.0a 10.3a 11.0f 12.0f"
cd flashinfer-jit-cache
python -m build --no-isolation --wheel
python -m pip install dist/*.whl
Nightlyバージョンのインストール
最新機能をテストする場合、nightlyバージョンをインストールできます:
# コアおよびcubinパッケージ
pip install -U --pre flashinfer-python --index-url https://flashinfer.ai/whl/nightly/ --no-deps
pip install flashinfer-python # PyPIから依存関係をインストール
pip install -U --pre flashinfer-cubin --index-url https://flashinfer.ai/whl/nightly/
# JITキャッシュパッケージ(CUDAバージョンに応じて選択)
pip install -U --pre flashinfer-jit-cache --index-url https://flashinfer.ai/whl/nightly/cu129
インストールの検証
インストール完了後、以下のコマンドでインストールを検証します:
flashinfer show-config
このコマンドは以下を表示します:
- FlashInferバージョンとインストール済みパッケージ
- PyTorchとCUDAバージョン情報
- 環境変数とアーティファクトパス
- ダウンロード済みcubinの状態とモジュールコンパイル状態
使用例
基本的な使用例を以下に示します:
import torch
import flashinfer
# パラメータの初期化
cache_size = 2048
kv_heads = 32
embedding_dim = 128
# KVキャッシュの作成
key_tensor = torch.randn(cache_size, kv_heads, embedding_dim).half().to(0)
value_tensor = torch.randn(cache_size, kv_heads, embedding_dim).half().to(0)
# デコード注意の計算
query_heads = 32
query_tensor = torch.randn(query_heads, embedding_dim).half().to(0)
output_tensor = flashinfer.single_decode_with_kv_cache(query_tensor, key_tensor, value_tensor)
一般的な問題の解決策
問題1:CUDAまたはPyTorchのバージョン非互換
問題:インストール時にバージョン非互換エラーが発生
解決手順:
- CUDAとPyTorchのバージョンがFlashInferと互換性があるか確認
- 特定バージョンのインストールコマンドを使用(例:CUDA 12.4とPyTorch 2.4の場合):
pip install flashinfer -i https://flashinfer.ai/whl/cu124/torch2.4 - 互換性のあるCUDAとPyTorchバージョンを手動でインストール
問題2:メモリ不足エラー
問題:大規模モデルまたは大規模バッチデータ処理時にメモリ不足
解決手順:
- バッチサイズを削減してメモリ使用量を低減
- FlashInferがサポートするページングメモリ機能を使用
- より小さいモデルの使用またはモデル量子化を検討
問題3:未定義シンボルエラー
問題:API呼び出し時に未定義シンボルエラーが発生
解決手順:
- 必要なすべてのリンクライブラリが正しくインストールされ、バージョンが一致しているか確認
- FlashInferと関連依存ライブラリを再コンパイル
- 公式ドキュメントを参照し、API呼び出し方法が正しいことを確認
GPUアーキテクチャサポート
FlashInferは現在NVIDIA SMアーキテクチャ75以上をサポートし、103、110、120、121アーキテクチャでベータサポートを提供しています。
プロジェクト応用例
FlashInferは以下の先進的なプロジェクトで採用されています:
- MLC-LLM
- Punica
- SGLang
- ScaleLLM
- vLLM
- TGI
- lorax
- TensorRT-LLM
- LightLLM
本ガイドに従うことで、FlashInferの正常なインストールと使用、および一般的な問題の解決が可能になります。FlashInferの強力な機能により、大規模言語モデルのサービス提供と推論シーンで卓越したパフォーマンスを実現できます。