liveBook · Manning

What you will learn in Designing Deep Learning Systems: A guide for software engineers

A software engineer's guide

by Kit Pang Szeto,Chi Wang

Chapter by chapter

Chapter 1: An introduction to deep learning systems

1.1 The deep learning development cycle · 1.1.1 Phases in the deep learning product development cycle · 1.1.2 Roles in the development cycle · 1.1.3 Deep learning development cycle walk-through · 1.1.4 Scaling project development · 1.2 Deep learning system design overview · 1.2.1 Reference system architecture · 1.2.2 Key components · 1.2.3 Key user scenarios · 1.2.4 Derive your own design · 1.2.5 Building components on top of Kubernetes · 1.3 Building a deep learning system vs. developing a model · 1.4 Summary

What you learn in chapter 1 →

Chapter 2: Dataset management service

2.1 Understanding dataset management service · 2.1.1 Why deep learning systems need dataset management · 2.1.2 Dataset management design principles · 2.1.3 The paradoxical character of datasets · 2.2 Touring a sample dataset management service · 2.2.1 Playing with the sample service · 2.2.2 Users, user scenarios, and the big picture · 2.2.3 Data ingestion API · 2.2.4 Training dataset fetching API · 2.2.5 Internal dataset storage · 2.2.6 Data schemas · 2.2.7 Adding new dataset type (IMAGE_CLASS) · 2.2.8 Service design recap · 2.3 Open source approaches · 2.3.1 Delta Lake and Petastorm with Apache Spark family · 2.3.2 Pachyderm with cloud object storage · 2.4 Summary

What you learn in chapter 2 →

Chapter 3: Model training service

3.1 Model training service: Design overview · 3.1.1 Why use a service for model training? · 3.1.2 Training service design principles · 3.2 Deep learning training code pattern · 3.2.1 Model training workflow · 3.2.2 Dockerize model training code as a black box · 3.3 A sample model training service · 3.3.1 Play with the service · 3.3.2 Service design overview · 3.3.3 Training service API · 3.3.4 Launching a new training job · 3.3.5 Updating and fetching job status · 3.3.6 The intent classification model training code · 3.3.7 Training job management · 3.3.8 Troubleshooting metrics · 3.3.9 Supporting new algorithm or new version · 3.4 Kubeflow training operators: An open source approach · 3.4.1 Kubeflow training operators · 3.4.2 Kubernetes operator/controller pattern · 3.4.3 Kubeflow training operator design · 3.4.4 How to use Kubeflow training operators · 3.4.5 How to integrate these operators into an existing system · 3.5 When to use the public cloud · 3.5.1 When to use a public cloud solution · 3.5.2 When to build your own training service · 3.6 Summary

What you learn in chapter 3 →

Chapter 4: Distributed training

4.1 Types of distributed training methods · 4.2 Data parallelism · 4.2.1 Understanding data parallelism · 4.2.2 Multiworker training challenges · 4.2.3 Writing distributed training (data parallelism) code for different training frameworks · 4.2.4 Engineering effort in data parallel–distributed training · 4.3 A sample service supporting data parallel–distributed training · 4.3.1 Service overview · 4.3.2 Playing with the service · 4.3.3 Launching training jobs · 4.3.4 Updating and fetching the job status · 4.3.5 Converting the training code to run distributedly · 4.3.6 Improvements · 4.4 Training large models that can’t load on one GPU · 4.4.1 Traditional methods: Memory saving · 4.4.2 Pipeline model parallelism · 4.4.3 How software engineers can support pipeline parallelism · 4.5 Summary

What you learn in chapter 4 →

Chapter 5: Hyperparameter optimization service

