transformer_lens.utilities.heterogeneous_config module¶
Safe attribute access for transformers>=5.15 heterogeneous configs.
Configs whose attention geometry varies across layers (e.g. Gemma 4) register
those fields as per-layer: reading one on the global config raises
AmbiguousGlobalPerLayerAttributeError from __getattribute__, which
neither hasattr() nor getattr(..., default) suppresses. These helpers
let config-probing code stay safe on any transformers version — the per-layer
machinery is simply absent pre-5.15, where every helper degrades to plain
attribute access.
- class transformer_lens.utilities.heterogeneous_config.HetSafeConfigView(config: Any)¶
Bases:
objectRead-only getattr proxy: per-layer-registered fields resolve to their majority-layer value instead of raising; everything else passes through.
Wrap a config once and downstream
hasattr/getattrprobes need no per-field awareness of heterogeneity.
- transformer_lens.utilities.heterogeneous_config.het_safe_view(config: Any) Any¶
Wrap heterogeneous configs in a
HetSafeConfigView; pass others through.
- transformer_lens.utilities.heterogeneous_config.majority_value(values: list) Any¶
Most common value in a per-layer list; ties break toward the earliest layer.
- transformer_lens.utilities.heterogeneous_config.per_layer_attr_names(config: Any) frozenset¶
Fields a heterogeneous config refuses to serve globally.
Empty for homogeneous configs and pre-5.15 transformers.
- transformer_lens.utilities.heterogeneous_config.per_layer_values(config: Any, name: str) list¶
Collect a per-layer attribute from a heterogeneous config’s layer configs.
- transformer_lens.utilities.heterogeneous_config.safe_config_get(config: Any, name: str, default: Any = None) Any¶
getattr that resolves per-layer-registered fields to their majority value.