Model reference · open weights
SmolLM3-GSM8K-SFT is an open-weight language model from Hugging Face. SmolLM3-3B-GSM8K-SFT (BF16) weighs 6.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the HuggingFaceTB/SmolLM3-3B-GSM8K-SFT model card, 2026-10-01
What it is
| Released by | Hugging Face |
|---|---|
| Released | 2026-04-03 |
| Parameters | 3.1B |
| VRAM | 6.2 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB | 7 | 1 | 63K | 11.6 GB |
| RTX 4060 Ti 16 GB | 14 | 3 | all 64K | 15.4 GB |
| RTX 3090 24 GB | 27 | 6 | all 64K | 23.4 GB |
| RTX 4090 24 GB | 27 | 6 | all 64K | 23.4 GB |
| RTX 5090 32 GB | 40 | 10 | all 64K | 31.0 GB |
| L40S 48 GB | 61 | 15 | all 64K | 44.0 GB |
| A100 80 GB | 118 | 29 | all 64K | 78.2 GB |
| H100 80 GB | 111 | 27 | all 64K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 137 | 34 | all 64K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 159 | 39 | all 64K | 107 GB |
| H200 141 GB | 210 | 52 | all 64K | 138 GB |
| B200 180 GB | 273 | 68 | all 64K | 176 GB |
| 2× RTX 3060 12 GB tensor parallel | 26 | 6 | all 64K | 11.6 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 7.4 GB | 9.3 GB |
| 5 | 9.9 GB | 18.9 GB |
| 8 | 11.7 GB | 26.2 GB |
| 16 | 16.5 GB | 45.5 GB |
| 32 | 26.2 GB | 84.1 GB |
| 64 | 45.5 GB | 161 GB |
One card, with vLLM's small-card settings.
From the model card
Fine-tuned version of HuggingFaceTB/SmolLM3-3B-Base optimized for grade school math (GSM8K benchmark).
| Metric | Score |
|---|---|
| GSM8K Accuracy | 65.8% |
| Baseline (SmolLM3-3B-Base) | 23.3% |
| Improvement | +42.5 pp (2.8x) |
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "HuggingFaceTB/SmolLM3-3B-GSM8K-SFT"
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_id)
# Solve a math problem
messages = [{"role": "user", "content": "Janet's ducks lay 16 eggs per day. She eats three for breakfast every morning and bakes muffins for her friends every day with four. She sells the remainder at the farmers' market daily for $2 per fresh duck egg. How much in dollars does she make every day at the farmers' market?"}]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, do_sample=False)
print(tokenizer.decode(outputs[0], skip_special_tokens=False))
Expected output:
Janet's ducks lay 16 eggs per day.
She eats 3 for breakfast, so 16 - 3 = 13 eggs remain.
She bakes muffins with 4 eggs, so 13 - 4 = 9 eggs remain.
She sells the remaining 9 eggs at $2 each.
9 × $2 = $18
#### 18
from vllm import LLM, SamplingParams
llm = LLM(model="HuggingFaceTB/SmolLM3-3B-GSM8K-SFT")
tokenizer = llm.get_tokenizer()
messages = [{"role": "user", "content": "What is 15 * 23 + 47?"}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = llm.generate([prompt], SamplingParams(max_tokens=256, temperature=0))
print(outputs[0].outputs[0].text)
| Parameter | Value |
|---|---|
| Base Model | HuggingFaceTB/SmolLM3-3B-Base |
| Training Data | MetaMathQA (100k samples) |
| Method | Supervised Fine-Tuning (SFT) with TRL 1.0.0 |
| Hardware | NVIDIA H100 80GB |
| Training Time | ~3h 16min |
| Epochs | 1 |
| Batch Size | 2 (effective 16 with gradient accumulation) |
| Learning Rate | 1e-5 |
| Max Sequence Length | 2048 |
| Optimizer | AdamW |
This model uses the ChatML format:
You are a helpful AI assistant.
What is 2 + 2?
2 + 2 = 4
#### 4
We tried multiple approaches to improve math reasoning:
| Stage | GSM8K Accuracy | Method | Notes |
|---|---|---|---|
| Baseline | 23.3% | - | SmolLM3-3B-Base with no training |
| SFT V1 | 59.6% | SFT 2 epochs | MetaMathQA 50k samples |
| GRPO | 58% | GRPO | GSM8K train set - ineffective |
| SFT V2 | 65.8% | SFT 1 epoch | MetaMathQA 100k samples ✓ |
Key finding: More diverse training data (100k vs 50k samples) was more effective than more epochs or GRPO reinforcement learning.
Training and evaluation scripts are available in the training/ folder:
# Train from scratch
python training/train_sft.py
# Evaluate on GSM8K
python training/evaluate_gsm8k.py --model HuggingFaceTB/SmolLM3-3B-GSM8K-SFT --samples 1319
#### answer@misc{smollm3-gsm8k-sft,
title={SmolLM3-3B-GSM8K-SFT: Fine-tuned SmolLM3 for Math Reasoning},
author={Hugging Face},
year={2026},
publisher={Hugging Face},
url={https://huggingface.co/HuggingFaceTB/SmolLM3-3B-GSM8K-SFT}
}
Apache 2.0
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Math Reasoning | GSM8K | GSM8K Accuracy | 65.800 |