Royalvice / DocDiff

ACM Multimedia 2023: DocDiff: Document Enhancement via Residual Diffusion Models. Also contains 1597 red seals in Chinese scenes, along with their corresponding binary masks.
https://www.aibupt.com/
MIT License
196 stars 21 forks source link

请教一下训练时长 #8

Closed lcwLcw123 closed 10 months ago

lcwLcw123 commented 10 months ago

我现在用您给定的conf.yaml 在V100单卡上训练(目前好像多卡的代码还没有上传),目前速度大概是8个小时 10000iterations,这个速度正常吗,按照这个速度训练完 1000000iteration需要几十天?

# model
IMAGE_SIZE : [304, 304]   # load image size, if it's train mode, it will be randomly cropped to IMAGE_SIZE. If it's test mode, it will be resized to IMAGE_SIZE.
CHANNEL_X : 3             # input channel
CHANNEL_Y : 3             # output channel
TIMESTEPS : 100           # diffusion steps
SCHEDULE : 'linear'       # linear or cosine
MODEL_CHANNELS : 32       # basic channels of Unet
NUM_RESBLOCKS : 1         # number of residual blocks
CHANNEL_MULT : [1,2,3,4]  # channel multiplier of each layer
NUM_HEADS : 1

MODE : 1                  # 1 Train, 0 Test
PRE_ORI : 'True'          # if True, predict $x_0$, else predict $\epsilon$.

# train
PATH_GT :        # path of ground truth
PATH_IMG :     # path of input
BATCH_SIZE : 32           # training batch size
NUM_WORKERS : 8           # number of workers
ITERATION_MAX : 1000000   # max training iteration
LR : 0.0001               # learning rate
LOSS : 'L2'               # L1 or L2
EMA_EVERY : 100           # update EMA every EMA_EVERY iterations
START_EMA : 2000          # start EMA after START_EMA iterations
SAVE_MODEL_EVERY : 10000  # save model every SAVE_MODEL_EVERY iterations
EMA: 'True'               # if True, use EMA
CONTINUE_TRAINING : 'False'               # if True, continue training
CONTINUE_TRAINING_STEPS : 10000           # continue training from CONTINUE_TRAINING_STEPS
PRETRAINED_PATH_INITIAL_PREDICTOR : /home/lcw/DocDiff/checksave/init.pth'    # path of pretrained initial predictor
PRETRAINED_PATH_DENOISER : '/home/lcw/DocDiff/checksave/denoiser.pth'             # path of pretrained denoiser
WEIGHT_SAVE_PATH : './checksave_LCW'          # path to save model
TRAINING_PATH : './Training'              # path of training data
BETA_LOSS : 50            # hyperparameter to balance the pixel loss and the diffusion loss
HIGH_LOW_FREQ : 'True'    # if True, training with frequency separation
Royalvice commented 10 months ago

我修改了一下conf.yaml,IMAGE_SIZE是[128, 128]就可以了。304是我推理的时候的配置,我给弄错了,不好意思。我在单卡3090上以bs=32训练100w次数差不多不到50小时。如果您速度还是很慢,首先检查显卡占用率是不是超过90.如果占用率不高,请调大NUM_WORKERS。如果占用率是满的,但速度还是很慢,那请调低bs。训练次数也不一定一定是100w,不同数据集不一样,请根据loss或者自行设置验证集来判断效果,一般数据集20w-50w次迭代就可以了。另外./Training下可以查看训练中间过程图片,方便判断效果。

lcwLcw123 commented 10 months ago

好的 感谢!

获取 Outlook for iOShttps://aka.ms/o0ukef


