Model reference · open weights

Baichuan-M2

Available as managed deployment LLMs baichuan-inc Text gen 2 variants 1k dl/mo

Baichuan-M2 is an open-weight language model from baichuan-inc. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Makerbaichuan-inc
TypeLanguage models
TaskText gen
Parameters (lead)32.8B
Context128k tokens
Runs withtransformers
Based onQwen/Qwen2.5-32B
Released2025-08-10
Popularity1k downloads / month
LicenceOpen weights

About

What Baichuan-M2 is

This repository contains the model presented in Baichuan-M2: Scaling Medical Capability with Large Verifier System.

🌟 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 NameHealthBenchHealthBench-HardHealthBench-Consensus
Baichuan-M260.134.791.5
gpt-oss-120b57.63090
Qwen3-235B-A22B-Thinking-250755.225.990.6
Deepseek-R1-052853.622.691.5
GLM-4.547.818.785.3
Kimi-K24310.790.9
gpt-oss-20b42.510.882.6

General Performance

BenchmarkBaichuan-M2-32BQwen3-32B (Thinking)
AIME2483.481.4
AIME2572.972.9
Arena-Hard-v2.045.844.5
CFBench77.675.7
WritingBench8.567.90

Note: AIME uses max_tokens=64k, others use 32k; temperature=0.6 for all tests.

🔧 Technical Features

📗 Technical Blog: Blog - Baichuan-M2

📑 Technical Report: Arxiv - 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 ()
    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:

  • 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 tre

From the published model card. Full card on the HuggingFace links in the sidebar.

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys baichuan-m2 for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (baichuan-m2 below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/chat/completions \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"baichuan-m2","messages":[{"role":"user","content":"Hello"}]}'

Create an account — your API key is available in the console. 5M tokens/month currently included with every new account at launch.

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