Machine Learning Systems is now in print!
Some reasons why you should read it
My book, Machine Learning Systems, was recently released in print. For a while, the book was in open development via Manning’s Early Access Program (MEAP). The printing of the paper version of the book is an exciting way to close out this phase of collecting feedback and incrementally improving the examples.
This book takes a different tack on introducing machine learning, so I wanted to take this opportunity to call out some of the unique features of the book, chiefly to help prospective readers decide if this is the right book for them.
A focus on whole machine learning systems
So many academic introductions to machine learning strike me as very imbalanced and incomplete. This books focuses on all of the parts of a machine learning system, not just the model learning algorithms. What this means for readers is a lot more time spent across the whole stack, building all sorts of components that might not have occurred to them as part of a machine learning system.
Design patterns for machine learning components
For most of my career in ML engineering, I have felt that the field had too few commonly-used frameworks nor well-documented design patterns. Sean Owen did some pioneering work in this area, with the Oryx project, which he discusses in the foreword to the book. Reference architectures and frameworks are really important ways of capturing tribal knowledge and synthesizing it into its most general form. In Machine Learning Systems, I tried to capture as many of the design patterns and programming techniques I could that I had personal knowledge of being useful to developers building distributed systems for machine learning.
Real world problem contexts
Every chapter introduces a new team, solving a new problem. While these examples are fictionalized they are strongly inspired by real products with real teams building real systems to support them. I’ve had to simplify a great deal to get some of these products into single book chapters, but you’ll never see examples without business context. The iris data set and its friends are nowhere to be found. Instead, you’ll find teams building taxi apps, microblogging sites, dating apps, and more recognizable products.
Functional programming techniques
The language of the book is primarily Scala. There are lots of reasons for that. Scala has a great implementation of the actor model, Akka, which helps a great deal in talking about concepts like message passing and supervision. Similarly, it has a powerful distributed data processing framework, Spark, which make building data pipelines a joy. Spark also comes with a very capable machine learning library, MLlib, which allows readers access to highly scalable reference implementations of various bits of machine learning functionality. All of this is knitted together by a coherent programming model that privileges immutable data, first class functions, and the power of a rich type system to express constraints in computation.
Data science and engineering concerns
This book is really meant to serve two audiences. The first is that group of people coming out of a more analytical or research background who might have more familiarity with the statistics and modeling topics in the book. The second is those people who have more of a background in software engineering but haven’t gone deep into the topic of machine learning. I took great pains to support both reader personas in their journey through building machine learning systems. Whether you’re an accomplished NLP researcher or a hard-core Haskell type, you should find the material you need to apply your existing skills to the challenges of building machine learning systems.
Scalability as a constant concern
There are a lot of academic and introductory texts around how to work with data that fits on your laptop. This book is concerned chiefly with what happens when that ceases to be true. All implementations are assumed to need to scale up to multiple servers communicating and cooperating in some fashion. The reactive manifesto was the impetus for the blog post that kicked off the book, and the principles of reactive systems design are used throughout to talk about how to build machine learning systems that can handle scaling up to whatever level they need to.
Manning has a well-earned reputation for putting out very high quality books worth having on the shelf and referencing for years. I think that a big part of that is the intense focus they put on having visually rich presentations of the material in their books. This typically spans things like code explanations and systems diagrams. In Machine Learning Systems, I took this a bit further than most.
The book is full of cartoon animals demonstrating the material in the book, serving as characters in stories about the business context, highlighting core concepts, and just reacting to the events in the development of the system. The goal is to make your memories of building these system components as vivid as they would be if you were a lemur working a feature engineering pipeline.