大模型_ ChatGLM-Med推理及微调部署

文章目录

  • ChatGLM-Med是什么
  • 数据集构建
  • 推理部署
    • python环境
    • 切换到安装好的conda环境
    • 下载github数据
    • 切换目录
    • 在infer.py修改模型路径
    • 启动推理
      • 解决infer.py报错
      • 修改后再次启动推理完成
  • 微调部署
    • 安装evaluate包
    • 修改模型路径
    • 启动微调


ChatGLM-Med是什么

经过中文医学指令精调/指令微调(Instruct-tuning) 的ChatGLM-6B模型。我们通过医学知识图谱和GPT3.5 API构建了中文医学指令数据集,并在此基础上对ChatGLM-6B进行了指令微调,提高了ChatGLM在医疗领域的问答效果。

数据集构建

采用了公开和自建的中文医学知识库,主要参考了cMeKG。医学知识库围绕疾病、药物、检查指标等构建,字段包括并发症,高危因素,组织学检查,临床症状,药物治疗,辅助治疗等。知识库示例如下:

{"中心词": "偏头痛", "相关疾病": ["妊娠合并偏头痛", "恶寒发热"], "相关症状": ["皮肤变硬", "头部及眼后部疼痛并能听到连续不断的隆隆声", "晨起头痛加重"], "所属科室": ["中西医结合科", "内科"], "发病部位": ["头部"]}

我们利用GPT3.5接口围绕医学知识库构建问答数据,设置了多种Prompt形式来充分利用知识。

指令微调的训练集数据示例如下:

"问题:一位年轻男性长期使用可卡因,突然出现胸痛、呕吐、出汗等症状,经检查发现心电图反映心肌急性损伤,请问可能患的是什么疾病?治疗方式是什么?"
回答: 可能患的是心肌梗塞,需要进行维拉帕米、依普利酮、硝酸甘油、ß阻滞剂、吗啡等药物治疗,并进行溶栓治疗、低分子量肝素、钙通道阻滞剂等辅助治疗。此外需要及时停用可卡因等药物,以防止病情加重。"

推理部署

python环境

python环境建议3.9+

$ python --version
Python 3.10.12

切换到安装好的conda环境

source activate
conda activate chatglm-6b

下载github数据

git clone https://github.com/SCIR-HI/Med-ChatGLM.git

在这里插入图片描述

切换目录

cd Med-ChatGLM

在infer.py修改模型路径

此处改成"/data/sim_chatgpt/ChatGLM-Med/"

import torch
from transformers import AutoTokenizer, AutoModel
from modeling_chatglm import ChatGLMForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("/data/sim_chatgpt/ChatGLM-Med/", trust_remote_code=True)
model = ChatGLMForConditionalGeneration.from_pretrained("/data/sim_chatgpt/ChatGLM-Med").half().cuda()
while True:a = input("请输入您的问题:(输入q以退出)")if a.strip() == 'q':exit()response, history = model.chat(tokenizer, "问题:" + a.strip() + '\n答案:', max_length=256, history=[])print("回答:", response)

启动推理

python infer.py

在这里插入图片描述

解决infer.py报错

在这里插入图片描述
在 modeling_chatglm.py 文件下,修改的831行,975行
将130000、130001分别改成150000、150001,再次运行即可
在这里插入图片描述

修改后再次启动推理完成

在这里插入图片描述

微调部署

安装evaluate包

pip install evaluate
pip install wandb

修改模型路径

在scripts/sft_medchat.sh下,修改要运行文件中的model_name_or_path,修改为 /data/sim_chatgpt/chatglm-6b,如下:

wandb online
exp_tag="chatglm_tuning"python run_clm.py \--model_name_or_path /data/sim_chatgpt/chatglm-6b \--per_device_train_batch_size 8 \--per_device_eval_batch_size 8 \--train_file ./data/train.txt \--max_seq_length 256 \--output_dir ./output/ \--do_train \--logging_steps 30 \--log_file ./log/$exp_tag \--gradient_accumulation_steps 2 \--learning_rate 5e-5 \--group_by_length False \--num_train_epochs 3 \--lr_scheduler_type linear \--warmup_ratio 0.1 \--logging_dir ./log \--logging_steps 10 \--save_strategy epoch \--seed 2023 \--remove_unused_columns False \--torch_dtype auto \--adam_epsilon 1e-3 \--report_to wandb \--run_name $exp_tag

