Alright, I have printed this and the output seems fine(all tensors are valid).
    for param in model.parameters():
      print("param.data",torch.isfinite(param.data).all())
      print("param.grad.data",torch.isfinite(param.grad.data).all(),"\n")

Please tell me if you mean to see something else.
After optimization step

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

param.data tensor(True, device='cuda:0')
param.grad.data tensor(True, device='cuda:0') 

loss is tensor(97.8701, device='cuda:0', grad_fn=<NegBackward>)
Warning: Traceback of forward call that caused the error:
  File "main.py", line 476, in <module>
    train_loss = train(model, train_iterator, optimizer, criterion, CLIP)
  File "main.py", line 383, in train
    output = model(src, trg)
  File "/home/shreyansh/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "main.py", line 348, in forward
    output = self.decoder(trg, hidden, encoder_outputs)
  File "/home/shreyansh/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "main.py", line 310, in forward
    probabilities = self.stable_softmax(prediction)
  File "main.py", line 251, in stable_softmax
    numerator = torch.exp(z)
 (print_stack at /pytorch/torch/csrc/autograd/python_anomaly_mode.cpp:57)
Traceback (most recent call last):
  File "main.py", line 476, in <module>
    train_loss = train(model, train_iterator, optimizer, criterion, CLIP)
  File "main.py", line 391, in train
    loss.backward()
  File "/home/shreyansh/anaconda3/lib/python3.7/site-packages/torch/tensor.py", line 195, in backward
    torch.autograd.backward(self, gradient, retain_graph, create_graph)
  File "/home/shreyansh/anaconda3/lib/python3.7/site-packages/torch/autograd/__init__.py", line 99, in backward
    allow_unreachable=True)  # allow_unreachable flag
RuntimeError: Function 'ExpBackward' returned nan values in its 0th output.