Commit Graph
18 Commits
Author SHA1 Message Date
wassnameandClaudypoo 57c8d4b166 add clamp apply mode: pin v-component to C instead of accumulating
clamp: y += (C - <y,v_hat>)v_hat at all positions -- bounded perturbation
regardless of generation length, vs add's per-step accumulation via KV cache.
C=0 is directional ablation. Smoke (Qwen3-0.6B, happy/joy): clamp C=+20 stays
coherent and on-concept (drifts to 'happiness and joy of my childhood', in
Chinese) while add C=+8 already degenerates to 'joyjoyjoy...'.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 14:42:22 +08:00
wassname 474f74ac33 wip 2026-07-10 14:36:55 +08:00
wassnameandClaudypoo 265a0789c9 U4 step3: auto-resume wrapper to self-heal through user's GPU bursts
Three OOM kills (551/552/553) from the user's bursty live VS Code kernel, but
jlens resumes from checkpoint each time (n_done 36->45->64, monotonic). Rather
than predict the bursts, relaunch until exit 0. MAX_RETRIES=40 caps a genuine
no-progress bug; n_done logged per retry to distinguish OOM from a real crash.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 14:31:20 +08:00
wassnameandClaudypoo 4c93aaddb5 U4 step3: dim_batch 8->4 + expandable_segments after 2nd OOM
552 CUDA-OOM'd at n_done=45: the user's VS Code GPU kernel grew to 8.18GB
while this fit's 13.23GB hit the 23.5GB ceiling (44MB free, fragmentation).
dim_batch=4 shrinks the fit to ~10.5GB (polite co-tenant, leaves user ~13GB)
and expandable_segments:True defragments (the OOM's own suggestion). Still
only changes the backward schedule, not the Jacobian. Resumes from n_done=45.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 14:10:39 +08:00
wassnameandClaudypoo ebb912452d U4 step3: dim_batch 16->8 to survive OOM contention with user's VS Code kernel
Run 551 was OOM-killed at n_done=36: the user's VS Code Jupyter kernel
(jsteer venv, PID 3214401) co-loaded ~1.5GB VRAM + 1.9GB RAM while the fit
sat at the 22.4/24.6GB ceiling. Clean SIGKILL with no CUDA traceback = host
OOM killer, not a CUDA OOM. dim_batch=8 halves the fit's peak footprint;
it changes only the backward schedule, not the accumulated Jacobian, so U4
exactness is preserved. Resumes from checkpoint (n_done=36), lossless.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:56:17 +08:00
wassnameandClaudypoo beec9189da U4 step 2 PASS: jsteer VJP == regenerated run-524 vector, cos +1.000000 all 21 layers
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:20:53 +08:00
wassnameandClaudypoo 261a79ebdd fix: _to_vector forces CPU fp32 -- vjp path returned cuda Vectors, crashing U4 step-2 cosine vs cpu reference
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:19:54 +08:00
wassnameandClaudypoo 6f59986139 apply fresh-eyes UAT: jlens availability stated in README install, persona -C degeneration narrated honestly
U2 verdict: hello-world PASS verbatim zero-edit; fixes are the PARTIAL FAIL
(jlens admission was buried in a pyproject comment) and the notebook SHOULD
promising '-C more negative' when persona_vector at -2 actually degenerates.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:19:03 +08:00
wassnameandClaudypoo 2a05dbc799 U4 loop-close scripts: regenerate ref-524 vector, port check, 4B fit (pueue 549-551)
Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:13:50 +08:00
wassnameandClaudypoo 0e7126ba6e README: pitch, install, verbatim-tested hello-world, API table, evidence
Hello-world block extracted and run verbatim from repo root (passes).
Evidence section: 3/5 moral foundations vs norm-matched random on ONE
model/eval; persona variants marked experimental (failed specificity).

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:10:15 +08:00
wassnameandClaudypoo dbd526bed0 notebook: persona steering (EXPERIMENTAL framing, executed)
persona_vector and mean_diff baseline both move tone at C=2;
persona_topk is an honest null on this setup (both personas evoke the
same generic sentence starters, contrast=0) and the notebook says so.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:10:15 +08:00
wassnameandClaudypoo a2bf5c31a0 notebook: word steering hello-world (executed on real 0.6B cache)
C sweep shows coherence/strength tradeoff (C=1 fluent+happy, C=8 spam),
greedy+sampled at C=1, negative steering, lens_topk layer progression
(city slot -> candidates -> Paris), Vector save/load. Adds nbconvert to
notebooks extra; ignores notebook-produced safetensors.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:10:15 +08:00
wassnameandClaudypoo 4fb1cfd63e apply external review (deepseek): reject float bands post-fit, assert->ValueError, 2 clarifying comments
Review verdict APPROVE; rejected findings (empty-prompts guard = preemptive
defensive check, from_hf dedup = ms-scale, lm.forward swap = loses attention
mask on padded batches) documented in docs/reviews/code.md triage.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:05:27 +08:00
wassnameandClaudypoo e2a28a9c5d fit script: 64-prompt reproducible Qwen3-0.6B Jacobian cache
Hardcoded diverse web-text prompts (min 21 tokens), layers 0.3-0.9,
resumable checkpoint, saves artifacts/qwen3-0.6b.jac.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 13:03:18 +08:00
wassnameandClaudypoo f22bbeb0d2 parity(U1): cached-J pullback vs direct VJP, all layers cos>0.999
min cos 0.999801 (layer 8), rising to 0.999996; gap is fp16 cache
storage as expected. Gate PASS.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 12:52:18 +08:00
wassnameandClaudypoo 6bf51a75cc smoke: fit+steer Qwen3-0.6B on happy/joy end-to-end
+C collapses to "joy", -C to negative tone: sign correct. Coherence
breaks at |C|=8 uncalibrated, as expected.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 12:51:08 +08:00
wassnameandClaudypoo aa44834cb3 uv: switch to local editable path deps; add tabulate
jlens git source is not fetchable; both deps are locally co-developed.
tabulate is imported by steering_lite.calibrate at module load but only
declared in its test extras.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 12:48:47 +08:00
wassnameandClaudypoo 1f458fd53e core algo: Jacobian fit/cache/pullback (jlens) + word/persona vectors (steering-lite runtime)
Ported from the verified j-steer-dev experiment (word pullback beat random
on 3/5 moral foundations, Qwen3-4B n=3). jacobian.py wraps jlens fit/save/
load and derives steering vectors by CPU matvec against the cached J;
vjp.py is the one-backward parity path; applies.py registers the methods
and delivery modes into steering-lite.

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
2026-07-10 12:08:07 +08:00