Skip to content

Stability Tiers

Every algorithm has an explicit stability tier describing how broadly it has been validated. The tier is enforced at runtime — experimental and research algorithms emit a UserWarning.

from circuitkit.backends import STABILITY, is_stable, is_experimental, is_research

print(is_stable("eap-ig"))      # True
print(is_stable("acdc"))        # True
print(is_experimental("acdc"))  # False
print(is_research("relp"))      # True
print(STABILITY["eap-ig"])      # "stable"

Of the 13 discovery algorithms, 6 are Stable and 7 are Research. No discovery algorithm is in the Experimental tier at the moment.

Stable

Tested across the GPT-2, Llama, Gemma, and Qwen families.

Algorithm Notes
eap-ig Default. Validated on GPT-2, Llama-3.2-1B/3B, Gemma-2-2B, Gemma-3-4B, Qwen2.5-1.5B.
eap Validated on GPT-2 and small Llama/Gemma models.
eap-gp EAP-GP / GradPath.
acdc Node-only by construction (edge search). Slow.
ibcircuit Memory ceiling on multi-billion-parameter models at aggressive settings.
cdt Works from clean inputs only. Uses a frozen-RoPE attention approximation (Q/K are not decomposed) and a 50/50 gated-MLP cross-term split, so its scores on RoPE models are approximate.

Experimental

None currently for discovery. The tier, EXPERIMENTAL_ALGORITHMS, and is_experimental remain part of the API.

Research

Implemented and validated on GPT-2/IOI but not yet exercised at scale or across architectures.

Algorithm
eap-ig-activations, eap-clean-corrupted, eap-exact, atp-gd, relp, peap, eap-ifr

Why tiers matter

Attribution methods are not universally portable. A method validated on GPT-2 IOI may produce meaningless circuits on Llama-3 because of: - Different attention patterns (GQA vs. MHA) - Different positional encodings (RoPE vs. absolute) - Different MLP structures (SwiGLU vs. GELU) - Different scales (what works at 124M may OOM at 7B)

Runtime warnings

When you request a non-Stable algorithm, CircuitKIT emits a UserWarning:

UserWarning: Algorithm 'relp' is research-quality (only validated on GPT-2 IOI). Use 'eap-ig' for production.

This is expected behaviour. Suppress with warnings.filterwarnings("ignore") only after you have verified the algorithm works for your use case.

Checking before discovery

from circuitkit.backends import is_stable, STABILITY

algo = "my_algorithm"
if not is_stable(algo):
    print(f"WARNING: {algo} is {STABILITY.get(algo, 'unknown')} tier")

Recommendation

Start with eap-ig (Stable) for any new experiment. Only switch to Research algorithms when you have a specific reason (e.g., comparing methods for a paper).