Model reference · open weights

sarvam

LLMs sarvamai Text gen 5 builds Open weights 14k dl/mo

sarvam is an open-weight language model from sarvamai. sarvam-30b (FP32) weighs 64.3 GB; the smallest configuration that runs it is H100 80 GB.

  • Sarvam-30B is a 32.2B parameter Mixture-of-Experts text-generation model developed by sarvamai, designed for practical deployment in resource-constrained environments.
  • It supports a context length of 131,072 tokens and is optimized for multilingual voice calls and tool usage.
  • The model is open-sourced under the Apache 2.0 license and supports 22 Indian languages.

Summary of the sarvamai/sarvam-30b model card, 2026-10-01

What it is

Released bysarvamai
Released2026-03-03
Parameters32.2B
VRAM64.3 GB for the weights

What it runs on

Memory and cards for sarvam-30b (FP32)

64.3 GBweights, file size
19 MBcache per 1K tokens
1.5 GBruntime overhead, at least
131,072 tokenscontext max
CardRequests at onceContext maxMemory
8K each32K each
RTX 3060 12 GB … L40S 48 GB
6 smaller cards
———
A100 80 GB7719all 128K78.2 GB
H100 80 GB317all 128K78.1 GB
RTX PRO 6000 Blackwell 96 GB13032all 128K93.8 GB
DGX Spark (GB10) 128 GB unified21453all 128K107 GB
H200 141 GB407101all 128K138 GB
B200 180 GB627156all 128K176 GB
2× L40S 48 GB
tensor parallel
12932all 128K44.0 GB a card
4× RTX 4090 24 GB
tensor parallel
14636all 128K23.4 GB a card
4× RTX 3090 24 GB
tensor parallel
14736all 128K23.4 GB a card
4× RTX 5090 32 GB
tensor parallel
33884all 128K31.0 GB a card
2× H100 80 GB
tensor parallel
466116all 128K78.1 GB a card
Memory needed at each load
Requests at once8K tokens each32K tokens each
165.9 GB66.4 GB
566.6 GB68.9 GB
867.0 GB70.9 GB
1668.3 GB76.0 GB
3270.9 GB86.2 GB
6476.0 GB107 GB

One card, with vLLM's small-card settings.

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
sarvam-30b (above) ↗ 32.2BFP32 64.3 GBH100 80 GB
sarvam-105b ↗ 106.0BFP32 212 GB2× H200 141 GB
sarvam-30b-fp8 ↗ 32.2BFP8 38.6 GBL40S 48 GB
sarvam-105b-fp8 ↗ 106.0BFP8 113 GB4× RTX 5090 32 GB
sarvam-30b-gguf ↗ —GGUF 19.6 GB2× RTX 3060 12 GB

From the model card

What sarvamai says about sarvam

Read the model card

Want a bigger model? Download Sarvam-105B!

Index

  1. Introduction
  2. Architecture
  3. Benchmarks
    • Knowledge & Coding
    • Reasoning & Math
    • Agentic
  4. Inference
  5. Footnote
  6. Citation

Introduction

Sarvam-30B is an advanced Mixture-of-Experts (MoE) model with 2.4B non-embedding active parameters, designed primarily for practical deployment. It combines strong reasoning, reliable coding ability, and best-in-class conversational quality across Indian languages. Sarvam-30B is built to run reliably in resource-constrained environments and can handle multilingual voice calls while performing tool calls.

A major focus during training was the Indian context and languages, resulting in state-of-the-art performance across 22 Indian languages for its model size.

Sarvam-30B is open-sourced under the Apache License. For more details, see our blog.

Architecture

The 30B MoE model is designed for throughput and memory efficiency. It uses 19 layers, a dense FFN intermediate_size of 8192, moe_intermediate_size of 1024, top-6 routing, grouped KV heads (num_key_value_heads=4), and an extremely high rope_theta (8e6) for long-context stability without RoPE scaling. It has 128 experts with a shared expert, a routed scaling factor of 2.5, and auxiliary-loss-free router balancing. The 30B model focuses on throughput and memory efficiency through fewer layers, grouped KV attention, and smaller experts.

