n4nAI

Why AI labs name models mini, nano, and pro

What mini, nano, and pro mean in model names — a practical guide to LLM size tiers, capability trade-offs, and how labs like Google, OpenAI, and Anthropic actually use these suffixes.

n4n Team4 min read901 words

Audio narration

Coming soon — every post will get a voice note here.

When you see “mini,” “nano,” or “pro” appended to a model name, you’re looking at a capability tier — a shorthand for the parameter count, context window, and inference cost relative to the flagship model in that family. These suffixes don’t follow a universal standard; each lab defines its own thresholds, but the pattern is consistent: smaller suffixes mean fewer parameters, shorter context, lower latency, and lower price, while “pro” or “ultra” marks the most capable (and expensive) variant. Understanding the actual differences lets you pick the right model for the job without overpaying for intelligence you don’t need.

How labs structure model tiers

Every major lab releases model families in at least three sizes. The naming varies — Google uses Nano/Flash/Pro/Ultra, OpenAI uses mini/nano (and previously turbo), Anthropic uses Haiku/Sonnet/Opus, Mistral uses Small/Medium/Large — but the underlying architecture is the same: a single training run produces a large teacher model, then distillation or early-stopping creates smaller students.

# Conceptual: how a lab derives tiers from one training run
class ModelFamily:
    def __init__(self, base_checkpoint):
        self.teacher = base_checkpoint          # e.g., 1T+ params, full context
        self.distilled = {
            "nano": distill(teacher, target_params=1_000_000_000),   # ~1B
            "mini": distill(teacher, target_params=7_000_000_000),   # ~7B
            "pro":  quantize(teacher, bits=4),                       # full size, 4-bit
            "ultra": teacher                                          # fp16/bf16
        }

Distillation preserves reasoning patterns but compresses knowledge. Quantization (pro/ultra) keeps the full parameter count but reduces precision. The result: nano models run on-device; mini models fit on a single GPU; pro/ultra models need multi-GPU or TPU pods.

What each tier actually buys you

Tier Typical params Context window Latency (ttft) Cost per 1M tokens Best for
Nano 0.5–2B 1k–32k <50 ms $0.02–$0.10 Classification, extraction, on-device
Mini 3–8B 32k–128k 50–150 ms $0.10–$0.50 RAG, summarization, structured output
Pro 70B–200B+ 128k–2M 200–800 ms $1–$5 Complex reasoning, coding, long context
Ultra 400B–1T+ 1M–10M 500 ms–2 s $5–$30 Research, agent loops, maximum accuracy

These numbers shift every release cycle. Gemini 1.5 Flash (mini-tier) now beats Gemini 1.0 Pro on many benchmarks. GPT-4o-mini outperforms the original GPT-4 on MMLU. The only reliable signal is the lab’s own benchmark table — not the suffix.

Why the naming exists

Three forces drive this taxonomy:

  1. Inference economics. Serving a 1T-parameter model costs 100× more than a 7B model. Labs need price discrimination.
  2. Deployment constraints. Mobile apps need nano; edge servers need mini; data centers need pro/ultra.
  3. Developer mental models. “Pro” signals “use this for production”; “nano” signals “prototype here, upgrade later.”

The suffix is a contract: if you build against the mini API, you can swap to pro later without code changes. That promise holds only when the lab maintains API compatibility across tiers — which most do, but not all.

Concrete example: Gemini 1.5 family

Google’s current lineup illustrates the pattern cleanly:

{
  "gemini-1.5-flash": {
    "tier": "mini",
    "params": "~7B (distilled)",
    "context": "1_048_576 tokens",
    "input_price_per_m": 0.075,
    "output_price_per_m": 0.30,
    "use_case": "High-volume RAG, classification, low-latency chat"
  },
  "gemini-1.5-pro": {
    "tier": "pro",
    "params": "~200B (quantized)",
    "context": "2_097_152 tokens",
    "input_price_per_m": 1.25,
    "output_price_per_m": 5.00,
    "use_case": "Long-document reasoning, code generation, agent workflows"
  },
  "gemini-1.5-ultra": {
    "tier": "ultra",
    "params": "~1T+ (full precision)",
    "context": "10_000_000 tokens",
    "input_price_per_m": 7.50,
    "output_price_per_m": 30.00,
    "use_case": "Research, maximum accuracy, video understanding"
  }
}