发件人: Zongyuan Yang @.> 发送时间: Thursday, August 24, 2023 10:04:57 AM 收件人: Royalvice/DocDiff @.> 抄送: lcwLcw123 @.>; Author @.> 主题: Re: [Royalvice/DocDiff] 请教一下训练时长 (Issue #8)

我修改了一下conf.yaml,IMAGE_SIZE是[128, 128]就可以了。304是我推理的时候的配置,我给弄错了,不好意思。我在单卡3090上以bs=32训练100w次数差不多不到50小时。如果您速度还是很慢,首先检查显卡占用率是不是超过90.如果占用率不高,请调大NUM_WORKERS。如果占用率是满的,但速度还是很慢,那请调低bs。训练次数也不一定一定是100w,不同数据集不一样,请根据loss或者自行设置验证集来判断效果,一般数据集20w-50w次迭代就可以了。另外./Training下可以查看训练中间过程图片,方便判断效果。

― Reply to this email directly, view it on GitHubhttps://github.com/Royalvice/DocDiff/issues/8#issuecomment-1690879704, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AYIUOCOMML3UGWUSWTT3CRLXW2ZETANCNFSM6AAAAAA34JOT4E. You are receiving this because you authored the thread.Message ID: @.***>

lcwLcw123 commented 10 months ago

您好, GPU的占用率一直在跳 在0和30%左右进行跳动,模型训练之中有一部分操作在cpu上进行吗,还是我设置的有问题呢

Royalvice commented 10 months ago

您好, GPU的占用率一直在跳 在0和30%左右进行跳动,模型训练之中有一部分操作在cpu上进行吗,还是我设置的有问题呢

“GPU的占用率一直在跳 在0和30%左右进行跳动”应该是某个环节存在问题。DocDiff除了IO基本没有在cpu上的操作,基本所有的算子运算都是在GPU上。可以先把NUM_WORKERS设置为0试一下,如果还不行,可能需要根据您自身的服务器环境配置等等查查资料了。我这边用这个配置在单卡3090上是可以跑满的

lcwLcw123 commented 10 months ago

好的感谢!

lcwLcw123 commented 10 months ago

我修改了一下conf.yaml,IMAGE_SIZE是[128, 128]就可以了。304是我推理的时候的配置,我给弄错了,不好意思。我在单卡3090上以bs=32训练100w次数差不多不到50小时。如果您速度还是很慢,首先检查显卡占用率是不是超过90.如果占用率不高,请调大NUM_WORKERS。如果占用率是满的,但速度还是很慢,那请调低bs。训练次数也不一定一定是100w,不同数据集不一样,请根据loss或者自行设置验证集来判断效果,一般数据集20w-50w次迭代就可以了。另外./Training下可以查看训练中间过程图片,方便判断效果。

请问一下训练稳定时候的loss大概是多少呢,以下是我的训练loss,已经开始震荡了,不下降了(想确定一下是不是我数据集的问题) high_freq_ddpm_loss=0.014, loss=0.0239, low_freq_pixel_loss=0.00885, pixel_loss=0.00208

Royalvice commented 10 months ago

我修改了一下conf.yaml,IMAGE_SIZE是[128, 128]就可以了。304是我推理的时候的配置,我给弄错了,不好意思。我在单卡3090上以bs=32训练100w次数差不多不到50小时。如果您速度还是很慢,首先检查显卡占用率是不是超过90.如果占用率不高,请调大NUM_WORKERS。如果占用率是满的,但速度还是很慢,那请调低bs。训练次数也不一定一定是100w,不同数据集不一样,请根据loss或者自行设置验证集来判断效果,一般数据集20w-50w次迭代就可以了。另外./Training下可以查看训练中间过程图片,方便判断效果。

请问一下训练稳定时候的loss大概是多少呢,以下是我的训练loss,已经开始震荡了,不下降了(想确定一下是不是我数据集的问题) high_freq_ddpm_loss=0.014, loss=0.0239, low_freq_pixel_loss=0.00885, pixel_loss=0.00208

扩散模型训练的loss特点就是在小范围下震荡,但是网络还是在学习并效果还是再提升,这个目前的解释很多可以去参考一下苏剑林的博客。pixel_loss一般在0.001以下就差不多稳定了,可以再具体参考训练过程输出的图片判断效果,不用数据集不一样,跑跑metrics看看效果。