MedicalGPT
训练专属医疗领域大语言模型的完整解决方案,支持SFT/DPO/GRPO等多种对齐技术
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
训练专属医疗领域大语言模型的完整解决方案,支持SFT/DPO/GRPO等多种对齐技术
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:一位基层医生想用AI辅助诊断,但市面上的通用大模型对罕见病的理解总是差强人意;一位医学研究者想训练一个专注于"儿科罕见病"的专业助手,却苦于没有完整的训练代码和数据集。MedicalGPT 正是为解决这些问题而生——它提供了一套完整的医疗领域大模型训练流水线,从增量预训练到 RLHF 对齐,让任何人都能从零训练自己的医疗专用GPT。
MedicalGPT 由自然语言处理开源社区活跃贡献者 shibing624 于2023年6月创建,至今已获得 5582 颗GitHub Stars,765 次 Fork,有 5 个 open issues(比例极低,维护状态良好)。项目采用 Apache-2.0 开源许可证,是一个纯粹由社区驱动的中文NLP开源项目。
作者 shibing624 同时维护着多个知名开源工具,如 text2vec(中文语义相似度模型)和 similarity(句子相似度工具包),在中文NLP领域有较高影响力。MedicalGPT 的诞生填补了当时中文开源社区缺乏完整医疗大模型训练方案的空缺。项目 topics 包括:chatgpt, dpo, gpt, llama, llm, medical, medicalgpt 等,覆盖了从通用大模型到医疗垂直领域的完整链路。
MedicalGPT 的核心价值在于将 ChatGPT 训练大模型的完整流程工程化、文档化,形成了一套可直接复用的六阶段训练流水线:
| 阶段 | 技术 | 说明 |
|---|---|---|
| 增量预训练 (PT) | 因果语言建模 | 在医疗语料上继续预训练,增加领域知识 |
| 有监督微调 (SFT) | 全量/LoRA微调 | 用医疗问答数据微调基础模型 |
| 奖励模型 (RM) | Reward Modeling | 训练奖励模型为 RLHF 做准备 |
| PPO 强化学习 | PPO算法 | 用RM信号强化SFT模型 |
| DPO 直接偏好优化 | DPO | 绕过RM,直接用偏好数据优化 |
| GRPO/ORPO | 新型对齐算法 | 最新一代对齐技术 |
每个阶段都有独立脚本:pretraining.py(预训练)、supervised_finetuning.py(SFT)、reward_modeling.py(奖励模型)、ppo_training.py(PPO)、dpo_training.py(DPO)、grpo_training.py(GRPO)、orpo_training.py(ORPO)。这种模块化设计让研究者和工程师可以灵活组合:想快速验证可以只跑 SFT;想追求最优效果可以从 PT 到 SFT 到 DPO 全套走完。
核心依赖(requirements.txt):
推理服务方案: 项目提供了完整的推理工具链:
inference.py:单卡推理脚本,支持加载 PEFT 适配器权重openai_api.py:将模型封装为 OpenAI 兼容 API,一行代码切换到现有应用gradio_demo.py:基于 Gradio 的交互式 Demofastapi_server_demo.py:生产级 FastAPI 服务inference_multigpu_demo.py:多卡推理加速方案其他实用工具:
validate_jsonl.py:训练数据 JSONL 格式验证convert_dataset.py:数据集格式转换(支持 ShareGPT、Alpaca 等常见格式)build_domain_tokenizer.py:领域词表扩展(医学术语分词优化)merge_peft_adapter.py:PEFT 适配器权重合并model_quant.py:模型量化(GPTQ/AWQ),降低推理显存需求| 维度 | 评分 | 说明 |
|---|---|---|
| 代码组织 | 四星 | 模块化清晰,training/tools/scripts 各司其职 |
| 文档完善度 | 五星 | README/英文README/docs/FAQ 全面覆盖 |
| 测试覆盖 | 三星 | 有 tests/ 目录,具体覆盖率需实际运行 |
| 依赖管理 | 四星 | requirements.txt 明确,版本约束合理 |
| 可复现性 | 四星 | scripts/ 目录提供完整训练脚本和数据转换工具 |
需要客观指出的是,MedicalGPT 作为一个训练框架,它本身并不提供训练好的医疗大模型权重,而是需要用户自行准备数据和算力。这意味着:
此外,在医疗场景应用 AI 大模型必须经过严格验证。MedicalGPT 仓库根目录的 DISCLAIMER 明确声明:本项目仅供研究使用,模型输出的医疗建议不能替代专业医生的诊断,使用本项目产生的一切后果由使用者自行承担。
虽然没有 Docker 支持,但 MedicalGPT 的推理部署相对友好。项目提供的 gradio_demo.py 可以快速启动一个医疗问答 Web 界面,安装依赖后只需一行命令即可启动 Gradio Demo。推理依赖 inference.py,会自动加载 SFT 或 PEFT 权重,支持 LoRA 动态加载,显存占用可控(LoRA 模式下 16GB 显存的 7B 模型可运行)。如果需要生产级部署,openai_api.py 提供了 OpenAI 兼容接口,可以无缝集成到现有 RAG 或 Agent 系统中。
MedicalGPT 代表的不仅是一个工具,更是开源社区在医疗AI领域的一次重要探索:
如果你正在探索医疗领域的 LLM 应用,无论是做学术研究还是产品原型,MedicalGPT 都是一个值得深入研究的高质量起点。