4 ms·
I agree that there should be open source solutions and the core of Dotscience is a project called Dotmesh (https://github.com/dotmesh-io/dotmesh https://github.
by lewq 7y ago
I agree that there should be open source solutions and the core of Dotscience is a project called Dotmesh (https://github.com/dotmesh-io/dotmesh https://github.com/dotmesh-io/dotmesh) which is an open source wrapper around ZFS. You can see more info about how this works and integrates with Dotscience at https://dotscience.com/technology/ https://dotscience.com/technology/.
However I don't quite understand your point that "data versioning is not sufficient" because "I cannot roll back my datasets to a previous version". Surely data versioning would _solve_ the ability to roll your datasets back to a previous version? Or, are you not convinced of the need for reproducibility in data science? My rationale for this is the following: if you are building ML models that are going to make important decisions in production, it's imperative for debuggability that you're able to re-run that model training run later. If a model makes a bad decision in production, you need to know what dataset it was trained on, which means needing to be able to retrieve that dataset. That's because you can't isolate and fix the problem without being able to re-run it.
Yes, data changes and marches forwards, and that's why you should retrain models. But you also need to be able to go backwards to do robust ML. My 2 cents.
I also wrote a DevOps for ML Manifesto: https://dotscience.com/manifesto/ https://dotscience.com/manifesto/
To summarize:
1. All models must be reproducible by someone else 6 months later.
2. All models must be accountable, that means you must be able to justify the basis on which they made their decision, in particular you need to know which data version was used and where it came from (provenance).
3. Model development must be collaborative. That means I need to be able fork a copy of your project and maintain all the metadata about which runs you did, with their respective provenance history.
4. Models must have a continuous lifecycle. You're not done when you ship - because models are about finding patterns in data, and the world is constantly changing, you need statistical monitoring and retraining to compensate for model drift.
Do you disagree? Did I miss anything? Let me know your thoughts!
- woeirua 7y agoNo, data versioning typically does not solve this problem unless you are completely isolated from everything else. Consider the case where you're pulling data from a database to use for training a model. Typically DS teams have no control over the backup schedule for that database, how long those backups are maintained, etc. For large systems, if you try to restore a backup 3 or 6 months down the road, you may only have a weekly snapshot (if even that frequent) to use. Certainly that won't give you the same data that you originally had. Admittedly, a team that was strongly focused on reproducibility could try really hard to ensure that their queries are reproducible, but if you want to be productive you typically delegate most of that work to other libraries which may or may not generate reproducible queries. It seems to me that people working on really large-scale problems always have these external dependencies that they just can't control and subsequently data versioning only goes so far when you cannot make a full-copy of the data for each version. I agree with you in general that we should strive for reproducibility.
- lewq 7y agoHmm interesting, what if you had database snapshots that could be driven by ML workflows? The primitive behind Dotscience can support lightweight database snapshots quite easily...
- lewq 7y agoTo be clear, that primitive is dotmesh and ZFS - see https://dotscience.com/technology/ https://dotscience.com/technology/
- deleted 7y ago[deleted]