Upload web/public/app.js with huggingface_hub
Browse files- 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:
|
| 594 |
-
due: () =>
|
| 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() {
|