松田研究室
FindingID: p3-final-stack
Status: stable / task 2026-09-seminar05-milestones M7 (最終スタック確定 + msplat 等価再比較 + Pareto v3)
← Findings Index
2026-09 第 5 回ゼミ milestones · M7 · 最終スタック確定 + msplat 等価再比較 + Pareto v3

M7 最終スタック確定 — 12.5k 124.39s (独立 n=3)、msplat 等価 gap 0.927×→0.755×、throughput 1.135×負け→0.926× (msplat 側 avg splats 借用値 ±8% 未満なら逆転)

M2 Tier1 (不採用) を除く採用施策 (M4: radix scatter simd_ballot、A7: refine 3-pass 削減) が両方 default ON の最終スタックを、単一 gate の副産物ではない独立 n=3 (+診断用 1 本) で 12.5k Lego 再計測した。<strong>train elapsed 124.393s (σ 0.756%、r2/r3/r4)</strong> — A7 gate on-arm mean (124.807s) を -0.33% で独立再現。msplat 等価比較 (p2-msplat-parity-final の手順を最終値で再計算): <strong>wallclock gap 0.927× → 0.755×</strong>、<strong>per-splat·iter throughput は 1.135× 負け (msplat が速い) → 0.926× 勝ち (本実装が速い) に逆転</strong>。PSNR (brush +2.01dB / white -1.11dB) は M4/A7 が PSNR trajectory に理論上影響しない施策のため旧値からほぼ不変。累計 ablation は Phase 0 (766.07s) から <strong>-83.8%</strong>。per-kernel share の v2 (M4/A7 後) 再計測は同日 <code>p3-kernel-share-post-s3.toml</code> §6 に追記、Pareto v3 は <code>docs/figures/pareto-v3-msplat-lego-final-stack.png</code>。

