InferSim — 軽量LLM推論性能シミュレータ

Tool

概要

InferSimは、LLM推論における性能見積りを素早く行える軽量シミュレータです。入力としてモデルの計算量(FLOPs)、GPUの理論演算性能(FLOPS)、メモリ帯域幅、そして実運用に近いMFU(モデルFLOPs利用率)を与えることで、TTFT(最初のトークンが出力されるまでの時間)、TPOT(トークン当たり時間)、TGS(tokens/GPU/second)といった主要指標を出力します。外部ライブラリに依存しない純Python実装のため導入が容易で、設計初期のトレードオフ検討やハードウェア比較、スケールアウトの影響評価に向いています(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 18
  • フォーク数: 1
  • ウォッチャー数: 18
  • コミット数: 6
  • ファイル数: 18
  • メインの言語: Python

主な特徴

  • 純Python、外部依存無し:軽量で導入が簡単、環境汚染が少ない
  • 主要推論指標を計算:TTFT、TPOT、TGSなどを見積もれる
  • ハードウェア特性を考慮:GPU FLOPS、メモリ帯域、MFUを入力して現実的な性能を推定
  • マルチGPUの基本モデル:複数GPUにまたがる推論挙動の影響を評価可能

技術的なポイント

InferSimの核は「計算量 × 実効ハードウェア性能」で推論性能を予測する簡潔なモデルにあります。まずモデル側はレイヤー構成から導出したFLOPs(総FLOPsやトークン当たりFLOPs)を入力します。ハード側はGPUの理論ピークFLOPSに加え、メモリ帯域幅を与え、さらにMFU(実運用で得られるFLOPs利用率)を考慮して「実効演算スループット」を算出します。MFUは実際のカーネル実測に基づく係数で、例えばattentionやmatmulなどのカーネルが理想性能をどの程度引き出せるかを反映します。

これにより算出される指標は次の通りです。TTFT(Time-to-First-Token)は、最初のトークンを出力するまでにシーケンス開始から必要となる順次処理の遅延を表し、バッチング/パイプラインの影響を受けます。TPOT(Time-Per-Token)は追加トークン生成にかかる平均時間、TGS(tokens/GPU/second)はスループットの直感的指標です。InferSimは演算バウンドとメモリバウンドの両方を評価し、どちらがボトルネックかを明示します。例えば、FLOPsに対して実効FLOPSが不足すれば演算バウンド、メモリ転送が支配的であればメモリバウンドとして遅延が評価されます。

実装上の特徴として、サードパーティのベンチマーク依存を避けるためMFU値をユーザー入力または付属のベンチマーク結果から与える方式を採用しています。これにより新しいGPUや新しいカーネル最適化を試す際の柔軟性が確保されます。一方、シミュレータは細かなカーネル起動オーバーヘッド、ランタイムスケジューリング、CUDAストリームの相互作用、通信ライブラリ(NCCL)による実測遅延等の低レベル効果は簡略化しているため、絶対値の精度よりは設計比較や感度分析に強みがあります。

拡張ポイントとして、量子化/低精度演算のFLOPs換算、GPU間通信オーバーヘッドの詳細モデル化、動的バッチングやトークンごとの分岐(Early exitなど)のモデリングを導入すれば、より現実的な推論パイプライン評価が可能になります。現状は「設計における迅速な見積り」と「どの要因がボトルネックかを把握する」ためのツールとして最適化されています(約700字)。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • .gitignore: file
  • .pre-commit-config.yaml: file
  • LICENSE: file
  • README.md: file

…他 13 ファイル

まとめ

軽量で導入が容易なLLM推論性能の設計検討ツール。概算評価と感度分析に有用(約50字)。

リポジトリ情報:

READMEの抜粋:

InferSim: A Lightweight LLM Inference Performance Simulator

InferSim is a lightweight simulator for LLM inference, written in pure Python without any 3rd-party depenencies. It calculates the TTFT, TPOT and throughput TGS (tokens/GPU/second) based on computation complexity FLOPs (Floating-Point Operations), GPU computing power FLOPS (Floating-Point Operations per Second), GPU memory bandwidth and MFU (Model FLOPs Utilization) obtained by benchmarking the state-of-the-art LLM kernels. For multi…