CoolFace
Modelpublic

weblab-LLM-M/Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct

sourceHugging Faceapache-2.0updated 24d agoView on Hugging Face
0likes374downloads
Model Card

Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct

本モデルは、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)「AIの安全性確保に関する研究開発・検証等の推進事業 / 日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」において開発された医療特化型大規模言語モデルであり、東京大学開発チーム内の Ramen Team による「日本語医療LLMに対する事後学習手法の比較研究」の成果物です。

手法検証を目的とした研究成果の公開であり、Weblab-MedLLM 本系列とは異なり実運用向けの調整・安全性検証は行われていません。臨床現場での直接利用は推奨されません。

モデル概要

項目内容
モデル名Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct
ベースモデルQwen/Qwen3-Next-80B-A3B-Instruct
パラメータ数80B(A3B MoE, qwen3_next)
事後学習手法CHORD(GRPO + On-the-fly SFT ハイブリッド)
学習フレームワークms-swift + Megatron-LM (v3.9.3)
言語日本語
ベースモデルライセンスQwen3-Next-80B-A3B-Instruct is licensed under the Apache License 2.0. Copyright (c) Alibaba Cloud.
本モデルライセンスApache License 2.0
開発者Ramen Team
事業名NEDO JPNP25006
ソースコードhttps://github.com/weblab-llm-m/singularity-post-training-medical
関連記事Qiita: CHORD を ms-swift に載せて回した / GRPO / GSPO / CHORD を並べて学習 / RL post-training で使った報酬関数

研究シリーズ内の位置づけ

本モデルは事後学習手法比較研究の1バリアントです。同一ベースモデルに対する他手法および同一プロジェクトの他モデルと合わせて評価してください。

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

  • —本モデルは手法検証を目的とした研究成果であり、実臨床における安全性・有効性の検証は行われていません。
  • —開発者は本モデルの正確性・完全性・最新性・品質等について一切の保証を行わず、本モデルの利用または利用不能により生じたいかなる損害についても責任を負いません。
  • —医療行為(診断、治療方針の決定、健康への助言など)に直接適用することは推奨されません。
  • —本モデルを活用して具体的な医療用途の製品を開発される場合、その製品が医療機器プログラムとして薬機法の規制対象となる可能性があることにご留意ください。
  • —プログラム医療機器の該当性に関する相談窓口:独立行政法人医薬品医療機器総合機構(PMDA)

事後学習手法

Qwen3-Next-80B-A3B-Instruct をベースに、CHORD(GRPO + On-the-fly SFT ハイブリッド)による事後学習を実施しました。GRPO の探索とパラレルに、構造化医療回答形式の SFT データを混合学習することで、生成品質の維持と正解率向上の両立を狙う手法です。

学習ハイパーパラメータ

項目値
learning rate1e-6
max_epochs5
global batch size512
num_generations16
KL係数(beta)0.1
stepspergeneration5
SFT混合係数 mu_peak0.1
報酬関数ophtho(正解判定, weight=1.5)+ chinese(中国語ペナルティ, weight=1.0)
RL学習データigakuqa.jsonl(医師国家試験 過去問, MCQ選択式, GRPO形式)
SFT学習データchord_igakuqa.jsonl(generate_chord.py による2ステップ合成: MCQ → 自然質問 → 構造化医療回答)
学習リソース8 nodes × 8 GPU
注意(既知の交絡因子): CHORD の SFT データ(chord_igakuqa.jsonl)は自然言語QA形式(要点/原因/対応/受診目安の構造化回答)であり、RL 用データおよび評価タスクの MCQ 選択式([ans]...[/ans])とフォーマットが大きく乖離しています。この不整合が RL 部分の改善を相殺している可能性があり、SFT データを MCQ 形式に揃えれば性能が改善する余地があります。

詳細な設計・実装は ANALYSIS_REPORT_RL.md を参照してください。

評価結果

同一プロジェクト内で実施したベンチマークのみを記載します。括弧内はベースモデル(Qwen3-Next-80B-A3B-Instruct)からの変化幅。

医師国家試験(igakuqa, 2023–2025, N=1,122)

指標ベース本モデル (CHORD)
Accuracy (All)89.5%90.4% (+0.9)
Accuracy (subset, テキストのみ)93.6%94.1% (+0.5)
95% CI (Bootstrap, All)[87.6%, 91.3%][88.7%, 92.2%]