positiverank: highfinal-stack-confirmed-msplat-gap-0.755x-throughput-parity-crossed-pending-msplat-avg-splats-recheck第 1 軸第 3 軸m7seminar05-milestonesfinal-stackmsplat-paritypareto-v3throughput-paritylegogpu-gateindependent-remeasurement
Δ PSNR
12.5k self-eval (r2-r4 n=3 mean): **36.219 dB** (σ 0.046%)、baseline guard 36.202±0.1dB 内。brush cross-eval q8 (r2-r4 mean): **36.249 dB** (msplat 30K 保守値 34.243 比 **+2.006dB**、旧 +1.97dB とほぼ不変)。white cross-eval (r2-r4 mean): **35.147 dB** (msplat 30K cross-eval 最小 36.252 比 **-1.105dB**、旧 -1.10dB とほぼ不変)
Δ Wallclock
12.5k train elapsed 独立 n=3 (r2/r3/r4、clean set): **124.393s (σ 0.756%)**。A7 gate on-arm mean (124.807s) を **-0.33%** で再現。msplat 等価 gap (block1 n=2 分母 164.69s): **0.755×** (旧 0.927×)。per-splat·iter throughput: 本実装 **30.94ns** vs msplat 33.4ns = **0.926×** (旧 1.135×負けから逆転)
Impact
2026-09-seminar05-milestones M7 を実施した。(1) **12.5k full run 独立 n=3**: `2026-08-30-final-12500-r{1,2,3}.toml` を単純 3 repeat (off arm なし、全 [backend] flag は default 任せ = M4 radix_scatter=SimdBallot + A7 refine_scratch_persist/refine_direct_write=true 込み) で実行。r1 (131.84s) が r2/r3/r4 (123.34/124.69/125.15s) から外れて見えたため、advisor レビューを経て診断用の r4 を追加実行した結果、**r1 は script 再起動時に load sampler window ログが truncate され窓内記録が皆無**という house 規約 (p2-msplat-parity-final §7「事前 gate だけでは不十分、窓内記録が必須」) 上の欠陥を抱えていたことが判明し、r2/r3/r4 (全 run とも window 記録あり、load 正常) を正式な n=3 として採用した。**mean 124.393s (σ 0.756%)** — A7 gate on-arm mean 124.807s を -0.33% で独立再現しており、この近さ自体が両 session の健全性証拠になる。r1 込みの参考値 (n=3 リテラル/n=4 全部) も §1 に残す。(2) **per-kernel share v2**: `2026-08-30-c1v2-12500-off-prof.toml` (submission=per_kernel/forward_submission=per_stage/pipelining=off、M4/A7 default 込み) を 1 run。leaf gpu_ms 合計 114.508s は busy union と exact 一致。radix share 26.40%→12.01% (絶対 -63.25%、M4 gate の per_stage 補助計測 -63.7% と独立一致)、backward_raster が単独最大ブロックとしてさらに優位 (33.86%→40.07%)。詳細は `p3-kernel-share-post-s3.toml` §6 に追記。(3) **累計 ablation**: p2 の 8 段 (Phase0 766.07s → S3 151.70s) に M4 (127.53s、-14.9%) / A7 (124.81s、-2.15%) / M7 独立再計測 (124.39s、-0.33%、ほぼ noise level) を継ぎ足し、Phase 0 比 **-83.76%**。(4) **msplat 等価再比較**: p2-msplat-parity-final の計算手順を最終値で再計算。gap 分母は継続性のため block1 n=2 mean (164.69s) を維持 (msplat 側は再実行していない)。**wallclock gap 0.927×→0.755×**。throughput は avg splats を新 4 run の trapezoid 積分から自前算出 (321,637、旧値 322k とほぼ一致し手法の妥当性を裏づける) して **1.135×負け→0.926×勝ち** (ただし msplat 側 avg splats ~165k は p2 からの借用値で本 session では再導出できておらず、逆転が成立するのはこの借用値の誤差が +8.0% 未満の場合に限る、§4 callout 参照)。brush/white PSNR は既存 final.ply に対し `splat eval` を回して再計測し (新規 GPU 学習 run は不要)、両 convention とも旧値からほぼ不変 (brush +2.01dB / white -1.11dB) — M4/A7 は PSNR trajectory に理論上影響しない施策なので想定どおり。matched-iteration (30K vs 30K) / matched-wallclock (旧 13.3k 点) / matched-PSNR(brush) の旧 6.0k 点 / energy は**新規 GPU run が必要なため本 session では再計測せず**、旧スタック値を明示ラベルで carry forward するに留めた (外挿スケーリングによる偽の精度を避ける、advisor レビュー指摘)。(5) **Pareto v3**: `make_msplat_pareto.py` の入力を msplat 等価比較 4 点 Pareto curve (p2-msplat-parity-final §10 の未実施項目) に更新し `docs/figures/pareto-v3-msplat-lego-final-stack.png` を生成。12.5k 点のみ最終スタック値、他 3 点 (6.0k/13.3k/30k) と msplat は旧スタック値のまま明示ラベル。
01

本文

milestones.md「現在地」表は A7 gate の on-arm mean (124.81s) を「単一 gate の副産物」として暫定的に採用しており、独立再計測が必要だった。本 finding はその独立再計測 (12.5k n=3) と、それを土台にした msplat 等価再比較・Pareto v3・累計 ablation 更新をまとめる。GPU run は 12.5k full run ×4 (診断用 1 本込み) + per-kernel profile run ×1 の計 5 本のみで、msplat 側・energy 側は本 session では再実行していない。

0. 計測環境 — AC 電源 / GPU 専有 / pgrep 空確認

