You don’t want it for critic_loss.backward()! You want it for grad(outputs=disc_interpolates, inputs=interpolates, grad_outputs=torch.ones_like(disc_interpolates), create_graph=True)[0] only.
But doing gradient of gradient will require some extra memory. So this is expected to need more than without the create_graph. reducing the batch_size is the right way to go here.