Your model expects two inputs if you consider this line
def forward(self, padded_sequences_vectors, lengths):

but in your train_loop function, you are only passing one argument
pred = model(X)

I would recommend the following changes:
In pad_collate_fn
return padded_sequences_vectors, lengths, padded_sequences_labels

in train_loop
for x,y,z in dataloader:
   pred = model(x,y)
   loss = loss_fn(pred, z)