Skip to content

Releases: fbkaragoz/synapse

v0.1.0 — Initial Release (2025-12-13)

13 Dec 10:18

Choose a tag to compare

Pre-release

Overview

First public release of Synapse: a real-time, low-overhead visualization system for neural network activations during PyTorch training.

Core Features

Backend (C++ Extension)

  • Binary WebSocket protocol with 32-byte fixed header and typed payloads
  • Lock-free ring buffer for sub-5% training overhead
  • uWebSockets-based broadcast server with background threading
  • Layer topology inference and metadata streaming (NF_MSG_MODEL_META)
  • Sparse activation filtering with configurable threshold
  • Live control messages for runtime parameter adjustment

Frontend (SvelteKit + Three.js)

  • Deterministic grid-based layer visualization (no random scatter)
  • Auto-framing camera with orbit controls
  • Macro view: layer summary blocks with mean/max intensity
  • Micro view: sparse neuron particles rendered on-demand
  • Real-time control panel (threshold, theme, bloom effects)
  • WebAssembly packet parser (Rust) for off-main-thread processing

Simulator

  • Llama-8B-like multi-layer activation generator
  • Configurable architecture (layers, d_model, d_ff)
  • Per-block emission modes: attn+mlp, attn+mlp+residual, residual
  • Adjustable FPS and activation threshold

Protocol

  • Version: 1
  • Magic: 0x574C464E ("NFLW")
  • Message Types:
    • NF_MSG_LAYER_SUMMARY_BATCH — Macro layer statistics
    • NF_MSG_SPARSE_ACTIVATIONS — Thresholded neuron activations
    • NF_MSG_CONTROL — Bidirectional configuration
    • NF_MSG_MODEL_META — Layer topology metadata

Known Limitations

  • No attention pattern visualization (planned for v0.2.0)
  • Training overhead not validated on real models (simulator only)
  • No packet recording/playback functionality
  • Reconnection requires manual page refresh
  • Single-client testing only (multi-client broadcast untested)

Requirements

  • Backend: Python 3.9+, CMake 3.15+, C++17 compiler
  • Frontend: Node.js 18+, npm 9+
  • Wasm: Rust 1.70+ with wasm32-unknown-unknown target

Installation

# Backend extension
pip install -e backend_extension --no-build-isolation

# Wasm parser
cd wasm_parser && wasm-pack build --target web

# Frontend
cd frontend_dashboard && npm install && npm run dev

Quick Start

# Terminal 1: Start simulator
./backend_extension/python/run_simulate_llama8b.sh \
  --per-block attn+mlp+residual \
  --threshold 0.6 \
  --fps 5

# Terminal 2: Start dashboard
npm -C frontend_dashboard run dev
# Open http://localhost:5173

License

CDLI Non-Commercial Open Source License - Version 2.0, 2025


Full Changelog: Initial release

Full Changelog: https://github.com/fbkaragoz/synapse/commits/v0.1.0