UDGAM LABS · Experimental language model · 125M parameters
Udgam English 125M
An English model trained from random weights by Udgam Labs. This experimental release includes the base model, a conversation-tuned variant, our tokenizer, local inference and fine-tuning tools, and the measured results.
The performance target failed. This recipe did not beat Sarvam-1 or the smaller SmolLM2 baselines, and the results do not support using it as a reliable general assistant. We are sharing the exact artifacts and negative results so others can inspect and improve the work.
Code and release notes · Udgam Labs · Full results · Training recipe
Measured quality
All five models answered the same frozen 2,500-item zero-shot completion suite: 500 items each from ARC-Challenge, HellaSwag, PIQA, BoolQ and WinoGrande. The first three use normalized accuracy; the last two use accuracy. The macro gives each task equal weight. These are this experiment's selected-suite results, not full official leaderboard scores.
| Model | Macro accuracy |
|---|---|
| Udgam English 125M base | 45.72% |
| Udgam English 125M conversation | 46.40% |
| Sarvam-1 | 68.08% |
| SmolLM2-135M | 51.76% |
| SmolLM2-360M | 57.40% |
Both Udgam variants failed all five task floors and the 52% macro floor. All six fixed comparisons and their paired uncertainty estimates are retained; no winner or checkpoint was selected from these scores. Both variants also passed 0/24 strict automatic instruction checks. The 12 human-rubric items per variant remain unscored. Some responses contained relevant content but failed the required format; others were wrong or repetitive. No Pareto-frontier result was established. See the protocol and public results.
Where it falls short
All numbers are from the table above. Both variants are behind every baseline on the 2,500-item macro: base 45.72% and conversation 46.40%, against 51.76% for SmolLM2-135M, 57.40% for SmolLM2-360M and 68.08% for Sarvam-1. Both failed all five task floors and the 52% macro floor, and passed 0/24 strict automatic instruction checks.
What was trained
| Property | Value |
|---|---|
| Parameters | 125,829,314 |
| Architecture | Pinned nanochat GPT; 12 layers, width 768, 6 query heads, 2 KV heads, SSSL attention |
| Context | 2,048 tokens, including prompt and response |
| Tokenizer | Own 16,384-token BPE, fitted on training text |
| Pretraining | 2,033,549,312 prediction targets, including the pilot |
| Conversation tuning | One finite OASST2 pass: 7,237 examples; 1,892,764 supervised assistant targets |
No pretrained model weights, embeddings, tokenizer vocabulary, adapters, teacher logits or hidden states initialized either candidate. The conversation variant continues our own scratch-trained base. We reuse open-source architecture and training code; this is not a claim of an independently invented architecture or exclusively Indian infrastructure.
The main mixture targets 60% FineWeb-Edu, 15% FinePhrase tables, 15% FinePhrase tutorials and 10% Nemotron Fact-Seeking ordinary tokens. FinePhrase uses synthetic text from SmolLM2-1.7B-Instruct; the selected Nemotron Fact-Seeking subset uses Qwen3-30B-A3B-Instruct-2507. Only that Nemotron subset was used. Source revisions, terms and curation limits are in data_sources.json. A captured benchmark-family overlap was removed from the future, untrained suffix while preserving the accepted prefix and original checkpoint. That incident-specific repair does not prove universal absence of contamination.
Run locally
Download this repository at tag v0.1.0, including its complete release/ folder. Enter that folder and verify the distribution before installing dependencies or running code:
cd release
# macOS; on Linux use: sha256sum -c SHA256SUMS
shasum -a 256 -c SHA256SUMS
python -m pip install -r models/base/requirements.txt
python models/base/infer.py --device cpu --prompt "A useful way to check an explanation is" --max-new-tokens 64
python models/conversation/infer.py --device cpu --chat --max-new-tokens 64
Use an isolated Python environment. The separately recorded SHA256 of release/RELEASE_MANIFEST.json is:
13f9eff874e58c8bbf10d8bf14959a9aece76a7be10a764b1fb10439f9bdfa40
The native loaders also check their own file inventories before loading weights. Inference is offline and uses no hosted model, search service or tool engine. This is native PyTorch, not a Transformers AutoModel, GGUF or quantized package; there is no hosted inference widget. The verified local loading checks used PyTorch 2.11 on CPU; the recorded cloud runtime used PyTorch 2.9.1/CUDA. A fresh dependency installation or every device combination has not been tested.
For your own prompt/response data, use the local fine-tuning guide. The tool passed tiny CPU fixtures and a one-update integration check on the actual 125M base. Full-pass resource requirements and CUDA adaptation remain unmeasured. Any adapted weights need their own evaluation and do not inherit these scores.
Cost, provenance and limits
The retained 24 September 2026, 17:18 UTC observation records about US$16.58 gross cloud usage, including failed attempts and backup compression; Modal paid charges were US$0, using credits. Cleanup, temporary-access revocation and storage/transfer settlement were still pending in that observation. It is not a final invoice or a newly checked balance. Existing Mac hardware, internet and engineering time are unpriced; another lab's reproduction cost may differ. The dated cost summary preserves the earlier compute-close figures separately.
Both native exports match their selected checkpoints tensor for tensor and passed relocated, fresh-process CPU loading. The complete input backup and artifact lineage passed private portable verification. Its only arithmetic compatibility allowance is at most four binary64 ULP for recomputed positive finite historical learning rates; stored records, optimizer endpoint and all other checks remain exact. This is not a replay of the original Linux math implementation. The public scientific summary binds the original private evidence by hash.
The unchanged release/ directory is the sealed 24 September experiment snapshot. Statements there that publication had not yet occurred describe that historical snapshot; this top-level card describes the v0.1.0 distribution. Historical cloud reruns require pinned inputs, provenance and real provider controls. The source archive is not a one-command cloud-training service. Local inference and additive fine-tuning work independently of those private operational records.
English is the evaluated language. Reliable factual answers, coding, multilingual use, mobile deployment and high-stakes use have not been established. Outputs may be incorrect, biased or inappropriate.
License and credit
Our original code, documentation, tokenizer and owned weights use MIT terms. nanochat and the included EleutherAI task-definition code retain their own MIT notices. FineWeb-Edu/FinePhrase source terms, NVIDIA's CC-BY-4.0 Fact-Seeking attribution, and OpenAssistant's Apache-2.0 source metadata remain documented. See LICENSE_SCOPE.md and the included attribution files. Our license does not relicense third-party text or comparison models.
Raw training corpora, per-example training traces, baseline weights, optimizer backups, credentials and account records are excluded. The conversation attribution notice describes the original preparation artifact; this distribution carries trace hashes and acquisition metadata, not those private traces or tokenized examples. This experiment is separate from Udgam's earlier Qwen-based Hinglish adapter and does not inherit its licenses or results.
About Udgam Labs. Udgam Labs is an independent AI research lab. We work from first principles: before we build, we understand why things work, whether we are training a model, fine-tuning one or applying AI to a new problem. Udgam (उद्गम) is Sanskrit for origin. udgamlabs.com