電源 / 機体
AC 接続 (`pmset -g batt` で series 開始前・完了後とも `AC Power` を確認)、M4 Max。GPU 権は main から付与済み、他 agent の GPU 使用は無し
binary / rev
release binary sha256 `f2bca7637a2738258c6d92943e6d12cf3f7d507ac9f4384a33664048077721d7`、series 前後 (final-12500-n3 series の pre/post) で一致確認。git rev `a446f2cacb5a8a85b21bcbf29a5973fbbde5513c` で series 全体を通じて不変 (`cargo build --release` は確認のみで再ビルド無し)
実行方式
`gate-ab-n.sh` (A/B 用) は使わず、専用の単純 3-repeat driver `splat/scripts/final-stack-n3.sh` を新設 (off arm 無し、`<config_prefix>-r{1..N}.toml` を順に実行し `<run_prefix>-gate.DONE` sentinel で完了通知)。nohup + disown で detach、foreground `until [ -f *.DONE ]; do sleep 20; done` で能動的に待機 (Monitor 系ツールは使っていない)
**driver スクリプトの自己バグ (記録)**
初回実行で `wait_quiet()` 関数内のループ変数 `i` が呼び出し元 (run-loop) の `$i` と同名衝突し (POSIX sh に `local` が無い)、quiesce 待ちが `$i` を 5 まで進めてしまった結果 run-loop が r1 のみで早期終了する事故が発生した (`r1` 自体の config/run_name は break 前に変数が確定していたため正しく実行されたが、ログの `EXIT r$i` 表示が誤って `r5` になった)。`wait_quiet` 内部変数を `qi` に rename して修正、r2/r3 を `<run_prefix> 2 3` の start/end 引数で再実行し完遂した (r1 は再実行していない — 正しい config で実行済みのため無駄になる)
run 後 pgrep / load 確認
全 5 run 完了後 `pgrep -fl "target/release/splat"` は空、`uptime` load average は 1.5〜2.5 の通常範囲、`pmset -g batt` は AC Power を維持
各 run の pre/post load1 (uptime 3 値)
r1: pre 1.46/2.85/2.77 → post 4.76/4.21/3.35 (script 再起動でこの run だけ独立 sampler の window 記録が無い、§1 参照)。r2: pre 2.32/3.40/3.13 → post 1.18/2.74/2.92 (10s sampler window: 2.32→1.19、単調減少)。r3: pre 0.84/2.40/2.78 → post 1.27/1.94/2.53 (window: 0.93→1.27)。r4: pre 3.80/2.35/2.44 → post 1.27/1.94/2.34 (window: 3.46→1.00、単調減少)。r2〜r4 とも load1 は 5 未満に収まり、p2-s3 が破棄基準にした「load 2→23 上昇」型の汚染は見られない

1. 12.5k full run 独立再計測 — 実測 (n=3 主値 + n=4 参考)

runconfigtrain elapsed (s)self-eval PSNR (dB)brush cross-eval q8 (dB)white cross-eval (dB)final splats採否
r1final-12500-r1131.8436.12936.15934.990407,754診断用参考値 (window 記録欠落)
r2final-12500-r2123.3436.20136.23535.136405,333**採用**
r3final-12500-r3124.6936.23436.26435.153408,756**採用**
r4final-12500-r4125.1536.22236.24835.154406,994**採用 (診断用に追加)**
**mean (r2-r4, n=3, 主値)**—**124.393** (σ 0.756%)**36.219** (σ0.046%)**36.249****35.147**407,028—
**mean (r1-r3, config 文字どおりの n=3)**—126.623 (σ 3.607%)36.18836.21935.093407,281参考
**mean (r1-r4, n=4)**—126.255 (σ 3.011%)36.19736.22735.108407,209参考
なぜ r2-r4 を主値に採用するか — r1 の ms/iter trace に iter 6000-9000 の局所的な hump が直接見える

r1 は最初の driver 実行 (§0 の自己バグにより r1 のみで停止した回) で完走した run で、r1 の run 窓に対応する独立 10s load sampler ログは、後続の r2/r3 再実行で `final-stack-n3.sh` を再起動した際に : >"$SAMPLE_LOG" で truncate されており窓内 load 記録が 0 サンプルである。当初はこの記録欠落 (`p2-msplat-parity-final` §7「事前 gate だけでは不十分、窓内記録が必須」への抵触) だけを根拠に r1 を格下げしていたが、advisor レビュー指摘を受けてログ自身の ms/iter trace (p3-refine-3pass §7 が汚染 run の判別に使ったのと同じ discriminator) を直接調べたところ、より積極的な証拠が見つかった: r2/r3/r4 は iter 6000〜12500 の間 ms/iter が 11.0〜12.1 でほぼ平坦に対し、r1 だけ iter 6000 (11.1ms) → 7000 (15.5ms) → 8000 (14.0ms) → 9000 (12.4ms) と局所的に跳ね上がり、iter 10000 以降 (11.8〜12.0ms) は他 run と合流する。iter 1000〜5000 の値は 4 run とも ±0.3ms 以内で一致しており (例: iter3000 は r1=8.6/r2=8.4/r3=8.5/r4=8.2)、r1 が一貫して重い cold-start ではなくiter 6000-9000 に限定された transient であることを trace 自体が示している。この 3000 iter 区間の超過 (r1 vs r2-r4 平均、およそ +3〜4ms/iter × 3000iter ≈ 数秒〜7秒) が r1 の全体超過 (r2-r4 平均比 +6.9s) の大半を説明する。訂正: 当初 r1 の pre/post uptime を「他 run より高い側」と書いたが、正しくはpost のみ (4.76) が最高で、pre (1.46) は r4 の pre (3.80) より低い — 判断根拠は uptime ではなく上記 ms/iter trace に置く。結論: r2/r3/r4 (trace 平坦、window 記録あり、A7 gate on-arm mean 124.807s を -0.33% で再現) を正式な n=3 として採用し、r1 は iter 6000-9000 の transient 汚染が trace 上で直接確認できる診断用参考値とする。r1 を含めた場合でも期日目標 (≤135s) は変わらず達成 (126.62s / 126.26s とも 135s 未満)。

avg splats の算出方法 — trapezoid 積分で自前算出、旧値 322k と一致

throughput (ns/splat·iter) の計算に必要な「iteration 平均 splat 数」は、各 run のログが 1000 iter ごとに出力する splat 数を台形則で積分して算出した (advisor レビュー指摘: 旧 finding の 322k という値をそのまま借用せず、自前の log から再計算する)。r2/r3/r4 の平均は 321,636.5 で、p2-msplat-parity-final が報告した 322k と 0.1% 差で一致し、この算出法の妥当性を裏づける。

2. per-kernel share v2 (M4/A7 後) — 別 finding に追記

詳細は p3-kernel-share-post-s3.toml §6/§7 参照

milestones.md M7 手順 2 (`2026-08-30-c1v2-12500-off-prof.toml`) は、milestone 本文が指定した「同じ finding に v2 節を追記」という指示どおり、新規 finding を作らず p3-kernel-share-post-s3.toml に §6 (v2 節) / §7 を追記した。要点のみ引用する: leaf gpu_ms 合計は v1 141.716s → v2 114.508s (-19.20%)、いずれも busy union と exact 一致。radix share 26.40%→12.01% (絶対 -63.25%、M4 gate の forward_submission=per_stage 補助計測 -63.7% と独立一致、cross-validation)。backward_raster share は 33.86%→40.07% に上昇しているが、これは分母 (radix の劇的縮小) が原因で、backward_raster 自体の絶対 gpu_ms はむしろ -4.40% と縮んでいる (「share 上昇 ≠ 遅くなった」の注記を finding 本文に明記済み)。

3. 累計 ablation 表 — Phase 0 (766.07s) から M7 (124.39s) まで、-83.76%

