ChatGLM3-6B最新版 云端部署及微调教程【喂饭版】
1 GPU云平台选择
1.1 选择AutoDL平台链接
注册并实名制
高校学生证可以打骨折(应该是95or98折)
1.2 创建实例
通过算力市场-选择一个显存在24G或以上的(24G部署足够用)
需要扩容【完整的glm3-6b模型≈47G,AutoPanel 实例监控显示,可能含有缓存;微调存储的数据巨大,此前测试 每一次保存的checkpoint的大小为10G】
镜像选择【PyTorch / 2.1.0 / 3.10(ubuntu22.04) / 12.1,官方微调要求Python3.10,部署运行Python3.8】
点击创建实例
1.3 AutoPanel实例监控
点击AutoPanel,可以实时查看实例的CPU、GPU、系统(数据)盘用量等。
下图为安装完所有依赖及clone仓库后的盘用量,因此推荐1.2的数据盘扩容
1.4 进入Jupyterlab
左侧为AutoDL可视化的盘符及路径
新建 终端1。「这里为指令内容」
「进入数据盘」
root@autodl-container-42a44688ad-94e2291b:~# cd autodl-tmp
「开启AutoDL的学术加速」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# source /etc/network_turbo
设置成功
注意:仅限于学术用途,不承诺稳定性保证
「更新包管理器,有提示输入 y 确认」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# sudo apt-get update
1.5 拉取仓库
安装lfs并拉取模型仓库,拉取地址已在下方标注
「拉取lfs 安装包」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# sudo apt-get install git-lfs
........
Setting up git-lfs (3.0.2-1ubuntu0.2) ...
「安装lfs并初始化」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# git lfs install
Git LFS initialized.
「拉取魔塔社区的完整glm3-6b模型代码」
「 git clone https://www.modelscope.cn/zhipuai/chatglm3-6b.git 」
「时间可能为大几十分钟,不要管,让终端1 一直运行,直到完整出现下部所有代码」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# git clone https://www.modelscope.cn/zhipuai/chatglm3-6b.git
Cloning into 'chatglm3-6b'...
remote: Enumerating objects: 140, done.
remote: Total 140 (delta 0), reused 0 (delta 0), pack-reused 140
Receiving objects: 100% (140/140), 47.10 KiB | 1.21 MiB/s, done.
Resolving deltas: 100% (64/64), done.
Filtering content: 100% (15/15), 23.26 GiB | 21.25 MiB/s, done.
1.6 拉取Chatglm3-6B代码仓库
新建一个终端(终端2)并cd 进入autodl-tmp文件目录,开启学术加速并克隆官方代码
「开启学术加速 source /etc/network_turbo」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# source /etc/network_turbo
设置成功
注意:仅限于学术用途,不承诺稳定性保证
「从 GitHub上clone 官方仓库 」
「 git clone https://github.com/THUDM/ChatGLM3.git 」
root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp# git clone https://github.com/THUDM/ChatGLM3.git
Cloning into 'ChatGLM3'...
remote: Enumerating objects: 1549, done.
remote: Counting objects: 100% (244/244), done.
remote: Compressing objects: 100% (149/149), done.
remote: Total 1549 (delta 124), reused 182 (delta 93), pack-reused 1305 (from 1)
Receiving objects: 100% (1549/1549), 17.80 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (864/864), done.
1.7 安装项目依赖a(部署)
新建一个终端(终端3),创建虚拟环境 ,cd autodl-tmp/ChatGLM3进入文件夹
「开启学术加速,尽量每一次开终端先运行这个加速」
root@autodl-container-42a44688ad-94e2291b:~# source /etc/network_turbo
设置成功
注意:仅限于学术用途,不承诺稳定性保证
「使用conda 创建一个名为 UMTCDS 的虚拟环境」
root@autodl-container-42a44688ad-94e2291b:~# conda create -n UMTCDS python=3.10
「激活虚拟环境 source activate 你的环境名称 」
root@autodl-container-42a44688ad-94e2291b:~# source activate UMTCDS
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~# cd autodl-tmp/ChatGLM3
「安装项目依赖 pip install -r requirements.txt」
「一定开启学术加速,不然2mb/s 下载到你发疯。大概10分钟之内下载完毕」
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3# pip install -r requirements.txt
项目部署的依赖a已经全部安装完成
1.8 安装项目依赖b(微调)!
cd进入微调的目录,在安装依赖之前,先安装几个包,目的是解决微调依赖安装报错的问题
「进入ChatgGLM3 微调demo 目录」
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3# cd finetune_demo
「下初安装微调依赖的代码先别急着做」
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3/finetune_demo# pip install -r requirements.txt
报错问题1:
安装 mpi4py 库时出现编译报错
x86_64-conda_cos6-linux-gnu-cc: command not found
failure.
removing: _configtest.c _configtest.o
error: Cannot compile MPI programs. Check your configuration!!!
[end of output]
解决方案:
先安装编译器再安装mpi4py包
conda install gcc_linux-64
pip install mpi4py
报错问题2:
依旧是mpi4py包,这个应该是官方在写依赖txt文件时候没有处理好关系,导致安装依赖复杂化
error: subprocess-exited-with-error
× Building wheel for mpi4py (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [82 lines of output]
解决方案:
安装一个mpi4py的前序包(我编的名字)
sudo apt install libmpich-dev # for MPICH
所以先将下出代码运行完毕再安装 微调的依赖包
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3/finetune_demo# sudo apt install libmpich-dev # for MPICH
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3/finetune_demo# conda install gcc_linux-64
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3/finetune_demo# pip install -r requirements.txt
出现这个即为微调的依赖包全部安装完毕
2 Chatglm3-6B部署
2.1 修改原有代码中的模型地址
所有demo运行前,都需要到xxxxxx_demo.py中修改模型位置
如果你按照上文一步一步来,则这里按照下处代码修改
cli_demo.py
line5 MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
修改为
line5 MODEL_PATH = os.environ.get('MODEL_PATH', '/root/autodl-tmp/chatglm3-6b')
2.2 运行chatglm3-6b对话模型
按照2.1 修改好模型地址并保存后
cd 进入 /autodl-tmp/ChatGLM3/basic_demo
后输入 python cli_demo.py 执行
(UMTCDS) root@autodl-container-42a44688ad-94e2291b:~/autodl-tmp/ChatGLM3/basic_demo# python cli_demo.py
Setting eos_token is not supported, use the default one.
Setting pad_token is not supported, use the default one.
Setting unk_token is not supported, use the default one.
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:01<00:00, 3.64it/s]
欢迎使用 ChatGLM3-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序
用户:你好,请介绍一下你自己
ChatGLM:你好,我是 ChatGLM3-6B,是清华大学KEG实验室和智谱AI公司共同训练的语言模型。我的目标是通过回答用户提出的问题来帮助他们解决问题。由于我是一个计算机程序,所以我没有自我意识,也不能像人类一样感知世界。我只能通过分析我所学到的信息来回答问题。
到此,chatglm3-6b的部署运行环节已经结束,你也可以尝试其他demo文件夹的glm3的运行方式。
3 ChatGLM3-6B微调(看看别做)
原因如下:在glm系列中,微调后的模型文件夹内应该包含config.json等数十个配置文件,但GitHub上最新的chatglm3-6b version可能如图内官方人员说的,没有适配,所以使用最新版微调的计划 error。
3.1 升级实例配置
关闭实例-点击控制台-更多-升降配置
这里在GPU数量选择2 即可。
「md 微调时候 一个GPU直接爆了emmm」
题外话:这是我一边写这篇文章,一边微调的,两张卡利用率直接拉满了
3.2 准备数据集
升级配置点击确定-开机-进入JupyterLab
3.3 按照官方的要求进行微调
OMP_NUM_THREADS=1 torchrun --standalone --nnodes=1 --nproc_per_node=2 finetune_hf.py data/20240819/ /root/autodl-tmp/chatglm3-6b configs/ptuning_v2.yaml
3.4 运行完成后可以转去研究GLM4-9B了,因为GLM3最新版已经不维护了,如果群内有动静,我会继续将微调部分更新完成。
"""
Created on 2024-08-18
Last modified on 2024-08-20
Author: Lime Xu
Email: bradley.xsq@gmail.com
"""
3.5 温馨提示:AutoDL平台社区里的chatglm3-6b的很多镜像,功能比较完善,但是在查阅代码时候,我个人!!!个人!!觉得里面的微调代码是chatglm-6b的,也就是说,不是最新的chatglm3-6b的代码,所以大家使用的时候,注意一下。别出现项目要求的是完整的glm3,结果里面代码出现了glm1的,就可尴尬了,会被导师🐴
好了,祝愿大家阅读顺利,部署成功,任何问题可以在评论区or gmail联系我,空了我会即时回复!谢谢!