Assistant-finetuned GLP β€” a persona-drift detector for Llama-3.1-8B-Instruct

This is the denoiser of the released Generative Latent Prior generative-latent-prior/glp-llama8b-d6 (a diffusion model over Llama-3.1-8B layer-15 activations), finetuned on ~218,000 layer-15 activations collected from meta-llama/Llama-3.1-8B-Instruct answering 2,200 prompts in its default assistant persona. The base language model is unchanged; only the ~3.4B-parameter diffusion denoiser was trained (normalizer frozen).

What it is good for: detecting persona drift

Finetuning shifts the prior's mass onto the assistant region of activation space. As a result it works as a strong per-token persona-drift detector: scoring a single layer-15 token by the ratio of this prior's loss to the base prior's loss separates role-play tokens from default-assistant tokens at AUC β‰ˆ 0.85 (the base prior scores 0.31 β€” below chance, because generic web text makes role-play look more typical than the assistant).

What it is NOT good for: repairing behaviour

Honest headline from the study this checkpoint comes from: the retrained prior fixes the geometry but not behaviour. Using it to "clean" activations during generation (SDEdit) does not break a role-play persona, does not repair a naturalistic delusion-drift safety failure, and does not reduce persona-jailbreaks (0% reduction, same as the generic prior). The persona is re-created from the conversation on every token, upstream of the single layer this prior edits. Treat it as a monitor / detector, never an actuator. Full evidence, figures, and baselines (capping and steering comparisons) are in the write-up: https://github.com/chainik1125/glp-persona-drift

Load it

# pip install per g-luo/generative_latent_prior (torch 2.7, diffusers 0.36, omegaconf, safetensors)
from glp.denoiser import load_glp
from safetensors.torch import load_file

glp = load_glp("generative-latent-prior/glp-llama8b-d6", device="cuda:0", checkpoint="final")
glp.denoiser.load_state_dict(load_file("assistant_glp.safetensors"))
glp.denoiser.to("cuda:0")
# detector score for a layer-15 activation batch x (n, 4096):
#   loss_ft = glp(latents=glp.normalizer.normalize(x[:,None,:]), u=<0..1>,
#                 loss_kwargs={"reduction":"none"}).loss.mean((1,2))
#   compare against the base prior's loss on the same x (ratio isolates persona).

Provenance, license, caveats

  • Derived from the released GLP generative-latent-prior/glp-llama8b-d6 and activations of meta-llama/Llama-3.1-8B-Instruct. Built with Llama; use is subject to the Llama 3.1 Community License. Respect the upstream GLP repository's terms.
  • Trained on activations from only 2,200 assistant prompts; it is a research artifact, not a production model. The detector AUC is measured on prompted role-play vs assistant pools; transfer to other drift types is not guaranteed.
  • No user data, no sensitive transcripts, and no jailbreak prompts are included in this repo.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for assisted-diffusion/glp-assistant-detector-llama3.1-8b

Finetuned
(1)
this model