Add final_layer_norm to OPT model
Author: thomasw21
Pull request: yes

# What does this PR do?

Fixes #17653 , #17545

OPT models have a final_layer_norm: https://github.com/facebookresearch/metaseq/blob/e0c4f6b0e4c523906ad8d561f727e3f2ac3a8e73/metaseq/models/transformer.py#L466-L477
So we update HF models + conversion script to take in account that missing layer norm.

Test on OPT-125m (`restored.pt` file from `patrickvonplaten/opt_metaseq_125m`):
```
>>> model_path="fixed_opt_125m"
>>> prompt="Hello my name is"
>>> log_probs_with_ppl(model_path, prompt)
Input torch.Size([1, 5])
Logits torch.Size([1, 5, 50272])
torch.return_types.max(
values=tensor([[0.2398, 0.2326, 0.3332, 0.9363, 0.0097]], grad_fn=<MaxBackward0>),
indices=tensor([[ 100,    6,  766,   16, 1236]]))
argmax probility: [[0.23982257 0.23258895 0.33315504 0.9362957  0.00967377]]
argmax log probability: [[-1.4278558  -1.4584825  -1.0991473  -0.06582398 -4.6383367 ]]
argmax tokens: I, name is j
cross entropy loss: 4.051314830780029
ppl: 57.47297286987305
```


## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [ ] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [ ] Did you write any new necessary tests?


## Who can review?




Comments:
_The documentation is not available anymore as the PR was closed or merged._

Thank you very much for the fix! I think that we'll have to change the generation tests a bit for the other models as well 

Great find @thomasw21 - thanks a lot for fixing it!

Think the checkpoints were then also incorrectly loaded inside the metaseq codebase - could you maybe double check that the following script gives identical results between fairseq and transformers: https://huggingface.co/patrickvonplaten/opt_metaseq_125m -> The logits should match there (maybe an incorrect configuration in the metaseq model?)

Also could you please update the slow model tests?

@thomasw21  I can update the tests and check the outputs if you want 

@patrickvonplaten from what I understood logits comparison equality test were only done in 350m? @younesbelkada 
I actually manually converted `restored.pt` from https://huggingface.co/patrickvonplaten/opt_metaseq_125m using the updated conversion script.

@ArthurZucker if you have the bandwidth, I'd appreciate it! Thanks!

@patrickvonplaten Yep I've looked at the changes with your comment, feel free to merge those : D

When releasing the patch can we merge at the same time #17437 ? The problem of NaNs for batched generation still persists with this fix, but is resolved with #17437 

BTW @patrickvonplaten do you have the expected values for the slow test? 

> BTW @patrickvonplaten do you have the expected values for the slow test?

Corrected the tests as well now

Good job @thomasw21 !