πŸ›οΈ KALINGA β€” Experiment No. 01

One language. Done properly.

The frontier forgot Odia.

40+ million speakers. A literary tradition older than most languages the frontier has ever shipped. And the biggest labs in the world trained on 200 languages β€” and left this one out, as if it had never existed.

Kalinga exists because we refuse to accept that.

This is Experiment No. 01. The first of a series that will not stop.


What we found, and what we kept

We started with 28,549,762 rows of raw Odia.

More than half of it was the same text wearing different clothes. We removed it all. What remains is signal β€” and nothing else:

Rows kept 12,438,948 β€” nothing repeated, nothing padded
Total text ~5.9 billion characters of Odia
English-aligned 48.7 % β€” real alignments, not flags
Per-row median 203 Β· mean 474 characters
Quality gate β‰₯ 20 chars Β· β‰₯ 10 % Odia script Β· 63 shards Β· 3.7 GB
Composition monolingual 68.9 % Β· pretrain 15.4 % Β· parallel 7.7 % Β· instruction 5.3 % Β· QA 1.5 % Β· web Β· encyclopedic Β· speech Β· sentiment

The frontier's approach: 200 languages, two minutes each.

Kalinga's approach: one language, 5.9 billion characters, nothing repeated.

The corpus has never been published anywhere. While licensing of legacy sources is resolved, it stays private β€” this model is the closest thing to it that exists in public.


The confession

We have no eval numbers. We will not invent any.

Hype without receipts dies. Kalinga is not here to die.

When the numbers exist, they will be written here β€” and this page will change forever. What you are looking at right now is the model before it had a reputation. That window never reopens.


Status

  • Exists
  • Remembers its language
  • Evaluated β€” soon. then this card gets real.
  • Explained
  • Named β€” you'll recognize it when you see it.
  • Freed β€” the corpus, when licensing allows.

Watch. The silence will not last.


For the 40 million

Your language was never the problem. The attention was.

It's free. Take it. Use it. That's the point.

If you must:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "SauravMahalik/kalinga-01"

model = AutoModelForCausalLM.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)

text = "..."  # a sentence, in a language it knows
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=64)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

β€” Experiment No. 01 Β· Kalinga Series

The series has already begun.

Downloads last month
24
Safetensors
Model size
3B params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support