段階施策Lego 12.5k train elapsed (s)PSNR (dB)Δ (対前段)msplat 比較値 (旧166s系/新165s系)
Phase 0baseline (規約 v2 適用後)766.0736.216—4.51×
+ C0resident binning arena + radix pass skip 16→11395.5936.183-48.4%—
+ LCbackward last_contributor range336.3336.191-15.0%—
+ S1pipeline 全域 resident 化 (Tier A/B/C)261.5536.148-22.2%1.56×
+ W1warp sparse skip241.4136.201-7.7%1.44×
+ W2chained submission (adam+loss chain 統合)219.5136.170-9.1%1.31×
+ S2forward 1 CB 化 + hierarchical GPU scan187.6536.167-9.9%1.105×
+ S3iteration pipelining depth 2151.7036.202-18.1%0.907× (process wallclock 154.00s 基準、train elapsed 列とは分子が異なる点に注意)
**+ radix simd_ballot (M4)**radix scatter simdgroup ballot 2 段化127.5336.143**-14.9%**—
**+ refine 3-pass 削減 (A7)**refine scratch 永続化 + compact 直書き124.8136.241**-2.15%**—
**+ 最終スタック独立再計測 (M7)**M4+A7 済みスタックの独立 n=3 gate**124.39****36.219****-0.33%** (ほぼ noise)**0.755× (新 gap 公式値)**
Phase 0〜S3 の 8 段は `docs/strategy/2026-08-1x-roadmap-v2.md` 冒頭の累計注記および各段の finding (`p2-c0-resident-binning` / `p2-last-contributor` / `p2-s1-pipeline-resident` / `p2-w1-warp-sparse-skip` / `p2-w2-chained-submission` / `p2-s2-forward-chained` / `p2-s3-iteration-pipelining`) から引用。M4/A7/M7 の 3 段は本 finding + `p3-radix-ballot` + `p3-refine-3pass` の値。**累計 Δ (Phase 0 → M7 主値 124.39s) = -83.76%**。M4→A7→M7 の 3 段は -14.9% / -2.15% / -0.33% と単調に減衰しており、A7→M7 の -0.33% は A7 gate (独立 session、on-arm 124.807s) と M7 (本 session、124.393s) の再現性ノイズの範囲内 (両者とも n=3、σ はそれぞれ 0.256% / 0.756%) であって新規の改善ではない。
msplat 比較値の列について — 断面が完全には揃っていない

「msplat 比較値」列は各段階の finding が同時期に引用した msplat 実測値 (166〜220s 系、複数の異なる session・protocol) に対する比であり、互いに厳密には同じ msplat 断面ではない (roadmap v2 冒頭の累計注記も同じ注意書きを付けている)。S3 行までの値は各 finding からの引用をそのまま転記した。M4/A7 の 2 段は当時 msplat 側の等価比較を行っていない (gate は wallclock/PSNR の A/B のみ) ため空欄、M7 で改めて msplat 側 (block1 n=2 mean 164.69s) と揃えて **0.755×** を算出した (§4)。

4. msplat 等価再比較 — p2-msplat-parity-final の手順を最終値で再計算

