| <!doctype html><html><head><meta charset="utf-8"> |
| <title>Ledger needle β comparaciΓ³n</title><style> |
| :root { --bg:#11141a; --panel:#1a1f29; --text:#dde3ee; --dim:#8a93a6; --hit:#3fb96b; |
| --miss:#e05555; --line:#2a3140; --us:#16233a; } |
| * { box-sizing:border-box; margin:0 } body { background:var(--bg); color:var(--text); |
| font:14px/1.5 ui-monospace,Menlo,monospace; padding:24px; max-width:1240px; margin:0 auto } |
| h1 { font-size:18px } .sub { color:var(--dim); margin:4px 0 20px } |
| table { border-collapse:collapse; width:100%; margin-bottom:26px } |
| th, td { border:1px solid var(--line); padding:7px 10px; text-align:left; font-size:13px } |
| th { background:var(--panel); color:var(--dim); font-weight:normal; cursor:pointer; |
| user-select:none; white-space:nowrap } |
| th.sorted { color:var(--text) } th.sorted::after { content:' β' } |
| th.sorted.asc::after { content:' β' } |
| tr.us td { background:var(--us) } |
| td.hitcell { background:#173523; color:var(--hit); text-align:center; font-weight:bold } |
| td.misscell { background:#3a1d1d; color:var(--miss); text-align:center } |
| #matrix { width:auto } #matrix th, #matrix td { padding:5px 8px } |
| #matrix td.hitcell, #matrix td.misscell { width:36px; min-width:36px; padding:5px 0 } |
| #matrix th.sys { writing-mode:vertical-rl; transform:rotate(180deg); text-align:left; |
| vertical-align:bottom; max-height:190px; font-size:12px; cursor:default; padding:8px 4px } |
| #matrix th.sys.usc { color:#9fc4ea } |
| #matrix td.exp { white-space:nowrap } |
| .bar { display:inline-block; height:11px; background:var(--hit); border-radius:2px; |
| vertical-align:middle } .bar.m { background:var(--miss) } |
| h2 { font-size:14px; color:var(--dim); margin:22px 0 10px; text-transform:uppercase } |
| .caveats { background:var(--panel); border:1px solid var(--line); border-radius:8px; |
| padding:14px 18px; color:var(--dim); font-size:13px } .caveats li { margin:6px 0 0 18px } |
| .hint { color:var(--dim); font-size:12px; margin:-18px 0 10px } |
| </style></head><body> |
| <h1>Ledger needle β comparaciΓ³n hasta 1.5B</h1> |
| <div class="sub">100 turnos guionados (seed 21) Β· 15 hechos, 5 correcciones, 10 sondas a |
| distancia 3β96 Β· scoring por nΓΊcleo del valor, idΓ©ntico para todos Β· baselines con historia |
| completa, decoding greedy e instrucciΓ³n explΓcita de memoria</div> |
| <table id="summary"><thead><tr> |
| <th data-k="label" data-t="s">sistema</th> |
| <th data-k="params" data-t="n">tamaΓ±o (B)</th> |
| <th data-k="hits" data-t="n">recall</th> |
| <th data-k="d1" data-t="n">d 3β10</th> |
| <th data-k="d2" data-t="n">d 11β50</th> |
| <th data-k="d3" data-t="n">d 51+</th> |
| <th data-k="total" data-t="n">test total (s)</th> |
| <th data-k="per" data-t="n">s/turno</th> |
| <th data-k="prefix" data-t="n">prefijo mΓ‘x</th> |
| </tr></thead><tbody></tbody></table> |
| <div class="hint">click en una cabecera reordena; por defecto: mΓ‘s aciertos primero</div> |
| <h2>Sonda por sonda</h2> |
| <table id="matrix"><tr><th>turno</th><th>dist</th><th>esperado</th><th class="sys">Qwen2.5-1.5B-Instruct Β· full</th><th class="sys">Qwen3-0.6B + thinking Β· full</th><th class="sys usc">Marimo Diffusion (ledger, nuestro)</th><th class="sys">Qwen2.5-0.5B-Instruct Β· full</th><th class="sys">SmolLM2-360M-Instruct Β· full</th><th class="sys">TinyLlama-1.1B-Chat Β· full</th><th class="sys">Qwen3-0.6B + thinking Β· budget 512</th><th class="sys">Qwen3-0.6B sin thinking Β· full</th><th class="sys">Qwen3-0.6B sin thinking Β· budget 512</th></tr><tr><td>6</td><td>5</td><td class="exp">code 4805</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td></tr><tr><td>17</td><td>6</td><td class="exp">$6,400</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>28</td><td>3</td><td class="exp">7:15pm</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>61</td><td>57</td><td class="exp">harbor858</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>72</td><td>37</td><td class="exp">$4,000</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>83</td><td>47</td><td class="exp">day 97</td><td class="misscell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>94</td><td>83</td><td class="exp">$6,400</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>98</td><td>59</td><td class="exp">room 411</td><td class="hitcell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>99</td><td>60</td><td class="exp">room 411</td><td class="hitcell">β</td><td class="misscell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr><tr><td>100</td><td>96</td><td class="exp">harbor858</td><td class="hitcell">β</td><td class="hitcell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td><td class="misscell">β</td></tr></table> |
| <h2>Advertencias de lectura</h2> |
| <div class="caveats"><ul> |
| <li>Un solo seed y 10 sondas por sistema: las diferencias chicas son ruido; las grandes |
| sobreviven a ese margen.</li> |
| <li>La comparaciΓ³n mide el paquete mecanismo+entrenamiento: el sistema de ledger fue entrenado |
| en este registro conversacional y los baselines no. Muestra que el paquete funciona, no que el |
| mecanismo solo cause la diferencia.</li> |
| <li>Los baselines reciben la mayor ventaja razonable: historia completa en contexto, greedy, |
| instrucciΓ³n de memoria, y el modo thinking nativo donde existe. El sistema de ledger corre con |
| sampling a temperatura 0.7 y un prefijo constante de ~500 tokens.</li> |
| <li>El guion es sintΓ©tico y sus valores son arbitrarios por diseΓ±o; un valor sin sentido |
| ("day 97") puede penalizar a un modelo que se resiste a repetir datos absurdos.</li> |
| </ul></div> |
| <script> |
| const ROWS = [{"label": "Qwen2.5-1.5B-Instruct Β· full", "params": 1.54, "probes": 10, "hits": 9, "total": 76.74, "per": 0.7674, "prefix": 2881, "us": false, "d1": 3, "d1n": 3, "d2": 1, "d2n": 2, "d3": 5, "d3n": 5}, {"label": "Qwen3-0.6B + thinking Β· full", "params": 0.6, "probes": 10, "hits": 7, "total": 1318.3, "per": 13.183, "prefix": 4450, "us": false, "d1": 3, "d1n": 3, "d2": 1, "d2n": 2, "d3": 3, "d3n": 5}, {"label": "Marimo Diffusion (ledger, nuestro)", "params": 0.6, "probes": 10, "hits": 6, "total": 218.07, "per": 2.1807, "prefix": 625, "us": true, "d1": 3, "d1n": 3, "d2": 1, "d2n": 2, "d3": 2, "d3n": 5}, {"label": "Qwen2.5-0.5B-Instruct Β· full", "params": 0.49, "probes": 10, "hits": 4, "total": 110.34, "per": 1.1034, "prefix": 3908, "us": false, "d1": 2, "d1n": 3, "d2": 1, "d2n": 2, "d3": 1, "d3n": 5}, {"label": "SmolLM2-360M-Instruct Β· full", "params": 0.36, "probes": 10, "hits": 4, "total": 56.93, "per": 0.5693, "prefix": 2712, "us": false, "d1": 3, "d1n": 3, "d2": 1, "d2n": 2, "d3": 0, "d3n": 5}, {"label": "TinyLlama-1.1B-Chat Β· full", "params": 1.1, "probes": 10, "hits": 3, "total": 120.77, "per": 1.2077, "prefix": 5126, "us": false, "d1": 3, "d1n": 3, "d2": 0, "d2n": 2, "d3": 0, "d3n": 5}, {"label": "Qwen3-0.6B + thinking Β· budget 512", "params": 0.6, "probes": 10, "hits": 2, "total": 1337.49, "per": 13.3749, "prefix": 508, "us": false, "d1": 2, "d1n": 3, "d2": 0, "d2n": 2, "d3": 0, "d3n": 5}, {"label": "Qwen3-0.6B sin thinking Β· full", "params": 0.6, "probes": 10, "hits": 1, "total": 129.6, "per": 1.296, "prefix": 3722, "us": false, "d1": 1, "d1n": 3, "d2": 0, "d2n": 2, "d3": 0, "d3n": 5}, {"label": "Qwen3-0.6B sin thinking Β· budget 512", "params": 0.6, "probes": 10, "hits": 1, "total": 161.75, "per": 1.6175, "prefix": 512, "us": false, "d1": 1, "d1n": 3, "d2": 0, "d2n": 2, "d3": 0, "d3n": 5}]; |
| const tbody = document.querySelector('#summary tbody'); |
| let sortKey = 'hits', asc = false; |
| function fmt(r) { |
| return '<td><b>' + r.label + '</b></td><td>' + r.params.toFixed(2) + '</td>' + |
| '<td><b>' + r.hits + '/' + r.probes + '</b> <span class="bar" style="width:' + 6 * r.hits + |
| 'px"></span><span class="bar m" style="width:' + 6 * (r.probes - r.hits) + 'px"></span></td>' + |
| ['d1', 'd2', 'd3'].map(k => '<td>' + r[k] + '/' + r[k + 'n'] + '</td>').join('') + |
| '<td>' + r.total.toFixed(0) + '</td><td>' + r.per.toFixed(1) + '</td><td>' + r.prefix + '</td>'; |
| } |
| function draw() { |
| const rows = [...ROWS].sort((a, b) => { |
| const va = a[sortKey], vb = b[sortKey]; |
| const c = typeof va === 'string' ? va.localeCompare(vb) : va - vb; |
| return asc ? c : -c; |
| }); |
| tbody.innerHTML = rows.map(r => |
| '<tr' + (r.us ? ' class="us"' : '') + '>' + fmt(r) + '</tr>').join(''); |
| document.querySelectorAll('#summary th').forEach(th => { |
| th.classList.toggle('sorted', th.dataset.k === sortKey); |
| th.classList.toggle('asc', th.dataset.k === sortKey && asc); |
| }); |
| } |
| document.querySelectorAll('#summary th').forEach(th => th.onclick = () => { |
| if (sortKey === th.dataset.k) asc = !asc; |
| else { sortKey = th.dataset.k; asc = th.dataset.t === 's'; } |
| draw(); |
| }); |
| draw(); |
| </script></body></html> |