TT Lab
ブログ

한국어 日本語 中文

はじめる
ブログ

ブログ

vLLMが削除したメトリック名をドキュメントがまだ参照しているとき:llm-dのドキュメントPRが2時間9分でマージされるまで

結果:マージ(2026-10-17 03:08、 llm-d/llm-d#2835). )は、実際にはGitHubのPR・レビュー・チェックの履歴、 llm-dのソース(PRのベースコミット 696b5e81)、vLLMのソース(リリースタグ)、llm-dオートスケーラーのソース(タグv0.9.0)、そして私たちが残した実測 生データから取得しました。時刻は韓国時間です。2026-10-17現在、この変更が含まれたllm-dのリリースはまだありません(最新はv0.10.0、2026-09-29)。

目次

一言まとめ

PR llm-d/llm-d#2835 docs: replace vLLM metric names that current vLLM no longer exports
変更内容 2つのドキュメントと1つのダッシュボードJSONでのメトリック名のみ。6行追加、6行削除
反応 レビューボット・インラインコメントなし。2つの承認(無言での承認が1回、 /lgtm が1回)、サイトプレビューボットのコメントが1つ
結果 PR公開 10-17 00:59 → マージ 03:08、約2時間9分。1つのコミットをスクワッシュしてマージ(私たちのアカウントが著者)
vLLM 이 지운 이름, 문서에는 남은 이름 vLLM 소스의 폐기 주석과 v0.31.0 /metrics 실측 ① vllm:gpu_prefix_cache_hit_rate V0 엔진의 적중률 게이지 · fairness 가이드 표 0.8 폐기 예고 0.9 숨김 0.10 삭제 가이드가 검증한 0.26 에서도 이미 없음 바꾼 것: rate(hits_total) / rate(queries_total) ② vllm:time_per_output_token_seconds WVA 문서 2곳 · 대시보드 쿼리 3개 0.11 이름 바뀜 0.12 숨김 0.15 삭제 주석은 「0.13 에서 삭제」, 실제로는 0.14 까지 숨김 바꾼 것: vllm:inter_token_latency_seconds ③ v0.31.0 /metrics(작은 무작위 모델, 요청 5개) 옛 이름 둘로 시작하는 줄 0줄 prefix_cache_hits_total / queries_total 640 / 805 inter_token_latency_seconds_count 75 없는 이름을 부르는 쿼리는 오류 없이 빈 결과를 돌려준다 대시보드를 Grafana 에 올려 보지는 않았다(미실측)
図:vLLMが削除した2つの名前の寿命とv0.31.0の/metricsの実測

1. 何が問題だったのか:私たちが確認した現象

まず率直に書きます。TT Labのクラスターにはllm-dはありません。今回の問題は運用の障害ではなく、学習の過程で遭遇しました。vLLMエンジンを 取り巻くプロジェクト(production-stack、LMCache、llm-d)のコードを読みながら、「エンジンが定義したメトリック名が他のリポジトリのクエリにどう 伝播していくか」を追いかけ、その内容は 「オープンソースの構造を読む」第4回にまとめました。

名前をドキュメントの文章だけで突合させないよう、PRを上げる直前にvLLM v0.31.0(vllm/vllm-openai イメージ、当時最新のリリース)を小規模クラスターのGPUノード1台(8GB級GPU)で使い捨てのPodとして起動し、 /metrics を取得しました。何も新しくダウンロードしないよう設定ファイルだけを作成した ランダム重みモデル(Qwen2構造、2層、hidden 256、 --load-format dummy)をデプロイし、前半160トークンが同じリクエスト5個(各16トークン生成)を送信しました。その出力にllm-dのドキュメントが参照する名前はありませんでした。

llm-dのドキュメントが参照する名前 場所 v0.31.0 /metrics
vllm:gpu_prefix_cache_hit_rate turn-profile-fairnessガイドの観測指標テーブル なし
vllm:time_per_output_token_seconds オートスケーラー(WVA)設計ドキュメント、指標リスト1行とクエリテーブル1行 なし
vllm:time_per_output_token_seconds_bucket DigitalOceanダッシュボードの「Time Per Output Token Latency」パネルの3つのクエリ なし

生データで2つの旧名で始まる行は0行であり、代わりに出力された値は次の通りです。

vllm:prefix_cache_queries_total{engine="0",model_name="tiny"} 805.0
vllm:prefix_cache_hits_total{engine="0",model_name="tiny"} 640.0
vllm:inter_token_latency_seconds_count{engine="0",model_name="tiny"} 75.0

数値はリクエストの形状と一致しています。リクエスト5個×161トークン=805回参照され、最初のリクエストはすべてミスし残りの4つが160トークンずつヒットして640となります (ブロックサイズ16、同じ出力の cache_config_info)。16トークンずつ生成した5個のリクエストのトークン間隔は15×5=75です。ヒット率は640/805≈0.795となります。

存在しない名前で記述されたPromQLはエラーを出さずに空の結果を返します(Prometheusの一般的な動作)。ガイドに従ってクエリを実行した読者は 「何も表示されない」ことだけを確認し、その理由は自分で探さなければなりません。ダッシュボードパネルも空のように見えるはずですが、Grafanaにデプロイして確認はしていません(未実測)。

同じ方法でllm-d v0.10.0タグのドキュメント・ガイド全体をスキャンした結果も第4回にあります。 vllm: 71個の名前のうち40個は出力に存在し、 27個はオフロード・NIXLコネクターを有効にしなければ現れない条件付き指標であり、4個はv0.31.0のソースに定義がありませんでした。そのうち4個のうち3個が time_per_output_token_seconds 系です。PRはmainブランチを基準としているため、v0.10.0にはまだ存在しないfairnessガイドが追加されています。

2. 原因:ソースのどの行か

llm-dの行番号はPRのベースコミット 696b5e81 を基準とし、 vLLMはリリースタグを基準としています。

エンジン側:名前は予告通り消えた

vLLMには指標を削除する際のルールがあります。 docs/usage/metrics.md の78–82行目 によると、X.Yで非推奨化を予告し、X.Y+1で非表示にし(--show-hidden-metrics-for-version=X.Y で復活可能)、X.Y+2で削除します。

エンジンはルール通りに、時にはルールよりも余裕を持って名前を整理しました。問題は その名前を読み取る側が別のリポジトリにあるということです。 もう一つ、ソース内のカウンター名には _total はありませんが、 prometheus_client が出力時に付与するため、クエリには vllm:prefix_cache_hits_total のように記述する必要があります。ソースをgrepして名前を移行する際によく間違えやすい箇所です。

消費者側:コードは追従したがドキュメントだけが残った

3. 何を変更したのか:diffの要点

名前だけを変更しました。文章、パネルのタイトル、クエリのその他の形状はそのまま維持しました。

 # docs/architecture/autoscaling/wva.md
-- `vllm:time_per_output_token_seconds` -- ITL histogram (sum/count for average)
+- `vllm:inter_token_latency_seconds` -- ITL histogram (sum/count for average)
-| `avg_itl` | `rate(vllm:time_per_output_token_seconds_sum[1m]) / rate(..._count[1m])` | ...
+| `avg_itl` | `rate(vllm:inter_token_latency_seconds_sum[1m]) / rate(..._count[1m])` | ...

 # docs/infrastructure/providers/digitalocean/monitoring/inference-gateway-dashboard.json (3곳)
-"expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:time_per_output_token_seconds_bucket[$__rate_interval])))",
+"expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:inter_token_latency_seconds_bucket[$__rate_interval])))",

 # guides/turn-priority-fairness/README.md
-| `vllm:gpu_prefix_cache_hit_rate` | The mechanism the strategy is optimizing. |
+| `rate(vllm:prefix_cache_hits_total[5m]) / rate(vllm:prefix_cache_queries_total[5m])` | Prefix-cache hit ratio: the mechanism the strategy is optimizing. |

ヒット率の部分には、1つのゲージ名の代わりに2つのカウンターの比率式を挿入しました。置き換えるべき同名のゲージが存在しないためであり、vLLMの設計ドキュメントが推奨する形式でもあるためです。期間 [5m] は設計ドキュメントの例と同じにしました。

PRの本文にはファイル・旧名・新名・理由を1つのテーブルにまとめ、第1節の grep の出力3行と「旧名0行」をそのまま添付しました。「ダッシュボードJSONは依然としてパース可能であること、Grafanaにデプロイしてはいないこと、変更されたのは histogram_quantile の3つの式内の名前だけでありパネルのタイトルはそのまま残っていること」を明記したことも書き留めました。llm-dのCONTRIBUTINGには、AIの支援を受けたコントリビューションを他のコントリビューションと同等の基準で受け入れるが、投稿者が履歴上の著者として内容を直接説明できなければならないと記載されています。そのため、本文の最後にAIの支援を受けて作成し自身でレビューした旨の文言を追加しました。コミットは1つであり、リポジトリのルールであるDCO署名(Signed-off-by)とSSH署名を付与しました。チェック項目には署名されたコミットであるかを確認する項目も含まれています。

4. 反応:ボットもインラインコメントもなく2時間9分

時刻(10-17) イベント
00:45 コミット(DCO署名・SSH署名)作成
00:59 PR公開
00:59 ~ 21個のチェック:成功12、スキップ9、失敗0
01:53 ルートOWNERSの承認者1名が無言で承認
01:56 サイトプレビューボットが「このコミットでサイトをビルドしました。ダウンロードして確認してください」とコメント
03:08 別のメンテナーが /lgtm と共に承認、11秒後にスクワッシュマージ

成功したチェックにはDCO、署名済みコミットの確認、pre-commit、ガイドチェック(CI Guides Check)、ガイドdry-run、サイトプレビュービルドが含まれます。スキップされた9個はイメージビルドなどのタスクであり、ドキュメントのみが変更されたPRであるためにスキップされたものとみられます。

第1回のSeaweedFSのようにレビューボットが付くことはなく、第2回のGrafanaチャートのように「Thanks!」の一言もありませんでした。インラインコメントも質問もなく2つの承認で終了しました。私たちが個別に対応すべき事項はありませんでした。マージコミット 2b0b8de7 の著者は私たちのアカウントであり、メッセージは私たちのコミットメッセージタイトルの末尾にPR番号が付いたものです。

これと同じ形状のPRがもう1つあります。production-stackのデフォルトダッシュボードも削除された vllm:gpu_prefix_cache_* の名前を参照していたため、 vllm-project/production-stack#1147 を送信し、2026-10-17現在進行中です。

5. 学んだこと:オープンソースコントリビューションのコツ

Tidbit の一言。 友人が名前を変えたのですが、アドレス帳には古い名前が残っていました。呼びかけても返事がないので、みんな「連絡がつかないな」で 済ませていました。直接声をかけてみて(0行!)、新しい名前を確認し(75!)、アドレス帳の3ヶ所を修正したところ、2時間で「いいね」のスタンプがつきました。 名前が似ている別の友人に間違えて電話をかけるのだけは気をつけようと思いました。

リンク

すべての資料は 2026-10-17 に閲覧しました。

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます