3行でいうと

  • TTFTは「依頼から最初の1トークンまで」。ITLは「最初の1つを除いた、トークン間の平均間隔」
  • 「1秒あたりのトークン数」には、システム全体と1人あたりの2種類があり、別の数字になる
  • 同時処理を増やすと全体の処理量は増えるが、ある点から待ち時間だけが伸びる

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書を読んでまとめたものです。

先に結論

前提:AIの返答はどう作られるか

この2段階があるため、「最初の1文字まで」と「その後の流れ」は、別々の理由で遅くなります。

4つの指標の定義

NVIDIAのブログ(2025年4月公開、2025年8月更新)とNVIDIA NIMの測定ドキュメント、vLLMの文書を読んで、同じ定義が出ているものを表にしました。

指標 公式資料での意味 主に影響するもの
TTFT(Time to First Token) 依頼を送ってから、最初のトークンを受け取るまで 順番待ち、プリフィル、通信。入力が長いほど伸びる
ITL(Inter-Token Latency)/TPOT(Time Per Output Token) 連続するトークンの間の平均時間 デコードの速さ
e2e(end-to-end)遅延 依頼を送ってから、最後のトークンを受け取るまで TTFTとデコード全体の合計
TPS(Tokens Per Second) 1秒に出るトークンの数 測る単位(システム全体か1人か)で別の数字
RPS(Requests Per Second) 1秒に完了する依頼の数 同時処理の数、出力の長さ

NVIDIAの資料の式は次のとおりです。

ITLの分母から1を引くのは、最初のトークンはTTFTに入っているので、ITLは「デコードの部分だけ」を表すようにするため、とNIMの文書に書かれています。

同じ名前でも定義が違う例

数字の読み方の例

見立てです。次の例は説明用に僕らが作った数字で、どのAIの実測値でもありません。

返答が500トークン、e2e遅延が10秒、TTFTが1秒だったとします(僕らの計算です)。

1人あたりのTPSは、出力が長くなるほど「1 ÷ ITL」に近づく、とNVIDIAのブログが説明しています。短い返答ではTTFTの割合が大きく、50と55のように少しずれます。

このため、短い質問への返答が多い使い方ではTTFT、長い文章や推論の長い出力を作る使い方ではITLとTPSが体感を決める、と言えそうです。NVIDIAのブログは、用途別の目安として、要約は入力が約1,000トークンで出力が約100トークン、推論は入力が約100トークンで出力が1,000〜1万トークンと挙げています。これは用途の傾向を示す目安で、規格ではありません。

同時処理が増えると何が起きるか

同時実行数は、同時に1つの依頼を出している利用者の数です。NVIDIAの資料では、各利用者が前の依頼が終わるとすぐ次を送る前提で、システムの中にはいつも同じ数の依頼が入っています。

NVIDIAのGenAI-Perfの解説(2025年5月公開)は、1、2、5、10、50、100、250の同時実行数で測った例を示しています。その例では、50のあたりで、処理量はほとんど増えないのに待ち時間が急に伸びる点がある、と述べています。ただし、記事は図の元の数値を公開していないので、具体的な秒数やRPSは確認できていません。

選び方として、この記事は次の手順を紹介しています。

  1. 先に許せる待ち時間(たとえばTTFTの上限)を決める。
  2. 図の横軸でその値を見つけ、その範囲で一番処理量が高い同時実行数を読む。
  3. 待ち時間が急に伸びて処理量が増えない領域は避ける。
測定ツールごとの式の違いと、全体の処理量の測り方

NVIDIAのブログとNIMの文書は、システム全体のTPSを「出力トークンの総数 ÷(最後の応答の時刻 − 最初の依頼の時刻)」と定義しています。ここにはいくつか注意があります。

  • 分子は出力トークンだけです。入力トークンは入りません。vLLMのベンチマークの出力例には、出力トークンの処理量と、入力を含めた処理量の両方があり、別の値として表示されます。
  • LLMPerfというツールは、分母に、プロンプトの生成、依頼の準備、応答の保存といった、AIの処理以外の時間を含めます。NVIDIAのブログは、同時実行数が1のときには、これが全体の33%にもなりうる、と書いています。
  • NIMの文書は、AIPerfというツールでは、中身が空の最初の応答はTTFTに数えず、最後の [done] の合図もe2e遅延から除く、と説明しています。
  • 同じ文書は、システム全体のTPSは「終わった後にまとめて出す」性質で、リアルタイムの指標ではなく、ウォームアップ(測定前の慣らし運転)を除く設定もできる、と書いています。

vLLMの文書で、運用中のサーバーの指標として挙がっているものは次のとおりです。

  • vllm:time_to_first_token_seconds:到着からの時間で、入力の処理時間を含む
  • vllm:inter_token_latency_seconds:ストリームの出力ごとの間隔
  • vllm:request_time_per_output_token_seconds:依頼ごとのTPOT
  • vllm:e2e_request_latency_seconds:到着から最後のトークンまで
  • vllm:request_queue_time_seconds、vllm:request_prefill_time_seconds、vllm:request_decode_time_seconds:順番待ち、プリフィル、デコードの時間

同じ文書は、処理量を直接表す名前付きの指標はなく、トークン数の累計の指標(vllm:prompt_tokens_total、vllm:generation_tokens_total)から秒あたりを計算する形だと説明しています。

「速くする」ための公式の考え方

OpenAIの遅延の最適化ガイドには、7つの原則があります。ここでは、速さの指標との関係が深いものを紹介します。

見立てです。TTFTとITLの区別を知ると、これらの原則がなぜ効くのかが読みやすくなります。出力を減らす対策はデコードの回数を減らすのでITLの合計に効き、ストリーミングは体感のTTFTに効く、という整理です。

選び方・判断の基準

見立てです。公式資料の定義を元にした、僕らの整理です。

よくあるつまずき

見立てです。公式資料を読んで、読み違えやすいと思った点を挙げます。

気をつけること

出典

更新履歴