[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3if2l88lxrz3x":3},{"code":4,"message":5,"data":6,"timestamp":62},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":32,"homepage":32,"updated_at":33,"history":34,"related":35},"lyramakesmusic\u002Fneuron-explorer",22,"Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results","Python",673,71,139,4,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},50233138,"Neuron Explorer for Qwen 4B",2,0,"2026-10-25","Pushes every MLP neuron in Qwen3.5-4B up and down and browses the rollouts in a 3D explorer.","Adopt it if you are already doing activation-steering research on a small open-weights model and have GPU time to spare; treat it as a research instrument, not a packaged product.\n\n## The problem\n\nYou want to know what an individual MLP neuron does, not just what a whole direction at layer 22 does. The usual loop is ad hoc: write a script that edits one neuron, run a few prompts, squint at generations, then throw the script away when you move on. Because nothing is archived per neuron and per dose, you cannot compare neuron 3501's three prompts against neuron 12000's six prompts two days later, and you have no baseline showing which effects are just noise.\n\nThis project changes that loop into a batch sweep plus a browser. Every MLP neuron in a selected layer is pushed both up and down on the same small prompt set, every rollout is written to disk with text, token ids, logprobs and top-k, and the explorer then lays those runs out over a 3D map of the model's layers. You get persistence and visual navigation instead of a one-off prompt.\n\n## What's different\n\nThe mechanism is the pairing of a full sweep with a control group and a downstream lens. `sweep\u002Frank.py` scores units by distinctive words and cluster mass against 256 random-direction controls, and `sweep\u002Fsteer_lens.py` records next-token logprob changes and KL for ±0.8 pushes on every neuron. That control comparison is the useful part: it gives you a way to tell a neuron with a repeatable effect from one that merely produced a flavourful sentence, without hand-reading 30k outputs.\n\nThe doses are fractions of the median residual norm leaving the layer, not raw activation deltas, so a +0.8 push is expressed relative to that layer's own scale. The README describes fixed prompt\u002Fdose grids such as `{who, snake, orange}` at −0.7 and +0.5\u002F+0.8 plus an unsteered baseline. The trade-off is that this is a dense, GPU-heavy sweep: every neuron times several prompts times several doses, with the steering fork of vLLM required. The explorer's live chat then loads Qwen3.5-4B locally for steering, lens and ablation work.\n\nOne thing to understand before investing: the sweeps, stats and cache files are inputs to the explorer. The shipped caches only cover what the author generated; your own layers need your own sweep runs in `runs\u002F` and `stats\u002F`. There is also a Claude panel that runs the `claude` CLI with the explorer as an MCP server, which reads neurons and can run the live model, move the map and use file tools and a shell in your home folder. That is a research assistant convenience, not a requirement for browsing existing runs.\n\n## Who should try it\n\nIt fits a mechanistic-interpretability researcher or a curious engineer who already has a CUDA pod, is comfortable with vLLM and Hugging Face internals, and wants to run dense neuron-level steering experiments on Qwen3.5-4B specifically. If you need to inspect one interesting neuron interactively, the three-column steered chat and per-neuron rollouts will save you from rebuilding that harness.\n\nIt is a poor fit for users who want a general-purpose interpretability tool for arbitrary models, or who expect to inspect effects without running the sweep. The explorer is built around Qwen3.5-4B and around data produced by these scripts; the README gives no model-agnostic path and no hosted version.\n\n## Requirements and limitations\n\nThe sweep path is explicit about its environment: a CUDA 13 GPU pod, the RhizoNymph\u002Fvllm steering fork, and `setup_pod.sh` writing an environment file. The explorer can load the model on MPS, CUDA or CPU, but the sweep is the heavy part. The repo declares no license, so check whether its terms suit your use before building on it.\n\nThe Claude panel has its own setup: the `claude` CLI must be installed and logged in, and the server description says it answers only pages and tools on this machine. The agent has file tools and a shell in your home folder, so treat that panel as code execution with access to your local files, not as a sandboxed chat. Ongoing upkeep is less about install and more about the research workflow: keeping runs, stats and cache directories consistent as you add layers, which the README only sketches through `merge_runs.py` and the depth report.\n\n## HotRepo's take\n\nHotRepo first tracked this repository on 2026-10-24 and observed it on the NEW-REPOSITORY board (python, not the overall Trending board) at #22 with 673 total stars on 2026-10-26. That is one dated snapshot of a four-day-old repo, not a daily growth series, so persistence cannot yet be judged. Before spending GPU hours, verify the one thing that determines fit: whether the sweep scripts accept the layer and stats layout your own data needs.\n\n[Project source and documentation](https:\u002F\u002Fgithub.com\u002Flyramakesmusic\u002Fneuron-explorer)",{"slug":25,"name":26},"machine-learning","Machine Learning",[28,29,30,31],"interpretability","mechanistic-interpretability","qwen","steering",null,"2026-10-26T00:46:16Z",[],[36,40,45,49,53,58],{"full_name":37,"one_liner":38,"language":10,"stars":39},"unslothai\u002Funsloth","A desktop app to run and fine-tune LLMs and diffusion models locally, aimed at people who want training without a cloud GPU.",78537,{"full_name":41,"one_liner":42,"language":43,"stars":44},"heterodoxin\u002FAbliteratedOutTheBox","A llama.cpp fork that strips refusals from supported models at inference time, leaving on-disk weights and benign prompts unchanged.","C++",104,{"full_name":46,"one_liner":47,"language":43,"stars":48},"NVIDIA\u002Fcutlass","A CUDA template and Python DSL library for writing high-performance GEMM and tensor-core kernels on NVIDIA GPUs.",10652,{"full_name":50,"one_liner":51,"language":43,"stars":52},"openvinotoolkit\u002Fopenvino","An inference toolkit for converting and running trained deep learning models on Intel CPUs, GPUs and NPUs.",11062,{"full_name":54,"one_liner":55,"language":56,"stars":57},"caveman-ai\u002Ftrim-1","A 1.2 MB line-selection model that trims agent context to the lines a query needs.","Go",188,{"full_name":59,"one_liner":60,"language":43,"stars":61},"ml-explore\u002Fmlx","A NumPy-style array framework with lazy execution and unified memory, built for training and running models on Apple silicon.",28920,1792984289]