SAVRN
Search Contact SAVRN

Open-weight model

qwen36-27b-sae2m-l42

by De Schamphelaere ceselder/qwen36-27b-sae2m-l42

qwen36-27b-sae2m-l42 is an open-weight model from De Schamphelaere, released under Apache License 2.0. Its published files total 45.2 GB.

A dictionarylearning-format BatchTopK sparse autoencoder on the post-layer-42 residual stream of Qwen/Qwen3.6-27B (d = 5120), with F = 2,097,152 (2^21, 409.6x) features and k = 64.

Parameters
Context
Weights44.5 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads

Model Card

By De Schamphelaere, published under apache-2.0, revision de89b1c1eb70.

A dictionarylearning-format BatchTopK sparse autoencoder on the post-layer-42 residual stream of Qwen/Qwen3.6-27B (d = 5120), with F = 2,097,152 (2^21, 409.6x) features and k = 64. Companion to the 131,072-feature SAE at ceselder/qwen36-27b-sae-l42 (same layer, same recipe, 16x smaller dictionary). BatchTopK (Bussmann et al.), dictionarylearning-style trainer run feature-parallel over 8 GPUs (each rank owns 262,144 features; global top-k via all-gather, all-reduced reconstruction, aux-k loss alpha 1/32 with 40,960 aux features, learned activation threshold with EMA beta 0.999). lr 1.77e-5, warm-up 1,000 steps, decay from step 195,312, batch 4,096 tokens x 244,140 steps = 1.0e9 tokens…

Read De Schamphelaere's full model card

Qwen3.6-27B layer-42 BatchTopK SAE — 2,097,152 features (k = 64)

A dictionary_learning-format BatchTopK sparse autoencoder on the post-layer-42 residual stream of Qwen/Qwen3.6-27B (d = 5120), with F = 2,097,152 (2^21, 409.6x) features and k = 64. Companion to the 131,072-feature SAE at ceselder/qwen36-27b-sae-l42 (same layer, same recipe, 16x smaller dictionary).

Files

path what
saes_Qwen_Qwen3.6-27B_batch_top_k/resid_post_layer_42/trainer_0/ae.pt the SAE (43 GB, bf16 matrices): encoder.weight [F, d], encoder.bias [F], decoder.weight [d, F], b_dec [d], k, threshold (dictionary_learning BatchTopKSAE keys)
.../trainer_0/config.json training config (below)
verify.json held-out reconstruction metrics on 20M fresh Ultra-FineWeb tokens
maxacts_top5.pt + maxacts_top5.summary.json for EVERY feature its top-5 max-activating 32-token windows (token ids + activations, window ends at the peak token) over a 1.0B-token Ultra-FineWeb stream; fire-rate / peak-activation percentiles in the summary
data/examples.parquet 10,485,760 rows = every feature x its top-5 windows, DECODED: feature_id, rank, activation, text, peak_token, window_len, doc_idx, peak_position, fire_count_1b (browse it in the Data Studio tab)
feature_split.json / .npz the fixed feature split used by the MAEMM inverter papers: eval 100,000 / RL 150,000 / SFT 1,847,152 (seed 2026)

Training

  • BatchTopK (Bussmann et al.), dictionary_learning-style trainer run feature-parallel over 8 GPUs (each rank owns 262,144 features; global top-k via all-gather, all-reduced reconstruction, aux-k loss alpha 1/32 with 40,960 aux features, learned activation threshold with EMA beta 0.999). lr 1.77e-5, warm-up 1,000 steps, decay from step 195,312, batch 4,096 tokens x 244,140 steps = 1.0e9 tokens streamed from openbmb/Ultra-FineWeb (en, contexts of 512, documents from index 100,000 on), activations scaled to unit mean norm (norm factor 83.37, folded back into the weights), bf16 matrices.
  • Caveat, please read: the training-time streamer sharded the dataset AFTER applying the document skip, so all 8 ranks streamed the SAME documents — the run saw ~125M unique tokens, each 8 times, rather than 1B unique tokens. The bug was found after training and fixed before the max-activation scan (maxacts_top5.pt is over the true 1B distinct tokens). Held-out reconstruction is nevertheless on par with the 131k SAE (below); a retrain on 1B distinct tokens would likely improve it further.

