ablate 0 0 0

shehryars715/tone-slider

published by @shehryars715

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
219
Last 30 days
78
Likes
-
Size
1.6 MB
Created on HF
2026-09-09
Age
1 months ago

Description

The Tone Slider

Training-Free Tone Control in a Small Language Model via Contrastive Residual-Stream Intervention

📄 Read the paper (PDF, 37 pages)  · 

🎚️ Try the live demo

Tone — how blunt or how diplomatic a reply sounds — matters in customer

communication, but controlling it usually means prompt engineering, which is

discrete and hard to audit, or fine-tuning, which fixes the behaviour at training

time.

This is a third option. Take 50 blunt and 50 diplomatic… See the full description on the dataset page: https://huggingface.co/datasets/shehryars715/tone-slider.

Tags

language:enlicense:cc-by-4.0size_categories:n<1Kformat:textmodality:documentmodality:textlibrary:datasetslibrary:mlcroissantregion:usactivation-steeringinterpretabilityrepresentation-engineeringcontrollable-generationmechanistic-interpretability

README current version from Hugging Face


license: cc-by-4.0
tags:

  • activation-steering
  • interpretability
  • representation-engineering
  • controllable-generation
  • mechanistic-interpretability
    language:
  • en
    pretty_name: "The Tone Slider"

The Tone Slider

Training-Free Tone Control in a Small Language Model via Contrastive Residual-Stream Intervention

📄 Read the paper (PDF, 37 pages)  · 
🎚️ Try the live demo


Tone — how blunt or how diplomatic a reply sounds — matters in customer
communication, but controlling it usually means prompt engineering, which is
discrete and hard to audit, or fine-tuning, which fixes the behaviour at training
time.

This is a third option. Take 50 blunt and 50 diplomatic customer-service sentences,
average their residual-stream activations at layer 12 of Qwen2.5-0.5B-Instruct, and
subtract. That difference is a direction. Add α times it back through a forward hook
while the model writes, and tone moves continuously:

h′ = h + α · v̂

No weight updates. No gradients. The artifact is 5.5 KB and serves on CPU.

What the paper reports

Everything below is measured; the full record is in results/.

Model Qwen2.5-0.5B-Instruct, layer 12 of 24, d=896
Generations logged 388
Blind-judged items 158
Tone vs coefficient (lexicon) ρ = +0.64, 95% CI [+0.53, +0.72]
Tone vs coefficient (blinded judge) ρ = +0.85, 95% CI [+0.75, +0.92]
Verbosity control ρ(α, output length) = −0.13
Prompting range, for comparison 0.63 vs steering's 4.12 (judged scale)

Tone rises monotonically across all eight in-domain coefficient settings, and two
measures built on entirely different principles — a fixed word list and a language
model's holistic reading — agree on direction and ordering.

The finding worth your time

Your steering vector may be measuring sentence length.

At layer 12 the first token's activation norm is 97× the median token's — the
attention sink. Mean-pool over all positions and you weight it by 1/T, so the pooled
vector becomes a function of how long your sentences were.

Pooling cos(tone, detail) Held-out accuracy
mean (includes token 0) +0.859 71.0%
mean_no_sink (ours) +0.043 97.0%

Two directions built from unrelated contrasts came back 86% aligned. Excluding one
token drops that to 4%.

The mechanism makes a parameter-free prediction — ‖h₁‖·|1/T_pos − 1/T_neg| — which
accounts for 92% of the mean-pooled norm with nothing fitted. And the
uncomfortable part: the tone lists were already length-matched to 1.024×, and the
predicted length artifact (5.5) still exceeded the true tone signal (4.0). Matching
lengths to within 2.4% does not rescue mean pooling. Only excluding the token does.

Two results that didn't work

Reported because they're more useful than the positive ones.

Out of domain, the effect does not reach significance. The vector came from
banking replies; on prompts about driveways and dying houseplants the judge gives
ρ = +0.05, CI [−0.37, +0.42], and the unsteered condition scores as the most
diplomatic of the three. At n = 30 this experiment lacks the power to establish
transfer, and the paper says so rather than reporting three ordered means as a trend.

Both standard fluency metrics are one-sided. The blunt end fails by looping — and
looping text has low perplexity, so the curve turns back down exactly where output
is worst. The diplomatic end fails by fluent, contentless hedging — distinct-3 of
1.000 on text that has stopped answering. Each end is invisible to the metric that
catches the other. Our own repetition detector scored a total collapse into CJK as
perfectly clean, because CJK isn't whitespace-delimited and the short-text guard
suppressed the check.

Contents

Path What it is
tone-slider-preprint.pdf The paper, 37 pages
source/ Full LaTeX source; builds clean-room to the same PDF
results/ The measurement record — every number in the paper is read from here
data/ The 50 contrastive sentence pairs and both prompt sets
steering_vectors.pt The extracted vector bundle, 5.5 KB

results/ is the point of the release. The project originally shipped with no
recorded outputs at all, and several documented figures turned out to have no
experiment behind them; rebuilding them as scripts that write JSON changed some of
them. make_tables.py reads only from results/ and emits a marker rather than a
number when a key is missing, so no figure in the paper can drift from its data.

Reproducing

Everything ran on CPU: torch 2.12.0+cpu, transformers 5.9.0, Python 3.14,
float32, greedy decoding, seed 0.

make geometry     # ~30 min — sink profile, pooling ablation, held-out CV
make generation   # ~60 min — 388 greedy generations, resumable
make score        # ~10 min — perplexity, degeneration, lexicon
make tables       # regenerate every table from results/

Status

Preprint. Not peer reviewed, and not yet on arXiv — endorsement pending.

Scope is deliberately narrow: one model, one language, one attribute, and a 0.5B
model whose own instruction-following is weak enough to be a confound. The paper's
appendix maps every claim to the experiment that bears on it and marks the five that
remain unevaluated.

License

CC BY 4.0.

README history 2 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-09-09The Tone Slider: preprint, LaTeX source, and full measurement record1a7b8ce5.5 KB
    Loading...
  2. 2026-09-09initial commit4edd7e90 B
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Community discussions 1 thread · 1 open · 1 comments

Threads posted by the community on Hugging Face: bug reports, questions about usage, pull requests on the README, license clarifications. Click any thread to expand and read the full conversation inline. Newest first.

  1. 2026-09-10[bot] Conversion to Parquetopen1 💬#1
    Loading...

Related datasets same stage · ablate

Read further

Metadata

License
cc-by-4.0

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("shehryars715/tone-slider")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="shehryars715/tone-slider", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/shehryars715/tone-slider
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration