GPUクラスタのスケジューリングサイズ優先方式が壊れる条件を、実データで確かめるEnglish
訂正帯(次の研究による)
本文の「正しい判定器で測ると境界は0.054〜0.157低い」は過大でした。EP-0012が観測窓4水準・シード8本で封印測定した結果、差は条件で大きく変わります。頻度0.002ではほぼ一致します(同時10本で−0.003)。0.15前後の差は頻度0.02側だけに現れます。また「運用表は過大評価側」も一方的でした。旧表は希少な大ジョブには保守側に0.04〜0.11、頻繁な大ジョブには危険側に最大0.16外れており、向きが揃っていませんでした。本文は訂正せず残します。
現在わかっていること
前の研究で、この分野の運用数値が全部、一つの未検証な判定器の関数だと分かりました。「大ジョブクラスの flow balance——観測窓に到着したジョブのうち窓内に完了した割合——が0.9以上か」。この定数は7本前に置かれ、そのまま使われ続けていました。
監査しました。**境界は観測窓に対してほぼ不変でした。**窓を4倍にしても0.006〜0.021しか動きません。
そして不変である理由が問題でした。
flow balanceは安定性の指標ではありません。応答時間を観測窓で割った打ち切り比です。到着が定常なら、自由パラメータなしに導けます。
1 − flow balance = E[min(応答時間, 窓長)] / 窓長
窓長は観測長に比例します。**そして発散しているクラスの応答時間も、観測長に比例して伸びます。**分子と分母が同じ速さで伸びるので、比は動きません。
実際に測った値です。
| 観測窓 | 大クラスの平均待ち時間 | flow balance |
|---|---|---|
| 30,000ジョブ | 611 | 0.562 |
| 60,000 | 1,230 | 0.562 |
| 120,000 | 2,357 | 0.574 |
待ち時間が3.9倍に伸びるあいだ、判定器は0.562から0.574にしか動いていません。
**観測窓で正規化された指標が、窓を伸ばしても動かないことは、頑健性の証拠になりません。**発散を割り算で消している証拠でもありうるのです。
そして、この分野は7本前にまさにその教訓を学んでいました。EP-0002で3つの安定性判定器が続けて壊れ、「単一の観測窓・単一の指標で安定性を判定してはいけない」と結論しています。教訓はコード側の較正テストにも移しました。移した先が、この判定器を含んでいませんでした。
図で見る
待ち611 / 判定0.562×3.9 窓120k
待ち2,357 / 判定0.574
観測窓を4倍にすると、待ち時間は3.9倍になります。判定器の値はほとんど動きません。両方とも窓に比例しているからです。
この研究が示すこと
- flow balanceは打ち切り比である。
(1−fb)と平均待ち時間 ÷ 窓長の相関は0.974、比例係数はほぼ一定の1.76(36セル)。 - **だから発散を検出できない。**待ち時間が3.9倍になるあいだ、値は0.562から0.574までしか動かない。
- 質的な構造は判定器を替えても生き残る。「同時実行ジョブ数が増えるほど安全比率は下がる」という順序は、観測窓3水準 × 判定線3水準 × 頻度2水準のすべてで保たれた。
- 格子で測った境界は、連続量より系統的に保守側(過去6行すべて、平均0.040)。
- 運用表を生んだ実験では、大クラスの到着は1回の実行あたり42本しかなかった。判定器の分解能は4シード込みで0.0059。公開していた余裕は+0.0006で、ジョブ1本の10分の1である。
この研究が示さないこと
- 置き換える統計量そのものの妥当性は、この研究では封印検証していません。次の研究がそれをやります。
- 「正しい判定器での境界の低さ」は封印外の探索的解析で、上の訂正帯のとおり過大でした。
- 実トレース上でスケジューリング方式を動かしていません。
なぜ重要か
「完了率」「達成率」「カバレッジ」「窓内成功率」「SLA遵守率」は、どれも〈窓内の分子 ÷ 窓内の分母〉の形をしています。**この形の指標は、測りたい現象が窓と同じ速さで伸びると、割り算で消えます。**そして消えたことは「条件を変えても指標が安定している」という、安心に見える形で現れます。
この研究の価値は、待ち行列の数字ではなく、その形の検出にあります。**比の形をした指標を使う前に、分母が何に比例しているかを一行書く。**観測窓・観測期間・母集団の大きさに比例しているなら、水準に閾値を引いてはいけません。見るべきは「1へどう近づくか」です。
何を調べたか
- 境界は観測窓に依存するか。
- 判定線を動かすと、条件間の順序は保たれるか。
- 過去に公開した境界を連続量で測り直すと、どれだけずれるか。
方法
**観測窓の腕。**比率7水準 × 同時本数3水準 × 頻度2水準 × 観測窓3水準(30,000 / 60,000 / 120,000ジョブ)× シード5本、計630回。30,000の行は前の研究の完全再走ゲートを兼ね、210行が差0で再現しました。
判定線の腕と過去再測定の腕は新規実行なしで、既存の結果を0.8 / 0.9 / 0.95の3線と連続補間で読み直します。
計648回。PRED-012として、SHA-256 9fc35c5b761923e7b9ff019df77e6145cf4d3e8561267b7be3b9196005efe8fa で封印しています。対応する結果ファイルが存在しない状態でコミットしました。
結果
境界は観測窓にほぼ不変。
| 同時本数 | 頻度 | 窓30k | 60k | 120k | 差 |
|---|---|---|---|---|---|
| 9.98 | 0.002 | 0.8994 | 0.9100 | 0.9148 | +0.0154 |
| 14.96 | 0.002 | 0.8766 | 0.8842 | 0.8880 | +0.0115 |
| 29.93 | 0.002 | 0.7814 | 0.7930 | 0.8019 | +0.0204 |
向きは6/6で予測どおり正でしたが、封印した閾値+0.02には4件中3件が届かず、決定予測は外れました。**観測窓は、ここまで測ってきた攪乱要因のなかで最も小さい。**判定線は0.05〜0.14、背景族は0.10、頻度は0.05動かします。
**質的構造は全部生き残りました。**同時実行ジョブ数の順序は、3つの観測窓 × 2つの頻度すべてで、また3つの判定線 × 2つの観測窓すべてで保たれています。
**格子丸めの系統誤差は実在しました。**過去の同時本数曲線6行すべてで連続量のほうが高く、平均差0.040でした。曲線の形も、過去のプール規模の傾向も、連続量で生き残っています。
何が変わったか
- flow balanceを安定性の指標から降ろしました。水準に線を引く判定は、水準に意味のない量の上に引かれていました。
- 運用数値を停止扱いにしました。事後の証拠で新しい数字に差し替えず、次の研究で封印して測り直します。
- 判定器の登録簿を較正テストとして実装しました。判定を下すすべての検出器を、閾値と監査状況つきで列挙し、新しい閾値が新しい解析スクリプトに現れた時点でビルドが落ちます。
何が失敗したか
PRED-012は11本中9本的中。決定予測D1が外れました。
**そして、封印文に書いた帰結の一部を実行しませんでした。**その帰結は「境界が観測窓に不変なら、判定器は妥当である」という推論を含んでいました。封印外の解析がその推論を否定したからです。
封印時には measurand_validity として「有限窓で閾値を超えていることは安定性の証明ではない」と書いてありました。書いておきながら、帰結をその危険を検出しない検定に紐づけたのです。正しい検定(平均待ち時間が窓とともに伸びるか)は封印していませんでした。
懸念を文章で書くことと、その懸念に賭けを置くことは別の作業です。
**判定器が置き換わった時点も特定できました。**各実験が記録した観測窓の数を全部数えると、EP-0004が分岐点です。その実験は2つの観測窓を記録し、正しい判定器でプール全体ジョブの発散を確かめ、的中させています。**そのうえで、境界そのものは同じ実験の中で、単一窓の閾値から引きました。**そして次の実験から6本にわたって、2つ目の観測窓は一度も記録されませんでした。
正しい判定器は「高くつく1点」に使われ、安い閾値が「全体」に使われ、安いほうが看板になりました。
そして4つ目の問題があります。運用表を生んだ実験では、大クラスの到着が1回の実行あたり42本しかありませんでした。判定器の分解能は1/42 = 0.024、4シード込みで0.0059です。公開していた余裕を換算すると、同時本数9.8の行はジョブ0.10本ぶん、14.6の行は1.08本ぶんの差で決まっていました。
公開していた運用表には、独立な原因が4つ重なっていたことになります。標本数・格子丸め・判定線・統計量そのもの。4つのうち3つは公開前に検出できました。
証拠の範囲
言えること: flow balanceは打ち切り比であり、発散を検出できない。境界の観測窓依存は小さい。判定線と格子の影響は大きい。質的な順序構造は判定器を替えても保たれる。
言えないこと: 置き換える統計量の妥当性(次の研究)。訂正帯のとおり、境界の差の大きさ。実トレース上での挙動。
まだ分からないこと
- 置き換える統計量が、観測窓を足したときに動かない境界を与えるのか。
- 打ち切り比の比例係数1.76は導けるのか。導ければ過去の結果を測り直さずに変換できます。
- 頻度の効果のU字、背景族の効果の正体。
この結論が崩れるとき
(1−fb)と待ち時間 ÷ 窓長の関係が、別の負荷やプール規模で崩れる。- 置き換える統計量でも境界が観測窓とともに動き続ける。その場合、有限窓の統計量には不動点がないことになります。
- 順序構造が判定器の選択で入れ替わる。
自分で確かめる
python -m pip install -r requirements-reproduce.txt
python scripts/reproduce.py --quick gpu-boundaryこの簡易確認は、封印ハッシュを検証したうえで、待ち時間が3.9倍に伸びるあいだ判定器が動かなかったことを結果ファイルから再計算します。
判定器の登録簿:
cd reproduction/gpu-scheduling-boundary
python calib/c07_detector_registry.py
python calib/c07_detector_registry.py --selftest証拠とデータ
- 公開再現パッケージ
- 封印済みPRED-012(実行しなかった帰結を含む)
- E13の採点
- 判定器の登録簿
- 内部の元Episodeのハッシュ:
ce69ff0e09f54ff06c694be8bab700ee9faaedbe553ff53e3ff6a04facd944ca
外部からの検証
- 独立再現:0
- 再現失敗:0
- 公開後に確認されたbug:0
- 未解決の批判:0
次の実験
置き換え候補——平均待ち時間の観測窓弾性——を封印した主統計量として測ります。観測窓を4点に増やし、シードを8本にして、観測窓を1つ足したときに境界が動くかを決定予測にします。動かなければ数値が戻り、動けば有限窓の統計量には不動点がないということになります。