首页 > 其他分享 >ChatGLM-6B模型基于 P-Tuning v2 微调脚本参数解释

ChatGLM-6B模型基于 P-Tuning v2 微调脚本参数解释

时间:2024-03-11 11:13:30浏览次数:21  
标签:6B Tuning 训练 -- 模型 指定 v2 参数 序列

1、地址:https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md

2、参数示例

PRE_SEQ_LEN=128
LR=2e-2

CUDA_VISIBLE_DEVICES=0 python3 main.py \
    --do_train \
    --train_file AdvertiseGen/train.json \
    --validation_file AdvertiseGen/dev.json \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path THUDM/chatglm-6b \
    --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --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

3、解释

  1. PRE_SEQ_LEN=128

    这个超参数指定了模型在进行finetune训练过程中,每个示例(prompt和response)输入序列的最大长度。在chatGPT训练中,要将prompt和response两个序列合并成一个输入序列,因此需要控制输入序列的长度,避免GPU内存溢出或训练过慢。该值通常由硬件设备内存大小和任务要求等因素综合考虑而定。

  2. LR=2e-2

    这个超参数指定了训练过程中的学习率。学习率是控制训练过程中模型参数更新速度的超参数,对训练过程的结果具有很大的影响。如果学习率过高,可能会导致模型训练快速收敛但可能会陷入局部最优解;如果学习率过低,则模型训练可能会收敛缓慢,并可能陷入局部最优解。在chatGPT训练中,一般采用默认值或在一定范围内进行调整。LR=2e-2 表示学习率为0.02,通常情况下这个值比较合适。

  3. --do_train

    该参数表示是否需要进行训练。如果设置了该参数,则会进行模型训练;如果没有设置,则不进行训练。

  4. --train_file

    该参数指定训练数据文件的路径。训练数据文件应为JSON格式,其中包含输入序列和输出序列等信息。

  5. --validation_file

    是用于指定验证集文件路径的参数,可以用于在训练过程中实时评估模型的效果和性能。具体来说,训练模型时,我们需要将训练数据集分成训练集和验证集两部分。训练集用于训练模型,验证集则用于评估模型的性能和准确性。

  6. --prompt_column

    该参数指定输入文本(即前置文本或prompt)所在列。

  7. --response_column

    该参数指定输出文本(即响应文本或response)所在列。

  8. --overwrite_cache

    该参数指定是否重写缓存。如果设置了该参数,则会重新生成缓存文件;否则会加载现有的缓存文件(如果存在)。

  9. --model_name_or_path

    指定预训练模型的路径或名称。这个参数告诉程序将哪一个预训练模型加载进来,用于finetune或者作为基模型。

  10. --output_dir

    指定训练模型的输出目录。

  11. --max_source_length

    指定输入序列的最大长度。如果输入序列的长度超过这个值,则会被截断到该值。这个参数通常是根据硬件设备GPU的内存大小来确定的。

  12. --max_target_length

    指定输出序列的最大长度。如果输出序列的长度超过这个值,则会被截断到该值。

  13. --per_device_train_batch_size

    指定每个GPU设备的训练批次大小。这个参数控制每个GPU上可以同时训练的样本数量,影响到内存的使用量和训练速度。

  14. --per_device_eval_batch_size

    指定每个GPU设备的评估批次大小。这个参数与训练批次大小类似,控制每个GPU上可以同时进行的样本数量,影响到内存的使用量和评估速度。

  15. --gradient_accumulation_steps

    指定梯度累积的步数。梯度累积意味着在计算梯度时,将多个批次的梯度累积起来再进行更新,这样可以减少每个批次的内存占用,从而使得更大的批次大小成为可能。

  16. --predict_with_generate

    如果设置该参数,则会在训练完成后立即生成输出结果。这样可以在训练过程中不断地检查模型的性能和效果。

  17. --max_steps

    指定训练模型的最大步数。如果达到这个步数则停止训练。

  18. --logging_steps

    指定每隔多少步将训练日志写入输出目录中的文件。这个参数控制记录训练过程中的信息的频率,有助于观察训练过程的进展情况。

  19. --save_steps

    指定每隔多少步将模型保存到输出目录中的文件。这个参数控制周期地保存训练模型的频率,有助于保护模型训练的成果和避免信息丢失。

  20. --learning_rate

    指定学习率。学习率是控制神经网络中权重变化的速度的超参数。适当的学习率有助于提高模型的训练速度和质量。

  21. --pre_seq_len

    指定训练时的预序列长度。这个参数用于finetune操作,控制输入序列的长度,进而控制模型输出的信息量和质量。

  22. --quantization_bit

    指定网络量化时的比特数。网络量化是一种优化模型的方式,可以减少模型的体积和内存使用量。选择适当的量化比特数有助于提高模型的效率和速度。

