Skip to content

Releases: shibing624/MedicalGPT

v2.7.0

20 Apr 04:11

Choose a tag to compare

What's New

  • 支持独立 OPD(On-Policy Distillation) 蒸馏训练
  • 新增 training/opd_training.py 训练入口,基于 TRL GKDTrainer 实现 student/teacher 蒸馏
  • 新增 scripts/run_opd.sh 启动脚本,可直接复用现有 ShareGPT/SFT 数据格式
  • 补充 README 与训练参数文档,说明 OPD 参数、部署方式与 teacher/student 使用建议
  • 依赖升级到 trl>=0.29.0 以支持 GKDTrainer

Notes

  • OPD v1 为独立训练链路,不改动现有 PPO/GRPO 主流程
  • 训练产物与 SFT/LoRA 一样可独立部署或合并后部署

v2.6.0

14 Apr 04:00

Choose a tag to compare

更新摘要

MedicalGPT v2.6.0 新增了 Agent 工具调用(Function Call / Tool Use)训练能力,主路径覆盖 SFTDPO。同时补齐了工具数据格式处理、样例数据和脚本兼容性,方便在教学和实验场景中直接上手。

主要更新

  • 支持 SFTDPO 的 Agent / Function Call 微调训练
  • 新增多种模型的 tool_format 适配与解析逻辑,覆盖 defaultglm4llama3mistralqwen
  • 补充 data/sft/glaive_toolcall_zh_demo.jsonl 等 tool-call 数据样例
  • 统一本地训练数据为 .jsonl,并将 SFT / 偏好数据字段统一为 ShareGPT 风格
  • 修复本地混合 jsonl 目录加载:SFT 和 DPO 现在可以直接混合普通数据与带 tools 字段的数据文件
  • 多个运行脚本统一默认使用 python3

使用方式

# SFT:普通问答数据和 tool-call 数据可放在同一目录
bash scripts/run_sft.sh

# DPO:普通偏好数据和 tool-call 偏好数据可放在同一目录
bash scripts/run_dpo.sh

说明

  • 本版本的 tool-call 训练主路径为 SFTDPO
  • tools 字段为可选列;普通样本和 tool-call 样本可以混合放在同一训练目录
  • 训练脚本、数据目录和字段命名进一步统一,便于教学仓库维护和用户二次修改

Full Changelog: 2.5.0...2.6.0

v2.5.0

07 Apr 12:18

Choose a tag to compare

全流程适配Qwen3/Qwen3.5:

PT(增量预训练)— training/pretraining.py
SFT(有监督微调)— training/supervised_finetuning.py / training/supervised_finetuning_accelerate.py
RM(奖励模型)— training/reward_modeling.py
PPO(强化学习)— training/ppo_training.py
DPO(直接偏好优化)— training/dpo_training.py
ORPO(比值比偏好优化)— training/orpo_training.py
GRPO(群组相对策略优化)— training/grpo_training.py
DeepSpeed ZeRO-3 MoE 支持

针对 MoE 架构模型(Qwen3 MoE、Qwen3.5 MoE),在所有训练脚本中自动检测并设置 set_z3_leaf_modules,确保 DeepSpeed ZeRO-3 分布式训练下 MoE 模块不会被错误分片。同时兼容已有的 Mixtral 和 DeepSeek-V3 MoE 模型。

项目结构重组
将根目录 38 个散落文件按功能重组到 5 个子目录,提升教学仓库的可读性:

MedicalGPT/
├── training/ # 核心训练脚本(PT/SFT/RM/PPO/DPO/ORPO/GRPO + 模板)
├── scripts/ # 一键运行脚本 + DeepSpeed 配置(zero1/2/3.json)
├── demo/ # 推理、Gradio UI、FastAPI 服务、RAG 问答
├── tools/ # LoRA 合并、量化、词表扩充、数据转换
└── notebooks/ # Colab 端到端教程 Notebook
所有脚本从项目根目录运行,例如:bash scripts/run_sft.sh

快速开始
# SFT 微调 Qwen3.5-2B
bash scripts/run_sft.sh
# GRPO 训练
bash scripts/run_grpo.sh
# 推理
python demo/inference.py --base_model Qwen/Qwen3.5-2B --interactive

What's Changed

  • Refactor model_kwargs and logging for clarity by @whaler404 in #470
  • Add MiniMax as LLM provider for roleplay data generation by @octo-patch in #481
  • Fix ppo_training.py: unbalanced multi-GPU memory allocation causing OOM by @Copilot in #484

