diff --git a/tutorials/article-implementation/ArticleReproduction_CV.md b/tutorials/article-implementation/ArticleReproduction_CV.md
index 81c68e125dd4b3ecbe3a475d58e5cbb1094bc5c8..e60b1902a3837360e251e870d036301a7ce7ef0e 100644
--- a/tutorials/article-implementation/ArticleReproduction_CV.md
+++ b/tutorials/article-implementation/ArticleReproduction_CV.md
@@ -33,6 +33,7 @@
- [4.2 内存泄露](#4.2)
- [4.3 dataloader 加载数据时间长](#4.3)
- [4.4 单机多卡报错信息不明确](#4.4)
+ - [4.5 通用API使用问题](#4.5)
## 1. 总览
@@ -741,6 +742,7 @@ random.seed(config.SEED)
- 其他细分场景下有什么导致训练不对齐的原因?
* 小数据上指标波动可能比较大,时间允许的话,可以跑多次实验,取平均值。
* transformer 系列模型对于数据增广与模型初始化非常敏感,因此在保证前反向对齐后,如果训练仍无法对齐,可以考虑使用官方的PyTorch模型训练代码,结合复现的Paddle组网代码进行训练,这样可以验证是否是数据预处理/数据增强策略存在问题。
+ * transformer 系列模型,在模型量级比较小的情况下,使用更大的batch size以及对应的学习率进行训练往往会获得更高的精度,在复现时,建议保证batch size和学习率完全一致,否则可能会隐藏其他没有对齐的风险项。
* 检测、分割等任务中,训练通常需要加载backbone的权重作为预训练模型,注意在完成模型对齐后,将转换的权重修改为backbone权重。
* 生成任务中,训练时经常需要固定一部分网络参数。对于一个参数`param`,可以通过`param.trainable = False`来固定。
* 在训练GAN时,通常通过GAN的loss较难判断出训练是否收敛,建议每训练几次迭代保存一下训练生成的图像,通过可视化判断训练是否收敛。
@@ -959,12 +961,15 @@ python3.7 -m paddle.distributed.launch \
+
## 4. 通用问题FAQ
在论文复现中,可能因为各种原因出现报错,下面我们列举了常见的问题和解决方法,从而提供debug的方向:
-#### 4.1 显存泄露
+
+### 4.1 显存泄露
+
显存泄露会在 `nvidia-smi` 等命令下,明显地观察到显存的增加,最后会因为 `out of memory` 的错误而程序终止。
**【可能原因】**
@@ -986,7 +991,8 @@ Tensor 切片的时候增加变量引用,导致显存增加。
```
-#### 4.2 内存泄露
+
+### 4.2 内存泄露
内存泄露和显存泄露相似,并不能立即察觉,而是在使用 `top` 命令时,观察到内存显著增加,最后会因为 `can't allocate memory` 的错误而程序终止,如图所示是 `top` 命令下观察内存变化需要检查的字段。
@@ -1022,7 +1028,8 @@ Tensor 切片的时候增加变量引用,导致显存增加。
3. 如果不需要,则需要对操作中的参数或中间计算结果进行`.detach().clone()`或者`.numpy` 后操作。
-#### 4.3 dataloader 加载数据时间长
+
+### 4.3 dataloader 加载数据时间长
**【解决方式】**
@@ -1030,8 +1037,20 @@ Tensor 切片的时候增加变量引用,导致显存增加。
-#### 4.4 单机多卡报错信息不明确
+
+### 4.4 单机多卡报错信息不明确
**【解决方式】**
前往 log 下寻找 worklog.x 进行查看,其中 worklog.x 代表第 x 卡的报错信息。
+
+
+
+
+### 4.5 通用API使用问题
+
+#### 4.5.1 `paddle.gather`和`torch.gather`的含义不同,有什么解决办法呢?
+
+**【解决方式】**
+
+目前`paddle.take_along_axis`和`torch.gather`的功能等价,可以安装develop版本的paddle体验,该API预计会在2022年3月上线paddle的最新release版本