CoolFace
Modelpublic

FrontiersMind/Nandi-Mini-150M

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
141likes503downloads
Model Card

Nandi-Mini-150M

Introduction

Nandi-Mini-150M is a compact, efficient multilingual language model designed for strong performance in resource-constrained environments. It is pre-trained from scratch on 525 billion tokens and supports English and 10 Indic languages.

We do not employ any benchmaxing tricks; the model is designed to be genuinely strong and highly effective for fine-tuning on downstream tasks.

Nandi-Mini-150M focuses on maximizing performance per parameter through architectural efficiency rather than scale. It is optimized for edge devices, on-prem deployments, and low-latency applications, making it ideal for resource-constrained environments. Nandi-Mini-150M brings the following key features:

  • Strong multilingual capability across English and Indic languages
  • Efficient design enabling high performance at small scale (150M parameters)
  • Reduced memory footprint using factorized embeddings
  • Better parameter efficiency through layer sharing

📝 Upcoming Releases & Roadmap

We’re just getting started with the Nandi series 🚀

  • Nandi-Mini-150M (Base)Available now
  • Nandi-Mini-150M (Instruct)Available now
  • Nandi-Mini-500M (Base + Instruct) — Pre-Training Going On
  • Nandi-Mini-1B (Base + Instruct) — Pre-Training Going On

We are actively working on expanding the Nandi family to cover a wider range of use cases—from lightweight edge deployments to more capable instruction-tuned systems.

📢 Blogs & technical deep-dives coming soon, where we’ll share:

  • Architecture decisions and design trade-offs
  • Training insights and dataset composition
  • Benchmarks and real-world applications

Stay tuned!

This repo contains the base Nandi-Mini-150M model, which has the following features:

  • Type: Causal Language Model
  • Training Stage: Pretraining (from scratch)
  • Architecture: Transformer decoder with RoPE, RMSNorm, SwiGLU, GQA, tied embeddings, factorize embeddings
  • Number of Layers: 16*2 [Layer Sharing, effective layer =32]
  • Context Length: 2,048 tokens
  • Vocabulary Size: 131,072

🌍 Supported Languages

The model is trained on English and a diverse set of Indic languages, including:

  • Hindi, Bengali, Tamil, Telugu, Marathi, Gujarati, Kannada, Malayalam, Punjabi, Odia

Benchmark Results

📊 Benchmark Comparison (~150M Class)

Model NameParametersTokens(B)HellaSwagWinograndeGPQAMMLUGSM8KHumanEvalAverage
Mobile-LLM-125M125100038.9053.10-----
SmolLM-135M-Base13560042.6653.0325.4425.301.360.0024.63
SmolLM2-135M-Base135200043.1353.2722.0924.091.740.0024.05
Nandi-Mini-150M-Base15050037.2052.3228.5728.862.584.2725.63

📊 Model Benchmark Comparison With Slightly Bigger Models (350M–600M Class)

Model NameParametersTokens(B)HellaSwagWinograndeGPQAMMLUGSM8KHumanEvalAverage
Mobile-LLM-360M350100049.6056.59-----
Qwen-2-0.5-Base5001200049.0157.6927.2344.0610.6122.5635.19
Qwen2.5-0.5B-Base5001800052.1656.8224.1047.414.7729.8735.86
Qwen3-0.6B-Base6003600053.7759.1930.8050.3415.3128.0439.58
SmolLM-360M-Base36060053.3357.2221.2024.922.191.2126.68
SmolLM2-360M-Base360400056.3059.1925.2225.552.880.0028.19
Nandi-Mini-150M-Base15050037.2052.3228.5728.862.584.2725.63

Note

Mobile-LLM model checkpoints are not publicly available; their results are reported directly from the original paper. All other models have been evaluated using lm-eval under a consistent setup. Human-Eval & GSM8K have been evaluated using Greedy-decoding for now for all models.

Performance onf Finetuned Tasks

CrossSum-Hindi (CHRF) Results

We finetuned our model and other open source models on Google's IndicGenBench Crossum-Hindi. Nandi-mini-150M was able to outperform other models.

Base ModelBefore FinetuneAfter Finetune
Qwen-2-0.5-Base0.094.22
Qwen2.5-0.5B-Base0.434.18
SmolLM-135M-Base0.092.55
SmolLM-360M-Base0.092.99
SmolLM2-135M-Base0.092.67
SmolLM2-360M-Base0.123.51
Nandi-mini-150M0.104.37

Tokenization Fertility Score across Languages

LanguageSmolLM3-3BQwen3-0.6B-BaseSarvam-1Nandi-Mini-150M
English1.171.161.321.18
Bengali8.667.511.551.44
Gujarati10.479.371.551.53
Hindi2.715.141.251.32
Kannada16.4312.962.101.90
Malayalam17.7714.562.492.05
Marathi3.736.701.551.55
Oriya19.0715.752.182.68
Punjabi9.238.661.471.42
Tamil13.5610.932.062.05
Telugu15.4013.382.091.77
Assamese9.268.134.311.51

🚀 Usage

python
!pip install transformers=='5.4.0'

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "FrontiersMind/Nandi-mini-150M"

device = "cuda" if torch.cuda.is_available() else "cpu"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    trust_remote_code=True,
    dtype=torch.bfloat16
).to(device).eval()


prompt = """
The night was quiet and the streets were empty. 
A single light flickered in the distance. Someone was walking slowly, carrying a small bag. Suddenly,
"""
model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)

outputs = model.generate(
    **model_inputs,
    max_new_tokens=50,
    do_sample=True,
    temperature=0.3,
    top_k=20,
    repetition_penalty=1.1,
    top_p=0.95
)

response = tokenizer.decode(
    outputs[0],
    skip_special_tokens=True,
)

print(response)

📬 Feedback & Suggestions

We’d love to hear your thoughts, feedback, and ideas!

  • Discord: https://discord.gg/ZGdjCdRt
  • Email: support@frontiersmind.ai
  • Official Website https://www.frontiersmind.ai/
  • LinkedIn: https://www.linkedin.com/company/frontiersmind/
  • X (Twitter): https://x.com/FrontiersMind