Hey all!
let's say you have a lot data-sciency models in production (that for example forecast stuff) where each model relies on a bunch of hard-coded config parameters that you've found through some e.g. hyperparameter tuning etc. which you dont wanna rerun every time the production model runs. I end up hard-coding these values either directly in the production model code or put them in an enum/json somewhere.
However, I wish I had some "config parameter management tool" with a pretty GUI and API that allowed me to store the parameters in a central database which a few features:<p>- allow for programmatically writing new parameters<p>- allow the production models to programmatically query the parameters they're supposed to use<p>- do versioning on the parameter sets, as it's useful to keep the history of parameters for backtesting/reporting<p>- have some logic of structuring the parameter sets thrugh grouping/tagging and/or a hierarchical model so all sets are not just one big mess<p>- finally allow of course for different parameter set structures, as different models have different parameters<p>- ideally a GUI<p>I didn't manage to find anything like it online, are you aware of anything? How are you dealing with that topic if it's an issue for you as well?<p>thanks a lot in advance!
It's often better for provenance to keep the parameters in git with the code. Doing something like you want requires changing the code to query, adds a runtime dependency, and generally adds complications. Think about a flip side, in code reviews and easily seeing what parameters are changing with this deployment.<p>You might look at a couchbase or couchdb based solution. They have versioning and rudimentary UIs. You might also look into CUE(lang) as a better format.<p>Any solution will depend on how your code is organized in repositories. Maybe you have some system that collects all the parameters and presents them only for informational purposes, rather than having prod query a dynamic database for configuration.<p>Thinking about it, Kubernetes offers most of your desired solution...
I would use AWS Parameter Store but I guess it fails the "open" part. But it's great for storing settings for different environments and then apps can simply pick them up.
I would do this in Ansible.<p>I can't help you with the pretty GUI part, that's probably going to have to be written custom, no matter what you pick.