docs(dashboard): add how-to-read guide per panel
This commit is contained in:
@@ -1,363 +1,369 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1400" height="1720" viewBox="0 0 1400 1720" font-family="sans-serif">
|
||||
<rect width="1400" height="1720" fill="white"/>
|
||||
<text x="700" y="32" text-anchor="middle" font-size="21" font-weight="bold">SAC-LSTM campaign dashboard - live run (current only)</text>
|
||||
<text x="700" y="56" text-anchor="middle" font-size="12" fill="#555">generated 2026-08-24 09:22:32 - auto-reloads every 60 s (open this file in Chrome)</text>
|
||||
<text x="700" y="56" text-anchor="middle" font-size="12" fill="#555">generated 2026-08-24 09:24:45 - auto-reloads every 60 s (open this file in Chrome)</text>
|
||||
<text x="70" y="100" font-size="15" font-weight="bold">Test matches - win % vs opponents</text>
|
||||
<text x="70" y="115" font-size="11" fill="#555">raw dots = single test matches, thick = rolling-mean-10</text>
|
||||
<line x1="70" y1="720.0" x2="697" y2="720.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="600.0" x2="697" y2="600.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="480.0" x2="697" y2="480.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="360.0" x2="697" y2="360.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="240.0" x2="697" y2="240.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="120.0" x2="697" y2="120.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="720" x2="697" y2="720" stroke="black"/>
|
||||
<line x1="70" y1="720" x2="70" y2="120" stroke="black"/>
|
||||
<line x1="70.0" y1="720" x2="70.0" y2="724" stroke="black"/>
|
||||
<text x="70.0" y="737" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="114.8" y1="720" x2="114.8" y2="724" stroke="black"/>
|
||||
<text x="114.8" y="737" text-anchor="middle" font-size="11">2</text>
|
||||
<line x1="159.6" y1="720" x2="159.6" y2="724" stroke="black"/>
|
||||
<text x="159.6" y="737" text-anchor="middle" font-size="11">3</text>
|
||||
<line x1="204.4" y1="720" x2="204.4" y2="724" stroke="black"/>
|
||||
<text x="204.4" y="737" text-anchor="middle" font-size="11">4</text>
|
||||
<line x1="249.1" y1="720" x2="249.1" y2="724" stroke="black"/>
|
||||
<text x="249.1" y="737" text-anchor="middle" font-size="11">5</text>
|
||||
<line x1="293.9" y1="720" x2="293.9" y2="724" stroke="black"/>
|
||||
<text x="293.9" y="737" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="338.7" y1="720" x2="338.7" y2="724" stroke="black"/>
|
||||
<text x="338.7" y="737" text-anchor="middle" font-size="11">7</text>
|
||||
<line x1="383.5" y1="720" x2="383.5" y2="724" stroke="black"/>
|
||||
<text x="383.5" y="737" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="428.3" y1="720" x2="428.3" y2="724" stroke="black"/>
|
||||
<text x="428.3" y="737" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="473.1" y1="720" x2="473.1" y2="724" stroke="black"/>
|
||||
<text x="473.1" y="737" text-anchor="middle" font-size="11">10</text>
|
||||
<line x1="517.9" y1="720" x2="517.9" y2="724" stroke="black"/>
|
||||
<text x="517.9" y="737" text-anchor="middle" font-size="11">11</text>
|
||||
<line x1="562.6" y1="720" x2="562.6" y2="724" stroke="black"/>
|
||||
<text x="562.6" y="737" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="607.4" y1="720" x2="607.4" y2="724" stroke="black"/>
|
||||
<text x="607.4" y="737" text-anchor="middle" font-size="11">13</text>
|
||||
<line x1="652.2" y1="720" x2="652.2" y2="724" stroke="black"/>
|
||||
<text x="652.2" y="737" text-anchor="middle" font-size="11">14</text>
|
||||
<line x1="697.0" y1="720" x2="697.0" y2="724" stroke="black"/>
|
||||
<text x="697.0" y="737" text-anchor="middle" font-size="11">15</text>
|
||||
<line x1="66" y1="720.0" x2="70" y2="720.0" stroke="black"/>
|
||||
<text x="63" y="724.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="66" y1="600.0" x2="70" y2="600.0" stroke="black"/>
|
||||
<text x="63" y="604.0" text-anchor="end" font-size="11">20</text>
|
||||
<line x1="66" y1="480.0" x2="70" y2="480.0" stroke="black"/>
|
||||
<text x="63" y="484.0" text-anchor="end" font-size="11">40</text>
|
||||
<line x1="66" y1="360.0" x2="70" y2="360.0" stroke="black"/>
|
||||
<text x="63" y="364.0" text-anchor="end" font-size="11">60</text>
|
||||
<line x1="66" y1="240.0" x2="70" y2="240.0" stroke="black"/>
|
||||
<text x="63" y="244.0" text-anchor="end" font-size="11">80</text>
|
||||
<line x1="66" y1="120.0" x2="70" y2="120.0" stroke="black"/>
|
||||
<text x="63" y="124.0" text-anchor="end" font-size="11">100</text>
|
||||
<text x="383" y="753" text-anchor="middle" font-size="12">test match number (each opponent)</text>
|
||||
<text x="16" y="420" text-anchor="middle" font-size="12" transform="rotate(-90 16 420)">win rate (%)</text>
|
||||
<circle cx="70.0" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="660.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="720.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<polyline points="70.0,720.0 114.8,720.0 159.6,720.0 204.4,720.0 249.1,720.0 293.9,720.0 338.7,720.0 383.5,720.0 428.3,720.0 473.1,720.0 517.9,720.0 562.6,714.0 607.4,714.0 652.2,714.0 697.0,714.0" fill="none" stroke="#d62728" stroke-width="3.5" opacity="1.0"/>
|
||||
<circle cx="70.0" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="720.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="480.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="240.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="660.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<polyline points="70.0,720.0 114.8,720.0 159.6,720.0 204.4,720.0 249.1,720.0 293.9,720.0 338.7,720.0 383.5,720.0 428.3,720.0 473.1,720.0 517.9,720.0 562.6,696.0 607.4,648.0 652.2,642.0" fill="none" stroke="#1f77b4" stroke-width="3.5" opacity="1.0"/>
|
||||
<circle cx="70.0" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="720.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="660.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<polyline points="70.0,720.0 114.8,720.0 159.6,720.0 204.4,720.0 249.1,720.0 293.9,720.0 338.7,720.0 383.5,720.0 428.3,720.0 473.1,720.0 517.9,720.0 562.6,720.0 607.4,720.0 652.2,714.0" fill="none" stroke="#2ca02c" stroke-width="3.5" opacity="1.0"/>
|
||||
<line x1="82" y1="772" x2="110" y2="772" stroke="#d62728" stroke-width="3"/>
|
||||
<text x="116" y="776" font-size="12">Corners - 15 evals</text>
|
||||
<line x1="82" y1="790" x2="110" y2="790" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="116" y="794" font-size="12">Crazy - 14 evals</text>
|
||||
<line x1="82" y1="808" x2="110" y2="808" stroke="#2ca02c" stroke-width="3"/>
|
||||
<text x="116" y="812" font-size="12">Target - 14 evals</text>
|
||||
<text x="70" y="133" font-size="12" font-style="italic" fill="#555">What: How often the bot wins against each opponent in test battles.</text>
|
||||
<text x="70" y="149" font-size="12" font-style="italic" fill="#555">Axes: X = training progress (match number); Y = win rate, 0-100%.</text>
|
||||
<text x="70" y="165" font-size="12" font-style="italic" fill="#555">Better: higher is better.</text>
|
||||
<line x1="70" y1="784.0" x2="697" y2="784.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="664.0" x2="697" y2="664.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="544.0" x2="697" y2="544.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="424.0" x2="697" y2="424.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="304.0" x2="697" y2="304.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="184.0" x2="697" y2="184.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="784" x2="697" y2="784" stroke="black"/>
|
||||
<line x1="70" y1="784" x2="70" y2="184" stroke="black"/>
|
||||
<line x1="70.0" y1="784" x2="70.0" y2="788" stroke="black"/>
|
||||
<text x="70.0" y="801" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="114.8" y1="784" x2="114.8" y2="788" stroke="black"/>
|
||||
<text x="114.8" y="801" text-anchor="middle" font-size="11">2</text>
|
||||
<line x1="159.6" y1="784" x2="159.6" y2="788" stroke="black"/>
|
||||
<text x="159.6" y="801" text-anchor="middle" font-size="11">3</text>
|
||||
<line x1="204.4" y1="784" x2="204.4" y2="788" stroke="black"/>
|
||||
<text x="204.4" y="801" text-anchor="middle" font-size="11">4</text>
|
||||
<line x1="249.1" y1="784" x2="249.1" y2="788" stroke="black"/>
|
||||
<text x="249.1" y="801" text-anchor="middle" font-size="11">5</text>
|
||||
<line x1="293.9" y1="784" x2="293.9" y2="788" stroke="black"/>
|
||||
<text x="293.9" y="801" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="338.7" y1="784" x2="338.7" y2="788" stroke="black"/>
|
||||
<text x="338.7" y="801" text-anchor="middle" font-size="11">7</text>
|
||||
<line x1="383.5" y1="784" x2="383.5" y2="788" stroke="black"/>
|
||||
<text x="383.5" y="801" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="428.3" y1="784" x2="428.3" y2="788" stroke="black"/>
|
||||
<text x="428.3" y="801" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="473.1" y1="784" x2="473.1" y2="788" stroke="black"/>
|
||||
<text x="473.1" y="801" text-anchor="middle" font-size="11">10</text>
|
||||
<line x1="517.9" y1="784" x2="517.9" y2="788" stroke="black"/>
|
||||
<text x="517.9" y="801" text-anchor="middle" font-size="11">11</text>
|
||||
<line x1="562.6" y1="784" x2="562.6" y2="788" stroke="black"/>
|
||||
<text x="562.6" y="801" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="607.4" y1="784" x2="607.4" y2="788" stroke="black"/>
|
||||
<text x="607.4" y="801" text-anchor="middle" font-size="11">13</text>
|
||||
<line x1="652.2" y1="784" x2="652.2" y2="788" stroke="black"/>
|
||||
<text x="652.2" y="801" text-anchor="middle" font-size="11">14</text>
|
||||
<line x1="697.0" y1="784" x2="697.0" y2="788" stroke="black"/>
|
||||
<text x="697.0" y="801" text-anchor="middle" font-size="11">15</text>
|
||||
<line x1="66" y1="784.0" x2="70" y2="784.0" stroke="black"/>
|
||||
<text x="63" y="788.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="66" y1="664.0" x2="70" y2="664.0" stroke="black"/>
|
||||
<text x="63" y="668.0" text-anchor="end" font-size="11">20</text>
|
||||
<line x1="66" y1="544.0" x2="70" y2="544.0" stroke="black"/>
|
||||
<text x="63" y="548.0" text-anchor="end" font-size="11">40</text>
|
||||
<line x1="66" y1="424.0" x2="70" y2="424.0" stroke="black"/>
|
||||
<text x="63" y="428.0" text-anchor="end" font-size="11">60</text>
|
||||
<line x1="66" y1="304.0" x2="70" y2="304.0" stroke="black"/>
|
||||
<text x="63" y="308.0" text-anchor="end" font-size="11">80</text>
|
||||
<line x1="66" y1="184.0" x2="70" y2="184.0" stroke="black"/>
|
||||
<text x="63" y="188.0" text-anchor="end" font-size="11">100</text>
|
||||
<text x="383" y="817" text-anchor="middle" font-size="12">test match number (each opponent)</text>
|
||||
<text x="16" y="484" text-anchor="middle" font-size="12" transform="rotate(-90 16 484)">win rate (%)</text>
|
||||
<circle cx="70.0" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="724.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="784.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<polyline points="70.0,784.0 114.8,784.0 159.6,784.0 204.4,784.0 249.1,784.0 293.9,784.0 338.7,784.0 383.5,784.0 428.3,784.0 473.1,784.0 517.9,784.0 562.6,778.0 607.4,778.0 652.2,778.0 697.0,778.0" fill="none" stroke="#d62728" stroke-width="3.5" opacity="1.0"/>
|
||||
<circle cx="70.0" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="784.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="544.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="304.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="724.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="364.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<polyline points="70.0,784.0 114.8,784.0 159.6,784.0 204.4,784.0 249.1,784.0 293.9,784.0 338.7,784.0 383.5,784.0 428.3,784.0 473.1,784.0 517.9,784.0 562.6,760.0 607.4,712.0 652.2,706.0 697.0,664.0" fill="none" stroke="#1f77b4" stroke-width="3.5" opacity="1.0"/>
|
||||
<circle cx="70.0" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="784.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="724.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="544.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<polyline points="70.0,784.0 114.8,784.0 159.6,784.0 204.4,784.0 249.1,784.0 293.9,784.0 338.7,784.0 383.5,784.0 428.3,784.0 473.1,784.0 517.9,784.0 562.6,784.0 607.4,784.0 652.2,778.0 697.0,754.0" fill="none" stroke="#2ca02c" stroke-width="3.5" opacity="1.0"/>
|
||||
<line x1="82" y1="836" x2="110" y2="836" stroke="#d62728" stroke-width="3"/>
|
||||
<text x="116" y="840" font-size="12">Corners - 15 evals</text>
|
||||
<line x1="82" y1="854" x2="110" y2="854" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="116" y="858" font-size="12">Crazy - 15 evals</text>
|
||||
<line x1="82" y1="872" x2="110" y2="872" stroke="#2ca02c" stroke-width="3"/>
|
||||
<text x="116" y="876" font-size="12">Target - 15 evals</text>
|
||||
<text x="747" y="100" font-size="15" font-weight="bold">Training losses (log) & alpha (linear)</text>
|
||||
<text x="747" y="115" font-size="11" fill="#555">training_metrics.jsonl - big early spikes are normal</text>
|
||||
<line x1="747" y1="720.0" x2="1329" y2="720.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="570.0" x2="1329" y2="570.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="420.0" x2="1329" y2="420.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="270.0" x2="1329" y2="270.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="120.0" x2="1329" y2="120.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="720" x2="1329" y2="720" stroke="black"/>
|
||||
<line x1="747" y1="720" x2="747" y2="120" stroke="black"/>
|
||||
<line x1="747.0" y1="720" x2="747.0" y2="724" stroke="black"/>
|
||||
<text x="747.0" y="737" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="892.5" y1="720" x2="892.5" y2="724" stroke="black"/>
|
||||
<text x="892.5" y="737" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="1038.0" y1="720" x2="1038.0" y2="724" stroke="black"/>
|
||||
<text x="1038.0" y="737" text-anchor="middle" font-size="11">16</text>
|
||||
<line x1="1183.5" y1="720" x2="1183.5" y2="724" stroke="black"/>
|
||||
<text x="1183.5" y="737" text-anchor="middle" font-size="11">23</text>
|
||||
<line x1="1329.0" y1="720" x2="1329.0" y2="724" stroke="black"/>
|
||||
<text x="1329.0" y="737" text-anchor="middle" font-size="11">30</text>
|
||||
<line x1="743" y1="720.0" x2="747" y2="720.0" stroke="black"/>
|
||||
<text x="740" y="724.0" text-anchor="end" font-size="11">0.01</text>
|
||||
<line x1="743" y1="570.0" x2="747" y2="570.0" stroke="black"/>
|
||||
<text x="740" y="574.0" text-anchor="end" font-size="11">0.1</text>
|
||||
<line x1="743" y1="420.0" x2="747" y2="420.0" stroke="black"/>
|
||||
<text x="740" y="424.0" text-anchor="end" font-size="11">1</text>
|
||||
<line x1="743" y1="270.0" x2="747" y2="270.0" stroke="black"/>
|
||||
<text x="740" y="274.0" text-anchor="end" font-size="11">10</text>
|
||||
<line x1="743" y1="120.0" x2="747" y2="120.0" stroke="black"/>
|
||||
<text x="740" y="124.0" text-anchor="end" font-size="11">100</text>
|
||||
<text x="1038" y="753" text-anchor="middle" font-size="12">metric line number</text>
|
||||
<text x="16" y="420" text-anchor="middle" font-size="12" transform="rotate(-90 16 420)">loss (log)</text>
|
||||
<polyline points="747.0,281.9 767.1,253.6 787.1,243.9 807.2,213.5 827.3,207.6 847.3,386.8 867.4,424.4 887.5,307.1 907.6,293.6 927.6,282.6 947.7,242.7 967.8,171.4 987.8,158.6 1007.9,169.7 1028.0,191.2 1048.0,253.6 1068.1,327.8 1088.2,625.2 1108.2,506.4 1128.3,374.2 1148.4,425.9 1168.4,351.1 1188.5,357.9 1208.6,330.0 1228.7,251.4 1248.7,339.4 1268.8,331.4 1288.9,283.3 1308.9,320.4 1329.0,339.4" fill="none" stroke="#1f77b4" stroke-width="1.8" opacity="1.0"/>
|
||||
<polyline points="747.0,348.9 767.1,307.9 787.1,284.5 807.2,261.3 827.3,244.2 847.3,235.2 867.4,236.5 887.5,241.4 907.6,270.7 927.6,292.4 947.7,378.9 967.8,302.9 987.8,277.7 1007.9,264.4 1028.0,254.8 1048.0,246.5 1068.1,242.0 1088.2,251.8 1108.2,262.0 1128.3,273.4 1148.4,295.3 1168.4,327.5 1188.5,335.9 1208.6,438.0 1228.7,400.5 1248.7,500.9 1268.8,390.5 1288.9,329.2 1308.9,316.2 1329.0,311.3" fill="none" stroke="#ff7f0e" stroke-width="1.8" opacity="1.0"/>
|
||||
<line x1="747" y1="720.0" x2="1329" y2="720.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="570.0" x2="1329" y2="570.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="420.0" x2="1329" y2="420.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="270.0" x2="1329" y2="270.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="120.0" x2="1329" y2="120.0" stroke="#e9dcf5"/>
|
||||
<line x1="1329" y1="720" x2="1329" y2="120" stroke="#9467bd"/>
|
||||
<line x1="1329" y1="720.0" x2="1333" y2="720.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="724.0" font-size="11" fill="#9467bd">0</text>
|
||||
<line x1="1329" y1="570.0" x2="1333" y2="570.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="574.0" font-size="11" fill="#9467bd">0.25</text>
|
||||
<line x1="1329" y1="420.0" x2="1333" y2="420.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="424.0" font-size="11" fill="#9467bd">0.5</text>
|
||||
<line x1="1329" y1="270.0" x2="1333" y2="270.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="274.0" font-size="11" fill="#9467bd">0.75</text>
|
||||
<line x1="1329" y1="120.0" x2="1333" y2="120.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="124.0" font-size="11" fill="#9467bd">1</text>
|
||||
<text x="1346" y="420" text-anchor="middle" font-size="12" fill="#9467bd" transform="rotate(90 1346 420)">alpha</text>
|
||||
<polyline points="747.0,120.2 767.1,120.9 787.1,121.6 807.2,122.3 827.3,123.1 847.3,123.8 867.4,124.1 887.5,124.5 907.6,125.2 927.6,125.6 947.7,126.3 967.8,126.9 987.8,126.1 1007.9,125.4 1028.0,124.7 1048.0,124.0 1068.1,123.3 1088.2,122.6 1108.2,121.9 1128.3,121.2 1148.4,121.7 1168.4,122.4 1188.5,123.2 1208.6,123.9 1228.7,124.6 1248.7,126.0 1268.8,126.7 1288.9,127.4 1308.9,128.1 1329.0,128.5" fill="none" stroke="#9467bd" stroke-width="1.8" opacity="1.0"/>
|
||||
<line x1="759" y1="772" x2="787" y2="772" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="793" y="776" font-size="12">critic_loss</text>
|
||||
<line x1="759" y1="790" x2="787" y2="790" stroke="#ff7f0e" stroke-width="3"/>
|
||||
<text x="793" y="794" font-size="12">|actor_loss|</text>
|
||||
<line x1="759" y1="808" x2="787" y2="808" stroke="#9467bd" stroke-width="3"/>
|
||||
<text x="793" y="812" font-size="12">alpha</text>
|
||||
<text x="747" y="133" font-size="12" font-style="italic" fill="#555">What: How well the brain is learning: losses should fall; alpha sets explore/exploit.</text>
|
||||
<text x="747" y="149" font-size="12" font-style="italic" fill="#555">Axes: X = training progress; left Y (log) = losses; right Y (linear) = alpha.</text>
|
||||
<text x="747" y="165" font-size="12" font-style="italic" fill="#555">Better: lower losses = better; alpha falls over time as the bot gets confident.</text>
|
||||
<line x1="747" y1="784.0" x2="1329" y2="784.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="634.0" x2="1329" y2="634.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="484.0" x2="1329" y2="484.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="334.0" x2="1329" y2="334.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="184.0" x2="1329" y2="184.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="784" x2="1329" y2="784" stroke="black"/>
|
||||
<line x1="747" y1="784" x2="747" y2="184" stroke="black"/>
|
||||
<line x1="747.0" y1="784" x2="747.0" y2="788" stroke="black"/>
|
||||
<text x="747.0" y="801" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="892.5" y1="784" x2="892.5" y2="788" stroke="black"/>
|
||||
<text x="892.5" y="801" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="1038.0" y1="784" x2="1038.0" y2="788" stroke="black"/>
|
||||
<text x="1038.0" y="801" text-anchor="middle" font-size="11">16</text>
|
||||
<line x1="1183.5" y1="784" x2="1183.5" y2="788" stroke="black"/>
|
||||
<text x="1183.5" y="801" text-anchor="middle" font-size="11">24</text>
|
||||
<line x1="1329.0" y1="784" x2="1329.0" y2="788" stroke="black"/>
|
||||
<text x="1329.0" y="801" text-anchor="middle" font-size="11">32</text>
|
||||
<line x1="743" y1="784.0" x2="747" y2="784.0" stroke="black"/>
|
||||
<text x="740" y="788.0" text-anchor="end" font-size="11">0.01</text>
|
||||
<line x1="743" y1="634.0" x2="747" y2="634.0" stroke="black"/>
|
||||
<text x="740" y="638.0" text-anchor="end" font-size="11">0.1</text>
|
||||
<line x1="743" y1="484.0" x2="747" y2="484.0" stroke="black"/>
|
||||
<text x="740" y="488.0" text-anchor="end" font-size="11">1</text>
|
||||
<line x1="743" y1="334.0" x2="747" y2="334.0" stroke="black"/>
|
||||
<text x="740" y="338.0" text-anchor="end" font-size="11">10</text>
|
||||
<line x1="743" y1="184.0" x2="747" y2="184.0" stroke="black"/>
|
||||
<text x="740" y="188.0" text-anchor="end" font-size="11">100</text>
|
||||
<text x="1038" y="817" text-anchor="middle" font-size="12">metric line number</text>
|
||||
<text x="16" y="484" text-anchor="middle" font-size="12" transform="rotate(-90 16 484)">loss (log)</text>
|
||||
<polyline points="747.0,345.9 765.8,317.6 784.5,307.9 803.3,277.5 822.1,271.6 840.9,450.8 859.6,488.4 878.4,371.1 897.2,357.6 916.0,346.6 934.7,306.7 953.5,235.4 972.3,222.6 991.1,233.7 1009.8,255.2 1028.6,317.6 1047.4,391.8 1066.2,689.2 1084.9,570.4 1103.7,438.2 1122.5,489.9 1141.3,415.1 1160.0,421.9 1178.8,394.0 1197.6,315.4 1216.4,403.4 1235.1,395.4 1253.9,347.3 1272.7,384.4 1291.5,403.4 1310.2,359.6 1329.0,281.5" fill="none" stroke="#1f77b4" stroke-width="1.8" opacity="1.0"/>
|
||||
<polyline points="747.0,412.9 765.8,371.9 784.5,348.5 803.3,325.3 822.1,308.2 840.9,299.2 859.6,300.5 878.4,305.4 897.2,334.7 916.0,356.4 934.7,442.9 953.5,366.9 972.3,341.7 991.1,328.4 1009.8,318.8 1028.6,310.5 1047.4,306.0 1066.2,315.8 1084.9,326.0 1103.7,337.4 1122.5,359.3 1141.3,391.5 1160.0,399.9 1178.8,502.0 1197.6,464.5 1216.4,564.9 1235.1,454.5 1253.9,393.2 1272.7,380.2 1291.5,375.3 1310.2,353.3 1329.0,352.2" fill="none" stroke="#ff7f0e" stroke-width="1.8" opacity="1.0"/>
|
||||
<line x1="747" y1="784.0" x2="1329" y2="784.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="634.0" x2="1329" y2="634.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="484.0" x2="1329" y2="484.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="334.0" x2="1329" y2="334.0" stroke="#e9dcf5"/>
|
||||
<line x1="747" y1="184.0" x2="1329" y2="184.0" stroke="#e9dcf5"/>
|
||||
<line x1="1329" y1="784" x2="1329" y2="184" stroke="#9467bd"/>
|
||||
<line x1="1329" y1="784.0" x2="1333" y2="784.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="788.0" font-size="11" fill="#9467bd">0</text>
|
||||
<line x1="1329" y1="634.0" x2="1333" y2="634.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="638.0" font-size="11" fill="#9467bd">0.25</text>
|
||||
<line x1="1329" y1="484.0" x2="1333" y2="484.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="488.0" font-size="11" fill="#9467bd">0.5</text>
|
||||
<line x1="1329" y1="334.0" x2="1333" y2="334.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="338.0" font-size="11" fill="#9467bd">0.75</text>
|
||||
<line x1="1329" y1="184.0" x2="1333" y2="184.0" stroke="#9467bd"/>
|
||||
<text x="1336" y="188.0" font-size="11" fill="#9467bd">1</text>
|
||||
<text x="1346" y="484" text-anchor="middle" font-size="12" fill="#9467bd" transform="rotate(90 1346 484)">alpha</text>
|
||||
<polyline points="747.0,184.2 765.8,184.9 784.5,185.6 803.3,186.3 822.1,187.1 840.9,187.8 859.6,188.1 878.4,188.5 897.2,189.2 916.0,189.6 934.7,190.3 953.5,190.9 972.3,190.1 991.1,189.4 1009.8,188.7 1028.6,188.0 1047.4,187.3 1066.2,186.6 1084.9,185.9 1103.7,185.2 1122.5,185.7 1141.3,186.4 1160.0,187.2 1178.8,187.9 1197.6,188.6 1216.4,190.0 1235.1,190.7 1253.9,191.4 1272.7,192.1 1291.5,192.5 1310.2,192.4 1329.0,192.1" fill="none" stroke="#9467bd" stroke-width="1.8" opacity="1.0"/>
|
||||
<line x1="759" y1="836" x2="787" y2="836" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="793" y="840" font-size="12">critic_loss</text>
|
||||
<line x1="759" y1="854" x2="787" y2="854" stroke="#ff7f0e" stroke-width="3"/>
|
||||
<text x="793" y="858" font-size="12">|actor_loss|</text>
|
||||
<line x1="759" y1="872" x2="787" y2="872" stroke="#9467bd" stroke-width="3"/>
|
||||
<text x="793" y="876" font-size="12">alpha</text>
|
||||
<text x="70" y="940" font-size="15" font-weight="bold">Throughput - games per hour</text>
|
||||
<text x="70" y="955" font-size="11" fill="#555">method: training_metrics.jsonl 'epoch' deltas; 1 row = one 10-game chunk</text>
|
||||
<line x1="70" y1="1428.0" x2="697" y2="1428.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1310.5" x2="697" y2="1310.5" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1193.0" x2="697" y2="1193.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1075.5" x2="697" y2="1075.5" stroke="#dddddd"/>
|
||||
<line x1="70" y1="958.0" x2="697" y2="958.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1428" x2="697" y2="1428" stroke="black"/>
|
||||
<line x1="70" y1="1428" x2="70" y2="958" stroke="black"/>
|
||||
<line x1="92.4" y1="1428" x2="92.4" y2="1432" stroke="black"/>
|
||||
<text x="92.4" y="1445" text-anchor="middle" font-size="11">2</text>
|
||||
<line x1="137.2" y1="1428" x2="137.2" y2="1432" stroke="black"/>
|
||||
<text x="137.2" y="1445" text-anchor="middle" font-size="11">4</text>
|
||||
<line x1="182.0" y1="1428" x2="182.0" y2="1432" stroke="black"/>
|
||||
<text x="182.0" y="1445" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="226.8" y1="1428" x2="226.8" y2="1432" stroke="black"/>
|
||||
<text x="226.8" y="1445" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="271.5" y1="1428" x2="271.5" y2="1432" stroke="black"/>
|
||||
<text x="271.5" y="1445" text-anchor="middle" font-size="11">10</text>
|
||||
<line x1="316.3" y1="1428" x2="316.3" y2="1432" stroke="black"/>
|
||||
<text x="316.3" y="1445" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="361.1" y1="1428" x2="361.1" y2="1432" stroke="black"/>
|
||||
<text x="361.1" y="1445" text-anchor="middle" font-size="11">14</text>
|
||||
<line x1="405.9" y1="1428" x2="405.9" y2="1432" stroke="black"/>
|
||||
<text x="405.9" y="1445" text-anchor="middle" font-size="11">16</text>
|
||||
<line x1="450.7" y1="1428" x2="450.7" y2="1432" stroke="black"/>
|
||||
<text x="450.7" y="1445" text-anchor="middle" font-size="11">18</text>
|
||||
<line x1="495.5" y1="1428" x2="495.5" y2="1432" stroke="black"/>
|
||||
<text x="495.5" y="1445" text-anchor="middle" font-size="11">20</text>
|
||||
<line x1="540.2" y1="1428" x2="540.2" y2="1432" stroke="black"/>
|
||||
<text x="540.2" y="1445" text-anchor="middle" font-size="11">22</text>
|
||||
<line x1="585.0" y1="1428" x2="585.0" y2="1432" stroke="black"/>
|
||||
<text x="585.0" y="1445" text-anchor="middle" font-size="11">24</text>
|
||||
<line x1="629.8" y1="1428" x2="629.8" y2="1432" stroke="black"/>
|
||||
<text x="629.8" y="1445" text-anchor="middle" font-size="11">26</text>
|
||||
<line x1="674.6" y1="1428" x2="674.6" y2="1432" stroke="black"/>
|
||||
<text x="674.6" y="1445" text-anchor="middle" font-size="11">28</text>
|
||||
<line x1="66" y1="1428.0" x2="70" y2="1428.0" stroke="black"/>
|
||||
<text x="63" y="1432.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="66" y1="1310.5" x2="70" y2="1310.5" stroke="black"/>
|
||||
<text x="63" y="1314.5" text-anchor="end" font-size="11">1653</text>
|
||||
<line x1="66" y1="1193.0" x2="70" y2="1193.0" stroke="black"/>
|
||||
<text x="63" y="1197.0" text-anchor="end" font-size="11">3305</text>
|
||||
<line x1="66" y1="1075.5" x2="70" y2="1075.5" stroke="black"/>
|
||||
<text x="63" y="1079.5" text-anchor="end" font-size="11">4958</text>
|
||||
<line x1="66" y1="958.0" x2="70" y2="958.0" stroke="black"/>
|
||||
<text x="63" y="962.0" text-anchor="end" font-size="11">6611</text>
|
||||
<text x="383" y="1461" text-anchor="middle" font-size="12">chunk interval (10-game chunks)</text>
|
||||
<text x="16" y="1193" text-anchor="middle" font-size="12" transform="rotate(-90 16 1193)">games / hour</text>
|
||||
<circle cx="70.0" cy="1159.8" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="92.4" cy="1413.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="114.8" cy="1148.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="137.2" cy="1404.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="159.6" cy="1153.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="182.0" cy="1399.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="204.4" cy="1000.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="226.8" cy="1399.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="249.1" cy="1021.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="271.5" cy="1394.8" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="293.9" cy="1376.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="316.3" cy="1394.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="338.7" cy="1130.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="361.1" cy="1399.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="1176.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="405.9" cy="1402.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="428.3" cy="1158.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="450.7" cy="1400.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="473.1" cy="1149.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="495.5" cy="1400.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="517.9" cy="1171.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="540.2" cy="1405.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="562.6" cy="1162.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="585.0" cy="1416.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="607.4" cy="1375.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="629.8" cy="1415.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="652.2" cy="1162.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="674.6" cy="1415.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="1075.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<polyline points="70.0,1286.6 92.4,1276.3 137.2,1276.6 159.6,1200.1 204.4,1208.1 226.8,1385.3 249.1,1264.9 293.9,1289.2 316.3,1279.0 361.1,1149.2 383.5,1400.6 428.3,1171.7 450.7,1405.2 495.5,1162.2 517.9,1416.5 540.2,1375.5 585.0,1415.7 607.4,1162.0 652.2,1415.1 674.6,1075.1" fill="none" stroke="#2ca02c" stroke-width="3.5" opacity="1.0"/>
|
||||
<text x="70" y="973" font-size="12" font-style="italic" fill="#555">What: How many games per hour the bot trains (its learning speed).</text>
|
||||
<text x="70" y="989" font-size="12" font-style="italic" fill="#555">Axes: X = training progress (10-game chunks); Y = games per hour.</text>
|
||||
<text x="70" y="1005" font-size="12" font-style="italic" fill="#555">Better: higher = faster learning; a steady line beats a spiky one.</text>
|
||||
<line x1="70" y1="1494.0" x2="697" y2="1494.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1376.5" x2="697" y2="1376.5" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1259.0" x2="697" y2="1259.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1141.5" x2="697" y2="1141.5" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1024.0" x2="697" y2="1024.0" stroke="#dddddd"/>
|
||||
<line x1="70" y1="1494" x2="697" y2="1494" stroke="black"/>
|
||||
<line x1="70" y1="1494" x2="70" y2="1024" stroke="black"/>
|
||||
<line x1="111.8" y1="1494" x2="111.8" y2="1498" stroke="black"/>
|
||||
<text x="111.8" y="1511" text-anchor="middle" font-size="11">3</text>
|
||||
<line x1="174.5" y1="1494" x2="174.5" y2="1498" stroke="black"/>
|
||||
<text x="174.5" y="1511" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="237.2" y1="1494" x2="237.2" y2="1498" stroke="black"/>
|
||||
<text x="237.2" y="1511" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="299.9" y1="1494" x2="299.9" y2="1498" stroke="black"/>
|
||||
<text x="299.9" y="1511" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="362.6" y1="1494" x2="362.6" y2="1498" stroke="black"/>
|
||||
<text x="362.6" y="1511" text-anchor="middle" font-size="11">15</text>
|
||||
<line x1="425.3" y1="1494" x2="425.3" y2="1498" stroke="black"/>
|
||||
<text x="425.3" y="1511" text-anchor="middle" font-size="11">18</text>
|
||||
<line x1="488.0" y1="1494" x2="488.0" y2="1498" stroke="black"/>
|
||||
<text x="488.0" y="1511" text-anchor="middle" font-size="11">21</text>
|
||||
<line x1="550.7" y1="1494" x2="550.7" y2="1498" stroke="black"/>
|
||||
<text x="550.7" y="1511" text-anchor="middle" font-size="11">24</text>
|
||||
<line x1="613.4" y1="1494" x2="613.4" y2="1498" stroke="black"/>
|
||||
<text x="613.4" y="1511" text-anchor="middle" font-size="11">27</text>
|
||||
<line x1="676.1" y1="1494" x2="676.1" y2="1498" stroke="black"/>
|
||||
<text x="676.1" y="1511" text-anchor="middle" font-size="11">30</text>
|
||||
<line x1="66" y1="1494.0" x2="70" y2="1494.0" stroke="black"/>
|
||||
<text x="63" y="1498.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="66" y1="1376.5" x2="70" y2="1376.5" stroke="black"/>
|
||||
<text x="63" y="1380.5" text-anchor="end" font-size="11">1653</text>
|
||||
<line x1="66" y1="1259.0" x2="70" y2="1259.0" stroke="black"/>
|
||||
<text x="63" y="1263.0" text-anchor="end" font-size="11">3305</text>
|
||||
<line x1="66" y1="1141.5" x2="70" y2="1141.5" stroke="black"/>
|
||||
<text x="63" y="1145.5" text-anchor="end" font-size="11">4958</text>
|
||||
<line x1="66" y1="1024.0" x2="70" y2="1024.0" stroke="black"/>
|
||||
<text x="63" y="1028.0" text-anchor="end" font-size="11">6611</text>
|
||||
<text x="383" y="1527" text-anchor="middle" font-size="12">chunk interval (10-game chunks)</text>
|
||||
<text x="16" y="1259" text-anchor="middle" font-size="12" transform="rotate(-90 16 1259)">games / hour</text>
|
||||
<circle cx="70.0" cy="1225.8" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="90.9" cy="1479.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="111.8" cy="1214.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="132.7" cy="1470.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="153.6" cy="1219.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="174.5" cy="1465.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="195.4" cy="1066.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="216.3" cy="1465.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="237.2" cy="1087.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="258.1" cy="1460.8" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="279.0" cy="1442.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="299.9" cy="1460.4" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="320.8" cy="1196.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="341.7" cy="1465.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="362.6" cy="1242.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="383.5" cy="1468.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="404.4" cy="1224.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="425.3" cy="1466.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="446.2" cy="1215.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="467.1" cy="1466.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="488.0" cy="1237.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="508.9" cy="1471.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="529.8" cy="1228.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="550.7" cy="1482.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="571.6" cy="1441.5" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="592.5" cy="1481.7" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="613.4" cy="1228.0" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="634.3" cy="1481.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="655.2" cy="1141.1" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="676.1" cy="1481.6" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<circle cx="697.0" cy="1141.2" r="1.6" fill="#7f7f7f" opacity="0.25"/>
|
||||
<polyline points="70.0,1352.6 90.9,1342.3 132.7,1342.6 153.6,1266.1 195.4,1274.1 237.2,1451.3 258.1,1330.9 299.9,1355.2 320.8,1345.0 362.6,1340.9 383.5,1354.5 425.3,1228.2 446.2,1482.5 488.0,1441.5 508.9,1481.7 550.7,1228.0 592.5,1481.1 613.4,1141.1 655.2,1481.6 676.1,1141.2" fill="none" stroke="#2ca02c" stroke-width="3.5" opacity="1.0"/>
|
||||
<text x="747" y="940" font-size="15" font-weight="bold">Max score per eval cycle</text>
|
||||
<text x="747" y="955" font-size="11" fill="#555">campaign_v4_stdout.log - max of the 10 deterministic round scores per eval</text>
|
||||
<line x1="747" y1="1428.0" x2="1375" y2="1428.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1310.5" x2="1375" y2="1310.5" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1193.0" x2="1375" y2="1193.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1075.5" x2="1375" y2="1075.5" stroke="#dddddd"/>
|
||||
<line x1="747" y1="958.0" x2="1375" y2="958.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1428" x2="1375" y2="1428" stroke="black"/>
|
||||
<line x1="747" y1="1428" x2="747" y2="958" stroke="black"/>
|
||||
<line x1="747.0" y1="1428" x2="747.0" y2="1432" stroke="black"/>
|
||||
<text x="747.0" y="1445" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="791.9" y1="1428" x2="791.9" y2="1432" stroke="black"/>
|
||||
<text x="791.9" y="1445" text-anchor="middle" font-size="11">2</text>
|
||||
<line x1="836.7" y1="1428" x2="836.7" y2="1432" stroke="black"/>
|
||||
<text x="836.7" y="1445" text-anchor="middle" font-size="11">3</text>
|
||||
<line x1="881.6" y1="1428" x2="881.6" y2="1432" stroke="black"/>
|
||||
<text x="881.6" y="1445" text-anchor="middle" font-size="11">4</text>
|
||||
<line x1="926.4" y1="1428" x2="926.4" y2="1432" stroke="black"/>
|
||||
<text x="926.4" y="1445" text-anchor="middle" font-size="11">5</text>
|
||||
<line x1="971.3" y1="1428" x2="971.3" y2="1432" stroke="black"/>
|
||||
<text x="971.3" y="1445" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="1016.1" y1="1428" x2="1016.1" y2="1432" stroke="black"/>
|
||||
<text x="1016.1" y="1445" text-anchor="middle" font-size="11">7</text>
|
||||
<line x1="1061.0" y1="1428" x2="1061.0" y2="1432" stroke="black"/>
|
||||
<text x="1061.0" y="1445" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="1105.9" y1="1428" x2="1105.9" y2="1432" stroke="black"/>
|
||||
<text x="1105.9" y="1445" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="1150.7" y1="1428" x2="1150.7" y2="1432" stroke="black"/>
|
||||
<text x="1150.7" y="1445" text-anchor="middle" font-size="11">10</text>
|
||||
<line x1="1195.6" y1="1428" x2="1195.6" y2="1432" stroke="black"/>
|
||||
<text x="1195.6" y="1445" text-anchor="middle" font-size="11">11</text>
|
||||
<line x1="1240.4" y1="1428" x2="1240.4" y2="1432" stroke="black"/>
|
||||
<text x="1240.4" y="1445" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="1285.3" y1="1428" x2="1285.3" y2="1432" stroke="black"/>
|
||||
<text x="1285.3" y="1445" text-anchor="middle" font-size="11">13</text>
|
||||
<line x1="1330.1" y1="1428" x2="1330.1" y2="1432" stroke="black"/>
|
||||
<text x="1330.1" y="1445" text-anchor="middle" font-size="11">14</text>
|
||||
<line x1="1375.0" y1="1428" x2="1375.0" y2="1432" stroke="black"/>
|
||||
<text x="1375.0" y="1445" text-anchor="middle" font-size="11">15</text>
|
||||
<line x1="743" y1="1428.0" x2="747" y2="1428.0" stroke="black"/>
|
||||
<text x="740" y="1432.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="743" y1="1310.5" x2="747" y2="1310.5" stroke="black"/>
|
||||
<text x="740" y="1314.5" text-anchor="end" font-size="11">52</text>
|
||||
<line x1="743" y1="1193.0" x2="747" y2="1193.0" stroke="black"/>
|
||||
<text x="740" y="1197.0" text-anchor="end" font-size="11">103</text>
|
||||
<line x1="743" y1="1075.5" x2="747" y2="1075.5" stroke="black"/>
|
||||
<text x="740" y="1079.5" text-anchor="end" font-size="11">155</text>
|
||||
<line x1="743" y1="958.0" x2="747" y2="958.0" stroke="black"/>
|
||||
<text x="740" y="962.0" text-anchor="end" font-size="11">207</text>
|
||||
<text x="1061" y="1461" text-anchor="middle" font-size="12">eval cycle number</text>
|
||||
<text x="16" y="1193" text-anchor="middle" font-size="12" transform="rotate(-90 16 1193)">best single-round score</text>
|
||||
<circle cx="747.0" cy="1259.8" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1200.7" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1359.8" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1396.2" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1398.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1357.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1391.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1357.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1391.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1378.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1362.1" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1278.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1291.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1425.7" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1375.0" cy="1291.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<polyline points="747.0,1259.8 791.9,1200.7 836.7,1359.8 881.6,1396.2 926.4,1398.5 971.3,1357.5 1016.1,1391.6 1061.0,1357.5 1105.9,1391.6 1150.7,1378.0 1195.6,1362.1 1240.4,1278.0 1285.3,1291.6 1330.1,1425.7 1375.0,1291.6" fill="none" stroke="#d62728" stroke-width="2.5" opacity="1.0"/>
|
||||
<circle cx="747.0" cy="1403.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1407.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1378.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1364.4" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1373.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1284.8" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1330.3" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1318.9" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1325.7" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1155.3" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1359.8" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1268.9" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1271.2" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1273.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<polyline points="747.0,1403.0 791.9,1407.5 836.7,1378.0 881.6,1364.4 926.4,1373.5 971.3,1284.8 1016.1,1330.3 1061.0,1318.9 1105.9,1325.7 1150.7,1155.3 1195.6,1359.8 1240.4,1268.9 1285.3,1271.2 1330.1,1273.5" fill="none" stroke="#1f77b4" stroke-width="2.5" opacity="1.0"/>
|
||||
<circle cx="747.0" cy="1218.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1223.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1218.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1348.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1400.7" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1359.8" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1000.7" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1355.3" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1368.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1278.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1307.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1309.8" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1291.6" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1198.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<polyline points="747.0,1218.9 791.9,1223.5 836.7,1218.9 881.6,1348.5 926.4,1400.7 971.3,1359.8 1016.1,1000.7 1061.0,1355.3 1105.9,1368.9 1150.7,1278.0 1195.6,1307.5 1240.4,1309.8 1285.3,1291.6 1330.1,1198.5" fill="none" stroke="#2ca02c" stroke-width="2.5" opacity="1.0"/>
|
||||
<polyline points="747.0,1218.9 791.9,1200.7 836.7,1218.9 881.6,1348.5 926.4,1373.5 971.3,1284.8 1016.1,1000.7 1061.0,1318.9 1105.9,1325.7 1150.7,1155.3 1195.6,1307.5 1240.4,1268.9 1285.3,1271.2 1330.1,1198.5 1375.0,1291.6" fill="none" stroke="#555555" stroke-width="2.5" opacity="1.0" stroke-dasharray="6 4"/>
|
||||
<line x1="759" y1="1480" x2="787" y2="1480" stroke="#d62728" stroke-width="3"/>
|
||||
<text x="793" y="1484" font-size="12">Corners - 15 evals</text>
|
||||
<line x1="759" y1="1498" x2="787" y2="1498" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="793" y="1502" font-size="12">Crazy - 14 evals</text>
|
||||
<line x1="759" y1="1516" x2="787" y2="1516" stroke="#2ca02c" stroke-width="3"/>
|
||||
<text x="793" y="1520" font-size="12">Target - 14 evals</text>
|
||||
<line x1="759" y1="1534" x2="787" y2="1534" stroke="#555555" stroke-width="3"/>
|
||||
<text x="793" y="1538" font-size="12">combined max</text>
|
||||
<rect x="0" y="1540" width="1400" height="180" fill="#f2f2f2"/>
|
||||
<text x="16" y="1561" font-size="15" font-weight="bold">How to read</text>
|
||||
<text x="1384" y="1560" text-anchor="end" font-size="11" fill="#666">Regenerate anytime: python3 tools/plot_progress.py</text>
|
||||
<text x="16" y="1583" font-size="13">Test matches: dots are single fights, thick line shows trend.</text>
|
||||
<text x="16" y="1600" font-size="13">Loss spikes are normal early; endless growth is bad.</text>
|
||||
<text x="16" y="1617" font-size="13">Throughput flat is healthy; dips mean something slowed.</text>
|
||||
<text x="16" y="1634" font-size="13">Max score: best single-round score the bot managed in that eval cycle.</text>
|
||||
<text x="16" y="1651" font-size="13">This file reloads itself in Chrome every sixty seconds.</text>
|
||||
<text x="16" y="1668" font-size="13">Regenerate anytime with tools/watch_dashboard.sh or the python command.</text>
|
||||
<text x="747" y="973" font-size="12" font-style="italic" fill="#555">What: Best single-round score the bot managed in each test cycle.</text>
|
||||
<text x="747" y="989" font-size="12" font-style="italic" fill="#555">Axes: X = eval cycle number; Y = best score achieved.</text>
|
||||
<text x="747" y="1005" font-size="12" font-style="italic" fill="#555">Better: higher is better; a rising trend means the bot is improving.</text>
|
||||
<line x1="747" y1="1494.0" x2="1375" y2="1494.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1376.5" x2="1375" y2="1376.5" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1259.0" x2="1375" y2="1259.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1141.5" x2="1375" y2="1141.5" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1024.0" x2="1375" y2="1024.0" stroke="#dddddd"/>
|
||||
<line x1="747" y1="1494" x2="1375" y2="1494" stroke="black"/>
|
||||
<line x1="747" y1="1494" x2="747" y2="1024" stroke="black"/>
|
||||
<line x1="747.0" y1="1494" x2="747.0" y2="1498" stroke="black"/>
|
||||
<text x="747.0" y="1511" text-anchor="middle" font-size="11">1</text>
|
||||
<line x1="791.9" y1="1494" x2="791.9" y2="1498" stroke="black"/>
|
||||
<text x="791.9" y="1511" text-anchor="middle" font-size="11">2</text>
|
||||
<line x1="836.7" y1="1494" x2="836.7" y2="1498" stroke="black"/>
|
||||
<text x="836.7" y="1511" text-anchor="middle" font-size="11">3</text>
|
||||
<line x1="881.6" y1="1494" x2="881.6" y2="1498" stroke="black"/>
|
||||
<text x="881.6" y="1511" text-anchor="middle" font-size="11">4</text>
|
||||
<line x1="926.4" y1="1494" x2="926.4" y2="1498" stroke="black"/>
|
||||
<text x="926.4" y="1511" text-anchor="middle" font-size="11">5</text>
|
||||
<line x1="971.3" y1="1494" x2="971.3" y2="1498" stroke="black"/>
|
||||
<text x="971.3" y="1511" text-anchor="middle" font-size="11">6</text>
|
||||
<line x1="1016.1" y1="1494" x2="1016.1" y2="1498" stroke="black"/>
|
||||
<text x="1016.1" y="1511" text-anchor="middle" font-size="11">7</text>
|
||||
<line x1="1061.0" y1="1494" x2="1061.0" y2="1498" stroke="black"/>
|
||||
<text x="1061.0" y="1511" text-anchor="middle" font-size="11">8</text>
|
||||
<line x1="1105.9" y1="1494" x2="1105.9" y2="1498" stroke="black"/>
|
||||
<text x="1105.9" y="1511" text-anchor="middle" font-size="11">9</text>
|
||||
<line x1="1150.7" y1="1494" x2="1150.7" y2="1498" stroke="black"/>
|
||||
<text x="1150.7" y="1511" text-anchor="middle" font-size="11">10</text>
|
||||
<line x1="1195.6" y1="1494" x2="1195.6" y2="1498" stroke="black"/>
|
||||
<text x="1195.6" y="1511" text-anchor="middle" font-size="11">11</text>
|
||||
<line x1="1240.4" y1="1494" x2="1240.4" y2="1498" stroke="black"/>
|
||||
<text x="1240.4" y="1511" text-anchor="middle" font-size="11">12</text>
|
||||
<line x1="1285.3" y1="1494" x2="1285.3" y2="1498" stroke="black"/>
|
||||
<text x="1285.3" y="1511" text-anchor="middle" font-size="11">13</text>
|
||||
<line x1="1330.1" y1="1494" x2="1330.1" y2="1498" stroke="black"/>
|
||||
<text x="1330.1" y="1511" text-anchor="middle" font-size="11">14</text>
|
||||
<line x1="1375.0" y1="1494" x2="1375.0" y2="1498" stroke="black"/>
|
||||
<text x="1375.0" y="1511" text-anchor="middle" font-size="11">15</text>
|
||||
<line x1="743" y1="1494.0" x2="747" y2="1494.0" stroke="black"/>
|
||||
<text x="740" y="1498.0" text-anchor="end" font-size="11">0</text>
|
||||
<line x1="743" y1="1376.5" x2="747" y2="1376.5" stroke="black"/>
|
||||
<text x="740" y="1380.5" text-anchor="end" font-size="11">52</text>
|
||||
<line x1="743" y1="1259.0" x2="747" y2="1259.0" stroke="black"/>
|
||||
<text x="740" y="1263.0" text-anchor="end" font-size="11">103</text>
|
||||
<line x1="743" y1="1141.5" x2="747" y2="1141.5" stroke="black"/>
|
||||
<text x="740" y="1145.5" text-anchor="end" font-size="11">155</text>
|
||||
<line x1="743" y1="1024.0" x2="747" y2="1024.0" stroke="black"/>
|
||||
<text x="740" y="1028.0" text-anchor="end" font-size="11">207</text>
|
||||
<text x="1061" y="1527" text-anchor="middle" font-size="12">eval cycle number</text>
|
||||
<text x="16" y="1259" text-anchor="middle" font-size="12" transform="rotate(-90 16 1259)">best single-round score</text>
|
||||
<circle cx="747.0" cy="1325.8" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1266.7" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1425.8" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1462.2" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1464.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1423.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1457.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1423.5" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1457.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1444.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1428.1" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1344.0" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1357.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1491.7" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<circle cx="1375.0" cy="1357.6" r="2" fill="#d62728" opacity="0.25"/>
|
||||
<polyline points="747.0,1325.8 791.9,1266.7 836.7,1425.8 881.6,1462.2 926.4,1464.5 971.3,1423.5 1016.1,1457.6 1061.0,1423.5 1105.9,1457.6 1150.7,1444.0 1195.6,1428.1 1240.4,1344.0 1285.3,1357.6 1330.1,1491.7 1375.0,1357.6" fill="none" stroke="#d62728" stroke-width="2.5" opacity="1.0"/>
|
||||
<circle cx="747.0" cy="1469.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1473.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1444.0" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1430.4" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1439.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1350.8" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1396.3" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1384.9" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1391.7" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1221.3" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1425.8" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1334.9" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1337.2" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1339.5" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<circle cx="1375.0" cy="1341.7" r="2" fill="#1f77b4" opacity="0.25"/>
|
||||
<polyline points="747.0,1469.0 791.9,1473.5 836.7,1444.0 881.6,1430.4 926.4,1439.5 971.3,1350.8 1016.1,1396.3 1061.0,1384.9 1105.9,1391.7 1150.7,1221.3 1195.6,1425.8 1240.4,1334.9 1285.3,1337.2 1330.1,1339.5 1375.0,1341.7" fill="none" stroke="#1f77b4" stroke-width="2.5" opacity="1.0"/>
|
||||
<circle cx="747.0" cy="1284.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="791.9" cy="1289.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="836.7" cy="1284.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="881.6" cy="1414.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="926.4" cy="1466.7" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="971.3" cy="1425.8" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1016.1" cy="1066.7" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1061.0" cy="1421.3" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1105.9" cy="1434.9" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1150.7" cy="1344.0" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1195.6" cy="1373.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1240.4" cy="1375.8" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1285.3" cy="1357.6" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1330.1" cy="1264.5" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<circle cx="1375.0" cy="1357.6" r="2" fill="#2ca02c" opacity="0.25"/>
|
||||
<polyline points="747.0,1284.9 791.9,1289.5 836.7,1284.9 881.6,1414.5 926.4,1466.7 971.3,1425.8 1016.1,1066.7 1061.0,1421.3 1105.9,1434.9 1150.7,1344.0 1195.6,1373.5 1240.4,1375.8 1285.3,1357.6 1330.1,1264.5 1375.0,1357.6" fill="none" stroke="#2ca02c" stroke-width="2.5" opacity="1.0"/>
|
||||
<polyline points="747.0,1284.9 791.9,1266.7 836.7,1284.9 881.6,1414.5 926.4,1439.5 971.3,1350.8 1016.1,1066.7 1061.0,1384.9 1105.9,1391.7 1150.7,1221.3 1195.6,1373.5 1240.4,1334.9 1285.3,1337.2 1330.1,1264.5 1375.0,1341.7" fill="none" stroke="#555555" stroke-width="2.5" opacity="1.0" stroke-dasharray="6 4"/>
|
||||
<line x1="759" y1="1546" x2="787" y2="1546" stroke="#d62728" stroke-width="3"/>
|
||||
<text x="793" y="1550" font-size="12">Corners - 15 evals</text>
|
||||
<line x1="759" y1="1564" x2="787" y2="1564" stroke="#1f77b4" stroke-width="3"/>
|
||||
<text x="793" y="1568" font-size="12">Crazy - 15 evals</text>
|
||||
<line x1="759" y1="1582" x2="787" y2="1582" stroke="#2ca02c" stroke-width="3"/>
|
||||
<text x="793" y="1586" font-size="12">Target - 15 evals</text>
|
||||
<line x1="759" y1="1600" x2="787" y2="1600" stroke="#555555" stroke-width="3"/>
|
||||
<text x="793" y="1604" font-size="12">combined max</text>
|
||||
<rect x="0" y="1640" width="1400" height="80" fill="#f2f2f2"/>
|
||||
<text x="16" y="1661" font-size="15" font-weight="bold">How to read</text>
|
||||
<text x="1384" y="1660" text-anchor="end" font-size="11" fill="#666">Regenerate anytime: python3 tools/plot_progress.py</text>
|
||||
<text x="16" y="1683" font-size="13">This file reloads itself in Chrome every sixty seconds.</text>
|
||||
<text x="16" y="1700" font-size="13">Regenerate anytime with tools/watch_dashboard.sh or the python command.</text>
|
||||
<script type="text/javascript"><![CDATA[ setTimeout(function(){ location.reload(); }, 60000); ]]></script>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 29 KiB |
@@ -46,15 +46,17 @@ ALPHA_C = "#9467bd" # alpha line on the losses panel
|
||||
RELOAD_JS = ('<script type="text/javascript"><![CDATA[ '
|
||||
'setTimeout(function(){ location.reload(); }, 60000); ]]></script>')
|
||||
W, H = 1400, 1720
|
||||
TITLE_H, GUIDE_H = 80, 180
|
||||
TITLE_H, GUIDE_H = 80, 80
|
||||
# rows: (header_y, panel_top_y, panel_bottom_y, x_left, x_right)
|
||||
# panel_top sits low enough to leave room under header+sub for the
|
||||
# per-panel how-to-read guide (3 italic lines, see panel_guide)
|
||||
C1_L, C1_R = 70, 697
|
||||
C2_L, C2_R = 747, 1375
|
||||
ROWS = {
|
||||
1: (100, 120, 720, C1_L, C1_R),
|
||||
2: (100, 120, 720, C2_L, C2_R),
|
||||
3: (940, 958, 1428, C1_L, C1_R),
|
||||
4: (940, 958, 1428, C2_L, C2_R),
|
||||
1: (100, 184, 784, C1_L, C1_R),
|
||||
2: (100, 184, 784, C2_L, C2_R),
|
||||
3: (940, 1024, 1494, C1_L, C1_R),
|
||||
4: (940, 1024, 1494, C2_L, C2_R),
|
||||
}
|
||||
PANEL_TITLES = [
|
||||
"Test matches - win % vs opponents",
|
||||
@@ -62,11 +64,22 @@ PANEL_TITLES = [
|
||||
"Throughput - games per hour",
|
||||
"Max score per eval cycle",
|
||||
]
|
||||
# per-panel how-to-read notes: (what it shows, axes, which direction is better)
|
||||
GUIDES = {
|
||||
1: ("How often the bot wins against each opponent in test battles.",
|
||||
"X = training progress (match number); Y = win rate, 0-100%.",
|
||||
"higher is better."),
|
||||
2: ("How well the brain is learning: losses should fall; alpha sets explore/exploit.",
|
||||
"X = training progress; left Y (log) = losses; right Y (linear) = alpha.",
|
||||
"lower losses = better; alpha falls over time as the bot gets confident."),
|
||||
3: ("How many games per hour the bot trains (its learning speed).",
|
||||
"X = training progress (10-game chunks); Y = games per hour.",
|
||||
"higher = faster learning; a steady line beats a spiky one."),
|
||||
4: ("Best single-round score the bot managed in each test cycle.",
|
||||
"X = eval cycle number; Y = best score achieved.",
|
||||
"higher is better; a rising trend means the bot is improving."),
|
||||
}
|
||||
GUIDE_LINES = [
|
||||
"Test matches: dots are single fights, thick line shows trend.",
|
||||
"Loss spikes are normal early; endless growth is bad.",
|
||||
"Throughput flat is healthy; dips mean something slowed.",
|
||||
"Max score: best single-round score the bot managed in that eval cycle.",
|
||||
"This file reloads itself in Chrome every sixty seconds.",
|
||||
"Regenerate anytime with tools/watch_dashboard.sh or the python command.",
|
||||
]
|
||||
@@ -289,6 +302,16 @@ def header(x, y, title, sub=None):
|
||||
return s
|
||||
|
||||
|
||||
def panel_guide(x0, y, guide):
|
||||
"""Italic how-to-read note between a panel's header and its plot area."""
|
||||
what, axes, better = guide
|
||||
s = ""
|
||||
for i, txt in enumerate((f"What: {what}", f"Axes: {axes}", f"Better: {better}")):
|
||||
s += (f'<text x="{x0}" y="{y + i * 16}" font-size="12" font-style="italic" '
|
||||
f'fill="#555">{esc(txt)}</text>\n')
|
||||
return s
|
||||
|
||||
|
||||
# ---------- panels ----------
|
||||
|
||||
def panel_test_matches(series, geo):
|
||||
@@ -455,21 +478,22 @@ def build_dashboard(campaign, metrics_f, out):
|
||||
f'(open this file in Chrome)</text>\n')
|
||||
|
||||
drawers = [
|
||||
(ROWS[1], PANEL_TITLES[0],
|
||||
(ROWS[1], PANEL_TITLES[0], GUIDES[1],
|
||||
"raw dots = single test matches, thick = rolling-mean-%d" % TREND_WINDOW,
|
||||
lambda: panel_test_matches(series, ROWS[1])),
|
||||
(ROWS[2], PANEL_TITLES[1],
|
||||
(ROWS[2], PANEL_TITLES[1], GUIDES[2],
|
||||
"training_metrics.jsonl - big early spikes are normal",
|
||||
lambda: panel_losses(rows, ROWS[2])),
|
||||
(ROWS[3], PANEL_TITLES[2],
|
||||
(ROWS[3], PANEL_TITLES[2], GUIDES[3],
|
||||
"method: training_metrics.jsonl 'epoch' deltas; 1 row = one 10-game chunk",
|
||||
lambda: panel_throughput(rows, ROWS[3])),
|
||||
(ROWS[4], PANEL_TITLES[3],
|
||||
(ROWS[4], PANEL_TITLES[3], GUIDES[4],
|
||||
"campaign_v4_stdout.log - max of the 10 deterministic round scores per eval",
|
||||
lambda: panel_max_score(maxes, ROWS[4])),
|
||||
]
|
||||
for geo, title, sub, drawer in drawers:
|
||||
for geo, title, guide, sub, drawer in drawers:
|
||||
s += header(geo[3], geo[0], title, sub)
|
||||
s += panel_guide(geo[3], geo[0] + 33, guide)
|
||||
s += drawer() or "" # panels bare-return None on their no-data path
|
||||
|
||||
s += guide_block(W, H, GUIDE_LINES)
|
||||
@@ -530,6 +554,10 @@ def selftest():
|
||||
assert text.count(PANEL_TITLES[0]) == 1
|
||||
assert "How to read" in text, "reading guide missing"
|
||||
assert 'width="1400"' in text and 'height="1720"' in text
|
||||
# every panel carries its own What/Axes/Better how-to-read note
|
||||
assert text.count("What:") == len(PANEL_TITLES), text.count("What:")
|
||||
for g in GUIDES.values():
|
||||
assert esc(g[0]) in text, f"panel guide missing: {g[0]}"
|
||||
# circles: 4 eval dots (panel 1) + 2 throughput rate dots (panel 3)
|
||||
# + 2 cycles x 2 opponents max-score dots (panel 4)
|
||||
assert text.count("<circle") == 10, text.count("<circle")
|
||||
|
||||
Reference in New Issue
Block a user