[{"data":1,"prerenderedAt":246},["ShallowReactive",2],{"finding:e-5-iter-scaling":3,"finding-runs:e-5-iter-scaling":163,"finding-related:e-5-iter-scaling":205},{"meta":4,"impact":32,"sections":38},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":15,"task_code":22,"related_runs":23,"related_findings":29},"e-5-iter-scaling","E.5 iter scaling — 10k で 96.7% 品質、kerbl_exp_decay artifact で non-monotonic","max_steps = 10k \u002F 15k \u002F 20k \u002F 25k \u002F 30k で lego sh3 を bench。10k で PSNR 24.007 dB (30k baseline 24.834 mean 比 -0.83 dB、wallclock 1\u002F3.4)。ただし kerbl_exp_decay が max_steps の関数なので、各 run で lr schedule が異なり PSNR が non-monotonic。モバイル含意は「10k iter で十分」だが lr schedule 設計には改善余地。","Experiment · iter scaling","2026-05-23","stable","experiment","mixed",[14],3,[16,17,18,19,20,21],"phase-5","e-5","iter-scaling","lr-schedule","kerbl-exp-decay","mobile","E.5",[24,25,26,27,28],"lego-iter10000","lego-iter15000","lego-iter20000","lego-iter25000","lego-sh3-30k",[30,31],"a-10-variance-baseline","e-6-capacity-scaling",{"summary":33,"rank":34,"verdict":35,"delta_psnr":36,"delta_wallclock":37},"10k iter で PSNR 24.007 dB を達成、30k baseline (mean 24.834) の 96.7% 品質、wallclock 1\u002F3.4。15k → 23.932、20k → 23.868、25k → 24.623 と non-monotonic で kerbl_exp_decay lr schedule の max_steps 依存性 artifact が混入。卒論モバイル含意では「10k iter で十分、追加 iter は variance noise」と言える反面、E.5 として「fair な iter scaling 比較には固定 schedule での checkpoint 取得が必要」と spec 化が必要。","mid","partial","+0.000 〜 -0.966 dB (mean -0.41 dB from 30k baseline)","-70% 〜 -18% (iter 数に比例)",[39,42,57,60,108,110,113,117,119,127,129,131,137,139,141,146,148,150,155,157],{"type":40,"text":41},"lead","\u003Cstrong>収益逓減 plateau の特定\u003C\u002Fstrong> 目的で max_steps を 10k \u002F 15k \u002F 20k \u002F 25k で bench、30k baseline と比較。\u003Cstrong>10k で 30k の 96.7% 品質\u003C\u002Fstrong>、しかし 15k → 20k で PSNR が漸減し 25k で回復する non-monotonic curve、原因は kerbl_exp_decay lr schedule が max_steps の関数 (= 各 run で lr profile が異なる) という設計 artifact。",{"type":43,"items":44},"kv",[45,48,51,54],{"key":46,"value":47},"実施日","2026-05-23 Phase D (bench chain Phase D)",{"key":49,"value":50},"config","configs\u002F2026-05-23-1000-lego-iter{10000,15000,20000,25000}.toml",{"key":52,"value":53},"seed","42 固定",{"key":55,"value":56},"比較対象","lego-sh3-30k baseline (mean PSNR 24.834 \u002F wallclock 22m18s)",{"type":58,"text":59},"heading","実測値",{"type":61,"columns":62,"align":69,"rows":72,"caption":107},"table",[63,64,65,66,67,68],"max_steps","PSNR (dB)","wallclock","Δ PSNR vs 30k","Δ wall %","品質達成率",[70,71,71,71,71,71],"left","right",[73,80,87,94,101],[74,75,76,77,78,79],"10k","**24.007**","6m40s (400s)","-0.827","-70.3%","**96.7%**",[81,82,83,84,85,86],"15k","23.932","10m32s (632s)","-0.902","-53.0%","96.4%",[88,89,90,91,92,93],"20k","**23.868**","14m09s (849s)","-0.966","-36.9%","96.1%",[95,96,97,98,99,100],"25k","24.623","18m19s (1099s)","-0.211","-18.3%","99.2%",[102,103,104,105,105,106],"30k baseline (mean)","24.834","22m18s (1345s)","0","100.0%","non-monotonic curve: 10k → 15k → 20k で PSNR 漸減、25k で大幅回復、30k baseline でさらに微増。",{"type":58,"text":109},"non-monotonic の原因 — kerbl_exp_decay lr schedule artifact",{"type":111,"text":112},"paragraph","本実装の lr schedule は \u003Ccode>kerbl_exp_decay\u003C\u002Fcode> with \u003Ccode>final_factor=0.01\u003C\u002Fcode>:",{"type":114,"lang":115,"text":116},"code","rust","lr(iter) = lr_initial * (final_factor)^(iter \u002F max_steps)\n        = lr_initial * 0.01^(iter \u002F max_steps)\n",{"type":111,"text":118},"つまり \u003Cstrong>同じ iter (例: iter=10000)\u003C\u002Fstrong> でも:",{"type":120,"items":121},"list",[122,123,124,125,126],"10k run: iter=10000 = max → lr = lr_initial × 0.01 (最終 lr、ほぼ凍結)","15k run: iter=10000 → lr = lr_initial × 0.01^(2\u002F3) ≈ lr_initial × 0.046","20k run: iter=10000 → lr = lr_initial × 0.01^(1\u002F2) = lr_initial × 0.1","25k run: iter=10000 → lr = lr_initial × 0.01^(2\u002F5) ≈ lr_initial × 0.158","30k run: iter=10000 → lr = lr_initial × 0.01^(1\u002F3) ≈ lr_initial × 0.215",{"type":111,"text":128},"つまり「max_steps を変える bench」は \u003Cstrong>同じ iter での lr が異なる学習\u003C\u002Fstrong>を比較していて、純粋な iter scaling 比較になっていない。15-20k run で PSNR が低いのは「中盤で lr が小さくなり過ぎ、後半の refine \u002F Adam update が learning rate 不足になる」と解釈可能。",{"type":58,"text":130},"正しい E.5 設計 (defer)",{"type":120,"ordered":132,"items":133},true,[134,135,136],"\u003Cstrong>固定 schedule + checkpoint eval\u003C\u002Fstrong>: 30k run の途中で 10k\u002F15k\u002F20k\u002F25k の checkpoint を保存し、eval する (current trainer は checkpoint output 機能なし、要実装)","\u003Cstrong>変動 schedule + 比較\u003C\u002Fstrong>: 現実装の挙動として「max_steps 短いほど早く lr 減衰、学習不足」を documented finding にする (本 finding がそれ)","\u003Cstrong>cosine schedule に置換\u003C\u002Fstrong>: cosine annealing なら final_factor 依存性が弱い、別 schedule の比較も possible",{"type":58,"text":138},"モバイル含意",{"type":111,"text":140},"non-monotonic はあるが、\u003Cstrong>10k iter で 30k 品質の 96.7%\u003C\u002Fstrong>を達成している事実は重要。",{"type":120,"items":142},[143,144,145],"モバイル時短候補: \u003Cstrong>10k iter で打ち切り\u003C\u002Fstrong>すれば wallclock 1\u002F3.4、品質損失は variance σ ±0.32 dB の 2.5x (実用上 marginal)","「30k 必要」という従来の慣習は overkill、本実装では 10k で十分実用","ただし brush SoTA (35+ dB) を狙うなら 30k+ + 別 schedule + 別 trainer recipe が必要 — 本実装の plateau は trainer recipe の immaturity と coupling",{"type":58,"text":147},"卒論への含意",{"type":111,"text":149},"Chapter モバイル章で「\u003Cstrong>iter 10k で 96.7% 品質達成、wallclock 1\u002F3.4\u003C\u002Fstrong>」を strong claim。同時に E.5 design artifact (lr schedule の max_steps 依存) を honest に脚注で記述し、「真の iter scaling 比較には固定 schedule での checkpoint eval が必要」と future work で言及。",{"type":151,"label":152,"variant":153,"text":154},"callout","Lesson","info","Bench 設計時は \"\u003Cstrong>変えたいパラメータ以外を固定\u003C\u002Fstrong>\" が原則。今回 max_steps を変えたが、lr schedule も同時に変わってしまい純粋な iter scaling になっていない。Bench config を書く前に「制御変数 vs 共変変数」を明示的に洗い出す手順を運用に組み込むべき。",{"type":58,"text":156},"関連",{"type":120,"items":158},[159,160,161,162],"A.10 variance baseline (有意性 noise floor): \u003Ccode>a-10-variance-baseline\u003C\u002Fcode>","E.6 capacity scaling (同 phase chain で実施): \u003Ccode>e-6-capacity-scaling\u003C\u002Fcode>","A.4 NeRF Synthetic multi-scene (シーン依存性): \u003Ccode>a-4-nerf-synthetic-scene-results\u003C\u002Fcode>","A.5 final ablation 表: \u003Ccode>final-ablation-table\u003C\u002Fcode>",[164,173,180,187,194],{"id":24,"title":24,"subtitle":165,"date":9,"workspace":166,"tags":167,"verdict":35,"psnr":169,"psnr_unit":-1,"wallclock":170,"splats":171,"summary_url":172,"detail_path":172},"E.5 iter scaling: lego sh3 10000 iter (収益逓減 plateau 探索)","splat",[168,24],"auto-bench",24.006683349609375,"6m 40s",75510,"\u002Fruns\u002Flego-iter10000\u002F",{"id":25,"title":25,"subtitle":174,"date":9,"workspace":166,"tags":175,"verdict":35,"psnr":176,"psnr_unit":-1,"wallclock":177,"splats":178,"summary_url":179,"detail_path":179},"E.5 iter scaling: lego sh3 15000 iter (収益逓減 plateau 探索)",[168,25],23.932266235351562,"10m 32s",81854,"\u002Fruns\u002Flego-iter15000\u002F",{"id":26,"title":26,"subtitle":181,"date":9,"workspace":166,"tags":182,"verdict":35,"psnr":183,"psnr_unit":-1,"wallclock":184,"splats":185,"summary_url":186,"detail_path":186},"E.5 iter scaling: lego sh3 20000 iter (収益逓減 plateau 探索)",[168,26],23.86842155456543,"14m 8s",80716,"\u002Fruns\u002Flego-iter20000\u002F",{"id":27,"title":27,"subtitle":188,"date":9,"workspace":166,"tags":189,"verdict":35,"psnr":190,"psnr_unit":-1,"wallclock":191,"splats":192,"summary_url":193,"detail_path":193},"E.5 iter scaling: lego sh3 25000 iter (収益逓減 plateau 探索)",[168,27],24.62303924560547,"18m 19s",84086,"\u002Fruns\u002Flego-iter25000\u002F",{"id":28,"title":28,"subtitle":195,"date":196,"workspace":166,"tags":197,"verdict":35,"psnr":201,"psnr_unit":-1,"wallclock":202,"splats":203,"summary_url":204,"detail_path":204},"A.8 SH degree ablation — sh_degree=3 (DC only, no view-dependence)","2026-05-22",[198,199,200,16],"sh-ablation","lego-30k","sh-3",24.87872886657715,"23m 13s",83734,"\u002Fruns\u002Flego-sh3-30k\u002F",[206,226],{"id":30,"title":207,"date":9,"status":10,"polarity":208,"category":11,"axes":209,"tags":210,"task_code":216,"related_runs":217,"delta_psnr":221,"delta_wallclock":222,"rank":223,"verdict":10,"impact_summary":224,"detail_path":225},"A.10 variance baseline — σ ±0.32 dB \u002F range 0.885 dB を実測","negative",[14],[16,211,212,213,214,215],"variance","gpu-non-determinism","kahan","atomic","apple-silicon","A.10",[28,218,219,220],"lego-variance-trial1-30k","lego-variance-trial2-30k","lego-variance-trial3-30k","σ ±0.32 dB \u002F range 0.885 dB","σ ±2.4% \u002F range 5.2%","high","M-3.x lego sh3 30k の PSNR variance は σ ±0.32 dB \u002F range 0.885 dB (4 run estimate)、wallclock variance は σ ±2.4% \u002F range 5.2%。原因は SIMD backward kernel の atomic_fetch_add 順序非決定性で、A.10 Kahan で消えない (compensator も bit-identical のところ)。卒論 finding として「Apple Silicon の variance band は数値精度の問題でなく GPU scheduler 由来」と確定。","\u002Ffindings\u002Fa-10-variance-baseline\u002F",{"id":31,"title":227,"date":9,"status":10,"polarity":228,"category":11,"axes":229,"tags":230,"task_code":235,"related_runs":236,"delta_psnr":241,"delta_wallclock":242,"rank":223,"verdict":243,"impact_summary":244,"detail_path":245},"E.6 capacity scaling — 50k〜1M で PSNR variance band 内、本質的 splat 数 ≈ 85k で plateau","positive",[14],[16,231,232,21,233,234],"e-6","capacity-scaling","plateau","regularization","E.6",[237,238,239,240,28],"lego-cap50000-30k","lego-cap100000-30k","lego-cap200000-30k","lego-cap500000-30k","±0.44 dB (variance band 内、有意差なし)","-3% 〜 -4% (capacity 小で僅かに速い)","accepted","lego では capacity 50k から 1M まで PSNR は 24.605 〜 25.275 dB で variance σ ±0.32 dB band 内、capacity effect は実質ゼロ。final splats は 50k 飽和 → 81k → 85k → 84k と「本質的 ~85k で plateau」を実証。モバイル制約下で capacity 50-100k を choose しても 1M と同等品質、卒論モバイル章の重要数値。capacity 大きいほど refine が無駄 split で variance noise を増やす副作用も観測。","\u002Ffindings\u002Fe-6-capacity-scaling\u002F",1782449788627]