model = DistributedDataParallel(model,
                                    device_ids=[local_rank],
                                    output_device=local_rank)

grad_scaler = torch.cuda.amp.GradScaler()

evaluator = create_detection_evaluator(args.model,
                                       model,
                                       device,
                                       coco_api_val_dataset,
                                       logging=local_rank == 0)

trainer = create_detection_trainer(args.model,
                                   model,
                                   optimizer,
                                   device,
                                   val_loader,
                                   evaluator,
                                   grad_scaler=grad_scaler,
                                   logging=local_rank == 0)

trainer.add_event_handler(
    Events.ITERATION_COMPLETED,
    scheduler,
)

if local_rank == 0:
    dirname = strftime("%d-%m-%Y_%Hh%Mm%Ss", localtime())
    dirname = "checkpoints/" + args.dataset + "/" + args.feature_extractor + args.model + "/{}".format(
        dirname)

    checkpointer = ModelCheckpoint(
                       device=device)

if args.distributed:
    model = convert_syncbn_model(model)
    model = DistributedDataParallel(model)

evaluator = create_detection_evaluator(args.model,
                                       model,
                                       device,
                                       coco_api_val_dataset,
                                       logging=local_rank == 0)

trainer = create_detection_trainer(args.model,
                                   model,
                                   optimizer,
                                   device,
                                   val_ds,
                                   evaluator,
                                   loss_fn=loss_fn,
                                   logging=local_rank == 0)

trainer.add_event_handler(
    Events.ITERATION_COMPLETED,
    scheduler,
)

if local_rank == 0:
    dirname = strftime("%d-%m-%Y_%Hh%Mm%Ss", localtime())
    dirname = "checkpoints/" + args.dataset + "/" + args.feature_extractor + args.model + "/{}".format(
        dirname)

    checkpointer = ModelCheckpoint(