glyph-sft-v1

SFT of Qwen/Qwen3-4B-Base on a custom TASK trace format (plans, todos, tool calls, satisfaction markers ⊨, response blocks). LoRA on attention + MLP, with lm_head in modules_to_save and a separate higher learning rate so termination tokens are actually learned.

Training data: JayZenith/glyph-sft-v1-data (private, 1098 traces, 80/10/10 split).

Held-out test loss (110 traces, never seen in training)

base sft delta
mean loss 1.280 0.972 −0.308
perplexity 3.60 2.64 36% lower
SFT wins per ex. 110/110

Format quality (5-prompt generation eval)

base sft
valid trace 0/5 4/5
ends with response 0% 100%
has plan 0% 100%
no repetition 60% 100%
not truncated 20% 100%
used tools when given 0/4 4/4
avg score (out of 7) 0.2 6.4

The one failed valid-trace was a no-tool reasoning prompt where the model wrote a 5-step plan but didn't emit ⊨ N satisfaction markers for every step. This is a fixable issue and a clean target for RL.

Training

  • 1× A100 80GB SXM4, ~1h32m
  • LoRA rank 64, alpha 64, dropout 0.05
  • targets: q,k,v,o,gate,up,down
  • modules_to_save=["lm_head"]
  • LR = 2e-5 (both trunk and lm_head — separate optimizer groups, equal rate)
  • assistant-only loss masking
  • 3 epochs, 330 total steps, eval every 50 steps incl. greedy gen-eval
  • trainable: 521M / 4.54B params (11.5%)
  • final eval_loss: 0.958

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

tok = AutoTokenizer.from_pretrained("JayZenith/glyph-sft-v1")
model = AutoModelForCausalLM.from_pretrained(
    "JayZenith/glyph-sft-v1", torch_dtype=torch.bfloat16, device_map="auto"
)

Status

This is the SFT starting point for an RL run (validator-shaped reward, prime-rl). It is not a final chat model.

Downloads last month
901
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for JayZenith/glyph-sft-v1

Adapter
(53)
this model