SPB Git

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.

Swift 95.7% Shell 4.3%

History of ForgeStudio/Services/RunSupervisor.swift · clear filter

  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 5 days ago (Aug 5, 2026) · 1 file changed +35 −5
  2. 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 5 days ago (Aug 5, 2026) · 1 file changed +36 −1
  3. 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 5 days ago (Aug 5, 2026) · 1 file changed +158