The error “NoneType object is not callable” seems to suggest that generator_model somehow becomes None? Can you verify that?
Another thing that stands out is the following:
generator_model = torch.nn.parallel.DistributedDataParallel(generator_model,device_ids=[args.local_rank])
discriminator_1 = torch.nn.parallel.DistributedDataParallel(discriminator_1,device_ids=[args.local_rank])
discriminator_2 = torch.nn.parallel.DistributedDataParallel(discriminator_2,device_ids=[args.local_rank])
discriminator_3 = torch.nn.parallel.DistributedDataParallel(discriminator_3,device_ids=[args.local_rank])

Any reason for creating 4 DDP instances in one process?
To help us investigate, it will be helpful if you could share a self-contained minimal reproduce-able example.
BTW, could you please add a “distributed” tag to questions related to distributed training so that people working on that can get back to you promptly?