Reproducibility is the basis of scientific method.
Building machine learning solutions without reproducibility is like programming without version control. In addition to that, you need to keep track of the training data and experiment results.
... one of the places I interviewed at just had a wall of post-it notes, one for each file in the tree, and coders would take them down when they were modifying files, and return them when they were done!
Benefits of reproducible machine learning:
- You can build your own model again from scratch with controlled changes.
- You can build on top of your colleague's work and via versa.
- You can share your model to the scientific community and use models from papers.
- You can share your model as open-source and use models made by somebody online.
- You can share your model with your clients.
- If key data scientist leaves, the company can still work on the model.
Requirements to reproduce a machine learning model:
- Recording each step it takes to build the model.
- Recording what raw data and which version was used.
- Recording what pre-processing was done for the raw data.
- Recording system-level dependencies such as OS and GPU drivers.
- Recording code-level dependencies such as NumPy and TensorFlow versions.
- Recording the actual code that was used for each step.
Requirements for machine learning teamwork:
- Sharing what experiments has been tried e.g. new features or hyperparameters.
- Sharing code changes made.
- Sharing what other team members are currently working on.
Main objection to reproducibility is how much extra process it introduces. If the workflow becomes a lot more complex, data scientists won't use the service/tool.