-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
训练问题的几个汇总请教 #136
Comments
作为路人回复下,作者可能比较忙哈哈,仅供参考哈~
3.3 for w.o feature extraction; 12 for feature extraction 这个我也不是很懂。 |
re: 我觉得你把batchsize调大,然后占到七十多g就行,learning rate可以在你确定好batchsize之后调整下就行 这个 learning rate 大概范围是多少? |
谢谢您善意的回复,目前我的情况: 训练时,我用了105W图文对数据集,train_batch_size=12,没有修改作者默认的学习率,在一块80G的A卡上正在训练。我发现,train_batch_size设置成大于12的值时,比如20、24时,每个epoch耗时反而增加了很多,猜测可能跟问题3中的feature extraction有关,但是我已经提前做了数据预处理,图文特征全部取出来存在本地了,所以这一点也有点困惑。 最后,我选择了train_batch_size=12,GPU占用少的时候是50+G,多的时候是70G,我没有再增大batch_size,因为也想留点空间测试中间保存的模型,学习率保持默认配置。 使用同样的105W数据集,我之前也曾将SDXL做基模,使用kohya_ss库(https://github.com/kohya-ss/sd-scripts)进行训练。SDXL的可训练的参数是2B+,pixartSigma只有0.6B,在同样的一块A卡上,训练SDXL可设置的train_batch_size可以达到48,而pixartSigma只能到24,而且训练时间SDXL也更快。考虑到SDXL可训练参数比pixartSigma大很多,我以为pixartSigma训练应该更快,batch_size应该更大才对,看来还是要回去好好研究源代码才行。 |
我想可能是sigma使用transformer的结构,一般比unet要暂用的显存更多。你训练的效果怎么样,你是要在自己的数据集上做finetune吗? |
是的,应该是这个原因。嗯,我们爬了一批MJ的数据,之前拿SDXL做基模ft,现在改用DiT框架了,105万数据,bs=12的情况下,在pixartSigma上训练一轮要两周,我现在跑了10天了,看中间模型测试结果,确实远好于SDXL,感谢华为的开源 |
您好,非常感谢您优秀的开源项目,我有一批爬取的图文对数据集,正在使用您的预训练模型进行微调,遇到了几个问题,汇总在这里,希望得到您的回复,不胜感激。
1,我的图文对数据,使用的是原始的user prompt,没有使用sharegpt4v进行prompt上采样 (应该是为了提高T2I的长文本理解能力),所以我把tools/convert_images_to_json.py中的第80行代码:entry['sharegpt4v'] = ''注释掉了,也就是我的data_info.json文件中只有width、height、ratio、path、prompt属性,没有sharegpt4v。因此我没有运行asset/docs/data_feature_extraction.md中的3.1部分,即python tools/extract_features.py --run_t5_feature_extract --caption_label=sharegpt4v这一步预处理代码,然后我运行训练,得到如下报错:
为了规避这个报错,我把configs/pixart_sigma_config/PixArt_sigma_xl2_img1024_internalms.py中的第41行real_prompt_ratio = 0.5,默认值改成了real_prompt_ratio = 1.0,绕过了assert len(self.sharegpt4v_txt_samples[0]) != 0的检查,请问,real_prompt_ratio = 0.5这个默认配置代表啥意思,我的改动是合理的吗,会不会影响训练效果?
2,在训练前的提取图文特征预处理阶段,当我运行完tools/convert_images_to_json.py生成data_info.json后,该json文件中的项数,与原始数据文件夹下图文对数量一致,但是运行asset/docs/data_feature_extraction.md中的第2步:Extract VAE features后,因为tools/extract_features.py中如下这一行代码:meta_data_clean = [item for item in meta_data if item['ratio'] <= 4.5],过滤掉了宽高比过于悬殊的数据,导致img_sdxl_vae_features_512resolution_ms_new文件夹下的npy文件个数比原始图片、以及data_info.json中的项数少了几十个,而Extract T5 features (prompt)这一步预处理,得到的caption_features_new文件夹下的npz文件个数,又与原始图片、以及data_info.json中的项数一致,因为我数据量较大, 跑一轮耗时比较久,不方便检查,请问这种情况会影响训练吗,比如训练一轮后因为数量不一致导致训练中断等问题。
3,配置文件configs/pixart_sigma_config/PixArt_sigma_xl2_img1024_internalms.py中第24行:train_batch_size = 2 # 3 for w.o feature extraction; 12 for feature extraction,这个注释是什么意思,为什么3是不带特征抽取,而12是包含特征抽取的?
以及train_scripts/train.py中的第296行:if args.debug: config.train_batch_size = 2。请问batch size大小和debug开启与否的关系是什么?目前我采用的是默认参数训练,也就是开启debug,train_batch_size = 2,在我一块80G的A100上只用了大约30G显存,请问我如何增大显存占用率? 如果直接关掉debug,增大train_batch_size,这跟特征抽取之间是什么关系,因为我已经提前抽取了图文特征,训练时这些参数的设置看起来又跟预处理有关,导致我有点困惑,希望得到您的解答。
问题较多,期待您的回复,谢谢!!
The text was updated successfully, but these errors were encountered: