はじめに
LLMをプロダクションで使う際、「このAPIは高負荷でどれくらい耐えられるのか?」「レイテンシはどう変わるのか?」を事前に把握しておくことは非常に重要です。
本記事では、オープンソースの負荷試験ツール k6 を使って、以下3プロバイダー・8モデルに対してストレステストを実施し、結果を比較します。
📊 テスト結果の詳細は下記のダッシュボードでも確認できます。
👉 https://llm-performance-check.web.app
| プロバイダー | モデル |
|---|---|
| OpenAI | gpt-5.4, gpt-5.4-mini, gpt-5.4-nano |
| Azure OpenAI | gpt-5.4, gpt-5.4-mini, gpt-5.4-nano |
| Groq | gpt-oss-120b, gpt-oss-20b |
テスト環境・構成
使用ツール
- k6 : GoベースのOSSパフォーマンステストツール
- Node.js : スクリプト補助
テスト設定
- 最大同時ユーザー数(VU): 20
- テスト種別: ストレステスト(段階的に負荷を増加)
- チェック項目: ステータスコード 200 /
choicesフィールドの存在確認 - エラー率閾値:
rate < 0.05(5%未満)
スクリプト構成
scripts/
├── per-model/
│ ├── openai-gpt-5-4.js
│ ├── openai-gpt-5-4-mini.js
│ ├── openai-gpt-5-4-nano.js
│ ├── azure-gpt-5-4.js
│ ├── azure-gpt-5-4-mini.js
│ ├── azure-gpt-5-4-nano.js
│ ├── groq-gpt-oss-120b.js
│ └── groq-gpt-oss-20b.js
└── run-all-models.sh # 全モデル一括実行
モデルごとにスクリプトを分離し、シェルスクリプトで一括実行できる構成にしました。
テスト結果
主要メトリクス一覧
| モデル | 平均レイテンシ (avg) | p90 | p95 | 最大 | リクエスト数 | スループット (req/s) | エラー率 |
|---|---|---|---|---|---|---|---|
| Groq OSS 20B | 218 ms | 247 ms | 253 ms | 537 ms | 1,978 | 13.1 | 0% ✅ |
| Groq OSS 120B | 275 ms | 281 ms | 295 ms | 749 ms | 1,884 | 12.4 | 0% ✅ |
| OpenAI gpt-5.4-mini | 1,089 ms | 1,356 ms | 2,025 ms | 3,181 ms | 1,155 | 7.6 | 0% ✅ |
| OpenAI gpt-5.4-nano | 1,198 ms | 1,526 ms | 2,124 ms | 2,569 ms | 1,099 | 7.2 | 0.18% ✅ |
| OpenAI gpt-5.4 | 1,959 ms | 2,468 ms | 2,692 ms | 4,599 ms | 823 | 5.3 | 0.12% ✅ |
| Azure gpt-5.4-nano | 1,199 ms ※成功のみ | 1,347 ms | 1,389 ms | 2,176 ms | 1,389 | 9.1 | 41% ❌ |
| Azure gpt-5.4 | 3,431 ms | 6,274 ms | 7,454 ms | 11,871 ms | 555 | 3.7 | 0% ✅ |
| Azure gpt-5.4-mini | 472 ms ※成功のみ | 1,479 ms | 1,599 ms | 2,099 ms | 1,646 | 10.9 | 69% ❌ |
考察
1. Groq が圧倒的に速い
Groq の OSS モデルは、平均レイテンシが 200〜275ms と群を抜いて高速です。
p95 でも 300ms以下 を維持しており、20 VU のストレス環境でもエラー率 0% を達成しています。
これは Groq が独自開発した LPU(Language Processing Unit) によるもので、推論に特化したハードウェアアーキテクチャが効いています。
2. OpenAI は安定しているがレイテンシは高め
OpenAI の 3 モデルは概ねエラー率が低く安定していますが、レイテンシは Groq の 4〜7倍程度です。
-
gpt-5.4-miniが最もバランスが良く、平均約 1秒 で安定 -
gpt-5.4(フルサイズ)は p95 が 2.7秒 と重め
3. Azure OpenAI は高負荷時のエラーが課題
Azure OpenAI は今回のストレステストで gpt-5.4-mini と gpt-5.4-nano のエラー率が非常に高い結果となりました。
| モデル | エラー率 |
|---|---|
| gpt-5.4-mini | 69% |
| gpt-5.4-nano | 41% |
| gpt-5.4 | 0% |
gpt-5.4(フルサイズ)はエラー率 0% ですが、p95 が 7.5秒 とかなり遅いです。
エラーの原因は TPM(Tokens Per Minute)や RPM(Requests Per Minute)のクォータ制限の可能性が高く、Azure のデプロイ設定やスケールユニットを調整することで改善できる可能性があります。
レイテンシ分布の比較
平均レイテンシ(低いほど良い)
Groq OSS 20B ████ 218ms
Groq OSS 120B █████ 275ms
OAI gpt-5.4-mini ██████████████████████ 1,089ms
OAI gpt-5.4-nano ████████████████████████ 1,198ms
OAI gpt-5.4 ███████████████████████████████████████ 1,959ms
Azure gpt-5.4 ████████████████████████████████████████████████████████████████████ 3,431ms
スループット比較(リクエスト/秒)
スループット(高いほど良い)
Groq OSS 20B █████████████ 13.1 req/s
Groq OSS 120B ████████████ 12.4 req/s
Azure gpt-5.4-mini ██████████ 10.9 req/s ※エラー多
Azure gpt-5.4-nano ████████ 9.1 req/s ※エラー多
OAI gpt-5.4-mini ███████ 7.6 req/s
OAI gpt-5.4-nano ███████ 7.2 req/s
OAI gpt-5.4 █████ 5.3 req/s
Azure gpt-5.4 ████ 3.7 req/s
実装のポイント
モデルごとのスクリプト分離
各モデルで実行条件(エンドポイント、モデル名、閾値)が異なるため、per-model/ ディレクトリにスクリプトを分離しました。
// per-model/groq-gpt-oss-120b.js の例
import http from 'k6/http';
import { check, sleep } from 'k6';
import { Trend, Counter } from 'k6/metrics';
const durationTrend = new Trend('duration_groq_gpt_oss_120b', true);
export const options = {
scenarios: {
groq_gpt_oss_120b: {
executor: 'ramping-vus',
startVUs: 0,
stages: [
{ duration: '30s', target: 5 },
{ duration: '1m', target: 10 },
{ duration: '2m', target: 20 },
{ duration: '30s', target: 0 },
],
},
},
thresholds: {
'duration_groq_gpt_oss_120b': ['p(95)<30000'],
'http_req_failed': ['rate<0.05'],
},
};
一括実行シェルスクリプト
#!/bin/bash
# run-all-models.sh
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
RESULTS_DIR="results/${TIMESTAMP}"
mkdir -p "$RESULTS_DIR"
MODELS=(
"openai-gpt-5-4"
"openai-gpt-5-4-mini"
"openai-gpt-5-4-nano"
"azure-gpt-5-4"
"azure-gpt-5-4-mini"
"azure-gpt-5-4-nano"
"groq-gpt-oss-120b"
"groq-gpt-oss-20b"
)
for model in "${MODELS[@]}"; do
echo "Testing: $model"
k6 run \
--out json="${RESULTS_DIR}/${model}-summary.json" \
"scripts/per-model/${model}.js"
done
結果の可視化(ダッシュボード)
各モデルの summary.json を読み込み、HTML ダッシュボードとして可視化するスクリプトも作成しました。比較表・グラフが自動生成されます。
まとめ
| 観点 | おすすめ |
|---|---|
| 最速レスポンス | Groq OSS 20B / 120B |
| 安定性重視 | OpenAI gpt-5.4-mini |
| 大規模モデルの安定利用 | OpenAI gpt-5.4 |
| コスト最適化 | OpenAI gpt-5.4-nano(低エラー率) |
| Azure高負荷利用 | gpt-5.4(mini/nanoはクォータ調整が必要) |
リアルタイム性が重要なアプリ(チャットUIなど)では Groq が圧倒的に有利です。
一方、精度や機能の豊富さを求めるなら OpenAI / Azure の上位モデルも選択肢に入ります。
プロダクション投入前に、今回のような負荷試験で自分たちのユースケースに合ったプロバイダー・モデルを選定することを強くおすすめします。