基于AutoDL部署和微调Chatglm3-6b实战

基于AutoDL部署和微调Chatglm3-6b实战

一、远程服务平台

选用AutoDL平台进行部署,租用GPU型号建议选用一张4090,显存一定要选用24G的,CUDA版本尽量选最新的。

完成服务器的租用和环境搭建后,选择快捷工具中的“JupyterLab”进入服务器查看。

autodl-tmp文件夹为数据盘,后续将模型及模型权重下载到这个文件夹中。

二、基本模型部署

2.1 git-lfs初始化

初始化git-lsf命令

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

在这里插入图片描述

执行完上述命令,得到”Git LFS initialized.“提示后,即表明初始化已完成。

2.2 模型下载

模型ChatGLM3的地址为:https://github.com/THUDM/ChatGLM3

ChatGLM3模型权重文件的地址:https://huggingface.co/THUDM/chatglm3-6b

接下来就可以进行ChatGLM3-6b模型的克隆和模型权重文件的下载,由于文件较大下载过程比较慢或直接报错,因此,可以先设置学术资源加速再进行下载:

#学术资源加速
source /etc/network_turbo

在这里插入图片描述

然后进行模型克隆

#克隆模型
git clone https://github.com/THUDM/ChatGLM3

下载完成后,可以看到在”autodl-tmp“文件中新增了一个”ChatGLM3“的文件夹

#切换到模型文件夹进行后续的依赖安装
cd ChatGLM3
#安装环境依赖
pip install -r requirements.txt

安装好模型运行的环境依赖后,可以在autodl-tmp文件夹下新建一个models文件夹,下载ChatGLM3-6b模型权重文件

#克隆chatglm3-6b的参数、权重等文件
git clone https://huggingface.co/THUDM/chatglm3-6b

在这里插入图片描述

安装完成后,对比一下”autodl-tmp/models/chatglm3-6b“文件夹中已下载的文件和huggingface中”Files and Versions“中的提供的文件,查看是否全部下载完毕,有些情况下,七个较大的模型权重文件无法统一下载下来,需要再次逐个安装

在这里插入图片描述

权重文件的安装方式:

#学术资源加速
source /etc/network_turbo
#权重文件下载
wget https://huggingface.co/THUDM/chatglm3-6b/resolve/main/pytorch_model-00001-of-00007.bin

2.3 部署验证

到此,已经完成了ChatGLM3-6b模型在远程服务器的安装部署,接下来检验是否部署成功

进入到“basic_demo”文件夹中,选中“cli_demo.py”文件,将其中的模型读取代码改为自己的模型下载路径

# MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')  #源码中的路径
MODEL_PATH = os.environ.get('MODEL_PATH', '/root/autodl-tmp/models/chatglm3-6b')  #替换为自己的下载路径,相对路径'../../models/chatglm3-6b'也可以

更改后保存代码,然后运行

(base) root@autodl-container-789011a29e-5a4fb1f0:~# cd autodl-tmp/ChatGLM3/basic_demo  #切换到要运行的文件所在的文件夹
(base) root@autodl-container-789011a29e-5a4fb1f0:~/autodl-tmp/ChatGLM3/basic_demo# python cli_demo.py  #运行代码

出现如下页面即表示已经部署成功!

在这里插入图片描述

三、复现Web Demo

在“autodl-tmp/ChatGLM3/basic_demo”文件夹中,ChatGLM3提供了三种基本的对话交互页面:

  • cli_demo.py -> 命令行交互
  • web_demo_gradio.py -> 基于gradio的交互页面
  • web_demo_streamlit -> 基于streamlit的交互页面

在执行上述脚本之前,都需对脚本的模型加载路径、网页端口等内容进行修改

3.1 cli_demo.py

​ 第2.3节中已实现,所以在这里不再复现。

3.2 web_demo_gradio.py

​ 对于web_demo_gradio.py,除修改模型加载路径外,还需要修改端口设置,因为AutoDL平台需以6006端口启动访问服务

在这里插入图片描述
在这里插入图片描述

修改完成后,即可在终端执行该脚本,具体如下:

在这里插入图片描述

需要注意的是,不能直接点击给出的链接进行跳转,而是需要在AutoDL的实例页面,点击所用实例的**“自定义服务”,然后在弹出的窗口中再点击“访问”**,就会跳转到gradio的交互页面

在这里插入图片描述

3.3 web_demo_streamlit.py

更改模型加载路径

在这里插入图片描述

web_demo_streamlit.py中没有指定端口号的代码,因此端口号的修改在终端的命令行操作时进行修改

