🎯 Model Overview
Bharat-Tiny-LLM v2 is an open-weights 1.5B parameter language model built on top of Qwen2.5-1.5B, optimized specifically for Hindi and Hinglish text generation.
By introducing Brahmi Token Injection — a technique that surgically injects 300 Devanagari subword tokens into the model's vocabulary — Bharat-Tiny-LLM v2 eliminates the severe "Token Tax" imposed by standard English-centric tokenizers on Indian scripts.
This repository contains the unquantized PyTorch / HuggingFace Transformers open weights, compatible with Linux, Windows, CUDA GPUs, vLLM, TGI, and Google Colab.
🎨 Architectural Pipeline & Training Methodology

Interactive Training Pipeline Flowchart
flowchart LR
A["Raw Hindi Corpus"] --> B["Brahmi Subword Mining<br>(Top 300 Devanagari Tokens)"]
B --> C["Tokenizer Vocabulary Expansion<br>(151,936 ➔ 152,236)"]
C --> D["Stage 1: Embedding Alignment<br>(Freeze Backbone, Train 300 Embeddings)"]
D --> E["Stage 2: LoRA Fine-Tuning<br>(Rank=16 on Attention q,k,v,o proj)"]
E --> F["Fused PyTorch Base Weights<br>(eulogik/Bharat-Tiny-LLM-v2)"]
F --> G["Q4 Affine Quantization<br>(eulogik/Bharat-Tiny-LLM-v2-MLX)"]
✨ Key Benchmarks & Technical Advantages
Table with columns: Metric, Base Qwen2.5-1.5B, Bharat-Tiny-LLM v2, Technical Advantage| Metric | Base Qwen2.5-1.5B | Bharat-Tiny-LLM v2 | Technical Advantage |
|---|
| Tokens for 1,000 Hindi Chars | ~950 tokens | ~630 tokens | 33.8% Fewer Tokens (up to 58% on chat prompts) |
| Inference Throughput (Hindi) | 50 tok/s | 68 tok/s | +36% Speed Boost |
| Validation Loss (Hindi Corpus) | 2.776 | 1.837 | 52.5% Loss Reduction (Perplexity: 16.1 → 6.3) |
| Hardware Compatibility | CUDA / CPU / MPS | CUDA / CPU / MPS | Universal PyTorch / vLLM / GGUF support |
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "eulogik/Bharat-Tiny-LLM-v2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
prompt = "भारत की सांस्कृतिक विविधता के बारे में बताइए:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=150,
temperature=0.7,
do_sample=True
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
📊 Token Compression Benchmarks
Table with columns: Prompt (Hindi / Hinglish), Base Qwen Tokens, Bharat-v2 Tokens, Savings| Prompt (Hindi / Hinglish) | Base Qwen Tokens | Bharat-v2 Tokens | Savings |
|---|
"ज़रूरी बात है क्या करते हो" | 26 tokens | 11 tokens | 58% Savings |
"नमस्ते, आप कैसे हैं?" | 15 tokens | 7 tokens | 53% Savings |
"भारत की राजधानी नई दिल्ली है" | 22 tokens | 14 tokens |
🔗 Model Family Repositories
📜 License & Citation
Licensed under Apache 2.0. Free for commercial, enterprise, and research use.
@misc{kishore2026brahmi,
title={Brahmi: Efficient Devanagari Token Injection for Multilingual LLMs},
author={Gautam Kishore},
year={2026},
publisher={eulogik},
howpublished={\url{https://huggingface.co/eulogik/Bharat-Tiny-LLM-v2}}
}