モデル / データセット
SCIR-HI/Huatuo-Llama-Med-Chinese avatar
SCIR-HI/Huatuo-Llama-Med-Chinese

本草(Huatuo-Llama-Med-Chinese): 中国医学知識で7BモデルをLoRA微調整するリポジトリ

Repo for BenCao [original name: HuaTuo (华驼)], Instruction-tuning Large Language Models with Chinese Medical Knowledge. 本草(原名:华驼)模型仓库,基于中文医学知识的大语言模型指令微调

スター 4,993フォーク 499PythonApache-2.0
GitHub

ひと目でわかる

これは何?
医学知識グラフと医学文献からGPT-3.5で問答対を作り、LLaMA・Alpaca・Bloom・活字にLoRAで指令微調整を施した重みを配布する。推論と学習の手順は揃っているが、データセットとモデルの品質はREADME自身が限定付きで説明している。
誰に向いている?
使うべきなのは、中国語の医学問答を自前のデータで試したい研究・検証目的のチームで、既存のLoRA重みを出発点にできる場合だ。臨床現場での利用や、根拠の追跡が必要な用途には向かない。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 74 日前です。
何の言語で書かれている?
主に Python です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

医学知識グラフを問答対に変換するという発想

一般的な中国語LLMは医学の質問に対して根拠の薄い回答を返しやすい。本草が解こうとしているのはこの点で、公開および自建の中国語医学知識ベース(主にcMeKGを参照)と医学文献を出発点に、GPT-3.5 APIで問答データを作り、それを用いて基モデルを指令微調整する。対象読者は、中国語の医学問答タスクで既存モデルの挙動を測りたい研究・検証目的の開発者である。患者向けの診断支援をそのまま任せる類のものではない。READMEの説明では、知識ベースは疾病・薬物・検査指標などを軸に、合併症、高危険因子、組織学的検査、臨床症状、薬物治療、補助治療といったフィールドを持つ。例として偏頭痛のエントリが挙げられ、中心語・関連疾病・関連症状・所属科室・発病部位という構造で記述されている。この構造があるからこそ、GPT-3.5へのプロンプトに知識を流し込み、複数形式の問答を生成できる。

学習データは知識ベース由来と文献由来の二系統に分かれる

データは性格の異なる二つに分かれている。一つは医学知識ベースから作った約8千余条の訓練集で、READMEはこのデータに知識が織り込まれているとしつつ、誤りや不十分な箇所が残ると明記している。もう一つは2023年の中国語肝癌文献を対象に、GPT-3.5で文献の結論を軸に多輪問答を生成したもので、data_literature/liver_cancer.json に1k条の訓練サンプルが置かれている。前者は疾患・薬物・症状といった構造化知識の網羅性が強みで、後者は個別疾患の文献結論に踏み込む点が違う。ただし公開されているモデルパラメータは肝癌単一疾患で訓練したものに限られ、READMEは将来「肝胆膵」関連16疾患への拡張と、文献結論を組み込んだ医学対話データセットの公開を予定として挙げている。現時点で何が使えて何が未公開かは、この区別を押さえないと判断を誤る。

LoRAで7B級モデルを1枚のGPUに収める

READMEによれば、すべての基モデルに対して半精度の基モデルをLoRAで微調整する方式を採り、計算資源と性能のバランスを取っている。基モデルは活字1.0(哈工大がBloom-7Bを二次開発した中国語汎用問答モデル)、Bloom-7B、Alpaca-Chinese-7B、LLaMA-7Bの4系統。訓練の実績として、LLaMAベースの指令微調整をA100-SXM-80GB 1枚で10エポック、約2時間17分、batch_size=128で約40GBのVRAMを使用したと記載されている。24GB級の3090/4090でもbatch_sizeを調整すれば動かせる見込みだという表現にとどまり、保証ではない。ここは設計上の割り切りがはっきり出る箇所で、フル微調整ではなくLoRAに寄せたことで参入障壁は下がったが、その分だけ基モデルの能力とLoRA重みの組み合わせに結果が依存する。どの基モデルを選ぶかが、そのまま再現できるかどうかの分岐点になる。

推論はinfer.pyとプロンプトテンプレートの対応が要

