You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Til-1B-multilingual-base-GEC

Kazakh grammatical error correction (GEC) model, fine-tuned from Til-1B-multilingual-base — the token-balanced 941M multilingual base.

Given a Kazakh sentence that may contain spelling/grammar errors, the model returns the corrected sentence.

Task format

Plain seq2seq-as-causal-LM with a => separator (greedy decoding):

<input sentence with errors> => <corrected sentence>

Results — exact-match on the held-out novel test sets (100 items each)

Test exact_match chrF keep_correct
test100 78.0 93.9 100.0
test100_v2 70.0 90.7 91.7
test100_v3 71.0 94.4 83.3
average 73.0

Context (Til GEC ladder, same recipe & test sets): this multilingual-base GEC (avg 73.0) beats the 0.5B multilingual-base GEC (avg 68.7) and closes ~40% of the gap to the best Kazakh-monolingual GEC (Til-kk-0.5B-256k-gec-exp085, avg 79.3); on the newest set (test100_v3) it matches the monolingual model (71 = 71). keep_correct ≈ 100 % on clean input means it does not over-correct already-correct text.

Training

  • Base: Til-1B-multilingual-base (DeepseekV3 MLA, 941M, 131 072 vocab / Til-Tokenizer-128k).
  • Recipe: supervised fine-tuning on "<input> => <target>" pairs, data = rule-based synthetic + 78k human-annotated + identity (keep-correct) + hard mined cases.
  • Hyperparameters: 3 epochs, lr 2e-5, per-device batch 16, 8 × H200, NCCL_IB_DISABLE=1.
  • Precision: bfloat16.

How to use

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "TilQazyna/Til-1B-multilingual-base-GEC"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16).eval()

def correct(sentence):
    ids = tok(sentence + " => ", return_tensors="pt").input_ids
    out = model.generate(ids, max_new_tokens=96, do_sample=False,
                         eos_token_id=tok.eos_token_id, pad_token_id=1)
    text = tok.decode(out[0], skip_special_tokens=True)
    return text.split(" => ", 1)[-1].strip()

print(correct("мен кітап оқыдым керек"))

Limitations

Trained for sentence-level Kazakh GEC only; not a chat model. Hard/rare error types remain the weakest (~11–15/24 on the hard bucket). 4096-token context.

Model family

Part of the Til family by TilQazyna. Base: Til-1B-multilingual-base; monolingual GEC sibling: Til-kk-0.5B-256k-gec-exp085.

Downloads last month
-
Safetensors
Model size
0.9B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support