当前位置:   article > 正文

ChatGLM2-6B本地部署或云端部署配置过程_chatglm2 6b最低部署要求

chatglm2 6b最低部署要求

1、电脑配置

首先,本地部署先看一下自己的电脑配置够不够:

 如果要是用CPU运行的话,要保证有32G内存才可以。

2、项目和模型下载

从github上下载源代码

 git clone https://github.com/THUDM/ChatGLM2-6B

 从Hugging Face Hub上下载模型

 git clone https://huggingface.co/THUDM/chatglm2-6b

 模型下载后放入源代码项目文件夹内。如图:

 ChatGLM2-6B-Demo的百度网盘连接:ChatGLM2-6B-demo_免费高速下载|百度网盘-分享无限制 (baidu.com)

 3、conda环境配置

以下是我在自己电脑上的配置过程,因为网络不算稳定,直接使用requirement.txt下载不了。

  1. conda create -n chat python=3.8
  2. 以下是根据pytorch官网copy的下载2.0版本的指令:
  3. pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
  4. 以下是自行安装requirement里面的第三方库,这样不容易出意外:
  5. pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple
  6. pip install transformers==4.30.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
  7. pip install cpm_kernels -i https://pypi.tuna.tsinghua.edu.cn/simple
  8. pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple
  9. pip install mdtex2html -i https://pypi.tuna.tsinghua.edu.cn/simple
  10. pip install sentencepiece -i https://pypi.tuna.tsinghua.edu.cn/simple
  11. pip install accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
  12. pip install sse-starlette -i https://pypi.tuna.tsinghua.edu.cn/simple
  13. pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
  14. 最后
  15. 更新charset_normalizer依赖库,不然必报错。
  16. pip install --upgrade charset_normalizer
  17. 安装CLI所用到的charset_normalizer依赖库,不然必报错。
  18. pip install pyreadline
  19. 如果你需要使用Demo2方式运行,一定要安装Streamlit依赖库才可以正常运行,该库可以用来实现打字机效果,建议直接无脑安装。
  20. pip install streamlit streamlit-chat

 如果网络稳定,建议用以下官方的方式进行安装:

  1. 创建虚拟环境:
  2. conda create -n chat python=3.8
  3. 安装部署所需的环境:
  4. pip install -r requirements.txt
  5. 安装微调所需的环境:
  6. pip install rouge_chinese nltk jieba datasets
  7. 额外需要的依赖:
  8. pip install tensorboard

4、运行

一共有3种启动方式,分别是目录中的cli_demo.pyweb_demo.pyweb_demo2.py三个文件,三种启动方式对应着3种UI界面,所实现的功能都是一样的,只不过操作交互上存在些许不同而已。

  1. 激活环境
  2. conda activate chat
  3. cd到项目文件夹下
  4. cd ChatGLM-6B-demo
  5. 启动对应的文件(这里给出三种):
  6. python web_demo.py
  7. python web_demo1.py
  8. python cli_demo.py

我采用的是cli_demo.py的方式运行的,如图:

 5、模型微调(以下是根据官方教程加上自己的理解做的笔记)

官方教程:【官方教程】ChatGLM2-6B 部署与微调_哔哩哔哩_bilibili

 在github仓库中有做好的微调可以直接用(和上面源码是一个链接):THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型 (github.com)

 主要是两种微调方式(支持多轮对话数据集和生成任务数据集):

  • 基于P-tuning V2的参数高效微调
  • 全参数微调

做模型微调需要了解哪些原理?共有哪些方式可以做微调?

 这种微调方式难度比较高、实现困难、不可控、不稳定。虽然可以用,但一般不建议采用这种方式进行微调

 

 这种就是对模型权重做优化,通过对模型进行进一步的训练来更新参数,使得模型适配专业领域,这个PPT中包含两种方式:

  • 左边的是对模型进行全参数微调(这种效果比较好,但需要更好的GPU资源),比如用ChatGLM2-6B,需要对60亿个参数进行更新和调整。至少需要13*4=52G的显存进行全参数微调
  • 右边的是对模型进行参数高效微调(资源有效的情况下可以用),不会再对60亿的参数进行全部的调整,只引入非常少(如几十万或者几百万)的参数做微小的调整,再把这些参数加到原来的模型权重中。对于这部分的原理:神经网络训练本身就是做的矩阵运算,再超大型矩阵上附上一个旁路(非常小,5000*10或者5000*5),降低运算成本,最后将小的微调矩阵加到原本的大矩阵上,对大矩阵进行更新。

GitHub仓库中使用的微调(参数高效微调):

对应的是源代码文件中的ptuning文件夹里面的train.shevaluate.sh

 

使用官方提供的广告数据集,对chatglm2-6b使用P-tuningV2进行微调:

将下载好的数据集放到ptuning文件夹中,文件结构如图:

 在配置好的conda环境中,cd到ptuning文件夹路径下运行指令:

bash train.sh

train.sh文件设置如图:

train.sh 中的 PRE_SEQ_LEN 和 LR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit 来被原始模型的量化等级,不加此选项则为 FP16 精度加载。

在默认配置 quantization_bit=4、per_device_train_batch_size=1、gradient_accumulation_steps=16 下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7G 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大 per_device_train_batch_size 的值,但也会带来更多的显存消耗,根据实际情况酌情调整。

最后,运行成功并训练:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/1001832
推荐阅读
相关标签
  

闽ICP备14008679号