

In our opinion, the library's code is not just a means to provide a product, e.g. the ability to use BERT for
inference, but also as the very product that we want to improve. Hence, when adding a model, the user is not only the
person who will use your model, but also everybody who will read, try to understand, and possibly tweak your code.
With this in mind, let's go a bit deeper into the general library design.
Overview of models
To successfully add a model, it is important to understand the interaction between your model and its config,
[PreTrainedModel], and [PretrainedConfig]. For exemplary purposes, we will
call the model to be added to 🤗 Transformers BrandNewBert.
Let's take a look: