sot-phase1-wikitext103-sot-seed42-tc768d013
Part of the Self-Organising Transformer research project: phase1, dataset wikitext103, condition sot, seed 42.
Gated supernet: a sigmoid gate on every layer, head, FFN group and skip edge, trained under a budget on the gate-weighted cost.
Read this first
- Training-time val ppl (random val batches): dense 24.30, SOT 24.44. Compare Phase 2 runs with these values, not with the
evaluate.pyvalues below, because Phase 2 reports training-time val ppl. - The gate-weighted cost is a proxy, not compute. This gated model runs every tensor (1.0 of dense FLOPs). Only a physically smaller model saves compute.
Full context: RESEARCH_LOG.md, the 2026-10-08 width scale-up entry.
Intended use and limitations
- Intended use: reproduce and inspect the results of the Self-Organising Transformer study.
- Not for: production or downstream use. This is a small research model trained for 10,000 steps on WikiText-103 only. It is not instruction-tuned or safety-tuned. Its zero-shot benchmark scores are close to chance.
- It needs the project code and
transformers<5.0(see How to use).
How to use
The model class is defined in the project repository and is not registered with AutoModel, so the Hub widget and AutoModelForCausalLM do not work. Use the repository code (it needs transformers<5.0; 5.x corrupts the reload of this model):
git clone https://github.com/sbartlett97/self-organising-transformer
cd self-organising-transformer && pip install -r requirements.txt
python generate.py sbartlett97/sot-phase1-wikitext103-sot-seed42-tc768d013 --prompt "The history of the city begins in"
from ablation_importance import resolve_checkpoint
from evaluate import load_model
from transformers import AutoTokenizer
path = resolve_checkpoint("sbartlett97/sot-phase1-wikitext103-sot-seed42-tc768d013")
model = load_model(str(path), None).eval()
tok = AutoTokenizer.from_pretrained(path)
logits = model(tok("The history of the city begins in", return_tensors="pt").input_ids)["logits"]
Performance
evaluate.py perplexity: 100 val batches of 8 x 256 tokens.
Perplexity: 22.00
- loses to the matched dense baseline (
21.98) by0.1%
| Task | Metric | Value | Stderr |
|---|---|---|---|
| hellaswag | acc | 0.2596 | 0.0044 |
| hellaswag | acc_norm | 0.2676 | 0.0044 |
| arc_easy | acc | 0.3190 | 0.0096 |
| arc_easy | acc_norm | 0.3140 | 0.0095 |
| piqa | acc | 0.5370 | 0.0116 |
| piqa | acc_norm | 0.5060 | 0.0117 |
| winogrande | acc | 0.5138 | 0.0140 |
Gates
Threshold (auto-median of this checkpoint's layer gates): 0.2247
| Layer | Active | Heads | FFN groups | Layer gate |
|---|---|---|---|---|
| 0 | — | 12 | 128 | 0.1786 |
| 1 | — | 12 | 128 | 0.1734 |
| 2 | — | 12 | 128 | 0.1806 |
| 3 | — | 12 | 128 | 0.2053 |
| 4 | — | 12 | 128 | 0.2157 |
| 5 | ✅ | 12 | 128 | 0.2401 |
| 6 | ✅ | 12 | 128 | 0.2412 |
| 7 | ✅ | 11 | 128 | 0.2265 |
| 8 | ✅ | 8 | 128 | 0.2363 |
| 9 | ✅ | 3 | 128 | 0.2381 |
| 10 | ✅ | 2 | 128 | 0.2365 |
| 11 | — | 3 | 128 | 0.2228 |
Training trajectory
- Final train loss:
3.0640at step 10000 - Final cost proxy (gate-weighted, not compute):
0.1215 - Final training-time val loss (random val batches):
3.1962(ppl24.44) at step 10000
Hyperparameters
| Hyperparameter | Value |
|---|---|
| model_type | sot |
| dataset | wikitext |
| dataset_config | wikitext-103-raw-v1 |
| seed | 42 |
| max_steps | 10000 |
| seq_len | 256 |
| batch_size | 16 |
| grad_accum | 8 |
| max_layers | 12 |
| d_model | 768 |
| max_heads | 12 |
| max_ffn_dim | 3072 |
| ffn_groups | 128 |
| target_cost | 0.13 |