Agaram 2.5B: The First Tamil-First Language Model Trained from Scratch with Tool Calling. A Playbook for Under-Represented Languages
Organizations: Murai Labs · Independent researcher
Abstract
We trained Agaram 2.5B, a 2.5-billion-parameter Tamil-English language model, from scratch on about 50 billion tokens (58% Tamil, the rest English, math, code and parallel text) on one node of eight H100 GPUs in about six days, with a new tokenizer that, unlike our first model's, keeps line breaks. Supervised fine-tuning on 134,428 conversations, whose replies an open-weight teacher model wrote, and three short targeted rounds turned it into a chat model that answers in Tamil script, romanized Tamil (Tanglish) and English and can call tools: on 25 tool prompts whose schemas appear in training it picks the right tool 23 times and gives exactly the expected arguments 13 times. The released model translates better than Sarvam-1, a 2B Indic base model, in all six FLORES and IN22 directions (FLORES chrF 54.3 into Tamil and 55.2 into English, against 49.2 and 44.2), and nearly doubles its base model on native-Tamil IndicIFEval (19.3% from 10.0%). It is weak on knowledge: reading-comprehension and knowledge benchmarks sit near chance, and on 50 held-out everyday questions written by one native speaker, one LLM judge rated 46% of its replies usable (22-24 of 50 over three passes; 95% interval for 23 of 50, 33-60%), with nearly every failure a wrong fact. Our two further SFT experiments changed answer format but not the knowledge measures. We also describe our first model, Agaram 1.5B, whose failures shaped the choices here; how the judge's scores varied between passes on identical replies; and, item by item, what the targeted rounds trained against and where frontier-model text entered the data. The project ran on compute credits and our own funds, about USD 13,300 across both models; the weights are released (licence to be announced after legal review), with GGUF files for llama.cpp, at https://huggingface.co/murai-labs/agaram-2.5b-instruct; code at https://github.com/Murai-Labs/Agaram2.5b
Figures & tables
| \tamilfont அகரம் / Agaram 1.5B | \tamilfont அகரம் / Agaram 2.5B |
| The tokenizer’s normaliser erased every newline and indentation; the model never saw a line break, and the chat stop token never appeared in pretraining. | A byte-level tokenizer with no normaliser (Section 3.1 ). |
| 75% of the 30B tokens were single-pass Tamil web crawl; English, math and code were thin, and instruction-shaped text was 0.7%. | A measured 50B-token mix: 58% Tamil, the rest English, math, code and parallel text, with instruction data in the decay stage (Section 3.2 ). |
| Continued pretraining packed documents with no separators, so free chat ran on into memorised instruction text. | Every document ends with an end-of-text token, and attention never crosses a document (Section 4.1 ). |
| OCR damage explained several failures, and an OCR filter judged only on clean text discarded good Tamil 37 times in 41. | Narrow OCR rules, each checked by reading what it removes (Section 3.2 ). |
| The final checkpoint was lost when the node shut itself down. | Checkpoints copied off the node every two hours; the node releases itself only after the final copy (Section 4.3 ). |
| Benchmark translations and story openings used in evaluation were found in training data after numbers had been reported. | Every evaluation set scanned against the training data before its numbers are reported (Section 7 ). |
| Sample | TOK_FRESH (this work) | TOK_BPE_64K ( \tamilfont அகரம் / Agaram 1.5B) | Qwen2.5 |
| Tamil prose | 1.55 | 1.55 | 9.44 |
| Tamil verse | 2.29 | 1.80 | 9.19 |
| English | 1.41 | 1.67 | 1.35 |
| Tanglish | 1.95 | 2.95 | 2.44 |
| Code (Stack-Edu) | 3.54 | 4.54 | 3.01 |
| Tool-call JSON | 2.52 | 3.46 | 2.35 |
| Category | Share | Main sources |
| Tamil | 58.2% | FineWeb2, Sangraha, CulturaX, HPLT, OSCAR, Wikipedia, Project Madurai, OCR of books |
| English | 19.8% | FineWeb-Edu, Nemotron-CC (training only) |
| Math | 10.0% | FineMath |
| Code | 7.0% | Stack-Edu, Nemotron code (training only) |
| Parallel | 2.0% | BPCC, FineTranslations, small parallel sets |
| Instruction | 3.0% | decay stage only (23% of its tokens) |
| Stable | Decay | |
| Context (tokens) | 4,096 | 8,192 |
| Sequences per step | 128 | 64 |
| Steps | 82,970 | 12,398 |
| Tokens | 43.50B | 6.50B |
| Learning rate | warmup 2,000 steps to , then constant | to , linear |
| Datasets | 63 | 27 |
| Register (passages) | Step 21,000 | End of stable | Final (after decay) | Decay change |
| Modern formal (143) | 1.095 | 1.051 | 1.034 | |
| Modern colloquial (136) | 1.360 | 1.317 | 1.298 | |
| Tanglish (117) | 1.564 | 1.484 | 1.417 | |
| Literary, OCR (39) | 1.287 | 1.210 | 1.173 | |
| Literary, EPUB (106) a | 1.122 | 1.043 | 0.909 |
| Agaram 2.5B | 2.5B (stable end) | Sarvam-1 | Agaram 1.5B | Qwen2.5- 1.5B b | Gemma-3- 1B b | |
| FLORES en ta | 55.1 | 49.0 | 49.2 | 43.5 a | 18.1 a | 45.0 a |
| FLORES ta en | 55.5 | 52.6 | 44.2 | 21.2 a | 22.7 a | 45.8 a |
| IN22-Conv en ta | 40.8 | 38.6 | 37.4 | 31.7 | – | – |
| IN22-Conv ta en | 46.0 | 43.4 | 37.9 | 16.5 | – | – |
| IN22-Gen en ta | 48.8 | 44.0 | 45.9 | 38.5 | – | – |
| IN22-Gen ta en | 54.3 | 50.1 | 42.7 | 19.8 | – | – |
| Base | Epoch 1 | Epoch 2 | Epoch 3 | Mid-run SFT (55K) | Agaram 1.5B | |
| Judged usable (of 100) | – | 52 | 48 | 45 | – | 2 |
| multi-turn usable (of 15) | – | 6 | 4 | 5 | – | 0 |
| Format checks, set 1 | 6% | 94% | 94% | 95% | 79% | – |
| Format checks, set 2 | 9% | 88% | 89% | 89% | 68% | – |
| Stops on its own, set 1 | 15% | 99% | 100% | 100% | 91% | – |
| Tool call: right tool | 0% | 96% | 96% | 96% | 56% | – |
| Stage | Areas (new rows) | New rows | Replayed | Epochs run | Kept |
| General SFT | Section 3.4 | 134,428 | – | 3 | epoch 3 |
| Round 2 | identity, tool results, crisis, tool-call corrections, constraint memory, long answers, false premises, harmful requests, multi-turn repair, verified Thirukkural, format instructions, the model’s charter | 7,565 | 12,000 | 3 | epoch 2 |
| Round 3 | identity in English and Tanglish and under pressure, harmful requests, crisis (number first), script switching between turns | 2,210 | 6,000 | 2 | epoch 2 |
| Round 4 | identity (false sizes, training data, “are you human”), harmful requests, crisis (secrecy, fear of judgement) | 1,451 | 3,000 | 2 | epoch 1 (released) |
| Set (side) | Items | Clean | Over 50% | What the overlap is |
| FLORES test, Tamil a | 2,024 | 2,010 | 0 | – |
| FLORES test, English a | 2,024 | 1,780 | 146 | Wikipedia source sentences |
| FLORES test, clean pairs | 1,012 | 887 | – | per direction |
| IN22-Conv, Tamil | 1,503 | 1,502 | 0 | – |
| IN22-Conv, English | 1,503 | 1,493 | 1 | – |
| IN22-Gen, Tamil | 1,024 | 1,010 | 0 | – |
| Direction | Pairs (full / clean) | \tamilfont அகரம் / Agaram full | \tamilfont அகரம் / Agaram clean | Sarvam-1 full | Sarvam-1 clean |
| FLORES en ta | 1,012 / 887 | 55.15 | 54.97 | 49.21 | 49.00 |
| FLORES ta en | 1,012 / 887 | 55.53 | 55.46 | 44.23 | 44.10 |
| IN22-Conv en ta | 1,503 / 1,493 | 40.78 | 40.71 | 37.43 | 37.35 |
| IN22-Conv ta en | 1,503 / 1,493 | 46.02 | 45.89 | 37.86 | 37.82 |
| IN22-Gen en ta | 1,024 / 783 | 48.82 | 48.69 | 45.86 | 45.74 |
| IN22-Gen ta en | 1,024 / 783 | 54.30 | 53.16 | 42.73 | 41.89 |
| Released (chat) | \tamilfont அகரம் / Agaram 2.5B base | Sarvam-1 | |
| FLORES en ta / ta en (chrF) | 54.3 / 55.2 | 55.1 / 55.5 | 49.2 / 44.2 |
| IN22-Conv en ta / ta en | 41.0 / 45.9 | 40.8 / 46.0 | 37.4 / 37.9 |
| IN22-Gen en ta / ta en | 48.4 / 53.9 | 48.8 / 54.3 | 45.9 / 42.7 |
| MILU-ta (5-shot) | 29.2 | 29.6 | 28.8 |
| Belebele-ta | 27.3 | 27.8 | 58.3 |
| INCLUDE-ta | 26.4 | 26.9 | 35.5 |
| Job | Hardware | Hours | Cost (USD) |
| Pretraining, both stages | 8 H100 SXM5, Lambda | 149 (147.7 training) | 4,765 |
| Abandoned SFT attempt | 1 H100 PCIe, Lambda (thermally throttled) | 3.7 | 12 |
| General SFT stage | 1 H200, JarvisLabs | 9.5 training | JarvisLabs credits |
| SFT rounds 2–4 | one DGX Spark (owned) | 12, 4 and 2 | – |
| Teacher generation, evaluation | two DGX Spark machines (owned) | – | – |
| LLM judge | Kimi K3 through the Fireworks API | – | own funds |
Language Modeling
Language modeling develops systems that learn patterns in text and other sequences to understand, predict, and generate language.
See all 498 papers