msplat 側は再実行していない
milestone 本文の指示どおり、msplat 側の実測 (30K n=4 mean 165.42s / block1 n=2 mean 164.69s / native PSNR 36.563dB / brush cross-eval q8 33.038〜34.243dB / white cross-eval 36.252〜36.294dB) は `p2-msplat-parity-final` (2026-08-17) の値をそのまま使う
gap 分母の選択
継続性のため p2-msplat-parity-final が公式値として使った **block1 n=2 mean 164.69s** を主分母に維持する。参考として msplat 全 4 run の n=4 mean **165.42s** でも算出する
断面旧値 (2026-08-17、S3 のみ)新値 (2026-08-30、M4+A7 込み)再計測の有無
**wallclock gap (12.5k / msplat 30K、block1 n=2 分母)**0.927×**0.755×****新規実測** (本実装側のみ、r2-r4 mean 124.393s)
同上、msplat n=4 mean (165.42s) 分母0.923×**0.752×**同上
**per-splat·iter throughput (本実装 / msplat)**1.135× (msplat が速い、13.5% 負け)**0.926× (本実装が速い、7.4% 優位)****新規実測** — avg splats を新 4 run の trapezoid 積分で自前算出 (321,637)
brush convention PSNR Δ (msplat 保守値 34.243dB 比)+1.97dB**+2.01dB****新規実測** (`splat eval --convention brush --quantize-8bit` を既存 final.ply に再実行、新規学習 run は無し)
white convention PSNR Δ (msplat cross-eval 最小 36.252dB 比)-1.10dB**-1.11dB**同上 (`white_eval.py` を既存 final.ply に再実行)
matched-wallclock 断面 (13,300 iter)165.85s / brush+1.94dB (1.007×)**未再計測**carry forward。M7 スタックでの ~164.7s 到達点は概算 ~16,000〜16,500 iter 圏 (未検証・線形外挿、次 session 課題)
matched-PSNR (brush) 断面 (6,000 iter)51.60s (0.313×)**未再計測**carry forward。iter 数自体は PSNR trajectory 不変のため 6,000 のままのはずだが、対応 wallclock の実測が必要
matched-iteration (30K vs 30K)479.91s (2.888×)**未再計測**carry forward。30k full run が必要 (~8 分、本 session の GPU 予算外)
GPU energy / package energy0.906× / 0.896×**未再計測**carry forward。`splat power-sample` 併走 run が必要
throughput 逆転が本 finding の headline — kernel/実行形状レベルで msplat を上回った

2026-08-17 時点 (S3 のみ) の per-splat·iter throughput は msplat 1.135× (本実装が 13.5% 遅い) で、p2-msplat-parity-final は「near-parity まで詰めたが、まだ 13.5% 負け」と結論していた。M4 (radix simd_ballot) + A7 (refine 3-pass) の 2 施策で本実装は 37.9ns → 30.94ns/splat·iter に縮み、msplat 33.4ns を下回った (比 0.926×、本実装が 7.4% 優位)。本実装側の avg splats (321,637) は新規 4 run の trapezoid 積分による自前算出 (旧 322k と 0.1% 差で一致 — 算出法の相互検証も兼ねる) だが、msplat 側の avg splats (~165,000) は p2-msplat-parity-final からの借用値であり、本 session では msplat を再実行していないため再導出できていない。逆転の主張が成立する境界を逆算すると、msplat 側 avg splats が ~178,200 (借用値比 +8.0%) を超えると throughput は再び msplat 優位に戻る — msplat 30K の final splats (191,209〜196,404、n=4) から avg/final 比が本実装並み (0.79) なら avg ≈ 151k で安全側に収まるが、early-stopping 型の densification で avg/final 比が高め (0.92 程度) なら境界に近づく。「本実装が優位」の結論は、この ±8% 未満の借用値誤差の範囲内でのみ成立する — 確定させるには msplat 側の avg splats を同じ trapezoid 法で再導出する追加作業 (msplat 側ログの再解析、GPU run 不要) が次 session の課題として残る。roadmap v2 が「単位仕事あたりでは 2.6 倍遅い (2026-08-16)」→「near-parity、まだ 13.5% 負け (2026-08-17)」と書いてきた脚注は、本 finding で「本実装が優位 (ただし msplat 側 avg splats の借用値誤差 ±8% 未満という条件つき)」に書き換える。

PSNR は M4/A7 の理論上不変を実測で確認 — 旧値からの差は run-to-run ノイズ帯

M4 (radix scatter の rank 計算方式変更、sort parity は bit-exact) と A7 (refine の allocation/copy 経路変更、書き込みロジック自体は不変) はいずれも「計算結果を変えない」ことを parity test で pin した施策であり、PSNR trajectory が理論上動く理由が無い。実測でも brush +1.97dB→+2.01dB (Δ+0.04dB)、white -1.10dB→-1.11dB (Δ-0.01dB) と両方向とも run-to-run ノイズ帯 (n=3 の σ が 0.01〜0.09dB オーダー) に収まる差で、この予想を裏づけている。

matched 断面を外挿でスケールしなかった理由 (advisor レビュー指摘)

