Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
d4fd41f
add chapter 8 outline
YanjieGao Dec 29, 2021
a4a5a98
add 8.1 content
YanjieGao Dec 29, 2021
c4ba935
fix license
YanjieGao Jan 2, 2022
459d997
add infer sys content
YanjieGao Jan 2, 2022
c8d9eec
add new content for 8.
YanjieGao Jan 2, 2022
b969612
refine 8.4
YanjieGao Jan 2, 2022
e333214
add a bit for 8.4
YanjieGao Jan 3, 2022
81e2b89
add new content for chapter 8
YanjieGao Jan 3, 2022
2a51e4d
add content of chapter 8
YanjieGao Jan 3, 2022
8faad00
refine the reference formtat
YanjieGao Jan 3, 2022
852614f
add content at 8.1
YanjieGao Jan 3, 2022
3c02182
add content for 8.1
YanjieGao Jan 3, 2022
18333e3
add 8.1 content
YanjieGao Jan 3, 2022
c5403e2
add chapter 8.2 content
YanjieGao Jan 3, 2022
35fdc4b
add content for 8.2
YanjieGao Jan 3, 2022
50b547b
add 8.2 content
YanjieGao Jan 3, 2022
1f0a8cc
refine content of chapter 8
YanjieGao Jan 3, 2022
7a443a5
add chapter8 content
YanjieGao Jan 3, 2022
e68903a
add content for chapter 8
YanjieGao Jan 3, 2022
9146007
add a bit content for chapter 8
YanjieGao Jan 3, 2022
0c8ad68
refine content of chapter 8
YanjieGao Jan 3, 2022
68f2e99
add chapter 8 reliability
YanjieGao Jan 4, 2022
b66ab61
refine 8 content and 术语表
YanjieGao Jan 11, 2022
e7f97d2
refine chapter 8 content
YanjieGao Jan 11, 2022
30b46ac
refine chapter 8.1
YanjieGao Jan 11, 2022
742e54c
refine 8.1 content
YanjieGao Jan 11, 2022
3868b4e
refine 8.1
YanjieGao Jan 11, 2022
03cc4c6
refine 8.2 content
YanjieGao Jan 11, 2022
329596d
refine content of 8.2
YanjieGao Jan 12, 2022
9dd4578
add several refer for 8.2
YanjieGao Jan 12, 2022
845b078
refine the 8.2
YanjieGao Jan 12, 2022
871fadb
refine the 8.2
YanjieGao Jan 12, 2022
9a015df
refine 8.2
YanjieGao Jan 13, 2022
bb175a6
refine 8.3
YanjieGao Jan 13, 2022
73ac61e
refine a bit for 8.3
YanjieGao Jan 13, 2022
f57bba8
refine 8.3
YanjieGao Jan 13, 2022
495d5fc
refine 8.3
YanjieGao Jan 13, 2022
d66bc3e
refine 8.3
YanjieGao Jan 13, 2022
6ae817d
refine yanjie-chapter8
YanjieGao Jan 13, 2022
45d12b5
refine chapter 7 en case
YanjieGao Jan 13, 2022
73f87e5
refine 8.4
YanjieGao Jan 13, 2022
2fbbe03
refine 8.4
YanjieGao Jan 13, 2022
bc544ba
refine 8.4
YanjieGao Jan 13, 2022
a784c1f
refine 8.4
YanjieGao Jan 13, 2022
fd33046
refine 8.4
YanjieGao Jan 13, 2022
5dae274
refine 8.4
YanjieGao Jan 13, 2022
6df5e55
refine 8.4.5
YanjieGao Jan 14, 2022
97f636e
refine 8.4.5
YanjieGao Jan 14, 2022
c828887
add 8.4 new content
YanjieGao Jan 14, 2022
b0e43b5
refine 8.4.6
YanjieGao Jan 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions Textbook/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,48 +168,48 @@
- 6.6.1 框架内嵌分布式训练系统
- 6.6.2 通用分布式训练系统
- 6.6.3 特定领域分布式训练系统
- [7. 异构计算集群调度与资源管理系统]()
- 7.1 异构计算集群管理系统简介
- [7. 异构计算集群调度与资源管理系统](第7章-异构计算集群调度与资源管理系统/7-前言.md)
- [7.1 异构计算集群管理系统简介](第7章-异构计算集群调度与资源管理系统/7.1-异构计算集群管理系统简介.md)
- 7.1.1 多租环境运行的训练作业
- 7.1.2 作业生命周期
- 7.1.3 资源管理系统的设计目标
- 7.2 训练作业,镜像与容器
- [7.2 训练作业,镜像与容器](第7章-异构计算集群调度与资源管理系统/7.2-训练作业,镜像与容器.md)
- 7.2.1 深度学习作业依赖与规格
- 7.2.2 环境依赖:镜像
- 7.2.3 运行时资源隔离:容器
- 7.3 调度
- [7.3 调度](第7章-异构计算集群调度与资源管理系统/7.3-调度.md)
- 7.3.1 调度问题优化目标
- 7.3.2 群调度
- 7.3.3 DRF调度
- 7.3.4 容量调度
- 7.3.5 虚拟集群
- 7.3.6 抢占式调度
- 7.4 面向深度学习的集群管理系统
- [7.4 面向深度学习的集群管理系统](第7章-异构计算集群调度与资源管理系统/7.4-面向深度学习的集群管理系统.md)
- 7.4.1 深度学习工作负载的需求
- 7.4.2 异构硬件的多样性
- 7.4.3 异构硬件下的调度算法设计
- 7.4.4 代表性异构集群管理系统
- [8. 深度学习推理系统]()
- 8.1 推理系统简介
- [8. 深度学习推理系统](第8章-深度学习推理系统/8-前言.md)
- [8.1 推理系统简介](第8章-深度学习推理系统/8.1-推理系统简介.md)
- 8.1.1 对比推理与训练过程
- 8.1.2 推理系统的优化目标与约束
- 8.2 推理系统的低延迟优化
- [8.2 推理系统的低延迟优化](第8章-深度学习推理系统/8.2-推理系统的低延迟优化.md)
- 8.2.1 推理延迟
- 8.2.2 层间与张量融合
- 8.2.3 目标后端自动调优
- 8.2.4 内存分配策略调优
- 8.2.5 低精度推理与精度校准
- 8.2.6 模型压缩
- 8.3 推理系统的高吞吐与高效率优化
- [8.3 推理系统的高吞吐与高效率优化](第8章-深度学习推理系统/8.3-推理系统的高吞吐与高效率优化.md)
- 8.3.1 推理系统的吞吐量
- 8.3.2 加速器并行
- 8.3.2 加速器模型并发执行
- 8.3.3 动态批尺寸
- 8.3.4 多模型装箱
- 8.4 部署
- [8.4 部署](第8章-深度学习推理系统/8.4-部署.md)
- 8.4.1 可靠性和可扩展性
- 8.4.2 部署灵活性
- 8.4.3 模型转换与开放协议
- 8.4.4 模型版本管理,线上发布,回滚策略
- 8.4.4 MLOps:模型版本管理,线上发布,回滚策略
- 8.4.5 移动端部署
- 8.4.6 推理芯片
- [9. 自动化机器学习系统]()
Expand Down
12 changes: 9 additions & 3 deletions Textbook/术语表.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@