統計検定(McNemar, Base vs CHORD, N=1,122): 改善 40 / 劣化 30, χ²=1.16, p=0.282(n.s.)

igakuqa ではベースモデルが既に高スコアで、統計的有意差は検出されませんでした。

専門医試験(specialistexamtest_v2, 13診療科, N=3,757)

指標ベース本モデル (CHORD)
Accuracy (All)69.0%70.0% (+1.0)
Accuracy (subset, テキストのみ)73.0%73.9% (+0.9)
95% CI (Bootstrap, All)[67.5%, 70.4%][68.5%, 71.6%]

統計検定(McNemar, Base vs CHORD, N=3,757): 改善 317 / 劣化 278, χ²=2.43, p=0.119(n.s.)

平均値では改善傾向にあるものの、CHORD 単体では専門医試験でも統計的有意差は検出されませんでした。上記「既知の交絡因子」(SFT データのフォーマット不整合)が主因と考えられます。

診療科別の顕著な改善(Base 80B → CHORD)

診療科BaseCHORDΔ
整形外科71.7%74.5%+2.8
心臓外科63.3%65.7%+2.4
救急71.6%73.3%+1.7

フォーマット遵守率

[ans]...[/ans] フォーマットのパース失敗率: 0.0%

未実施の評価

以下のベンチマークは本モデルでは実施していません。同種の評価を必要とする場合は Weblab-MedLLM 本系列を参照してください。

  • —対話型診断(J-HealthBench)
  • —Do-Not-Answer
  • —AnswerCarefully
  • —診療ガイドライン(guidelinewrongfiltered, 本モデルでは未評価)

学習データ

  • —RL用: 医師国家試験過去問(2022年以前)由来の GRPO 形式データ(igakuqa.jsonl)
  • —SFT用: generate_chord.py による2ステップ合成データ(chord_igakuqa.jsonl, MCQ → 自然質問 → 構造化医療回答)

評価データ(2023–2025年の医師国試および専門医試験)とはデータリークがないよう分離しています。

推奨動作環境

ハードウェア

  • —GPUメモリ(推論, BF16): 約 160GB 以上(80B × 2byte, 参考値。KVキャッシュ・アクティベーション込みで余裕を持って H100 80GB × 4枚以上を推奨)
  • —実測値ではなくパラメータ数からの算出値のため、実運用前に対象環境でのメモリ実測を推奨します。

ソフトウェア

  • —python>=3.9(transformersを使用する場合)
  • —python 3.12(vLLMを使用する場合は推奨)
  • —transformers>=4.55.0(qwen3_next アーキテクチャに対応したバージョンが必要)
  • —vllm(推奨)
  • —accelerate>=1.10.0
  • —torch>=2.8.0

ダウンロード

bash
pip install hf_transfer
HF_HUB_ENABLE_HF_TRANSFER=1 hf download weblab-LLM-M/Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct \
    --local-dir ./Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct

vLLMを使った推論(推奨)

bash
vllm serve ./Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct \
    --host 0.0.0.0 \
    --port 8000 \
    --served-model-name Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct \
    --tensor-parallel-size 4 \
    --dtype bfloat16 \
    --gpu-memory-utilization 0.90 \
    --trust-remote-code \
    --enable-chunked-prefill \
    --enable-prefix-caching \
    --enable-expert-parallel
python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")

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

transformersを使った推論

python
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "./Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct"

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

messages = [
    {"role": "system", "content": "あなたは医療の専門知識を持つアシスタントです。"},
    {"role": "user", "content": "脳梗塞の急性期治療において、rt-PA静注療法の適応基準について説明してください。"}
]

text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=1024*4)
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

Citation

bibtex
@misc{ramen2026chord,
  title  = { Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct },
  author = { Ramen Team, Matsuo-Iwasawa Lab, The University of Tokyo },
  year   = { 2026 },
  url    = { https://huggingface.co/weblab-LLM-M/Ramen-CHORD-Qwen3-Next-80B-A3B-Instruct },
  note   = { NEDO Project JPNP25006 }
}

謝辞

この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の 委託業務(JPNP25006)の結果得られたものです。

お問い合わせ

contact-medllm@weblab.t.u-tokyo.ac.jp