【AIGC】Chatglm2-lora微调

【AIGC】Chatglm2-lora微调

    正在检查是否收录...

ChatGLM2介绍

ChatGLM2-6B源码地址:https://github.com/THUDM/ChatGLM2-6B

ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

1、更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
2、更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,我们会在后续迭代升级中着重进行优化。
3、更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
4、更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。如果您发现我们的开源模型对您的业务有用,我们欢迎您对下一代模型 ChatGLM3 研发的捐赠。

博主个人体验,本次chatglm2-6b相较于chatglm1有质的提升,很多情况下不像1代乱说,错误表述了。而且很明显的一点,对话推理速度更快,对话长度更长。

Rola微调

系统环境

内存:1.5T (40G左右就够用了)
GPU:8 * 2080TI
CUDA:11.7 (原12.2,版本太高,进行了降低版本处理,下文有介绍)

获取项目

Respect @ssbuild

git clone https://github.com/ssbuild/chatglm2_finetuning.git) 
环境安装
安装chatglm2-6b的环境requirements.txt
protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate 
安装Lora微调的环境requirements.txt
deep_training>=0.1.10,<0.1.12 cpm_kernels transformers>=4.30 deepspeed bitsandbytes>=0.39 accelerate>=0.20 bitsandbytes cchardet 
当前还有一个安装包需要额外安装:deep_training,这个包需要通过源码安装:
git clone https://github.com/ssbuild/deep_training.git cd deep_training pip install . 
配置微调参数

参数修改:

config/constant_map.py 

修改模型路径,如下图:

config/main.py 

使用lora微调,设置为True,enable_int4 = True 使用int4加载,会减少一些显存的占用。

config/sft_config_lora.py 

配置gpu占用:

适当修改batch_size,防止显存溢出,自由设定:

适当修改max_seq_length 防止显存溢出,自由设定:

微调训练

执行 main.py 入口文件:

python train.py 
Epoch 99: 100%|████████████| 38/38 [00:14<00:00, 2.71it/s, v_num=4, loss=3.830]INFO:lightning_fabric.utilities.rank_zero:`Trainer.fit` stopped: `max_epochs=100` reached. Epoch 99: 100%|████████████| 38/38 [00:14<00:00, 2.70it/s, v_num=4, loss=3.830] 

预训练模型位置:

./best_ckpt 
模型测试
python infer_lora_finetuning.py 
报错解决
1、报错:

.conda/envs/gf_python38/lib/python3.8/site-packages/bitsandbytes/libbitsandbytes_cpu.so: undefined symbol: cquantize_blockwise_fp16_nf4

出现问题原因:
libbitsandbytes_cpu 版本不对导致的
解决:

在目录.conda/envs/gf_python38/lib/python3.8/site-packages/bitsandbytes,用自己的cuda版本.so 覆盖libbitsandbytes_cpu.so
即:cp libbitsandbytes_cuda117.so libbitsandbytes_cpu.so

博主问题更严重,博主GPU驱动cuda版本为12.2,而且在当前目录中没有12.2的版本。而且pytorch我看也没有支持12.2这么新的cuda,所以果断降了一次版本,重新安装cuda11.7。
cuda版本选择
cuda安装地址

wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-rhel7-11-7-local-11.7.0_515.43.04-1.x86_64.rpm sudo rpm -i cuda-repo-rhel7-11-7-local-11.7.0_515.43.04-1.x86_64.rpm sudo yum clean all sudo yum -y install nvidia-driver-latest-dkms cuda sudo yum -y install cuda-drivers 

可以使用nvidia-smi进行测试,查看cuda版本是否更新,如果报错,请重启reboot

报错内容如下,需要重启:

(python38) -bash-4.2$ nvidia-smi Failed to initialize NVML: Driver/library version mismatch 
nvidia-smi 
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.43.04 Driver Version: 515.43.04 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:5A:00.0 Off | N/A | | 28% 37C P0 63W / 250W | 0MiB / 11264MiB | 0% Default | | | | N/A | 

codechatpythongitgpucpu上下文github预训练开源模型transformersclonetransformergradio中英双语url人类偏好微调训练数据集商业使用模型测试elohtml对话模型defi预训练模型pytorch学术研究bash
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-4097.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

Copilot:AI自动写代码,人工智能究竟还能取代什么?

上一篇

AI向百万薪资 高级原画师开刀?!爆Midjourney入局3D模型生成

下一篇
  • 复制图片
按住ctrl可打开默认菜单