GIM: Gradient Interaction Modifications
Installation
pip install gim-explain
# With TransformerLens support
pip install gim-explain[tlens]
Quick Start
Feature Attribution with explain()
import gim
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
input_ids = tokenizer("The capital of France is", return_tensors="pt").input_ids
attributions = gim.explain(model, input_ids, tokenizer=tokenizer)
# attributions is a tensor of shape [seq_len] with importance scores per token
Using the GIM Context Manager
For more control, use the GIM context manager directly. This is useful if you want to use GIM for circuit discovery or network pruning. You wrap the model and run your gradient-based method as usual (e.g., Edge Attribution Patching). The wrapper will automatically modify the backpropagation.
import gim
import torch.nn.functional as F
with gim.GIM(model):
logits = model(input_ids)
loss = F.cross_entropy(logits[:, -1], target)
loss.backward()
# Gradients are now modified by GIM
How It Works
GIM applies three gradient modifications during backpropagation:
- Norm Freezing: Detaches LayerNorm/RMSNorm statistics from the backward pass
- Softmax Temperature: Applies temperature scaling to softmax gradients (softer attention)
- Q/K/V Scaling: Scales gradients for query, key, and value tensors in attention
As shown in the paper, these modifications improve the quality of gradient-based feature attributions.
API Reference
gim.explain()
gim.explain(
model, # PyTorch nn.Module or TransformerLens HookedTransformer
input_ids, # Token IDs [batch, seq_len] or [seq_len]
*,
target_token_id=None, # Token to explain (default: argmax prediction)
target_position=-1, # Position to explain (default: last token)
baseline_token_id=None, # Baseline token for counterfactual
tokenizer=None, # Tokenizer to infer baseline from
freeze_norm=True, # Detach norm statistics
softmax_temperature=2.0, # Temperature for softmax backward
q_scale=0.25, # Query gradient scale
k_scale=0.25, # Key gradient scale
v_scale=0.5, # Value gradient scale
)
gim.GIM()
with gim.GIM(
model, # PyTorch nn.Module or TransformerLens HookedTransformer
*,
freeze_norm=True,
softmax_temperature=2.0,
q_scale=0.25,
k_scale=0.25,
v_scale=0.5,
):
# Your forward/backward code here
pass
Citation
@misc{edin2025gimimprovedinterpretabilitylarge,
title={GIM: Improved Interpretability for Large Language Models},
author={Joakim Edin and Róbert Csordás and Tuukka Ruotsalo and Zhengxuan Wu and Maria Maistro and Casper L. Christensen and Jing Huang and Lars Maaløe},
year={2025},
eprint={2505.17630},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.17630},
}
License
MIT
Metadata
Release files for gim-explain 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gim_explain-0.1.4.tar.gz | 13.4 kB | Without provenance | Details for gim_explain-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gim_explain-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for gim_explain-0.1.4-py3-none-any.whl |
Total release size: 25.0 kB
Release files / gim_explain-0.1.4.tar.gz
| Download URL | gim_explain-0.1.4.tar.gz |
|---|---|
| Size | 13.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1102196523f6f578bf18f898312f12aa2697c2a93875d19a1634e503bbc82d35
|
|
BLAKE2b-256 checksum How to use checksums |
8ab8f689a80d9d60e0dd1e33e943a5adaff3b1199942eed23f43d7544b750426
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.11
|
Release files / gim_explain-0.1.4-py3-none-any.whl
| Download URL | gim_explain-0.1.4-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f8e409cdf886d745abeebd6f192e09dc5fc81a095f17c69bf20f6c32cf152c4c
|
|
BLAKE2b-256 checksum How to use checksums |
cae824d3e1169061fc8d31f628bd4502588f10c505301533733909cd59c70023
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.11
|
Security for gim-explain 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.