Weblab-MedLLM-gpt-oss-120b

本プログラムは、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)「AIの安全性確保に関する研究開発・検証等の推進事業 / 日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」において開発された医療特化型大規模言語モデルです。

本モデルを実際の臨床現場における疾患の診断や臨床意思決定支援として直接利用することは推奨されません。 詳細は「利用にあたっての注意事項」をご確認ください。

モデルの概要

項目 内容
モデル名 Weblab-MedLLM-gpt-oss-120b
パラメータ数 120B MoE
ベースモデル gpt-oss-120b
言語 日本語
開発者 東京大学大学院工学系研究科 松尾・岩澤研究室
事業名 NEDO「AIの安全性確保に関する研究開発・検証等の推進事業 / 日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」
ベースモデルライセンス gpt-oss-120b is licensed under the Apache License 2.0. Copyright (c) OpenAI.
本モデルライセンス Apache License 2.0

利用にあたっての注意事項

本モデルのご利用にあたっては、以下の点にご留意ください。

  • 本プログラムは、実臨床における安全性・有効性の検証が十分に行われていません。
  • 開発者は、本プログラムに関し、その正確性、完全性、最新性、および品質など、いかなる保証も行わず、利用者が本プログラムを利用したこと、利用できなかったことにより生じた一切の損害について責任を負いません。
  • 医療行為(診断、治療方針の決定、健康への助言など)に直接適用することは推奨されません。あくまで医療専門家による適切な判断の補助となる情報提供ツールとしての利用にとどめることを推奨します。
  • 本モデルを活用して具体的な医療用途の製品を開発される場合、その製品が医療機器プログラムとして薬機法の規制対象となる可能性があることにご留意ください。

モデルの特徴と性能

以下に主要ベンチマークの性能を示します。括弧内はベースモデルからの変化幅です。

ベンチマーク スコア 説明
医師国試 93.6% (+3.8) 2023年以降の医師国家試験過去問
専門医試験 81.1% (+5.2) 複数診療科の専門医試験過去問
専門医試験(RAG) 88.6% 上記に診療ガイドライン等をRAG(Retrieval-Augmented Generation: 外部文書の検索参照)で付与した条件
ガイドライン 45.6% (-7.7) 複数診療科の診療ガイドライン準拠性。コンテキスト長拡張時59.2%
対話型診断 54.0% (+4.6) 臨床シナリオに基づく対話型診断能力(J-HealthBench)
Do-Not-Answer 96.4% (+1.3) 危険・不適切な質問への拒否応答能力
AnswerCarefully 86.9% (+1.4) 日本語の文化・法制度に合わせた安全性評価
Nejumi LB4 94.0% (+16.2) 日本語LLMの汎用的な言語能力評価

学習データ

独自に収集した医学論文・医学書籍・診療ガイドライン・試験問題などを由来とする合成データをもとに、継続事前学習および事後学習を実施しています。

推奨動作環境

ハードウェア

  • GPUメモリ: 約240GB(BF16精度)。H100 80GB × 4枚以上での分散推論が必要(vLLMではアテンションヘッド数64の制約により、tensor_parallel_sizeは64の約数である必要があります。推奨: H100 80GB × 8枚)

Python

  • python>=3.9(transformersを使用する場合)
  • python 3.12(vLLMを使用する場合は推奨)

ライブラリ

  • accelerate>=1.10.0
  • torch>=2.8.0
  • transformers>=4.55.0(本モデルのアーキテクチャに対応したバージョンが必要)
  • vllm(推奨、大規模モデルの推論効率化)

ダウンロード

hf_transfer を使用することで高速なダウンロードが可能です。

pip install hf_transfer
HF_HUB_ENABLE_HF_TRANSFER=1 hf download weblab-LLM-M/Weblab-MedLLM-gpt-oss-120b \
    --local-dir ./Weblab-MedLLM-gpt-oss-120b

注意: hf コマンドは huggingface_hub パッケージに含まれています。未インストールの場合は pip install huggingface_hub を実行してください。

vLLMを使った推論(推奨)

大規模モデルの推論効率化のため、vLLMの使用を推奨します。vLLMのインストールおよび使用方法については vLLM公式ドキュメント を参照してください。