12.5k の速度比 (124.393/151.70 ≈ 0.820×) を旧 matched 断面 (6.0k/13.3k/30k) の wallclock にそのまま掛けて『新値』を捏造することはしなかった。M4 (radix) のコストは pair 数 (≈ splat 数に比例) に、A7 (refine) のコストは tick あたりの scratch サイズ (同じく splat 数に依存) に、それぞれ non-uniform に依存する — p2-msplat-parity-final §5 自身が「30k 断面では 36.5ns/splat·iter、12.5k は 37.9ns と splat 数で per-splat 効率が変わる」と記録しており、単一の乗数で全 iter 数に外挿するのは過剰な精度を偽装することになる。matched-wallclock の到達 iter 数についてのみ、参考の概算 (線形外挿、未検証) として ~16,000〜16,500 iter 圏という方向感を §4 表の備考に残したが、これは公表値ではなく次 session への申し送りである。

5. Pareto v3

生成スクリプト
`docs/strategy/make_msplat_pareto.py` の入力を更新。p2-msplat-parity-final §10 item 6 の未実施 TODO (「本 finding の 4 点 [6.0k/12.5k/13.3k/30k] + msplat n=4 mean に更新する」) を実施したもの。12.5k 点だけを本 finding の値 (124.393s / brush cross-eval 36.249dB) に更新し、他 3 点 (6.0k/13.3k/30k) と msplat は 2026-08-17 の旧スタック値のまま明示ラベルつきで残した (本 session では未再測)
convention の統一
本実装 4 点・msplat 主系列とも brush convention cross-eval q8 (同一 evaluator) で揃えた。msplat native (white-bg) は convention が異なるため、参考の灰色マーカーとして分離しラベルした (advisor レビュー指摘: convention を混ぜて 1 軸に載せると比較が壊れる、p2-msplat-parity-final §8 と同じ注意)
出力
`docs/figures/pareto-v3-msplat-lego-final-stack.png` (既存 `docs/figures/pareto-v2-bicycle-before-after.png` の命名規則 `pareto-v{n}-<topic>.png` に倣う)
旧 Pareto (Phase I 8-scene) の扱い
`make_msplat_pareto.py` は元々 Phase I 8-scene + msplat + external baseline を描く別内容のスクリプトだったが、`docs/strategy/2026-08-next-phase-tasklist.md` C5 と `docs/strategy/2026-08-1x-roadmap-v2.md` の「残: Pareto plot v3 の再生成 (make_msplat_pareto.py の入力を本 finding の 4 点に更新)」という既存の to-do が、まさに本スクリプトを msplat 等価比較 4 点 curve に転用する計画だったため、その通りに書き換えた。旧 Phase I 8-scene 版が生成していた静的成果物 `docs/strategy/msplat-vs-otake-pareto.png` (`p1-msplat-baseline-spike` / `three-impls-arch.md` が参照する killer figure) は**本 session で一切変更していない** — 生成元スクリプトの内容が変わっただけで、既存 png ファイルは無傷

6. milestones.md への反映

  • 「現在地」表: Lego 12.5k train elapsed を A7 gate 単独値 (124.81s) から本 finding の独立 n=3 (**124.39s**) に更新。msplat 等価 gap を **0.927× → 0.755×** に更新。per-kernel share は v2 (M4/A7 後) の値に更新し出典を追加。GPU busy/sync-tax は **本 session で production regime (profile=false) の再計測をしていない**ため既存値のまま (「A7 後は未再計測」の注記を維持、c1v2 run の 65.6% は非 production regime の値なので使わない)
  • 期日までの数値目標 (12.5k ≤135s / msplat 比 ≤0.83×) は **達成** (124.39s、0.755×) — r1 込みの保守的な値 (126.62s、0.769×) でも達成
  • 進捗ログに M7 完了の 1 行を追記
02

関連する run

この finding が観測された / 言及している実験 run。

03

関連 finding

© 2026 大竹律輝 — 松田研究室