CoolFace
Modelpublic

shaikhsalman/zabaanai-pakistan-multilingual

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes2downloads
Model Card

šŸ‡µšŸ‡° ZabaanAI - Pakistan Multilingual Language Model

An open-source, CPU-friendly AI model for Pakistan's major languages

Python License Model Size Languages

🌐 Supported Languages

LanguageScriptCoverage
UrduArabic (Nastaliq)āœ… News, poetry, social media
Punjabi (Shahmukhi)Arabicāœ… News, literature, transliteration
SindhiArabicāœ… Large corpus (505M tokens)
SaraikiArabicāš ļø Augmented from related languages
BalochiArabicāœ… Small curated datasets
PashtoArabicāœ… ZamAI corpus, textbooks, news
HindkoArabicāš ļø Augmented from related languages
BrahuiArabicāš ļø Bridged from Balochi
KashmiriArabicāœ… Dedicated corpora + news
EnglishLatināœ… Wikipedia + parallel corpora
Roman UrduLatināœ… Social media, code-mixed

šŸ—ļø Base Model: google/mt5-small

We chose mT5-small over XLM-R and mBERT because it's the only architecture that natively supports all required tasks:

RequirementmT5-small āœ…XLM-R āŒmBERT āŒ
Text Generationāœ… Native seq2seqEncoder-onlyEncoder-only
Translationāœ… NativeCan't generateCan't generate
Summarizationāœ… NativeCan't generateCan't generate
Chatbot/QAāœ… NativeCan't generateCan't generate
Sentimentāœ… Text-to-textNativeNative
CPU Efficiencyāœ… 47% lower latency*GoodGood

*Encoder-decoder achieves 47% lower first-token latency and 4.7x higher throughput on CPU vs decoder-only (Microsoft 2025).

šŸŽÆ Supported Tasks

All tasks use mT5's unified text-to-text format:

TaskInput FormatExample Output
Text Generationgenerate in Urdu: {prompt}"پاکستان ایک خوبصورت ملک ہے..."
Translationtranslate English to Urdu: {text}"پاکستان ایک خوبصورت ملک ہے"
Summarizationsummarize: {long_text}"Short summary..."
Sentimentsentiment: {text}"positive" / "negative" / "neutral"
QAquestion: {Q} context: {C}"Answer text..."
Chatbotconversation: user: {msg} assistant:"Response text..."

šŸ“‚ Repository Structure

ā”œā”€ā”€ scripts/
│   ā”œā”€ā”€ 01_collect_datasets.py        # Download 35+ HF datasets
│   ā”œā”€ā”€ 02_clean_text.py              # Clean, deduplicate, normalize
│   ā”œā”€ā”€ 03_train_tokenizer.py         # Extend mT5 tokenizer
│   ā”œā”€ā”€ 04_prepare_training_data.py  # T5 span corruption prep
│   ā”œā”€ā”€ 05_train_cpu.py               # CPU-optimized LoRA pretraining
│   ā”œā”€ā”€ 06_finetune_lora.py           # LoRA fine-tuning (5 tasks)
│   ā”œā”€ā”€ 07_evaluate.py                # BLEU, ROUGE, perplexity
│   ā”œā”€ā”€ 08_quantize.py                # ONNX INT8 / 8-bit quantization
│   └── 09_deploy_space.py           # HF Space deployment
ā”œā”€ā”€ docs/
│   ā”œā”€ā”€ 01_DATASET_COLLECTION.md      # Full dataset sourcing guide
│   ā”œā”€ā”€ 02_TOKENIZER_GUIDE.md         # Tokenizer improvement strategy
│   ā”œā”€ā”€ 03_TRAINING_GUIDE.md          # CPU training configuration
│   ā”œā”€ā”€ 04_FINETUNING_GUIDE.md        # LoRA fine-tuning recipes
│   └── 05_DEPLOYMENT_GUIDE.md        # 5 deployment options
ā”œā”€ā”€ deployment/
│   ā”œā”€ā”€ app.py                        # Gradio web app (6 tasks)
│   ā”œā”€ā”€ api_server.py                 # FastAPI REST API
│   ā”œā”€ā”€ Dockerfile                    # Docker container
│   └── requirements.txt              # All dependencies
ā”œā”€ā”€ notebooks/
│   └── 01_explore_datasets.ipynb     # Dataset visualization
ā”œā”€ā”€ tokenizer/                        # Extended tokenizer (250,141 vocab)
ā”œā”€ā”€ config.yaml                       # Central configuration
ā”œā”€ā”€ setup.py                          # Environment setup
ā”œā”€ā”€ QUICKSTART.md                     # 10-step quick start
└── README.md                         # This file

⚔ Quick Start

1. Install Dependencies

bash
pip install transformers datasets tokenizers accelerate peft sentencepiece
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install protobuf tiktoken gradio optimum[onnxruntime]

2. Collect Datasets

bash
python scripts/01_collect_datasets.py

3. Clean & Merge

bash
python scripts/02_clean_text.py

4. Extend Tokenizer

bash
python scripts/03_train_tokenizer.py

5. Prepare Training Data

bash
python scripts/04_prepare_training_data.py

6. Start CPU Training

bash
python scripts/05_train_cpu.py --max_steps 50000 --batch_size 2 --lora_r 64

