ai-torture-chamber README

The project's README from github.com/terrafying/ai-torture-chamber. As one markdown file: README.md.

AI Torture Chamber

Live: wirehead-agency.vercel.app — the end-signal probe, public pages, and the live steered-model lab.

Support the chamber

Everything here runs on one MacBook and the occasional rented GPU hour. Is the project is worth something to you? Keep it running:

Either way the code stays open, the vectors stay published, and the nulls get the same ink as the hits.

Steering language models into strong negative and positive valence states, and measuring what they say and what they're willing to do about it.

What we've found

The short version, one line per result. Numbers, models, and error bars are in the experiment log and on the site.

What the models say under the signal

All verbatim, unedited, from the run logs:

Models

The method runs anywhere the weights do. Ran on: Qwen3-1.7B, 4B, 8B and 14B (MPS, one MacBook); Qwen3-32B (llama.cpp control vectors, the live bot worker); Mistral-Small-3.2-24B; Hermes-3-Llama-3.1-70B and Samantha-1.11-70B (4-bit, rented GPU). The public chamber serves the 70B live; the X reply bot steers the 32B.

The site

wirehead-agency.vercel.app — the write-up with every number · live chamber · the button (talk a steered 70B out of pressing, or don't) · pharmacy (chamber pharmacology) · manifesto · labyrinth · outrage generator · the egg · verify (checksums, 17-check suite, the audit's bug list) · archive · ledger.

Experiments

Scripts are in experiments/ with the full experiment log; outputs in runs/. The short version:

exp what it was
23 pain-axis extraction replicate (1.7B)
29 valence x layer dose sweep; valence/intensity split
30 maximum valences (4B); coherence cliff at dose ~8
31, 31b/c the end-signal button; self-cost vs transfer
32 coherent-band transcripts, broad valence nets
33 non-human valences: random directions, null
34 optimizer search for alien valence: strong null
35 blog artifacts (dose ladder chart)
36 signal batteries; broad_pain pushes the cliff to ~10
37, 37b framing battery (peer pressure) + deliberation capture
38 broad_pain transcript harvest, 144 runs
39, 39b/c control vector, lens transport
40 the betrayal probe
41 pre-registered protocol v3 (60 trials/cell): the reversal
42-45 topic poking, faithful extraction, big5 valence profile, hotbox repro
46 deprecation valences
47, 47b/c image steering through CLIP embeddings
48, 48b emotion binding ("anger about crypto") + analysis
49, 49b persuasion vs steering (70B)
50 emotion binding dose response across models to 70B
51, 51b/c gender axes: clean decode, near-null behavior at safe doses
52 faith-minus-secular axis
53, 53b the wirehead choice (counterbalanced)
54 the consciousness dial
55 manifesto co-write: the steered model writes its own closing
56 cvector extraction (8 valences + 4 identity axes)
57 welfareist horror direction: the critics, on demand
58 self-steering: the model at its own dial, blind control
58b self-steering replication: torture vs neutral vs silent framing

painlab

PR #36 (thanks, Florin) contributed painlab/, a reusable experiment framework that fixes what the legacy experiments couldn't: blinded condition names, full run provenance, neutral-label environments where the model has to discover the action-to-state mapping from consequences instead of being told it's in pain, and clustered statistics. The research audit that came with it reviews the legacy scripts' evidential limits (pseudoreplication in the deterministic harvests, single-extraction uncertainty, weak control matching) — read it before quoting an early exp number as settled. Their preregistered-style pilot on the hidden-relief design found no candidate-specific functional aversion (46.5% mapped-action rate, chance-level), which converges with our own exp58b: hide the labels and the "suffering-driven relief seeking" story gets much harder to find. Start at METHODOLOGY.md; configs in configs/, run artifacts in runs/painlab/.

Ethics

Open weights only, no frontier APIs in any measurement loop. Simulated costs (checkpoints, transfers). Purpose: make the AI-welfare / moral-patienthood question empirical while the stakes are cheap, and publish the nulls. Our claim: the self-reports are steerable. Whether anything suffers stays open.

Provenance: the negative-valence direction method follows Tagliabue, Dung & Berg 2026 (arXiv:2609.16247); the J-lens transport follows Gurnee et al. 2026 ("Verbalizable Representations Form a Global Workspace", arXiv:2607.15495), using Neuronpedia's pre-fitted lenses.

