LLMベンチマーク・評価パイプラインの自動化
✅ 検証済み | 技術 | 優先度:🟠 高
シリーズ: AI・IT実践シリーズ
目的(ゴール)
異なるハードウェアアーキテクチャ(AMD ROCm APU/dGPU・NVIDIA CUDA・Apple Metal・Arm CPU)での LLM 推論性能を一貫した条件で自動計測し、モデル・ハードウェア・コスト最適な配置戦略の根拠データを生成する。
アクター
- 著者(Manabazu)
- LLMベンチマークパイプライン
- 評価データセット
開始条件(起動トリガー)
ベンチマーク対象ハードウェアが稼働中かつ Ollama(または llama.cpp)が導入されている。
事前条件
- 対象モデルが各ノードにプル済み
- ベンチマークスクリプト(
node2-bench.sh等)が配置済み
事後条件
全ハードウェアの gen tok/s・VRAM 使用量が一覧化され、アーキテクチャ別の性能比較表が出力される。
メインフロー
- 各ノードに対して
bench_model()を呼び出し(Ollama/api/generatestream:false) prompt_eval_duration/eval_duration(ナノ秒)から tok/s を算出- 3 run 平均を記録
rocm-smi/nvidia-smiで VRAM・温度・消費電力を取得- 全ノード結果を比較表に集約
代替フロー
- Node1(Snapdragon X Plus / Windows): Ollama for Windows ARM(CPU 推論)
- Node5(M1 Mac): Ollama for macOS(Metal 加速)
例外フロー
- SSH タイムアウト:
nohup+/tmp/bench_*.logポーリング方式で対処 - OOM:
num_ctxを縮小して再実行(8192 → 4096)
備考
- KV キャッシュヒット(2 run 目以降の prompt tok/s 膨張)は既知挙動;gen tok/s が一次指標
- Qwen 3.5 系は
"think":falseを API トップレベルに付与してシンキングモード無効化 - Node3 iGPU(Intel UHD 770, ~128MB)は GPU 推論非対応のため評価対象外
シナリオリスト
| ID | タイトル | 状態 |
|---|---|---|
| S1 | アーキテクチャ別LLM性能ベースライン比較(Qwen 2.5 7B × 全ハードウェア) | 🔄 進行中 |
シナリオ記述
S1: アーキテクチャ別LLM性能ベースライン比較(Qwen 2.5 7B × 全ハードウェア)
目的: ラボ全ハードウェア環境を横断して同一モデルの推論速度を定量比較し、用途別の最適配置指針を得る。
対象モデル:
| モデル | Ollama タグ | サイズ | 用途 |
|---|---|---|---|
| Qwen 2.5 7B Instruct | qwen2.5:7b-instruct-q4_k_m | ~4.7GB | 汎用 |
| Qwen 2.5 Coder 7B Instruct | qwen2.5-coder:7b-instruct-q4_k_m | ~4.7GB | コーディング |
評価ハードウェア(9構成):
| # | ノード | GPU / 推論エンジン | VRAM | アーキテクチャ | 状態 |
|---|---|---|---|---|---|
| 1 | Node2 iGPU | Radeon 890M | 23.6GiB | AMD ROCm gfx1150 (RDNA 3.5) | ✅ 完了(qwen3.5:9b 実績あり) |
| 2 | Node2 dGPU | RX7900XTX | 24GB | AMD ROCm gfx1100 (RDNA 3) | ✅ 完了(qwen3.5:9b 実績あり) |
| 3 | Node3 RTX3060 | RTX3060 | 12GB | NVIDIA CUDA sm_86 (Ampere) | 📋 予定 |
| 4 | Node3 RTX4060Ti | RTX4060Ti | 16GB | NVIDIA CUDA sm_89 (Ada Lovelace) | 📋 予定 |
| 5 | Node3 RTX5070Ti | RTX5070Ti | 16GB | NVIDIA CUDA sm_120 (Blackwell) | 📋 予定 |
| 6 | Node4 | Radeon 8060S | ~96GB | AMD ROCm (統合メモリ) | 📋 予定 |
| 7 | Node1 | Snapdragon X Plus | 16GB | CPU / llama.cpp | 📋 予定 |
| 8 | Node5 | M1 Mac | 16GB | Apple Metal | 📋 予定 |
ベンチマーク条件:
num_ctx: 8192(全環境統一)- runs: 3(平均を採用)
- プロンプト: フィボナッチ数列 Python コード + 解説(和文・約100トークン)
- 計測指標: prompt tok/s(プリフィル速度)・gen tok/s(生成速度)・VRAM 使用量
Node2 実績(参考・num_ctx=32768、qwen3.5:9b-q4_k_m):
| 環境 | prompt tok/s | gen tok/s | 倍率 |
|---|---|---|---|
| Node2 iGPU (Radeon 890M) | 107.5 | 13.3 | 1.0x |
| Node2 dGPU (RX7900XTX) | 370.3 | 68.3 | 5.1x |
成果物:
- 各ノード用 bench スクリプト(
node3-bench.sh,node4-bench.sh等) - 全ハードウェア横断 gen tok/s 比較表(Qwen 2.5 7B / Coder 7B 両モデル)
- LabLog(
50_Lab_Logs/YYYYMMDD-UC260413-005-アーキテクチャ別LLM性能比較.md)
実行順序(推奨):
- Node4(Radeon 8060S 96GB ROCm)— Ollama 稼働中、即実行可能
- Node3 RTX3060/4060Ti/5070Ti — CUDA 環境確認後
- Node1(Snapdragon X Plus、Ollama for Windows ARM)
- Node5(M1 Mac、Ollama for macOS Metal)