5.1 Understanding hyperparameters · 5.1.1 What is a hyperparameter? · 5.1.2 Why are hyperparameters important? · 5.2 Understanding hyperparameter optimization · 5.2.1 What is HPO? · 5.2.2 Popular HPO algorithms · 5.2.3 Common automatic HPO approaches · 5.3 Designing an HPO service · 5.3.1 HPO design principles · 5.3.2 A general HPO service design · 5.4 Open source HPO libraries · 5.4.1 Hyperopt · 5.4.2 Optuna · 5.4.3 Ray Tune · 5.4.4 Next steps · 5.5 Summary

What you learn in chapter 5 →

Chapter 6: Model serving design

6.1 Explaining model serving · 6.1.1 What is a machine learning model? · 6.1.2 Model prediction and inference · 6.1.3 What is model serving? · 6.1.4 Model serving challenges · 6.1.5 Model serving terminology · 6.2 Common model serving strategies · 6.2.1 Direct model embedding · 6.2.2 Model service · 6.2.3 Model server · 6.3 Designing a prediction service · 6.3.1 Single model application · 6.3.2 Multitenant application · 6.3.3 Supporting multiple applications in one system · 6.3.4 Common prediction service requirements · 6.4 Summary

What you learn in chapter 6 →

Chapter 7: Model serving in practice

7.1 A model service sample · 7.1.1 Play with the service · 7.1.2 Service design · 7.1.3 The frontend service · 7.1.4 Intent classification predictor · 7.1.5 Model eviction · 7.2 TorchServe model server sample · 7.2.1 Playing with the service · 7.2.2 Service design · 7.2.3 The frontend service · 7.2.4 TorchServe backend · 7.2.5 TorchServe API · 7.2.6 TorchServe model files · 7.2.7 Scaling up in Kubernetes · 7.3 Model server vs. model service · 7.4 Touring open source model serving tools · 7.4.1 TensorFlow Serving · 7.4.2 TorchServe · 7.4.3 Triton Inference Server · 7.4.4 KServe and other tools · 7.4.5 Integrating a serving tool into an existing serving system · 7.5 Releasing models · 7.5.1 Registering a model · 7.5.2 Loading an arbitrary version of a model in real time with a prediction service · 7.5.3 Releasing the model by updating the default model version · 7.6 Postproduction model monitoring · 7.6.1 Metric collection and quality gate · 7.6.2 Metrics to collect · 7.7 Summary

What you learn in chapter 7 →

Chapter 8: Metadata and artifact store

8.1 Introducing artifacts · 8.2 Metadata in a deep learning context · 8.2.1 Common metadata categories · 8.2.2 Why manage metadata? · 8.3 Designing a metadata and artifacts store · 8.3.1 Design principles · 8.3.2 A general metadata and artifact store design proposal · 8.4 Open source solutions · 8.4.1 ML Metadata · 8.4.2 MLflow · 8.4.3 MLflow vs. MLMD · 8.5 Summary

What you learn in chapter 8 →

Chapter 9: Workflow orchestration

9.1 Introducing workflow orchestration · 9.1.1 What is workflow? · 9.1.2 What is workflow orchestration? · 9.1.3 The challenges for using workflow orchestration in deep learning · 9.2 Designing a workflow orchestration system · 9.2.1 User scenarios · 9.2.2 A general orchestration system design · 9.2.3 Workflow orchestration design principles · 9.3 Touring open source workflow orchestration systems · 9.3.1 Airflow · 9.3.2 Argo Workflows · 9.3.3 Metaflow · 9.3.4 When to use · 9.4 Summary

What you learn in chapter 9 →

Chapter 10: Path to production

10.1 Preparing for productionization · 10.1.1 Research · 10.1.2 Prototyping · 10.1.3 Key takeaways · 10.2 Model productionization · 10.2.1 Code componentization · 10.2.2 Code packaging · 10.2.3 Code registration · 10.2.4 Training workflow setup · 10.2.5 Model inferences · 10.2.6 Product integration · 10.3 Model deployment strategies · 10.3.1 Canary deployment · 10.3.2 Blue-green deployment · 10.3.3 Multi-armed bandit deployment · 10.4 Summary

What you learn in chapter 10 →

Concepts explained in this book

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.