AiMed: Artificial Intelligence large language model for chinese Medicine 面向中文医学的人工智能大语言模型
🔬 介绍
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模型
- 生成模型使用奖励或惩罚来更新其策略
- 以便生成更高质量、更符合人类偏好的文本
- RM(Reward Model)奖励模型建模
- RLHF(Reinforcement Learning from Human Feedback)基于人类反馈对语言模型进行强化学习,分两步:
- 第四阶段
- DPO(Direct Preference Optimization) 直接偏好优化方法
- DPO通过直接优化语言模型来实现对其行为的精确控制
- 无需使用复杂的强化学习,也可以有效学习到人类偏好
- DPO相较于RLHF更容易实现且易于训练,效果更好
- DPO(Direct Preference Optimization) 直接偏好优化方法
🌏 模型基座
模型名 | 模型大小 | 开源参数 |
---|---|---|
LLaMA-2 | 7B/13B/70B | ziqingyang/chinese-alpaca-2-7b |
Baichuan | 7B/13B | baichuan-inc/Baichuan-13B-Chat |
ChatGLM2 | 6B | THUDM/chatglm2-6b |
😜 推理和部署
推理所需的模型权重、源码、配置目前暂未公开,只保存于本地。下面以 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
:模板名称,如vicuna
、alpaca
等。若不提供此参数,则其默认值是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
- 24