Data intensive biology in the cloud: instrumenting ALL the things
Here's a draft PyCon '14 proposal. Comments and suggestions welcome!
Title: Data intensive biology in the cloud: instrumenting ALL the things
Description: (400 ch)
Cloud computing offers some great opportunities for science, but most cloud computing platforms are both I/O and memory limited, and hence are poor matches for data-intensive computing. After four years of research software development we are now instrumenting and benchmarking our analysis pipelines; numbers, lessons learned, and future plans will be discussed. Everything is open source, of course.
Audience: People who are interested in things.
Python level: Beginner/intermediate.
- learn a bit about I/O and big-memory performance in demanding situations;
- see performance numbers for various cloud platforms;
- hear about why some people can't use Hadoop to process large amounts of data;
- gain some insight into the sad state of open science;
The cloud provides great opportunities for a variety of important computational science challenges, including reproducible science, standardized computational workflows, comparative benchmarking, and focused optimization. It can also help be a disruptive force for the betterment of science by eliminating the need for large infrastructure investments and supporting exploratory computational science on previously challenging scales. However, most cloud computing use in science so far has focused on relatively mundane "pleasantly parallel" problems. Our lab has spent many moons addressing a large, non-parallelizable "big data/big graph" problem -- sequence assembly -- with a mixture of Python and C++, some fun new data structures and algorithms, and a lot of cloud computing. Most recently we have been working on open computational "protocols", worfklows, and pipelines for democritizing certain kinds of sequence analysis. As part of this work we are tackling issues of standardized test data sets to support comparative benchmarking, targeted optimization, reproducible science, and computational standardization in biology. In this talk I'll discuss our efforts to understand where our computational bottlenecks are, what kinds of optimization and parallelization efforts make sense financially, and how the cloud is enabling us to be usefully disruptive. As a bonus I'll talk about how the focus on pleasantly paralellizable tasks has warped everyone's brains and convinced them that engineering, not research, is really interesting.
- Defining the terms: cloud computing; data intensive; compute intensive.
2. Our data-intensive problem: sequence assembly and the big graph problem. The scale of the problem. A complete analysis protocol.
- Predicted bottlenecks, including computation and I/O.
- Actual bottlenecks, including NUMA architecture and I/O.
5. A cost-benefit analysis of various approaches, including buying more memory; striping data across multiple volumes; increasing I/O performance; focusing on software development; "pipelining" across multiple machines; theory vs practice in terms of implementation.
6. A discussion of solutions that won't work, including parallelization and GPU.
7. Making analysis "free" and using low-cost compute to analyze other people's data. Trying to be disruptive.