Scheduled Commit
Browse files
ablation_runs/ablation_section_preview.html
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
<!-- ======================= ABLATION ======================= -->
|
| 3 |
+
<section id="ablation">
|
| 4 |
+
<p class="sec-eyebrow">ablation</p>
|
| 5 |
+
<h2>Ablation: what track, force, and deformation tactile each buy</h2>
|
| 6 |
+
|
| 7 |
+
<div class="prose">
|
| 8 |
+
<p>Four variants of the cascade are trained from the same Wan2.2 foundation
|
| 9 |
+
weights on the <code>trex_mini_force</code> episode — identical anchors,
|
| 10 |
+
LoRA budget (r=4 on q,k,v,o,k_img,v_img,ffn), learning rate, batch size,
|
| 11 |
+
seed, and 3,000 single-GPU steps — so every difference below is
|
| 12 |
+
attributable to the ablated component, not to training budget.
|
| 13 |
+
<b>B</b> removes the track pathway structurally (no track tokens, encoder,
|
| 14 |
+
decoder, or loss): the packed block shrinks from 617 to 117 tokens —
|
| 15 |
+
exactly the pre-track architecture with the force stage kept. <b>C</b>
|
| 16 |
+
removes the force stage (no Stage-2 transformer, no tactile input, no
|
| 17 |
+
force/VQ loss); at inference its coarse model carries the flow all the way
|
| 18 |
+
to τ=0. <b>D</b> keeps the full model and adds ten per-finger
|
| 19 |
+
deformation-camera tokens (96×96 crops → 4-layer CNN → d 768)
|
| 20 |
+
beside the F6 and VQ-history tokens in Stage 2.</p>
|
| 21 |
+
</div>
|
| 22 |
+
|
| 23 |
+
<div class="legend" role="list" aria-label="Ablation variant legend">
|
| 24 |
+
<span class="k" role="listitem"><span class="vs vs-full"></span>A · full (track + force)</span>
|
| 25 |
+
<span class="k" role="listitem"><span class="vs vs-notrack"></span>B · no track (pre-track structure)</span>
|
| 26 |
+
<span class="k" role="listitem"><span class="vs vs-noforce"></span>C · no force stage</span>
|
| 27 |
+
<span class="k" role="listitem"><span class="vs vs-deform"></span>D · deform tactile + force</span>
|
| 28 |
+
</div>
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
<div class="tbl-wrap">
|
| 32 |
+
<table>
|
| 33 |
+
<thead><tr><th>Variant</th><th>Stage-1 tokens / block</th>
|
| 34 |
+
<th>Stage-2 tokens</th><th>Losses optimized</th></tr></thead>
|
| 35 |
+
<tbody>
|
| 36 |
+
<tr><td><span class="chip"><span class="vs vs-full"></span> A · full</span></td>
|
| 37 |
+
<td class="shape">100 obs + 16 act + 1 st + 500 trk = 617</td>
|
| 38 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + mem</td>
|
| 39 |
+
<td>dynamics · action · 20·track · force · VQ</td></tr>
|
| 40 |
+
<tr><td><span class="chip"><span class="vs vs-notrack"></span> B · no track</span></td>
|
| 41 |
+
<td class="shape">100 obs + 16 act + 1 st = 117</td>
|
| 42 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + mem</td>
|
| 43 |
+
<td>dynamics · action · force · VQ</td></tr>
|
| 44 |
+
<tr><td><span class="chip"><span class="vs vs-noforce"></span> C · no force</span></td>
|
| 45 |
+
<td class="shape">617</td>
|
| 46 |
+
<td class="shape">— (coarse runs τ→0)</td>
|
| 47 |
+
<td>dynamics · action · 20·track</td></tr>
|
| 48 |
+
<tr><td><span class="chip"><span class="vs vs-deform"></span> D · deform + force</span></td>
|
| 49 |
+
<td class="shape">617</td>
|
| 50 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + <b>10 deform</b> + mem</td>
|
| 51 |
+
<td>dynamics · action · 20·track · force · VQ</td></tr>
|
| 52 |
+
</tbody>
|
| 53 |
+
</table>
|
| 54 |
+
</div>
|
| 55 |
+
|
| 56 |
+
<figure>
|
| 57 |
+
<div class="quad">
|
| 58 |
+
<div><svg viewBox="0 0 520 230" role="img" aria-label="action flow MSE">
|
| 59 |
+
<text class="th" x="46" y="15">action flow MSE</text>
|
| 60 |
+
<line class="grid-cell" x1="46" y1="157.3" x2="510" y2="157.3"></line>
|
| 61 |
+
<text class="ts" x="40" y="160.3" text-anchor="end">0.5</text>
|
| 62 |
+
<line class="grid-cell" x1="46" y1="108.6" x2="510" y2="108.6"></line>
|
| 63 |
+
<text class="ts" x="40" y="111.6" text-anchor="end">1</text>
|
| 64 |
+
<line class="grid-cell" x1="46" y1="59.9" x2="510" y2="59.9"></line>
|
| 65 |
+
<text class="ts" x="40" y="62.9" text-anchor="end">2</text>
|
| 66 |
+
<line class="grid-cell" x1="46.0" y1="26" x2="46.0" y2="200"></line>
|
| 67 |
+
<text class="ts" x="46.0" y="214" text-anchor="middle">0k</text>
|
| 68 |
+
<line class="grid-cell" x1="200.7" y1="26" x2="200.7" y2="200"></line>
|
| 69 |
+
<text class="ts" x="200.7" y="214" text-anchor="middle">1k</text>
|
| 70 |
+
<line class="grid-cell" x1="355.3" y1="26" x2="355.3" y2="200"></line>
|
| 71 |
+
<text class="ts" x="355.3" y="214" text-anchor="middle">2k</text>
|
| 72 |
+
<line class="grid-cell" x1="510.0" y1="26" x2="510.0" y2="200"></line>
|
| 73 |
+
<text class="ts" x="510.0" y="214" text-anchor="middle">3k</text>
|
| 74 |
+
<text class="ts" x="510" y="224" text-anchor="end">step</text>
|
| 75 |
+
<path class="vw v-full" d="M46.0 26.5 L49.1 26.0 L52.2 28.0 L55.3 32.8 L58.4 38.5 L61.5 44.3 L64.6 49.8 L67.7 55.2 L70.7 60.0 L73.8 64.6 L76.9 68.9 L80.0 72.8 L83.1 76.6 L86.2 79.8 L89.3 82.9 L92.4 85.6 L95.5 88.2 L98.6 90.6 L101.7 92.8 L104.8 94.7 L107.9 96.4 L111.0 98.0 L114.1 99.5 L117.1 100.9 L120.2 102.3 L123.3 103.5 L126.4 104.7 L129.5 105.7 L132.6 106.8 L135.7 107.9 L138.8 109.3 L141.9 110.6 L145.0 111.5 L148.1 112.8 L151.2 114.3 L154.3 115.8 L157.4 116.9 L160.5 118.1 L163.5 119.3 L166.6 120.9 L169.7 122.3 L172.8 123.5 L175.9 125.0 L179.0 126.2 L182.1 127.8 L185.2 129.2 L188.3 130.7 L191.4 131.7 L194.5 133.7 L197.6 135.2 L200.7 137.2 L203.8 139.4 L206.9 140.8 L209.9 141.8 L213.0 144.1 L216.1 146.2 L219.2 147.8 L222.3 149.4 L225.4 150.5 L228.5 152.0 L231.6 153.7 L234.7 154.8 L237.8 155.7 L240.9 157.5 L244.0 158.7 L247.1 160.0 L250.2 161.5 L253.3 161.1 L256.3 161.1 L259.4 161.7 L262.5 163.0 L265.6 164.3 L268.7 165.4 L271.8 165.6 L274.9 166.5 L278.0 168.2 L281.1 169.9 L284.2 170.6 L287.3 170.9 L290.4 172.1 L293.5 171.9 L296.6 172.1 L299.7 173.0 L302.7 174.2 L305.8 176.0 L308.9 177.1 L312.0 177.5 L315.1 177.8 L318.2 179.0 L321.3 179.9 L324.4 181.0 L327.5 181.5 L330.6 181.8 L333.7 183.7 L336.8 185.5 L339.9 184.7 L343.0 183.4 L346.1 183.9 L349.1 183.0 L352.2 184.5 L355.3 184.1 L358.4 184.9 L361.5 184.2 L364.6 184.3 L367.7 184.7 L370.8 187.0 L373.9 187.2 L377.0 188.9 L380.1 189.1 L383.2 187.6 L386.3 188.4 L389.4 189.2 L392.5 190.8 L395.5 191.1 L398.6 189.5 L401.7 187.6 L404.8 188.7 L407.9 190.3 L411.0 190.7 L414.1 191.6 L417.2 191.4 L420.3 189.8 L423.4 190.5 L426.5 191.2 L429.6 191.7 L432.7 192.6 L435.8 193.2 L438.9 193.9 L441.9 192.9 L445.0 194.0 L448.1 195.0 L451.2 195.3 L454.3 195.7 L457.4 196.1 L460.5 197.1 L463.6 195.4 L466.7 195.5 L469.8 197.0 L472.9 196.7 L476.0 196.7 L479.1 196.5 L482.2 196.1 L485.3 196.2 L488.3 195.9 L491.4 197.2 L494.5 197.2 L497.6 196.9 L500.7 194.4 L503.8 196.5 L506.9 199.6 L508.5 198.1"></path>
|
| 76 |
+
<circle class="vdot v-full" cx="508.5" cy="198.1" r="3.5"></circle>
|
| 77 |
+
<path class="vw v-notrack" d="M46.0 30.7 L49.1 30.4 L52.2 32.6 L55.3 37.6 L58.4 43.3 L61.5 49.0 L64.6 54.4 L67.7 59.6 L70.7 64.1 L73.8 68.5 L76.9 72.6 L80.0 76.2 L83.1 79.7 L86.2 82.8 L89.3 85.7 L92.4 88.1 L95.5 90.4 L98.6 92.7 L101.7 94.6 L104.8 96.4 L107.9 98.0 L111.0 99.6 L114.1 101.0 L117.1 102.4 L120.2 103.7 L123.3 104.9 L126.4 106.2 L129.5 107.4 L132.6 108.6 L135.7 110.0 L138.8 110.9 L141.9 111.9 L145.0 113.2 L148.1 114.6 L151.2 115.8 L154.3 117.1 L157.4 118.4 L160.5 120.0 L163.5 121.1 L166.6 122.1 L169.7 123.5 L172.8 125.8 L175.9 127.2 L179.0 128.5 L182.1 130.0 L185.2 131.4 L188.3 132.8 L191.4 134.4 L194.5 135.5 L197.6 136.5 L200.7 138.1 L203.8 139.8 L206.9 141.5 L209.9 142.3 L213.0 143.6 L216.1 145.9 L219.2 148.1 L222.3 149.2 L225.4 151.1 L228.5 152.1 L231.6 152.9 L234.7 154.2 L237.8 155.7 L240.9 157.2 L244.0 159.3 L247.1 160.4 L250.2 162.7 L253.3 165.1 L256.3 166.4 L259.4 167.1 L262.5 168.0 L265.6 169.0 L268.7 169.6 L271.8 171.4 L274.9 172.0 L278.0 172.7 L281.1 174.5 L284.2 175.0 L287.3 176.4 L290.4 175.0 L293.5 176.0 L296.6 176.5 L299.7 177.5 L302.7 178.4 L305.8 180.5 L308.9 181.0 L312.0 182.2 L315.1 182.0 L318.2 184.0 L321.3 183.9 L324.4 182.7 L327.5 183.2 L330.6 183.9 L333.7 185.0 L336.8 186.3 L339.9 187.0 L343.0 188.0 L346.1 188.2 L349.1 186.5 L352.2 187.1 L355.3 187.9 L358.4 187.8 L361.5 189.6 L364.6 189.3 L367.7 192.2 L370.8 191.2 L373.9 191.5 L377.0 192.8 L380.1 193.0 L383.2 194.9 L386.3 195.4 L389.4 196.5 L392.5 196.9 L395.5 197.0 L398.6 194.9 L401.7 195.6 L404.8 195.7 L407.9 195.8 L411.0 196.6 L414.1 197.3 L417.2 196.3 L420.3 198.0 L423.4 197.2 L426.5 197.7 L429.6 197.8 L432.7 197.2 L435.8 196.2 L438.9 197.0 L441.9 195.6 L445.0 195.5 L448.1 194.6 L451.2 194.0 L454.3 193.7 L457.4 194.0 L460.5 194.2 L463.6 195.3 L466.7 194.2 L469.8 193.7 L472.9 192.2 L476.0 194.7 L479.1 194.5 L482.2 194.4 L485.3 196.0 L488.3 196.9 L491.4 194.9 L494.5 197.3 L497.6 200.0 L500.7 199.8 L503.8 199.9 L506.9 198.8 L508.5 198.2"></path>
|
| 78 |
+
<circle class="vdot v-notrack" cx="508.5" cy="198.2" r="3.5"></circle>
|
| 79 |
+
<path class="vw v-noforce" d="M46.0 26.5 L47.5 26.4 L49.1 26.2 L50.6 26.4 L52.2 27.9 L53.7 30.2 L55.3 32.7 L56.8 35.6 L58.4 38.5 L59.9 41.3 L61.5 44.3 L63.0 47.3 L64.6 49.9 L66.1 52.8 L67.7 55.5 L69.2 57.8 L70.7 60.2 L72.3 62.5 L73.8 64.7 L75.4 66.9 L76.9 69.0 L78.5 71.0 L80.0 72.9 L81.6 74.8 L83.1 76.8 L84.7 78.3 L86.2 80.0 L87.8 81.6 L89.3 83.0 L90.9 84.4 L92.4 85.8 L93.9 87.2 L95.5 88.4 L97.0 89.7 L98.6 90.8 L100.1 91.9 L101.7 93.0 L103.2 94.0 L104.8 94.9 L106.3 95.9 L107.9 96.7 L109.4 97.6 L111.0 98.4 L112.5 99.0 L114.1 99.7 L115.6 100.5 L117.1 101.2 L118.7 101.9 L120.2 102.6 L121.8 103.1 L123.3 103.6 L124.9 104.4 L126.4 104.9 L128.0 105.4 L129.5 106.1 L131.1 106.6 L132.6 107.2 L134.2 107.9 L135.7 108.5 L137.3 109.1 L138.8 109.8 L140.3 110.5 L141.9 111.2 L143.4 111.6 L145.0 112.3 L146.5 112.8 L148.1 113.4 L149.6 113.9 L151.2 114.5 L152.7 115.1 L154.3 115.5 L155.8 116.3 L157.4 117.0 L158.9 117.5 L160.5 118.6 L162.0 119.3 L163.5 119.9 L165.1 120.7 L166.6 121.5 L168.2 122.4 L169.7 123.2 L171.3 123.9 L172.8 124.6 L174.4 125.1 L175.9 126.0 L177.5 126.3 L179.0 127.3 L180.6 128.0 L182.1 128.7 L183.7 129.4 L185.2 130.1 L186.7 130.7"></path>
|
| 80 |
+
<circle class="vdot v-noforce" cx="186.7" cy="130.7" r="3.5"></circle>
|
| 81 |
+
</svg></div>
|
| 82 |
+
<div><svg viewBox="0 0 520 230" role="img" aria-label="dynamics (video flow) MSE">
|
| 83 |
+
<text class="th" x="46" y="15">dynamics (video flow) MSE</text>
|
| 84 |
+
<line class="grid-cell" x1="46" y1="154.8" x2="510" y2="154.8"></line>
|
| 85 |
+
<text class="ts" x="40" y="157.8" text-anchor="end">0.5</text>
|
| 86 |
+
<line class="grid-cell" x1="46" y1="100.1" x2="510" y2="100.1"></line>
|
| 87 |
+
<text class="ts" x="40" y="103.1" text-anchor="end">1</text>
|
| 88 |
+
<line class="grid-cell" x1="46" y1="45.5" x2="510" y2="45.5"></line>
|
| 89 |
+
<text class="ts" x="40" y="48.5" text-anchor="end">2</text>
|
| 90 |
+
<line class="grid-cell" x1="46.0" y1="26" x2="46.0" y2="200"></line>
|
| 91 |
+
<text class="ts" x="46.0" y="214" text-anchor="middle">0k</text>
|
| 92 |
+
<line class="grid-cell" x1="200.7" y1="26" x2="200.7" y2="200"></line>
|
| 93 |
+
<text class="ts" x="200.7" y="214" text-anchor="middle">1k</text>
|
| 94 |
+
<line class="grid-cell" x1="355.3" y1="26" x2="355.3" y2="200"></line>
|
| 95 |
+
<text class="ts" x="355.3" y="214" text-anchor="middle">2k</text>
|
| 96 |
+
<line class="grid-cell" x1="510.0" y1="26" x2="510.0" y2="200"></line>
|
| 97 |
+
<text class="ts" x="510.0" y="214" text-anchor="middle">3k</text>
|
| 98 |
+
<text class="ts" x="510" y="224" text-anchor="end">step</text>
|
| 99 |
+
<path class="vw v-full" d="M46.0 26.0 L49.1 26.7 L52.2 27.7 L55.3 29.9 L58.4 32.4 L61.5 35.6 L64.6 39.2 L67.7 42.6 L70.7 46.5 L73.8 51.2 L76.9 56.4 L80.0 62.9 L83.1 70.2 L86.2 77.0 L89.3 83.9 L92.4 90.3 L95.5 96.4 L98.6 102.3 L101.7 107.9 L104.8 113.9 L107.9 118.0 L111.0 121.5 L114.1 125.7 L117.1 129.8 L120.2 133.8 L123.3 136.2 L126.4 139.4 L129.5 141.8 L132.6 144.5 L135.7 146.7 L138.8 149.2 L141.9 152.2 L145.0 152.3 L148.1 154.4 L151.2 156.8 L154.3 159.6 L157.4 159.8 L160.5 160.6 L163.5 162.0 L166.6 163.5 L169.7 164.5 L172.8 164.5 L175.9 165.1 L179.0 165.2 L182.1 166.1 L185.2 166.5 L188.3 167.2 L191.4 166.8 L194.5 168.7 L197.6 169.3 L200.7 170.8 L203.8 172.3 L206.9 172.5 L209.9 171.8 L213.0 173.8 L216.1 175.3 L219.2 175.5 L222.3 176.0 L225.4 175.6 L228.5 175.9 L231.6 176.9 L234.7 176.7 L237.8 176.8 L240.9 178.0 L244.0 178.0 L247.1 178.6 L250.2 179.2 L253.3 177.2 L256.3 175.7 L259.4 175.8 L262.5 175.9 L265.6 176.0 L268.7 176.5 L271.8 176.0 L274.9 175.8 L278.0 176.9 L281.1 177.5 L284.2 177.8 L287.3 177.3 L290.4 178.2 L293.5 177.7 L296.6 177.4 L299.7 177.8 L302.7 178.3 L305.8 179.6 L308.9 180.2 L312.0 180.6 L315.1 180.1 L318.2 180.8 L321.3 181.5 L324.4 181.8 L327.5 181.8 L330.6 181.7 L333.7 183.1 L336.8 184.2 L339.9 183.1 L343.0 181.1 L346.1 181.6 L349.1 180.4 L352.2 181.5 L355.3 180.7 L358.4 181.1 L361.5 179.9 L364.6 179.7 L367.7 179.6 L370.8 181.7 L373.9 181.6 L377.0 182.8 L380.1 182.8 L383.2 181.4 L386.3 182.1 L389.4 182.7 L392.5 183.9 L395.5 184.0 L398.6 182.6 L401.7 180.5 L404.8 181.2 L407.9 182.2 L411.0 182.6 L414.1 183.2 L417.2 183.2 L420.3 181.7 L423.4 182.0 L426.5 182.6 L429.6 182.9 L432.7 183.7 L435.8 184.2 L438.9 184.5 L441.9 183.4 L445.0 184.8 L448.1 185.4 L451.2 185.7 L454.3 186.0 L457.4 186.3 L460.5 187.1 L463.6 185.6 L466.7 185.4 L469.8 186.6 L472.9 186.3 L476.0 186.3 L479.1 185.9 L482.2 185.4 L485.3 185.8 L488.3 185.8 L491.4 186.8 L494.5 186.5 L497.6 186.5 L500.7 184.5 L503.8 186.0 L506.9 188.3 L508.5 187.2"></path>
|
| 100 |
+
<circle class="vdot v-full" cx="508.5" cy="187.2" r="3.5"></circle>
|
| 101 |
+
<path class="vw v-notrack" d="M46.0 28.4 L49.1 29.7 L52.2 30.3 L55.3 32.5 L58.4 35.4 L61.5 38.5 L64.6 43.1 L67.7 47.8 L70.7 53.1 L73.8 59.4 L76.9 66.2 L80.0 73.0 L83.1 80.1 L86.2 87.1 L89.3 94.4 L92.4 101.1 L95.5 107.6 L98.6 113.1 L101.7 117.8 L104.8 122.6 L107.9 127.3 L111.0 131.2 L114.1 135.5 L117.1 139.6 L120.2 143.0 L123.3 146.5 L126.4 150.4 L129.5 153.2 L132.6 155.2 L135.7 158.0 L138.8 158.5 L141.9 159.2 L145.0 160.8 L148.1 163.4 L151.2 164.5 L154.3 166.7 L157.4 168.3 L160.5 169.4 L163.5 169.8 L166.6 169.6 L169.7 170.2 L172.8 173.7 L175.9 174.5 L179.0 175.2 L182.1 175.1 L185.2 175.9 L188.3 176.4 L191.4 177.2 L194.5 177.1 L197.6 176.4 L200.7 177.3 L203.8 178.1 L206.9 178.1 L209.9 178.1 L213.0 178.2 L216.1 180.4 L219.2 181.8 L222.3 181.4 L225.4 183.0 L228.5 182.8 L231.6 182.4 L234.7 182.6 L237.8 183.6 L240.9 184.7 L244.0 186.5 L247.1 187.0 L250.2 188.7 L253.3 190.4 L256.3 190.6 L259.4 191.0 L262.5 190.9 L265.6 190.8 L268.7 190.5 L271.8 192.1 L274.9 191.2 L278.0 190.8 L281.1 191.9 L284.2 191.9 L287.3 192.5 L290.4 190.3 L293.5 190.5 L296.6 190.5 L299.7 190.8 L302.7 191.3 L305.8 193.0 L308.9 192.8 L312.0 193.9 L315.1 192.7 L318.2 194.6 L321.3 194.2 L324.4 192.5 L327.5 192.5 L330.6 192.8 L333.7 193.5 L336.8 194.1 L339.9 194.2 L343.0 194.7 L346.1 194.7 L349.1 193.1 L352.2 193.3 L355.3 193.9 L358.4 193.6 L361.5 194.6 L364.6 193.7 L367.7 196.1 L370.8 195.1 L373.9 195.4 L377.0 196.2 L380.1 196.5 L383.2 198.2 L386.3 198.5 L389.4 199.1 L392.5 199.1 L395.5 199.4 L398.6 197.6 L401.7 197.8 L404.8 197.6 L407.9 197.2 L411.0 197.9 L414.1 198.4 L417.2 197.6 L420.3 199.4 L423.4 198.6 L426.5 198.6 L429.6 198.5 L432.7 197.4 L435.8 196.6 L438.9 197.4 L441.9 196.3 L445.0 196.4 L448.1 195.3 L451.2 195.0 L454.3 194.8 L457.4 195.0 L460.5 195.3 L463.6 196.2 L466.7 194.8 L469.8 194.1 L472.9 192.5 L476.0 194.7 L479.1 194.5 L482.2 194.2 L485.3 196.0 L488.3 197.3 L491.4 195.2 L494.5 197.2 L497.6 200.0 L500.7 199.8 L503.8 199.8 L506.9 198.7 L508.5 198.1"></path>
|
| 102 |
+
<circle class="vdot v-notrack" cx="508.5" cy="198.1" r="3.5"></circle>
|
| 103 |
+
<path class="vw v-noforce" d="M46.0 26.0 L47.5 26.3 L49.1 26.9 L50.6 27.3 L52.2 27.9 L53.7 28.7 L55.3 29.9 L56.8 31.1 L58.4 32.4 L59.9 33.5 L61.5 35.1 L63.0 36.7 L64.6 38.6 L66.1 40.5 L67.7 42.5 L69.2 44.6 L70.7 46.4 L72.3 48.7 L73.8 51.0 L75.4 53.4 L76.9 56.5 L78.5 59.5 L80.0 62.9 L81.6 66.4 L83.1 70.1 L84.7 73.7 L86.2 77.1 L87.8 80.4 L89.3 83.5 L90.9 86.9 L92.4 90.3 L93.9 93.3 L95.5 96.4 L97.0 99.7 L98.6 102.5 L100.1 105.2 L101.7 108.4 L103.2 111.7 L104.8 114.6 L106.3 116.8 L107.9 118.7 L109.4 121.1 L111.0 123.2 L112.5 125.2 L114.1 127.2 L115.6 129.2 L117.1 131.5 L118.7 133.2 L120.2 134.9 L121.8 136.4 L123.3 137.3 L124.9 139.6 L126.4 141.5 L128.0 142.1 L129.5 144.0 L131.1 144.8 L132.6 147.0 L134.2 148.2 L135.7 148.9 L137.3 149.9 L138.8 151.6 L140.3 152.6 L141.9 153.9 L143.4 154.4 L145.0 155.6 L146.5 156.4 L148.1 157.6 L149.6 157.8 L151.2 159.1 L152.7 159.4 L154.3 159.3 L155.8 160.5 L157.4 161.1 L158.9 161.4 L160.5 162.6 L162.0 163.7 L163.5 163.8 L165.1 164.4 L166.6 165.6 L168.2 166.8 L169.7 167.5 L171.3 167.6 L172.8 167.6 L174.4 167.3 L175.9 167.7 L177.5 166.9 L179.0 167.3 L180.6 167.3 L182.1 167.2 L183.7 167.2 L185.2 167.2 L186.7 166.9"></path>
|
| 104 |
+
<circle class="vdot v-noforce" cx="186.7" cy="166.9" r="3.5"></circle>
|
| 105 |
+
</svg></div>
|
| 106 |
+
<div><svg viewBox="0 0 520 230" role="img" aria-label="track loss (weighted sum)">
|
| 107 |
+
<text class="th" x="46" y="15">track loss (weighted sum)</text>
|
| 108 |
+
<line class="grid-cell" x1="46" y1="185.5" x2="510" y2="185.5"></line>
|
| 109 |
+
<text class="ts" x="40" y="188.5" text-anchor="end">0.2</text>
|
| 110 |
+
<line class="grid-cell" x1="46" y1="145.2" x2="510" y2="145.2"></line>
|
| 111 |
+
<text class="ts" x="40" y="148.2" text-anchor="end">0.5</text>
|
| 112 |
+
<line class="grid-cell" x1="46" y1="114.6" x2="510" y2="114.6"></line>
|
| 113 |
+
<text class="ts" x="40" y="117.6" text-anchor="end">1</text>
|
| 114 |
+
<line class="grid-cell" x1="46" y1="84.1" x2="510" y2="84.1"></line>
|
| 115 |
+
<text class="ts" x="40" y="87.1" text-anchor="end">2</text>
|
| 116 |
+
<line class="grid-cell" x1="46" y1="43.8" x2="510" y2="43.8"></line>
|
| 117 |
+
<text class="ts" x="40" y="46.8" text-anchor="end">5</text>
|
| 118 |
+
<line class="grid-cell" x1="46.0" y1="26" x2="46.0" y2="200"></line>
|
| 119 |
+
<text class="ts" x="46.0" y="214" text-anchor="middle">0k</text>
|
| 120 |
+
<line class="grid-cell" x1="200.7" y1="26" x2="200.7" y2="200"></line>
|
| 121 |
+
<text class="ts" x="200.7" y="214" text-anchor="middle">1k</text>
|
| 122 |
+
<line class="grid-cell" x1="355.3" y1="26" x2="355.3" y2="200"></line>
|
| 123 |
+
<text class="ts" x="355.3" y="214" text-anchor="middle">2k</text>
|
| 124 |
+
<line class="grid-cell" x1="510.0" y1="26" x2="510.0" y2="200"></line>
|
| 125 |
+
<text class="ts" x="510.0" y="214" text-anchor="middle">3k</text>
|
| 126 |
+
<text class="ts" x="510" y="224" text-anchor="end">step</text>
|
| 127 |
+
<path class="vw v-full" d="M46.0 38.6 L49.1 34.8 L52.2 32.1 L55.3 30.1 L58.4 28.2 L61.5 26.9 L64.6 26.0 L67.7 26.6 L70.7 27.8 L73.8 29.5 L76.9 31.8 L80.0 33.6 L83.1 35.1 L86.2 37.4 L89.3 39.6 L92.4 42.0 L95.5 44.7 L98.6 47.2 L101.7 49.7 L104.8 52.1 L107.9 55.1 L111.0 58.3 L114.1 61.1 L117.1 64.0 L120.2 66.8 L123.3 69.8 L126.4 72.7 L129.5 75.6 L132.6 78.6 L135.7 81.3 L138.8 83.9 L141.9 86.5 L145.0 89.3 L148.1 91.9 L151.2 94.4 L154.3 96.9 L157.4 99.3 L160.5 101.9 L163.5 104.4 L166.6 107.0 L169.7 109.4 L172.8 111.6 L175.9 113.7 L179.0 115.9 L182.1 118.3 L185.2 120.7 L188.3 122.8 L191.4 125.0 L194.5 127.3 L197.6 129.7 L200.7 131.8 L203.8 134.3 L206.9 136.5 L209.9 138.2 L213.0 140.5 L216.1 142.4 L219.2 144.1 L222.3 146.1 L225.4 147.6 L228.5 149.2 L231.6 150.9 L234.7 152.5 L237.8 154.1 L240.9 156.0 L244.0 157.5 L247.1 158.8 L250.2 160.1 L253.3 160.4 L256.3 160.9 L259.4 162.1 L262.5 163.5 L265.6 164.4 L268.7 165.7 L271.8 166.0 L274.9 166.8 L278.0 168.6 L281.1 169.7 L284.2 170.9 L287.3 171.4 L290.4 172.6 L293.5 173.4 L296.6 173.3 L299.7 174.8 L302.7 176.2 L305.8 177.8 L308.9 178.5 L312.0 179.2 L315.1 179.8 L318.2 181.1 L321.3 182.0 L324.4 183.0 L327.5 183.6 L330.6 184.1 L333.7 185.3 L336.8 186.6 L339.9 186.1 L343.0 184.9 L346.1 186.4 L349.1 186.4 L352.2 187.6 L355.3 188.0 L358.4 188.8 L361.5 189.0 L364.6 189.7 L367.7 190.0 L370.8 191.2 L373.9 190.9 L377.0 192.6 L380.1 192.8 L383.2 191.3 L386.3 192.8 L389.4 194.1 L392.5 195.4 L395.5 195.3 L398.6 194.1 L401.7 193.1 L404.8 194.3 L407.9 195.3 L411.0 195.4 L414.1 196.2 L417.2 195.0 L420.3 193.4 L423.4 193.8 L426.5 195.1 L429.6 195.1 L432.7 196.7 L435.8 196.6 L438.9 197.1 L441.9 195.2 L445.0 196.6 L448.1 198.0 L451.2 197.6 L454.3 197.1 L457.4 197.3 L460.5 198.9 L463.6 197.9 L466.7 197.5 L469.8 199.4 L472.9 199.1 L476.0 199.1 L479.1 199.2 L482.2 198.7 L485.3 198.1 L488.3 198.5 L491.4 199.3 L494.5 199.3 L497.6 199.2 L500.7 196.9 L503.8 198.4 L506.9 200.0 L508.5 198.2"></path>
|
| 128 |
+
<circle class="vdot v-full" cx="508.5" cy="198.2" r="3.5"></circle>
|
| 129 |
+
<path class="vw v-noforce" d="M46.0 38.6 L47.5 36.8 L49.1 34.3 L50.6 32.6 L52.2 31.6 L53.7 30.7 L55.3 29.7 L56.8 28.9 L58.4 28.5 L59.9 28.1 L61.5 27.7 L63.0 27.4 L64.6 27.1 L66.1 26.9 L67.7 27.1 L69.2 27.0 L70.7 27.9 L72.3 28.7 L73.8 29.7 L75.4 30.8 L76.9 31.3 L78.5 32.5 L80.0 33.5 L81.6 34.5 L83.1 35.5 L84.7 36.7 L86.2 37.8 L87.8 38.9 L89.3 40.4 L90.9 41.5 L92.4 42.6 L93.9 44.0 L95.5 45.3 L97.0 46.5 L98.6 47.7 L100.1 49.2 L101.7 50.2 L103.2 51.2 L104.8 52.4 L106.3 53.9 L107.9 55.4 L109.4 56.9 L111.0 58.3 L112.5 59.7 L114.1 61.2 L115.6 62.7 L117.1 64.1 L118.7 65.6 L120.2 67.1 L121.8 68.5 L123.3 70.0 L124.9 71.4 L126.4 72.8 L128.0 74.3 L129.5 75.7 L131.1 77.1 L132.6 78.5 L134.2 79.8 L135.7 81.1 L137.3 82.5 L138.8 83.8 L140.3 85.0 L141.9 86.3 L143.4 87.7 L145.0 88.9 L146.5 90.4 L148.1 91.8 L149.6 93.1 L151.2 94.4 L152.7 95.7 L154.3 96.9 L155.8 98.1 L157.4 99.4 L158.9 100.7 L160.5 101.9 L162.0 103.2 L163.5 104.5 L165.1 105.8 L166.6 107.1 L168.2 108.3 L169.7 109.7 L171.3 110.8 L172.8 111.9 L174.4 113.1 L175.9 114.2 L177.5 115.2 L179.0 116.6 L180.6 117.7 L182.1 118.9 L183.7 120.0 L185.2 121.1 L186.7 122.1"></path>
|
| 130 |
+
<circle class="vdot v-noforce" cx="186.7" cy="122.1" r="3.5"></circle>
|
| 131 |
+
</svg></div>
|
| 132 |
+
<div><svg viewBox="0 0 520 230" role="img" aria-label="force flow MSE">
|
| 133 |
+
<text class="th" x="46" y="15">force flow MSE</text>
|
| 134 |
+
<line class="grid-cell" x1="46" y1="121.3" x2="510" y2="121.3"></line>
|
| 135 |
+
<text class="ts" x="40" y="124.3" text-anchor="end">1</text>
|
| 136 |
+
<line class="grid-cell" x1="46.0" y1="26" x2="46.0" y2="200"></line>
|
| 137 |
+
<text class="ts" x="46.0" y="214" text-anchor="middle">0k</text>
|
| 138 |
+
<line class="grid-cell" x1="200.7" y1="26" x2="200.7" y2="200"></line>
|
| 139 |
+
<text class="ts" x="200.7" y="214" text-anchor="middle">1k</text>
|
| 140 |
+
<line class="grid-cell" x1="355.3" y1="26" x2="355.3" y2="200"></line>
|
| 141 |
+
<text class="ts" x="355.3" y="214" text-anchor="middle">2k</text>
|
| 142 |
+
<line class="grid-cell" x1="510.0" y1="26" x2="510.0" y2="200"></line>
|
| 143 |
+
<text class="ts" x="510.0" y="214" text-anchor="middle">3k</text>
|
| 144 |
+
<text class="ts" x="510" y="224" text-anchor="end">step</text>
|
| 145 |
+
<path class="vw v-full" d="M46.0 26.0 L49.1 27.5 L52.2 30.1 L55.3 35.3 L58.4 40.6 L61.5 45.6 L64.6 49.5 L67.7 54.3 L70.7 56.4 L73.8 59.1 L76.9 62.4 L80.0 65.3 L83.1 68.7 L86.2 71.7 L89.3 75.3 L92.4 78.3 L95.5 81.6 L98.6 85.1 L101.7 88.0 L104.8 90.1 L107.9 92.1 L111.0 94.3 L114.1 96.1 L117.1 97.7 L120.2 99.4 L123.3 100.6 L126.4 101.7 L129.5 102.8 L132.6 104.1 L135.7 105.2 L138.8 106.3 L141.9 107.0 L145.0 107.3 L148.1 107.9 L151.2 108.6 L154.3 109.3 L157.4 109.9 L160.5 110.7 L163.5 111.0 L166.6 111.5 L169.7 111.9 L172.8 112.2 L175.9 112.6 L179.0 113.1 L182.1 113.3 L185.2 113.7 L188.3 114.0 L191.4 114.4 L194.5 114.8 L197.6 115.2 L200.7 115.3 L203.8 115.8 L206.9 116.2 L209.9 116.4 L213.0 116.8 L216.1 117.4 L219.2 117.7 L222.3 118.3 L225.4 118.8 L228.5 119.2 L231.6 119.7 L234.7 120.1 L237.8 120.5 L240.9 121.0 L244.0 122.0 L247.1 122.8 L250.2 123.7 L253.3 124.4 L256.3 125.0 L259.4 125.5 L262.5 126.3 L265.6 127.1 L268.7 127.9 L271.8 129.2 L274.9 130.2 L278.0 131.3 L281.1 132.4 L284.2 133.2 L287.3 134.4 L290.4 135.6 L293.5 136.4 L296.6 138.3 L299.7 139.9 L302.7 140.9 L305.8 142.6 L308.9 144.1 L312.0 146.0 L315.1 148.0 L318.2 149.5 L321.3 151.1 L324.4 152.5 L327.5 154.0 L330.6 155.4 L333.7 157.0 L336.8 158.9 L339.9 160.2 L343.0 161.9 L346.1 163.4 L349.1 164.9 L352.2 166.2 L355.3 167.4 L358.4 168.9 L361.5 170.1 L364.6 172.0 L367.7 173.8 L370.8 174.1 L373.9 175.5 L377.0 176.8 L380.1 178.5 L383.2 180.1 L386.3 181.4 L389.4 182.5 L392.5 183.9 L395.5 185.0 L398.6 185.3 L401.7 185.6 L404.8 186.6 L407.9 187.8 L411.0 189.4 L414.1 189.8 L417.2 190.6 L420.3 190.7 L423.4 191.0 L426.5 192.1 L429.6 193.1 L432.7 194.0 L435.8 195.4 L438.9 195.9 L441.9 196.9 L445.0 196.9 L448.1 197.5 L451.2 197.9 L454.3 197.3 L457.4 198.0 L460.5 198.5 L463.6 198.3 L466.7 198.4 L469.8 198.9 L472.9 199.1 L476.0 199.4 L479.1 199.7 L482.2 199.4 L485.3 199.1 L488.3 199.3 L491.4 199.5 L494.5 199.9 L497.6 200.0 L500.7 198.8 L503.8 199.1 L506.9 198.9 L508.5 199.2"></path>
|
| 146 |
+
<circle class="vdot v-full" cx="508.5" cy="199.2" r="3.5"></circle>
|
| 147 |
+
<path class="vw v-notrack" d="M46.0 29.6 L49.1 29.0 L52.2 31.0 L55.3 36.5 L58.4 41.7 L61.5 47.0 L64.6 51.2 L67.7 56.5 L70.7 59.3 L73.8 63.0 L76.9 66.9 L80.0 71.1 L83.1 75.5 L86.2 79.0 L89.3 82.7 L92.4 85.3 L95.5 87.8 L98.6 90.8 L101.7 93.0 L104.8 94.7 L107.9 96.2 L111.0 97.7 L114.1 99.0 L117.1 100.6 L120.2 102.0 L123.3 102.6 L126.4 103.7 L129.5 104.6 L132.6 105.5 L135.7 106.4 L138.8 107.5 L141.9 108.0 L145.0 108.4 L148.1 108.9 L151.2 109.2 L154.3 109.8 L157.4 110.2 L160.5 110.7 L163.5 110.6 L166.6 111.2 L169.7 111.2 L172.8 111.4 L175.9 111.5 L179.0 111.9 L182.1 112.1 L185.2 112.5 L188.3 112.8 L191.4 113.5 L194.5 113.6 L197.6 113.4 L200.7 113.8 L203.8 114.3 L206.9 114.6 L209.9 114.7 L213.0 115.2 L216.1 116.1 L219.2 116.3 L222.3 116.5 L225.4 116.7 L228.5 117.0 L231.6 117.6 L234.7 117.3 L237.8 117.7 L240.9 118.0 L244.0 118.5 L247.1 118.7 L250.2 119.2 L253.3 119.7 L256.3 119.9 L259.4 120.3 L262.5 120.8 L265.6 121.5 L268.7 122.0 L271.8 122.6 L274.9 122.6 L278.0 123.2 L281.1 124.1 L284.2 124.4 L287.3 124.8 L290.4 125.3 L293.5 125.6 L296.6 126.3 L299.7 127.0 L302.7 127.7 L305.8 128.3 L308.9 128.9 L312.0 129.3 L315.1 129.9 L318.2 130.8 L321.3 131.7 L324.4 132.5 L327.5 133.4 L330.6 134.1 L333.7 135.1 L336.8 136.2 L339.9 137.1 L343.0 138.0 L346.1 138.6 L349.1 139.9 L352.2 140.4 L355.3 141.7 L358.4 142.7 L361.5 143.0 L364.6 143.8 L367.7 144.9 L370.8 145.6 L373.9 146.6 L377.0 147.9 L380.1 149.3 L383.2 149.9 L386.3 151.2 L389.4 152.1 L392.5 152.6 L395.5 153.1 L398.6 153.6 L401.7 154.3 L404.8 155.5 L407.9 156.2 L411.0 156.8 L414.1 157.5 L417.2 158.1 L420.3 158.7 L423.4 159.4 L426.5 159.7 L429.6 161.0 L432.7 161.5 L435.8 161.5 L438.9 161.7 L441.9 162.3 L445.0 162.5 L448.1 163.3 L451.2 164.2 L454.3 164.4 L457.4 164.8 L460.5 164.9 L463.6 165.2 L466.7 166.3 L469.8 167.1 L472.9 167.1 L476.0 167.7 L479.1 167.7 L482.2 168.1 L485.3 167.6 L488.3 167.1 L491.4 167.0 L494.5 166.9 L497.6 167.1 L500.7 167.3 L503.8 167.3 L506.9 167.5 L508.5 167.7"></path>
|
| 148 |
+
<circle class="vdot v-notrack" cx="508.5" cy="167.7" r="3.5"></circle>
|
| 149 |
+
</svg></div>
|
| 150 |
+
</div>
|
| 151 |
+
<figcaption><b>Figure A1 — Same-step training loss convergence.</b>
|
| 152 |
+
Identical data, LoRA budget, seed, and 3,000 single-GPU steps for all four
|
| 153 |
+
variants; curves are EMA-smoothed (half-life 80 steps), log-scaled y.
|
| 154 |
+
Track loss exists only where track tokens exist; force loss only where the
|
| 155 |
+
force stage exists.</figcaption>
|
| 156 |
+
</figure>
|
| 157 |
+
|
| 158 |
+
<div class="tbl-wrap">
|
| 159 |
+
<table>
|
| 160 |
+
<thead><tr><th>Variant (mean loss, steps 2,800–3,000)</th><th>action</th>
|
| 161 |
+
<th>dynamics</th><th>track</th><th>force</th></tr></thead>
|
| 162 |
+
<tbody><tr><td><span class="chip"><span class="vs vs-full"></span> A · full (track+force)</span></td><td class="shape">0.2819</td><td class="shape">0.3325</td><td class="shape">0.1501</td><td class="shape">0.6187</td></tr>
|
| 163 |
+
<tr><td><span class="chip"><span class="vs vs-notrack"></span> B · no track</span></td><td class="shape">0.2749</td><td class="shape">0.2837</td><td class="shape">—</td><td class="shape">0.7535</td></tr>
|
| 164 |
+
<tr><td><span class="chip"><span class="vs vs-noforce"></span> C · no force stage</span></td><td class="shape">—</td><td class="shape">—</td><td class="shape">—</td><td class="shape">—</td></tr></tbody>
|
| 165 |
+
</table>
|
| 166 |
+
</div>
|
| 167 |
+
<h3>Controlled evaluation on frozen checkpoints</h3>
|
| 168 |
+
<div class="prose"><p>All numbers below come from the same fixed
|
| 169 |
+
anchor sets, noise seeds, and prompts for every variant
|
| 170 |
+
(<code>scripts/eval/trex_ablation_eval.py</code>). Open-loop: each variant
|
| 171 |
+
runs its own full sampling loop from pure noise on 16 anchors and is scored
|
| 172 |
+
against the ground-truth normalized delta-base chunk.</p></div>
|
| 173 |
+
<figure><svg viewBox="0 0 560 138" role="img" aria-label="open-loop action MSE ↓ (16 anchors, normalized 62-D)">
|
| 174 |
+
<text class="th" x="0" y="14">open-loop action MSE ↓ (16 anchors, normalized 62-D)</text>
|
| 175 |
+
<text class="t" x="232" y="39" text-anchor="end">A · cascade (+force stage)</text>
|
| 176 |
+
<rect class="v-full" x="240" y="26" width="133.1" height="16" rx="3"></rect>
|
| 177 |
+
<text class="ts" x="379.1" y="39">0.205</text>
|
| 178 |
+
<text class="t" x="232" y="67" text-anchor="end">A · coarse only</text>
|
| 179 |
+
<rect class="v-full vfaded" x="240" y="54" width="250.0" height="16" rx="3"></rect>
|
| 180 |
+
<text class="ts" x="496.0" y="67">0.386</text>
|
| 181 |
+
<text class="t" x="232" y="95" text-anchor="end">B · cascade (+force stage)</text>
|
| 182 |
+
<rect class="v-notrack" x="240" y="82" width="149.0" height="16" rx="3"></rect>
|
| 183 |
+
<text class="ts" x="395.0" y="95">0.230</text>
|
| 184 |
+
<text class="t" x="232" y="123" text-anchor="end">B · coarse only</text>
|
| 185 |
+
<rect class="v-notrack vfaded" x="240" y="110" width="248.4" height="16" rx="3"></rect>
|
| 186 |
+
<text class="ts" x="494.4" y="123">0.383</text>
|
| 187 |
+
</svg><figcaption><b>Figure A2 — Open-loop reconstruction.</b> Faded bars: the coarse action read out at τ=0 without tactile refinement (for C this is its only mode). Solid bars: the full cascade.</figcaption></figure>
|
| 188 |
+
|
| 189 |
+
<div class="tbl-wrap">
|
| 190 |
+
<table>
|
| 191 |
+
<thead><tr><th>flow MSE @ fixed τ</th><th>τ=0.8</th><th>τ=0.6</th><th>τ=0.4</th><th>τ=0.2</th><th>τ=0.05</th></tr></thead>
|
| 192 |
+
<tbody><tr><td><span class="chip"><span class="vs vs-full"></span> A · action</span></td><td class="shape">0.139</td><td class="shape">0.204</td><td class="shape">0.399</td><td class="shape">0.752</td><td class="shape">1.076</td></tr><tr><td><span class="chip"><span class="vs vs-notrack"></span> B · action</span></td><td class="shape">0.124</td><td class="shape">0.191</td><td class="shape">0.388</td><td class="shape">0.745</td><td class="shape">1.078</td></tr><tr><td><span class="chip"><span class="vs vs-full"></span> A · dynamics</span></td><td class="shape">0.215</td><td class="shape">0.280</td><td class="shape">0.414</td><td class="shape">0.724</td><td class="shape">1.131</td></tr><tr><td><span class="chip"><span class="vs vs-notrack"></span> B · dynamics</span></td><td class="shape">0.178</td><td class="shape">0.229</td><td class="shape">0.341</td><td class="shape">0.628</td><td class="shape">1.064</td></tr></tbody>
|
| 193 |
+
</table>
|
| 194 |
+
</div>
|
| 195 |
+
<figure><svg viewBox="0 0 640 146" role="img" aria-label="Stage-1: where action queries attend (mass share)">
|
| 196 |
+
<text class="th" x="0" y="14">Stage-1: where action queries attend (mass share)</text>
|
| 197 |
+
<text class="t" x="102" y="39" text-anchor="end">A · layer 0</text>
|
| 198 |
+
<rect class="sg-cond" x="110.0" y="26" width="12.6" height="18" rx="3"></rect>
|
| 199 |
+
<rect class="sg-obs" x="124.6" y="26" width="53.4" height="18" rx="3"></rect>
|
| 200 |
+
<text class="ts" x="152.3" y="39" text-anchor="middle">11%</text>
|
| 201 |
+
<rect class="sg-act" x="180.0" y="26" width="29.9" height="18" rx="3"></rect>
|
| 202 |
+
<rect class="sg-st" x="211.9" y="26" width="0.5" height="18" rx="3"></rect>
|
| 203 |
+
<rect class="sg-trkp" x="212.7" y="26" width="233.6" height="18" rx="3"></rect>
|
| 204 |
+
<text class="ts" x="330.5" y="39" text-anchor="middle">45%</text>
|
| 205 |
+
<rect class="sg-trkf" x="448.3" y="26" width="177.7" height="18" rx="3"></rect>
|
| 206 |
+
<text class="ts" x="538.2" y="39" text-anchor="middle">35%</text>
|
| 207 |
+
<text class="t" x="102" y="67" text-anchor="end">A · layer 29</text>
|
| 208 |
+
<rect class="sg-cond" x="110.0" y="54" width="25.6" height="18" rx="3"></rect>
|
| 209 |
+
<rect class="sg-obs" x="137.6" y="54" width="49.5" height="18" rx="3"></rect>
|
| 210 |
+
<text class="ts" x="163.4" y="67" text-anchor="middle">10%</text>
|
| 211 |
+
<rect class="sg-act" x="189.1" y="54" width="95.2" height="18" rx="3"></rect>
|
| 212 |
+
<text class="ts" x="237.7" y="67" text-anchor="middle">19%</text>
|
| 213 |
+
<rect class="sg-st" x="286.3" y="54" width="0.5" height="18" rx="3"></rect>
|
| 214 |
+
<rect class="sg-trkp" x="287.6" y="54" width="296.0" height="18" rx="3"></rect>
|
| 215 |
+
<text class="ts" x="436.6" y="67" text-anchor="middle">58%</text>
|
| 216 |
+
<rect class="sg-trkf" x="585.6" y="54" width="40.4" height="18" rx="3"></rect>
|
| 217 |
+
<text class="ts" x="606.8" y="67" text-anchor="middle">8%</text>
|
| 218 |
+
<text class="t" x="102" y="95" text-anchor="end">B · layer 0</text>
|
| 219 |
+
<rect class="sg-cond" x="110.0" y="82" width="106.6" height="18" rx="3"></rect>
|
| 220 |
+
<text class="ts" x="164.3" y="95" text-anchor="middle">21%</text>
|
| 221 |
+
<rect class="sg-obs" x="218.6" y="82" width="260.7" height="18" rx="3"></rect>
|
| 222 |
+
<text class="ts" x="349.9" y="95" text-anchor="middle">51%</text>
|
| 223 |
+
<rect class="sg-act" x="481.3" y="82" width="138.5" height="18" rx="3"></rect>
|
| 224 |
+
<text class="ts" x="551.5" y="95" text-anchor="middle">27%</text>
|
| 225 |
+
<rect class="sg-st" x="621.8" y="82" width="4.2" height="18" rx="3"></rect>
|
| 226 |
+
<text class="t" x="102" y="123" text-anchor="end">B · layer 29</text>
|
| 227 |
+
<rect class="sg-cond" x="110.0" y="110" width="51.4" height="18" rx="3"></rect>
|
| 228 |
+
<text class="ts" x="136.7" y="123" text-anchor="middle">10%</text>
|
| 229 |
+
<rect class="sg-obs" x="163.4" y="110" width="124.6" height="18" rx="3"></rect>
|
| 230 |
+
<text class="ts" x="226.7" y="123" text-anchor="middle">24%</text>
|
| 231 |
+
<rect class="sg-act" x="290.0" y="110" width="331.7" height="18" rx="3"></rect>
|
| 232 |
+
<text class="ts" x="456.9" y="123" text-anchor="middle">64%</text>
|
| 233 |
+
<rect class="sg-st" x="623.7" y="110" width="2.3" height="18" rx="3"></rect>
|
| 234 |
+
</svg><figcaption><b>Figure A3 — Stage-1 attention routing.</b> Share of self-attention mass from action queries onto each token group at τ=0.4 (mean over heads/blocks).</figcaption></figure>
|
| 235 |
+
<figure><svg viewBox="0 0 640 90" role="img" aria-label="Stage-2: where action queries attend (mass share)">
|
| 236 |
+
<text class="th" x="0" y="14">Stage-2: where action queries attend (mass share)</text>
|
| 237 |
+
<text class="t" x="102" y="39" text-anchor="end">A · L0–L5 mean</text>
|
| 238 |
+
<rect class="sg-act" x="110.0" y="26" width="12.3" height="18" rx="3"></rect>
|
| 239 |
+
<rect class="sg-f6" x="124.3" y="26" width="6.9" height="18" rx="3"></rect>
|
| 240 |
+
<rect class="sg-vq" x="133.2" y="26" width="8.4" height="18" rx="3"></rect>
|
| 241 |
+
<rect class="sg-mem" x="143.6" y="26" width="482.4" height="18" rx="3"></rect>
|
| 242 |
+
<text class="ts" x="385.8" y="39" text-anchor="middle">94%</text>
|
| 243 |
+
<text class="t" x="102" y="67" text-anchor="end">B · L0–L5 mean</text>
|
| 244 |
+
<rect class="sg-act" x="110.0" y="54" width="105.4" height="18" rx="3"></rect>
|
| 245 |
+
<text class="ts" x="163.7" y="67" text-anchor="middle">21%</text>
|
| 246 |
+
<rect class="sg-f6" x="217.4" y="54" width="49.2" height="18" rx="3"></rect>
|
| 247 |
+
<text class="ts" x="243.0" y="67" text-anchor="middle">10%</text>
|
| 248 |
+
<rect class="sg-vq" x="268.6" y="54" width="51.1" height="18" rx="3"></rect>
|
| 249 |
+
<text class="ts" x="295.1" y="67" text-anchor="middle">10%</text>
|
| 250 |
+
<rect class="sg-mem" x="321.7" y="54" width="304.3" height="18" rx="3"></rect>
|
| 251 |
+
<text class="ts" x="474.8" y="67" text-anchor="middle">59%</text>
|
| 252 |
+
</svg><figcaption><b>Figure A4 — Stage-2 attention routing.</b> Action-query mass over F6 / VQ-history / deform / coarse-memory tokens during real cascaded refinement.</figcaption></figure>
|
| 253 |
+
|
| 254 |
+
<div class="tbl-wrap">
|
| 255 |
+
<table>
|
| 256 |
+
<thead><tr><th>Tactile sensitivity (normalized units)</th>
|
| 257 |
+
<th>mean |Δa| tactile vs masked</th><th>max |Δa|</th>
|
| 258 |
+
<th>mean |refinement|</th></tr></thead>
|
| 259 |
+
<tbody><tr><td><span class="chip"><span class="vs vs-full"></span> A · full (track+force)</span></td><td class="shape">0.0141</td><td class="shape">0.0664</td><td class="shape">0.2452</td></tr><tr><td><span class="chip"><span class="vs vs-notrack"></span> B · no track</span></td><td class="shape">0.0256</td><td class="shape">0.1309</td><td class="shape">0.2472</td></tr></tbody>
|
| 260 |
+
</table>
|
| 261 |
+
</div>
|
| 262 |
+
|
| 263 |
+
</section>
|
ablation_runs/eval_part1.json
ADDED
|
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"full": {
|
| 3 |
+
"checkpoint": "checkpoints/ablate_full_3k/checkpoint-3000",
|
| 4 |
+
"use_track": true,
|
| 5 |
+
"use_force": true,
|
| 6 |
+
"use_deform_tactile": false,
|
| 7 |
+
"forward_tau_losses": {
|
| 8 |
+
"0.8": {
|
| 9 |
+
"action_loss": [
|
| 10 |
+
0.13885498046875,
|
| 11 |
+
0.021893762307867347
|
| 12 |
+
],
|
| 13 |
+
"dynamics_loss": [
|
| 14 |
+
0.214599609375,
|
| 15 |
+
0.028883325232585192
|
| 16 |
+
],
|
| 17 |
+
"track_flow_loss": [
|
| 18 |
+
0.01959228515625,
|
| 19 |
+
0.005815500664137739
|
| 20 |
+
],
|
| 21 |
+
"force_loss": [
|
| 22 |
+
0.6427408854166666,
|
| 23 |
+
0.07174448889029805
|
| 24 |
+
]
|
| 25 |
+
},
|
| 26 |
+
"0.6": {
|
| 27 |
+
"action_loss": [
|
| 28 |
+
0.20402018229166666,
|
| 29 |
+
0.027474107787100906
|
| 30 |
+
],
|
| 31 |
+
"dynamics_loss": [
|
| 32 |
+
0.2801106770833333,
|
| 33 |
+
0.02749254221890766
|
| 34 |
+
],
|
| 35 |
+
"track_flow_loss": [
|
| 36 |
+
0.025583902994791668,
|
| 37 |
+
0.009258714454018649
|
| 38 |
+
],
|
| 39 |
+
"force_loss": [
|
| 40 |
+
0.6427408854166666,
|
| 41 |
+
0.07174448889029805
|
| 42 |
+
]
|
| 43 |
+
},
|
| 44 |
+
"0.4": {
|
| 45 |
+
"action_loss": [
|
| 46 |
+
0.3986002604166667,
|
| 47 |
+
0.0390743661447396
|
| 48 |
+
],
|
| 49 |
+
"dynamics_loss": [
|
| 50 |
+
0.4138997395833333,
|
| 51 |
+
0.025458871788911118
|
| 52 |
+
],
|
| 53 |
+
"track_flow_loss": [
|
| 54 |
+
0.051778157552083336,
|
| 55 |
+
0.017947368985419505
|
| 56 |
+
],
|
| 57 |
+
"force_loss": [
|
| 58 |
+
0.6427408854166666,
|
| 59 |
+
0.07174448889029805
|
| 60 |
+
]
|
| 61 |
+
},
|
| 62 |
+
"0.2": {
|
| 63 |
+
"action_loss": [
|
| 64 |
+
0.7521158854166666,
|
| 65 |
+
0.048475014437045466
|
| 66 |
+
],
|
| 67 |
+
"dynamics_loss": [
|
| 68 |
+
0.7236328125,
|
| 69 |
+
0.020585171554378095
|
| 70 |
+
],
|
| 71 |
+
"track_flow_loss": [
|
| 72 |
+
0.270751953125,
|
| 73 |
+
0.02853870589963502
|
| 74 |
+
],
|
| 75 |
+
"force_loss": [
|
| 76 |
+
0.6427408854166666,
|
| 77 |
+
0.07174448889029805
|
| 78 |
+
]
|
| 79 |
+
},
|
| 80 |
+
"0.05": {
|
| 81 |
+
"action_loss": [
|
| 82 |
+
1.0758463541666667,
|
| 83 |
+
0.05334471104376999
|
| 84 |
+
],
|
| 85 |
+
"dynamics_loss": [
|
| 86 |
+
1.1305338541666667,
|
| 87 |
+
0.01504103522415094
|
| 88 |
+
],
|
| 89 |
+
"track_flow_loss": [
|
| 90 |
+
0.912109375,
|
| 91 |
+
0.026373214974647258
|
| 92 |
+
],
|
| 93 |
+
"force_loss": [
|
| 94 |
+
0.6427408854166666,
|
| 95 |
+
0.07174448889029805
|
| 96 |
+
]
|
| 97 |
+
}
|
| 98 |
+
},
|
| 99 |
+
"openloop_action_mse": {
|
| 100 |
+
"cascade": [
|
| 101 |
+
0.20543859526515007,
|
| 102 |
+
0.10553651615425272,
|
| 103 |
+
16
|
| 104 |
+
],
|
| 105 |
+
"coarse_only": [
|
| 106 |
+
0.3859300408512354,
|
| 107 |
+
0.09367721956997326,
|
| 108 |
+
16
|
| 109 |
+
]
|
| 110 |
+
},
|
| 111 |
+
"openloop_action_mse_split": {
|
| 112 |
+
"cascade_arm": 0.29095884039998055,
|
| 113 |
+
"cascade_hand": 0.1704530455172062,
|
| 114 |
+
"coarse_arm": 0.42187667451798916,
|
| 115 |
+
"coarse_hand": 0.3712246026843786
|
| 116 |
+
},
|
| 117 |
+
"stage1_attention": {
|
| 118 |
+
"0": {
|
| 119 |
+
"action": {
|
| 120 |
+
"cond_obs": 0.028233155608177185,
|
| 121 |
+
"obs": 0.10685919225215912,
|
| 122 |
+
"action": 0.06159074231982231,
|
| 123 |
+
"state": 0.001643829746171832,
|
| 124 |
+
"track_past": 0.4548226296901703,
|
| 125 |
+
"track_future": 0.3468504846096039
|
| 126 |
+
},
|
| 127 |
+
"obs": {
|
| 128 |
+
"cond_obs": 0.053328514099121094,
|
| 129 |
+
"obs": 0.5826746821403503,
|
| 130 |
+
"action": 0.009129117242991924,
|
| 131 |
+
"state": 0.0005130452918820083,
|
| 132 |
+
"track_past": 0.1784334033727646,
|
| 133 |
+
"track_future": 0.1759212762117386
|
| 134 |
+
}
|
| 135 |
+
},
|
| 136 |
+
"14": {
|
| 137 |
+
"action": {
|
| 138 |
+
"cond_obs": 0.04729510098695755,
|
| 139 |
+
"obs": 0.08689284324645996,
|
| 140 |
+
"action": 0.20308324694633484,
|
| 141 |
+
"state": 0.0032673801761120558,
|
| 142 |
+
"track_past": 0.6379822492599487,
|
| 143 |
+
"track_future": 0.021479224786162376
|
| 144 |
+
},
|
| 145 |
+
"obs": {
|
| 146 |
+
"cond_obs": 0.16180963814258575,
|
| 147 |
+
"obs": 0.6352365016937256,
|
| 148 |
+
"action": 0.013975701294839382,
|
| 149 |
+
"state": 0.006121945567429066,
|
| 150 |
+
"track_past": 0.167484849691391,
|
| 151 |
+
"track_future": 0.015371335670351982
|
| 152 |
+
}
|
| 153 |
+
},
|
| 154 |
+
"29": {
|
| 155 |
+
"action": {
|
| 156 |
+
"cond_obs": 0.05335542559623718,
|
| 157 |
+
"obs": 0.09940896928310394,
|
| 158 |
+
"action": 0.18759986758232117,
|
| 159 |
+
"state": 0.0025236550718545914,
|
| 160 |
+
"track_past": 0.5753425359725952,
|
| 161 |
+
"track_future": 0.08176963031291962
|
| 162 |
+
},
|
| 163 |
+
"obs": {
|
| 164 |
+
"cond_obs": 0.09543927758932114,
|
| 165 |
+
"obs": 0.7705966234207153,
|
| 166 |
+
"action": 0.01101355254650116,
|
| 167 |
+
"state": 0.0004360256134532392,
|
| 168 |
+
"track_past": 0.07644421607255936,
|
| 169 |
+
"track_future": 0.046070314943790436
|
| 170 |
+
}
|
| 171 |
+
}
|
| 172 |
+
},
|
| 173 |
+
"stage2_attention": [
|
| 174 |
+
{
|
| 175 |
+
"action": 0.033935546875,
|
| 176 |
+
"f6": 0.0230712890625,
|
| 177 |
+
"vq": 0.024169921875,
|
| 178 |
+
"memory": 0.91796875
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"action": 0.0322265625,
|
| 182 |
+
"f6": 0.0208740234375,
|
| 183 |
+
"vq": 0.023681640625,
|
| 184 |
+
"memory": 0.921875
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"action": 0.0274658203125,
|
| 188 |
+
"f6": 0.01708984375,
|
| 189 |
+
"vq": 0.0203857421875,
|
| 190 |
+
"memory": 0.93359375
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"action": 0.0250244140625,
|
| 194 |
+
"f6": 0.01513671875,
|
| 195 |
+
"vq": 0.0185546875,
|
| 196 |
+
"memory": 0.94140625
|
| 197 |
+
},
|
| 198 |
+
{
|
| 199 |
+
"action": 0.024169921875,
|
| 200 |
+
"f6": 0.01416015625,
|
| 201 |
+
"vq": 0.017333984375,
|
| 202 |
+
"memory": 0.9453125
|
| 203 |
+
},
|
| 204 |
+
{
|
| 205 |
+
"action": 0.0228271484375,
|
| 206 |
+
"f6": 0.0130615234375,
|
| 207 |
+
"vq": 0.0157470703125,
|
| 208 |
+
"memory": 0.94921875
|
| 209 |
+
}
|
| 210 |
+
],
|
| 211 |
+
"tactile_sensitivity": {
|
| 212 |
+
"mean_abs_delta_vs_masked": 0.014084354043006897,
|
| 213 |
+
"max_abs_delta_vs_masked": 0.06640625,
|
| 214 |
+
"mean_abs_refinement": 0.2452070713043213
|
| 215 |
+
}
|
| 216 |
+
},
|
| 217 |
+
"notrack": {
|
| 218 |
+
"checkpoint": "checkpoints/ablate_notrack_3k/checkpoint-3000",
|
| 219 |
+
"use_track": false,
|
| 220 |
+
"use_force": true,
|
| 221 |
+
"use_deform_tactile": false,
|
| 222 |
+
"forward_tau_losses": {
|
| 223 |
+
"0.8": {
|
| 224 |
+
"action_loss": [
|
| 225 |
+
0.12394205729166667,
|
| 226 |
+
0.02089633950925863
|
| 227 |
+
],
|
| 228 |
+
"dynamics_loss": [
|
| 229 |
+
0.178466796875,
|
| 230 |
+
0.028673447679287072
|
| 231 |
+
],
|
| 232 |
+
"track_flow_loss": [
|
| 233 |
+
0.0,
|
| 234 |
+
0.0
|
| 235 |
+
],
|
| 236 |
+
"force_loss": [
|
| 237 |
+
0.7783203125,
|
| 238 |
+
0.043793139306208324
|
| 239 |
+
]
|
| 240 |
+
},
|
| 241 |
+
"0.6": {
|
| 242 |
+
"action_loss": [
|
| 243 |
+
0.19099934895833334,
|
| 244 |
+
0.028310372080589903
|
| 245 |
+
],
|
| 246 |
+
"dynamics_loss": [
|
| 247 |
+
0.22908528645833334,
|
| 248 |
+
0.028607776677988368
|
| 249 |
+
],
|
| 250 |
+
"track_flow_loss": [
|
| 251 |
+
0.0,
|
| 252 |
+
0.0
|
| 253 |
+
],
|
| 254 |
+
"force_loss": [
|
| 255 |
+
0.7783203125,
|
| 256 |
+
0.043793139306208324
|
| 257 |
+
]
|
| 258 |
+
},
|
| 259 |
+
"0.4": {
|
| 260 |
+
"action_loss": [
|
| 261 |
+
0.3876953125,
|
| 262 |
+
0.035242046640337726
|
| 263 |
+
],
|
| 264 |
+
"dynamics_loss": [
|
| 265 |
+
0.3413899739583333,
|
| 266 |
+
0.029684818436720592
|
| 267 |
+
],
|
| 268 |
+
"track_flow_loss": [
|
| 269 |
+
0.0,
|
| 270 |
+
0.0
|
| 271 |
+
],
|
| 272 |
+
"force_loss": [
|
| 273 |
+
0.7783203125,
|
| 274 |
+
0.043793139306208324
|
| 275 |
+
]
|
| 276 |
+
},
|
| 277 |
+
"0.2": {
|
| 278 |
+
"action_loss": [
|
| 279 |
+
0.7447916666666666,
|
| 280 |
+
0.0426817276121973
|
| 281 |
+
],
|
| 282 |
+
"dynamics_loss": [
|
| 283 |
+
0.6276041666666666,
|
| 284 |
+
0.024927330363381052
|
| 285 |
+
],
|
| 286 |
+
"track_flow_loss": [
|
| 287 |
+
0.0,
|
| 288 |
+
0.0
|
| 289 |
+
],
|
| 290 |
+
"force_loss": [
|
| 291 |
+
0.7783203125,
|
| 292 |
+
0.043793139306208324
|
| 293 |
+
]
|
| 294 |
+
},
|
| 295 |
+
"0.05": {
|
| 296 |
+
"action_loss": [
|
| 297 |
+
1.0777994791666667,
|
| 298 |
+
0.054336633312902415
|
| 299 |
+
],
|
| 300 |
+
"dynamics_loss": [
|
| 301 |
+
1.0641276041666667,
|
| 302 |
+
0.01625975747883096
|
| 303 |
+
],
|
| 304 |
+
"track_flow_loss": [
|
| 305 |
+
0.0,
|
| 306 |
+
0.0
|
| 307 |
+
],
|
| 308 |
+
"force_loss": [
|
| 309 |
+
0.7783203125,
|
| 310 |
+
0.043793139306208324
|
| 311 |
+
]
|
| 312 |
+
}
|
| 313 |
+
},
|
| 314 |
+
"openloop_action_mse": {
|
| 315 |
+
"cascade": [
|
| 316 |
+
0.22997993603348732,
|
| 317 |
+
0.1032914996028219,
|
| 318 |
+
16
|
| 319 |
+
],
|
| 320 |
+
"coarse_only": [
|
| 321 |
+
0.38339873775839806,
|
| 322 |
+
0.09786209841435693,
|
| 323 |
+
16
|
| 324 |
+
]
|
| 325 |
+
},
|
| 326 |
+
"openloop_action_mse_split": {
|
| 327 |
+
"cascade_arm": 0.29843927826732397,
|
| 328 |
+
"cascade_hand": 0.2019738396629691,
|
| 329 |
+
"coarse_arm": 0.4064813628792763,
|
| 330 |
+
"coarse_hand": 0.373955849558115
|
| 331 |
+
},
|
| 332 |
+
"stage1_attention": {
|
| 333 |
+
"0": {
|
| 334 |
+
"action": {
|
| 335 |
+
"cond_obs": 0.20962195098400116,
|
| 336 |
+
"obs": 0.507138729095459,
|
| 337 |
+
"action": 0.27125489711761475,
|
| 338 |
+
"state": 0.011984430253505707,
|
| 339 |
+
"track_past": 0.0,
|
| 340 |
+
"track_future": 0.0
|
| 341 |
+
},
|
| 342 |
+
"obs": {
|
| 343 |
+
"cond_obs": 0.16306498646736145,
|
| 344 |
+
"obs": 0.7571282386779785,
|
| 345 |
+
"action": 0.07827480137348175,
|
| 346 |
+
"state": 0.001532059395685792,
|
| 347 |
+
"track_past": 0.0,
|
| 348 |
+
"track_future": 0.0
|
| 349 |
+
}
|
| 350 |
+
},
|
| 351 |
+
"14": {
|
| 352 |
+
"action": {
|
| 353 |
+
"cond_obs": 0.09229698032140732,
|
| 354 |
+
"obs": 0.18946343660354614,
|
| 355 |
+
"action": 0.6833343505859375,
|
| 356 |
+
"state": 0.03490526229143143,
|
| 357 |
+
"track_past": 0.0,
|
| 358 |
+
"track_future": 0.0
|
| 359 |
+
},
|
| 360 |
+
"obs": {
|
| 361 |
+
"cond_obs": 0.26676031947135925,
|
| 362 |
+
"obs": 0.6440349221229553,
|
| 363 |
+
"action": 0.054011691361665726,
|
| 364 |
+
"state": 0.03519308567047119,
|
| 365 |
+
"track_past": 0.0,
|
| 366 |
+
"track_future": 0.0
|
| 367 |
+
}
|
| 368 |
+
},
|
| 369 |
+
"29": {
|
| 370 |
+
"action": {
|
| 371 |
+
"cond_obs": 0.10308176279067993,
|
| 372 |
+
"obs": 0.24439243972301483,
|
| 373 |
+
"action": 0.6442670822143555,
|
| 374 |
+
"state": 0.008258762769401073,
|
| 375 |
+
"track_past": 0.0,
|
| 376 |
+
"track_future": 0.0
|
| 377 |
+
},
|
| 378 |
+
"obs": {
|
| 379 |
+
"cond_obs": 0.15114127099514008,
|
| 380 |
+
"obs": 0.8275548219680786,
|
| 381 |
+
"action": 0.019980238750576973,
|
| 382 |
+
"state": 0.0013237263774499297,
|
| 383 |
+
"track_past": 0.0,
|
| 384 |
+
"track_future": 0.0
|
| 385 |
+
}
|
| 386 |
+
}
|
| 387 |
+
},
|
| 388 |
+
"stage2_attention": [
|
| 389 |
+
{
|
| 390 |
+
"action": 0.1103515625,
|
| 391 |
+
"f6": 0.0625,
|
| 392 |
+
"vq": 0.06640625,
|
| 393 |
+
"memory": 0.76171875
|
| 394 |
+
},
|
| 395 |
+
{
|
| 396 |
+
"action": 0.1904296875,
|
| 397 |
+
"f6": 0.09814453125,
|
| 398 |
+
"vq": 0.0966796875,
|
| 399 |
+
"memory": 0.61328125
|
| 400 |
+
},
|
| 401 |
+
{
|
| 402 |
+
"action": 0.3359375,
|
| 403 |
+
"f6": 0.146484375,
|
| 404 |
+
"vq": 0.1513671875,
|
| 405 |
+
"memory": 0.365234375
|
| 406 |
+
},
|
| 407 |
+
{
|
| 408 |
+
"action": 0.283203125,
|
| 409 |
+
"f6": 0.12353515625,
|
| 410 |
+
"vq": 0.1259765625,
|
| 411 |
+
"memory": 0.466796875
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"action": 0.193359375,
|
| 415 |
+
"f6": 0.08984375,
|
| 416 |
+
"vq": 0.09716796875,
|
| 417 |
+
"memory": 0.62109375
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"action": 0.1298828125,
|
| 421 |
+
"f6": 0.072265625,
|
| 422 |
+
"vq": 0.0771484375,
|
| 423 |
+
"memory": 0.71875
|
| 424 |
+
}
|
| 425 |
+
],
|
| 426 |
+
"tactile_sensitivity": {
|
| 427 |
+
"mean_abs_delta_vs_masked": 0.025584066286683083,
|
| 428 |
+
"max_abs_delta_vs_masked": 0.130859375,
|
| 429 |
+
"mean_abs_refinement": 0.24716320633888245
|
| 430 |
+
}
|
| 431 |
+
}
|
| 432 |
+
}
|
ablation_runs/tools/make_ablation_section.py
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Assemble the ablation section HTML for the Track-Force Cascade artifact."""
|
| 2 |
+
import json
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
|
| 6 |
+
TOOLS = Path(__file__).parent
|
| 7 |
+
sys.path.insert(0, str(TOOLS))
|
| 8 |
+
from chartlib import line_chart, stacked_hbar, hbar, VARIANTS, VAR_LABEL # noqa: E402
|
| 9 |
+
from loss_series import series_for, load_components # noqa: E402
|
| 10 |
+
|
| 11 |
+
RUNS = {v: f"/scratch1/home/zhicao/dreamzero/checkpoints/ablate_{v}_3k/loss_log.jsonl"
|
| 12 |
+
for v in VARIANTS}
|
| 13 |
+
|
| 14 |
+
EXTRA_CSS = """
|
| 15 |
+
/* ---- ablation additions ---- */
|
| 16 |
+
:root {
|
| 17 |
+
--v-full: #3c7ec0;
|
| 18 |
+
--v-notrack: #c26a1e;
|
| 19 |
+
--v-noforce: #6f66bd;
|
| 20 |
+
--v-deform: #b54e7f;
|
| 21 |
+
}
|
| 22 |
+
@media (prefers-color-scheme: dark) {
|
| 23 |
+
:root:not([data-theme="light"]) {
|
| 24 |
+
--v-full: #5895d1;
|
| 25 |
+
--v-notrack: #c98136;
|
| 26 |
+
--v-noforce: #8d7fd6;
|
| 27 |
+
--v-deform: #d76a94;
|
| 28 |
+
}
|
| 29 |
+
}
|
| 30 |
+
:root[data-theme="dark"] {
|
| 31 |
+
--v-full: #5895d1;
|
| 32 |
+
--v-notrack: #c98136;
|
| 33 |
+
--v-noforce: #8d7fd6;
|
| 34 |
+
--v-deform: #d76a94;
|
| 35 |
+
}
|
| 36 |
+
.vw { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
|
| 37 |
+
.vdot { stroke: var(--surface); stroke-width: 2; }
|
| 38 |
+
.vw.v-full { stroke: var(--v-full); }
|
| 39 |
+
.vw.v-notrack { stroke: var(--v-notrack); }
|
| 40 |
+
.vw.v-noforce { stroke: var(--v-noforce); }
|
| 41 |
+
.vw.v-deform { stroke: var(--v-deform); }
|
| 42 |
+
.vdot.v-full, rect.v-full { fill: var(--v-full); }
|
| 43 |
+
.vdot.v-notrack, rect.v-notrack { fill: var(--v-notrack); }
|
| 44 |
+
.vdot.v-noforce, rect.v-noforce { fill: var(--v-noforce); }
|
| 45 |
+
.vdot.v-deform, rect.v-deform { fill: var(--v-deform); }
|
| 46 |
+
.vfaded { opacity: 0.45; }
|
| 47 |
+
.vs { display: inline-block; width: 13px; height: 3px; border-radius: 2px; }
|
| 48 |
+
.vs-full { background: var(--v-full); }
|
| 49 |
+
.vs-notrack { background: var(--v-notrack); }
|
| 50 |
+
.vs-noforce { background: var(--v-noforce); }
|
| 51 |
+
.vs-deform { background: var(--v-deform); }
|
| 52 |
+
.sg-cond { fill: var(--c-obs); opacity: 0.45; }
|
| 53 |
+
.sg-obs { fill: var(--c-obs); }
|
| 54 |
+
.sg-act { fill: var(--c-act); }
|
| 55 |
+
.sg-st { fill: var(--c-st); }
|
| 56 |
+
.sg-trkp { fill: var(--c-trk); }
|
| 57 |
+
.sg-trkf { fill: var(--c-trk); opacity: 0.45; }
|
| 58 |
+
.sg-f6 { fill: var(--c-frc); }
|
| 59 |
+
.sg-vq { fill: var(--c-frc); opacity: 0.45; }
|
| 60 |
+
.sg-deform { fill: var(--c-frc); opacity: 0.7; }
|
| 61 |
+
.sg-mem { fill: var(--c-mem); }
|
| 62 |
+
.sw-solid-trk { background: var(--c-trk); border-color: var(--c-trk); }
|
| 63 |
+
.quad { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
|
| 64 |
+
@media (max-width: 900px) { .quad { grid-template-columns: 1fr; } }
|
| 65 |
+
"""
|
| 66 |
+
|
| 67 |
+
STAGE1_GROUPS = ["cond_obs", "obs", "action", "state", "track_past", "track_future"]
|
| 68 |
+
STAGE1_CLASS = {"cond_obs": "sg-cond", "obs": "sg-obs", "action": "sg-act",
|
| 69 |
+
"state": "sg-st", "track_past": "sg-trkp", "track_future": "sg-trkf"}
|
| 70 |
+
STAGE2_GROUPS = ["action", "f6", "vq", "deform", "memory"]
|
| 71 |
+
STAGE2_CLASS = {"action": "sg-act", "f6": "sg-f6", "vq": "sg-vq",
|
| 72 |
+
"deform": "sg-deform", "memory": "sg-mem"}
|
| 73 |
+
SHORT = {"full": "A", "notrack": "B", "noforce": "C", "deform": "D"}
|
| 74 |
+
|
| 75 |
+
VARIANT_LEGEND = """
|
| 76 |
+
<div class="legend" role="list" aria-label="Ablation variant legend">
|
| 77 |
+
<span class="k" role="listitem"><span class="vs vs-full"></span>A · full (track + force)</span>
|
| 78 |
+
<span class="k" role="listitem"><span class="vs vs-notrack"></span>B · no track (pre-track structure)</span>
|
| 79 |
+
<span class="k" role="listitem"><span class="vs vs-noforce"></span>C · no force stage</span>
|
| 80 |
+
<span class="k" role="listitem"><span class="vs vs-deform"></span>D · deform tactile + force</span>
|
| 81 |
+
</div>
|
| 82 |
+
"""
|
| 83 |
+
|
| 84 |
+
PROTOCOL_PROSE = """
|
| 85 |
+
<div class="prose">
|
| 86 |
+
<p>Four variants of the cascade are trained from the same Wan2.2 foundation
|
| 87 |
+
weights on the <code>trex_mini_force</code> episode — identical anchors,
|
| 88 |
+
LoRA budget (r=4 on q,k,v,o,k_img,v_img,ffn), learning rate, batch size,
|
| 89 |
+
seed, and 3,000 single-GPU steps — so every difference below is
|
| 90 |
+
attributable to the ablated component, not to training budget.
|
| 91 |
+
<b>B</b> removes the track pathway structurally (no track tokens, encoder,
|
| 92 |
+
decoder, or loss): the packed block shrinks from 617 to 117 tokens —
|
| 93 |
+
exactly the pre-track architecture with the force stage kept. <b>C</b>
|
| 94 |
+
removes the force stage (no Stage-2 transformer, no tactile input, no
|
| 95 |
+
force/VQ loss); at inference its coarse model carries the flow all the way
|
| 96 |
+
to τ=0. <b>D</b> keeps the full model and adds ten per-finger
|
| 97 |
+
deformation-camera tokens (96×96 crops → 4-layer CNN → d 768)
|
| 98 |
+
beside the F6 and VQ-history tokens in Stage 2.</p>
|
| 99 |
+
</div>"""
|
| 100 |
+
|
| 101 |
+
VARIANT_TABLE = """
|
| 102 |
+
<div class="tbl-wrap">
|
| 103 |
+
<table>
|
| 104 |
+
<thead><tr><th>Variant</th><th>Stage-1 tokens / block</th>
|
| 105 |
+
<th>Stage-2 tokens</th><th>Losses optimized</th></tr></thead>
|
| 106 |
+
<tbody>
|
| 107 |
+
<tr><td><span class="chip"><span class="vs vs-full"></span> A · full</span></td>
|
| 108 |
+
<td class="shape">100 obs + 16 act + 1 st + 500 trk = 617</td>
|
| 109 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + mem</td>
|
| 110 |
+
<td>dynamics · action · 20·track · force · VQ</td></tr>
|
| 111 |
+
<tr><td><span class="chip"><span class="vs vs-notrack"></span> B · no track</span></td>
|
| 112 |
+
<td class="shape">100 obs + 16 act + 1 st = 117</td>
|
| 113 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + mem</td>
|
| 114 |
+
<td>dynamics · action · force · VQ</td></tr>
|
| 115 |
+
<tr><td><span class="chip"><span class="vs vs-noforce"></span> C · no force</span></td>
|
| 116 |
+
<td class="shape">617</td>
|
| 117 |
+
<td class="shape">— (coarse runs τ→0)</td>
|
| 118 |
+
<td>dynamics · action · 20·track</td></tr>
|
| 119 |
+
<tr><td><span class="chip"><span class="vs vs-deform"></span> D · deform + force</span></td>
|
| 120 |
+
<td class="shape">617</td>
|
| 121 |
+
<td class="shape">16 act + 10 F6 + 10 VQ + <b>10 deform</b> + mem</td>
|
| 122 |
+
<td>dynamics · action · 20·track · force · VQ</td></tr>
|
| 123 |
+
</tbody>
|
| 124 |
+
</table>
|
| 125 |
+
</div>"""
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
def loss_figure():
|
| 129 |
+
charts = {}
|
| 130 |
+
for variant, path in RUNS.items():
|
| 131 |
+
if Path(path).exists():
|
| 132 |
+
charts[variant] = series_for(
|
| 133 |
+
path, ["action_loss", "dynamics_loss", "track_loss", "force_loss"]
|
| 134 |
+
)
|
| 135 |
+
panels = []
|
| 136 |
+
for component, title in (
|
| 137 |
+
("action_loss", "action flow MSE"),
|
| 138 |
+
("dynamics_loss", "dynamics (video flow) MSE"),
|
| 139 |
+
("track_loss", "track loss (weighted sum)"),
|
| 140 |
+
("force_loss", "force flow MSE"),
|
| 141 |
+
):
|
| 142 |
+
series = {
|
| 143 |
+
v: charts[v][component]
|
| 144 |
+
for v in VARIANTS
|
| 145 |
+
if v in charts and component in charts[v]
|
| 146 |
+
and max(x[1] for x in charts[v][component]) > 1e-8
|
| 147 |
+
}
|
| 148 |
+
if series:
|
| 149 |
+
panels.append(line_chart(series, title=title, width=520, height=230))
|
| 150 |
+
grid = "\n".join(f"<div>{p}</div>" for p in panels)
|
| 151 |
+
return f"""
|
| 152 |
+
<figure>
|
| 153 |
+
<div class="quad">
|
| 154 |
+
{grid}
|
| 155 |
+
</div>
|
| 156 |
+
<figcaption><b>Figure A1 — Same-step training loss convergence.</b>
|
| 157 |
+
Identical data, LoRA budget, seed, and 3,000 single-GPU steps for all four
|
| 158 |
+
variants; curves are EMA-smoothed (half-life 80 steps), log-scaled y.
|
| 159 |
+
Track loss exists only where track tokens exist; force loss only where the
|
| 160 |
+
force stage exists.</figcaption>
|
| 161 |
+
</figure>"""
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
def final_loss_table(last_n=200):
|
| 165 |
+
rows = []
|
| 166 |
+
for variant in VARIANTS:
|
| 167 |
+
path = RUNS[variant]
|
| 168 |
+
if not Path(path).exists():
|
| 169 |
+
continue
|
| 170 |
+
raw = load_components(path)
|
| 171 |
+
cells = {}
|
| 172 |
+
for component in ("action_loss", "dynamics_loss", "track_loss", "force_loss"):
|
| 173 |
+
pts = raw.get(component, [])
|
| 174 |
+
tail = [v for s, v in pts if s >= 3000 - last_n]
|
| 175 |
+
cells[component] = (sum(tail) / len(tail)) if tail else None
|
| 176 |
+
rows.append((variant, cells))
|
| 177 |
+
|
| 178 |
+
def fmt(v):
|
| 179 |
+
return "—" if v is None or v < 1e-9 else f"{v:.4f}"
|
| 180 |
+
|
| 181 |
+
body = "\n".join(
|
| 182 |
+
f'<tr><td><span class="chip"><span class="vs vs-{v}"></span> {VAR_LABEL[v]}</span></td>'
|
| 183 |
+
+ "".join(
|
| 184 |
+
f'<td class="shape">{fmt(c[k])}</td>'
|
| 185 |
+
for k in ("action_loss", "dynamics_loss", "track_loss", "force_loss")
|
| 186 |
+
)
|
| 187 |
+
+ "</tr>"
|
| 188 |
+
for v, c in rows
|
| 189 |
+
)
|
| 190 |
+
return f"""
|
| 191 |
+
<div class="tbl-wrap">
|
| 192 |
+
<table>
|
| 193 |
+
<thead><tr><th>Variant (mean loss, steps 2,800–3,000)</th><th>action</th>
|
| 194 |
+
<th>dynamics</th><th>track</th><th>force</th></tr></thead>
|
| 195 |
+
<tbody>{body}</tbody>
|
| 196 |
+
</table>
|
| 197 |
+
</div>"""
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
def tau_table(eval_data):
|
| 201 |
+
taus = ["0.8", "0.6", "0.4", "0.2", "0.05"]
|
| 202 |
+
head = "".join(f"<th>τ={t}</th>" for t in taus)
|
| 203 |
+
body_rows = []
|
| 204 |
+
for metric, label in (("action_loss", "action"), ("dynamics_loss", "dynamics")):
|
| 205 |
+
for variant in VARIANTS:
|
| 206 |
+
r = eval_data.get(variant)
|
| 207 |
+
if not r:
|
| 208 |
+
continue
|
| 209 |
+
cells = "".join(
|
| 210 |
+
f'<td class="shape">{r["forward_tau_losses"][t][metric][0]:.3f}</td>'
|
| 211 |
+
for t in taus
|
| 212 |
+
)
|
| 213 |
+
body_rows.append(
|
| 214 |
+
f'<tr><td><span class="chip"><span class="vs vs-{variant}"></span>'
|
| 215 |
+
f" {SHORT[variant]} · {label}</span></td>{cells}</tr>"
|
| 216 |
+
)
|
| 217 |
+
return f"""
|
| 218 |
+
<div class="tbl-wrap">
|
| 219 |
+
<table>
|
| 220 |
+
<thead><tr><th>flow MSE @ fixed τ</th>{head}</tr></thead>
|
| 221 |
+
<tbody>{"".join(body_rows)}</tbody>
|
| 222 |
+
</table>
|
| 223 |
+
</div>"""
|
| 224 |
+
|
| 225 |
+
|
| 226 |
+
def openloop_figure(eval_data):
|
| 227 |
+
rows = []
|
| 228 |
+
for variant in VARIANTS:
|
| 229 |
+
r = eval_data.get(variant)
|
| 230 |
+
if not r:
|
| 231 |
+
continue
|
| 232 |
+
ol = r["openloop_action_mse"]
|
| 233 |
+
if "cascade" in ol:
|
| 234 |
+
rows.append((f"{SHORT[variant]} · cascade (+force stage)",
|
| 235 |
+
ol["cascade"][0], f"v-{variant}"))
|
| 236 |
+
rows.append((f"{SHORT[variant]} · coarse only",
|
| 237 |
+
ol["coarse_only"][0], f"v-{variant} vfaded"))
|
| 238 |
+
return hbar(rows, width=560, left=240, title="open-loop action MSE ↓ (16 anchors, normalized 62-D)",
|
| 239 |
+
fmt=lambda v: f"{v:.3f}")
|
| 240 |
+
|
| 241 |
+
|
| 242 |
+
def stage1_attention_figure(eval_data, layers=("0", "29")):
|
| 243 |
+
rows = []
|
| 244 |
+
for variant in VARIANTS:
|
| 245 |
+
r = eval_data.get(variant)
|
| 246 |
+
if not r or "stage1_attention" not in r:
|
| 247 |
+
continue
|
| 248 |
+
for layer in layers:
|
| 249 |
+
masses = r["stage1_attention"].get(layer, {}).get("action")
|
| 250 |
+
if masses:
|
| 251 |
+
rows.append((f"{SHORT[variant]} · layer {layer}", masses))
|
| 252 |
+
return stacked_hbar(rows, STAGE1_GROUPS, STAGE1_CLASS, width=640, left=110,
|
| 253 |
+
title="Stage-1: where action queries attend (mass share)")
|
| 254 |
+
|
| 255 |
+
|
| 256 |
+
def stage2_attention_figure(eval_data):
|
| 257 |
+
rows = []
|
| 258 |
+
for variant in VARIANTS:
|
| 259 |
+
r = eval_data.get(variant)
|
| 260 |
+
if not r or not r.get("stage2_attention"):
|
| 261 |
+
continue
|
| 262 |
+
layers = r["stage2_attention"]
|
| 263 |
+
mean = {}
|
| 264 |
+
for key in STAGE2_GROUPS:
|
| 265 |
+
vals = [layer.get(key, 0.0) for layer in layers]
|
| 266 |
+
mean[key] = sum(vals) / len(vals)
|
| 267 |
+
rows.append((f"{SHORT[variant]} · L0–L5 mean", mean))
|
| 268 |
+
return stacked_hbar(rows, STAGE2_GROUPS, STAGE2_CLASS, width=640, left=110,
|
| 269 |
+
title="Stage-2: where action queries attend (mass share)")
|
| 270 |
+
|
| 271 |
+
|
| 272 |
+
def sensitivity_table(eval_data):
|
| 273 |
+
rows = []
|
| 274 |
+
for variant in VARIANTS:
|
| 275 |
+
r = eval_data.get(variant)
|
| 276 |
+
if not r or "tactile_sensitivity" not in r:
|
| 277 |
+
continue
|
| 278 |
+
t = r["tactile_sensitivity"]
|
| 279 |
+
rows.append(
|
| 280 |
+
f'<tr><td><span class="chip"><span class="vs vs-{variant}"></span>'
|
| 281 |
+
f' {VAR_LABEL[variant]}</span></td>'
|
| 282 |
+
f'<td class="shape">{t["mean_abs_delta_vs_masked"]:.4f}</td>'
|
| 283 |
+
f'<td class="shape">{t["max_abs_delta_vs_masked"]:.4f}</td>'
|
| 284 |
+
f'<td class="shape">{t["mean_abs_refinement"]:.4f}</td></tr>'
|
| 285 |
+
)
|
| 286 |
+
return f"""
|
| 287 |
+
<div class="tbl-wrap">
|
| 288 |
+
<table>
|
| 289 |
+
<thead><tr><th>Tactile sensitivity (normalized units)</th>
|
| 290 |
+
<th>mean |Δa| tactile vs masked</th><th>max |Δa|</th>
|
| 291 |
+
<th>mean |refinement|</th></tr></thead>
|
| 292 |
+
<tbody>{"".join(rows)}</tbody>
|
| 293 |
+
</table>
|
| 294 |
+
</div>"""
|
| 295 |
+
|
| 296 |
+
|
| 297 |
+
def build_section(eval_data, findings_html=""):
|
| 298 |
+
parts = [
|
| 299 |
+
'\n <!-- ======================= ABLATION ======================= -->',
|
| 300 |
+
' <section id="ablation">',
|
| 301 |
+
' <p class="sec-eyebrow">ablation</p>',
|
| 302 |
+
' <h2>Ablation: what track, force, and deformation tactile each buy</h2>',
|
| 303 |
+
PROTOCOL_PROSE,
|
| 304 |
+
VARIANT_LEGEND,
|
| 305 |
+
VARIANT_TABLE,
|
| 306 |
+
loss_figure(),
|
| 307 |
+
final_loss_table(),
|
| 308 |
+
' <h3>Controlled evaluation on frozen checkpoints</h3>',
|
| 309 |
+
''' <div class="prose"><p>All numbers below come from the same fixed
|
| 310 |
+
anchor sets, noise seeds, and prompts for every variant
|
| 311 |
+
(<code>scripts/eval/trex_ablation_eval.py</code>). Open-loop: each variant
|
| 312 |
+
runs its own full sampling loop from pure noise on 16 anchors and is scored
|
| 313 |
+
against the ground-truth normalized delta-base chunk.</p></div>''',
|
| 314 |
+
f' <figure>{openloop_figure(eval_data)}<figcaption><b>Figure A2 — Open-loop reconstruction.</b> Faded bars: the coarse action read out at τ=0 without tactile refinement (for C this is its only mode). Solid bars: the full cascade.</figcaption></figure>',
|
| 315 |
+
tau_table(eval_data),
|
| 316 |
+
f' <figure>{stage1_attention_figure(eval_data)}<figcaption><b>Figure A3 — Stage-1 attention routing.</b> Share of self-attention mass from action queries onto each token group at τ=0.4 (mean over heads/blocks).</figcaption></figure>',
|
| 317 |
+
f' <figure>{stage2_attention_figure(eval_data)}<figcaption><b>Figure A4 — Stage-2 attention routing.</b> Action-query mass over F6 / VQ-history / deform / coarse-memory tokens during real cascaded refinement.</figcaption></figure>',
|
| 318 |
+
sensitivity_table(eval_data),
|
| 319 |
+
findings_html,
|
| 320 |
+
' </section>\n',
|
| 321 |
+
]
|
| 322 |
+
return "\n".join(parts)
|
| 323 |
+
|
| 324 |
+
|
| 325 |
+
if __name__ == "__main__":
|
| 326 |
+
eval_path = sys.argv[1] if len(sys.argv) > 1 else \
|
| 327 |
+
"/scratch1/home/zhicao/dreamzero/ablation_runs/eval_part1.json"
|
| 328 |
+
eval_data = json.load(open(eval_path))
|
| 329 |
+
section = build_section(eval_data)
|
| 330 |
+
out = TOOLS.parent / "ablation_section_preview.html"
|
| 331 |
+
out.write_text(section)
|
| 332 |
+
print(f"wrote {out} ({len(section)} chars)")
|
scripts/eval/trex_ablation_eval.py
CHANGED
|
@@ -562,6 +562,7 @@ def main() -> None:
|
|
| 562 |
key: [float(np.mean(v)), float(np.std(v)), len(v)]
|
| 563 |
for key, v in openloop.items()
|
| 564 |
}
|
|
|
|
| 565 |
record["openloop_action_mse_split"] = {
|
| 566 |
key: float(np.mean(v)) for key, v in split_metrics.items()
|
| 567 |
}
|
|
|
|
| 562 |
key: [float(np.mean(v)), float(np.std(v)), len(v)]
|
| 563 |
for key, v in openloop.items()
|
| 564 |
}
|
| 565 |
+
record["openloop_action_mse_raw"] = openloop
|
| 566 |
record["openloop_action_mse_split"] = {
|
| 567 |
key: float(np.mean(v)) for key, v in split_metrics.items()
|
| 568 |
}
|