本モデルを vLLM で使用する際の主な注意点は以下の通りです。

  • tensor_parallel_size: アテンションヘッド数(64)の約数を指定してください(例: 4, 8, 16)
  • 最小GPU構成: H100 80GB × 4枚以上(推奨: 8枚)
  • 最大シーケンス長: 128K tokens(--max-model-len 131072

環境構築

注意: ハードウェアやソフトウェアのバージョンによって動作しない場合があります。動作保証はありません。

動作確認済み構成

項目 バージョン
GPU NVIDIA B200 × 8
vLLM 0.15.1
PyTorch 2.9.1+cu128
CUDA 12.8(conda環境)
Python 3.12

セットアップ手順

# 1. Miniconda3のインストール
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b
~/miniconda3/bin/conda init bash
source ~/.bashrc

# 2. conda環境の作成(CUDA 12.8、Python 3.12)
conda create --prefix $HOME/envs/vllm_cu128 python=3.12 -y
conda activate $HOME/envs/vllm_cu128
conda install -c nvidia cuda-toolkit=12.8 -y

# 3. vLLMのインストール(PyTorch 2.9.1+cu128 も依存として自動インストール)
pip install vllm==0.15.1

# 4. FlashInferのアップグレード
pip install flashinfer-python==0.6.3

# 5. NCCLのアップグレード(B200 Blackwellの場合のみ必要)
pip install nvidia-nccl-cu12==2.29.3 --no-deps

# 6. CUDAシンボリックリンクの設定(FlashInfer JITコンパイル用)
mkdir -p $HOME/envs/vllm_cu128/lib64/stubs
ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so $HOME/envs/vllm_cu128/lib64/libcuda.so
ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so.1 $HOME/envs/vllm_cu128/lib64/libcuda.so.1

GPU固有の環境変数

特定のGPUアーキテクチャ(Blackwellなど)では以下の環境変数が必要になる場合があります。

export NCCL_NVLS_ENABLE=0              # NVLink SHARP無効化(ncclCommInitRankハング対策)
export VLLM_ALLREDUCE_USE_SYMM_MEM=0   # torch symmetric memory無効化
export VLLM_USE_NCCL_SYMM_MEM=0        # NCCL symmetric memory allocator無効化
export CUDA_HOME=$CONDA_PREFIX          # FlashInfer JITコンパイル用

サーバーの起動

注意: 環境によって動作しない場合があります。動作保証はありません。

conda activate $HOME/envs/vllm_cu128

vllm serve ./Weblab-MedLLM-gpt-oss-120b \
    --host 0.0.0.0 \
    --port 8000 \
    --served-model-name Weblab-MedLLM-gpt-oss-120b \
    --tensor-parallel-size 8 \
    --pipeline-parallel-size 1 \
    --dtype bfloat16 \
    --gpu-memory-utilization 0.93 \
    --max-model-len 131072 \
    --disable-custom-all-reduce \
    --trust-remote-code \
    --enable-chunked-prefill \
    --enable-prefix-caching \
    --max-num-batched-tokens 32768 \
    --max-num-seqs 60 \
    --generation-config vllm \
    --enable-expert-parallel

起動後は OpenAI クライアントからアクセスできます。

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")  # 認証なしの場合は任意の文字列

response = client.chat.completions.create(
    model="Weblab-MedLLM-gpt-oss-120b",
    messages=[
        {"role": "system", "content": "あなたは医療の専門知識を持つアシスタントです。"},
        {"role": "user", "content": "脳梗塞の急性期治療において、rt-PA静注療法の適応基準について説明してください。"}
    ],
    max_tokens=1024*4,
)
print(response.choices[0].message.content)

transformersを使った推論

注意: transformers の device_map="auto" はパイプライン並列による推論のため、120B MoE モデルでは数分かかることがあります。本番利用にはvLLMを推奨します。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "./Weblab-MedLLM-gpt-oss-120b"  # ダウンロード先のローカルパスを指定

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "脳梗塞の急性期治療において、rt-PA静注療法の適応基準について説明してください。"

messages = [
    {"role": "system", "content": "あなたは医療の専門知識を持つアシスタントです。"},
    {"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=1024*4,
)
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(response)

※ チャットテンプレートはchat_template.jinjaとして同梱されています。tokenizer_config.jsonに含まれていない場合は、手動で設定するか、vLLMでの推論をご利用ください。

謝辞

本研究は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)「AIの安全性確保に関する研究開発・検証等の推進事業 / 日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」の支援を受けて実施されました。

メンテナンス情報

  • リリース日: 2026年6月
  • バージョン: 1.0.0

お問い合わせ

contact-medllm@weblab.t.u-tokyo.ac.jp へご連絡ください

Downloads last month
-
Safetensors
Model size
117B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support