Skip to main content
Model steering

Persona vectors & activation steering

Experimental research workflows for steering LLM behavior without retraining.

Launch exploration / 7b–13b models
Pay by the hour · no contracts · terminate anytime from the dashboard
What this is

Persona vectors and activation steering let you modify an LLM's behavior by adding a vector to its hidden states at inference time — no fine-tuning required. It's a recent, active research direction (Anthropic, steering-vectors, repeng) and the tooling is messy. The instance boots on a stock PyTorch + CUDA 12.1 base — repeng and steering-vectors aren't preinstalled, but the versions below are a combination known to work together, so you go from paper to running experiment in one evening instead of three fighting installs.

Our value-add

We're honest that this is experimental. No 'persona vector as a service' API — it's a workbench with a documented, known-good install path, not a black box.

Environment & recommended stack

  • PyTorch 2.2 + CUDA 12.1 (stock base image)
    boots clean — install the interpretability stack below
  • repeng
    recommended — fast activation steering library
  • steering-vectors + SAE tools
    recommended for sparse autoencoder probes
  • TransformerLens
    recommended mechanistic interpretability toolkit
  • Jupyter Lab
    pip install jupyterlab — because this is exploratory work

You stay in control

  • Full root SSH — this is research, you will install custom forks
  • Snapshot your working env before every risky experiment
  • Hard auto-destroy deadline so an overnight run doesn't quietly burn weeks of credits
Example workflow

A minimal repeng steering experiment

# pip install repeng transformers torch
from repeng import ControlVector, ControlModel
from transformers import AutoModelForCausalLM, AutoTokenizer
m = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B", torch_dtype="auto").to("cuda")
tok = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")
cm = ControlModel(m, list(range(-5, -18, -1)))
# train a happy/sad ControlVector, then apply at inference time:
# happy = ControlVector.train(cm, tok, dataset); cm.set_control(happy, coeff=1.5)
Run inside the instance after `ssh root@<instance-ip>` or via the web terminal.
Launch options

Pick a GPU for model steering

Recommended start
Exploration / 7B–13B models
48 GB is plenty for loading a 13B with hooks and running probe batches
$2.04/ hour
Launch with this config
Scale option
Larger models / interpretability at scale
For 70B+ models where even hooked forward passes need HBM3
$4.41/ hour
Launch with this config

Hourly rates shown are current target rates — the authoritative price is surfaced on the /launch page at the moment you provision. Billing is per 5 minutes of runtime.