Flash is the workhorse. Pro handles the hard cases. Ultra exists for when cost is no object. Notice that Flash gets the same 1M context window as Pro — context length is no longer a tier differentiator for Google.

Common misconceptions

“Mini is just a quantized pro”

False. Mini/nano/flash models are distilled — trained from scratch with the larger model as teacher. Quantization (pro → 4-bit) preserves weights; distillation transfers behavior. A 4-bit quantized 70B model still needs 40 GB VRAM. A distilled 7B model needs 6 GB. They serve different hardware targets.

“Higher tier always means better quality”

Not on every task. Distilled models often beat their teachers on narrow benchmarks (classification, extraction, function calling) because distillation acts as a regularizer. The teacher’s breadth becomes the student’s focus. Run evals on your data before assuming pro > mini.

“Naming is consistent across labs”

Anthropic’s Haiku (mini) is 3× larger than Google’s Flash (mini). Mistral’s Small (mini) is 22B — larger than Llama 3 70B (pro-tier by parameter count). The suffix only means relative to that lab’s flagship. Compare specs, not names.

“You should always start with pro”

Starting with pro masks architecture problems. If your RAG pipeline fails on Flash, it will fail on Pro — just more expensively. Build against the cheapest tier that could work. Upgrade only when evals prove the cheaper tier hits a ceiling.

How to choose in practice

def select_tier(task: Task, budget: Budget, latency_sla: float) -> ModelTier:
    # 1. Can nano do it? (classification, entity extraction, intent routing)
    if task.type in {"classification", "extraction", "routing"}:
        return "nano"

    # 2. Does it need long context + structured output?
    if task.context_tokens > 32_000 and task.requires_json_schema:
        return "mini"   # flash/haiku/sonnet handle this well

    # 3. Complex reasoning, coding, agent loops?
    if task.type in {"coding", "multi_step_reasoning", "agent"}:
        return "pro"

    # 4. Research, video, maximum accuracy, cost no object?
    if budget.unlimited and task.type in {"research", "video_understanding"}:
        return "ultra"

    # Default: start mini, measure, escalate
    return "mini"

This heuristic works across labs because the capability boundaries are similar even when names differ. The key is measuring — not guessing.

What changes next

Two trends are collapsing the tier distinction:

  1. Distillation is getting scary good. GPT-4o-mini scores 82% MMLU vs GPT-4’s 86%. The gap is narrowing to single digits on academic benchmarks.
  2. Context windows are equalizing. Flash, Pro, and Ultra all offer 1M+ context in Gemini 1.5. The differentiator shifts to reasoning depth per token, not window size.

Soon the only real difference between tiers will be latency and price. The “pro” suffix may disappear entirely — replaced by “standard” and “high-throughput” variants of the same model.

Quick reference: current suffix map (2024)

Lab Nano Mini Pro Ultra
Google Flash Pro Ultra
OpenAI gpt-4o-nano gpt-4o-mini gpt-4o
Anthropic Haiku Sonnet Opus
Mistral Small (22B) Medium (123B) Large (200B+)
Meta Llama 3.1 8B Llama 3.1 70B Llama 3.1 405B
DeepSeek DeepSeek-V2-Lite DeepSeek-V2
Qwen Qwen2-0.5B Qwen2-7B Qwen2-72B Qwen2-57B-A14B (MoE)

Bookmark the lab’s pricing page, not this table. The numbers change monthly.

Bottom line

What mini, nano, pro mean in model names is a capacity contract: this tier fits this hardware, meets this latency, costs this much, and handles this complexity. The suffix saves you from reading the model card every time — but only if you verify the contract still holds for the current release. Run your evals. Measure your latency. Pick the cheapest tier that passes.

Tagsmodel-namingllm-basicsglossarycomparison

Written by

n4n Team

The team building n4n — a single OpenAI-compatible API in front of 240+ models, with automatic fallback, load balancing and pay-per-token metering.

More from n4n Team →

All model families & naming conventions: gpt-5, claude, gemini 3, llama 4, mistral, deepseek, qwen, grok posts →