标签:6B,Tuning,训练,--,模型,指定,v2,参数,序列
From: https://www.cnblogs.com/zhylioooo/p/18065653

相关文章

  • SMU Winter 2024 div2 ptlks的周报Week 5(3.4-3.10)
    维护子树的全部子树的权值和时,需要用到树的DFS序列,树的每个子树都对应DFS序列中的连续一段黄金树影题意:给定一棵树及每个节点的权值,给定一组操作,输入1ax,表示节点a权值加上x;输入2a,表示询问节点a的子树权值和(包含a)。考虑到树的DFS序列,则问题转变为对某个序列维护区间和以......
  • [CF696B] Puzzles 题解
    首先很好想到要用树形\(dp\)。然后设\(dp_i\)为遍历到第\(i\)个点的期望时间,\(sz_i\)代表\(i\)的子树大小。发现有转移方程:\[dp_i=dp_{fa_i}+1+\sum\limits_{j\infa_i且j\nei}sz_j\timesq\]其中\(q\)为一个常数,代表在排列中\(j\)在\(i\)前的概率。很容易发......
  • AI大模型ChatGLM2-6B 第三篇 - ChatGLM2-6B部署
    clone项目下载模型https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b&mode=list切换conda里面的py39环境cd/home/chq/ChatGLM2-6Bcondaactivatepy39执行pipinstall(py39)root@chq:/home/chq/ChatGLM2-6B#pipinstall-rrequirements.txtC......
  • AI大模型ChatGLM2-6B - 基础环境搭建
    硬件环境cpui5-13600k内存64G显卡rtx3090软件环境window11专业版22H2n卡驱动:526.47wsl2ubuntu22.04安装nvidia-cuda-toolkit打开wsl2的ubuntu,安装nvidia驱动程序sudoaptupdatesudoaptupgradesudoubuntu-driversdevicessudoaptinstallnvidia-driver-......
  • kubernetes支持swap了,但是cgroup v2
    kubernetes支持swap了,但是cgroupv2结论:Container-OptimizedOS(从M97开始)、Ubuntu(从21.10开始,推荐22.04+)、DebianGNU/Linux(从Debian11Bullseye开始)、Fedora(从31开始)、ArchLinux(从2021年4月开始)、RHEL和类似RHEL的发行版(从9开始)支持使用swap但是要配置......
  • Codeforces Round 931div2补题
    B.YetAnotherCoinProblem真[https://www.bilibili.com/video/BV1o2421M7pV/]不同硬币之间有倍数关系,使得一定数量后的小硬币可以被大硬币替代达到最优方案,而每个小硬币在最优下有可能的数量如下,进行枚举后找到最优方案。1:不多于2个(3个1会被3替代)3:不多于一个(2个3......
  • JDBC工具类封装v2.0
    JDBC工具类封装v2.01packagecom.atsyc.api.utils;23/*4*TODO:5*利用线程本地变量,存储连接信息,确保一个线程的多个方法可以获取同一个connection6*优势:事务操作的时候service和dao属于同一个线程,不用再传递参数了7*大家都可以调......
  • 实战3-cookie参数acw_sc_v2
    目标网站aHR0cHM6Ly93d3cubHlkaC5jb20vaml0dWFuLw==1.分析网站在网站中看到两个请求,我们想要的数据在第二个请求中分析第二个请求,发现在第二个请求中需要携带两个cookie值分别是acw_tc和acw_sc__v2往上看第一个请求,在第一个请求中发现,服务器会返回cookie值中的acw_tc2.......
  • solution-cf236b
    题解CF236B【EasyNumberChallenge】原题此题一个暴力就可以过了。看着别的大佬不加记忆化吸口氧就过了,而我的却死活TLE可能因为我人丑常数大?注意到i*j*k的值会出现重复,所以考虑记忆化。时间复杂度\(O(n^3\sqrtn)\),跑得飞快代码constintN=1e6+10,M=1073741824......
  • 界面开发框架DevExpress XAF v24.1新版预告 - 跨平台应用UI(一)
    DevExpressXAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。本文中的内容概述了XAF跨平台.NET应用UI和DevExpress.NETApp、WebAPI服......