基于ChatGLM-Med与HuaTuo的微调部署

文章目录

  • ChatGLM-Med
    • 推理过程
    • 微调过程
  • HuaTuo
    • 配置环境
    • 模型下载
    • 推理过程
    • 微调过程

如何基于领域知识对类ChatGPT模型进行微调,以提升类ChatGPT模型在领域的问答效果?
有下面两个模型,一起来看看微调后的效果如何。
ChatGLM-Med: 基于中文医学知识的ChatGLM模型微调
HuaTuo:基于中文医学知识的LLaMA微调模型

ChatGLM-Med

使用模型:ChatGLM-6B
所用微调数据集:医学知识图谱和GPT3.5 API构建的中文医学指令数据集。

环境准备:因为该项目使用的是ChatGLM-6B模型,因此环境也与ChatGLM-6B模型的环境一致,我这里之前微调过,所以直接使用chatglm-6b的conda环境。可以参考此文。

文件准备:将项目和模型文件下载下来

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

模型文件下载:
该项目已经提供了训练微调好的模型参数,直接通过百度云盘链接或Google云盘链接下载即可。

我这里将模型文件下载到 /data/sim_chatgpt/ChatGLM-Med/ 下。

修改 infer.py 文件中的文件加载路径,如下:

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

在这里插入图片描述
解决办法
修改 modeling_chatglm.py 文件的831行,975行,如下:
MASK, gMASK = 150000, 150001

修改后成功运行
在这里插入图片描述

微调过程

安装evaluate包

pip install evaluate
pip install wandb

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

vi scripts/sft_medchat.sh
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,将per_device_train_batch_size改为1试下,仍然cuda of memory,放弃。

官方是在一张A100-SXM-80GB显卡上进行了微调训练,根据经验,训练显存建议选择32G及以上。

HuaTuo

使用模型:LLaMA-7B
所用微调数据集:医学知识图谱和GPT3.5 API构建的中文医学指令数据集

配置环境

创建新的 conda 环境:huatuo,并安装所需的包

conda create -n huatuo python==3.9
pip install -r requirements.txt

模型下载

LoRA权重可以通过百度网盘或Huggingface下载:

1、对LLaMA进行指令微调的LoRA权重文件
2、对Alpaca进行指令微调的LoRA权重文件。

我这里将文件下载的文件都放在:/data/sim_chatgpt/huatuo 下。
在这里插入图片描述

#1.对LLaMA进行指令微调的LoRA权重文件
#基于医学知识库
lora-llama-med/- adapter_config.json   # LoRA权重配置文件- adapter_model.bin   # LoRA权重文件#基于医学文献
lora-llama-med-literature/- adapter_config.json   # LoRA权重配置文件- adapter_model.bin   # LoRA权重文件#2. 对Alpaca进行指令微调的LoRA权重文件
#基于医学知识库
lora-alpaca-med-alpaca/- adapter_config.json   # LoRA权重配置文件- adapter_model.bin   # LoRA权重文件#基于医学知识库和医学文献
lora-alpaca-med-alpaca-alldata/- adapter_config.json   # LoRA权重配置文件- adapter_model.bin   # LoRA权重文件
## 

推理过程

以基于医学知识库为例,修改 ./scripts/infer.sh 中的路径如下:
在这里插入图片描述
运行基于医学知识库的命令即可

bash ./scripts/infer.sh

在这里插入图片描述
其他几个类似:

#基于医学知识库
bash ./scripts/infer.sh#基于医学文献
#单轮
bash ./scripts/infer-literature-single.sh#多轮
bash ./scripts/infer-literature-multi.sh

微调过程

llama模型文件路径:/data/sim_chatgpt/llama-7b-hf/models–decapoda-research–llama-7b-hf/snapshots/5f98eefcc80e437ef68d457ad7bf167c2c6a1348
修改要运行文件中模型文件路径

vi scripts/finetune.sh
exp_tag="e1"
python finetune.py \--base_model '/data/sim_chatgpt/llama-7b-hf/models--decapoda-research--llama-7b-hf/snapshots/5f98eefcc80e437ef68d457ad7bf167c2c6a1348' \--data_path './data/llama_data.json' \--output_dir './lora-llama-med-'$exp_tag \--prompt_template_name 'med_template' \--micro_batch_size 128 \--batch_size 128 \--wandb_run_name $exp_tag

