TransformerLens Config Hierarchy Overview#
Overview#
This document provides an overview of the configuration hierarchy for TransformerLens v3 (TransformerBridge) and legacy (HookedTransformer) paths, and their integration with Interpretune configurations.
TransformerLens Config Hierarchy#
Base Class: TransformerLensConfig#
Common base class for both architectures, stored in transformer_lens/config/TransformerLensConfig.py:
Defines core model dimensions:
d_model,d_head,n_layers,n_ctx,d_vocab,n_headsCommon to both HookedTransformerConfig and TransformerBridgeConfig
HookedTransformerConfig (Legacy)#
Extends TransformerLensConfig as a dataclass:
Location:
transformer_lens/config/HookedTransformerConfig.pyUsage: Traditional TransformerLens interface with weight conversion
Key Fields:
Model architecture:
d_mlp,act_fn,attn_only,parallel_attn_mlpAttention config:
use_attn_scale,use_qk_norm,use_local_attn,window_sizeInitialization:
init_mode,initializer_range,init_weights,seedNormalization:
normalization_type,eps,final_rmsAdvanced:
gated_mlp,rotary_dim,rotary_base,num_experts,experts_per_tokenDevice/dtype:
device,dtype,n_devicesMetadata:
model_name,checkpoint_index,checkpoint_value,tokenizer_name
TransformerBridgeConfig (v3)#
Extends TransformerLensConfig as a regular class:
Location:
transformer_lens/config/TransformerBridgeConfig.pyUsage: Wraps HF models without weight conversion, more memory efficient
Key Additions:
architecture: Architecture identifier for adapter selection (e.g., “gpt2”, “llama”)tokenizer_prepends_bos: Tokenizer behavior configurationdefault_padding_side: Padding side configurationsplit_attention_weights: Attention weight processing configuration
Compatibility: Includes all HookedTransformerConfig fields for API compatibility
Note: Despite including HookedTransformer fields, TransformerBridge doesn’t perform weight conversion
TransformerBridge Model Structure#
Key Attributes#
class TransformerBridge(nn.Module):
def __init__(self, model, adapter, tokenizer):
self.original_model = model # The wrapped HF model
self.adapter = adapter # ArchitectureAdapter instance
self.cfg = adapter.cfg # TransformerBridgeConfig instance
self.tokenizer = tokenizer
Adapter Structure#
class ArchitectureAdapter:
def __init__(self, original_model, cfg):
self.original_model = original_model
self.cfg = cfg # TransformerBridgeConfig
# ... component mappings ...
Interpretune Config Hierarchy#
For generation flag precedence and debug semantics, see docs/generation_precedence.md.
ITLensFromPretrainedConfig#
Extends ITLensSharedConfig for from_pretrained initialization:
Usage: When loading pretrained HF models via model_name
Key Fields:
model_name: HF model identifier (e.g., “gpt2-small”)Processing flags:
fold_ln,center_writing_weights,center_unembed,refactor_factored_attn_matricesdevice,dtype,n_devices: Device/dtype configurationhf_model: Optional pre-instantiated HF model (IT handles instantiation)tokenizer: Optional tokenizer (IT handles instantiation)fold_value_biases,default_prepend_bos: Behavior flags
Note: These configs are not directly convertible to HookedTransformerConfig or TransformerBridgeConfig
ITLensCustomConfig#
Extends ITLensSharedConfig for config-based initialization:
Usage: When providing explicit TransformerLens config (currently only supports HookedTransformerConfig)
Key Field:
cfg: HookedTransformerConfig or dict convertible to it
Limitation: Currently requires HookedTransformerConfig, cannot accept TransformerBridgeConfig directly
Note: When
use_bridge=TruewithITLensCustomConfig, initialization will not use TransformerBridge — Interpretune will warn and forceuse_bridge=False, falling back to the legacy HookedTransformer path.
ITLensBridgeConfig#
Extends ITLensSharedConfig for explicit TransformerBridge (v3) configuration:
Usage: When you want fine-grained control over TransformerBridge initialization and compatibility mode settings
Key Fields:
model_name: The HF model name/path for TransformerBridge (e.g., “gemma-2-2b-it”)enable_compatibility_mode: Whether to call enable_compatibility_mode() on the bridge after instantiation (default: False)enable_compatibility_mode_kwargs: Optional kwargs for enable_compatibility_mode() (e.g.,fold_ln,fold_value_biases)transformer_bridge_config_overrides: Optional kwargs to pass to TransformerBridgeConfig constructordevice,dtype: Device/dtype configurationuse_bridge: Always True for this config type (default: True)
Note: This is the recommended config for TransformerBridge mode. Using
ITLensFromPretrainedConfigwithuse_bridge=Truewill produce a warning since the config fields are HookedTransformer-specific.Note:
SAELensConfigwill warn ifuse_bridge=Truebuttl_cfgis anITLensFromPretrainedConfiginstead ofITLensBridgeConfig.
ITLensConfig#
Top-level IT configuration encapsulating all settings:
Key Fields:
tl_cfg: Either ITLensFromPretrainedConfig or ITLensCustomConfighf_from_pretrained_cfg: HFFromPretrainedConfig (for HF model loading)Various inherited IT core configs
Internal State:
_load_from_pretrained: Boolean tracking initialization mode_dtype: Resolved dtype
Methods:
_translate_tl_config(): Maps TL config fields to IT fields (e.g.,hf_model→model_name_or_path)_sync_pretrained_cfg(): Syncs HF and TL dtypes, validates device_map_disable_pretrained_model_mode(): Disables pretrained settings for custom config mode
Config Flow During Initialization#
TransformerBridge Path (use_bridge=True)#
User provides
ITLensFromPretrainedConfigwithuse_bridge=True(default)IT loads HF model via
model_nameusinghf_from_pretrained_cfg_convert_hf_to_bridge()is called:# Map ITLensFromPretrainedConfig fields to TransformerBridgeConfig bridge_config = map_to_tl_config(hf_model.config, tl_config) bridge_config.architecture = hf_model.config.architectures[0] # Create adapter with TransformerBridgeConfig adapter = ArchitectureAdapterFactory.create_adapter(hf_model, bridge_config) # Create TransformerBridge model = TransformerBridge(hf_model, adapter, tokenizer) # Preserve original HF config model.config = hf_model.config # HF PretrainedConfig
After initialization:
self.model = TransformerBridge instanceself.model.cfg = TransformerBridgeConfig instance(from adapter)self.model.config = HF PretrainedConfig(original HF config)self.model.adapter.cfg = TransformerBridgeConfig instance(same as model.cfg)
HookedTransformer Path (use_bridge=False)#
User provides
ITLensFromPretrainedConfigwithuse_bridge=FalseIT loads HF model via
model_nameusinghf_from_pretrained_cfg_convert_hf_to_tl()is called:# Convert using TL's from_pretrained with weight conversion model = HookedTransformer.from_pretrained_no_processing( model_name=model_name, hf_model=hf_model, **filtered_kwargs ) # Preserve original HF config model.config = hf_model.config # HF PretrainedConfig
After initialization:
self.model = HookedTransformer instanceself.model.cfg = HookedTransformerConfig instance(created by TL)self.model.config = HF PretrainedConfig(original HF config)
Config-based Path (ITLensCustomConfig)#
User provides
ITLensCustomConfigwithcfg=HookedTransformerConfig_load_from_pretrained = Falseis settl_config_model_init()is called:# Create HookedTransformer from config model = HookedTransformer(cfg=tl_cfg)
After initialization:
self.model = HookedTransformer instanceself.model.cfg = HookedTransformerConfig instance(provided by user)No
self.model.config(no original HF config)Cannot use TransformerBridge path (requires HF model)
Config Serialization Requirements#
Current _capture_hyperparameters Logic#
Located in src/interpretune/adapters/transformer_lens.py:_capture_hyperparameters():
def _capture_hyperparameters(self) -> None:
"""Capture and serialize hyperparameters for model checkpointing.
Current behavior:
1. Serialize the actual TL model configuration (HookedTransformerConfig or TransformerBridgeConfig)
derived from the initialized model instance (`self.model.cfg`) and store it under the
`tl_model_cfg` key in the session `_init_hparams` so it can be used for reproducible recreation.
2. Add a `_used_bridge` flag when possible to capture whether the bridge (v3) path was used.
3. Store IT-specific TL settings under `it_tl_cfg` so IT-level configuration fields are preserved.
4. Call the superclass implementation to capture the original HF `PretrainedConfig` (hf_preconversion_config).
"""
# capture the Marshal-able TransformerLens model cfg from the runtime model instance
tl_model_cfg = self._make_config_serializable(self.model.cfg, ["device", "dtype"])
# Add architecture flag for clarity (used_bridge toggles the bridge vs legacy path)
if hasattr(tl_model_cfg, "__dict__"):
tl_model_cfg.__dict__["_used_bridge"] = self.it_cfg.tl_cfg.use_bridge
# Save the serialized TransformerLens model config for checkpointing and reproduction
self._it_state._init_hparams.update({"tl_model_cfg": tl_model_cfg})
# Serialize IT-specific TL settings so they are available for the initialization flow
self._it_state._init_hparams.update({"it_tl_cfg": self.it_cfg.tl_cfg})
# Delegate to superclass to capture the original HF PretrainedConfig (hf_preconversion_config)
super()._capture_hyperparameters()
What Needs to be Serialized#
For TransformerBridge Path (use_bridge=True):#
Original HF PretrainedConfig (already preserved via
self.model.config):Source:
hf_model.config(HuggingFace PretrainedConfig)Purpose: Complete HF model configuration, required for reproducible recreation
Access:
self.model.config
TransformerBridgeConfig (runtime TL model config) (serialized under
tl_model_cfg):Source:
self.model.cfg(the authoritative TL config created during model initialization)Purpose: TransformerLens v3 configuration including architecture info and device/dtype
Access:
self.model.cfgorself.model.adapter.cfgStored in
_init_hparamsastl_model_cfg(serializable via_make_config_serializable)
ITLensFromPretrainedConfig (IT-level settings)
Source:
self.it_cfg.tl_cfg(the IT wrapper providing high-level runtime choices)Purpose: IT-specific settings (fold_ln, center_writing_weights, use_bridge, etc.)
Stored under
_init_hparamskeyit_tl_cfgso they are available for recreation and diagnostics
For HookedTransformer Path (use_bridge=False):#
Original HF PretrainedConfig (already preserved via
self.model.config):Source:
hf_model.config(HuggingFace PretrainedConfig)Purpose: Complete HF model configuration
Access:
self.model.config
HookedTransformerConfig (runtime TL model config) (serialized under
tl_model_cfg):Source:
self.model.cfg(HookedTransformerConfig created during initialization)Purpose: HookedTransformer model configuration details (d_mlp, activations, etc.)
Access:
self.model.cfgStored in
_init_hparamsastl_model_cfgfor reproducibility
ITLensFromPretrainedConfig (IT-level settings)
Source:
self.it_cfg.tl_cfgPurpose: IT-specific settings
Stored under
_init_hparamskeyit_tl_cfg
Current Serialization Practice#
We capture the runtime TL model configuration (self.model.cfg) — which is the authoritative
source of truth for the TransformerLens configuration used at runtime — and stores it in _init_hparams as tl_model_cfg.
This ensures that whether the module was initialized via a pretrained HF model (TransformerBridge path) or via a HookedTransformer
config, the true TL model configuration is captured and preserved.
Key points:
The TF model’s
self.model.cfg(HookedTransformerConfig or TransformerBridgeConfig) is serialized and saved astl_model_cfgin the_init_hparamsmap.A
_used_bridgeflag is stored alongsidetl_model_cfgto clarify whether the bridge (v3) path was used.IT-specific TL settings are saved under the
it_tl_cfgkey so that high-level IT configuration choices are preserved.The superclass call continues to capture the original HF
PretrainedConfigviasuper()._capture_hyperparameters().
This approach simplifies config reconstruction at runtime and avoids the type confusion that previously existed when attempting to serialize IT wrapper configs as if they were actual TL configs.
Config Type Summary#
Config Class |
Purpose |
Initialization |
Serialization Target |
|---|---|---|---|
TransformerLensConfig |
Base class for TL configs |
N/A (abstract) |
N/A |
HookedTransformerConfig |
Legacy TL config |
Created by TL’s from_pretrained |
|
TransformerBridgeConfig |
V3 TL config with architecture info |
Created by map_to_tl_config + adapter |
|
ITLensSharedConfig |
Base IT TL settings |
User provides |
|
ITLensFromPretrainedConfig |
IT settings for from_pretrained (HookedTransformer) |
User provides |
|
ITLensBridgeConfig |
IT settings for TransformerBridge (v3) |
User provides |
|
ITLensCustomConfig |
IT settings for config-based init |
User provides |
|
HF PretrainedConfig |
Original HF model config |
Loaded with HF model |
|