|
def cap_dataset(batch_size, iters, dataset_size, max_imgs_per_gpu, sample_weight, up_threshold=0.5, |
|
max_gpu=float("inf")): |
|
print(f"initial batch_size:\t{batch_size}") |
|
total = sum(dataset_size.values()) |
|
print(f"-----------------------rounded-----------------------") |
|
gpus = 1 |
|
batch_size_init = batch_size |
|
t_wise_batchsize = {} |
|
while gpus % 8 != 0 or sum(t_wise_batchsize.values()) < batch_size_init: |
|
t_wise_batchsize = {k: min(v / total * batch_size, |
|
max_imgs_per_gpu[k] * max_gpu |
|
) for k, v in dataset_size.items()} |
|
cap = {k: (v == max_imgs_per_gpu[k] * max_gpu) for k, v in t_wise_batchsize.items()} |
|
t_wise_gpuse = {k: max(1, round(v / max_imgs_per_gpu[k] - up_threshold + 0.5)) for k, v in t_wise_batchsize.items()} |
|
imgs_per_gpu = {k: round(t_wise_batchsize[k] / v) for k, v in t_wise_gpuse.items()} |
|
t_wise_batchsize = {k: round(imgs_per_gpu[k] * v) for k, v in t_wise_gpuse.items()} |
|
|
|
t_wise_epochs = {k: iters * t_wise_batchsize[k] / v for k, v in dataset_size.items()} |
|
batch_size += 1 |
|
gpus = sum(t_wise_gpuse.values()) |
|
|
|
loss_weights = {k: round(v * t_wise_batchsize[k], 7) for k, v in sample_weight.items()} |
|
print(f"{'dataset':15}" |
|
f"{'batchsize':10}\t" |
|
f"{'capped':6}\t" |
|
f"{'per_g_batch':11}(max)\t" |
|
f"{'epoch':>6}\t" |
|
f"{'loss_weights':12}\t" |
|
f"gpus\t" |
|
f"{'dataset_size':12}\t" |
|
f"{'sample_weight':13}") |
|
full_batch = sum(t_wise_batchsize.values()) |
|
for k in t_wise_batchsize.keys(): |
|
print(f"{k:15}{t_wise_batchsize[k]:3}({t_wise_batchsize[k]/full_batch:5.4})\t" |
|
f"{str(cap[k]):>6}\t" |
|
f"{imgs_per_gpu[k]:11}({max_imgs_per_gpu[k]:3})\t" |
|
f"{t_wise_epochs[k]:6.2f}\t" |
|
f"{loss_weights[k]:12}\t" |
|
f"{t_wise_gpuse[k]:4}\t" |
|
f"{dataset_size[k]:12}\t" |
|
f"{sample_weight[k]:13}") |
|
print(f"-----------------------------------------------------") |
|
t_wise_epochs_excap = {k: v for k, v in t_wise_epochs.items() if not cap[k]} |
|
print(f"{'SUM/AVG(Xcap)':15}{full_batch:9}" |
|
f"\t{'-':>16}" |
|
f"\t{'-':>6}" |
|
f"\t{sum(t_wise_epochs_excap.values())/len(t_wise_epochs_excap):6.2f}" |
|
f"\t{'-':>12}\t{gpus} ({gpus // 8} nodes)" |
|
f"\t{sum(dataset_size.values())}") |
|
print(f"====> iters: {iters}\titers per 100 epochs (excluding capped dataset): {round(100/(sum(t_wise_epochs_excap.values())/len(t_wise_epochs_excap))*iters)}") |
|
|
|
reid_w=2 |
|
pose_w=2000 |
|
parse_w=1 |
|
attr_w=.001 |
|
cap_dataset(batch_size=3200, |
|
iters=171335, |
|
dataset_size={'reid':118_063, 'dgmarket':128_309, |
|
|
|
'pose': 149_813, 'aic': 378_352, 'posetrack': 97_174, |
|
'mhp': 40_437, '3dpw': 68_663, 'penn': 34_475, 'halpe': 41_263, 'h36m': 312_187, |
|
|
|
'h36_parse': 62_668, 'LIP': 30_462, 'CIHP': 28_280, 'deepfasion': 191_961, |
|
|
|
'pa100k':90_000, 'rapv2': 67_943, |
|
'hardhc': 28_336, 'uavhuman': 16_183, 'parse27k': 27_482, 'duke': 34_183, 'market': 12_936, |
|
|
|
'CrowdHuman': 15_000, |
|
}, |
|
max_imgs_per_gpu={'reid':400, 'dgmarket':400, |
|
|
|
'pose': 168, 'aic':174, 'posetrack':168, |
|
'mhp': 168, '3dpw': 168, 'penn': 168, 'halpe': 168, 'h36m': 168, |
|
|
|
'h36_parse': 26, 'LIP': 29, 'CIHP': 29,'deepfasion': 30, |
|
|
|
'pa100k':230,'rapv2': 230, |
|
'hardhc': 230, 'uavhuman': 230, 'parse27k': 230, 'duke': 230, 'market': 230, |
|
|
|
'CrowdHuman': 1, |
|
}, |
|
sample_weight={'reid': reid_w,'dgmarket': reid_w, |
|
|
|
'pose':pose_w, 'aic':pose_w, 'posetrack':pose_w, |
|
'mhp': pose_w, '3dpw': pose_w, 'penn': pose_w, 'halpe': pose_w, 'h36m': pose_w, |
|
|
|
'h36_parse': parse_w, 'LIP': parse_w, 'CIHP': parse_w, 'deepfasion': parse_w, |
|
|
|
'pa100k':attr_w,'rapv2': attr_w, |
|
'hardhc':attr_w, 'uavhuman':attr_w, 'parse27k':attr_w, 'duke':attr_w, 'market':attr_w, |
|
|
|
'CrowdHuman': 10, |
|
}, |
|
up_threshold=0.15, |
|
max_gpu=20 |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|