  A major driver behind the success of modern machine learning algorithms has
been their ability to process ever-larger amounts of data. As a result, the use
of distributed systems in both research and production has become increasingly
prevalent as a means to scale to this growing data. At the same time, however,
distributing the learning process can drastically complicate the implementation
of even simple algorithms. This is especially problematic as many machine
learning practitioners are not well-versed in the design of distributed
systems, let alone those that have complicated communication topologies. In
this work we introduce Launchpad, a programming model that simplifies the
process of defining and launching distributed systems that is specifically
tailored towards a machine learning audience. We describe our framework, its
design philosophy and implementation, and give a number of examples of common
learning algorithms whose designs are greatly simplified by this approach.
