Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
c9778c69
M
models
项目概览
PaddlePaddle
/
models
大约 1 年 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
c9778c69
编写于
2月 24, 2022
作者:
littletomatodonkey
提交者:
GitHub
2月 24, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add paddle gather (#5473)
上级
0bb13543
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
4 deletion
+23
-4
tutorials/article-implementation/ArticleReproduction_CV.md
tutorials/article-implementation/ArticleReproduction_CV.md
+23
-4
未找到文件。
tutorials/article-implementation/ArticleReproduction_CV.md
浏览文件 @
c9778c69
...
...
@@ -33,6 +33,7 @@
-
[
4.2 内存泄露
](
#4.2
)
-
[
4.3 dataloader 加载数据时间长
](
#4.3
)
-
[
4.4 单机多卡报错信息不明确
](
#4.4
)
-
[
4.5 通用API使用问题
](
#4.5
)
<a
name=
"1"
></a>
## 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 \
<a
name=
"4"
></a>
## 4. 通用问题FAQ
在论文复现中,可能因为各种原因出现报错,下面我们列举了常见的问题和解决方法,从而提供debug的方向:
<a
name=
"4.1"
></a>
#### 4.1 显存泄露
### 4.1 显存泄露
显存泄露会在
`nvidia-smi`
等命令下,明显地观察到显存的增加,最后会因为
`out of memory`
的错误而程序终止。
**【可能原因】**
...
...
@@ -986,7 +991,8 @@ Tensor 切片的时候增加变量引用,导致显存增加。
```
<a
name=
"4.2"
></a>
#### 4.2 内存泄露
### 4.2 内存泄露
内存泄露和显存泄露相似,并不能立即察觉,而是在使用
`top`
命令时,观察到内存显著增加,最后会因为
`can't allocate memory`
的错误而程序终止,如图所示是
`top`
命令下观察内存变化需要检查的字段。
...
...
@@ -1022,7 +1028,8 @@ Tensor 切片的时候增加变量引用,导致显存增加。
3.
如果不需要,则需要对操作中的参数或中间计算结果进行
`.detach().clone()`
或者
`.numpy`
后操作。
<a
name=
"4.3"
></a>
#### 4.3 dataloader 加载数据时间长
### 4.3 dataloader 加载数据时间长
**【解决方式】**
...
...
@@ -1030,8 +1037,20 @@ Tensor 切片的时候增加变量引用,导致显存增加。
<a
name=
"4.4"
></a>
#### 4.4 单机多卡报错信息不明确
### 4.4 单机多卡报错信息不明确
**【解决方式】**
前往 log 下寻找 worklog.x 进行查看,其中 worklog.x 代表第 x 卡的报错信息。
<a
name=
"4.5"
></a>
### 4.5 通用API使用问题
#### 4.5.1 `paddle.gather`和`torch.gather`的含义不同,有什么解决办法呢?
**【解决方式】**
目前
`paddle.take_along_axis`
和
`torch.gather`
的功能等价,可以安装develop版本的paddle体验,该API预计会在2022年3月上线paddle的最新release版本
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录