|英文|中文|
|---|---|
|Inference|推理|
|Scheduling|调度|

|inference|推理|
|scheduling|调度|
|service-level agreement|服务等级协议|
|learning performance|学习性能|
|deployment|部署|
|reinforcement learning|强化学习|
|batch size|批次|
|reliability|可靠性|
|scalability|可扩展性|
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
- 图神经网络等网络不断抽象多样且灵活的数据结构(例如:图,树等),应对更为复杂的建模需求。进而衍生了新的算子(例如:图卷积等)与计算框架(例如:图神经网络框架等)。
- 更多样的训练方式
- 自动化机器学习为代表的训练方式,衍生出多作业执行与多作业编排优化的系统需求。
- 增强学习为代表的算法有比传统训练方式更为复杂的过程。其衍生出训练,推理,数据处理混合部署与协同优化的系统需求。
- 强化学习为代表的算法有比传统训练方式更为复杂的过程。其衍生出训练,推理,数据处理混合部署与协同优化的系统需求。
- 多专家模型(Mixture of experts)为代表的融合异构模型的训练方式,衍生出新的系统的开发灵活性与协同优化的挑战。


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
- [7.3.1 调度问题优化目标](#731-调度问题优化目标)
- [7.3.2 群调度](#732-群调度)
- [7.3.3 主导资源公平DRF(Dominant Resource Fairness)调度](#733-主导资源公平drfdominant-resource-fairness调度)
- [7.3.4 容量(Capacity)调度](#734-容量capacity调度)
- [7.3.5 虚拟集群(Virtual Cluster)机制](#735-虚拟集群virtual-cluster机制)
- [7.3.4 容量(capacity)调度](#734-容量capacity调度)
- [7.3.5 虚拟集群(virtual cluster)机制](#735-虚拟集群virtual-cluster机制)
- [7.3.6 抢占式调度(Preemptive Scheduling)](#736-抢占式调度preemptive-scheduling)
- [7.3.7 深度学习调度算法实验与模拟研究](#737-深度学习调度算法实验与模拟研究)
- [7.3.7.1 数据读取](#7371-数据读取)
Expand All @@ -23,11 +23,11 @@

针对一批作业调度,常常考虑以下指标 :

- 吞吐(Throughput):单位时间能完成的作业数量。平台希望吞吐量越大越好。
- 完工时间(Makespan):作业从启动到终止的时间,希望其越小越好,有些调度算法也考虑所有作业的整体完工时间作为优化目标。
- 平均响应时间(Average Response Time):平均响应时间是请求者在授予对全局资源的请求之前必须等待的平均时间。平台希望平均响应时间越短越好。
- 公平性(Fairness):资源使用在平台用户或组之间平均分配,而不是在作业之间平均分配。
- 资源利用率(Utilization) :描述用于作业的资源占总资源的百分比。平台希望利用率越高越好。
- 吞吐(throughput):单位时间能完成的作业数量。平台希望吞吐量越大越好。
- 完工时间(makespan):作业从启动到终止的时间,希望其越小越好,有些调度算法也考虑所有作业的整体完工时间作为优化目标。
- 平均响应时间(average response time):平均响应时间是请求者在授予对全局资源的请求之前必须等待的平均时间。平台希望平均响应时间越短越好。
- 公平性(fairness):资源使用在平台用户或组之间平均分配,而不是在作业之间平均分配。
- 资源利用率(utilization) :描述用于作业的资源占总资源的百分比。平台希望利用率越高越好。
- 服务水平协议(SLA):服务级别协议 (SLA-service-level agreement) 是服务提供商和客户之间的承诺。例如:服务的特定方面——质量、可用性、责任——在服务提供商和服务用户之间达成一致。

接下来,我们将通过经典的调度算法,看平台常用算法是如何解决遇到的问题的。
Expand All @@ -42,9 +42,9 @@
<center> <img src="./img/3/7-3-2-gangscheduleproblem.png" ch="500" width="400" height="400" /></center>
<center>图7-3-1. 并行启动执行作业可能产生的问题</center>

群调度(Gang Scheduling) 的Wiki定义是:一种用于并行系统的调度算法,用于调度相关线程或进程,在不同处理器上同时启动并运行。
群调度(gang scheduling) 的Wiki定义是:一种用于并行系统的调度算法,用于调度相关线程或进程,在不同处理器上同时启动并运行。

接下来,对上面的问题实例,我们使用群调度(Gang Scheduling)同时启动深度学习任务进程。图中的A,B,C作业就可以交替执行,保证任务能顺利执行完。
接下来,对上面的问题实例,我们使用群调度(gang scheduling)同时启动深度学习任务进程。图中的A,B,C作业就可以交替执行,保证任务能顺利执行完。

<center> <img src="./img/3/7-3-3-gangschedule.png" ch="500" width="400" height="260" /></center>
<center>图7-3-2. 并行执行作业可能产生的问题</center>
Expand All @@ -55,16 +55,16 @@

目前深度学习平台其实包含多种异构资源(CPU,GPU,memory等)以及被多用户使用是一个多租的环境。在调度过程中用户会细粒度的申请不同资源的用量,我们在满足用户异构资源需求的同时,也希望在多租的环境下兼顾一定的公平。

- 问题:包含异构资源类型的系统中如何进行多作业公平(Fairness)的资源调度?
- 问题:包含异构资源类型的系统中如何进行多作业公平(fairness)的资源调度?
- 挑战:相比传统单资源公平调度,深度学习作业也需要使用多种异构资源 (CPU, Host memory, etc.),并且需要调度GPU及GPU memory

DRF 使用优势资源的概念来比较多维(CPU, GPU, memory等)资源。这个想法是在多资源环境中,资源分配应该由作业(用户或队列)的主导份额决定,这是作业已分配的任何资源(内存或 CPU)的最大份额。

本质上,DRF 优化目标是寻求最大化所有实体的最小主导份额(smallest dominant share)。

DRF调度策略:
1. 通过同类型资源在集群整体资源中的份额确定主导资源 (dominant resource)
2. 基于最大最小公平(max-min fairness)的针对多资源类型(e.g. GPU, CPU)的调度算法
1. 通过同类型资源在集群整体资源中的份额确定主导资源 (dominant resource)
2. 基于最大最小公平(max-min fairness)的针对多资源类型(e.g. GPU, CPU)的调度算法

如下图所示实例,有Job 1和Job 2都在启动多个任务并申请多个资源。第一步先计算每个Job的主导资源。Job 1主导资源为Memory,Job 2主导资源是GPU。Job 1的优先级高于Job 2,因为Job 1份额0.4小于Job 2份额0.5。

Expand Down Expand Up @@ -115,7 +115,7 @@ Dominant \ resource \ is \ GPU
$$


## 7.3.4 容量(Capacity)调度
## 7.3.4 容量(capacity)调度

除了多个作业能够兼顾公平的分配,平台管理员还需要考虑如果是多个组共享平台,也需要兼顾组与组之间的公平性。如何让多个小组共享集群?
- 能否为多个组织共享集群资源?
Expand All @@ -129,29 +129,29 @@ $$
<center> <img src="./img/3/7-3-4-capaproblem.png" ch="500" width="400" height="300" /></center>
<center>图7-3-4. 资源占用过多造成其他组无法分配资源问题</center>

所以,为了支持支持多租(Multi-tenant)资源共享,容量调度被设计出来。
所以,为了支持支持多租(multi-tenant)资源共享,容量调度被设计出来。

容量调度策略集合:
- 提升利用率(Utilization):
- 虚拟集群(Virtual Cluster):组能看到视图是虚拟资源,并不绑定具体机器,等作业启动后分配相应的资源。
- 层级队列(Hierarchical Queues): 支持队列分层结构,以确保在允许其他队列使用空闲资源之前在组织的子队列之间共享资源,从而提供更多的控制和可预测性。
- 多租与公平性(Fairness):
- 多租与用户限制因素(User Limit Factor):
- 提升利用率(utilization):
- 虚拟集群(virtual cluster):组能看到视图是虚拟资源,并不绑定具体机器,等作业启动后分配相应的资源。
- 层级队列(hierarchical queues): 支持队列分层结构,以确保在允许其他队列使用空闲资源之前在组织的子队列之间共享资源,从而提供更多的控制和可预测性。
- 多租与公平性(fairness):
- 多租与用户限制因素(user limit factor):
- 从某种意义上说,队列将分配到网格容量的一小部分,因为它们可以使用一定容量的资源。 提交到队列的所有应用程序都可以访问分配给队列的容量。 管理员可以对分配给每个队列的容量配置软限制和可选的硬限制。
- 允许多用户多组以多租形式使用集群。控制单用户的可以消耗的最大资源,放止占用资源过多,造成其他进程无法申请资源。
- Dominant Resource Fairness (DRF):对异构计算场景,扔可以采用适合多维资源调度或其他自定义调度器。满足以上约束情况下,仍旧可以采用DRF等调度策略进行具体作业之间的调度与资源分配。
- 弹性(Elasitcity)和SLA
- 奖励资源(Bonus Resource):对其他组没有使用的资源可以临时免费出让给有需要的团队,但是当资源持有者需要,则需要抢占资源归还给持有者。
- 抢占(Preemption):配合奖励资源使用,保证对用户提供的服务协议。
- 主导资源公平(Dominant Resource Fairness (DRF)):对异构计算场景,扔可以采用适合多维资源调度或其他自定义调度器。满足以上约束情况下,仍旧可以采用DRF等调度策略进行具体作业之间的调度与资源分配。
- 弹性(elasitcity)和SLA
- 奖励资源(bonus resource):对其他组没有使用的资源可以临时免费出让给有需要的团队,但是当资源持有者需要,则需要抢占资源归还给持有者。
- 抢占(preemption):配合奖励资源使用,保证对用户提供的服务协议。

如下图所示,当管理员配置了最小和最大的组使用资源限额,这样保证组与组之间都有资源可用。

<center> <img src="./img/3/7-3-5-capascheduling.png" ch="500" width="400" height="300" /></center>
<center>图7-3-5. 容量调度</center>

## 7.3.5 虚拟集群(Virtual Cluster)机制
## 7.3.5 虚拟集群(virtual cluster)机制

在这些集群内,一般组和用户所看到的的资源并没有绑定到具体的物理机器,而是在调度后决定作业启动的物理机器。这背后是通过虚拟集群 (Virtual Cluster) 映射所实现的。而虚拟集群和我们之前介绍的cgroups的目的和设计较为类似。我们会看到很多集群产生的问题,在传统的操作系统中都能找到类似的设计问题与原则。
在这些集群内,一般组和用户所看到的的资源并没有绑定到具体的物理机器,而是在调度后决定作业启动的物理机器。这背后是通过虚拟集群 (virtual cluster) 映射所实现的。而虚拟集群和我们之前介绍的cgroups的目的和设计较为类似。我们会看到很多集群产生的问题,在传统的操作系统中都能找到类似的设计问题与原则。

如下图所示,虚拟集群会在配置用户组的配额和视图,物理集群是在调度后在运行时绑定的。这样可以大幅提升资源利用率。

Expand All @@ -160,8 +160,8 @@ $$

针对深度学习的细粒度虚拟集群策略:
- 虚拟集群根据小组的配额进行定义
- 每个租户(Tenant)构成了一个虚拟集群(VC)
- 资源被分配给租户(Tenants)
- 每个租户(tenant)构成了一个虚拟集群(VC)
- 资源被分配给租户(tenants)
- 将虚拟集群映射到物理集群

<center> <img src="./img/3/7-3-7-vc-define.png" ch="500" width="400" height="300" /></center>
Expand All @@ -171,8 +171,6 @@ $$

一些集群管理员为了减少组空闲资源造成的浪费,想共享空闲资源,但是单纯出让资源但是不能保证原有用户随时要回会产生相应新的问题,不能保证对原用户的SLA (service level agreement)。所以一般通过抢占调度解决。抢占调度也适合,需要保证其他作业相应时间的场景。



如下图所示,如过APP2长时间无法得到资源,则无法执行,而其执行时间实际很短。这就需要通过抢占机制进行调度。让APP2获取一定资源执行,保证降低平均响应时间。

<center> <img src="./img/3/7-3-8-preemptive.png" ch="500" width="400" height="300" /></center>
Expand All @@ -186,7 +184,7 @@ $$
<center> <img src="./img/3/7-3-9-preemptive.png" ch="500" width="400" height="260" /></center>
<center>图7-3-8. 抢占调度</center>

抢占式调度对深度学习作业的挑战:在深度学习作业下,被抢占的作业当前只能失败,无法像传统OS上下文切换。未来可以设计更好的深度学习检查点和恢复技术进行减少抢占后作业失效造成之前作业的训练资源无效使用的问题。
抢占式调度对深度学习作业的挑战:在深度学习作业下,被抢占的作业当前只能失败,无法像传统操作系统进行上下文切换。未来可以设计更好的深度学习检查点和恢复技术进行减少抢占后作业失效造成之前作业的训练资源无效使用的问题。

## 7.3.7 深度学习调度算法实验与模拟研究

Expand Down
Loading