GaborMadarasz/gemma_3_270m_ITN_finetune_16bit
Gemma-3-270M Hungarian ITN Finetune
A Gemma-3 270M Instruct modell Inverse Text Normalization (ITN) feladatra finetune-olva magyar nyelven. A modell automatikusan átalakítja a beszédfelismerés (ASR) által generált szövegben a betűvel kiírt számokat, dátumokat és mértékegységeket normalizált írott formára.
Model Details
- Base model: unsloth/gemma-3-270m-it
- Model type: Gemma-3 270M with LoRA adapters (merged to 16-bit)
- Language: Hungarian (hu)
- License: Gemma
- Finetuning framework: Unsloth + TRL SFTTrainer
Intended Use
A modell célja, hogy magyar ASR (beszédfelismerő) rendszerek kimenetét normalizálja.
Examples
Direct Use
A modell közvetlenül használható magyar ASR kimenetek normalizálására. Ajánlott használati esetek:
- Beszédfelismerő rendszerek utófeldolgozása
- Automatikus feliratozás
- Diktált szövegek formázása
Out-of-Scope Use
- Nem ASR kimenetek normalizálása (pl. helyesírási hibák javítása)
- Más nyelvű szövegek (a modell kizárólag magyarra lett optimalizálva)
- Generatív feladatok (a base modell képességei korlátozottak a finetune miatt)
Training Data
A training dataset ~21 000 sorból áll, három forrásból:
A dataset "needle in the haystack" megközelítéssel készült: regex alapú szűréssel csak az ITN-re releváns (számokat, dátumokat, mértékegységeket tartalmazó) sorok kerültek be. A normalizált targetek regex alapú normalizálással készültek, komplex esetekben lokális LLM-mel (Gemma 4 12B) javítva.
Data Preprocessing
A szövegek Gemma-3 chat template-re lettek konvertálva:
- System prompt: "Alakítsd át a következő magyar ASR szöveget normalizált írott formára (számok, dátumok, mértékegységek):"
- User: az eredeti ASR szöveg
- Assistant: a normalizált szöveg
Training Procedure
Finetuning Details
- Framework: Unsloth + TRL SFTTrainer
- Method: LoRA (Low-Rank Adaptation)
- LoRA rank: 128
- LoRA alpha: 128
- Target modules: qproj, kproj, vproj, oproj, gateproj, upproj, down_proj
- Precision: float16
- Max sequence length: 2048 tokens
Training Hyperparameters
Special Training Techniques
- Train on responses only: A loss csak az assistant válaszokra számítódik, a user input és system prompt mask-olva van (-100 ignore index). Ez növeli a finetune pontosságát.
- Unsloth optimizations: Gradient checkpointing "unsloth" módban (~30% VRAM megtakarítás).
How to Use
Installation
pip install unsloth transformers peft torchInference with Unsloth
from unsloth import FastModel
import torch
model, tokenizer = FastModel.from_pretrained(
model_name="GaborMadarasz/gemma_3_270m_ITN_finetune_16bit",
max_seq_length=2048,
load_in_4bit=False,
dtype=torch.float16,
)
messages = [
{"role": "system", "content": "Alakítsd át a következő magyar ASR szöveget normalizált írott formára (számok, dátumok, mértékegységek):"},
{"role": "user", "content": "a második világháború után negyven évvel"},
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=1.0,
top_p=0.95,
top_k=64,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))Inference with Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"GaborMadarasz/gemma_3_270m_ITN_finetune_16bit",
torch_dtype="auto",
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("GaborMadarasz/gemma_3_270m_ITN_finetune_16bit")Limitations and Bias
- Méret: A 270M paraméter korlátozza a modell által kezelhető komplex eseteket (pl. összetett dátumok, többes számok mondaton belül)
- Domain: A training data főleg Common Voice, VoxPopuli és Whisper forrásból származik, ami nem fedi le az összes magyar beszédtípust (pl. dialektusok, szaknyelv)
- Hallucináció: Ritkán előfordulhat, hogy a modell nem csak a számokat normalizálja, hanem más szavakat is módosít
- ITN coverage: A regex alapú normalizálás nem fedi le az összes magyar szám-kifejezést (pl. tört számok: "másfél", "háromnegyed")
Evaluation
Az értékelés három független, a trainingből teljesen kizárt test set-en történt. Egyik test set sem volt benne a training datasetben (a Common Voice és VoxPopuli train splitjeiből származó adatokat használtunk csak a tanításhoz, a test splitjeiket kizárólag az értékeléshez).
Test Datasets
Results
Error Analysis
A leggyakoribb hibatípusok a legrosszabb esetek alapján:
- Túl agresszív normalizálás (leggyakoribb): A modell olyan szavakat is számra cserél, amelyek csak tartalmazzák a szám tövét, de nem számok. Például:
- "egészen" → "1." (hibás, az "egész" nem szám)
- "egyike" → "1." (hibás, az "egyike" főnév)
- "egyre" → "1re" (hibás, az "egyre" határozószó)
- Nagybetűsítés: A modell automatikusan nagybetűsíti a mondatkezdést, de a gold adat kisbetűs. Valójában helyesírásilag a modell kimenete a helyes, de nem egyezik a gold standarddal.
- Rossz számok (ritka): A modell néha rossz számot generál (pl. "négyszer" → "2-szer").
- Tartalmi változtatás (ritka): A modell néha szavakat hagy el vagy változtat meg a számokon kívül.
Metrikák magyarázata
- Exact Match: A teljes normalizált szöveg pontos egyezése a gold-dal
- Number Accuracy: Csak a számok/dátumok/mértékegységek helyessége
- WER (Word Error Rate): Szószintű hibaarány
- CER (Character Error Rate): Karakter szintű hibaarány
Limitations and Bias
- Méret: A 270M paraméter korlátozza a modell által kezelhető komplex eseteket (pl. összetett dátumok, többes számok mondaton belül)
- Túl agresszív normalizálás: A modell néha olyan szavakat is számra cserél, amelyek csak tartalmazzák a szám tövét ("egyike", "egész", "egyre")
- Domain: A training data főleg Common Voice, VoxPopuli és Whisper forrásból származik, ami nem fedi le az összes magyar beszédtípust (pl. dialektusok, szaknyelv)
Citation
@misc{gemma3_270m_itn_hu,
author = {Madarász, Gábor},
title = {Gemma-3-270M Hungarian ITN Finetune},
year = {2026},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/GaborMadarasz/gemma_3_270m_ITN_finetune_16bit}}
}Acknowledgements
- Google Gemma Team - a base modellért
- Unsloth - a hatékony finetuning framework-ért
- Mozilla Common Voice - a nyílt forrású magyar beszédkorpuszért
- VoxPopuli - az EU parlamenti beszédekért
- OpenAI Whisper - az ASR kimenetekért