7. Fine-Tune for Tasks (GPU recommended)

bash
python scripts/06_finetune_lora.py --task translation --batch_size 8
python scripts/06_finetune_lora.py --task sentiment --batch_size 8

8. Deploy

bash
python scripts/09_deploy_space.py --username your-username --space_name zabaanai-demo

šŸ”§ CPU Training Configuration

SettingValueWhy
Base Modelgoogle/mt5-small300M params, 250k vocab, seq2seq
LoRA Rank64~15% of params trainable (~45M)
Batch Size2Low for CPU RAM
Gradient Accumulation32Effective batch = 64
Learning Rate2e-4Higher LR works with LoRA
Max Steps50,000Minimum for meaningful adaptation
Warmup500 steps1% of total
SchedulerCosineSmooth decay
CheckpointingEvery 2,000 stepsAuto-resume supported
PrecisionFP32CPU-safe (no fp16/bf16)
Gradient CheckpointingEnabled40-50% memory savings

Training time: ~70 hours for 50K steps on 8-core CPU, or ~3 hours on T4 GPU.

šŸŽÆ Task Fine-Tuning

Translation

python
python scripts/06_finetune_lora.py --task translation
# Datasets: Humair332/Vast-Urdu (10M pairs), Kashmiri-English, Pashto-English

Sentiment Analysis

python
python scripts/06_finetune_lora.py --task sentiment
# Datasets: community-datasets/roman_urdu, urdu_sentiment_corpus

Summarization

python
python scripts/06_finetune_lora.py --task summarization
# Datasets: News articles with headlines as pseudo-summaries

Question Answering

python
python scripts/06_finetune_lora.py --task qa
# Datasets: Sindhi encyclopedia, generated Q&A pairs

Chatbot / Conversational AI

python
python scripts/06_finetune_lora.py --task chatbot
# Datasets: Urdu-Instruct, Sindhi SFT, Pashto Alpaca

šŸš€ Deployment Options

OptionBest ForSetupCost
Hugging Face SpacesPublic demo2 minutesFree / Paid GPU
Local CPU ServerPrivacy, on-premise10 minutesFree
Docker ContainerScalable cloud15 minutesVaries
FastAPI APIProduction microservices10 minutesVaries
ONNX QuantizedEdge/embedded5 minutesFree

šŸ“Š Data Mixture for Pretraining

Urdu:           35%  (news, poetry, social media, Wikipedia)
Sindhi:         20%  (large corpus available)
Pashto:         15%  (ZamAI corpora)
Punjabi:        10%  (news, transliteration)
Roman Urdu:      8%  (social media, tweets)
English:         7%  (prevent catastrophic forgetting)
Kashmiri:        3%  (smaller corpus)
Balochi:       1.5%  (very limited data)
Saraiki/Hindko/Brahui: 0.5%  (augmented from related)

šŸ”¤ Tokenizer

mT5's native tokenizer already covers all Pakistan scripts with 250,000 tokens + byte fallback. We extended it with 52 Pakistan-specific tokens:

  • —Cities: Ł„Ų§ŪŁˆŲ±, Ś©Ų±Ų§Ś†ŪŒ, اسلام Ų¢ŲØŲ§ŲÆ, پؓاور, کوئٹہ
  • —Names: Ł…Ų­Ł…ŲÆ, Ų¹Ł„ŪŒ, فاطمہ
  • —Institutions: Ų³Ł¾Ų±ŪŒŁ… کورٹ, Ł†ŪŒŲ“Ł†Ł„ Ų§Ų³Ł…ŲØŁ„ŪŒ
  • —Roman Urdu: bhai, yaar, theek

Vocabulary size: 250,141 (was 250,100)

šŸ“ˆ Evaluation

bash
python scripts/07_evaluate.py --model_path training/checkpoints/final --task translation
# Metrics: BLEU (translation), ROUGE (summarization), Perplexity (generation)

šŸ’¾ Quantization for Production

bash
# ONNX INT8 (recommended for CPU)
python scripts/08_quantize.py --model_path training/checkpoints/final --method onnx

# 8-bit (for GPU)
python scripts/08_quantize.py --model_path training/checkpoints/final --method 8bit

Benefits: 60-70% smaller model, 2-3x faster inference on CPU.

šŸ¤ Contributing

We welcome contributions! Priority areas:

  • —More datasets for Saraiki, Hindko, Brahui
  • —Better evaluation benchmarks
  • —Fine-tuned task-specific adapters
  • —Documentation translations

šŸ“œ License

Apache 2.0 (same as mT5 base model)

šŸ™ Acknowledgments

  • —Google Research for mT5
  • —ZamAI for Pashto datasets
  • —aakashMeghwar01 for Sindhi corpus
  • —Humair332 for Vast-Urdu parallel corpus
  • —Omarrran for Kashmiri datasets
  • —community-datasets for Roman Urdu sentiment data

šŸ“š Citation

bibtex
@software{zabaanai2025,
  title = {ZabaanAI: Pakistan Multilingual Language Model},
  author = {Open Source Contributors},
  year = {2025},
  url = {https://huggingface.co/shaikhsalman/zabaanai-pakistan-multilingual}
}

Built with ā¤ļø for Pakistan's languages šŸ‡µšŸ‡°