diff --git a/docs/lwfx/ArticleReproduction_CV.md b/docs/lwfx/ArticleReproduction_CV.md
index 18be36975f2128515fd631d60fc266138c5120db..c6835df1b094d7c9fa451b8fbc5d2784411589c3 100644
--- a/docs/lwfx/ArticleReproduction_CV.md
+++ b/docs/lwfx/ArticleReproduction_CV.md
@@ -43,6 +43,7 @@
- [4.11 网络初始化对齐](#4.10)
- [4.12 模型训练对齐](#4.11)
- [4.13 TIPC基础链条测试接入](#4.13)
+ - [4.14 常见bug汇总](#4.14)
## 1. 总览
@@ -80,7 +81,9 @@
面对一篇计算机视觉论文,复现该论文的整体流程如下图所示。
-![图片](images/framework_reprodcv.png)
+
+
+
总共包含12个步骤。为了高效复现论文,设置了6个验收节点。如上图中黄色框所示。后续章节会详细介绍上述步骤和验收节点,具体内容安排如下:
@@ -915,14 +918,18 @@ w.backward()
* 接入过程中,需要依赖于inference模型,因此建议首先提供模型导出和基于inference模型的预测脚本,之后再接入TIPC测试代码与文档。
* 接入过程中,如果需要在AiStudio中进行TensorRT预测,可以参考:[AiStudio中使用TensorRT进行预测教程](https://aistudio.baidu.com/aistudio/projectdetail/3027768)。
+
+
### 4.14 常见bug汇总
+
在论文复现中,可能因为各种原因出现报错,下面我们列举了常见的问题和解决方法,从而提供debug的方向:
-#### 1. 显存泄露:
+
+#### 4.14.1 显存泄露
显存泄露会在 `nvidia-smi` 等命令下,明显地观察到显存的增加,最后会因为 `out of memory` 的错误而程序终止。
-##### 可能原因:
+* 可能原因:
-1. Tensor 切片的时候增加变量引用,导致显存增加,解决方法如下:
+1. Tensor 切片的时候增加变量引用,导致显存增加。解决方法如下:
使用 where, gather 函数替代原有的 slice 方式:
@@ -937,13 +944,15 @@ w.backward()
```
-#### 2. 内存泄露:
+#### 4.14.2 内存泄露
内存泄露和显存泄露相似,并不能立即察觉,而是在使用 `top` 命令时,观察到内存显著增加,最后会因为 `can't allocate memory` 的错误而程序终止,如图所示是 `top` 命令下观察内存变化需要检查的字段。
-![图片](https://raw.githubusercontent.com/shiyutang/files/main/top.png)
+
+
+
-##### 可能原因:
+可能原因:
1. 对在计算图中的 tensor 进行了不需要的累加、保存等操作,导致反向传播中计算图没有析构,解决方法如下:
@@ -961,15 +970,16 @@ w.backward()
loss_total += loss.detach().clone() # 如果需要持续使用tensor
```
-##### 排查方法:
+排查方法:
1. 在没有使用 paddle.no_grad 的代码中,寻找对模型参数和中间计算结果的操作;
2. 考虑这些操作是否应当加入计算图中(即对最后损失产生影响);
3. 如果不需要,则需要对操作中的参数或中间计算结果进行`.detach().clone()`或者`.numpy` 后操作。
-#### 3. dataloader 加载数据时间长:
+#### 4.14.3 dataloader 加载数据时间长
+
- **解决方式**:增大 num_worker 的值,提升io速度,一般建议设置 4 或者 8。
-#### 4. 单机多卡报错信息不明确:
+#### 4.14.4 单机多卡报错信息不明确
- **解决方式**:前往 log 下寻找 worklog.x 进行查看,其中 worklog.x 代表第 x 卡的报错信息。