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: object

Read-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/getattr probes 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.