AiMed: Artificial Intelligence large language model for chinese Medicine 面向中文医学的人工智能大语言模型

License Apache 2.0 python_version

🔬 介绍

AiMed 面向中文医学的人工智能大语言模型由清华大学OpenDE团队中国医学科学院医学信息研究所(下称“医信所”)联合发布。

AiMed 期望实现有效处理医学知识问答、医学论文阅读、医学文献检索等任务和在医学科研中的应用。

📆 工作流

[2023/09/01] 清华大学完成第一阶段PT代码开发和模型训练,并接入相关测试,开始进行第一阶段实际运行

[2023/09/01] 医信所发布论文全文数据集1-预计20万篇

[2023/08/30] 医信所发布医学名词解释问答数据集和医学论文摘要问答数据集

[2023/08/29] 清华大学发布《医疗文献LLM训练方案》

[2023/08/29] 医信所发布医学数据数据集-共计108本,612个文件

[2023/08/28] 清华大学发布《关于基座模型选择的相关问题说明》和《关于大模型训练的成本核算》

[2023/08/23] 医信所发布论文摘要数据集2-共计312万篇

[2023/08/22] 清华大学与医信所联合发布《中文医学大语言模型合作方案》

[2023/08/21] 医信所发布论文摘要数据集1-共计276万篇

[2023/08/16] 针对中文医学领域构造大语言模型的初步设想与讨论

⏩ 构建流程

AiMed 整个构建流程包括:

  • PT增量预训练
  • SFT有监督微调
  • RLHF(奖励建模、强化学习训练)
  • DPO(直接偏好优化)

具体,AiMed参照ChatGPT等大语言模型的一般构造思路,实现了医学领域大模型的训练:

  • 第一阶段:PT(Continue PreTraining)增量预训练
    • 在海量领域文档数据上二次预训练通用基座大语言模型,以注入领域知识
  • 第二阶段:SFT(Supervised Fine-tuning)有监督微调
    • 构造指令微调数据集
    • 在预训练模型基础上做指令精调,以对齐指令意图
  • 第三阶段
    • RLHF(Reinforcement Learning from Human Feedback)基于人类反馈对语言模型进行强化学习,分两步:
      • RM(Reward Model)奖励模型建模
        • 构造人类偏好排序数据集
        • 训练奖励模型,用来建模人类偏好
          • 主要是"HHH"原则,具体是"helpful, honest, harmless"
      • RL(Reinforcement Learning)强化学习
        • 用奖励模型来训练SFT模型
        • 生成模型使用奖励或惩罚来更新其策略
        • 以便生成更高质量、更符合人类偏好的文本
  • 第四阶段
    • DPO(Direct Preference Optimization) 直接偏好优化方法
      • DPO通过直接优化语言模型来实现对其行为的精确控制
      • 无需使用复杂的强化学习,也可以有效学习到人类偏好
      • DPO相较于RLHF更容易实现且易于训练,效果更好

🌏 模型基座

😜 推理和部署

推理所需的模型权重、源码、配置目前暂未公开,只保存于本地。下面以 Baichuan-13B-Chat 为例示范多种推理方式。

推理前请安装依赖:

pip install -r requirements.txt

1.Python代码方式

python test.py

在代码中,模型加载指定 device_map='auto',会使用所有可用显卡。如需指定使用的设备,可以使用类似 export CUDA_VISIBLE_DEVICES=0,1(使用了0、1号显卡)的方式控制。

2.命令行工具方式

python cli_demo.py

▶️ Demo

1. 工业使用Demo

依靠streamlit运行以下命令,会在本地启动一个 web 服务,把控制台给出的地址放入浏览器即可访问。

streamlit run web_demo.py

2. 研究使用Demo

提供一个简洁的基于gradio的交互式web界面,启动服务后,可通过浏览器访问,输入问题,模型会返回答案。

启动服务,命令如下:

CUDA_VISIBLE_DEVICES=0 python gradio_demo.py --model_type base_model_type --base_model path_to_llama_hf_dir --lora_model path_to_lora_dir

比如:

CUDA_VISIBLE_DEVICES=0 python gradio_demo.py --model_type baichuan --base_model ./AiMed-13B-Chat-V1

参数说明:

  • --model_type {base_model_type}:预训练模型类型,如llama、bloom、chatglm等
  • --base_model {base_model}:存放HF格式的LLaMA模型权重和配置文件的目录,也可使用HF Model Hub模型调用名称
  • --lora_model {lora_model}:LoRA文件所在目录,也可使用HF Model Hub模型调用名称。若lora权重已经合并到预训练模型,则删除--lora_model参数
  • --tokenizer_path {tokenizer_path}:存放对应tokenizer的目录。若不提供此参数,则其默认值与--base_model相同
  • --template_name:模板名称,如vicunaalpaca等。若不提供此参数,则其默认值是vicuna
  • --only_cpu: 仅使用CPU进行推理
  • --gpus {gpu_ids}: 指定使用的GPU设备编号,默认为0。如使用多张GPU,以逗号分隔,如0,1,2
  • --resize_emb:是否调整embedding大小,若不调整,则使用预训练模型的embedding大小,默认不调整

⚠️ 局限性

授权协议为 The Apache License 2.0,可免费用做商业用途。

Downloads last month
347
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The HF Inference API does not support model that require custom code execution.