Home 論文解説: LLM-Inference-Bench — マルチプラットフォームLLM推論ベンチマーク
投稿
キャンセル

📄 論文解説: LLM-Inference-Bench — マルチプラットフォームLLM推論ベンチマーク

本記事は LLM-Inference-Bench: Inference Benchmarking of Large Language Models on AI Accelerators(arXiv:2411.00136、2024年10月31日投稿)の解説記事です。

論文概要(Abstract)

Chitty-Venkata et al.は、LLM推論の計算効率性を評価するための包括的なベンチマークスイート「LLM-Inference-Bench」を提案している。NVIDIAおよびAMDのGPU、Intel HabanaおよびSambaNova等の専用AIアクセラレータ上で、LLaMA、Mistral、Qwenファミリーの7Bおよび70Bモデルの推論性能を体系的に比較評価し、最適な構成を特定するためのインタラクティブダッシュボードを提供している。

この記事は Zenn記事: Ollama本番運用ガイド:Kubernetes・認証・監視で構築するオンプレLLM基盤 の深掘りです。Zenn記事ではNVIDIA A100を前提としたOllama構成を解説しているが、本論文はハードウェア選定の客観的根拠を提供する。

情報源

  • arXiv ID: 2411.00136
  • URL: https://arxiv.org/abs/2411.00136
  • 著者: Krishna Teja Chitty-Venkata, Siddhisanket Raskar, Bharat Kale, Farah Ferdaus, Aditya Tanikanti, Ken Raffenetti, Valerie Taylor, Murali Emani, Venkatram Vishwanath
  • 発表年: 2024
  • 分野: cs.LG(Machine Learning)
  • ライセンス: CC BY 4.0

背景と動機(Background & Motivation)

LLM推論のハードウェア選定は、性能・コスト・可用性のトレードオフで決まる。しかし、異なるハードウェアプラットフォーム間での公正な比較は困難である。理由は以下の通りである。

  1. 推論フレームワークの差異: NVIDIA GPU向けにはvLLM、TensorRT-LLM、Ollama等が存在するが、AMD GPU向けにはvLLMの一部機能しか対応していない。Intel Habana向けには専用のOptimum-Habanaが必要
  2. 量子化手法の差異: NVIDIA GPUではGGUF(llama.cpp/Ollama)、AWQ、GPTQ等が使えるが、他プラットフォームでは対応する量子化手法が限定される
  3. ベンチマーク条件の統一困難: 既存のベンチマークは特定のハードウェア/フレームワークに偏っており、クロスプラットフォーム比較が難しい

Zenn記事ではNVIDIA A100を前提としているが、組織のハードウェア調達計画によってはAMD MI250XやIntel Gaudi2が選択肢になる場合がある。本論文はそうした意思決定の根拠を提供する。

主要な貢献(Key Contributions)

著者らは以下の3つの貢献を報告している。

  • 貢献1: NVIDIA/AMD GPU、Intel Habana、SambaNova等の複数プラットフォームにまたがるLLM推論ベンチマークスイートの構築
  • 貢献2: LLaMA、Mistral、Qwenファミリーの7Bおよび70Bモデルでの体系的な性能評価
  • 貢献3: 最適なハードウェア/フレームワーク構成を特定するためのインタラクティブダッシュボードの提供

技術的詳細(Technical Details)

ベンチマーク対象プラットフォーム

論文で評価されているハードウェアプラットフォームは以下の通りである。

プラットフォームメーカーメモリアーキテクチャ主な用途
A100 80GBNVIDIA80GB HBM2eAmpereデータセンター推論・訓練
H100 80GBNVIDIA80GB HBM3Hopper最新データセンター推論
MI250XAMD128GB HBM2eCDNA 2HPC・AI推論
Gaudi2Intel Habana96GB HBM2e-AI推論特化
SN40LSambaNova-ReconfigurableAI推論特化

評価モデル

モデルファミリーパラメータ数量子化用途
LLaMA 2/37B, 70BFP16, INT8汎用チャット・推論
Mistral7BFP16, INT8高効率チャット
Qwen7B, 70BFP16, INT8多言語対応

ベンチマーク手法

LLM推論の性能は以下の指標で評価される。

\[\text{Throughput} = \frac{N_{\text{output\_tokens}}}{T_{\text{total}}} \quad [\text{tokens/s}]\] \[\text{TTFT} = T_{\text{first\_token}} - T_{\text{request}} \quad [\text{ms}]\] \[\text{TPOT} = \frac{T_{\text{total}} - T_{\text{prefill}}}{N_{\text{output\_tokens}} - 1} \quad [\text{ms/token}]\]