Benchmarks

BenchmarkSarvam-30BGemma 27B ItMistral-3.2-24BOLMo 3.1 32B ThinkNemotron-3-Nano-30B-A3BQwen3-30B-Thinking-2507GLM 4.7 FlashGPT-OSS-20B
Math50097.087.469.496.298.097.697.094.2
HumanEval92.188.492.995.197.695.796.395.7
MBPP92.781.878.358.791.994.391.895.3
Live Code Bench v670.028.026.073.068.366.064.061.0
MMLU85.181.280.586.484.088.486.985.3
MMLU Pro80.068.169.172.078.380.973.675.0
MILU76.869.267.969.964.882.675.673.7
Arena Hard v249.050.143.142.067.772.158.162.9
Writing Bench78.771.470.375.783.785.079.279.1
BenchmarkSarvam-30BOLMo 3.1 32BNemotron-3-Nano-30BQwen3-30B-Thinking-2507GLM 4.7 FlashGPT-OSS-20B
GPQA Diamond66.557.573.073.475.271.5
AIME 25 (w/ Tools)88.3 (96.7)78.1 (81.7)89.1 (99.2)85.0 (-)91.6 (-)91.7 (98.7)
HMMT (Feb 25)73.351.785.071.485.076.7
HMMT (Nov 25)74.258.375.073.381.768.3
Beyond AIME58.348.564.061.060.046.0
BenchmarkSarvam-30BNemotron-3-Nano-30BQwen3-30B-Thinking-2507GLM 4.7 FlashGPT-OSS-20B
BrowseComp35.523.82.942.828.3
SWE Bench Verified34.038.822.059.234.0
τ² Bench (avg.)45.749.047.779.548.7

See footnote for evaluation details.

Inference

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

model_name = "sarvamai/sarvam-30b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="auto")

def generate_text(
    prompt: str,
    max_new_tokens: int = 2048,
    temperature: float = 0.8,
    top_p: float = 0.95,
    repetition_penalty: float = 1.0,
) -> None:
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")

    generation_config = GenerationConfig(
        max_new_tokens=max_new_tokens,
        repetition_penalty=repetition_penalty,
        temperature=temperature,
        top_p=top_p,
        do_sample=True,
    )

    with torch.no_grad():
        output_ids = model.generate(
            input_ids=inputs["input_ids"],
            attention_mask=inputs["attention_mask"],
            generation_config=generation_config,
        )
    return tokenizer.decode(output_ids[0], skip_special_tokens=True)

prompts = [
    "What is the capital city of New Zealand?",
]

for prompt in prompts:
    templated_prompt = tokenizer.apply_chat_template(
      [{"role": "user", "content": prompt}],
      tokenize=False,
      add_generation_prompt=True,
      enable_thinking=True
    )
    output = generate_text(templated_prompt, max_new_tokens=512)
    print("Prompt: ", prompt)
    print("Generated text: ", output)
    print("=" * 100)

Install latest SGLang from source

git clone https://github.com/sgl-project/sglang.git
cd sglang
pip install -e "python[all]"

Instantiate model and Run

import sglang as sgl
from transformers import AutoTokenizer

model_path = "sarvamai/sarvam-30b"
engine = sgl.Engine(
    model_path=model_path,
    tp_size=2,
    mem_fraction_static=0.8,
    trust_remote_code=True,
    dtype="bfloat16",
    prefill_attention_backend="fa3",
    decode_attention_backend="fa3",
)

sampling_params = {
    "temperature": 0.8,
    "max_new_tokens": 2048,
    "repetition_penalty": 1.0,
}

prompts = [
    "Which treaty formally ended World War I and imposed heavy reparations on Germany?",
]

outputs = engine.generate([
    tokenizer.apply_chat_template([
        {"role": "user", "content": prompt}],
        tokenize=False,
        add_generation_prompt=True,
        enable_thinking=True)
        for prompt in prompts],
    sampling_params)
for p, o in zip(prompts, outputs):
    print("Prompt: ", p)
    print("Generated text: ", o['text'])
    print("=" * 100)

Note: currently

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms