引言

随着大语言模型在垂直领域的落地加速,医疗行业对专属大模型的需求日益迫切——既要适配医疗数据分布,又要对齐人类医疗问答的偏好与专业要求。MedicalGPT项目聚焦这一痛点,基于成熟的ChatGPT训练Pipeline,打造了从基础预训练到最终偏好优化的全链路医疗大模型训练方案,让开发者能够低成本、高效率地构建符合医疗场景的大模型。

项目核心介绍

MedicalGPT是一款开源的医疗大模型训练框架,核心目标是通过标准化的训练流程,让普通开发者也能完成医疗领域大模型的定制化训练。项目覆盖了大模型训练的核心阶段:

  1. 增量预训练(PT):在海量医疗文档数据上二次预训练基础模型,适配医疗数据分布;
  2. 有监督微调(SFT):基于医疗问答数据集精调模型,对齐指令意图并注入医疗知识;
  3. 偏好优化:支持RLHF(奖励建模+强化学习)、DPO(直接偏好优化)、ORPO(比值比偏好优化)、GRPO等多种对齐方案,让模型输出符合人类医疗问答的偏好。

项目还提供了多款已训练完成的医疗模型(如shibing624/ziya-llama-13b-medical-lora),以及交互式Demo、多卡推理、vllm部署等配套功能,覆盖从训练到落地的全环节。

创新点与核心优势

1. 全流程训练覆盖,适配多种优化范式

项目不仅实现了经典的RLHF训练流程,还率先支持DPO、ORPO、GRPO等前沿偏好优化方法:

  • DPO无需复杂的强化学习流程,直接优化模型以学习人类偏好,易训练、效果优;
  • ORPO将SFT与偏好对齐整合为单一步骤,缓解模型灾难性遗忘问题;
  • GRPO通过纯RL方法实现模型效果的“aha moment”提升。

2. 多模型适配+轻量化训练,降低落地门槛

支持LLaMA3、Qwen2.5、ChatGLM3、Baichuan等数十款主流大模型,适配LoRA/QLoRA/全参等多种训练方式,不同精度下的显存需求如下(以7B模型为例):

  • QLoRA(4bit)仅需6GB显存,普通消费级显卡即可训练;
  • LoRA(16bit)需16GB显存,满足中小团队训练需求。

3. 医疗领域适配性强,提供现成数据集与预训练模型

配套240万条中英文医疗数据集(shibing624/medical),以及多款微调后的医疗模型,开发者可直接基于现有资源快速启动训练,无需从零构建数据与模型。

技术原理、代码实现与部署

1. 核心技术原理

以DPO(直接偏好优化)为例,其核心是通过对比“优选回答”与“次优回答”,直接优化模型的对数概率比,替代RLHF中复杂的奖励模型与强化学习流程,公式核心为:
L DPO = − log ⁡ σ ( β log ⁡ π θ ( y 1 ∣ x ) π ref ( y 1 ∣ x ) − β log ⁡ π θ ( y 2 ∣ x ) π ref ( y 2 ∣ x ) ) \mathcal{L}_{\text{DPO}} = -\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_1 \mid x\right)}{\pi_{\text{ref}}\left(y_1 \mid x\right)} - \beta \log \frac{\pi_\theta\left(y_2 \mid x\right)}{\pi_{\text{ref}}\left(y_2 \mid x\right)}\right) LDPO=logσ(βlogπref(y1x)πθ(y1x)βlogπref(y2x)πθ(y2x))
其中 π θ \pi_\theta πθ为待训练模型, π ref \pi_{\text{ref}} πref为参考模型, β \beta β为温度系数, y 1 / y 2 y_1/y_2 y1/y2分别为优选/次优回答。

2. 代码实现(以DPO训练为例)

步骤1:安装依赖
git clone https://github.com/shibing624/MedicalGPT
cd MedicalGPT
pip install -r requirements.txt --upgrade
步骤2:执行DPO训练
# 运行DPO训练脚本
bash run_dpo.sh

run_dpo.sh核心配置示例:

CUDA_VISIBLE_DEVICES=0 python dpo_training.py \
    --model_name_or_path path_to_base_model \
    --train_file data/dpo_medical_data.json \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --learning_rate 5e-6 \
    --max_steps 1000 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout 0.05 \
    --beta 0.1 \
    --output_dir dpo_medical_model \
    --logging_steps 10 \
    --save_steps 100 \
    --fp16

3. 模型推理与部署

单卡交互式推理
CUDA_VISIBLE_DEVICES=0 python inference.py \
    --base_model path_to_model_hf_dir \
    --lora_model path_to_lora \
    --interactive
多卡推理(数据并行)
CUDA_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node 2 inference_multigpu_demo.py --base_model shibing624/vicuna-baichuan-13b-chat
vllm高性能部署
sh vllm_deployment.sh
Gradio交互式Demo部署
CUDA_VISIBLE_DEVICES=0 python gradio_demo.py --base_model path_to_llama_hf_dir --lora_model path_to_lora_dir

该项目及相关内容已 AladdinEdu课题广场同步发布,欢迎前往了解更多技术实现与资源

项目地址:AladdinEdu课题广场

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