New Contributors

Full Changelog: 2.4.0...2.5.0

v2.4.0

17 Feb 03:18

Choose a tag to compare

v2.4.0

  1. 新增GRPO训练方法,GRPO通过纯RL方法可以体验aha momenthttps://github.com/shibing624/MedicalGPT/blob/main/run_grpo.sh
  2. 支持了 DeepSeek-V3, DeepSeek-R1 模型, template_name=deepseek3

v2.2.0

02 Aug 10:59

Choose a tag to compare

v2.2.0

  • 支持了角色扮演模型训练
  • 新增了医患对话SFT数据生成脚本role_play_data

造角色扮演对话

本数据集使用OpenAI API接口生成,流程:

  • 种子特征集和基础设定
    • 手工编写的种子集包含基本角色特征。
    • LLM从这个种子集生成角色的基础设定。
  • 角色设定的进化
    • 第二个种子集包含指导角色设定进化的指令Prompt。
    • 这些进化角色的指令Prompt被放到一个指令池中。基于这些进化Prompt,LLM对基础设定实施进化。
  • 反馈循环
    • 由人类评估者和GPT-4组成的混合评价系统。此系统对进化后的设定给出反馈。
    • 反馈用于迭代更新种子集。如此迭代,我们最终得到一个细致的角色设定数据集。
  • 角色扮演和对话生成
    • 使用self-instruction框架基于角色设定生成角色的对话数据。
  1. 生成角色设定,分别生成护士角色和患者角色
cd role_play_data

python role_generate.py
  1. 生成医患之间的多轮对话
    LLM选择:分别用gpt-4o的api和豆包的doubao-character-pro-32k的api生成对话
python roleplay_data_generate_gpt4.py

python roleplay_data_generate_doubao.py

What's Changed

  • add full_train.py and run_full_train.sh by @ZhuangXialie in #394

Full Changelog: 2.1.0...2.2.0

2.1.0

11 Jun 03:25

Choose a tag to compare

v2.1版本:

  • 支持了 Qwen2 系列模型微调训练

What's Changed

  • 增加中文数据集汇总,本项目支持格式 by @ZhuangXialie in #370
  • Change Llama tokenizer from LlamaTokenizer to AutoTokenizer by @princepride in #380

New Contributors

Full Changelog: 2.0.0...2.1.0

2.0.0

27 Apr 05:36

Choose a tag to compare

v2.0版本:

What's Changed

  • Updates for readme and demo ipynb and a small update for deprecated function by @ker2xu in #360
  • Typo by @ker2xu in #362
  • add max_length and max_prompt_length by @ZhuangXialie in #367

New Contributors

  • @ker2xu made their first contribution in #360
  • @ZhuangXialie made their first contribution in #367

Full Changelog: 1.9.0...2.0.0

1.9.0

17 Apr 09:01

Choose a tag to compare

v1.9版本

  1. 支持了 ORPO,详细用法请参照 run_orpo.sh。 不需要参考模型的优化方法,通过ORPO,LLM可以同时学习指令遵循和满足人类偏好,可以直接用base模型训练ORPO,训练相较SFT+DRO更简单,相对需要更多偏好数据集数据。
  2. 新增了支持微调qwen1.5, cohere 模型,和对应的template。

What's Changed

  • Update transformers in requirements.txt by @dividez in #321

Full Changelog: 1.8.0...1.9.0

v1.8.0

26 Jan 10:20

Choose a tag to compare

v1.8版本

  1. 支持微调Mixtral混合专家MoE模型 Mixtral 8x7B,SFT中如果用lora微调模型,可以开启4bit量化和QLoRA--load_in_4bit True --qlora True以节省显存,建议设置--target_modules q_proj,k_proj,v_proj,o_proj,这样可以避免对MoE专家网络的MLP层量化,因为它们很稀疏且量化后会导致性能效果下降。
  2. 新增了支持微调deepseek, deepseekcoder, orion 模型,和对应的template。

Full Changelog: 1.7.0...1.8.0

v1.7.0

14 Jan 04:09

Choose a tag to compare

v1.7版本:

  1. 新增检索增强生成(RAG)的基于文件问答ChatPDF功能,代码chatpdf.py,可以基于微调后的LLM结合知识库文件问答提升行业问答准确率。运行python chatpdf.py调用rag问答。

Full Changelog: 1.6.0...1.7.0