Instructions to use aigensciences/Meerkat2-32B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use aigensciences/Meerkat2-32B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="aigensciences/Meerkat2-32B") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("aigensciences/Meerkat2-32B") model = AutoModelForCausalLM.from_pretrained("aigensciences/Meerkat2-32B", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use aigensciences/Meerkat2-32B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "aigensciences/Meerkat2-32B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aigensciences/Meerkat2-32B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/aigensciences/Meerkat2-32B
- SGLang
How to use aigensciences/Meerkat2-32B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "aigensciences/Meerkat2-32B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aigensciences/Meerkat2-32B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "aigensciences/Meerkat2-32B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aigensciences/Meerkat2-32B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use aigensciences/Meerkat2-32B with Docker Model Runner:
docker model run hf.co/aigensciences/Meerkat2-32B
Meerkat2
Meerkat2 is a family of open medical reasoning models for Korean and English clinical contexts, released at 14B, 32B, and 30B-A3B (MoE) scales. The models are trained on an 837K-example mixture including carefully curated question-answer pairs from Korean medical statutes.
Two design choices drive the results:
- Statute-grounded synthesis. Legal knowledge depends on accurate memorization and requires high fidelity, which teacher distillation does not guarantee. Generating QA pairs directly from 12 Korean medical statutes substantially outperforms distillation on the legal subsets of KorMedMCQA.
- Verbosity-Decoupled Distillation (VDD). Long teacher rationales transfer reasoning ability well, but the student also inherits the teacher's verbose response style. VDD attaches an explicit verbosity instruction to the verbose training examples, so length is attributed to the prompt constraint rather than to the reasoning trajectory.
๐ Paper: Meerkat2: Bridging Global Reasoning and Local Knowledge for Efficient Medical AI
๐ค Collection: aigensciences/meerkat2
Model Family
| Model | Total Params | Active Params | Repository |
|---|---|---|---|
| Meerkat2-14B | 14B | 14B | aigensciences/Meerkat2-14B |
| Meerkat2-30B-A3B | 30B (MoE) | 3B | aigensciences/Meerkat2-30B-A3B |
| Meerkat2-32B | 32B | 32B | aigensciences/Meerkat2-32B |
All three share the same training mixture and recipe. Pick 30B-A3B if inference cost matters most, since it reaches Korean licensing accuracy comparable to Qwen3-235B-A22B while activating only 3B parameters. Pick 32B for the highest overall accuracy in the family, and 14B for the smallest memory footprint.
Quick Start
Transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "aigensciences/Meerkat2-32B" # or Meerkat2-32B, Meerkat2-30B-A3B
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(
checkpoint,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{
"role": "system",
"content": "Answer the following multiple choice question. Conclude with: 'ANSWER: (A/B/C/D)'",
},
{
"role": "user",
"content": "48์ธ ๋จ์๊ฐ 3์๊ฐ ์ ๋ถํฐ ์์๋ ๋ช
์น ํต์ฆ์ผ๋ก ์๋ค. ...",
},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
enable_thinking=True, # set False for Instant mode
return_tensors="pt",
return_dict=True,
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=2048)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
vLLM
pip install vllm
vllm serve "aigensciences/Meerkat2-32B" --reasoning-parser qwen3
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "aigensciences/Meerkat2-32B",
"messages": [{"role": "user", "content": "๊ตญ๋ด ์๋ฃ๋ฒ์ ์ง๋ฃ๊ธฐ๋ก๋ถ ๋ณด์กด๊ธฐ๊ฐ์?"}]
}'
SGLang
pip install sglang
python3 -m sglang.launch_server \
--model-path "aigensciences/Meerkat2-32B" \
--reasoning-parser qwen3 \
--host 0.0.0.0 --port 30000
Usage Notes
Thinking and Instant modes
Meerkat2 inherits the Qwen3 hybrid thinking interface. Training applied loss masking to user prompts and to empty thought blocks, so the model initiates reasoning by default unless reasoning is explicitly disabled.
- Thinking mode: the model writes its reasoning inside
<think>tags before answering. Use this for exam-style questions, differential diagnosis, and any case where the chain of reasoning should be inspectable. - Instant mode: pass
enable_thinking=Falsefor a direct answer. Instant mode is still substantially stronger than the corresponding Qwen3 base model, so it is a reasonable default for latency-sensitive workflows.
Response language
The model was trained with both English and Korean rationales for the same questions. State the desired output language in the system prompt, for example Respond only in English. or ํ๊ตญ์ด๋ก๋ง ์๋ตํ์ธ์. Unlike the base models, Meerkat2 does not lose accuracy when answering in Korean.
Reproducing the reported numbers
Evaluations were run with EvalScope using the system prompt shown in the Transformers snippet above. Prompt formulation is not critical: the accuracy and token-efficiency ranking holds across minimal, EvalScope-style, and Meerkat1-style system prompts, and across three decoding seeds.
Statutes covered
Medical Service Act, Pharmaceutical Affairs Act, Regional Public Health Act, National Health Insurance Act, Narcotics Control Act, Framework Act on Health and Medical Services, National Health Promotion Act, Infectious Disease Control and Prevention Act, Quarantine Act, Prevention of Acquired Immunodeficiency Syndrome Act, Emergency Medical Service Act, Blood Management Act.
Decontamination
Training data was checked against the MedQA and KorMedMCQA test sets for shared 10-grams, following the criterion used in prior work. No 10-gram overlap was found between any training and test example.
Intended Use and Limitations
Meerkat2 is intended for research and educational use. Its outputs are not a substitute for professional medical diagnosis or treatment, and clinical decisions should not be made on the basis of model responses without expert verification.
Known limitations:
- Legal knowledge reflects the Korean statutes as of the data collection date. Statutes are amended, so answers about legal detail should be verified against the current text.
- Localization is specific to Korean clinical and legal contexts. Applying the same recipe to another jurisdiction would require building an analogous legal corpus and clinical benchmark.
- Human evaluation by licensed clinicians was conducted at limited scale. Broader physician studies would be needed to fully characterize clinical behavior.
- General-domain capability is preserved but not improved. Some general benchmark scores sit slightly below the corresponding Qwen3 base model.
Training data comes from publicly available benchmarks, instruction-tuning datasets, and Korean statutes accessible through public legal information services. No identifiable patient records were used. A refusal subset is included in the training mixture to reject harmful prompts, with the resulting behavior reported on MedSafetyBench.
Citation
@article{park2026meerkat2,
title={Meerkat2: Bridging Global Reasoning and Local Knowledge for Efficient Medical AI},
author={Park, Jungwoo and Hwang, Hyeongsoon and Lee, Sanghoon and Kang, Jaewoo},
year={2026}
}
- Downloads last month
- 136