THUDM / ChatGLM2-6B

ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型
Other
15.71k stars 1.85k forks source link

[BUG/Help] 请求大神对微调参数设置进行详解 #608

Open YueleiFu opened 11 months ago

YueleiFu commented 11 months ago

Is there an existing issue for this?

Current Behavior

PRE_SEQ_LEN=128 LR=2e-2 NUM_GPUS=1

torchrun --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 \ #是否覆盖缓存中的训练数据和评估数据,默认false --model_name_or_path "C:/test/AI/ChatGLM2-6B/chatglm2-6b" \ #预训练模型,也就是原始模型位置,微调是基于原始模型开展的 --output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \ #微调后生成的微调模型输出位置 --overwrite_output_dir \ #是否覆盖微调输出路径 --max_source_length 64 \ #训练集中每条内容中问题的token长度,如果超过设置数值则被截断,本文中就是指content的长度,请大神确认是否准确 --max_target_length 128 \ #训练集中每条内容中答案的token长度,如果超过设置数值则被截断,本文中就是指summary的长度,请大神确认是否准确 --per_device_train_batch_size 1 \ #每次训练迭代可同时处理的数据集中的条数,请大神确认是否准确 --per_device_eval_batch_size 1 \ #每次评估可同时处理的数据集中的条数,请大神确认是否准确 --gradient_accumulation_steps 16 \ #每次迭代累加次数,per_device_train_batch_size*gradient_accumulation_steps=每次迭代的总算力,如果硬件足够可调大per_device_train_batch_size,这样训练效率会高,请大神确认是否准确 --predict_with_generate \ #不是很清楚什么意思,请大神解释 --max_steps 3000 \ #最大迭代步数,但是在满足什么条件下迭代就停止了呢?比如数据集12条,每次batch_size4条,这样3次steps就停止了。请大神解释 --logging_steps 10 \ #每10步迭代写一次日志,请大神确认 --save_steps 1000 \ #每1000步迭代输出一次训练模型,如果只有10条数据集,batch_size设置10,save_steps设置1000,那是不是肯定没有输出结果。请大神确认 --learning_rate $LR \ #只知道设置的越小,训练的效果越好,请大神确认 --pre_seq_len $PRE_SEQ_LEN \ #训练的数据集中每条内容(包含问题和答案)总的token数量,请大神确认 --quantization_bit 4 #生成量化后的训练模型,请大神确认

output

最后再请各位大神帮忙解读一下上面这个训练过程中的日志含义

  1. loss:这个应该是逐渐下降的,最后应该是归于0,是不是逐渐归0后迭代就停止了,请大神确认
  2. learning_rate:这个就是我们设置的训练参数,理论上应该一直小于你设置的数值,请大神确认
  3. epoch:这个确实没看懂,是每次迭代的总算例吗?per_device_train_batch_size*gradient_accumulation_steps,还是preprocessing_num_workers ,这个有什么含义,请大神确认
  4. 最后这个160/500,500是max_steps ,160是当前迭代步数,想知道一定要迭代到500才停止吗?迭代结束的条件是什么,请大神确认

Expected Behavior

烦请各位大神不惜赐教,作为小白一枚对当前的参数一知半解,我相信向我一样的初学者大多不是很了解这些参数的含义,从而也就无法系统的开展模型微调训练,所以才会碰到各种问题。

Steps To Reproduce

1.按照官方ptuning教程进行部署训练 2.在Windows10, CPU上开展训练

Environment

- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

Anything else?

No response

YueleiFu commented 11 months ago

请大神赐教

Jaren1907 commented 9 months ago

可以参考这篇文章哈 https://zhuanlan.zhihu.com/p/643276738

Taobiao03 commented 7 months ago

我也有这些问题,请问您已经解决了吗?