设计深度学习系统

设计深度学习系统

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书主要从软件开发者的角度探讨如何构建和设计深度学习系统。

内容简介

作者首先描述一个典型的深度学习系统的整体,包括其主要组件以及它们之间的连接方式,然后在各个单独的章节中深入探讨这些主要组件。对于具体介绍的章节,会在开始时讨论需求,接着介绍设计原则和示例服务/代码,并评估开源解决方案。

通过阅读本书,读者将能够了解深度学习系统的工作原理,以及如何开发每个组件。本书的主要读者对象是想要从事深度学习平台工作或将一些人工智能功能集成到产品中的软件工程师。

作者简介

作者王迟,Salesforce Einstein团队的首席软件开发工程师,负责为数百万Salesforce客户构建深度学习平台。此前,他曾在微软必应和Azure工作,负责构建大规模分布式系统。他目前已申请了6项专利,其中大部分涉及深度学习系统。

章节目录

版权信息

THE TRANSLATOR'S WORDS 译者序

PREFACE 序

PREFACE 前言

深度学习系统架构参考

CHAPTER 1 第1章 深度学习系统介绍

1.1 深度学习开发周期

1.1.1 深度学习产品开发周期的阶段

1.1.2 开发周期中的角色

1.1.3 深度学习开发周期实例演练

1.1.4 项目开发的规模化

1.2 深度学习系统设计概述

1.2.1 参考系统架构

1.2.2 关键组件

1.2.3 关键用户场景

1.2.4 定制你自己的设计

1.2.5 在Kubernetes上构建组件

1.3 构建深度学习系统与开发模型之间的区别

总结

CHAPTER 2 第2章 数据集管理服务

2.1 理解数据集管理服务

2.1.1 为什么深度学习系统需要数据集管理

2.1.2 数据集管理设计原则

2.1.3 数据集的悖论特性

2.2 浏览一个示例数据集管理服务

2.2.1 与示例服务互动

2.2.2 用户、用户场景和整体架构

2.2.3 数据摄取API

2.2.4 训练数据集获取API

2.2.5 内部数据集存储

2.2.6 数据模式

2.2.7 添加新的数据集类型(IMAGE_CLASS)

2.2.8 服务设计回顾

2.3 开源方法

2.3.1 Delta Lake和Apache Spark家族的Petastorm

2.3.2 基于云对象存储的Pachyderm

总结

CHAPTER 3 第3章 模型训练服务

3.1 模型训练服务:设计概述

3.1.1 为什么要使用模型训练服务

3.1.2 训练服务设计原则

3.2 深度学习训练代码模式

3.2.1 模型训练工作流

3.2.2 将模型训练代码Docker化为黑盒

3.3 一个示例模型训练服务

3.3.1 与服务进行交互

3.3.2 服务设计概述

3.3.3 训练服务API

3.3.4 启动新的训练作业

3.3.5 更新和获取作业状态

3.3.6 意图分类模型训练代码

3.3.7 训练作业管理

3.3.8 故障排除指标

3.3.9 支持新的算法或新版本

3.4 Kubeflow训练算子:开源方法

3.4.1 Kubeflow训练算子

3.4.2 Kubernetes算子/控制器模式

3.4.3 Kubeflow训练算子设计

3.4.4 如何使用Kubeflow训练算子

3.4.5 如何将这些算子集成到现有系统中

3.5 何时使用公有云

3.5.1 何时使用公有云解决方案

3.5.2 何时构建自己的训练服务

总结

CHAPTER 4 第4章 分布式训练

4.1 分布式训练方法的类型

4.2 数据并行

4.2.1 理解数据并行

4.2.2 多工作节点训练挑战

4.2.3 不同训练框架的分布式训练(数据并行)代码编写

4.2.4 数据并行-分布式训练中的工程化努力

4.3 支持数据并行-分布式训练的示例服务

4.3.1 服务概述

4.3.2 与服务进行交互

4.3.3 启动训练作业

4.3.4 更新和获取作业状态

4.3.5 将训练代码转换为分布式运行

4.3.6 进一步改进

4.4 训练无法在单个GPU上加载的大模型

4.4.1 传统方法:节省内存

4.4.2 流水线模型并行

4.4.3 软件工程师如何支持流水线并行训练

总结

CHAPTER 5 第5章 超参数优化服务

5.1 理解超参数

5.1.1 什么是超参数

5.1.2 超参数为什么重要

5.2 理解超参数优化

5.2.1 什么是HPO

5.2.2 热门的HPO算法

5.2.3 常见的自动HPO方法

5.3 设计一个HPO服务

5.3.1 HPO设计原则

5.3.2 通用HPO服务设计

5.4 开源HPO库

5.4.1 Hyperopt

5.4.2 Optuna

5.4.3 Ray Tune

5.4.4 后续步骤

总结

CHAPTER 6 第6章 模型服务设计

6.1 模型服务的解释

6.1.1 什么是机器学习模型

6.1.2 模型预测和推理

6.1.3 什么是模型服务

6.1.4 模型服务的挑战

6.1.5 模型服务术语

6.2 常见的模型服务策略

6.2.1 直接模型嵌入

6.2.2 模型服务

6.2.3 模型服务器

6.3 设计预测服务

6.3.1 单一模型应用

6.3.2 多租户应用

6.3.3 在一个系统中支持多个应用程序

6.3.4 常见的预测服务需求

总结

CHAPTER 7 第7章 模型服务实践

7.1 模型服务示例

7.1.1 运行示例服务

7.1.2 服务设计

7.1.3 前端服务

7.1.4 意图分类预测器

7.1.5 模型驱逐

7.2 TorchServe模型服务器示例

7.2.1 与服务进行交互

7.2.2 服务设计

7.2.3 前端服务

7.2.4 TorchServe后端

7.2.5 TorchServe API

7.2.6 TorchServe模型文件

7.2.7 在Kubernetes中进行扩展

7.3 模型服务器与模型服务

7.4 开源模型服务工具导览

7.4.1 TensorFlow Serving

7.4.2 TorchServe

7.4.3 Triton推理服务器

7.4.4 KServe和其他工具

7.4.5 将模型服务工具集成到现有服务系统中

7.5 发布模型

7.5.1 注册模型

7.5.2 在实时预测服务中加载任意版本的模型

7.5.3 通过更新默认模型版本发布模型

7.6 模型的后期监控

7.6.1 指标收集和质量门控

7.6.2 需要收集的指标

总结

CHAPTER 8 第8章 元数据和工件存储

8.1 工件介绍

8.2 深度学习环境中的元数据

8.2.1 常见的元数据类别

8.2.2 为什么要管理元数据

8.3 设计元数据和工件存储

8.3.1 设计原则

8.3.2 通用元数据和工件存储设计方案

8.4 开源解决方案

8.4.1 MLMD

8.4.2 MLflow

8.4.3 MLflow与MLMD

总结

CHAPTER 9 第9章 工作流编排

9.1 工作流编排介绍

9.1.1 什么是工作流

9.1.2 什么是工作流编排

9.1.3 在深度学习中使用工作流编排的挑战

9.2 设计工作流编排系统

9.2.1 用户场景

9.2.2 通用编排系统设计

9.2.3 工作流编排设计原则

9.3 浏览开源工作流编排系统

9.3.1 Airflow

9.3.2 Argo Work flows

9.3.3 Meta flow

9.3.4 何时使用

总结

CHAPTER 10 第10章 生产部署路径

10.1 准备产品化阶段

10.1.1 研究阶段

10.1.2 原型设计

10.1.3 要点总结

10.2 模型产品化

10.2.1 代码组件化

10.2.2 代码打包

10.2.3 代码注册

10.2.4 训练工作流设置

10.2.5 模型推理

10.2.6 产品集成

10.3 模型部署策略

10.3.1 金丝雀部署

10.3.2 蓝绿部署

10.3.3 多臂老虎机部署

总结

APPENDIX A 附录A 一个“Hello World”深度学习系统

A.1 介绍“Hello World”深度学习系统

A.1.1 用户角色

A.1.2 数据工程师

A.1.3 数据科学家/研究员

A.1.4 系统开发人员

A.1.5 深度学习应用开发人员

A.1.6 示例系统概述

A.1.7 用户工作流

A.2 实验室演示

A.2.1 演示步骤

A.2.2 一个自行完成的练习

APPENDIX B 附录B 现有解决方案调查

B.1 Amazon SageMaker

B.1.1 数据集管理

B.1.2 模型训练

B.1.3 模型服务

B.1.4 元数据和工件存储

B.1.5 工作流编排

B.1.6 实验

B.2 谷歌Vertex AI

B.2.1 数据集管理

B.2.2 模型训练

B.2.3 模型服务

B.2.4 元数据和工件存储

B.2.5 工作流编排

B.2.6 实验

B.3 微软Azure Machine Learning

B.3.1 数据集管理

B.3.2 模型训练

B.3.3 模型服务

B.3.4 元数据和工件存储

B.3.5 工作流编排

B.3.6 实验

B.4 Kubeflow

B.4.1 数据集管理

B.4.2 模型训练

B.4.3 模型服务

B.4.4 元数据和工件存储

B.4.5 工作流编排

B.4.6 实验

B.5 并排比较

APPENDIX C 附录C 使用Kubeflow Katib创建HPO服务

C.1 Katib概述

C.2 开始使用Katib

C.2.1 第一步:安装

C.2.2 第二步:理解Katib术语

C.2.3 第三步:将训练代码打包为Docker镜像

C.2.4 第四步:配置实验

C.2.5 第五步:开始实验

C.2.6 第六步:查询进度和结果

C.2.7 第七步:故障排除

C.3 加速HPO

C.3.1 并行试验

C.3.2 分布式试验(训练)作业

C.3.3 提前停止

C.4 Katib系统设计

C.4.1 Kubernetes控制器/算子模式

C.4.2 Katib系统设计和工作流

C.4.3 用于分布式训练的Kubeflow训练算子集成

C.4.4 代码阅读

C.5 添加新的算法

C.5.1 第一步:使用新算法实现Katib建议API

C.5.2 第二步:将算法代码制作成一个gRPC服务的Docker镜像

C.5.3 第三步:向Katib注册算法

C.5.4 示例和文档

C.6 更多阅读

C.7 使用场景

推荐阅读

设计深度学习系统是2024年由机械工业出版社出版,作者[美] 王迟。

得书感谢您对《设计深度学习系统》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
有效学习,才能高效成长 电子书
选择适合自己的有效学习方法,实现高效自我成长,去过有选择的生活。
了不起的学习者 电子书
成为终身学习者的行动指南。3大板块、31点认知升级、57个行动公式,印象笔记大使带你轻松学习。
心智成长:开启高效学习成长模式 电子书
从思维和心灵两个维度给出训练方法,帮助你成为心智成长型学习者。
深度领导力:重塑自我、终身成长的行动指南 电子书
本书主要探讨作为一个领导者如何持续成长,再造自我。
深度专注力:管理精力和时间的9种方法 电子书
3大步骤,9种方法,帮你快速提升学习和工作效果的指导术。