#!/usr/bin/env python3 """Produce reproducible tables from completed cases, excluding loading pilots.""" import json,pathlib,statistics,sys root=pathlib.Path(sys.argv[1]); cases={} for p in sorted(root.glob('*/result.json')): d=json.loads(p.read_text()) if not d.get('finished') or d['case'].get('load_only'):continue samples=json.loads((p.parent/'gpu.json').read_text());peak={} for s in samples: for g in s.get('gpus',[]):peak[g['name']]=max(peak.get(g['name'],0),int(g['used'])) d['peak']=peak;cases[d['case']['label']]=d print('## Direkter Vergleich bei 32.768 Tokens Kontext\n') print('Ein Slot, nur RTX 5080, MTP3, Micro-Batch 512; gleiche Eingaben und Sampling. Mittelwerte der verfügbaren Wiederholungen.\n') print('| Messung | Pure | ByteShape | Änderung |\n|---|---:|---:|---:|') def values(model,key): out=[] for label in [model+'-single-32768',model+'-single-32768-repeat']: if label not in cases:continue d=cases[label] if key=='pp':out.append(d['prefill'][0]['response']['timings']['prompt_per_second']) elif key=='de':out.append(d['decode'][0]['timings']['predicted_per_second']) elif key=='code':out.append(d['decode'][1]['timings']['predicted_per_second']) return out for name,key in [('Prefill, 4.196 Eingabetokens (tok/s)','pp'),('Deutsche Erklärung (tok/s)','de'),('Python-Code (tok/s)','code')]: a,b=statistics.mean(values('pure',key)),statistics.mean(values('byteshape',key)) print(f'| {name} | {a:.1f} | {b:.1f} | {(b/a-1)*100:+.1f}% |') print('\n## Vollständig getestete Konfigurationen\n') print('Kontext ist Eingabe plus Ausgabe. Die Geschwindigkeit in dieser Tabelle gehört jeweils zur angegebenen tatsächlichen Eingabelänge; Zeilen unterschiedlicher Länge sind kein isolierter Quantisierungsvergleich. VRAM enthält auch residente Dienste (TTS auf der 3060).\n') print('| Fall | Kontext | Eingabe | Prefill tok/s | Ausgabe tok/s | 5080 MiB | 3060 MiB | Recall |\n|---|---:|---:|---:|---:|---:|---:|---|') for label,d in cases.items(): if not d.get('prefill'):continue p=d['prefill'][-1]['response'];t=p['timings'];r=p.get('recall',{}) print(f'| {label} | {d["case"]["ctx"]} | {t["prompt_n"]} | {t["prompt_per_second"]:.1f} | {t["predicted_per_second"]:.1f} | {d["peak"].get("NVIDIA GeForce RTX 5080",0)} | {d["peak"].get("NVIDIA GeForce RTX 3060",0)} | {sum(r.values())}/{len(r)} |') print('\nDie Kontextpiloten ohne lange Eingabe sind hier bewusst nicht als validierte Konfigurationen aufgeführt. Einzelne synthetische Recall-Aufgaben belegen keine allgemeine Langkontext-Intelligenz.')