首页 Paddle框架 帖子详情
静态图模式下,如何固定Variable在显存中,使得每个Batch不用重新赋值?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 639 4
静态图模式下,如何固定Variable在显存中,使得每个Batch不用重新赋值?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 639 4
  • 版本、环境信息:
       1)PaddlePaddle版本:1.6
       2)GPU:Tesla V100 16G2 32G1 CUDA10.0 cudnn7.3
       4)系统环境:Ubuntu 18.04
  • 训练信息
       1)单机多卡
       2)显存信息 Tesla V100 16G2 32G1

my_variable = fluid.layers.create_global_var(value=0, shape=[10, 1000, 1000], dtype='float32', name='my_variable', persistable=True, force_cpu=False)
fluid.layers.assign(my_np_array, my_variable)
result = fluid.layers.matmul(my_variable, my_previous_result_variable)

目前在训练的过程中,每个batch的训练都会自动给my_variable赋值一次,即每个batch进行时都会进行assign操作,由于my_np_array很大,所以很占内存,而且极大影响了整体训练时间,
我想对my_variable在整个训练过程中只赋值一次,请问如何实现?
谢谢!

0
收藏
回复
全部评论(4)
时间顺序
AIStudio792074
#2 回复于2019-11

可以试试将my_variable作为参数,在startup_program中创建my_variable,然后用numpy数组初始化一次。

参考这个文档:
https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/howto/training/save_load_variables.html#numpy

0
回复
AIStudio792073
#3 回复于2019-11

可以试试将my_variable作为参数,在startup_program中创建my_variable,然后用numpy数组初始化一次。

参考这个文档:
https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/howto/training/save_load_variables.html#numpy

您好,非常感谢您的回复,我试了一下这个方法好像不太行,在日志里这个变量还是每个Batch赋值一次

0
回复
AIStudio792074
#4 回复于2019-11

是不是用的不太对,startup只会run一次,如果是按文档介绍的方法,my_variable只在startup里初始化一次,后面不会再初始化的

每个batch赋值一次,你可能要看一下是哪个位置还在调用

0
回复
AIStudio792073
#5 回复于2019-11

是不是用的不太对,startup只会run一次,如果是按文档介绍的方法,my_variable只在startup里初始化一次,后面不会再初始化的

每个batch赋值一次,你可能要看一下是哪个位置还在调用

你好,上面是我弄错了,这个办法是对的,谢谢!

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