Mixins
To extend the functionalities of our models, we use the mixin pattern. Basically, a mixin is a self-contained unit that offers a number of predefined methods that are added to the object that is mixed-in.
In classy, we have four mixins:
SavingMixin offers a utility to save and load a few samples from your dataset to be used inside classy demo.
PredictionMixin offers a method that is used at inference time, batch_predict, that your custom ClassyPLModule should always implement.
As for TaskMixin and TaskUIMixin, they handle the behaviour of a model when invoked through either classy predict interactive
or classy demo. TaskMixin handles how your model reads input from the command line (e.g., a sentence-pair classifier
will have to read from input twice, as opposed to, for example, a sequence classifier); similarly, TaskUIMixin handles
your model's rendering of its inputs and outputs in classy demo, hence through Streamlit.
By default, ClassyPLModule is defined as a pl.LightningModule mixed in with PredictionMixin and SavingMixin. Our
default task-specific models (HF<Task>PLModule) are mixed in with their task-specific bash and UI mixins
(e.g., HFTokensPLModule is ClassyModule mixed in with TokensTaskMixin and TokensTaskUIMixin).