当前位置: 首页 > news >正文

[FT]chatglm2微调

1.准备工作

  • 显卡一张:A卡,H卡都可以,微调需要1-2张,ptunig需要一张,大概显存得30~40G吧;全量微调需要两张卡,总显存占用100G以上
  • 环境安装:
    • 尽量在虚拟环境安装:参见,https://blog.csdn.net/u010212101/article/details/103351853
    • 环境安装参见:https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

2.如何微调:

参见:https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

2.0.训练数据格式,整理成如下格式,格式1和2都行:

格式1:

{"content":"xxx","summary":"xxx"}
{"content":"xxx","summary":"xxx"}
... ...

格式2:

[
{"content":"xxx","summary":"xxx"}
{"content":"xxx","summary":"xxx"}
... ...]

2.1.ptuning微调:

参见:https://github.com/THUDM/ChatGLM2-6B/blob/main/ptuning/train.sh

PRE_SEQ_LEN=128
LR=2e-2
NUM_GPUS=1torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \--do_train \--train_file AdvertiseGen/train.json \--validation_file AdvertiseGen/dev.json \--preprocessing_num_workers 10 \--prompt_column content \--response_column summary \--overwrite_cache \--model_name_or_path THUDM/chatglm2-6b \--output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \--overwrite_output_dir \--max_source_length 64 \--max_target_length 128 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 16 \--predict_with_generate \--max_steps 3000 \--logging_steps 10 \--save_steps 1000 \--learning_rate $LR \--pre_seq_len $PRE_SEQ_LEN \--quantization_bit 4

注意点:

  • 将模型下载到本地,可以从modelscope或者huggingface上下载,建议直接modelscope下载,huggingface下载慢/还得科学上网,麻烦。
    • https://modelscope.cn/models/ZhipuAI/chatglm2-6b-32k/summary
  • 将上述model_name_or_path 的路径改为你本地模型路径
  • 资源紧张,下述一些参数需要调整:
  • 调节batchsize设置: per_device_train_batch_sizeper_device_eval_batch_sizegradient_accumulation_steps=batchsize,这三项酌情调整
  • 训练步数:
    • max_steps=5000步
  • max_source_length:输入的最大长度
  • max_target_length:输出的最大长度

2.2.全量微调

  • 全量微调速度比较慢,建议使用deepspeed,直接pip安装即可
  • 全量微调,几百上千条数据的情况,显存得100G以上,也即需要至少2张A800卡

deepspeed 全量微调chatglm2命令如下:

  • 参见:https://github.com/THUDM/ChatGLM2-6B/blob/main/ptuning/ds_train_finetune.sh
LR=1e-4MASTER_PORT=$(shuf -n 1 -i 10000-65535)deepspeed --num_gpus=4 --master_port $MASTER_PORT main.py \--deepspeed deepspeed.json \--do_train \--train_file AdvertiseGen/train.json \--test_file AdvertiseGen/dev.json \--prompt_column content \--response_column summary \--overwrite_cache \--model_name_or_path THUDM/chatglm2-6b \--output_dir ./output/adgen-chatglm2-6b-ft-$LR \--overwrite_output_dir \--max_source_length 64 \--max_target_length 64 \--per_device_train_batch_size 4 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 1 \--predict_with_generate \--max_steps 5000 \--logging_steps 10 \--save_steps 1000 \--learning_rate $LR \--fp16
  • 注意点和上述基本一致,至于deepspeed高级配置如何做,这里挖个坑,后续佛系更新

2.3.其他微调,参见官方教程

https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

3.推理加速

  • 按照fastllm,速度提升3成~4成吧
  • 教程参见:https://github.com/ztxz16/fastllm

相关文章:

  • 【C++从0到王者】第四十六站:图的深度优先与广度优先
  • STM32USART串口数据包
  • 字典树基础,朴素字符串查找
  • MySQL 用户账号迁移
  • 小白的matlab简单应用
  • 【打工日常】使用docker部署在线PDF工具
  • 基于MUSIC算法的六阵元圆阵DOA估计matlab仿真
  • 《TCP/IP详解 卷一》第9章 广播和组播
  • 【Linux C | 网络编程】套接字选项、getsockopt、setsockopt详解及C语言例子
  • MYSQL高级_目录
  • Windows的Docker-Desktop安装与问题总结
  • 2. 获取帮助(Getting Help)
  • 【JavaScript 漫游】【026】进度事件简记
  • Sora - 探索AI视频模型的无限可能
  • excel导出标准化
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • centos安装java运行环境jdk+tomcat
  • php ci框架整合银盛支付
  • python_bomb----数据类型总结
  • SQLServer插入数据
  • 彻底搞懂浏览器Event-loop
  • 给第三方使用接口的 URL 签名实现
  • 前端面试总结(at, md)
  • 如何学习JavaEE,项目又该如何做?
  • 说说动画卡顿的解决方案
  • 用Python写一份独特的元宵节祝福
  • 最近的计划
  • # include “ “ 和 # include < >两者的区别
  • (1) caustics\
  • (1)Android开发优化---------UI优化
  • (libusb) usb口自动刷新
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (算法)N皇后问题
  • (学习日记)2024.01.19
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net Remoting常用部署结构
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 药厂业务系统 CPU爆高分析
  • .NET单元测试
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET企业级应用架构设计系列之技术选型
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @ComponentScan比较
  • [100天算法】-不同路径 III(day 73)
  • [20171106]配置客户端连接注意.txt
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [c++] C++多态(虚函数和虚继承)
  • [CQOI 2010]扑克牌