diff --git a/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md b/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md
index ae4d52e..f5dbeed 100644
--- a/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md
+++ b/ch18_后端架构选型、离线及实时计算/第十八章_后端架构选型、离线及实时计算.md
@@ -78,8 +78,8 @@
- 算法库:包含广义线性模型、推荐系统、聚类、决策树和评估的算法
- 实用程序:包括测试数据的生成、外部数据的读入等功能
-架构图

+
架构图
MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤,MLlib在Spark整个生态系统中的位置如图下图所示。
@@ -111,11 +111,11 @@ Ray框架优点
架构设计一方面减少了跨节点的RPC开销,另一方面也能规避中心节点的瓶颈问题。当然缺点也不是没有,由于缺乏全局的任务视图,无法进行全局规划,因此任务的拓扑逻辑结构也就未必是最优的了。
-架构图

+架构图
-任务调度图

+任务调度图
Ray架构现状:
- API层以上 的部分还比较薄弱,Core模块核心逻辑估需要时间打磨。
@@ -135,13 +135,13 @@ Ray框架优点
- 能集成Spark的批处理和交互查询。
- 为实现复杂的算法提供和批处理类似的简单接口。
-Spark Streaming架构图

+Spark Streaming架构图
Spark Streaming把实时输入数据流以时间片Δt (如1秒)为单位切分成块。Spark Streaming会把每块数据作为一个RDD,并使用RDD操作处理每一小块数据。每个块都会生成一个Spark Job处理,最终结果也返回多块。
-Spark Streaming基本原理图

+Spark Streaming基本原理图
正如Spark Streaming最初的目标一样,它通过丰富的API和基于内存的高速计算引擎让用户可以结合流式处理,批处理和交互查询等应用。因此Spark Streaming适合一些需要历史数据和实时数据结合分析的应用场合。当然,对于实时性要求不是特别高的应用也能完全胜任。另外通过RDD的数据重用机制可以得到更高效的容错处理。
@@ -221,8 +221,8 @@ server1:4,server2:4,server3:4,server4:4 python train.py
Petastorm是一个由 Uber ATG 开发的开源数据访问库。这个库可以直接基于数 TB Parquet 格式的数据集进行单机或分布式训练和深度学习模型评估。Petastorm 支持基于 Python 的机器学习框架,如 Tensorflow、Pytorch 和 PySpark,也可以直接用在 Python 代码中。
-深度学习集群

+深度学习集群
即使是在现代硬件上训练深度模型也很耗时,而且在很多情况下,很有必要在多台机器上分配训练负载。典型的深度学习集群需要执行以下几个步骤:
- 一台或多台机器读取集中式或本地数据集。
@@ -234,10 +234,12 @@ server1:4,server2:4,server3:4,server4:4 python train.py
将多个数据源组合到单个表格结构中,从而生成数据集。可以多次使用相同的数据集进行模型训练和评估。

+深度学习集群
为分布式训练进行分片
在分布式训练环境中,每个进程通常负责训练数据的一个子集。一个进程的数据子集与其他进程的数据子集正交。Petastorm 支持将数据集的读时分片转换为正交的样本集。

+Petastorm 将数据集的非重叠子集提供给参与分布式训练的不同机器
本地缓存
Petastorm 支持在本地存储中缓存数据。当网络连接速度较慢或带宽很昂贵时,这会派上用场。
@@ -252,11 +254,11 @@ Github地址:https://github.com/uber/petastorm
满足的应用场景:
为了利用TensorFlow在现有的Spark和Hadoop集群上进行深度学习。而不需要为深度学习设置单独的集群。
-架构图

+架构图
-运行流程图
-
+
+运行流程图
优点:
- 轻松迁移所有现有的TensorFlow程序,<10行代码更改;