Should I build a different model for each subset
Build one model including the class variable as a categorical feature. 

Since it is a high cardinality feature, there are different techniques that you can use:


One hot encoding (would create around 300 variables based on different classes)
Label encoding (would be a single variable but will assign weights to different classes - not ideal)
Hashing trick - use a hashing function to reduce the number of features
Embeddings
Cluster the different classes together