Baichuan-M2-32B

License Hugging Face M2 GPTQ-4bit Huawei Ascend 8bit

🌟 Model Overview

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:

  • πŸ† World's Leading Open-Source Medical Model: Outperforms all open-source models and many proprietary models on HealthBench, achieving medical capabilities closest to GPT-5
  • 🧠 Doctor-Thinking Alignment: Trained on real clinical cases and patient simulators, with clinical diagnostic thinking and robust patient interaction capabilities
  • ⚑ Efficient Deployment: Supports 4-bit quantization for single-RTX4090 deployment, with 58.5% higher token throughput in MTP version for single-user scenarios

πŸ“Š Performance Metrics

HealthBench Scores

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

General Performance

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 Features

πŸ“— Technical Blog: Blog - Baichuan-M2

Large Verifier System

  • Patient Simulator: Virtual patient system based on real clinical cases
  • Multi-Dimensional Verification: 8 dimensions including medical accuracy, response completeness, and follow-up awareness
  • Dynamic Scoring: Real-time generation of adaptive evaluation criteria for complex clinical scenarios

Medical Domain Adaptation

  • Mid-Training: Medical knowledge injection while preserving general capabilities
  • Reinforcement Learning: Multi-stage RL strategy optimization
  • General-Specialized Balance: Carefully balanced medical, general, and mathematical composite training data

βš™οΈ Quick Start

# 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 (</think>)
    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("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")

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:

  • SGLang:
    python -m sglang.launch_server --model-path baichuan-inc/Baichuan-M2-32B --reasoning-parser qwen3
    
  • vLLM:
    vllm serve baichuan-inc/Baichuan-M2-32B  --reasoning-parser qwen3
    

MTP inference with SGLang

  1. Replace the qwen2.py file in the sglang installation directory with draft/qwen2.py.
  2. Launch sglang:
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

⚠️ Usage Notices

  1. Medical Disclaimer: For research and reference only; cannot replace professional medical diagnosis or treatment
  2. Intended Use Cases: Medical education, health consultation, clinical decision support
  3. Safe Use: Recommended under guidance of medical professionals

πŸ“„ License

Licensed under the Apache License 2.0. Research and commercial use permitted.

🀝 Acknowledgements

  • Base Model: Qwen2.5-32B
  • Training Framework: verl
  • Inference Engines: vLLM, SGLang
  • Quantization: AutoRound, GPTQ Thank you to the open-source community. We commit to continuous contribution and advancement of healthcare AI.

πŸ“ž Contact Us


Empowering Healthcare with AI, Making Health Accessible to All

Downloads last month
4
Safetensors
Model size
32.8B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for baichuan-inc/Baichuan-M2-32B

Base model

Qwen/Qwen2.5-32B
Finetuned
(82)
this model