SPB Git forge

spb/forge-studio

Public

The Instruments of LLM training — a native macOS cockpit for Forge. Train language models from scratch on Apple Silicon without a terminal.

5commits 1branches 1releases
1.9 MBsize
maindefault branch
1 mo agolast push
Swift 95.7% Shell 4.3%

page 1

  1. Wed, Aug 5, 2026 5

    1. v0.2.0: linked axes, clickable checkpoint marks, full variant form, exports, run queue
      …
      - ChartXState shared between the main chart and all secondary charts:
        zooming/panning up top moves every chart, and the hover crosshair is
        synchronized - secondary headers show the value AT the cursor
      - Checkpoint annotations on the loss chart (green dashed rules with a
        drive glyph); clicking one selects that checkpoint in the panel below
      - New Run form now covers EVERY Forge config field: attention/positions
        (rope theta/global/scaling, NoPE, head_dim, bias, softcap), norm
        placement, QAT, the full MoE section (V3 sigmoid/noaux/scaling/shared/
        first-k-dense), advanced optimizer (Muon, WSD, betas, forge_save/dtype)
      - Export menu: chart as 2x PNG (ImageRenderer), metrics as CSV
      - Run queue: starting a run while one is live persists it as "queued";
        the supervisor launches the oldest queued run when the active one
        exits - trainings never overlap, nothing is lost
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher committed 1 mo ago · 7 files +254 −18
    2. Add README
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher committed 1 mo ago · 1 file +128
    3. M5/M6/M7: Compare view, Datasets flow, icon, notifications, 200k stress test
      …
      - CompareView: 2-8 run overlay (val + optional train-EMA), X axis in
        steps / TOKENS (honest cross-batch-size axis) / wall-clock from
        elapsed_s, auto hyperparameter-diff legend (only differing fields),
        sortable summary table (params/best val/final ppl/mean tok-s/duration),
        CSV export
      - DatasetsView: token counts (bin headers), vocab, on-disk size; New
        Dataset sheet drives tools/prepare_data.py (TinyStories) or
        tools/prepare_hf_data.py (HF sources + research presets) with a live
        streamed console
      - Sidebar restructured: Studio (Comparer, Datasets) + Runs
      - Local notifications on run finish/fail (final loss / reason in body)
      - Generated app icon (forge-gradient + flame, full iconset -> icns),
        wired into the bundle
      - Stress test: 200k-line CSV ingest ~1.1s, LTTB+EMA snapshot <250ms —
        documented in RESEARCH.md §9
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher committed 1 mo ago · 21 files +595 −10
    4. M3/M4: interactive chart, checkpoints/generate/eval panel, crash recovery, watchdog
      …
      - TrainingChartView: hover crosshair with step/train/EMA/ppl/val callout,
        pinch-zoom + horizontal pan (chartScrollableAxes), follow-live pill that
        disengages on manual pan and re-pins to the latest data, double-click /
        fit reset, log-Y, best-val rule — replaces the static chart
      - CheckpointsPanel on finished runs: checkpoint list (step/size), Generate
        (prompt/temp/top-k, streamed output) and Eval (loss/ppl) via forge CLI
      - Crash recovery: runs persisted as active at launch are truthfully marked
        stopped, with the live-PID case called out; no lying states
      - Watchdog: 'possibly stalled' badge when a running run's log.csv stops
        growing for 30s
      - New Run: import/export Forge-compatible JSON configs
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher committed 1 mo ago · 6 files +475 −59
    5. Forge Studio M1: SwiftPM app skeleton, full config codec, run supervisor, live dashboard
      …
      - RESEARCH.md: ground-truth Forge contract (config schema incl. waves 1-3,
        CLI, log.csv grammar with elapsed_s, checkpoint/resume, signals)
      - ForgeConfig: byte-compatible Codable mirror of every model/train field,
        param-count formula cross-checked against forge info, LR-schedule math
      - Services: ProcessRunner (actor, line streaming), LogParser (header-driven
        CSV + stdout events), MetricsStore (actor, incremental CSV tail, LTTB
        snapshots), RunStore (atomic registry), RunSupervisor (state machine,
        launch/stop, 1 Hz ingest), ForgeBinaryLocator, SystemInfo
      - Charts: LTTB downsampler, bias-corrected EMA
      - UI: NavigationSplitView shell, run rows/badges, RunDetail dashboard
        (loss raw+EMA+val, log-Y, best-val marker, LR/tok-s/grad-norm secondary
        charts, console), New Run sheet (presets, derived panel, LR preview,
        inline validation), Settings with forge-info validation
      - scripts: package-app.sh (SPM -> .app, ad-hoc) and notarize.sh with the
        real zyquo-term identity (Team 3YM54G49SN, profile MacLustr-Notarize)
      - 8 tests green: config round-trip vs real configs, param count, LTTB,
        EMA, CSV/stdout parsers, state machine, LR preview
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher committed 1 mo ago · 25 files +2,227