[CORE] Use model prefix instead of cls
# What does this PR do?
This adresses a very particular bug found when `base_model_prefix` is specific to the instance. 
The `JukeboxPrior` are defined by their level of generation. Thus to each level, the corresponding base model prefix : `priors.0`. 
When load the checkpoints from a pretrained `JukeboxModel`, the `_load_pretrained_model` uses the `cls.base_model_prefix` while the `model.base_model_prefix` is also always available. This means that the weights will [not be properly loaded](https://github.com/huggingface/transformers/blob/main/src/transformers/modeling_utils.py#L472), but it will be silent. 
This should adresse any current and futur model loading issues where the `base_model_prefix` is modified per instance. 
_The documentation is not available anymore as the PR was closed or merged._<|||||>Hi @ArthurZucker 

For this issue and the fix in the PR, it's would be very nice if you could provide a code snippet to demonstrate what is currently wrong to justify the fix. It will also help future developers (either inside HF or external contributors) to understand it much better and faster (if they ever track back to this PR for some reason).

Thank you, looking forward for it!

<|||||>Discussed internally with @ArthurZucker. I am very much against using a "dynamic" attribute instead of the class attribute.<|||||>Yep, closing this! 
Snipper is impossible to provide as it is very specific to jukebox and an invisible bug! <|||||>Since you close the PR, I would not ask the code snippet. It's still somehow strange that it is impossible to give a code snippet. From the description, it looks like if we have a checkpoint, when loading it, we will get some weights not being loaded correctly. 

One possible way is to create a model, save it, and reload it. Then point out which weights are not loaded correctly.
I might miss many details here, and things may not be so easy. But if you are able to find the invisible bug, it's no longer invisible @ArthurZucker .

And if it is completely different thing than I imagine, just ignore me :-)<|||||>No, the weights are not loaded correctly but the error is silent. Here is a snippet (but nothing will be outputed) 

```python 
>>> from transformers import JukeboxPrior, JukeboxModel
>>> model = JukeboxModel.from_pretrained("openai/jukebox-5b-lyrics").priors[0]
>>> prior = JukeboxPrior.from_pretrained("openai/jukebox-5b-lyrics")
>>> assert model.encoder.start_token == prior.encoder.start_token
```

There will be no `missing` or `unexpected keys` but the weights will not be loaded<|||||>OK, it's silent, but you speak for it so now it's clear 💯 !