启动微调

sh scripts/sft_medchat.sh

将batch_size及epochs等参数值调小,per_device_train_batch_size、per_device_eval_batch_size、num_train_epochs等,仍旧执行不起来,内存超出,故需要更大资源去做微调(目前GPU是P100)


学习的参考资料:
Repo for Chinese Medical ChatGLM 基于中文医学知识的ChatGLM指令微调
基于ChatGLM-Med与HuaTuo的微调部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651249.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法一则】【动态规划】求二维数组可组成的最大正方形

题目 在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0","0"],["1","0&…

[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需要先安装两个支 柱(图中的黑色竖条),再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度 不同,太阳能板的安装面…

Games101-动画与模拟(基本概念、质点弹簧系统、运动学)

动画:把物体变成活的,让它动起来 更关注的是美学。早期的动画是画出来的,并不关心对不对,符不符合物理,只要看起来对 图形学里对动画理解为对于建模或几何的拓展。动画无非就是在不同的时间或不同的帧有不同的几何形状…

如何组织一场品牌都爱的快闪活动?

现在懂营销的品牌都爱开“快闪店”,据不完全统计,仅上半年就有超过100个品牌开设了快闪店。 不仅是服装、餐饮、美妆等适合玩快闪的品牌,还有像泡泡玛特、元气森林、钟薛高等新消费品牌也是重要的参与者。 快闪店其实是一种舶来品&#xff…

PS学习笔记-抠图相关

选好颜色后,altdelete更换画布颜色、填充前景色 按住shift键自由缩放图片,调好后双击鼠标即可完成,或者点击工具栏的 对勾 在某图层下 CTRLT 变换图片,调好后双击鼠标即可完成,或者点击工具栏的 对勾 CTRLJ复制图…

Shell脚本学习记录

0.理解Linux文件权限 0.1 Linux安全性 用户的权限是通过创建用户时分配的用户ID(UID)来追踪的,UID是个数值,每个用户都有一个唯一的UID 0.1.1 /etc/passwd文件 Linux系统使用一个专门的文件/etc/passwd来匹配登录名与对应的UID值,该文件包…

Jira搭建过程

看到很多小伙伴对jira有兴趣,我们今天就来分享一下jira的搭建吧 首先要明白jira是什么? 看来搭建jira也是我们测试人员需要具备的技能之一了.下面是详细的大家步骤: 1.系统环境准备 Centos 7.5 Mysql 5.6 Java1.8 2.软件安装包 atlassian-jira-software-7.13.0-x64.bin …

大模型应用开发之准备篇(OpenAI的plugins、GPTs与RAG、Agent)

今天这个章节是为了接下来我们使用大模型做应用开发做准备。 大家陆续在很多文章中可能已经看到过了很多概念,比如plugins、GPTs、Agent,这里面自ChatGPT3.5爆火以来,有众多的AI创业公司从不同的切入点在做,OpenAI公司也在不断推…

抖音小程序-小玩法(学习笔记)

现在非常流行小程序,当然自媒体直播也是现在最流行的,当我们看直播时可能看到各种的互动玩法,接下来我以一个开发者的角度,来玩玩怎么写一些小玩法 很多时候在没有玩过的东西来说最好的办法就是看用户手册,程序也一样,…

数据结构-二叉树-堆(二)

一、建堆的时间复杂度问题 1、除了向上调整建堆,我们还可以向下调整建堆。不能在根上直接开始向下调整。这里的条件就是左右子树必须都是大堆或者小堆。我们可以倒着往前走,可以从最后一个叶子开始调整。但是从叶子开始调整没有意义。所以我们可以从倒数…

ClickHouse 高可用之副本

文章目录 ClickHouse 副本支持副本的引擎配置高可用副本副本应用1.副本表概述2.创建副本表3.写入模拟数据4.副本验证 扩展 —— 在 Zookeeper 中查看副本表信息 ClickHouse 副本 ClickHouse 通过副本机制,可以将数据拷贝存储在不同的节点上。这样,如果一…

C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端等介绍

文章目录 前言一、数据类型的介绍类型的意义 1. 类型的基本归类(1). 整型家族(2). 浮点数家族(3). 构造类型(4). 指针类型(5). 空类型 二、整型在内存中的存储…