こんにちは、クロスイノベーション本部リーディングエッジテクノロジーセンターの山下です。
最近は、gpt-ossやQwen3.5といったローカルLLM(Local Large Language Model)も注目されており、これらを活用したプロジェクトも増えてきています。
今回の記事では、ローカルLLMのベンチマークソフトウェアであるGuideLLMについて紹介します。LLMの性能には様々な観点がありますが、GuideLLMはLLMサーバ自体の応答速度などを測るためのベンチマークソフトウェアです。
GuideLLMでは、以下のような観点でLLMサーバの性能を評価します。
- レイテンシー(応答時間)
- スループット(処理能力)
- 同時リクエスト数に対する性能の変化
- エラー率や安定性
GuideLLMは、LLMサーバに対して様々な負荷をかけることで、これらの観点で性能を評価します。例えば、同時に複数のリクエストを送ることで、スループットやレイテンシーの変化を測定します。また、長時間の負荷テストを行うことで、安定性やエラー率も評価します。
LLMサーバの評価項目
LLMサーバの評価には、TTFT(Time To First Token)、ITL(Inter Token Latency)やThroughputなどの指標が用いられます。
- TTFT(Time To First Token): LLMが最初のトークンを生成するまでの時間を測定します。これは、ユーザーが応答を受け取るまでの待ち時間を示す重要な指標です。
- ITL(Inter Token Latency): トークン間の生成時間を測定します。これにより、LLMの応答速度や処理能力を評価できます。
- Throughput: 一定時間内に処理できるリクエストの数を測定します。これは、LLMサーバの処理能力を示す指標です。
- Latency(レイテンシー): LLMサーバがリクエストに対して応答するまでの時間を測定します。これはトークンごとではなくすべての生成が完了するまでの時間になります。
- 同時リクエスト数に対する性能の変化: 同時に複数のリクエストを送ることで、LLMサーバの性能がどのように変化するかを評価します。これにより、サーバのスケーラビリティや負荷耐性を測定できます。
- エラー率や安定性: 長時間の負荷テストを行うことで、LLMサーバの安定性やエラー率を評価します。
通常のWebサーバのベンチマークソフトウェアは、HTTPリクエストの処理能力や応答時間を測定することが一般的です。しかし、LLMサーバは応答を作成するための時間が長く、しかも生成された結果をリアルタイムに返す仕組みになっています。このため、通常のWebサーバの指標に加えてTTFTやITLといったLLM特有の指標が重要になります。特にTTFTはユーザーが最初の応答を受け取るまでの待ち時間を示し、ITLは1つのトークンが生成されてから次のトークンが生成されるまでの時間になります。これらがユーザーエクスペリエンスに直結する重要な指標となります。
ChatGPTなどのサービスを利用している際に、最初の一文字が出るまでの時間が長いと感じることがあるかもしれませんが、これはTTFTが長いことを意味しています。TTFTが短いほど、ユーザーは迅速に応答を受け取ることができ、より快適な体験を提供できます。
GuideLLMは実際にLLMサーバに対して負荷をかけることで、これらの指標を測定し、LLMサーバの性能を評価します。これにより、LLMサーバの性能を定量的に評価し、改善点を特定することができます。
GuideLLMの使用方法
GuideLLMは、Pythonで実装されたベンチマークソフトウェアです。以下のコマンドでインストールできます。
他のインストール方法については、公式のGitHubリポジトリを参照してください。
pip install guidellm[recommended]
インストール後、例えば以下のコマンドでベンチマークを実行できます。
guidellm benchmark run\ --target "http://<LLMサーバのアドレス:ポート>" \ --profile sweep \ --max-seconds 30 \ --data "prompt_tokens=256,output_tokens=128"
ここでは--targetオプションでLLMサーバのアドレスとポートを指定します。--profileオプションでは、ベンチマークのプロファイルを指定します。sweepプロファイルは、様々な負荷条件でベンチマークを実行するためのプロファイルです。--max-secondsオプションでは、ベンチマークの最大実行時間を指定します。--dataオプションでは、ベンチマークに使用するデータを指定します。ここでは、プロンプトトークン数と出力トークン数を指定しています。
--profileとして今回は sweepを指定しています。これの動作は以下のようなものになっています。
- まずは1並列でのベンチマークを行い、ベースラインのレイテンシーを測定します。これにより、LLMサーバが単一リクエストに対してどれくらいの応答時間があるかを把握します。
- 次に並列アクセスを行い(デフォルトでは512並列)LLMサーバの最大スループットを測定します。これにより、LLMサーバがどれくらいのリクエストを同時に処理できるかを把握します。
- 2つのベンチマークでベースとなる性能と最大スループットがわかりました。次に、ベースラインのレイテンシーと最大スループットの間の設定でベンチマークを試します。これにより、LLMサーバが異なる負荷条件でどのように性能が変化するかを把握します。
--profileには他にも色々なプロファイルが用意されているので、目的に応じて選択することができます。公式のページを参考にしてください。
実行例
ここでは、実際にGuideLLMを使用してベンチマークを実行した例を紹介します。今回は、ローカルで動作しているLLMサーバに対してベンチマークを実行しました。
通信するLLMサーバはDGX Sparkで動作しているvLLMサーバでgpt-oss-120b を使用しています。
以下のコマンドでベンチマークを実行しました。
GUIDELLM__MAX_CONCURRENCYは、guidLLMがベンチマークを実行する際の最大並列数です。
今回の接続先がDGX Sparkなのでそこまで多くの接続はしない想定なので128並列を指定してみました。
また、--processorオプションで、ベンチマークで使用するデータを生成するために使用するプロセッサを指定しています。ここでは、gpt-oss-120bが接続先になるので、openai/gpt-oss-120bを指定しています。
export GUIDELLM__MAX_CONCURRENCY=128
guidellm benchmark --target "LLMサーバのアドレス:ポート" \
--output-dir ./output-dir/ \
--profile sweep \
--max-seconds 300 \
--data "prompt_tokens=256,output_tokens=128" \
--processor "openai/gpt-oss-120b"
ベンチマークの結果は以下のようになりました。
すべての結果を載せると長すぎるので、ベンチマーク結果のサマリの部分を抜粋しています。