導入手順はREADMEに具体的に書かれている。まず pip install -r requirements.txt で依存を入れ、Pythonは3.9以上が推奨される。LoRA重みは百度網盤またはHugging Faceから入手し、解凍後は adapter_config.json と adapter_model.bin を含むディレクトリになる。推論は scripts/infer.sh、文献ベースの単輪は scripts/infer-literature-single.sh、多輪は scripts/infer-literature-multi.sh を実行する。中身は infer.py を呼ぶ形で、置き換える引数は --base_model、--lora_weights、--use_lora True、--instruct_dir、--prompt_template の5つ。テスト入力は data/infer.json にあり、差し替える場合は形式を揃える必要がある。見落としやすいのがテンプレートの対応関係で、活字とBloomは templates/bloom_deploy.json、LLaMAとAlpacaは知識ベース用が templates/med_template.json、文献用が templates/literature_template.json とREADMEの表で指定されている。基モデルとテンプレートを食い違わせると出力が崩れる。

知識微調は「質問から知識へ」を明示的に学習させる

本草の技術的な中心は、知識ベースから問答対を作る段階を終点にせず、推論時に知識を明示的に使わせる知識微調にある。READMEの説明では三段階を踏む。第一段階で質問に基づき知識検索のパラメータ(中心語と属性)を埋め、第二段階でそのパラメータに対応する知識を照会して取得し、第三段階で得た知識を使って回答を生成する。つまり学習させる写像が「question→answer」ではなく「question→knowledge」に変わる。知識ベースの構造が中心語と属性で引ける形になっているから成立する設計で、自由記述の医学文書だけを材料にした場合には同じ手順をそのまま持ち込めない。サンプルは data/knowledge_tuning_data_sample.txt に置かれ、詳細はACM TKDD採録の論文とarXiv:2309.04175 が参照先として示されている。

自前データで微調整する場合の書式とスクリプト

自前のデータセットで微調整したい場合、READMEは ./data/llama_data.json の形式に合わせてデータを作るよう指示し、実行は bash ./scripts/finetune.sh の一発で済むとしている。ここで注意したいのは、公開済みLoRA重みの系統がデータの種類と一致していない点だ。活字とBloomの重みは医学知識ベースと医学問答データセットに基づくと説明され、Alpacaは知識ベース版と知識ベース+文献版の2種類、LLaMAは知識ベース版と文献版の2種類が配布されている。基モデルごとに何を学習済みなのかが異なるため、用途に合う重みを選ばずに基モデルだけを見て決めると、期待した挙動にならない。同じデータで訓練した医療版ChatGLMとして ChatGLM-6B-Med が別リポジトリで案内されている点も、選定時の比較材料になる。

データ品質と公開範囲という二つの制約

最大の制約はデータ品質で、これはREADME自身が認めている。訓練集は知識を織り込んでいるが誤りと不十分な点が残り、文献側の訓練サンプルも品質は限定的で、今後公開データセットとして出し直す予定だと書かれている。つまり現状の重みは、医学的正確性を保証する成果物ではなく、手法を検証するための素材として位置づけるのが妥当だ。もう一つの制約は公開範囲で、文献ベースは肝癌1疾患のみ、知識ベースとデータセット構築コードは整理中とされている。加えてライセンスはApache-2.0だが、これはリポジトリのコードに対するもので、LLaMAやBloomなど基モデルの重みの利用条件は別に確認が必要になる。ここは法的助言ではなく、確認事項として挙げておく。

Med-ChatGLMや素の基モデルとどう住み分けるか

比較対象として最も近いのは、同じSCIR-HIが公開する ChatGLM-6B-Med である。本草がLLaMA・Alpaca・Bloom・活字という複数の基モデルにLoRAを当てて重みを配る構成なのに対し、Med-ChatGLMはChatGLM-6Bという単一の基モデルに対して同じ医学データで訓練した医療版という位置づけで、READMEでも「同じデータを用いて訓練した」と説明されている。基モデルの選定を自分で行いたい、あるいはLoRAを差し替えて実験したい場合は本草の構成が向く。逆に、基モデルを一つに固定して中国語の医療対話をすぐ動かしたいだけなら、選択肢が絞られている分だけMed-ChatGLMのほうが判断は単純になる。どちらもデータ由来の限界は同じ系統を引き継ぐ。

編集部の結論

使うべきなのは、中国語の医学問答を自前のデータで試したい研究・検証目的のチームで、既存のLoRA重みを出発点にできる場合だ。臨床現場での利用や、根拠の追跡が必要な用途には向かない。README自身が訓練集の誤りを認めており、文献側は肝癌1疾患のモデルしか公開されていない。導入前に確認すべきは、使う基モデルの重みが手元で取得できるか、templates配下のどのプロンプトテンプレートがその基モデルに対応するか、そしてApache-2.0が及ぶのはコードであって基モデルの重みではないという点である。

公式情報源

  1. Issues
  2. License: Apache-2.0
  3. README
  4. SCIR-HI/Huatuo-Llama-Med-Chinese on GitHub
コミュニティノート

コミュニティノート