ここで、

  • $N_{\text{output_tokens}}$: 出力トークン数
  • $T_{\text{total}}$: 総処理時間
  • $T_{\text{first_token}}$: 最初のトークンが生成された時刻
  • $T_{\text{request}}$: リクエスト送信時刻
  • $T_{\text{prefill}}$: プリフィル処理時間

フレームワーク別の対応状況

graph TD
    subgraph "NVIDIA GPUs"
        vLLM_N[vLLM]
        TRT[TensorRT-LLM]
        Ollama_N[Ollama/llama.cpp]
    end
    subgraph "AMD GPUs"
        vLLM_A[vLLM ROCm]
    end
    subgraph "Intel Habana"
        OH[Optimum-Habana]
    end
    subgraph "SambaNova"
        SN[SambaFlow]
    end
    A100[A100/H100] --> vLLM_N
    A100 --> TRT
    A100 --> Ollama_N
    MI250X[MI250X] --> vLLM_A
    Gaudi2[Gaudi2] --> OH
    SN40L[SN40L] --> SN

この図は、Ollamaの対応プラットフォームが基本的にNVIDIA GPUに限定されることを示している。AMD GPUではOllamaも動作するが、vLLM ROCm版の方が最適化されている場合がある。

実装のポイント(Implementation)

ベンチマーク実行の設計

LLM推論ベンチマークを正確に実行するには、以下の点に注意が必要である。

ウォームアップの必要性: LLM推論エンジンは初回リクエスト時にCUDAカーネルのJITコンパイルやKVキャッシュの初期化を行う。ベンチマーク開始前に10-20回のウォームアップリクエストを送信し、定常状態での性能を計測する必要がある。

入出力長の制御: 入力トークン数と出力トークン数を固定し、条件を揃える。論文では入力1024トークン、出力128トークンなどの標準的な設定が使用されている。

同時実行レベルの段階的変化: 単一リクエストのレイテンシだけでなく、複数リクエスト同時実行時のスループットを計測する。これはZenn記事で解説されているOllamaのOLLAMA_NUM_PARALLEL設定と直接関連する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import time
from typing import NamedTuple


class BenchmarkResult(NamedTuple):
    """ベンチマーク結果を格納する構造体"""
    throughput_tokens_per_sec: float
    ttft_ms: float
    tpot_ms: float
    total_latency_ms: float


def measure_inference(
    client,
    prompt: str,
    max_tokens: int = 128,
    num_warmup: int = 10,
    num_runs: int = 50,
) -> BenchmarkResult:
    """LLM推論のベンチマークを実行する

    Args:
        client: LLM推論クライアント(OpenAI互換API)
        prompt: 入力プロンプト
        max_tokens: 最大出力トークン数
        num_warmup: ウォームアップ回数
        num_runs: 計測回数

    Returns:
        BenchmarkResult: ベンチマーク結果
    """
    # ウォームアップ
    for _ in range(num_warmup):
        client.completions.create(
            model="llama3.1:8b",
            prompt=prompt,
            max_tokens=max_tokens,
        )

    # 計測
    latencies = []
    ttfts = []
    for _ in range(num_runs):
        start = time.perf_counter()
        first_token_time = None

        stream = client.completions.create(
            model="llama3.1:8b",
            prompt=prompt,
            max_tokens=max_tokens,
            stream=True,
        )

        token_count = 0
        for chunk in stream:
            if first_token_time is None:
                first_token_time = time.perf_counter()
            token_count += 1

        end = time.perf_counter()
        latencies.append(end - start)
        ttfts.append(first_token_time - start)

    avg_latency = sum(latencies) / len(latencies)
    avg_ttft = sum(ttfts) / len(ttfts)
    avg_throughput = max_tokens / avg_latency
    avg_tpot = (avg_latency - avg_ttft) / (max_tokens - 1) * 1000

    return BenchmarkResult(
        throughput_tokens_per_sec=avg_throughput,
        ttft_ms=avg_ttft * 1000,
        tpot_ms=avg_tpot,
        total_latency_ms=avg_latency * 1000,
    )

実験結果(Results)

ハードウェア別の性能特性

論文の評価結果から、以下の傾向が読み取れる(具体的な数値は論文のインタラクティブダッシュボードで確認可能)。

ハードウェア7Bモデル性能70Bモデル性能コスト効率
H100最高スループット最高スループット中(高価)
A100高スループット高スループット
MI250X中程度中程度高(AMD価格優位)
Gaudi2中程度限定的高(Intel価格優位)
SN40L特定ワークロードで高性能限定的特殊用途向け

Ollama利用環境での適用

