🔥 Flint-1.2B — Reasoning-Native Agentic Small Language Model
"Strikes sparks from nothing. Small, sharp, starts fires."
Flint-1.2B is a small language model pretrained from scratch with a novel training methodology called Thought-Action Pretraining (TAP) — the model learns to reason internally (<think>) and use tools (<tool_call>) as part of its base language modeling objective, not as a post-training bolt-on.
🎯 The Edge
Most models learn reasoning in post-training (RLHF/GRPO). Most learn tool use in fine-tuning.
Flint learns both during pretraining. Thinking and acting are as natural to it as punctuation.
Capability
How It's Trained
Reference
<think>...</think> internal reasoning
LM objective on 114K reasoning traces from step 0
Phi-4-Mini-Reasoning, Quiet-STaR
<tool_call>...</tool_call> tool use
Native vocabulary, trained alongside prose
SmolTalk/APIGen
<act>...<observe>... agent loops
Multi-step trajectories as standard text
Orca-AgentInstruct
Think-before-act pattern
Model sees thinking precedes better actions
DeepSeek-R1
📐 Architecture
Parameter
Value
Parameters
1.24B
Hidden dim
2048
FFN dim (SwiGLU)
5504
Layers
22
Attention heads
32
KV heads (GQA)
4
Activation
SwiGLU
Normalization
RMSNorm (pre-norm)
Position encoding
RoPE (θ=500,000)
Vocab size
49,216
Context length
2048
Embedding tying
Yes
Design philosophy: Wide-and-shallow (22 layers × 5504 FFN vs typical 24 × 4096). Wider MLPs store more factual knowledge per parameter — critical for small models (1.5-Pints, arxiv:2408.03506).
<think>
Let me break this problem down step by step.
The equation is 2x + 5 = 13.
Subtract 5: 2x = 8. Divide by 2: x = 4.
Verify: 2(4) + 5 = 13 ✓
</think>
The solution is x = 4.
Tool calls:
User: What's the weather in Tokyo?
<think>
I need real-time data. Let me call the weather API.
</think>
<tool_call>
{"name": "get_weather", "arguments": {"city": "Tokyo"}}
</tool_call>
<tool_response>
{"temperature": 22, "condition": "partly cloudy"}
</tool_response>
It's 22°C and partly cloudy in Tokyo.
Agentic loops:
<think>
I need to: 1) Search for the paper 2) Read key sections 3) Summarize
</think>
<act>search_papers("quantum error correction 2024")</act>
<observe>Found: [1] "Threshold-free QEC"...</observe>
<think>
Paper [1] is most relevant. Let me read the methods section.
</think>
<act>read_paper("arxiv:2401.xxxxx", section="methods")</act>
<observe>The approach uses surface codes with...</observe>
Here's my summary: ...
🔄 Checkpointing
Save every 200 steps (~35 min of training)
Keep last 5 on disk
Push to Hub every 1000 steps for disaster recovery
Full state: weights + optimizer + RNG + data position
Async saving via Orbax (non-blocking)
Designed for Kaggle's session limits — training resumes automatically from latest checkpoint.
📈 Expected Performance
Benchmark
17h (6.5B tok)
60h (23B tok)
SmolLM2-1.7B (11T)
Llama-3.2-1B
MMLU
34-38%
42-47%
51.7%
32.2%
HellaSwag
53-58%
62-66%
68.7%
61.6%
ARC-Challenge
38-43%
48-53%
57.1%
41.6%
GSM8K (CoT)
12-18%
22-30%
31.0%
6.5%
HumanEval
15-22%
25-32%
23.2%
~12%
Tool-use 🔧
45-55%
60-70%
N/A
N/A
Agentic 🤖
40-50%
50-60%
N/A
N/A
🚀 Quick Start
python
1# Training (on Kaggle TPU v5e-8)2!pip install jax[tpu]-f https://storage.googleapis.com/jax-releases/libtpu_releases.html
3!pip install optax orbax-checkpoint transformers datasets flax
45# Run training with auto-resume6python train_flint.py --config configs/flint_60h.yaml
78# Resume from checkpoint (automatic)9python train_flint.py --config configs/flint_60h.yaml --resume
🗺️ Post-Training Roadmap
Phase
Method
Goal
SFT
SmolTalk full
Instruction following
GRPO
DeepSeek-R1 recipe
Self-improving reasoning
Tool DPO
Correct vs incorrect tool calls
Reliable tool use
Context extension
RoPE scaling
8K → 16K context
Quantization
INT4 GPTQ/AWQ
Edge deployment
📄 Citation
bibtex
1@misc{flint2025,
2 title={Flint-1.2B: Reasoning-Native Agentic Small Language Model},
3 author={tekkmaven},
4 year={2025},
5 note={Thought-Action Pretraining (TAP) on Kaggle TPU v5e-8}
6}
📖 Key References
SmolLM2 (arxiv:2502.02737) — Data curriculum & mixing ratios