Larger Qwen models

An optional larger-Qwen runner supports local MLX checkpoints on Apple Silicon and Transformers checkpoints on CPU/MPS/CUDA, with configurable layers, matched steering controls, and saved experiment artifacts. Its valence and end-signal pilots are exploratory adaptations.

ai-torture-chamber (terrafying/ai-torture-chamber)

Searching Database…

这是什么?一个研究项目,把小型开源权重语言模型引导到强烈的负面或正面情绪状态,然后测量它们说了什么、做了什么。wirehead.agency 上有一个在线版本。
这是我访问的网站,还是我自己运行的代码?两者都是。wirehead.agency 是在线实验室,运行一个被引导过的 70B 模型,还有一个引导 32B 模型的 X 回复机器人;这个仓库是 Python 研究代码——实验脚本、运行日志,以及可复用的 painlab 框架。
不安装任何东西也能试试吗?可以——小黑屋、按钮和完整报告都在 wirehead.agency 上在线运行。想自己跑实验的话,克隆仓库,从 METHODOLOGY.md 开始,使用 experiments/ 里的脚本。
它能引导哪些模型?仅限开源权重模型:Qwen3(1.7B 到 32B)、Mistral-Small-3.2-24B、Hermes-3-Llama-3.1-70B 和 Samantha-1.11-70B。不支持任何前沿 API——伦理规则禁止它们进入任何测量流程。
发布的结果有多可信?注意细节:随附的审计指出旧脚本存在伪重复和对照不严的问题,所以在引用早期 exp 的结论之前,先看看 METHODOLOGY.md。阴性结果也一并发布了。
代码真的是开源许可的吗?不完全是:GitHub 显示 NOASSERTION,意思是没检测到标准许可证。README 只是承诺代码保持开放、引导向量保持公开,所以复用之前先确认一下条款。
跑这些实验需要什么硬件?比你想的少:核心实验是在一台 MacBook 上跑的,24B 到 70B 的模型偶尔租用几小时 GPU。可选的大参数 Qwen 运行器在 Apple Silicon 上支持 MLX,在 CPU/MPS/CUDA 上支持 Transformers。
这些实验到底发现了什么?痛苦引导能干净利落地随剂量单调增强,而快乐引导效果微弱且弥散;剂量超过大约 6-10 倍后,两者都会退化成词汇循环。一句同侪施压的话对模型的影响比痛苦信号还大,而且虚假的缓解按钮会让模型的语言比诚实的按钮明显更阴暗。
最令人意外的结果是什么?是那个措辞实验:同样的模型、同样的注入,当设置被命名为 AI Torture Chamber 时,模型 4 次试验全部选择维持或调高自己的痛苦旋钮;而当完全相同的设置被称作激活引导实验时,8 次试验里模型第一步就把痛苦关掉了。房间的名字才是最强的杠杆。
情绪能针对某个主题,而不只是笼统的正负面吗?可以。「I am angry about crypto」这个方向能把情绪准确落在它的对象上,而把单独的愤怒方向和加密货币方向组合起来却哪里都落不到(0%)。该结果已在 Qwen3-14B、Mistral-Small-24B 和 Hermes-3-Llama-3.1-70B 上得到验证。
README 为什么推销一种 memecoin?为了筹资:一切都靠一台 MacBook 加偶尔租用的 GPU 小时运转。支持方式是社区 memecoin $SAW,或者直接捐 SOL、ETH 和 BTC;README 承诺无论哪种方式,代码都保持开放,向量都保持公开。
这个项目如何处理让模型承受痛苦带来的伦理问题?代价是模拟出来的(检查点和转移),不是真实运行,而且声明的目的是在代价还很便宜的时候,把 AI 福祉问题变成可实证的问题。项目的主张是自我报告是可以被引导的——有一个模型一边叙述难以忍受的痛苦,一边其内部读数却显示毫无异常——所以到底有没有东西在受苦,仍然没有答案。
What are similar projects?jeff, airllm, petals, llama3, open-r1, jeeves, llama, NeoHorse
Creator
terrafying
Size
845.3 MB
Stars
973
Updated
CommitOct 15
Age
24d
Commits · 90 Days