hey @Loganathan, it’s actually now possible to do multi-label classification for some models without needing to create your own Trainer subclass 
for example, with BERT you can specify the problem_type parameter in the model config as follows:
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", problem_type="multi_label_classification")

this ensures that the loss function used in the forward pass is BCEWithLogitsLoss() which is suitable for multi-label tasks. you should then be able to use this model in a standard Trainer 
if your model is not in one of the types listed under problem_type in the config here 46 then you can either subclass the Trainer as i discussed earlier in the thread (using a standard ModelNameForSequenceClassification class) or subclass the model and override the loss calculation the forward pass
hth!