Open-weight model
looped-moe-329m-ablation-tensorboard
by Pengxiang Li pengxiang/looped-moe-329m-ablation-tensorboard
looped-moe-329m-ablation-tensorboard is an open-weight model from Pengxiang Li, released under Apache License 2.0. Its published files total 23.4 MB.
TensorBoard scalar logs and per-loop activation diagnostics for seven ablations of a 329M looped MoE transformer. Each run changes exactly one switch of the base recipe.
Model Card
By Pengxiang Li, published under apache-2.0, revision f24a6c7e64a8.
TensorBoard scalar logs and per-loop activation diagnostics for seven ablations of a 329M looped MoE transformer. Each run changes exactly one switch of the base recipe. - 10 layers, hidden 512, 8 heads / 4 KV heads - Global batch 1024 sequences x 1024 tokens, micro-batch 16, AdamW (0.9, 0.95), weight decay 0.1, gradient clip 1.0, bf16 - Loop residual scale gamma = lambda / (H sqrt(L)) and embedding re-injection g = lambda / (t sqrt(L)), with lambda = 0.5 frozen bpsegmentlen=0 runs all H loops as one graph and backpropagates once per step. It also removes the intermediate-loop losses and the extra optimizer steps of the segmented scheme. With H=3 the segmented scheme has a single segment…
Read Pengxiang Li's full model card
Looped MoE Transformer (329M) ablation logs
TensorBoard scalar logs and per-loop activation diagnostics for seven ablations of a 329M looped MoE transformer. Each run changes exactly one switch of the base recipe.
Base recipe
- 10 layers, hidden 512, 8 heads / 4 KV heads
- MoE: 30 routed + 2 shared experts, top-8 (shared included), expert width 512
- The 10-layer block is applied H times
- lr 2e-4, WSD schedule: 10% warmup, 10% linear decay to 0.1x
- Global batch 1024 sequences x 1024 tokens, micro-batch 16, AdamW (0.9, 0.95), weight decay 0.1, gradient clip 1.0, bf16
- Data: FineWeb-Edu (10B-token sample), SmolLM tokenizer
- Loop residual scale gamma = lambda / (H sqrt(L)) and embedding re-injection g = lambda / (t sqrt(L)), with lambda = 0.5 frozen
- RMSNorm (affine) on the MoE branch output
- Segmented backprop: every 3 loops the model computes the loss, backpropagates, takes an optimizer step, and detaches the state (
bp_segment_len=3)
Runs
| Folder | Change | H | Steps | Status | Final eval/loss |
|---|---|---|---|---|---|
nobpk_H3 |
bp_segment_len 3 -> 0 |
3 | 10000 | finished | 3.2817 |
nobpk_H6 |
bp_segment_len 3 -> 0 |
6 | 10000 | finished | 3.2318 |
nobpk_H9_mb8 |
bp_segment_len 3 -> 0, micro-batch 8 |
9 | 10000 | non-finite gradient at step 1643 | - |
nobpk_H12_mb8 |
bp_segment_len 3 -> 0, micro-batch 8 |
12 | 10000 | non-finite gradient at step 8416 | 3.3431 (step 8000) |
noresscale_H9 |
loop residual scale off (gamma = 1) | 9 | 5000 | finished | 3.2039 |
noinject_H9 |
embedding re-injection off | 9 | 5000 | finished | 3.2601 |
noffnrms_H9 |
RMSNorm on the MoE output off | 9 | 5000 | finished | 3.2772 |
bp_segment_len=0 runs all H loops as one graph and backpropagates once per step. It also removes the intermediate-loop losses and the extra optimizer steps of the segmented scheme. With H=3 the segmented scheme has a single segment, so nobpk_H3 is mathematically the same as the base recipe at H=3.
H=9 and H=12 without segmentation ran out of memory at micro-batch 16 on 96 GB cards, so they use micro-batch 8 (global batch unchanged). MoE capacity is computed per micro-batch, so this is a second difference from the base recipe for these two runs.
The 5000-step runs keep the 10% / 10% WSD ratios, so each of them finishes its own decay at step 5000.
Files
events.out.tfevents.*: scalars.train/grad_normis the global gradient norm before clipping.module_diag/*/act_norm_meanandact_var_meanare activation norm and variance of the attention and MoE branches.module_diag/*/grad_norm_meanis always 0: per-module gradient norms were not collected under FSDP2, so ignore it.module_diag.csv: every 50 steps, per layer and per loop (cHxx), the branch activation norm, variance, effective rank, top singular value and mean cosine. The empty per-module gradient-norm columns were removed.- In
nobpk_H9_mb8andnobpk_H12_mb8, the training script restarted from a snapshot after the non-finite gradient (from step 1000 and step 8000), so those steps appear twice. The first pass is the result. The H=9 restart hit a second non-finite gradient at step 1852.
Notes
- No baseline runs are included. The base recipe was trained on a different cluster. Compare against it after measuring the platform offset with
nobpk_H3, which is equivalent to the base recipe. - Evaluation uses a held-out part of the same FineWeb-Edu pack. The loss is token-mean cross-entropy in nats.
Identity and Version
- Repository
- pengxiang/looped-moe-329m-ablation-tensorboard
- Publisher
- Pengxiang Li
- 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
- f24a6c7e64a8284f9a555e3c0b81925ef30f7c9b
- First published
- 2026-09-25
- Last updated
- 2026-09-25
Files and Weights
19 files, 23.4 MB in total.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| README.md | Documentation | 3.6 KB | — |
| nobpk_H12_mb8/events.out.tfevents.1790244572.run.0.0 | Other | 2.3 MB | da478184f3b2 |
| nobpk_H12_mb8/events.out.tfevents.1790276376.run.1.0 | Other | 7.6 KB | 28e87f4fdae8 |
| nobpk_H12_mb8/module_diag.csv | Other | 3.1 MB | — |
| nobpk_H3/events.out.tfevents.1790241584.run.0.0 | Other | 2.7 MB | 252917bca036 |
| nobpk_H3/module_diag.csv | Other | 1.1 MB | — |
| nobpk_H6/events.out.tfevents.1790242022.run.0.0 | Other | 2.7 MB | ea31f8b5f0bd |
| nobpk_H6/module_diag.csv | Other | 1.9 MB | — |
| nobpk_H9_mb8/events.out.tfevents.1790244038.run.0.0 | Other | 443.9 KB | 18faec43111b |
| nobpk_H9_mb8/events.out.tfevents.1790252820.run.1.0 | Other | 230.8 KB | f9195c4c9242 |
| nobpk_H9_mb8/events.out.tfevents.1790257363.run.2.0 | Other | 33.1 KB | 4baab517f367 |
| nobpk_H9_mb8/module_diag.csv | Other | 720.6 KB | — |
| noffnrms_H9/events.out.tfevents.1790264201.run.0.0 | Other | 1.4 MB | 85c1eaae4769 |
| noffnrms_H9/module_diag.csv | Other | 1.4 MB | — |
| noinject_H9/events.out.tfevents.1790258130.run.0.0 | Other | 1.4 MB | ae96da3ceeaf |
| noinject_H9/module_diag.csv | Other | 1.4 MB | — |
| noresscale_H9/events.out.tfevents.1790244567.run.0.0 | Other | 1.4 MB | 4c81d5c05dc4 |
| noresscale_H9/module_diag.csv | Other | 1.4 MB | — |
| .gitattributes | Repository | 1.5 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
Released by Pengxiang Li through its official repository on Hugging Face. Read the license.
Questions About looped-moe-329m-ablation-tensorboard
Can I use looped-moe-329m-ablation-tensorboard commercially?
Yes. looped-moe-329m-ablation-tensorboard 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.