运行文件

sh scripts/finetune.sh

报错:显存不足
在这里插入图片描述
官方在一张A100-SXM-80GB显卡上进行了训练,训练总轮次10轮,耗时约2h17m。batch_size=128的情况下显存占用在40G左右。预计3090/4090显卡(24GB显存)以上显卡可以较好支持,根据显存大小来调整batch_size。

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

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

相关文章

IM——直播互动场景

上面的存在一个问题是,在普通的聊天场景中,为了进行精准投递避免资源浪费,一般会维护一个中央的在线状态,在逻辑层在确定好投递的接收人后,通过这个在线状态查询对应接收人所在的网关机,然后只需要把消息投…

百万人在线的直播间实时聊天消息分发技术

随着直播类应用的普及,尤其直播带货概念的风靡,大用户量的直播间场景已然常态化。 大用户量直播间中的实时互动是非常频繁的,具体体现在技术上就是各种用户聊天、弹幕、礼物、点赞、禁言、系统通知等实时消息。 如此大量的实时消息&#xff…

跨境电商属于外贸吗,Starday跨境电商靠谱吗?

跨境电商属于外贸吗?近年来,随着跨境电商平台以及卖家逐渐进入大众视野,众人对这个新鲜又稍显神秘的事物感到好奇。如何来定义跨境电商?跨境电商作为一种国际贸易新业态,打通了传统的国际贸易与互联网之间的联系&#…

自己写的一个彩票生成号码程序

