🚀 MedQwen3B-Reasoner: 数学強化トレーニングによる医療分野の推論
MedQwen3B-Reasonerは、Qwen2.5-3B-Instructの特殊バリアントで、GRPO
を使用して微調整され、強力な数学的問題解決能力を維持しながら、医療分野の推論に特化しています。このモデルは、強化された推論能力を示し、適切な場合に不確実性を表現することができます。

🚀 クイックスタート
MedQwen3B-Reasonerは、医療分野の推論と数学的問題解決能力を兼ね備えたモデルです。以下の手順で使用を開始できます。
モデルの初期化
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "hooman650/MedQwen3B-Reasoner"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "What is the relationship between BMI and cardiovascular disease risk?"
messages = [
{"role": "system", "content": "\nRespond in the following format:\n<reasoning>\n...\n</reasoning>\n<answer>\n...\n</answer>\n"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
✨ 主な機能
- 医療分野の専門知識と数学的推論能力を兼ね備えています。
- "maybe"という応答で不確実性を表現することができます。
- 構造化された推論出力で、明確なステップバイステップの説明が可能です。
- コンパクトなサイズ(30億パラメータ)で、高いパフォーマンスを維持しています。
- GRPO(Group Relative Policy Optimization)を使用して483ステップでトレーニングされています。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "hooman650/MedQwen3B-Reasoner"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "What is the relationship between BMI and cardiovascular disease risk?"
messages = [
{"role": "system", "content": "\nRespond in the following format:\n<reasoning>\n...\n</reasoning>\n<answer>\n...\n</answer>\n"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
高度な使用法
prompts = [
"What is the relationship between BMI and cardiovascular disease risk?",
"How does smoking affect lung health?"
]
for prompt in prompts:
messages = [
{"role": "system", "content": "\nRespond in the following format:\n<reasoning>\n...\n</reasoning>\n<answer>\n...\n</answer>\n"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"Prompt: {prompt}")
print(f"Response: {response}")
📚 ドキュメント
重要事項
⚠️ 重要提示
ollama
、llama-cpp
、vllm
またはその他の推論エンジンを使用する場合、以下のシステムプロンプトを設定する必要があります。このモデルは、以下のプロンプトで最適な性能を発揮します。
'\nRespond in the following format:\n<reasoning>\n...\n</reasoning>\n<answer>\n...\n</answer>\n'
独自トレーニングに興味がある場合
こちらの記事を読むか、ノートブックを参照してください。
トレーニングデータ
このモデルは、以下のデータセットを組み合わせてトレーニングされています。
モデルの詳細
引用
このモデルを研究で使用する場合は、以下のように引用してください。
@misc {hooman_sedghamiz_2025,
author = { {Hooman Sedghamiz} },
title = { MedQwen3B-Reasoner (Revision 5dbc982) },
year = 2025,
url = { https://huggingface.co/hooman650/MedQwen3B-Reasoner },
doi = { 10.57967/hf/4415 },
publisher = { Hugging Face }
}
📄 ライセンス
このモデルは、Apache 2.0ライセンスの下で提供されています。