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

chatGPT是一种生成式对话模型,可以用于生成人类类似的自然语言对话。在训练这个模型时,需要通过一组超参数来控制模型的训练行为以及生成结果的质量。

本文将对chatGPT训练时所需要设置的一些超参数进行解释

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

PRE_SEQ_LEN=128LR=2e-2 是两个超参数,用于设置chatGPT训练的一些参数。这些超参数的具体意义如下:

  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

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

    作为一个小白以上是我用cahtgpt生成的对这些参数的详细解释,希望对您理解这个模型的训练有所帮助。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据