CoolFace
Modelpublic

HaniAI/SonaMath-0.5B

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
1likes21downloads
Model Card

SonaMath-0.5B

## Important (please read) The weights in this repository are from the SFT stage only. - They are not trained with our experimental RL method. - They are not a drop-in replacement for GRPO / group-based optimizers. - GSM8K numbers below measure this SFT checkpoint, not an RL algorithm. We also research a new RL formulation (intended as an alternative to GRPO-style group optimization) and a custom reasoning architecture for small LMs. That work is active / unfinished and will be reported separately when we have matched-compute experiments and RL checkpoints. This page is a transparent research preview under limited compute — not a claim that “new RL already beats GRPO.”

SonaMath is a research preview of a custom architecture for math reasoning in the small-language-model (SLM) regime (approx. 0.5B parameters), trained under a strict compute budget (approx. 3B pretrain tokens + light SFT).

Formerly previewed as JunMath; the project brand is now SonaMath.

What this release is / is not

IsEarly SFT weights + tokenizer + public eval protocol
IsEvidence that a small custom model can start learning math format/reasoning under few tokens
IsA call for compute to scale data, ablations, and (later) RL experiments
Is notAn RL-trained model
Is notA finished “GRPO killer” or published RL baseline win
Is notA drop-in transformers AutoModel checkpoint (custom runtime)

How to use (inference)

Important: SonaMath uses a custom architecture. It does not load with AutoModelForCausalLM.from_pretrained(...) / standard Hugging Face pipeline yet. Public files are weights + tokenizer; the research runtime loader is required to run generation.

1) Download files from this repo

FileRole
sonamath.ptSFT weights package
tokenizer.jsonBPE tokenizer (32k)
tokenizer_config.json / special_tokens_map.jsonTokenizer metadata
config.jsonPublic model card config
bash
# Option A: huggingface-cli
huggingface-cli download HaniAI/SonaMath-0.5B --local-dir ./SonaMath-0.5B

# Option B: Python
pip install -U "huggingface_hub>=0.23"
python
from huggingface_hub import snapshot_download

path = snapshot_download("HaniAI/SonaMath-0.5B", local_dir="SonaMath-0.5B")
print("downloaded to", path)
# weights: SonaMath-0.5B/sonamath.pt
# tokenizer: SonaMath-0.5B/tokenizer.json

Downloading the repo does count as usage and is the supported way to fetch artifacts while the full open runtime is still under development.

2) Prompt format (required)

The model is trained with explicit problem / thinking tags. Build prompts like:

text
<problem>
{your grade-school math word problem here}
</problem>
<think>

The model continues with reasoning and typically closes with:

text
... reasoning ...
<answer>
{final number}
</answer>

3) Recommended decoding (matches public GSM8K number)

SettingValue
Modegreedy (temperature = 0)
Max new tokens1024
Stop</answer> or EOS when available in your runtime

4) Pseudocode (custom research runtime)

python
# Pseudocode — requires the SonaMath research runtime (not a stock transformers model).
# Full open loader will be linked here when released.

from sonamath_runtime import load_sonamath, generate  # research package (not on PyPI yet)

model, tokenizer = load_sonamath(
    hub_id="HaniAI/SonaMath-0.5B",   # or local folder from snapshot_download
    device="cuda",
)

problem = (
    "Natalia sold clips to 48 of her friends in April, and then she sold "
    "half as many clips in May. How many clips did Natalia sell altogether "
    "in April and May?"
)

text = generate(
    model,
    tokenizer,
    problem=problem,
    max_new_tokens=1024,
    temperature=0.0,  # greedy — same as public eval
)
print(text)

5) What works today vs later

Today (this card)Coming later
Download weights + tokenizer from HubPublic minimal inference package / Space
Reproduce eval protocol (greedy, max_new=1024)Drop-in scripts without private stack
Interactive testing in the author’s research stackOptional HF Space demo

If you only need artifacts for inspection, fine-tuning research, or offline study:

python
from huggingface_hub import hf_hub_download

ckpt = hf_hub_download("HaniAI/SonaMath-0.5B", "sonamath.pt")
tok  = hf_hub_download("HaniAI/SonaMath-0.5B", "tokenizer.json")
print(ckpt, tok)

6) Not supported (yet)

python
# ❌ Will NOT work — not a standard transformers architecture export
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("HaniAI/SonaMath-0.5B")  # no

Questions / runtime access requests: open a Discussion on this model page.

Two research tracks (keep them separate)

Track A — Architecture + data-efficient SFT (this repo)

  • Custom architecture specialized for multi-step math reasoning in small LMs
  • Pretrain approx. 3B tokens (math-focused, English-centric)
  • Light SFT on math Q&A / solution-style data
  • Public artifact: sonamath.pt (SFT-stage, weights only)

Track B — RL theory & methods (research in progress; not this checkpoint)

  • Studying a new RL formulation as an alternative to group-based / GRPO-style post-training
  • Status: theory + early experimentsno claim of superiority on this model card
  • Will not use Track A’s GSM8K score as “proof” of Track B
SFT checkpoint for architecture research now; RL-vs-GRPO is future work with separate evals.

Evaluation (SFT checkpoint only)

Protocol

ItemSetting
BenchmarkGSM8K test (full)
Samplesn = 1319 (entire official test split)
Decodinggreedy (temperature = 0)
Max new tokens1024
Metricnumeric / exact match on final answer
StageSFT only

Results

ModelStageParams (approx.)GSM8K full (greedy)Parse rate95% Wilson CI
SonaMath-0.5B (this repo)SFT0.5B13.8% (182/1319)99.3%[12.0%, 15.8%]

Notes

  • This is the authoritative public number for this release (full test set).
  • Absolute accuracy is well below large or math-specialized models — expected under approx. 3B pretrain tokens.
  • When Track B (RL) is ready, we will report SFT vs GRPO-style vs our RL under matched compute, on separate checkpoints.

Highlights

BrandSonaMath
Parametersapprox. 0.5B
Released stageSFT preview
Pretrain tokensapprox. 3B
ArchitectureCustom (details partially private while under development)
RL (Track B)In progress — not applied to these weights
LanguageEnglish math focus
GSM8K (full)13.8% (182/1319), greedy, max_new=1024

Files

FileDescription
sonamath.ptSFT weights-only package (no optimizer)
config.jsonPublic metadata
tokenizer.json (+ config maps)32k BPE, digit-aware

Intended use

  • Research discussion on small reasoning LMs and data-efficient math training
  • Download weights/tokenizer for inspection and future runtime integration
  • Planning compute for larger pretrain, cleaner SFT, and future RL ablations

Not intended for: production tutoring, grading, high-stakes decisions, or citing this repo as an RL result.

Limitations

  • Low absolute GSM8K accuracy vs large / math-specialized models
  • May hallucinate arithmetic and multi-step logic — verify answers
  • Custom architecture: full inference stack not fully open as transformers yet
  • No public RL checkpoint in this release

Compute context & GPU ask

StageStatus / budget
Pretrainapprox. 3B tokens (done, limited hardware)
SFTLight schedule → this release
RL (vs GRPO-style)Research track — needs more GPU for fair ablations

Open a Discussion on this page if you can support A100/H100 hours for scale-up and matched-compute RL ablations.

Safety

Outputs can be confidently wrong. Do not use without human checking for education, finance, or safety-critical settings.

Citation

bibtex
@misc{sonamath2026sft,
  title  = {SonaMath-0.5B: SFT-Stage Research Preview of a Small Math Reasoning Model},
  author = {HaniAI},
  year   = {2026},
  note   = {SFT weights only; GSM8K full test 13.8\\% (182/1319), greedy, max\\_new=1024; RL research is separate},
  url    = {https://huggingface.co/HaniAI/SonaMath-0.5B}
}

License

Apache-2.0 (weights and tokenizer files in this repository).