β gate adapters: Qwen3.5-4B-Base, forgetting recipe
Trained adapters for the paper "Beta Gate: Shorter RL Reasoning in Qwen3.5 Without Negative Eigenvalues" (Avi Fenesh, Tiyuvta.ai, 2026; appendix on supervised fine-tuning and forgetting). The β gate is a zero-initialized
matrix W per Gated DeltaNet layer that moves the delta-rule write strength beta toward its floor or its ceiling,
tau = tanh(W x). These are the adapters of the paper's forgetting check: Qwen3.5-4B-Base trained with LoRA on synthetic state-tracking tasks with WikiText replay, in three arms (LoRA, and LoRA plus the β gate with ceiling 1 or 2), 3 seeds each. The gated arms keep more of the base model's HumanEval score; Gate(0,1) keeps the most.
Code, receipts and the claims checker: https://github.com/avifenesh/gdn-beta-gate. Write-up: https://huggingface.co/blog/Avifenesh/beta-gate-qwen35. arXiv: to be added.
Base model: Qwen/Qwen3.5-4B-Base at revision 1001bb4d826a52d1f399e183466143f4da7b741b (Apache-2.0).
9 adapters, 360 MB in total.
How to load
These are not PEFT adapter folders and peft cannot load them: the gated arms need the patched Gated DeltaNet
forward from the code repository. library_name is pytorch because the files are plain PyTorch tensors for that
code, not a PEFT or transformers repository. Each adapter.safetensors holds the
trainable tensors under the training code's names: PEFT LoRA tensors (adapter name default) and, for the gated arms,
one float32 gate_w matrix per GDN layer. scripts/adapters.py to-pt turns a file back into the .pt checkpoint
that the code's --ckpt and --init_from flags read; the round trip is bit for bit.
hf download Avifenesh/gdn-beta-gate-qwen3.5-4b-base-forgetting --include "gate01/seed0/*" --local-dir adapters
git clone https://github.com/avifenesh/gdn-beta-gate && cd gdn-beta-gate
mkdir -p run_gate01_s0 && cp results/run_configs/forgetting/main_wide1_s0_box2/result.json run_gate01_s0/
python scripts/adapters.py to-pt ../adapters/gate01/seed0/adapter.safetensors run_gate01_s0/trainable.pt
python src/gdn_gate/rescore/rescore_4b.py --run_dir run_gate01_s0 --name main_wide1_s0 --out_dir out --parts he
result.json names the arm and rank the scorer rebuilds (folders: lora main_ctrl_s, gate01
main_wide1_s_box2, gate02 main_wide_s).
Contents
| Folder | Paper name | Code name | What it is |
|---|---|---|---|
lora/seed0 to seed2 |
LoRA | ctrl |
LoRA only; beta = sigmoid(b) in (0, 1) |
gate01/seed0 to seed2 |
Gate(0,1) | wide1 |
LoRA plus the β gate with ceiling 1: beta in [0, 1] |
gate02/seed0 to seed2 |
Gate(0,2) | wide |
LoRA plus the β gate with ceiling 2: beta in [0, 2) |
Each folder holds adapter.safetensors and adapter_meta.json (record, arm, seed, step, LoRA rank and alpha, gate
ceiling, base revision, sha256 of the source checkpoint). SHA256SUMS covers every file:
sha256sum -c SHA256SUMS after a full download.
Training
LoRA rank 16, alpha 32, on the four GDN projections; synthetic state-tracking tasks generated by the code repository (parity, swap and codeswap, --task_counts parity:16,swap:64,codeswap:64) with WikiText-103 replay (Salesforce/wikitext, wikitext-103-raw-v1), lr 1e-4 for LoRA and gate, 1,200 steps. One NVIDIA RTX PRO 6000 Blackwell Server Edition per run.
Evaluation
HumanEval pass@1 (openai/openai_humaneval, greedy, 164 problems) after training, seeds 0 / 1 / 2: LoRA 0.177 / 0.091 / 0.189 (mean 0.152), Gate(0,2) 0.207 / 0.274 / 0.311 (mean 0.264), Gate(0,1) 0.451 / 0.366 / 0.409 (mean 0.409); the untouched base scores 0.500. Gate(0,1) - LoRA is significant in every seed (McNemar p <= 4e-7).
Every number maps to a receipt and a check in the code repository (paper/CLAIMS.md, paper/figs/check_claims.py).
Limitations
- Research artifacts for reproducing and probing the paper's results. They are not tuned for deployment or safety and inherit the base model's limitations.
- The RL results cover one model family (Qwen3.5) at 2B, 4B and 9B, 3 to 6 seeds per arm, GSM8K training prompts only, and thinking budgets up to 8,192 tokens.
- Readouts are sampled; a rerun reproduces the protocol and, within seed and item noise, the numbers, not the bytes.
- Tested with vLLM 0.31.0, PyTorch 2.13 and transformers 5.17 on NVIDIA RTX PRO 6000, GB10 and RTX 5090 GPUs.
License
Apache-2.0, as the base model. Training data licenses stay with their sources (code repository,
data/MANIFEST.json).
Citation
@misc{fenesh2026betagate,
title = {Beta Gate: Shorter RL Reasoning in Qwen3.5 Without Negative Eigenvalues},
author = {Fenesh, Avi},
year = {2026},
note = {arXiv identifier to be added. Code: https://github.com/avifenesh/gdn-beta-gate}
}