サマリを見てみると全体の数字の傾向として、同時リクエスト数が増えるにつれて、レイテンシー(Lat)が増加し、スループット(Tok gen/s)も増加していることがわかります。
また、TTFTやITLも同様に増加しています。つまりリクエスト数が増えると応答速度が遅くなっていることがわかります。
一方でTTFTは最悪でも500ms程度で、ITLも131ms程度なので、同時リクエスト数が増えても応答速度はまだ許容可能な範囲に収まっていることがわかります。
特にthroughput@128の行を見ると、スループットが約5.1 req/sに達していることがわかります。さらに、123.2並列まで問題なく処理できていることがわかります。この場合でも、TTFTは1506.7ms、ITLは177.3msなので、同時リクエスト数が増えても応答速度はまだ許容可能な範囲と言えるのではないでしょうか。
複数ある constant@数字 の結果は、ベースラインのレイテンシーと最大スループットの間の設定でベンチマークを試した結果になります。@の右側の数字はリクエストの頻度になります。
これらの結果から、TTFTがどの程度までなら許容できるのかを基準にして許容可能なリクエスト頻度を決めることもできます。例えば、TTFTで900ms以下に応答してほしいという場合であるならconstant@1.49、constant@2.09の結果が参考になるかもしれません。constant@1.49ではTTFTが786.1ms、constant@2.09ではTTFTが943.2msとなっています。つまり、1.49リクエスト/秒程度であれば、TTFTが900ms以下に収まる可能性があることがわかります。
利用してみて気が付いた点
ベンチマークの出力形式としては、JSONやCSVに加えてHTMLも選択できます。しかし、今回HTML形式で出力したものを確認したところ、うまく表示されませんでした。生成されているHTMLに問題がありそうですが原因は不明です。JSONやCSV形式で出力したものは問題なく利用できたので今回はそちらを使用しました。
まとめ
今回は、ローカルLLMのベンチマークソフトウェアであるGuideLLMについて紹介しました。GuideLLMは、LLMサーバの性能を様々な観点で評価するためのベンチマークソフトウェアです。GuideLLMを使用することで、LLMサーバの性能を定量的に評価し、改善点を特定することができます。
ローカルLLMを活用したプロジェクトを進める際には、LLMサーバの性能を評価して最適な設定を見つけることが重要です。ぜひ、GuideLLMを活用して、ローカルLLMの性能を評価して最適な設定を見つけてください。
執筆:@yamashita.tsuyoshi
レビュー:@sato.taichi
(Shodoで執筆されました)



