Downloads · 30 days
8
1% of all-time downloads
Vaniello/noesis-rwkv7-g1h-2.9b
noesis-rwkv7-g1h-2.9b is a machine learning model from Vaniello. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for rwkv. The card lists the license as apache-2.0.
Fine-tuned from BlinkDL/rwkv-7-g1h (2.9B) using trajectory-regularized state training — a novel RWKV-specific training objective that shapes the WKV state trajectory to carry richer information per token, particularly…
Downloads · 30 days
8
1% of all-time downloads
All-time downloads
894
Public
Repo size
11.8 GB
Likes
0
Public
Click a slice to open those files.
.pth11.8 GB · 100%
From the Hugging Face model README
Fine-tuned from BlinkDL/rwkv-7-g1h (2.9B) using
trajectory-regularized state training — a novel RWKV-specific training objective that
shapes the WKV state trajectory to carry richer information per token, particularly inside
<think> reasoning spans.
Research project: github.com/Vaniell0/noesis. Goal: understand how an RNN state machine can learn to reason rather than retrieve — exploiting RWKV-7's recurrent state as a working-memory substrate.
| File | Step | Overall | Extraction | Symbolic | Arithmetic | Best for |
|---|---|---|---|---|---|---|
rwkv-step9b-e0.pth | step9b epoch 0 | 39.6% | 50.0% | 62.5% | 75.0% | further fine-tuning |
rwkv-step9b-e1.pth | step9b epoch 1 | 39.6% | 12.5% | 87.5% | 100.0% | symbolic/arithmetic |
Best documented result (step9 epoch 0, not in this upload — checkpoint lost to disk overflow
during training): 43.75% overall, extraction 62.5%, symbolic 75%, arithmetic 75%.
Eval JSON is included in the repo under experiments/A0_eval/results/step9_e0_eval_np512.json.
Recommendation: use e0 for continued fine-tuning (better extraction/reasoning balance). Use e1 if you specifically need symbolic or arithmetic performance.
| Model | Overall | bit_decoding | Symbolic | Extraction | Scheduling |
|---|---|---|---|---|---|
| Qwen2.5 1.5B | 37.5% | 0% | 75% | 50% | 50% |
| RWKV-7 World 2.9B | 25% | — | — | — | — |
| G1h 2.9B base | 39.6% | 18.8% | 25% | 87.5% | 16.7% |
| Gemma3 4B | 41.7% | 6.3% | 37.5% | 75% | 83.3% |
| noesis step9 e0 (lost) | 43.8% | 0% | 75% | 62.5% | 50% |
| noesis step9b e0 (this repo) | 39.6% | 0% | 62.5% | 50% | 50% |
Note: G1h base scores 39.6% at np=512 — already competitive. The fine-tune shifts the profile (symbolic 25%→75%, scheduling 16.7%→50%) but trades bit_decoding (18.8%→0%). The bit_decoding regression is a corpus artifact: DSL-format action-chain training suppresses the multi-step bitwise CoT the base model uses.
WKV state penalty that rewards state motion rather than suppressing it — sign-flipped slow-feature analysis applied to per-layer states. For each token t ≥ 2:
L_state(t) = Σ_L w_L × (
−λ_δ · ‖s_L(t) − s_L(t−1)‖₂ # delta: reward state change
−λ_κ · ‖(s_L(t)−s_L(t−1)) − (s_L(t−1)−s_L(t−2))‖₂ # curvature
)
Layer weights from A0.5 causal probing (KL under zero-layer corruption):
w_4=0.035, w_16=0.506, w_20=0.238 (L16 dominates — consistent across scales).
L_state applied with different weights per token span:
<think>…</think>: full weight (α=1e-3)<think>: 5% weight (α=5e-5)Effect: gradient strongly shapes WKV state motion during reasoning spans; answer tokens receive weak signal and remain clean for extraction.
loss = −mean_entropy(per-rank importance scores across LoRA pairs)
Prevents LoRA rank collapse — keeps all 32 rank slots active. Importance score
per rank = ‖lora_A[rank, :]‖ × ‖lora_B[:, rank]‖.
N-pass re-feed sweep (H10): Silent re-feeds before final decode (no output, just state accumulation):
N=3 collapse mechanism: DSL-format training creates an implicit <tool_call> attractor.
By the third pass, WKV state has accumulated a "waiting for tool_result" pattern that
overwrites the reasoning signal. The model has no self-termination signal.
Single bit_decoding solve:
At N=2, K=128, state_readout mode — one bit_decoding task (bit_sub_01) was solved
by reasoning through bit positions across two passes. Zero solved in single-pass mode.
This is the only bit_decoding success in the full sweep, suggesting the problem is
compute-depth rather than knowledge.
H8/H9 — state computation confirmed (causal probe): 1152 paired forwards, 4 corruption types. G1h 2.9B vs RWKV-7 World 2.9B:
H12b — multi-slot working memory (base capability): G1h 2.9B base holds K=8 parallel slots at 53% accuracy (P=1 retrieval) without any working-memory training. G1d 0.4B base: ~11%. The 5× gap is an emergent property of the G1 pre-training recipe. Action-chain fine-tuning (step7) hurt this: 7/9 cells regressed (K=2,P=1: base 65% → step7 25%). Specialisation to one-shot slot access costs depth retention.
Step9 corpus: 297 RFC binary-protocol QA tasks (TCP, SCTP, NTP, HTTP/2, OSPF, BGP, …),
268 train rollouts, 71k tokens, plain CoT format with <think> spans and state_mask tensor.
ctx_len=32768, LoRA rank=32 α=64, 1 epoch on RTX 4090 (~5 hours).
Step9b corpus: 6-source mix — RFC QA (25%), HH-RLHF (20%), ReAct (15%), action chains (15%), self-generated CoT (15%), base language (10%). 836 rollouts, 226k tokens. ctx_len=512 — this was a mistake: at ctx_len=512, the trajectory window has T<3 chunks and L_state collapses to near-zero gradient. Extraction regressed (62.5%→50% e0, 12.5% e1) as a result.
from rwkv.model import RWKV
from rwkv.utils import PIPELINE, PIPELINE_ARGS
# Note: pass path WITHOUT .pth extension — rwkv package appends it
model = RWKV(model="path/to/rwkv-step9b-e0", strategy="cuda bf16")
pipeline = PIPELINE(model, "rwkv_vocab_v20230424")
prompt = """<|im_start|>system
You are a precise protocol analyst. Work step by step.<|im_end|>
<|im_start|>user
RFC 793 TCP header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
What is the bit offset and width of Destination Port?<|im_end|>
<|im_start|>assistant
<think>"""
# RWKV_CUDA_ON=0 if cuBLAS headers unavailable (use PyTorch WKV ops)
import os; os.environ["RWKV_CUDA_ON"] = "0"
args = PIPELINE_ARGS(temperature=0.1, top_p=0.9, token_count=512)
output = pipeline.generate(prompt, token_count=512, args=args)
print(output)
Active hypotheses with data:
docs/effort-frontier.mdFull hypothesis tree (H1–H23): HYPOTHESES.md
Research by Vaniello. Code: github.com/Vaniell0/noesis. Base model by BlinkDL / RWKV team.