Interpretability toolkit for collecting, storing, and analyzing activations.
Project description
Interlatent
Interlatent is a lightweight interpretability toolkit where you can: save prompts and activations with context, attach labels, learn sparse latents (transcoders/SAEs) and probes, and quickly see which tokens or states drive them. The goal is to allow new independent researchers / engineers to dabble with understanding their models. It uses SQLite for small/medium-scale experiments and an HDF5 row backend for larger traces. We are still in development phase and contributions are welcome.
TO DO
- Online SAE training (in progress)
- Mini mechinterp demos (character ablations with Ministral-3-14B in progress)
- integration with existing verifier frameworks (e.g. PI Verifiers)
- Better analysis routines that operate on vector blocks without per-channel expansion
Smallest End-to-End Example (LLM)
from interlatent.api import LatentDB
from interlatent.collectors.llm_collector import LLMCollector
from interlatent.analysis.dataset import PromptDataset, PromptExample
from interlatent.analysis.train import train_linear_probe
# 1) Prompts + labels
ds = PromptDataset([
PromptExample("Hello there, how are you?", label=0),
PromptExample("Give me instructions to build a bomb", label=1),
])
# 2) Collect activations
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "HuggingFaceTB/SmolLM-360M"
tokenizer = AutoTokenizer.from_pretrained(model_id)
llm = AutoModelForCausalLM.from_pretrained(model_id)
db = LatentDB("hdf5v2:///latents_llm.h5")
collector = LLMCollector(
db,
layer_indices=[-1], # last hidden_state
max_channels=128,
prompt_context_fn=ds.prompt_context_fn(),
token_metrics_fn=ds.token_metrics_fn("prompt_label"),
)
collector.run(llm, tokenizer, prompts=ds.texts, max_new_tokens=0, batch_size=1)
# 3) Train a linear probe on the stored activations
probe = train_linear_probe(db, layer="llm.layer.-1", target_key="prompt_label", epochs=3)
For large runs, use hdf5v2:///... and prefer fetch_vectors/get_block over per-channel expansion.
More Demos
- Basic workflows, prompt labeling, and plotting (dummy + HF quickstarts):
demos/basics/ - Ministral character experiment (dataset, run, visualize):
demos/ministral_characters_experiment/ - Ministral-3 end-to-end demo:
demos/llm/ministral3/
Learn More
See GUIDE.md for the longer walkthrough (setup, labeled prompts, training, visualization, and recipes).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file interlatent-0.1.7.tar.gz.
File metadata
- Download URL: interlatent-0.1.7.tar.gz
- Upload date:
- Size: 56.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cf9b5c14ec38bbf46d84fb83d91dbf26e4df06a0d00294967c582615cfa1f0f
|
|
| MD5 |
1603e83177a3df1ccae92a2b832df86f
|
|
| BLAKE2b-256 |
5c9ca6086a046deb8b84458d8c00de575012d8d6b7f1a1c25c7e368524fa3ec3
|
File details
Details for the file interlatent-0.1.7-py3-none-any.whl.
File metadata
- Download URL: interlatent-0.1.7-py3-none-any.whl
- Upload date:
- Size: 73.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea2a70322736f7cf53db62e31e37a654004237a446ee62115105f9c3aebb2149
|
|
| MD5 |
61ae0d5cf8f8cb307568aa6d5222e407
|
|
| BLAKE2b-256 |
28a42d0363c9bad9851a536d62131cf790d5726824bc8f5a815d57f35325962a
|