一个朋友要我帮他写个7色球的生成号码程序,本以为挺简单的,但是的确耗费了我满多时间,而且第一个版本还把算法搞错了 :(,用了两个晚上大概4个小时的时间才完成一个Java Swing版和一个JavaScript版,看来我的基础还真是弱啊,需要多多锻炼 要求:随机生成7个数字,前6个是…

机器人也会“恐吓”人?与Claude的聊天记录,真让人细极思恐

ChatGPT不错啊,花一美刀买了账号,找人搭了梯子,但是最近账号被封了。 最近,朋友推荐了一款媲美ChatGPT,名为“Claude”的AI语音助手应用。作为 ChatGPT的忠实用户,我对新的AI产品总是抱有试一试的好奇心。注册完outlo…

用Kaptcha第三方包做验证码验证

Kaptcha是google提供的一个第三方的包,可以做验证码验证。他是运行原理把验证码存放到session域中,当用到的时候,从session域中取出来,然后与输入的验证码进行对比,就可以了。接下来,来看代码。 首先&…

Kaptcha-验证码使用及扩展

一、第三方验证码API 1、引入 kaptcha-datasource-spring-boot-starter。 引入kaptcha-spring-boot-starter: 基于 SpringBoot Google Kaptcha 验证码 快速启动器的验证码生成包 <dependency><groupId>com.baomidou</groupId><artifactId>kaptcha-s…

python-第三方接口获取验证码

一、图鉴 图片识别-打码平台-打码网站-识别验证码-图鉴网络科技有限公司 需要注册&#xff0c;每次识别成功需要0.002元/次&#xff0c;详细接口文档见上面路径 说明&#xff1a;识别度高&#xff0c;基本不会错&#xff0c;但是收费 通用图片识别接口 接口地址说明Conten…

仿照支付宝等——自动获取短信中的验证码

仿照淘宝支付宝等&#xff0c;自动获取服务器端发来的验证码&#xff0c;实际是监听特定的号码的内容&#xff0c;主要方法如下&#xff1a; 当系统收到短信时&#xff0c;会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent&#xff0c;该Intent存放…

利用支付宝短信服务接口 实现手机号 验证码登录Demo

一、首先需要去阿里云注册账号并登录 二、注册阿里云的短信服务 会有100条免费短信 获取自己的AccessKey&#xff08;accessKeyId&#xff0c;accessKeySecret&#xff09; 三、在阿里云短信服务 注册短信的 签名 和 模板 阿里云短信服务参考地址&#xff1a;https://www.aliy…

阿里短信验证码接口和支付宝沙箱支付接口

阿里短信验证码接口和支付宝沙箱支付接口 一、阿里短信验证码接口 1. 申请阿里AccessKey&#xff0c;填写AccessKey ID和AccessKeySecret 2. 申请短信的签名名称和模板 Java的API接口如下&#xff0c;其中模板可根据自己需要进行修改 /**发送短信*/public Integer SendMsg(Stri…

关键词生成原创文章及句子的软件!开发原理分析

朋友们大家好&#xff01;今天又要来给大家上一课吧&#xff0c;关于输入关键词自动生成文章的软件大家觉得网上有没有&#xff1f; 答案&#xff1a;肯定是没有&#xff01; 那么我们今天就给大家带来这么一款软件&#xff0c;我们只需要输入你的关键词就能自动生成原创文章…

写文案,认准这几个APP就够了

想要写出10w的文案&#xff0c;也不是那么容易的&#xff0c;毕竟如果要是能够那么轻易的就写出来的话&#xff0c;也不会有那么多人为了这个文案而感到头秃了。但是你要是说它容易的话&#xff0c;也是有窍门的如果我们按照窍门来进行编写的话&#xff0c;就会相对来说容易一些…

这款“狗屁不通”文章生成器火了,效果确实比GPT 2差太远

整理 | 夕颜 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 【导读】最近&#xff0c;一个名字相当接地气的“狗屁不通”文章生成器&#xff08;BullshitGenerator&#xff09;火了&#xff0c;截至目前 GitHub 上 Star 数已超过 3200&#xff0c;还上了微博热搜…

【IEEE】IEEE论文接收后proof(校样)全流程实例讲解

文章目录 1. proof邮件内容分块解读1.1 获取你的校对文件的步骤1.2 上传修正稿关于什么时候缴费 2、校对稿首页的一般说明 在论文被接受并提交Final Version.pdf文件之后的第4天&#xff0c;收到了proof(校样)的要求。(注意&#xff1a;由于IEEE旗下期刊众多&#xff0c;编辑和…

计算机硕士论文盲审,研究生毕业论文盲审那些事,你造吗?

原标题&#xff1a;研究生毕业论文盲审那些事&#xff0c;你造吗&#xff1f; 首先声明&#xff0c;盲审研究生论文——无论博士或是硕士——纯粹属于扯淡之列&#xff0c;虽然鄙人无权更正&#xff0c;也不敢不从&#xff0c;但根本没有看得起发明该项技术的人&#xff01; 有…

输入正确的账号密码和验证码后 验证码一直报错误的解决办法

这两天写了一个登录的功能页面&#xff0c;用的是ivew&#xff0c;大致样子长这样 输入正确的账号密码以及验证码后死活提示验证码错误&#xff0c;后来查了下才发现需要对发起请求的时候配置 withCredentials: true 我用的是axios&#xff0c;配以了一下就可以了&#xff0c;…

Windows10系统中Foxmail修改密码之后登录一直提示密码错误

情况说明&#xff1a;这是Windows10中自带的针对Foxmail邮箱的特殊毛病 1&#xff1a;右键Foxmail图标&#xff0c;选择属性 2&#xff1a;点击“兼容性” 点击下面“更改所有用户的设置” 3&#xff1a;勾选“以管理员身份运行此程序”

java基于Android快递物流服务系统

&#xff08;1&#xff09;后台管理平台 设计实现物流管理平台&#xff0c;完成对司机、所载货物、出发点、目的地、运输轨迹等的管理。主要研究的内容为前后端框架的选择&#xff0c;对系统信息的展示与管理。 数据展示&#xff1a;管理人员通过不同的筛选条件&#xff0c;查…

一篇文章告诉你,为什么移动数据捕获对运输物流公司很重要?

随着世界走向数字化和智能手机的使用增加&#xff0c;移动数据采集正在成为大多数行业的新常态。航运物流也不例外。从捕获详细的订单和交付信息到跟踪货运和仓库位置&#xff0c;条形码技术用于运输物流世界的每一步。通过智能数据采集&#xff0c;运输和物流公司可以获得更好…