Skip to content

Implemented experiments for ICLR 2027 - #60

Open
jakesmbeattie wants to merge 2 commits into
mainfrom
iclr-2027
Open

jakesmbeattie wants to merge 2 commits into
mainfrom
iclr-2027

Conversation

@jakesmbeattie

Copy link
Copy Markdown
Collaborator

Experiments for ICLR 2027:

  1. Heliconius dichotomous keys with heuristic ranking
  2. Baselines for mimic classification
  3. NMF baseline

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Critical and moderate findings currently block reliable execution of several experiments and exports.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 7 High severity · 7 Medium severity · 1 Low severity

Open (15)
What changed in this PR

Adds ICLR 2027 experiment infrastructure for NMF baselines, butterfly SAE training, and mimic classification analysis.

Changes:

  • Implements and tests MiniBatchNMF.
  • Adds shard-generation, training, inference, scoring, and evaluation sweeps.
  • Adds classifier baseline exports, recorded results, and an interactive DINO viewer.
File Description
contrib/​trait_discovery/​tests/​test_nmf.py NMF tests and checkpoint coverage
contrib/​trait_discovery/​sweeps/​baselines_train.py NMF sweep integration
contrib/​trait_discovery/​sweeps/​011_iclr/​train_butterfly_saes.sh Butterfly SAE launcher
contrib/​trait_discovery/​sweeps/​011_iclr/​train_butterfly_saes.py Butterfly SAE configurations
contrib/​trait_discovery/​sweeps/​011_iclr/​nmf_baseline_2.sh NMF launcher
contrib/​trait_discovery/​sweeps/​011_iclr/​nmf_baseline_1.sh NMF launcher
contrib/​trait_discovery/​sweeps/​011_iclr/​nmf_baseline_0.sh NMF launcher
contrib/​trait_discovery/​sweeps/​011_iclr/​imagenet_val_shards.sh Validation shard generation
contrib/​trait_discovery/​sweeps/​011_iclr/​imagenet_train_shards.sh Training shard generation
contrib/​trait_discovery/​sweeps/​011_iclr/​butterflies_shards.sh Butterfly shard generation
contrib/​trait_discovery/​sweeps/​011_iclr/​baselines_train_2.py Large NMF sweep
contrib/​trait_discovery/​sweeps/​011_iclr/​baselines_train_1.py Medium NMF sweep
contrib/​trait_discovery/​sweeps/​011_iclr/​baselines_train_0.py Small NMF sweep
contrib/​trait_discovery/​sweeps/​011_iclr/​baselines_nmse.py Baseline NMSE evaluation
contrib/​trait_discovery/​src/​tdiscovery/​baselines.py NMF implementation and integration
contrib/​trait_discovery/​notebooks/​baselines.py NMF result handling
contrib/​trait_discovery/​notebooks/​__marimo__/​session/​figures.py.json Marimo session metadata
contrib/​mimics/​exps/​005-iclr-discovery/​train_dino_saes.sh DINO SAE launcher
contrib/​mimics/​exps/​005-iclr-discovery/​train_16k_dino.py DINO SAE configurations
contrib/​mimics/​exps/​005-iclr-discovery/​score_dino.py DINO scoring configurations
contrib/​mimics/​exps/​005-iclr-discovery/​inference_dino.sh DINO inference launcher
contrib/​mimics/​exps/​005-iclr-discovery/​inference_dino.py DINO inference configurations
contrib/​mimics/​exps/​005-iclr-discovery/​generate_dino_shards.sh DINO shard generation
contrib/​mimics/​exps/​005-iclr-discovery/​dino_viewer.py Interactive feature viewer
contrib/​mimics/​exps/​003-baselines/​export_csv.py Baseline CSV exporter
contrib/​mimics/​exps/​003-baselines/​baselines.csv Recorded classifier results
contrib/​mimics/​exps/​003-baselines/​baseline_dinov3.py DINOv3 baseline configuration
contrib/​mimics/​exps/​003-baselines/​baseline_bioclip.py BioCLIP baseline configuration
.gitignore Model cache ignore rule

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

def make_cfgs() -> list[dict]:
return [
{
"shards_dpath": "/fs/scratch/PAS2136/jbeattie/saev/shards/a1da4c41",

import beartype
import polars as pl
from mimics.baselines import DEFAULT_OUT_DPATH
Comment on lines +174 to +187
feature_table = mo.ui.table(
filtered_df
.select(
"run_id",
"feature_id",
"selectivity",
"auroc",
"support_diff",
"support_erato",
"support_melpomene",
"mean_act_erato",
"mean_act_melpomene",
"w1_act",
"w1_firing"


_regr = linear_model.LinearRegression()
_regr.fit(random_sample_df["w1_act"].reshape((-1, 1)), random_sample_df["selectivity"].reshape((-1, 1)))
#!/bin/sh

uv run scripts/launch.py baseline::train \
--sweep sweeps/011_iclr/baselines_train_0.py \ No newline at end of file
if batch.shape[0] == 0:
return self

acts = batch.to(self.device, dtype=torch.float32)
D = self.D_
for _ in range(self.d_iters):
numerator = zta_pos + ztz_neg @ D
denominator = zta_neg + ztz_pos @ D + self.eps
assert self._ddt_reg_inv_ is not None

z = acts @ self.D_.mT @ self._ddt_reg_inv_
z = z.clamp_min(self.eps)
Comment on lines +9 to +23
baseline_run_ids = [
"myy5btgw", # kmeans, k=1
"qmbo5jxw", # pca, k=1
"kwh4twl0", # pca, k=4
"za1xuhhn", # pca, k=16
"a1x1laxm", # pca, k=64
"unu6dbfb", # pca, k=256
"dzv7ha4u", # pca, k=1024
"lm51bf37", # semi-nmf, k=1
"em7hzdw0", # semi-nmf, k=4
"cmf1j0gd", # semi-nmf, k=16
"q6qtn8f6", # semi-nmf, k=64
"rv1wfbws", # semi-nmf, k=256
"k9sot7dd", # semi-nmf, k=1024
]
@@ -0,0 +1,22 @@
"""Inference for Pareto-optimal 16K BioCLIP SAEs on Cambridge butterflies (256p, v1.6)."""

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants