Model reference · open weights
Baichuan-M2 is an open-weight language model from baichuan-inc. Baichuan-M2-32B-GPTQ-Int4 (GPTQ) weighs 19.3 GB; the smallest configuration that runs it is RTX 4090 24 GB.
Summary of the baichuan-inc/Baichuan-M2-32B model card, 2026-10-01. The estimate below is for another build of the family.
What it is
| Released by | baichuan-inc |
|---|---|
| Released | 2025-08-10 |
| Parameters | 32.8B |
| VRAM | 19.3 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … RTX 4060 Ti 16 GB 2 smaller cards | — | — | — | |
| RTX 3090 24 GB | 1 | — | 11K | 23.4 GB |
| RTX 4090 24 GB | 1 | — | 11K | 23.4 GB |
| RTX 5090 32 GB | 5 | 1 | 40K | 31.0 GB |
| L40S 48 GB | 11 | 2 | 88K | 44.0 GB |
| A100 80 GB | 26 | 6 | all 128K | 78.2 GB |
| H100 80 GB | 24 | 6 | all 128K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 32 | 8 | all 128K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 38 | 9 | all 128K | 107 GB |
| H200 141 GB | 52 | 13 | all 128K | 138 GB |
| B200 180 GB | 69 | 17 | all 128K | 176 GB |
| 2× RTX 4060 Ti 16 GB tensor parallel | 4 | 1 | 36K | 15.4 GB a card |
| 2× RTX 4090 24 GB tensor parallel | 11 | 2 | 95K | 23.4 GB a card |
| 2× RTX 3090 24 GB tensor parallel | 11 | 2 | 95K | 23.4 GB a card |
| 2× RTX 5090 32 GB tensor parallel | 19 | 4 | all 128K | 31.0 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 22.4 GB | 28.8 GB |
| 5 | 31.0 GB | 63.2 GB |
| 8 | 37.4 GB | 89.0 GB |
| 16 | 54.6 GB | 158 GB |
| 32 | 89.0 GB | 295 GB |
| 64 | 158 GB | 570 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| Baichuan-M2-32B ↗ | 32.8B | BF16 | 65.5 GB | H100 80 GB |
| Baichuan-M2-32B-GPTQ-Int4 (above) ↗ | 32.8B | GPTQ | 19.3 GB | RTX 4090 24 GB |
From the model card
This repository contains the model presented in Baichuan-M2: Scaling Medical Capability with Large Verifier System.
Baichuan-M2-32B is Baichuan AI's medical-enhanced reasoning model, the second medical model released by Baichuan. Designed for real-world medical reasoning tasks, this model builds upon Qwen2.5-32B with an innovative Large Verifier System. Through domain-specific fine-tuning on real-world medical questions, it achieves breakthrough medical performance while maintaining strong general capabilities.
Model Features:
Baichuan-M2 incorporates three core technical innovations: First, through the Large Verifier System, it combines medical scenario characteristics to design a comprehensive medical verification framework, including patient simulators and multi-dimensional verification mechanisms; second, through medical domain adaptation enhancement via Mid-Training, it achieves lightweight and efficient medical domain adaptation while preserving general capabilities; finally, it employs a multi-stage reinforcement learning strategy, decomposing complex RL tasks into hierarchical training stages to progressively enhance the model's medical knowledge, reasoning, and patient interaction capabilities.
Core Highlights:
| Model Name | HealthBench | HealthBench-Hard | HealthBench-Consensus |
|---|---|---|---|
| Baichuan-M2 | 60.1 | 34.7 | 91.5 |
| gpt-oss-120b | 57.6 | 30 | 90 |
| Qwen3-235B-A22B-Thinking-2507 | 55.2 | 25.9 | 90.6 |
| Deepseek-R1-0528 | 53.6 | 22.6 | 91.5 |
| GLM-4.5 | 47.8 | 18.7 | 85.3 |
| Kimi-K2 | 43 | 10.7 | 90.9 |
| gpt-oss-20b | 42.5 | 10.8 | 82.6 |
| Benchmark | Baichuan-M2-32B | Qwen3-32B (Thinking) |
|---|---|---|
| AIME24 | 83.4 | 81.4 |
| AIME25 | 72.9 | 72.9 |
| Arena-Hard-v2.0 | 45.8 | 44.5 |
| CFBench | 77.6 | 75.7 |
| WritingBench | 8.56 | 7.90 |
Note: AIME uses max_tokens=64k, others use 32k; temperature=0.6 for all tests.
📗 Technical Blog: Blog - Baichuan-M2
📑 Technical Report: Arxiv - Baichuan-M2
# 1. load model
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-M2-32B", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/Baichuan-M2-32B")
# 2. Input prompt text
prompt = "Got a big swelling after a bug bite. Need help reducing it."
# 3. Encode the input text for the model
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
thinking_mode='on' # on/off/auto
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 4. Generate text
generated_ids = model.generate(
**model_inputs,
max_new_tokens=4096
)
output_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
][0].tolist()
# 5. parsing thinking content
try:
# rindex finding 151668 ()
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("
")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("
")
print("thinking content:", thinking_content)
print("content:", content)
For deployment, you can use sglang>=0.4.6.post1 or vllm>=0.9.0 or to create an OpenAI-compatible API endpoint:
python -m sglang.launch_server --model-path baichuan-inc/Baichuan-M2-32B --reasoning-parser qwen3
vllm serve baichuan-inc/Baichuan-M2-32B --reasoning-parser qwen3
python3 -m sglang.launch_server \
--model Baichuan-M2-32B \
--speculative-algorithm EAGLE3 \
--speculative-draft-model-path Baichuan-M2-32B/draft \
--speculative-num-steps 6 \
--speculative-eagle-topk 10 \
--speculative-num-draft-tokens 32 \
--mem-fraction 0.9 \
--cuda-graph-max-bs 2 \
--reasoning-parser qwen3 \
--dtype bfloat16
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.