Chapter 9. Delivering

 

This chapter covers

  • Building Scala code using sbt
  • Evaluating applications for deployment
  • Strategies for deployments

Now that you’ve seen how all the components of a machine learning system work together, it’s time to think about some system-level challenges. In this chapter, we’ll explore how to deliver a machine learning system for use by the ultimate customers of the system. The approach we’ll use for this challenge is called continuous delivery. The ideas behind continuous delivery were developed outside of a machine learning context, but as you’ll see, they’re entirely applicable to the challenge of making machine learning reactive.

Continuous delivery practitioners seek to rapidly deliver new units of functionality through regular cycles that build and deploy new code. Teams that take on this approach are often trying to move fast while keeping users happy. The techniques of continuous delivery provide tactics that allow teams to fulfill these competing aims. Given all the ways you’ve seen for machine learning systems to fail, I hope it’s clear that maintaining consistent behavior in these systems is tough stuff. Uncertainty is pervasive and intrinsic in machine learning systems.

9.1. Shipping fruit

9.2. Building and packaging

9.3. Build pipelines

9.4. Evaluating models

9.5. Deploying

9.6. Reactivities

Summary