ChatGLM2-6B
ChatGLM2-6B copied to clipboard
[BUG/Help] 请求大神对微调参数设置进行详解
Is there an existing issue for this?
- [X] I have searched the existing issues
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 #生成量化后的训练模型,请大神确认
最后再请各位大神帮忙解读一下上面这个训练过程中的日志含义
- loss:这个应该是逐渐下降的,最后应该是归于0,是不是逐渐归0后迭代就停止了,请大神确认
- learning_rate:这个就是我们设置的训练参数,理论上应该一直小于你设置的数值,请大神确认
- epoch:这个确实没看懂,是每次迭代的总算例吗?per_device_train_batch_size*gradient_accumulation_steps,还是preprocessing_num_workers ,这个有什么含义,请大神确认
- 最后这个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
请大神赐教
可以参考这篇文章哈 https://zhuanlan.zhihu.com/p/643276738
我也有这些问题,请问您已经解决了吗?