首页 Paddle框架 帖子详情
模型权重复制,使用set_value过程中,GPU利用率跑不满
收藏
快速回复
Paddle框架 问答模型训练 295 0
模型权重复制,使用set_value过程中,GPU利用率跑不满
收藏
快速回复
Paddle框架 问答模型训练 295 0

【问题描述】

模型中有一个ViT和一个Bert模型,以及对应的momentum模型(权重不通过backward更新,而是在每次forward过程中通过对应的ViT和Bert模型权重进行拷贝计算),在模型训练过程中,发现模型权重拷贝的过程GPU利用率显著降低,呈现来回跳动的情况,排查了一圈发现是权重拷贝的过程中GPU利用率下降。 测试了一下模型权重设置占了整个训练过程的五分之一左右。

同样的代码pytorch使用的是直接调用参数数据赋值的方法,没有出现此情况,所以怀疑是set_value的原因。

但paddle似乎(?)无类似的参数或函数能直接进行权重的赋值,我尝试了value,values之类的,似乎是read-only,修改这个值好像不会对权重产生变化。

想问下各位大佬是否有其他的直接对权重赋值的方法,或者其他能帮助加快这个权重复制的过程的方法。

模型拷贝的代码如下(paddle以及对应pytorch代码)pytorch代码未出现此情况,

#paddle
@paddle.no_grad()
def _momentum_update(self):
    for model_pair in self.model_pairs:
        for param, param_m in zip(model_pair[0].parameters(), model_pair[1].parameters()):
            param_m.set_value(param_m * self.momentum + param * (1. - self.momentum))

#pytorch
@torch.no_grad()        
def _momentum_update(self):
    for model_pair in self.model_pairs:           
        for param, param_m in zip(model_pair[0].parameters(), model_pair[1].parameters()):
            param_m.data = param_m.data * self.momentum + param.data * (1. - self.momentum)

其中model_pair[0]和model_pair[1]即为对应的模型,如ViT和对应的momentum模型。

 

0
收藏
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户