Models in the transformers library itself generally follow the convention that they accept a config object
in their __init__ method, and then pass the whole config to sub-layers in the model, rather than breaking the 
config object into multiple arguments that are all passed individually to sub-layers. Writing your model in this 
style results in simpler code with a clear "source of truth" for any hyperparameters, and also makes it easier
to reuse code from other models in transformers.