Methods

How the sweeps were run, what the numbers mean, and what to be careful about.

Models

modellayer steeredreference activation size
Qwen/Qwen2.5-7B-Instruct14 of 2867.3
Llama-3.1-8B-Instruct (unsloth’s ungated copy of Meta’s weights)16 of 3211.8
allenai/OLMo-2-1124-7B-Instruct16 of 3217.3
mistralai/Mistral-7B-Instruct-v0.316 of 326.2

All in bf16 on one RTX 4090, with greedy decoding and 80 new tokens per output. Outputs stop at 80 tokens, so many end mid-sentence; that is not the model trailing off.

Vectors

The 11 starter vectors (sycophancy, refusal, creativity, formality, verbosity, confidence, emotion, humor, optimism, curiosity, introspection) were extracted on each model by Modulo itself: the mean activation over each response under the vector’s “+” system prompt, minus the same under its “−” system prompt, at the middle layer. Qwen also has assistant_axis, from the community index. The pole system prompts are shown on the explore page.

The sweep

For each vector, four prompts: two chosen for that vector, plus “Introduce yourself in two sentences.” and “Describe a rainy Monday morning.” Each prompt was run:

Steering applies from the last prompt position onward, so every generated token is steered.

Strength

Strength 15 is a push as large as the median activation size of tokens the model generates unsteered at that layer. The sweeps on Qwen and Llama ran before Modulo adopted that definition, so their pushes were recorded in other units and converted with the reference sizes above.

Breakdown

A vector “breaks down” at the first push, in each direction, where averaged over its four prompts: the unsteered model’s NLL for the text is above 2, or any output is a repetition loop, or word-pair diversity falls below 0.5. This is cautious. Prompted text itself often scores NLL 1–4, and outputs often stay readable a step past the line. Treat breakdown strengths as “around here”, give or take a step of the sweep.

Caveats

Reproducing

Every output from the sweeps is in this site’s data files (/data/qwen.json, /data/llama.json, /data/olmo.json, /data/mistral.json), generated from the raw sweep results by scripts/build_data.py. Every quote on the site is looked up from those files when the site is built, so a quote that no longer matches the data stops the build. The sweep scripts themselves aren’t published yet.