Skip to content
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

训练时间 #118

Open
Wyethjjj opened this issue Dec 17, 2021 · 12 comments
Open

训练时间 #118

Wyethjjj opened this issue Dec 17, 2021 · 12 comments

Comments

@Wyethjjj
Copy link

请问作者使用4张p40gpu训练完整的数据集需要多久?

@Arthur151
Copy link
Owner

Arthur151 commented Dec 17, 2021 via email

@littlejiumi
Copy link

期待Training guidance~~

@Wyethjjj
Copy link
Author

作者您好,我在您回答的#115问题中看到您说根据您提供的pre-trained backbone来训练大概需要半天,这里我不是很懂,我想问pre-trained backbone与pre-trained model具体有什么区别?相对于pre-trained model,pre-trained backbone中哪部分是没经过训练的?

@Arthur151
Copy link
Owner

pre-trained backbone 采用的不一样的head 来学习2D pose estimation之类的其他任务,预训练出来的模型,因为在相似的任务上pretrain过,所以会收敛的比较快。 pre-trained model是指的是我训练好的模型。从0开始训一般采用例如ImageNet上训练的参数,需要比较长的时间构建基础特征。我这里提供的pre-trained backbone就是帮大家节省时间,跳过基础特征构建部分。

@Wyethjjj
Copy link
Author

Wyethjjj commented Feb 6, 2022

作者您好,关于训练我有个问题想问您,下面是我的训练log。
V1_hrnet_crowdpose,lsp,mpiinf,h36m,mpii,coco_g0.log
我使用的是单张1080ti训练65小时,看了其他Issue( #125),感觉我的loss收敛的很慢,并且起始效果也相差很多,我不知道因为其他问题还是没有调用起预训练主干,请您看一下我的config。
再就是我的每次迭代后面的数字很大,看别人的log即便是跑7个数据集也不大,这个是不是跟batch_size有关?
ARGS:
tab: 'V1_hrnet'
dataset: 'crowdpose,lsp,mpiinf,h36m,mpii,coco'
GPUS: 0
distributed_training: False
model_version: 1
pretrain: 'imagenet'
match_preds_to_gts_for_supervision: True

master_batch_size: -1
val_batch_size: 16
batch_size: 16
nw: 4
nw_eval: 2
lr: 0.00005

fine_tune: False
fix_backbone_training_scratch: False
eval: False
supervise_global_rot: False

model_return_loss: False
collision_aware_centermap: True
collision_factor: 0.2
homogenize_pose_space: True
shuffle_crop_mode: True
shuffle_crop_ratio_2d: 0.1
shuffle_crop_ratio_3d: 0.4

merge_smpl_camera_head: False
head_block_num: 2

backbone: 'hrnet'
centermap_size: 64
centermap_conf_thresh: 0.2

model_path: /data01/wyjh/ROMP/trained_models(pretrained backboon)/pretrain_hrnet.pkl

loss_weight:
MPJPE: 200.
PAMPJPE: 360.
P_KP2D: 400.
Pose: 80.
Shape: 6.
Prior: 1.6
CenterMap: 160.

sample_prob:
h36m: 0.2
#h36m: 1
mpiinf: 0.2
coco: 0.2
lsp: 0.06
mpii: 0.14
#mpii: 1
#muco: 0.14
crowdpose: 0.2
#crowdpose: 0.2

@Arthur151
Copy link
Owner

还是建议您使用pretraining模型来减少训练时间,而且大batch size对于pretraining还是很重要的,不然真的要训很久很久的。您可以等一两个周再来看结果,估计就能下降到和使用pretraining模型训练差不多的loss了。

@Wyethjjj
Copy link
Author

Wyethjjj commented Feb 7, 2022

那您看我这样写是否可以调用起pretrain backbone:
model_path: /data01/wyjh/ROMP/trained_models(pretrained backboon)/pretrain_hrnet.pkl
或者我按照 #125 所提到的方式进行更改?

@Arthur151
Copy link
Owner

Arthur151 commented Feb 7, 2022

您把hrnet_pretrain的路径设置好了,然后自动调用backbone就会在这里加载预训练参数用于训练。

@Wyethjjj
Copy link
Author

作者您好,我想就训练时间问题再问您一点问题:
1、我调用预训练主干使用单张1080ti显卡(11g)batch-size16,24小时可以训练3、4个epoch,这是否是正常水平?
2、我想要加快训练速度,但是目前只能调用0号卡,在config中更改GPUS会报错,如文档所示,请问可以怎么解决?
V1_hrnet_muco,lsp,crowdpose,mpiinf,h36m,coco,mpii_g7.log
3、此外我看其他issue中别人的训练日志,发现一般在5个epoch中会出现一个很好的指标,在20个epoch之内会出现和最好指标差距很小的模型,那如果我调用预训练主干训练,在多少个epoch之内的模型可以被认定为是最好的?(其实就是希望减少epoch数来加快训练)。
最后在新冠肺炎爆发的日子祝您身体健康,工作顺利

@Arthur151
Copy link
Owner

1.目前训练速度确实比较慢,我在4块P40上一个batch(64)大概1.72,不太清楚在1080Ti上是什么速度。
2.您的GPUS设置错误,您log里显示您'GPUS': '7',如果想使用0-4号四个gpu训练,'GPUS': 0,1,2,3这样设置。
3.如果调用预训练主干训练,大概在2-3个epoch就能达到测试集的较优结果,但需要比较好的繁华性和稳定性,还是要尽可能训久一点。
也祝您身体健康~~

@Wyethjjj
Copy link
Author

Wyethjjj commented Mar 17, 2022

作者您好,关于继续训练我有一点疑惑,在调用之前的pkl文件时,我出现了如下提醒,我觉得是有很多模块的数据找不到,是因为我没有正确调用文件,还是因为每当有效果更好的模型产生时我手动删除效果较差的模型而导致读取之前的模型数据失败呢?或是说本来就是如此?
V1_hrnet_muco,lsp,crowdpose,mpiinf,h36m,coco,mpii_g0.log

@Arthur151
Copy link
Owner

这就是模型加载之前训练的参数失败了。pytorch会以字典的形式保存参数,格式是:
层名:参数。例如,'backbone.conv1.weight': torch.Tensor([.....])
这里加载失败大概率是层名没有对上,导致pytorch在记载之前的参数的时候,加载失败了。
您可以看一下这个函数。应该就是这里的k没找到。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants