triniborrell/manifold-persona-roles-response-40q
triniborrell/manifold-persona-roles-response-40q Residual-stream activations for 276 character-role archetypes, extracted from Qwen/Qwen2.5-3B-Instruct. Each point is one system(role instruction) + user question chat. This cloud is the response-token variant: activations are averaged over the generated assistant response tokens (the Assistant Axis paper's token basis). Contents file shape / rows description prompt_avg.npy (55200, 37, 2048) fp16 mean… See the full description on the dataset page: https://huggingface.co/datasets/triniborrell/manifold-persona-roles-response-40q.
triniborrell/manifold-persona-roles-response-40q
Residual-stream activations for 276 character-role archetypes, extracted from Qwen/Qwen2.5-3B-Instruct.
Each point is one system(role instruction) + user question chat. This cloud is the response-token variant: activations are averaged over the generated assistant response tokens (the Assistant Axis paper's token basis).
Contents
Row i of the arrays corresponds to row i of the metadata.
Extraction settings
{
"model_name": "Qwen/Qwen2.5-3B-Instruct",
"n_layers": 37,
"hidden": 2048,
"primary_layer": 19,
"token_basis": "response",
"max_new_tokens": 128,
"do_sample": false,
"n_questions": 40,
"n_records": 55200,
"n_roles": 276
}The analysis layer is primary_layer = 19 (~0.5 depth, matching the Assistant Axis paper). prompt_avg/prompt_last keep those names in both variants so downstream code loads either cloud unchanged; token_basis in the manifest records which it is.
Loading
import numpy as np, pandas as pd
from huggingface_hub import snapshot_download
p = snapshot_download("triniborrell/manifold-persona-roles-response-40q", repo_type="dataset")
X = np.load(f"{p}/prompt_avg.npy", mmap_mode="r") # [N, n_layers, hidden]
meta = pd.read_csv(f"{p}/metadata.csv")
layer = 19
points = np.asarray(X[:, layer, :], dtype=np.float32)Produced by manifold-persona extraction/.
