LightBig-Baichuan-MedLLM

我要开发同款
匿名用户2024年07月31日
41阅读
所属分类ai、baichuan、pytorch、hello123hedong
开源地址https://modelscope.cn/models/hello123hedong/LightBig-Baichuan-MedLLM
授权协议Apache License 2.0

作品详情

LightBig-Baichuan-MedLLM

概述

LightBig-Baichuan-MedLLM 有效地对齐了医疗场景下的人类偏好,弥合了通用语言模型输出与真实世界医疗问答对之间的差距。 先经过开源医疗数据集进行SFT后, 再使用比赛数据集进行qlora微调.

项目源码

code

数据集

为了训练 LightBig-Baichuan-MedLLM ,采用复旦大学的 命名为 DISC-Med-SFT的数据集,其中包含了超过47万个衍生于现有的医疗数据集重新构建得到的样本。 DISC-Med-SFT 数据集

医疗问答对数据集 MLEC-QA

下载

该数据集总共发布了近47万条训练数据,其中包括重构AI医患对话和知识图谱问答对。 您可以访问这个链接下载数据集。

医疗问答对数据集 MLEC-QA

部署

当前版本的 LightBig-Baichuan-MedLLM 是基于Baichuan-13B训练得到的。 您可以直接从 modescope 上下载模型权重,或者根据下列代码样例中的方式自动获取。

首先,您需要安装项目的依赖环境。

pip install -r requirements.txt

利用modescope 的transformers模块来进行推理

>>> import torch
>>> from modelscope import AutoModelForCausalLM, AutoTokenizer
>>> from modelscope import GenerationConfig
>>> tokenizer = AutoTokenizer.from_pretrained("hello123hedong/LightBig-Baichuan-MedLLM", use_fast=False, trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("hello123hedong/LightBig-Baichuan-MedLLM", device_map="auto", torch_dtype=torch.float16, trust_remote_code=True)
>>> model.generation_config = GenerationConfig.from_pretrained("hello123hedong/LightBig-Baichuan-MedLLM")
>>> messages = []
>>> messages.append({"role": "user", "content": "我感觉自己颈椎非常不舒服,每天睡醒都会头痛"})
>>> response = model.chat(tokenizer, messages)
>>> print(response)

对模型进行微调

使用比赛的数据集, 处理成我们规定的数据形式对模型进行微调。 data_deal2.py 生成模型训练数据集 格式数据 目录train/data中已经生成了.可以直接使用 我们的训练代码在 Firefly 的基础上进行了修改, 使用了不同的数据结构和对话格式。这里我们只提供了qlora微调:

deepspeed --num_gpus={num_gpus} ./train/train_qlora.py --train_args_file ./train/train_args/baichuan-13b-sft-qlora.json

请您在开始进行模型训练前检查 baichuan-13b-sft-qlora.json 中的设置。

模型评测

1) 下载模型权重 modescope 到 "./output/baichuan-13b/merge" 2) 运行infer.py 文件 , 生成结果 3) 运行 gen_result.py 生成评测数据

调优经验

使用比赛提供的数据集进一步微调 1) "numtrainepochs": 6, "perdevicetrainbatchsize": 10, "gradientaccumulationsteps": 2, "learning_rate": 1e-4,

{
    "epoch": 9.92,
    "train_loss": 2.5992207204141926,
    "train_runtime": 6723.0793,
    "train_samples_per_second": 1.487,
    "train_steps_per_second": 0.046
}

指令调优可以, 效果未知

2) "numtrainepochs": 16, "perdevicetrainbatchsize": 10, "gradientaccumulationsteps": 2, "learning_rate": 1e-4,

***** train metrics *****
  epoch                    =       16.0
  train_loss               =     0.9776
  train_runtime            = 3:10:51.09
  train_samples_per_second =      1.397
  train_steps_per_second   =       0.07

指令调优可以, 效果未知

error

  1. 解决ValueError: Error initializing torch.distributed using env:// rendezvous:: environment variable 报错 link
  2. ERROR: Could not build wheels for mpi4py, which is required to install pyproject.toml-based projects link
  3. pip install bitsandbytes==0.39.0 否则报错 使用的cuda是11.6

致谢

本项目基于如下开源项目展开,在此对相关项目和开发人员表示诚挚的感谢:

同样感谢其他限于篇幅未能列举的为本项目提供了重要帮助的工作。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论