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

news2024/11/24 17:42:44

文章目录

  • 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.coloradmin.cn/o/1626854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts地图叠加百度地图底板实现数据可视化

这里写自定义目录标题 echarts地图叠加百度地图实现数据可视化echarts地图叠加百度地图实现数据可视化 实现数据可视化时,个别情况下需要在地图上实现数据的可视化,echarts加载geojson数据可以实现以地图形式展示数据,例如分层设色或者鼠标hover展示指标值,但如果要将echa…

国产麒麟系统下打包electron+vue项目(AppImage、deb)

需要用到的一些依赖包、安装包以及更详细的打包方法word以及麒麟官网给出的文档都已放网盘,链接在文章最后!!!!!!!!!!!!&a…

【系统架构师】-选择题(四)

1、“41”视图 ①逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。 ②过程视图(Process View),捕捉设计的并发和同步特征。系统集成师 ③物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。系…

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

命令行启动pytest自动化程序时,程序卡住不动了,不继续往下执行了

一、问题描述 在执行pytestallure自动化测试工具的时候,命令行启动程序时,程序卡住不继续往下执行,如下图所示。 代码主函数如下: 二、解决方法 测试客户项目时遇到2次此类问题,2次问题原因不一样。 原因一&#xf…

【JVM】从i++到JVM栈帧

【JVM】从i到JVM栈帧 本篇博客将用两个代码例子,简单认识一下JVM与栈帧结构以及其作用 从i与i说起 先不急着看i和i,我们来看看JVM虚拟机(请看VCR.JPG) 我们初学JAVA的时候一定都听到过JAVA“跨平台”的特性,也就是…

XiaodiSec day017 Learn Note 小迪安全学习笔记

XiaodiSec day017 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day 17 主要内容: php 框架 thinkPHPyiilaravel 使用 fofa 搜索 thinkphp 市面上 thinkphp5 版本较多 url 结构 域名/.php(文件名)/index(目录)/index(函数名)模块名-控…

律师口才训练技巧课程介绍?

律师口才训练技巧课程介绍 一、课程背景与目标 律师口才作为法律职业的核心能力之一,对于律师在**辩论、法律咨询、谈判协商等场合的表现具有至关重要的作用。然而,许多律师在口才方面存在不足,难以充分发挥自己的专业能力。因此,…

stm32开发之netxduo组件之mqtt客户端的使用记录

前言 1使用mqtt协议的简单示例记录 代码 MQTT服务端(C# 编写,使用MQTTnet提供的示例代码) 主程序 namespace ConsoleApp1;public class Program {public static async Task Main(string[] args){await Run_Server_With_Logging();}}public static async Task Run_Server_Wi…

HarmonyOS ArkUI实战开发—状态管理

一、状态管理 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&…

电子负载仪的远端控制

前言 最近研究了电子负载仪的远端控制(区别于前面板控制),主要是用于程序控制,避免繁琐复杂的人工控制,举了南京嘉拓和艾维泰科的例子。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com …

CoReFace:深度人脸识别的样本引导对比正则化

CoReFace: Sample-Guided Contrastive Regularization for Deep Face Recognition 一、摘要 人脸识别对比正则化(CoReFace)(损失函数),将图像级正则化应用于特征表示学习。 具体来说,采用样本引导对比学习…

base64算法

1 介绍 将二进制数据编码为文本字符串的算法 理解:把一个能看懂的明文变成一个看不懂的密文数据统称为加密 2 使用 A 在浏览器控制台使用 加密 window.btoa(加密的数据) 解密 window.atob(MTIzNDQ) B 在VSconde中使用 加密 解密

【算法基础实验】图论-UnionFind连通性检测之quick-union

Union-Find连通性检测之quick-union 理论基础 在图论和计算机科学中,Union-Find 或并查集是一种用于处理一组元素分成的多个不相交集合(即连通分量)的情况,并能快速回答这组元素中任意两个元素是否在同一集合中的问题。Union-Fi…

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …

怎么把图片转换为二维码?3个步骤轻松制作图片二维码

图片的二维码是怎么做成的呢?现在很多场景下的二维码,用手机扫码可以展现出对应的图片信息。通过这种方式来传递图片对于用户体验与很好的效果,而且也方便制作者通过这种方式来快速完成图片信息的传递,与传统方式相比成本更低&…

【前端】4. CSS综合案例

1. 模拟新闻界面 <!-- 1.模拟实现新闻界面 --><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

茴香豆:搭建你的RAG智能助理-作业三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆&#xff1a;搭建你的 RAG 智能助理】课程。分别是&#xff1a; RAG 基础介绍茴香豆产品简介使用茴香豆搭建RAG知识库实战 课程视频&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档&#xff1a;ht…

【鸟叔的Linux私房菜】计算机概论

文章目录 电脑CPU架构单位 电脑架构与设备组件CPUCPU和GPU区别 内存显卡硬盘与存储设备主板 软件程序运行操作系统内核的功能 总结 电脑 五个部分&#xff1a;输入单元、输出单元、CPU的运算单元和逻辑控制单元、内存。 主机机箱的设备大多通过主板连接线在一起&#xff0c;主…

STM32、GD32驱动SHT30温湿度传感器源码分享

一、SHT30介绍 1、简介 SHT30是一种数字湿度和温度传感器&#xff0c;由Sensirion公司生产。它是基于物理蒸发原理的湿度传感器&#xff0c;具有高精度和长期稳定性。SHT30采用I2C数字接口&#xff0c;可以直接与微控制器或其他设备连接。该传感器具有低功耗和快速响应的特点…