Adversarial Training model mode

I have a basic question about the Adversarial training using PyTorch. I understand that the model for adversarial example generation should be eval() as suggested by documentation. However, if we are performing adversarial training, in each epoch, we would need to generate these adversarial examples. What should be the mode here?

I am confused because Adversarial example generation should be in eval mode. However, during training, layers such as dropout and Batch Norm would behave differently. I am a bit confused about this step and any help would be really appreciated