在这里插入图片描述

执行完成后,页面的打开方式与上述的gradio的打开方式一致

在这里插入图片描述

3.4 composite_demo

如果需要更全面的网络演示,建议使用“composite_demo”。

首先切换到/root/autodl-tmp/ChatGLM3/composite_demo文件夹,然后通过conda新建一个环境,并在该环境下安装所需依赖,注意python版本需要是3.10及以上版本。

# 创建名为“chatglm3-demo”且版本为3.10的python环境
conda create -n chatglm3-demo python=3.10
# 更新bashrc中的环境变量
conda init bash && source /root/.bashrc
# 激活进入该环境
conda activate chatglm3-demo
# 在该环境下安装所需依赖
pip install -r requirements.txt
# 使用 Code Interpreter 还需要安装 Jupyter 内核
ipython kernel install --name chatglm3-demo --user

完成上述的安装操作后,即可进行程序的运行。

本项目也是基于streamlit创建的用户界面,以便与ChatGLM3进行交互,该项目中main.py作为主程序,调用demo_chatdemo_cidemo_tool三个子程序。各子程序会调用其他的脚本实现对应的功能,demo_chat.py子程序会调用client.py进行模型加载。

因此需要更改client.py中的模型加载路径

在这里插入图片描述

第一次运行时可能还会报一些缺少相关包的错误,可能因为“requirements.txt”没有包括所有的包,这种情况直接按提示安装对应的包就可以。

# 执行命令
streamlit run main.py --server.address 127.0.0.1 --server.port 6006

在这里插入图片描述

在这里插入图片描述

ChatGLM3 Demo 拥有三种模式:

  • Chat: 对话模式,在此模式下可以与模型进行对话。
  • Tool: 工具模式,模型除了对话外,还可以通过工具进行其他操作。
  • Code Interpreter: 代码解释器模式,模型可以在一个 Jupyter 环境中执行代码并获取结果,以完成复杂任务。

四、模型微调

4.1 创建环境并安装依赖

官方给出了对话模型和基座模型的微调示例,模型微调的相关脚本在 /root/autodl-tmp/ChatGLM3/finetune_chatmodel_demo文件夹下,微调示例参考官方文档。

#创建名为“ChatGLM3-Tuning”且版本为3.10的python环境
conda create -n ChatGLM3-tuning python=3.10
#激活进入该环境
conda activate ChatGLM3-tuning
#在该环境下安装所需依赖
pip install -r requirements.txt
# 使用 Code Interpreter 还需要安装 Jupyter 内核
ipython kernel install --name  ChatGLM3-tuning --user

4.2 数据集

官方示例中使用AdvertiseGen 数据集来进行微调,因此,在此示例中也使用AdvertiseGen 数据集。

首先在autodl-tmp/目录下建立一个data文件夹

在这里插入图片描述

然后从官方提供的 Google Drive 或者 Tsinghua Cloud 中下载 AdvertiseGen 数据集,将解压后的 AdvertiseGen 目录放到 data 目录下并自行转换为如下格式数据集。

请注意,现在的微调代码中加入了验证集,因此,对于一组完整的微调数据集,必须包含训练数据集和验证数据集,测试数据集可以不填写。或者直接用验证数据集代替。

{"conversations": [{"role": "user", "content": "类型#裙*裙长#半身裙"}, {"role": "assistant", "content": "这款百搭时尚的仙女半身裙,整体设计非常的飘逸随性,穿上之后每个女孩子都能瞬间变成小仙女啦。料子非常的轻盈,透气性也很好,穿到夏天也很舒适。"}]}

还需要在autodl-tmp/data文件夹下新建一个AdvertiseGen_fix文件夹用来存放转换格式后的数据集。

进入lora_finetune.ipynb文件,更改数据集所在的位置

在这里插入图片描述

运行代码,成功后在autodl-tmp/data/AdvertiseGen_fix文件夹下就会出现转换格式成功的数据集。

4.3 微调

lora_finetune.ipynb文件中,更改数据集和模型所在的位置

在这里插入图片描述

运行代码

在这里插入图片描述

微调成功后,可以看到在finetune_demo/output文件夹下多了很多个checkpoint-*的文件夹,这些文件夹代表了训练的轮数。

4.4 推理验证

选择最后一轮的微调权重,并使用inference进行导入

在这里插入图片描述

在这里插入图片描述

到此就完成了使用单张 GPU Lora 来微调 ChatGLM3-6B 模型,使其能生产出更好的广告。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值