模型 / 数据集
SCIR-HI/Huatuo-Llama-Med-Chinese avatar
SCIR-HI/Huatuo-Llama-Med-Chinese

本草(华驼):用中文医学知识微调大模型的实践样本

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

4,993 个 Star499 个 ForkPythonApache-2.0
GitHub

秒懂

它是什么?
本草(原名华驼)是一个基于中文医学知识图谱和文献构建指令数据,并对 LLaMA、Bloom、活字等基模型进行 LoRA 微调的开源项目。它展示了从知识到问答对再到模型参数的具体路径,但其数据质量和维护状态需要使用者自行判断。
适合谁用?
适合需要快速获得一个中文医学问答原型,并且愿意自行清洗数据、验证输出准确性的研究团队或开发者。不适合将模型输出直接用于临床决策的场合,因为项目自述训练数据存在错误且未持续更新。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 74 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,谁在用

通用中文大模型在回答医学问题时,往往给出泛泛而谈或包含幻觉的内容。本草项目尝试用指令微调把医学知识灌进基模型,让模型在问答场景下更贴近中文医学事实。它面向的是一群特定的人:想自己微调医疗大模型,但没有足够医学数据构建经验的研究者。项目提供了从知识库到指令数据的构建思路,以及针对多个基模型的 LoRA 权重。它的价值不在模型本身有多强,而在于把一条可复现的微调流水线摊开给人看。

数据从哪来:知识图谱与 GPT-3.5 的配合

数据构建分两条线。第一条基于医学知识库,主要参考 cMeKG,围绕疾病、药物、检查指标等构建字段,比如中心词、相关疾病、所属科室。项目用 GPT-3.5 接口,针对这些知识设置多种 Prompt 形式生成问答对。第二条基于医学文献,收集了 2023 年关于肝癌的中文文献,用 GPT-3.5 围绕文献结论构建多轮问答。这里有个关键点:训练集只有八千余条,项目自己也承认数据存在错误和不完善。用 GPT-3.5 生成数据,优点是可以快速扩充,缺点是没有医学专家逐条校验,错误会直接进入训练集。

微调机制:LoRA 与多基模型的权衡

项目没有从头训练模型,而是采用半精度基模型加 LoRA 微调的方式。LoRA 只训练一小部分低秩矩阵,显存占用和训练时间都大幅下降。文档给出一个参考:基于 LLaMA 的微调,在一张 A100-SXM-80GB 上训练 10 轮耗时约 2 小时 17 分,batch_size 为 128 时显存约 40GB。这个数字说明 24GB 显存的 3090/4090 也能跑,只是需要调小 batch_size。支持四种基模型:活字 1.0、Bloom-7B、Alpaca-Chinese-7B、LLaMA-7B。这种多基模型策略让使用者可以根据手头资源和中文能力偏好选择,但也意味着要分别下载对应的 LoRA 权重,不能混用。

从知识到回答的升级:知识微调的三阶段

普通指令微调只学从问题到答案的映射。本草在此基础上提出知识微调,让模型在推理时显式调用知识库。过程分三阶段:先根据问题填充知识检索参数,包括中心词和属性;然后查询知识库获取对应知识;最后用这些知识生成回答。这个设计试图缓解模型直接编造答案的问题。文档没有给出知识微调后的效果对比数据,但从论文标题看,这是项目认为更可靠的方向。实际使用中,这种显式检索会增加一次查询开销,而且依赖知识库的覆盖度,如果问题涉及的疾病不在知识库中,模型可能无法正确填充参数。

跑起来需要哪些步骤

安装依赖很简单,执行 pip install -r requirements.txt,Python 建议 3.9 以上。推理脚本是 bash ./scripts/infer.sh,里面调用 infer.py,需要替换四个关键参数:--base_model 指向基模型路径,--lora_weights 指向解压后的 LoRA 文件夹,--instruct_dir 指向测试数据,--prompt_template 指向模板文件。模板选择有讲究:活字和 Bloom 用 templates/bloom_deploy.json,LLaMA 和 Alpaca 分两种,基于知识库用 med_template.json,基于文献用 literature_template.json。测试数据格式要参照 ./data/infer.json,替换时保持 JSON 结构一致。微调自己的数据则按 ./data/llama_data.json 的格式构建,运行 bash ./scripts/finetune.sh。整个流程对熟悉 Hugging Face 生态的人不陌生,但新手容易在模板选择上出错。

文档里没写清楚的地方

有几个信息缺口值得注意。第一,模型效果对比部分只展示了 Llama 输出,没有完整对比表,文档没有给出微调后模型在标准医学问答基准上的量化分数。第二,训练数据的构建代码没有开源,只提供了数据样例和最终数据集,这意味着如果你想复现完整的构建流程,需要自己写代码。第三,医学文献部分只开放了针对肝癌单个疾病的模型,其他疾病尚未覆盖。第四,LoRA 权重下载主要依赖百度网盘,部分链接需要提取码,在无墙环境或自动化部署时可能不便。这些限制让项目的可复现性打了折扣。

替代方案与维护现状

同实验室还开源了 Med-ChatGLM,基于相同数据训练的医疗版 ChatGLM-6B,如果你更熟悉 ChatGLM 生态,可以直接用那个。另一个替代是活字原版模型,它本身是通用中文问答模型,没有医学微调,但你可以基于它自己构建数据。与本草相比,Med-ChatGLM 省去了 LoRA 权重与基模型匹配的步骤,但可定制性较低。维护方面,仓库最后一次推送是 2026 年 7 月,但新闻动态停留在 2024 年 7 月,且没有发布任何 release 版本。许可证是 Apache-2.0,这对商用相对友好,但要注意基模型本身的许可证,比如 LLaMA 的许可限制与 Apache-2.0 不冲突,但活字和 Bloom 各有自己的条款,使用时需要分别确认。

编辑结论

适合需要快速获得一个中文医学问答原型,并且愿意自行清洗数据、验证输出准确性的研究团队或开发者。不适合将模型输出直接用于临床决策的场合,因为项目自述训练数据存在错误且未持续更新。采用前应先检查 LoRA 权重与基模型的版本匹配,尤其注意活字和 Bloom 的 prompt 模板与 LLaMA 系列不同。若追求更低的部署门槛,可考虑直接使用 Med-ChatGLM 或活字原版。最终判断:本草是一个有价值的数据构建与微调流程参考,而非一个可直接信赖的医疗模型成品。

官方来源

  1. Issues
  2. License: Apache-2.0
  3. README
  4. SCIR-HI/Huatuo-Llama-Med-Chinese on GitHub
社区笔记

社区笔记