Skip to content
View kaelvalen's full-sized avatar
😺
😺

Highlights

  • Pro

Block or report kaelvalen

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
kaelvalen/README.md

Mehmet Arda Hakbilen (kael valen)

I work on efficient sequence architectures and the infrastructure they run on. Ankara, Türkiye.

email · linkedin · kaelvalen.vercel.app

Now

My main project right now is trainscope, a post-mortem debugger for LLM training loss spikes. It started as a tool I needed during PRISM runs and has since become the focus: a CUSUM-based change-point detector catches gradual loss drift 5-20 steps before it turns into a full spike, validated with false-positive rate testing across 280+ held-out noise scenarios (0.0%) and sensitivity testing across drift magnitudes from 0.10σ to 0.50σ (100% detection). When a spike hits, the UI reconstructs the chronological failure cascade — which layer moved first, whether it was a distributional shift or a gradient explosion, and how many steps of warning were available before collapse.

Before this, I closed out NOESIS, a continual-learning system that tried to inject retrieved memory (via a Titans-style associative matrix + test-time training) directly into a frozen LLM's hidden states. The result was negative and I think worth stating plainly: a frozen backbone's hidden manifold cannot be given new semantic content by an untrained vector injection, no matter how carefully the geometry is aligned — verified across KV-cache-purge controls, negative controls, and a 50-fact automated benchmark (0% recall). Full writeup in FINDINGS.md.

Projects

  • trainscope — see above. Post-mortem debugger for LLM training loss spikes. FastAPI + React, CUSUM change-point detection, WandB auto-attach, on PyPI.
  • noesis — continual-learning experiment with frozen backbone + vector memory injection. Concluded negative result, documented in FINDINGS.md.
  • prism — hybrid linear-recurrent backbone: Mamba-2-style SSD blocks interleaved with Gated Delta Rule blocks, applied to 12-lead ECG (PTB-XL), Speech Commands, and sequential CIFAR-10. Paused — the pipeline is validated end-to-end but the full paper matrix was never run. Kept public as-is.
  • connor — terminal-native CI/CD runner in Rust. TOML config, DAG-parallel execution, no server.
  • latch-lang — my own programming language. Rust, on crates.io. Paused.
  • weave — local-first, plugin-based productivity app. Tauri + React + Rust.
  • nanonet — monitoring platform for distributed services: Go backend, Rust agents, React frontend, ~70k lines, built solo. Archived.
  • beyond_transformer — PULSE, the predecessor to PRISM. Kept public as a record of the design choices that led to the current one.

Stack

PyTorch for the ML work, with Triton when there's no way around it. Rust and Go for systems, TypeScript/React for frontends. My laptop runs NixOS, so a couple of repos here are just dotfiles.

GitHub metrics

Pinned Loading

  1. trainscope trainscope Public

    Post-mortem debugger for LLM training loss spikes. Records per-layer gradients, activations, and weight distributions — scrub back to the exact step that caused the divergence.

    Python

  2. latch-lang latch-lang Public

    A scripting language for local automation — a tree-walk interpreter and a bytecode VM (HIR, verifier, inline caches) behind one frontend.

    Rust 2

  3. prism prism Public

    Modality-portable hybrid sequence backbone (SSD + Gated Delta Rule) — one architecture for ECG, audio, and images

    Python 1

  4. noesis noesis Public

    Memory-centric inference system: frozen RWKV/Mamba backbone + Titans associative memory, test-time training, vector DB — learns at inference time

    Python