So I have a table that stores ML model metadata. I have a table that holds my model. I need to also include hyper parameter information (epochs, batch_size, weight_decay, classes etc.). I don't want to include this in my following model table as in some cases they might be NULL and wouldn't be generic enough. For example, what happens in 2 months when we need to add another hyper parameter?
A model can have many hyper parameters. This would lead me to design the relations to be a many to many relationship.
The issue is that they can be different types. epochs (int), batch_size (int), weight_decay (float), classes (string).
A(model, relative_model_path), B(model_fk, hyper_parameter_fk, value) C(hyper_parameter)
So for example
A --- modelA, /models/modelA.h5 modelB, /models/modelB.h5 B --- modelA, epochs, 5 modelA, weight_decay, .1 modelA, classes, "my_model" modelB, batch_size, 2 modelB, classes, "modelB_model" C --- epochs weight_decay classes learning_rate batch_size
value column would be holding an int, string, and float in my example, which isn't good. I feel like I'm running into the
EAV – Entity-Attribute-Value anti-pattern as well, but I'm not quite sure how to design around this.