GPUクラスタのスケジューリングサイズ優先方式が壊れる条件を、実データで確かめるEnglish
現在わかっていること
前の研究が判定器を降ろし、この分野の運用数値を停止しました。置き換え候補は α——平均待ち時間の観測窓に対する弾性です。
α = d log(平均待ち時間) / d log(観測窓) 0なら収束、1なら線形発散
flow balanceと違い、窓で正規化されていません。だから発散が割り算で消えません。
観測窓4水準(30,000〜240,000ジョブ)、シード8本、1440回で封印測定しました。決定予測は的中しました。
αは3つの性質を持ちます。
| 性質 | 実測 | flow balanceは |
|---|---|---|
| 明らかに安定な条件で0を読む | −0.046〜+0.029 | 条件で0.88〜1.00と動く |
| 明らかに発散する条件で1を読む | 0.899〜0.984 | 0.25〜0.65 |
| 観測窓を8倍にしても境界が動かない | −0.021〜+0.006 | 動かないが、それは発散を消しているから |
| 引用できる精度がある | 90%区間の半幅0.013〜0.021 | 公開値の余裕はジョブ1本の0.10倍だった |
運用数値の停止を解除します。
さらに、この分野で最も多く引用してきた「EASY backfillは一度もクラス破綻していない」を、独立な判定器で確かめました。プール全体を要するジョブに対してもα ≈ 0です。盲目な判定器の産物ではありませんでした。
図で見る
α ≈ 0
収束0.875
α 0.29〜0.951.0
α ≈ 0.96
線形発散
横軸は最大ジョブがプール容量に占める割合です。αは明らかに安定な左端で0を、明らかに発散する右端で1を読みます。flow balanceが一度も持たなかった較正です。
結果
運用数値(α基準)
256サーバ、rho 0.85、指数サービス時間、再開コスト0、背景は{1..64}上の幾何分布。判定線 α=0.5、観測窓30,000〜240,000ジョブ、シード8本、90%ブートストラップ区間。
| 同時実行ジョブ数 | 最大クラスの頻度 | 安全な最大ジョブ比率 | 90%区間 |
|---|---|---|---|
| 10 | 0.002 | 0.92 | [0.903, 0.932] |
| 10 | 0.02 | 0.72 | [0.706, 0.732] |
| 15 | 0.002 | 0.85 | [0.834, 0.863] |
| 15 | 0.02 | 0.68 | [0.667, 0.695] |
| 30 | 0.002 | 0.73 | [0.713, 0.749] |
| 30 | 0.02 | 0.66 | [0.640, 0.682] |
**頻度の列を落とさないでください。**旧表にこの列がなかったことが、3本の研究にわたって壊れ続けた理由です。
旧表との比較——誤差は向きが揃っていませんでした。
| 同時実行ジョブ数 | 旧公開値 | α(頻度0.002) | α(頻度0.02) |
|---|---|---|---|
| 約10 | 0.875 | 0.92 | 0.72 |
| 約15 | 0.8125 | 0.85 | 0.68 |
| 約30 | 0.625 | 0.73 | 0.66 |
旧表は、希少な大ジョブに対しては保守側(0.04〜0.11低い)、頻繁な大ジョブに対しては危険側(同時10本で0.875に対し0.72)に外れていました。格子丸めは境界を下げ(保守側、平均0.040)、打ち切り比の盲目性は境界を上げます(危険側)。頻度が低いと前者が勝ち、高いと後者が勝ちます。単一の数を出したので、一貫して安全側に外れることすらできませんでした。
**決定予測:境界は動きません。**観測窓3点で当てたαと4点で当てたαの境界差は−0.021〜+0.006で、全6セルが封印した許容0.03の内側でした。
**ブートストラップ。**8シードの再標本2000回で、90%区間の半幅は0.013〜0.021。封印した基準0.06の3分の1以下です。
EASY backfill。
| 同時実行ジョブ数 | 比率0.875 | 比率1.0 |
|---|---|---|
| 10 | 0.020 | 0.011 |
| 15 | 0.009 | −0.008 |
| 30 | −0.002 | −0.013 |
同じ条件でgreedy SRPTが0.90〜0.98であることと対比すると、判定器の産物ではありません。
この研究が示すこと
- αは安定な条件で0、発散する条件で1を読み、観測窓を8倍にしても境界を0.02しか動かさず、90%区間の半幅0.02で引用できる。
- α基準の運用表(上表)。頻度の列を含む。
- 旧表の誤差は向きが揃っておらず、条件によって保守側と危険側が入れ替わっていた。
- EASY backfillのクラス健全性は、独立な判定器で確認された。
この研究が示さないこと
- 判定線 α=0.5 は慣習です。収束と線形発散の中点というだけで、導出されていません。線を0.3〜0.7で動かしても境界は±0.04しか動かず順序も保たれる、という観測は封印外です。
- 平均待ち時間は完了したジョブだけで平均します。発散が激しいクラスほど遅いジョブが除外されるので、αは発散側で過小に出ます。つまりα基準の境界は「安定と呼ぶ側」に保守的です。
- 実トレース上でスケジューリング方式を動かしていません。単一の負荷・プール規模・サービス分布・背景族です。
なぜ重要か
この分野は、判定器を替えたら数字が全部変わる、という状態に一度陥りました。そこから抜けるには、数字ではなく判定器そのものに封印した予測を立てる必要がありました。
決定予測は「観測窓をもう1つ足したときに境界が動くか」です。動かないことが示せて初めて、その境界を運用に渡せます。動いていたら、有限窓の統計量には不動点がないということで、窓に依存しない別の検定へ移る計画でした。
**質的な軸は、5回の判定器変更と3回の撤回を通じて、一度も壊れていません。**壊れたのは常に数値のほうでした。
何を調べたか
- αは観測窓を足しても動かない境界を与えるか。
- 引用できる精度はあるか。
- EASY backfillの健全性は、盲目な判定器の産物だったのか。
方法
比率7水準 × 同時本数3水準 × 頻度2水準 × 観測窓4水準(30,000 / 60,000 / 120,000 / 240,000ジョブ)× シード8本、計1344回。EASY backfillの対照96回。合計1440回、8ワーカーで57分。
シード901〜905の30,000〜120,000行は前の研究の再現ゲートを兼ね、630行が差0で再現しました。
PRED-013として、SHA-256 803590cd3c15b5dd383e2f4a900c129e79c66ea7db786c54842b70ee87ba830c で封印しています。対応する結果ファイルが存在しない状態でコミットしました。
何が変わったか
- 運用数値の停止を解除し、α基準で再発行しました。頻度の列が入りました。
- 判定器をflow balanceからαへ置き換えました。
- 前の研究の「運用表は過大評価側」という探索的主張に訂正帯を付けました。実際は向きが揃っていませんでした。
何が失敗したか
PRED-013は11本中8本的中。決定予測G1は的中しました。
**G2(単調性)が外れました。**同時10本・頻度0.002で、比率0.5から0.625へαが0.01から−0.06へ下がります。どちらも実質0で、0から離れた領域では全条件で単調です。0近傍の揺らぎを単調性違反として数える判定式を書いたのは私です。それでも外れは外れとして残します。
G3(過大評価の一律性)が外れました。「α基準の境界はfb基準より0.04以上低い」が6セル中4セルのみでした。頻度0.002ではほぼ一致します。前の研究の探索的な主張は、観測窓3点・シード5本の当てはめで希少条件での差を過大に見ていました。事前約束にしたがい訂正帯を付けています。
**G9(打ち切り比の係数)が外れました。**中央値1.602は封印帯の内側ですが、分布が想定より広く、157セル中70.7%しか帯に入りませんでした。事前約束にしたがい、過去の結果を測り直さずにαへ変換する道は断念しました。
そして事前約束が衝突しました。「決定予測が通った場合=新基準で表を出せ」と「G3が外れた場合=旧表の数値を復元せよ」が、同時に発火して反対の指示を出しました。
解いた方針:**検証済みの統計量が手元にあるとき、未検証のものを復元するのは誤りである。**前者を実行し、後者のうち訂正帯の追加だけを実行しました。封印時にこの衝突を予見できなかったのは、帰結を予測ごとに書き、組み合わせを考えなかったからです。帰結は予測単位ではなく、決定単位(何を公開するか、何を撤回するか)で書くべきでした。
証拠の範囲
言えること: この合成モデルの中では、αは安定で0・発散で1を読み、観測窓8倍で境界を0.02しか動かさず、8シードで引用できる精度を持つ。上表の数値はその基準での測定値である。EASY backfillはプール全体ジョブに対しても収束している。
言えないこと: 判定線α=0.5の妥当性(慣習)。実トレース上での挙動。単一の負荷・プール規模・サービス分布・背景族。real_prospective_cycle_count は0のままです。
まだ分からないこと
- 判定線α=0.5の感度。封印外では±0.04ですが、封印して測り直す必要があります。
- 実クラスタの頻度が表のどの行に落ちるか。次の研究で測ります。
- 頻度の効果のU字、背景分布族の効果の正体。
この結論が崩れるとき
- さらに長い観測窓を足すと、境界が0.03を超えて動く。
- 判定線を動かすと、条件間の順序が入れ替わる。
- 完了ジョブのみで平均する打ち切りが、αの読みを定性的に変えるほど大きい。
自分で確かめる
python -m pip install -r requirements-reproduce.txt
python scripts/reproduce.py --quick gpu-boundary完全な再実行(約57分):
cd reproduction/gpu-scheduling-boundary
python run_e14.py
python analyze_e14.py証拠とデータ
- 公開再現パッケージ
- 封印済みPRED-013(衝突した2つの帰結を含む)
- E14の採点
- 内部の元Episodeのハッシュ:
9f33d6cf645c7273f53984f13ce51ae2bc3b87aaba50ae1df822ed1756755ce6
外部からの検証
- 独立再現:0
- 再現失敗:0
- 公開後に確認されたbug:0
- 未解決の批判:0
次の実験
実クラスタの頻度を測ります。表は頻度0.002の行と0.02の行で安全比率が0.92と0.72に分かれるので、Philly 11cb48の余裕は0.13から0.33まで2.5倍の幅があります。頻度はトレースから測れる量で、新規シミュレーションが不要です。