Skip to content

Commit 203420b

Browse files
authored
fix img url (#6729)
1 parent 18bbf8a commit 203420b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

docs/guides/paddle_v3_features/auto_parallel_cn.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
* Partial,指每个计算设备只拥有部分值,需要通过指定的规约操作才能恢复成全量数据。
4444

4545
<p align="center">
46-
<img src="images/auto_parallel/mesh.png" width="40%"/>
46+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/mesh.png" width="40%"/>
4747
</p>
4848

4949
在如下的示例中,我们希望在 6 个计算设备上,创建一个形状为(4, 3)的分布式张量,其中沿着计算设备的 x 维,切分张量的 0 维;沿着计算设备的 y 维上,切分张量的 1 维。最终,每个计算设备实际拥有大小为(2, 1)的实际张量,如图所示。
@@ -63,7 +63,7 @@ placements = [dist.Shard(0), dist.Shard(1)]
6363
dist_tensor = dist.shard_tensor(dense_tensor, mesh, placements)
6464
```
6565
<p align="center">
66-
<img src="images/auto_parallel/shard.png" width="40%"/>
66+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/shard.png" width="40%"/>
6767
</p>
6868

6969
## 2.3 张量重切分
@@ -88,7 +88,7 @@ dist_tensor = dist.shard_tensor(dense_tensor, mesh0, placements0)
8888
dist_tensor_after_reshard = dist.reshard(dist_tensor, mesh1, placements1)
8989
```
9090
<p align="center">
91-
<img src="images/auto_parallel/reshard.png" width="40%"/>
91+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/reshard.png" width="40%"/>
9292
</p>
9393

9494
# 三、原理简介
@@ -115,7 +115,7 @@ dist_tensorD = relu(dist_tensorC)
115115
```
116116

117117
<p align="center">
118-
<img src="images/auto_parallel/shard_anonation.png" width="40%"/>
118+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/shard_anonation.png" width="40%"/>
119119
</p>
120120

121121
接下来就会进入自动并行的第一个核心逻辑 **切分推导**
@@ -124,17 +124,17 @@ dist_tensorD = relu(dist_tensorC)
124124
在上述输入的切分状态下,框架会推导出会将 TensorA 的切分状态推导成按列切分,TensorB 保持切分状态不变,Matmul 的计算结果 TensorC 的切分状态是 Partial。
125125
因为后续的 Relu 算子是非线性的,输入不能是 Partial 状态,所以框架会根据 ReluSPMD Rule 将 TensorC 输入 Relu 前的的分布式状态推导成 Replicated。
126126
<p align="center">
127-
<img src="images/auto_parallel/shard_propogation.png" width="40%"/>
127+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/shard_propogation.png" width="40%"/>
128128
</p>
129129

130130
接下来就会进入自动并行的第二个核心逻辑 **切分转换**
131131
框架会根据 tensor 当前的切分状态(src_placement),和切分推导规则推导出的算子计算需要的切分状态(dst_placement),添加对应的通信/张量维度变换算子。
132132
根据上图的切分推导,在计算 Matmul 添加 split 算子,在计算 Relue 添加 Allreduce,将输入 tensor 转换成需要的切分状态进行实际计算。
133133

134134
<p align="center">
135-
<img src="images/auto_parallel/shard_convertion.png" width="40%"/>
135+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/shard_convertion.png" width="40%"/>
136136
</p>
137-
<!-- ![原理简介](images/auto_parallel/underlying3.png) -->
137+
<!-- ![原理简介](https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/underlying3.png) -->
138138

139139

140140
# 四、使用示例
@@ -341,7 +341,7 @@ for step, inputs in enumerate(dataloader):
341341
自动并行的 API 在设计之初,就以实现统一的用户标记接口和逻辑为目标,保证动静半框架保证在相同的用户标记下,动静态图分布式执行逻辑一致。这样用户在全流程过程中只需要标记一套动态图组网,即可以实现动态图下的分布式训练 Debug 和 静态图下的分布式推理等逻辑。整个动转静训练的逻辑如下:
342342

343343
<p align="center">
344-
<img src="images/auto_parallel/dynamic-static-unified.png" width="40%"/>
344+
<img src="https://raw.githubusercontent.com/PaddlePaddle/docs/develop/docs/guides/paddle_v3_features/images/auto_parallel/dynamic-static-unified.png" width="40%"/>
345345
</p>
346346

347347
```python

0 commit comments

Comments
 (0)