Blind Compute connecting…

Proving a piece of work was really used.

Every step of training is written into a tamper-evident log. Contributors get receipts, and anyone can audit a stretch of the run.

A receipt for the whole run

The server can be asked to prove what a model was made from. At the start it commits to three fingerprints: the training data, the architecture and the initial weights. Every training step then adds a record, chained to the one before it, that fixes which node results were used and what the model’s weights and optimizer state were afterwards. Change anything in the past and every later record stops matching.

  1. What data, what architecture. The fingerprints at the top of the panel pin both down. Anyone given the data and the architecture description can recompute them.
  2. Which work was used. A node can ask for its receipt: its result, plus a short path showing it is one of the results the server used in a given step. The proof is checked in your browser, not by the server.
  3. Were the server’s own steps honest? The nodes’ proofs cover the matrix products. For everything else the log is replayable: the audit button takes a saved checkpoint, re-runs the next stretch of training using the randomness the chain dictates, and compares the result to what the server committed to, bit for bit.
  4. What it does not prove. It shows the server did not rewrite history and that the audited stretches were honest. It cannot show that an unaudited stretch was, and a node’s random share says nothing about the model by itself, so “used” means “counted in that step’s record”.

This run’s receipt

Waiting for the server…
Download the ledger

To try it: add a node on the live demo page and press its “Receipt” button there. The check runs in that page, and the chain and audit buttons below work here.