7. MedicalGPT - Training Your Own Medical GPT Model with ChatGPT Training Pipeline.

    项目简介

    MedicalGPT训练医疗大模型,基于ChatGPT训练模式(ChatGPT training pipeline,),实现包括二次预训练、有监督微调、奖励建模、强化学习训练。

    基于ChatGPT Training Pipeline,本项目实现了领域模型—医疗模型的四阶段训练:

    • 第一阶段:PT(Continue PreTraining)增量预训练,在海量领域文档数据上二次预训练GPT模型,以注入领域知识
    • 第二阶段:SFT(Supervised Fine-tuning)有监督微调,构造指令微调数据集,在预训练模型基础上做指令精调,以对齐指令意图
    • 第三阶段:RM(Reward Model)奖励模型建模,构造人类偏好排序数据集,训练奖励模型,用来对齐人类偏好,主要是”HHH”原则,具体是”helpful, honest, harmless”
    • 第四阶段:RL(Reinforcement Learning)基于人类反馈的强化学习(RLHF),用奖励模型来训练SFT模型,生成模型使用奖励或惩罚来更新其策略,以便生成更高质量、更符合人类偏好的文本

    项目发布了如下的已训练模型:

    Model Base Model Introduction
    shibing624/ziya-llama-13b-medical-lora IDEA-CCNL/Ziya-LLaMA-13B-v1 在240万条中英文医疗数据集shibing624/medical上SFT微调了一版Ziya-LLaMA-13B模型,医疗问答效果有提升,发布微调后的LoRA权重
    shibing624/ziya-llama-13b-medical-merged IDEA-CCNL/Ziya-LLaMA-13B-v1 在240万条中英文医疗数据集shibing624/medical上SFT微调了一版Ziya-LLaMA-13B模型,医疗问答效果有提升,发布微调后的完整模型权重
    shibing624/vicuna-baichuan-13b-chat-lora baichuan-inc/Baichuan-13B-Chat 在10万条多语言ShareGPT GPT4多轮对话数据集shibing624/sharegpt_gpt4上SFT微调了一版baichuan-13b-chat多轮问答模型,日常问答和医疗问答效果有提升,发布微调后的LoRA权重
    shibing624/vicuna-baichuan-13b-chat baichuan-inc/Baichuan-13B-Chat 在10万条多语言ShareGPT GPT4多轮对话数据集shibing624/sharegpt_gpt4上SFT微调了一版baichuan-13b-chat多轮问答模型,日常问答和医疗问答效果有提升,发布微调后的完整模型权重

    同时也发布了LLaMA, LLaMA2, Bloom, ChatGLM, ChatGLM2, Baichuan模型的多轮对话微调训练,使得大模型底座有更广泛的支持。

    项目发布于2023年6月,并且持续更新中

    论文及源码

    项目相关源码

    https://github.com/shibing624/MedicalGPT

    无其它技术报告,但训练调优过程、数据集等都在git repo中很详尽。

    数据集构建

    该项目的突出特点是,所有各阶段的数据集集合了自己和其它医疗领域类似项目的开放数据集,并给出了详尽的说明, 具体如下:

    医疗数据集

    • 240万条中文医疗数据集(包括预训练、指令微调和奖励数据集):shibing624/medical
    • 22万条中文医疗对话数据集(华佗项目):FreedomIntelligence/HuatuoGPT-sft-data-v1

    通用数据集

    Pretraining datasets

    • 16GB中英文无监督、平行语料Linly-AI/Chinese-pretraining-dataset
    • 524MB中文维基百科语料wikipedia-cn-20230720-filtered

    SFT datasets

    • 6千条多语言ShareGPT GPT4多轮对话数据集:shibing624/sharegpt_gpt4 [本项目支持格式]
    • 9万条英文ShareGPT多轮对话数集:anon8231489123/ShareGPT_Vicuna_unfiltered [本项目支持格式]
    • 50万条中文ChatGPT指令Belle数据集:BelleGroup/train_0.5M_CN
    • 100万条中文ChatGPT指令Belle数据集:BelleGroup/train_1M_CN
    • 5万条英文ChatGPT指令Alpaca数据集:50k English Stanford Alpaca dataset
    • 2万条中文ChatGPT指令Alpaca数据集:shibing624/alpaca-zh
    • 69万条中文指令Guanaco数据集(Belle50万条+Guanaco19万条):Chinese-Vicuna/guanaco_belle_merge_v1.0
    • 5万条英文ChatGPT多轮对话数据集:RyokoAI/ShareGPT52K
    • 80万条中文ChatGPT多轮对话数据集:BelleGroup/multiturn_chat_0.8M
    • 116万条中文ChatGPT多轮对话数据集:fnlp/moss-002-sft-data
    • 3.8万条中文ShareGPT多轮对话数据集:FreedomIntelligence/ShareGPT-CN

    Reward Model datasets

    • 原版的oasst1数据集:OpenAssistant/oasst1
    • 2万条多语言oasst1的reward数据集:tasksource/oasst1_pairwise_rlhf_reward
    • 11万条英文hh-rlhf的reward数据集:Dahoas/full-hh-rlhf
    • 9万条英文reward数据集(来自Anthropic’s Helpful Harmless dataset):Dahoas/static-hh
    • 7万条英文reward数据集(来源同上):Dahoas/rm-static
    • 7万条繁体中文的reward数据集(翻译自rm-static)liswei/rm-static-m2m100-zh
    • 7万条英文Reward数据集:yitingxie/rlhf-reward-datasets
    • 3千条中文知乎问答偏好数据集:liyucheng/zhihu_rlhf_3k

    模型训练

    根据4步骤微调,给出了每一步的训练脚本及详细的说明,通过wiki也公开了训练参数说明、数据集说明、扩充此表说明等。

    而且,模型训练已扩展支持主流的通用大模型:

    • bloom
    • llama/llama2
    • chatglm/chatglm2 -6B
    • baichuan 7B, 13B

    模型效果

    项目虽然在领域模型训练调优验证方面相对完整,给出了inference和demo的脚本,问答示例如下:

    项目没有给出更大范围或者定量的通用模型与微调模型的对比。

    开放程度

    本项目是开放程度相对较高的医疗大模型构建,而且整个过程也按照ChatGPT training pipeline创建的,包括训练脚本、推理(inference)验证脚本及交互演示脚本等,整体链条完整清楚,并建立了微信探讨群。

    项目代码的授权协议为 The Apache License 2.0,代码可免费用做商业用途,模型权重和数据只能用于研究目的。需在产品说明中附加MedicalGPT的链接和授权协议。