Quazim0t0 commited on
Commit
11e87b2
·
verified ·
1 Parent(s): d5a32d6

Upload web/public/app.js with huggingface_hub

Browse files
Files changed (1) hide show
  1. web/public/app.js +9 -2
web/public/app.js CHANGED
@@ -589,9 +589,16 @@ function packGrad(step, whash, phash, loss, grad) {
589
  // shows up mid-run rather than never.
590
  const PROBE_EVERY = 25; // steps between probe refreshes
591
  let probeHash = 0, auditFailure = null;
 
 
 
 
 
 
 
592
  const gemmAudit = {
593
- cells: 6,
594
- due: () => Math.random() < 0.02, // ~2% of GEMMs, a few cells each
595
  fail: (msg) => { if (!auditFailure) { auditFailure = msg; log(`KERNEL AUDIT FAILED: ${msg}`); } },
596
  };
597
  async function refreshProbe() {
 
589
  // shows up mid-run rather than never.
590
  const PROBE_EVERY = 25; // steps between probe refreshes
591
  let probeHash = 0, auditFailure = null;
592
+ // Audit EVERY GEMM, not 2% of them. The old rate was chosen to bound overhead,
593
+ // but the overhead was never measured: an audit costs k multiply-adds per cell
594
+ // in JS, and at live shapes that is 2.8 us for 16 cells — auditing all ~10
595
+ // GEMMs of a step costs ~0.03 ms against a ~320 ms step, under 0.01%. The old
596
+ // 2%/6-cell setting sampled ~1.2 cells per step and bought nothing for it.
597
+ // 12 cells: the first 6 are the structural danger points (see auditTile's
598
+ // stratified sampling), the rest random.
599
  const gemmAudit = {
600
+ cells: 12,
601
+ due: () => true, // measured at <0.01% of a step
602
  fail: (msg) => { if (!auditFailure) { auditFailure = msg; log(`KERNEL AUDIT FAILED: ${msg}`); } },
603
  };
604
  async function refreshProbe() {