Held-out metrics (verify.json; 20,004,864 fresh Ultra-FineWeb tokens, single stream)

explained variance EV (per batch) L0 features that fire learned threshold
0.711 0.698 67.5 100% (2,097,152 / 2,097,152 over the 1B-token scan; 0 dead) 1.6828

For comparison the 131k SAE scores EV 0.693-0.704 at L0 64 with 0.017% dead features.

Fire-rate percentiles over the 1B-token scan (fraction of tokens): p1 2.0e-6, p50 5.0e-6, p95 6.5e-5, p99 4.5e-4. Peak activation percentiles: p1 3.8, p50 6.3, p95 17.8, p99 25.3.

Loading

import torch
sd = torch.load("saes_Qwen_Qwen3.6-27B_batch_top_k/resid_post_layer_42/trainer_0/ae.pt", map_location="cpu")  # 43 GB
W_enc, b_enc, W_dec, b_dec, thr = sd["encoder.weight"], sd["encoder.bias"], sd["decoder.weight"], sd["b_dec"], float(sd["threshold"])
# encode: pre = (h - b_dec) @ W_enc.T + b_enc ; acts = pre * (pre > thr)     (BatchTopK inference uses the learned threshold, not top-k)
# decode: h_hat = acts @ W_dec.T + b_dec

h is the raw post-layer-42 residual (model.layers[42] output) of Qwen3.6-27B; the norm factor is already folded in.

Provenance

Trained 2026-09-11 (Modal, 8 x B200, ~8 h) for the MAEMM activation-to-text inverter project (MATS, Neel Nanda stream). Max-act windows: docs_used 747,623, tokens_seen 1,000,013,824. Related datasets: ceselder/maemm-27b-heldout.

Identity and Version

Repository
ceselder/qwen36-27b-sae2m-l42
Publisher
De Schamphelaere
Task
Not stated by the source
Modality
Other
Library
Not stated by the source
Parameters
Not stated by the source
Languages
Not stated by the source
Revision
de89b1c1eb70f5f4b1a18c0a3ca848e7d71d6e6b
First published
2026-09-20
Last updated
2026-09-20

Files and Weights

10 files, 45.2 GB in total. The weights are 3 files totalling 44.5 GB in npz, pt.

Weights3 files · 44.5 GB
Configuration4 files · 3.6 KB
Documentation1 file · 4.3 KB
Other1 file · 661.5 MB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
feature_split.npzWeights8.4 MB dd1e1c424794
maxacts_top5.ptWeights1.5 GB b96d66cee676
saes_Qwen_Qwen3.6-27B_batch_top_k/resid_post_layer_42/trainer_0/ae.ptWeights43.0 GB bc2819a094ce
feature_split.jsonConfiguration478 B
maxacts_top5.summary.jsonConfiguration613 B
saes_Qwen_Qwen3.6-27B_batch_top_k/resid_post_layer_42/trainer_0/config.jsonConfiguration1.6 KB
verify.jsonConfiguration880 B
README.mdDocumentation4.3 KB
data/examples.parquetOther661.5 MB cb15d17f46f1
.gitattributesRepository1.5 KB

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
44.5 GB
Download from De Schamphelaere

Released by De Schamphelaere through its official repository on Hugging Face. Read the license.

Built From

Memory Requirements

PrecisionWeights in memory
As published44.5 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About qwen36-27b-sae2m-l42

Can I use qwen36-27b-sae2m-l42 commercially?

Yes. qwen36-27b-sae2m-l42 is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.