Visual model surgery for CNNs.
Load a PyTorch model. See its weights as visual mass. Click a layer, ablate it, fork the model, run inference on both, and diff what changed: in the prediction and on the graph itself.
TODO: drop a 10 to 15 second GIF here showing load → click layer → ablate → fork → diff.
docs/demo.gif
| Step | Action |
|---|---|
| Load | Point it at a .pt / .pth checkpoint or a torchvision model name. |
| See | The graph renders with weight magnitude mapped to visual mass, so heavy layers look heavy. |
| Cut | Click a layer to zero it. No config file, no re-instantiation. |
| Fork | The edited model branches off the original. Both stay loaded. |
| Diff | Run the same input through both and compare outputs side by side, with changed regions highlighted on the graph. |
TODO: verify these against a clean clone before publishing.
# backend
cd server
uv venv && uv pip install -r requirements.txt
uvicorn app.main:app --reload
# frontend
cd web
npm install
npm run devOpen http://localhost:5173.
Backend: Python 3.14, PyTorch 2.12, FastAPI Frontend: Vite, React, TypeScript, Tailwind, d3 Models: CNNs first (torchvision ResNet, YOLO)
Nothing currently does load model → see it as visual mass → click → ablate → fork → re-run → diff.
| Tool | Interactive edits | GUI | Compares model variants |
|---|---|---|---|
| Netron | no | yes | no |
| nnsight | yes | no (notebook library) | partial |
| W&B / TensorBoard | no | yes | training runs, not variants |
| forkpoint | yes | yes | yes |
The gap is real. This fills it.
- Not a training tool. Inference only.
- Not a deployment tool. No ONNX export, no quantization.
- Not a TensorBoard replacement. Those compare training runs over time; this compares model variants live.
- Not architecture-general. Transformers are out of scope for v0.
| Version | Scope |
|---|---|
| v0 | Layer-zeroing as the single surgery primitive. CNNs only. |
| v0.1 | Per-channel and per-filter ablation. |
| v0.2 | Activation diffing on intermediate layers. |
| v0.3 | Real knowledge distillation between forked variants. |
Pre-alpha. Built incrementally, APIs change without notice, nothing is stable yet.
forkpoint is a working name. The repo directory is still KD tool for historical reasons.