Best Practice: How to enhance already existing models with lightning?
❓ Questions and Help
I'd like to enhance an already existing model (MaskRCNN) with lightning capabilities. Therefore, I'm wondering what the best practice might be.
From what I've seen, there are three possibilities:

Copy all necessary code and use pl.LightningModule instead of nn.Module as base class.
Create a new class and have the MaskRCNN model as an attribute (e.g. self.model).
Use multi-inheritance to combine pl.LightningModule and MaskRCNN:
class LightningMaskRCNN(MaskRCNN, pl.LightningModule)
    ...



IMHO, 1 is the solution closest to the documentation, but obviously no good solution for the given use-case, since it uses duplicated code. 2 and 3 are both possible (if I didn't overlook something) but I can't decide which one to use (although I tend to 3), so I was wondering if there is a best practice for these use-cases.
Thanks!