GPUクラスタのスケジューリングサイズ優先方式が壊れる条件を、実データで確かめるEnglish
現在わかっていること
EP-0002が作った21セルの相図は、この研究の代表成果でした。需要mixを表すパラメータθと負荷rhoの平面上で、どの方式がどこで壊れるかを示した図です。
前の研究が看板結論を壊したあと、同じ疑いが相図にも向きました。θを動かすと、同時実行ジョブ数も一緒に動いているのではないか。
動いていました。**θを0.4から2.0へ動かすと、同時実行ジョブ数は全負荷で約18分の1になります。**θは需要mixの形だけでなく、平均ジョブ幅を2.37から43へ変え、到着率と同時実行ジョブ数を18倍動かしていたのです。
封印した飢餓判定では、飢餓セルの同時実行ジョブ数は18.95〜25.71、非飢餓セルは1.05〜11.33で、重なりがありませんでした。したがって旧相図の飢餓境界をθの効果として読むことは撤回します。
ただし相図を捨てるわけではありません。二層に分けて読みます。
- 安定性の層:どのクラスが飢餓するかは、最大ジョブ比率と同時実行ジョブ数で整理する。ここではθは代理変数でした。
- 条件付き順位の層:どの方式も健全なセルでの平均待ち時間の順位には、ジョブ幅の異質性が残る。等質な大ジョブ群(高θ・rho 0.7)では、greedy SRPTがServerFillingより7〜17%速いという結果はそのまま有効です。
図で見る
同時 1.05〜1.42θ=0.4
同時 19.0〜25.8
旧相図の横軸θは、そのまま同時実行ジョブ数の軸でもありました。端から端で約18倍です。飢餓が起きるのは右端(同時本数が多い側)に集中しています。
この研究が示すこと
- 旧相図のθ軸は、全負荷で同時実行ジョブ数を18.1〜18.2倍動かしていた。
- 飢餓セルと非飢餓セルは、同時実行ジョブ数の上で重なりなく分離する(18.95〜25.71 対 1.05〜11.33)。
- 最大ジョブ比率・その頻度・平均ジョブ幅・負荷を揃えて背景分布の形だけを3通りに変えても、飢餓の判定は変わらなかった。
- 旧相図の210回の実行は、主要な測定値の差0で完全に再現した。
この研究が示さないこと
- 同時実行ジョブ数と最大ジョブ比率の2つで、方式間の平均待ち時間の順位まで決まるとは示していません。安定性の層についての主張です。
- 対照群では最大ジョブの頻度を群内で固定しているので、頻度が第三の変数でないことは示せていません。次の研究がそれを調べ、第三の変数であると判明します。
- 判定に使った統計量は後の研究で無効と判明しました。ただしここでの分離は重なりゼロなので、判定線の位置には依存しません。
なぜ重要か
相図は「どの条件でどの方式を選ぶか」を読み取るための図です。横軸を需要mixの形だと思って読むと、需要mixを変えられない運用者には打つ手がないように見えます。
実際に効いていたのが同時実行ジョブ数なら、打つ手はあります。同時に走らせる本数は、運用側が調整できる量だからです。軸のラベルが間違っていると、読者が使える操作が見えなくなります。
何を調べたか
- 旧相図のθ軸は、同時実行ジョブ数と交絡しているか。
- 交絡しているなら、飢餓セルと非飢餓セルは新しい軸の上で分離するか。
- 最大ジョブ比率と同時実行ジョブ数を揃えれば、背景分布の形を変えても飢餓の判定は変わらないか。
方法
**再測定の腕。**旧相図のうちgreedy SRPTとServerFilling-SRPTの210回を、同じシード・同じ設定で完全に再走します。旧測定値が差0で再現することを確認してから、新たに保持した同時実行ジョブ数を読みます。
**等要約対照の腕。**64サーバ・rho 0.85で、最大ジョブ比率・その確率・平均ジョブ幅・到着率を群内で揃え、背景分布の形だけを narrow / geometric / wide の3通りに変えます。平均ジョブ幅4(予想同時本数13.6)と16(同3.4)の2群を置きます。計90回。
PRED-010として、SHA-256 c68cbf56b09da9dfe5a6c1493836979bda716c642dab8788834cbc54d7a741ea で封印しています。対応する結果ファイルが存在しない状態でコミットしました。
決定予測Y4は「2つの数を揃えれば背景形状を変えても判定は不変」、すなわちその時点の作業仮説が反証されうる側に指名してあります。
結果
旧θ軸は同時実行ジョブ数と18倍交絡していました。
| 負荷 | θ=0.4 | 0.8 | 1.25 | 2.0 | 端点比 |
|---|---|---|---|---|---|
| 0.70 | 19.00 | 4.14 | 1.67 | 1.05 | 18.1倍 |
| 0.85 | 23.03 | 5.02 | 2.03 | 1.27 | 18.1倍 |
| 0.95 | 25.84 | 5.62 | 2.27 | 1.42 | 18.2倍 |
全負荷で厳密に単調です。
**飢餓セルと非飢餓セルは分離します。**飢餓セルの同時実行ジョブ数は18.95〜25.71、非飢餓セルは1.05〜11.33。重なりはありません。
背景の形を変えても判定は変わりませんでした。
| 群 | 背景形状 | 同時実行ジョブ数 | 大クラスの流量 | 判定 |
|---|---|---|---|---|
| 高同時 | narrow / geometric / wide | 13.366 / 13.366 / 13.367 | 0.460 / 0.460 / 0.458 | すべて飢餓 |
| 低同時 | narrow / geometric / wide | 3.268 / 3.259 / 3.222 | 0.870 / 0.858 / 0.831 | すべて健全 |
群内の流量の幅は最大0.040で、封印した許容幅0.15の内側です。
**旧相図は差0で再現しました。**210回すべてで、平均待ち時間・利用率・実効負荷・流量の最大絶対差は0でした。
何が変わったか
- 相図の飢餓境界をθの効果として読むことを撤回し、最大ジョブ比率と同時実行ジョブ数の軸へ置き直しました。
- 相図を一枚の図から二層(安定性の層と条件付き順位の層)に分けました。
- 「等質な大ジョブ群ではgreedy SRPTがServerFillingより7〜17%速い」という条件付き順位の結論は維持しました。
何が失敗したか
PRED-010は7本中7本的中しました。
失敗として記録すべきは、やはり過去の側です。**代表成果の軸が交絡していることを、7本の研究のあいだ誰も確かめていませんでした。**θというパラメータは需要mixの形を表す名前がついていたので、形だけを変えていると思い込んでいました。実際には平均ジョブ幅を18倍動かし、負荷を固定するために到着率も18分の1にしていました。
パラメータの名前は、そのパラメータが何を動かしているかの証拠になりません。
また、低同時本数群のgreedy SRPTの平均待ち時間が背景形状によって55.1から79.7まで変わったことを観測していますが、これは方向を封印していないので探索的な観測に留めます。
証拠の範囲
言えること: 旧相図のθ軸は同時実行ジョブ数と強く交絡しており、飢餓境界はその新しい軸の上で分離する。調べた範囲では、最大ジョブ比率と同時実行ジョブ数を揃えれば背景形状によらず飢餓判定は一致する。
言えないこと: 方式間の平均待ち時間の順位まで2つの数で決まること。最大ジョブの頻度が第三の変数でないこと(次の研究で第三の変数と判明します)。実トレース上での挙動。
まだ分からないこと
- 最大ジョブの頻度・比率・同時実行ジョブ数を完全に独立に振ったときも、2変数の整理が保つのか。
- 等要約対照で低同時本数群の平均待ち時間が形状により変わった理由。
- 条件付き順位の層に残る異質性の効果の大きさ。
この結論が崩れるとき
- 同時実行ジョブ数と最大ジョブ比率を揃えたセルで、最大ジョブの頻度だけを変えて飢餓判定が反転する。次の研究で、これに近いことが起きます。
- 飢餓セルと非飢餓セルが同時実行ジョブ数の上で重なる条件が見つかる。
自分で確かめる
python -m pip install -r requirements-reproduce.txt
python scripts/reproduce.py --quick gpu-boundary完全な再実行:
cd reproduction/gpu-scheduling-boundary
python run_e11.py
python analyze_e11.py証拠とデータ
- 公開再現パッケージ
- 封印済みPRED-010
- E11の採点
- 内部の元Episodeのハッシュ:
a2c4be8afc557a71ba447773163d0fcf512d15181a8b235720fc3048b629c6d2
外部からの検証
- 独立再現:0
- 再現失敗:0
- 公開後に確認されたbug:0
- 未解決の批判:0
次の実験
最大ジョブ比率・その頻度・同時実行ジョブ数を完全に独立に操作する実験を組みます。この研究は頻度を群内で固定したので、2変数で足りるという主張の十分性はまだ確かめていません。