Zenn記事ではNVIDIA A100を前提としているが、本論文の知見に基づくと以下の選択肢も検討に値する。

用途推奨ハードウェア理由
開発・テストRTX 4090 (24GB)コスト効率最高、Ollama完全対応
本番(7B-13B)A100 40GBOllama対応、十分な性能
本番(70B)A100 80GB / H100Zenn記事の推奨構成
コスト重視AMD MI300XvLLM ROCm対応、Ollama一部対応

モデルサイズと推論フレームワークの関係

\[\text{Memory Required} = \frac{P \times B}{Q} + S_{\text{KV}}\]

ここで、$P$はパラメータ数、$B$はバイト数/パラメータ(FP16=2、INT8=1、INT4=0.5)、$Q$は量子化効率、$S_{\text{KV}}$はKVキャッシュサイズである。

7Bモデル(INT4量子化)の場合:

\[\text{Memory} = \frac{7 \times 10^9 \times 0.5}{1} + S_{\text{KV}} \approx 3.5\text{GB} + S_{\text{KV}}\]

A100 80GBでは理論上20個以上の7Bモデルを同時ロード可能だが、KVキャッシュと並列リクエストのメモリオーバーヘッドを考慮すると、実用的にはZenn記事で示されているOLLAMA_MAX_LOADED_MODELSの式に従って計算する必要がある。

実運用への応用(Practical Applications)

オンプレミスLLM基盤のハードウェア選定

本論文のベンチマーク結果は、Zenn記事のOllama本番運用構成におけるハードウェア選定に直接活用できる。

NVIDIA環境(Zenn記事の前提): A100/H100 + vLLM/Ollamaの組み合わせが最も広くベンチマークされており、性能予測の信頼性が高い。Ollamaはllama.cppをバックエンドとして使用しており、NVIDIAのCUDA最適化の恩恵を直接受ける。

AMD環境(代替選択肢): MI250X/MI300XではvLLM ROCm版が推奨される。Ollamaも ROCm対応しているが、NVIDIAほど最適化されていない場合がある。コスト面ではAMD GPUが優位な場合が多い。

Intel環境(特殊用途): Gaudi2/Gaudi3はOptimum-Habanaフレームワークでの利用が前提となる。Ollamaは非対応のため、Intel環境ではvLLMまたは専用フレームワークの使用が必要。

インタラクティブダッシュボードの活用

著者らが提供するインタラクティブダッシュボードでは、以下のパラメータを変更して最適構成を探索できる。

  • ハードウェアプラットフォーム
  • モデルファミリー・サイズ
  • 推論フレームワーク
  • バッチサイズ
  • 入力/出力トークン長

このダッシュボードは、Zenn記事で解説されているGPU選定(nodeSelector: gpu-type: "a100")やリソース制限の設計根拠として活用できる。

関連研究(Related Work)

  • MLPerf Inference: MLCommonsが運営する業界標準ベンチマーク。MLPerf Inference 5.1(2025年9月)ではLlama 3.1 8Bが新たに追加され、vLLMがリファレンス実装として採用されている。LLM-Inference-Benchはより多くのハードウェアプラットフォームをカバーしている点で補完的
  • vLLM Benchmark Suite: vLLMプロジェクトが提供するベンチマークスクリプト。NVIDIA GPU中心の評価に特化しており、クロスプラットフォーム比較は限定的
  • GuideLLM: Red Hatが公開するベンチマークツール。Kubernetes環境での推論性能評価に特化しており、本論文のハードウェアレベル評価を補完する

まとめと今後の展望

LLM-Inference-Benchは、LLM推論のハードウェア選定に客観的根拠を提供する重要なベンチマークスイートである。Zenn記事のOllama本番運用設計に対する主な示唆は以下の通りである。

  1. NVIDIA GPUは推論フレームワークの選択肢が最も広い(vLLM、TensorRT-LLM、Ollama等)。Zenn記事のNVIDIA A100前提は合理的な選択である
  2. AMD MI300X等の代替ハードウェアも性能面では競争力があり、コスト面で優位な場合がある。ただしOllamaの最適化度合いはNVIDIAに劣る
  3. ベンチマーク手法(ウォームアップ、入出力長固定、同時実行レベル変化)は、Ollamaの本番性能評価にも適用すべきである

今後は、量子化手法(GGUF vs AWQ vs GPTQ)のクロスプラットフォーム比較や、マルチGPU構成でのスケーラビリティ評価が期待される。

参考文献

この投稿は CC BY 4.0 でライセンスされています。

CNCFブログ解説: すべてのAIプラットフォームがKubernetesに収斂する理由

論文解説: Stateful Large Language Model Serving with Pensieve