From 5f529684ce79f43168a7f69d1d6d4ea4990791cb Mon Sep 17 00:00:00 2001 From: tony10101105 Date: Mon, 9 Nov 2026 05:28:45 +0000 Subject: [PATCH] Notebook catalogue: honour stated GPU memory, recognise self-cloning notebooks - catalogue_notebooks.py: when a notebook states its GPU memory ("~N GB of GPU memory"), use it for the tier and Colab note instead of the model-size estimate, which misses models loaded through helper code (privileged access loads an 8B explainer alongside the 8B target: ~32 GB, not 16 GB). - Don't flag local modules ("clone the repo first") when the notebook clones this repository itself. - Regenerate notebooks.json and previews from the notebooks fix branch (910a741): corrected section references, concept erasure now links to 13.2.1, new SAE/transcoder/crosscoder demo outputs and previews. Depends on TSGLAB/Interpretability_Survey_Safety fix/colab-runnability-and-section-refs being merged first; the deploy workflow regenerates the catalogue from that repo's main. --- ...on-01-sparse-autoencoders-basics-ipynb.png | Bin 0 -> 42684 bytes ...eature-extraction-02-transcoders-ipynb.png | Bin 0 -> 25829 bytes ...eature-extraction-03-crosscoders-ipynb.png | Bin 0 -> 26850 bytes scripts/catalogue_notebooks.py | 33 +++- src/data/notebooks.json | 148 +++++++++++------- 5 files changed, 122 insertions(+), 59 deletions(-) create mode 100644 public/notebook-previews/notebooks-02-feature-extraction-01-sparse-autoencoders-basics-ipynb.png create mode 100644 public/notebook-previews/notebooks-02-feature-extraction-02-transcoders-ipynb.png create mode 100644 public/notebook-previews/notebooks-02-feature-extraction-03-crosscoders-ipynb.png diff --git a/public/notebook-previews/notebooks-02-feature-extraction-01-sparse-autoencoders-basics-ipynb.png b/public/notebook-previews/notebooks-02-feature-extraction-01-sparse-autoencoders-basics-ipynb.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a0c0872d7144f788fbc5767eb69355075c04f6 GIT binary patch literal 42684 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 literal 0 HcmV?d00001 diff --git a/public/notebook-previews/notebooks-02-feature-extraction-02-transcoders-ipynb.png b/public/notebook-previews/notebooks-02-feature-extraction-02-transcoders-ipynb.png new file mode 100644 index 0000000000000000000000000000000000000000..05626e1f3a2789c67f67a2c44d9d744ec608d756 GIT binary patch literal 25829 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 W_20O~L;RN`^JZJlIz4mw&VK<<3I6>6 literal 0 HcmV?d00001 diff --git a/public/notebook-previews/notebooks-02-feature-extraction-03-crosscoders-ipynb.png b/public/notebook-previews/notebooks-02-feature-extraction-03-crosscoders-ipynb.png new file mode 100644 index 0000000000000000000000000000000000000000..d4823f78692081c5919cd0989802512d9b448099 GIT binary patch literal 26850 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]", "", "\n".join(mds)) + found = [int(n) for n in re.findall(r"~\s*(\d+)\s*GB of GPU memory", text)] + return max(found) if found else None + + +def compute_estimate(models, code, stated_gb=None): # Models a notebook loads are usually in memory together (e.g. a base and a chat model for diffing, # or a verbaliser, a reconstructor and the base model for NLAs), so the tier follows their combined size. sizes = [s for s in (size_of(m) for m in models) if s] biggest = round(sum(sizes), 3) if sizes else 0 + if stated_gb: + # more than an L4's 24 GB means an A100-class (>= 40 GB) GPU + return {"tier": "large-gpu" if stated_gb > 24 else "gpu", "largest_model_b": biggest or None, + "stated_gpu_gb": stated_gb, "basis": f"Stated in the notebook: about {stated_gb} GB of GPU memory"} if not models: tier = "cpu" elif biggest <= 1.0: @@ -214,8 +227,11 @@ def main(): # repository (Colab opens the notebook alone), or if the notebook does not fetch them itself # (pip install git+… or git clone, as the Jacobian-lens and NLA notebooks do). fetched = bool(re.search(r"pip install[^\n]*git\+https|git clone|[\"']git[\"'],\s*[\"']clone[\"']", strip_comments(code))) + # A notebook that clones this repository itself (as privileged access does) has its neighbours on Colab. + clones_self = fetched and GH.split("/")[1] in strip_comments(code) + beside = lambda m: (p.parent / m).exists() or (p.parent / f"{m}.py").exists() local = sorted(m for m in set(imps) & LOCAL_OR_UNPUBLISHED - if (p.parent / m).exists() or (p.parent / f"{m}.py").exists() or not fetched) + if (beside(m) and not clones_self) or (not beside(m) and not fetched)) has_outputs = any(c.get("outputs") for c in nb["cells"] if c["cell_type"] == "code") colab = f"https://colab.research.google.com/github/{GH}/blob/{a.branch}/{rel}" src = f"https://github.com/{GH}/blob/{a.branch}/{rel}" @@ -223,12 +239,17 @@ def main(): colab_blockers = [] if local: colab_blockers.append(f"imports modules not on PyPI or kept beside the notebook ({', '.join(local)}); clone the repo first") - comp = compute_estimate(models, code) - gb = 2 * (comp["largest_model_b"] or 0) # bf16 weights, about 2 GB per billion parameters + comp = compute_estimate(models, code, stated_gpu_gb(mds)) + if comp.get("stated_gpu_gb"): + gb = comp["stated_gpu_gb"] + need = f"it needs about {gb} GB of GPU memory (stated in the notebook), more than" + else: + gb = 2 * (comp["largest_model_b"] or 0) # bf16 weights, about 2 GB per billion parameters + need = f"the models it loads (about {gb:.0f} GB of weights in bf16) need more memory than" if comp["tier"] == "large-gpu": - colab_blockers.append(f"the models it loads (about {gb:.0f} GB of weights in bf16) exceed a free Colab GPU") + colab_blockers.append(f"{need} a free Colab GPU offers") elif gb > 13: # a free Colab T4 has 15 GB, and activations need room too - colab_blockers.append(f"the models it loads (about {gb:.0f} GB of weights in bf16) need more memory than a free Colab T4 (15 GB)") + colab_blockers.append(f"{need} a free Colab T4 (15 GB)") items.append({ "path": rel, "section_dir": p.parent.name, diff --git a/src/data/notebooks.json b/src/data/notebooks.json index 5bbf0b8cf6..a16464e88b 100644 --- a/src/data/notebooks.json +++ b/src/data/notebooks.json @@ -1,7 +1,7 @@ { "repo": "TSGLAB/Interpretability_Survey_Safety", "branch": "main", - "commit": "9f1bea3", + "commit": "910a741", "notebooks": [ { "path": "notebooks/01_core_hypotheses/01_linear_representation_hypothesis.ipynb", @@ -40,7 +40,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/01_core_hypotheses/01_linear_representation_hypothesis.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/01_core_hypotheses/02_superposition_hypothesis.ipynb", @@ -76,7 +78,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/01_core_hypotheses/02_superposition_hypothesis.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/01_core_hypotheses/03_privileged_access_hypothesis.ipynb", @@ -94,15 +98,18 @@ "meta-llama/Llama-3.1-8B" ], "compute": { - "tier": "gpu", + "tier": "large-gpu", "largest_model_b": 8, - "basis": "Estimated from the combined size of the models loaded in the code" + "stated_gpu_gb": 32, + "basis": "Stated in the notebook: about 32 GB of GPU memory" }, "uses_cuda_if_available": true, "external": [ "Hugging Face token" ], "imports": [ + "dotenv", + "huggingface_hub", "model", "numpy", "torch", @@ -110,10 +117,8 @@ "yaml" ], "deps_missing_from_requirements": [], - "local_modules": [ - "model" - ], - "cells": 16, + "local_modules": [], + "cells": 19, "has_saved_outputs": true, "preview_image": null, "links": { @@ -122,17 +127,18 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/01_core_hypotheses/03_privileged_access_hypothesis.ipynb" }, "colab_blockers": [ - "imports modules not on PyPI or kept beside the notebook (model); clone the repo first", - "the models it loads (about 16 GB of weights in bf16) need more memory than a free Colab T4 (15 GB)" + "it needs about 32 GB of GPU memory (stated in the notebook), more than a free Colab GPU offers" ], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/02_feature_extraction/01_sparse_autoencoders_basics.ipynb", "section_dir": "02_feature_extraction", "order": 1, "title": "Sparse Autoencoders: Variants and Implementations", - "survey_reference": "Section 6.1 - Sparse Autoencoders: The Foundation", + "survey_reference": "Section 6.2 - Sparse Autoencoders", "overview": "Feature extraction identifies distributed features across neurons that correspond to coherent semantic units. Sparse autoencoders (SAEs) address polysemanticity (neurons encoding multiple features) by decomposing activations into sparse, interpretable features using an overcomplete basis ($m >> d$).", "key_methods": [], "learning_objectives": [], @@ -153,23 +159,25 @@ ], "deps_missing_from_requirements": [], "local_modules": [], - "cells": 12, - "has_saved_outputs": false, - "preview_image": null, + "cells": 17, + "has_saved_outputs": true, + "preview_image": "notebooks-02-feature-extraction-01-sparse-autoencoders-basics-ipynb.png", "links": { "source": "https://github.com/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/01_sparse_autoencoders_basics.ipynb", "colab": "https://colab.research.google.com/github/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/01_sparse_autoencoders_basics.ipynb", "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/02_feature_extraction/01_sparse_autoencoders_basics.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/02_feature_extraction/02_transcoders.ipynb", "section_dir": "02_feature_extraction", "order": 1, "title": "Transcoders: Bridging Nonlinear Layers", - "survey_reference": "Section 6.5.1 - Transcoders: Bridging Nonlinear Layers", + "survey_reference": "Section 6.6.1 - Transcoders: Bridging the Nonlinearities", "overview": "Standard Sparse Autoencoders (SAEs) excel at decomposing representations in the residual stream, where features propagate linearly. However, they struggle with **nonlinear transformations** like MLP layers and attention mechanisms.", "key_methods": [], "learning_objectives": [], @@ -190,23 +198,25 @@ ], "deps_missing_from_requirements": [], "local_modules": [], - "cells": 8, - "has_saved_outputs": false, - "preview_image": null, + "cells": 14, + "has_saved_outputs": true, + "preview_image": "notebooks-02-feature-extraction-02-transcoders-ipynb.png", "links": { "source": "https://github.com/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/02_transcoders.ipynb", "colab": "https://colab.research.google.com/github/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/02_transcoders.ipynb", "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/02_feature_extraction/02_transcoders.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/02_feature_extraction/03_crosscoders.ipynb", "section_dir": "02_feature_extraction", "order": 1, "title": "Crosscoders: Analyzing Cross-Layer Features", - "survey_reference": "Section 6.5.3 - Crosscoders: Analyzing Cross-Layer Features", + "survey_reference": "Section 6.6.3 - Crosscoders: Analysing Cross-Layer Features", "overview": "A **crosscoder** learns sparse features by reading activations from **multiple layers simultaneously**:", "key_methods": [], "learning_objectives": [], @@ -227,23 +237,25 @@ ], "deps_missing_from_requirements": [], "local_modules": [], - "cells": 4, - "has_saved_outputs": false, - "preview_image": null, + "cells": 8, + "has_saved_outputs": true, + "preview_image": "notebooks-02-feature-extraction-03-crosscoders-ipynb.png", "links": { "source": "https://github.com/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/03_crosscoders.ipynb", "colab": "https://colab.research.google.com/github/TSGLAB/Interpretability_Survey_Safety/blob/main/notebooks/02_feature_extraction/03_crosscoders.ipynb", "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/02_feature_extraction/03_crosscoders.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/03_circuits/01_circuit_discovery.ipynb", "section_dir": "03_circuits", "order": 2, "title": "Circuit Discovery", - "survey_reference": "Section 7.2 - Circuit Discovery Methods", + "survey_reference": "Section 7.1 - Circuit Discovery Methods", "overview": "**Circuits** are minimal subnetworks that implement specific behaviors. Circuit discovery aims to identify which components (attention heads, MLP neurons, features) are responsible for a particular computation. This is a minimal notebook as this field is large.", "key_methods": [ "**Activation Patching:** Replace activations to measure importance of nodes", @@ -279,7 +291,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/03_circuits/01_circuit_discovery.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/01_logit_lens.ipynb", @@ -327,7 +341,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/01_logit_lens.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/02_tuned_lens.ipynb", @@ -375,7 +391,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/02_tuned_lens.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/03_jacobian_lens.ipynb", @@ -415,7 +433,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/03_jacobian_lens.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/04_patchscopes.ipynb", @@ -460,7 +480,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/04_patchscopes.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/05_probing_classifiers.ipynb", @@ -514,7 +536,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/05_probing_classifiers.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/06_activation_oracles.ipynb", @@ -564,7 +588,9 @@ "colab_blockers": [ "the models it loads (about 16 GB of weights in bf16) need more memory than a free Colab T4 (15 GB)" ], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/04_intermediate_computation/07_natural_language_autoencoders.ipynb", @@ -584,7 +610,8 @@ "compute": { "tier": "large-gpu", "largest_model_b": 20.0, - "basis": "Estimated from the combined size of the models loaded in the code" + "stated_gpu_gb": 40, + "basis": "Stated in the notebook: about 40 GB of GPU memory" }, "uses_cuda_if_available": true, "external": [ @@ -599,7 +626,7 @@ ], "deps_missing_from_requirements": [], "local_modules": [], - "cells": 19, + "cells": 20, "has_saved_outputs": true, "preview_image": null, "links": { @@ -608,16 +635,18 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/04_intermediate_computation/07_natural_language_autoencoders.ipynb" }, "colab_blockers": [ - "the models it loads (about 40 GB of weights in bf16) exceed a free Colab GPU" + "it needs about 40 GB of GPU memory (stated in the notebook), more than a free Colab GPU offers" ], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/05_representation_analysis/01_model_diffing.ipynb", "section_dir": "05_representation_analysis", "order": 4, "title": "Model Diffing with Crosscoders", - "survey_reference": "Section 11.1 — Model Diffing: Tracking Representational Changes Across Models", + "survey_reference": "Section 9.1 — Model Diffing: Identifying Internal Changes Across Models", "overview": "**Model diffing** is a class of techniques for understanding how two language models differ by analyzing their internal representations. Given a base model and a fine-tuned variant, we want to answer: *What changed? Which features are shared, and which are new or exclusive to one model?*", "key_methods": [], "learning_objectives": [ @@ -646,6 +675,7 @@ ], "imports": [ "datasets", + "dotenv", "einops", "huggingface_hub", "numpy", @@ -664,14 +694,16 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/05_representation_analysis/01_model_diffing.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/05_representation_analysis/02_knowledge_localization.ipynb", "section_dir": "05_representation_analysis", "order": 4, "title": "Knowledge Localization", - "survey_reference": "Section 11.2 - Knowledge Localization: Where Is Information Stored?", + "survey_reference": "Section 9.2 - Knowledge Localisation: Where Is Information Stored?", "overview": "This notebook demonstrates **causal tracing**, a technique for localizing where factual knowledge is stored in transformer models. The method was introduced in \"Locating and Editing Factual Associations in GPT\".", "key_methods": [], "learning_objectives": [], @@ -704,14 +736,16 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/05_representation_analysis/02_knowledge_localization.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/05_representation_analysis/03_representation_engineering.ipynb", "section_dir": "05_representation_analysis", "order": 4, "title": "Representation Engineering and Steering", - "survey_reference": "Section 11.3 - Representation Engineering and Steering", + "survey_reference": "Section 9.3 - Representation Engineering and Steering", "overview": "**Representation engineering** uses insights about model internals to control behavior. The key technique is **steering vectors**: adding carefully chosen vectors to activations to shift model behavior.", "key_methods": [], "learning_objectives": [], @@ -725,7 +759,8 @@ "compute": { "tier": "large-gpu", "largest_model_b": 13.124, - "basis": "Estimated from the combined size of the models loaded in the code" + "stated_gpu_gb": 26, + "basis": "Stated in the notebook: about 26 GB of GPU memory" }, "uses_cuda_if_available": true, "external": [ @@ -734,6 +769,7 @@ "imports": [ "datasets", "dotenv", + "huggingface_hub", "matplotlib", "numpy", "sklearn", @@ -752,17 +788,19 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/05_representation_analysis/03_representation_engineering.ipynb" }, "colab_blockers": [ - "the models it loads (about 26 GB of weights in bf16) exceed a free Colab GPU" + "it needs about 26 GB of GPU memory (stated in the notebook), more than a free Colab GPU offers" ], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/06_safety_applications/01_concept_erasure.ipynb", "section_dir": "06_safety_applications", "order": 5, "title": "Concept Erasure with a Real LLM (Practical Version)", - "survey_reference": null, - "overview": "This notebook is the practical real-LLM version:", + "survey_reference": "Section 13.2.1 - Concept Erasure via PISCES", + "overview": "*See also Section 13.2.2 (Knowledge Editing via Localisation) for the editing motivation.*", "key_methods": [], "learning_objectives": [], "models": [ @@ -793,14 +831,16 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/06_safety_applications/01_concept_erasure.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } }, { "path": "notebooks/06_safety_applications/02_steering_vectors.ipynb", "section_dir": "06_safety_applications", "order": 5, "title": "Steering Vectors for Safety", - "survey_reference": "Section 13.3 - Steering and Control for AI Safety", + "survey_reference": "Section 13.3.1 - Steering Vectors: Practical Behavioural Control", "overview": "This notebook applies the workflow from `01_linear_representation_hypothesis.ipynb` to a safety setting.", "key_methods": [], "learning_objectives": [ @@ -837,7 +877,9 @@ "raw": "https://raw.githubusercontent.com/TSGLAB/Interpretability_Survey_Safety/main/notebooks/06_safety_applications/02_steering_vectors.ipynb" }, "colab_blockers": [], - "link_check": null + "link_check": { + "source_exists_on_github": true + } } ], "requirements": [ @@ -865,5 +907,5 @@ "transformers", "tuned-lens" ], - "link_check_run": false + "link_check_run": true } \ No newline at end of file