News for hackers. Stuff that matters.
Re:Data Science Workflow: Overview and Challenges by paulgb on Sunday May 14, 2017 @05:09PM (#14337594)
Nearly four years after this was written, there is still no satisfying solution to providence tracking in a data science workflow. The few solutions that do exist tend to be too opinionated to catch on.

I've gotten a lot of mileage out of hacking some provenance tracking into a plain-old-Makefile workflow, but it's hard to balance human-readable makefiles and the amount of hackery it takes.

Re:Data Science Workflow: Overview and Challenges by earino on Sunday May 14, 2017 @08:38PM (#14338329)
I would love to know what you think about Domino Data Lab's solution. I feel pretty strongly about provenance tracking, especially being able to go: artifact <-> experiment <-> code / data <-> environment, and our solution implements those linkages.

Here's an older video describing it. https://www.dominodatalab.com/resources/data-science-experim... We now track things like git checkouts and dataset versions too.

Re:Data Science Workflow: Overview and Challenges by paulgb on Monday May 15, 2017 @08:58AM (#14341178)
It looks like the right approach for building a platform from scratch, the problem is that I am working with an existing in-house platform. Makefiles are so un-opinionated that they fit in quite nicely, all I really want is a more modern Make.
Re:Data Science Workflow: Overview and Challenges by mbreese on Monday May 15, 2017 @01:27AM (#14339353)
I've tried a few other techniques, but there is something that is really hard to beat about the plain Makefile. Eventually, it can become unwieldy, but for small-medium projects, it's a life saver. Combine that with git, and you've got a pretty robust system. The only real downside is that when you have very large initial inputs, it isn't practical to store those in the same repository.

That is my goto combinations for bioinformatics workflows that don't need to run on a cluster. (A Makefile variant of mine is my go-to for clusters). I've experimented with Docker workflows, which while in theory are nice, you'll always require some sort of organizing script to document the analysis. (Docker is still nice for capturing program versioning/configuration though!)

Re:Data Science Workflow: Overview and Challenges by paulgb on Monday May 15, 2017 @08:26AM (#14341005)
I like the Cookiecutter Data Science approach of keeping data out of the repo: https://drivendata.github.io/cookiecutter-data-science/

I usually work with data on an internal cloud anyway, so instead of storing data on my local disk I just keep text files that contain the URI of the cloud resource. I treat the cloud resources as immutable once created so that the "pointer" file's modified time is consistent with the modified time of the data on the cloud.

Re:Data Science Workflow: Overview and Challenges by in9 on Monday May 15, 2017 @08:52AM (#14341141)
I really like their approach, but their template is too opinionated towards python + makefiles. At my company we use mixes of R, python and Scala, together with airflow. We have been toying with our own templates, and should release them eventually
Re:Data Science Workflow: Overview and Challenges by paulgb on Monday May 15, 2017 @09:00AM (#14341187)
Yes, I actually only use Python for notebooks, so I mostly ignore the Python specific parts. I think their data/ directory structure (along with keeping it out of the repo) is a sane approach though.

(I don't actually use their template, I just use the directory layout as guidance)

Re:Data Science Workflow: Overview and Challenges by cryptarch on Monday May 15, 2017 @06:02AM (#14340382)
You could use Git-LFS for managing huge data blobs with Git?
Re:Data Science Workflow: Overview and Challenges by chubot on Sunday May 14, 2017 @08:02PM (#14338214)
Yeah I tend to be pretty meticulous about this too, but it takes a large amount of effort and there's no incentive for most people to do it unfortunately.

I've been writing Makefiles too, but I don't feel like I can explain with a straight face to others that they should do it too...

Re:Data Science Workflow: Overview and Challenges by dwhitena on Monday May 15, 2017 @12:36PM (#14342927)
I will also throw in my (biased, as I work on the project) suggestion to take a look at Pachyderm (http://pachyderm.io/). It is open source, language agnostic, and distributed. Plus it automatically tracks the provenance of all of your data pipelines, regardless of language or parallelism over your data.

Basically you set up data pipelines, where the input/output of each stage is versioned (like "git for data"). That way you have versioned sets of your data (e.g., training data), but you also can know things like exactly what model was used to produce which result, what data was used to train that particular model, what transformations occurred on that training set, etc.

Things like Airflow and Luigi are, no doubt, useful for data pipelining and some workflows (depending on what language you are working with). However, by combining pipelining and data versioning in a unified way, Pachyderm naturally lets you handle provenance of complicated pipelines, have exact reproducibility, and even do interesting things like incremental processing.

Re:Data Science Workflow: Overview and Challenges by jaz46 on Sunday May 14, 2017 @08:40PM (#14338338)
You should also check out Pachyderm, github.com/pachyderm/pachyderm. Pachyderm builds provenance tracking directly into your data so every results has provenance through every bit of data and code that was used to create it.
Re:Data Science Workflow: Overview and Challenges by nl on Monday May 15, 2017 @03:19AM (#14339775)
Luigi works pretty well for workflow and versioning, if not complete provenance.
Re:Data Science Workflow: Overview and Challenges by samuell on Monday May 15, 2017 @04:38AM (#14340055)
SciLuigi adds a simple level of audit logging to Luigi [1] (See the AuditTrailHelpers mixin in https://github.com/pharmbio/sciluigi/blob/master/sciluigi/au... for details), together with an API that makes it much easier to work do changes to the workflow dependency graph, when you're in development/exploratory phase.

Personally moved to improve on the ideas in SciLuigi, but replacing Luigi with Go's concurrency primitives, in SciPipe [2].

In SciPipe, an accompanying ".audit.json" file, containing the full history of commands and parameters used to create every single output file of the workflow (even intermediate ones), to help keep track of how each file was produced.

Among lightweight solutions, the popular ones these days seem to be NextFlow [3], Snakemake [4], BPipe [5] and others. You'd really have to check out the "awesome pipelines" [6] list, to get any kind of overview.

When more infrastructure setup is feasible, I think PachyDerm [7] (mentioned elsewhere in the thread) looks really powerful with its "Git for data" approach. Something I'd wish to use as an overarching solution within which to run my SciPipe workflows.

[1] https://github.com/pharmbio/sciluigi [2] http://scipipe.org [3] http://nextflow.io [4] https://bitbucket.org/snakemake/snakemake/wiki/Home [5] http://bpipe.org [6] https://github.com/pditommaso/awesome-pipeline [7] http://pachyderm.io

Re:Data Science Workflow: Overview and Challenges by paulgb on Monday May 15, 2017 @08:16AM (#14340950)
Luigi doesn't support incremental builds, does it? I think that was my main contention the last time I looked into it.
Re:Data Science Workflow: Overview and Challenges by nl on Monday May 15, 2017 @11:37AM (#14342386)
What do you mean by incremental builds?

It certainly lets you have some features pre-built and it will check for them and use them.