Pytorch 深度强化学习模型训练速度慢

最近一直在用Pytorch来训练深度强化学习模型,但是速度一直很慢,Gpu利用率也很低。

一、起初开始在训练参数 batch_size = 200, graph_size = 40, epoch_size=100000, 训练速度一个epoch要4h,人麻了…
调整之前,一个epoch要4小时
二、经过网上查找资料后,对batch_size 和训练数据DataLoaderpin_memory,num_workers参数进行了修改调试,结果还是不行,虽然GPU利用率有提高一点,但是速度还是没改进。
三、之后才发现是强化学习的问题环境代码有问题。

问题1.在问题环境中用了两个 双重for循环来对解决数据,源代码如下:

for i in range(arrive_time.shape[0]):
      if arrive_time[i] > tw[rng, a, 1][i]:
          delay_time[i] = arrive_time[i] - tw[rng, a, 1][i]
      else:
         delay_time[i] = 0

主要是 利用for循环来判断符合一些条件的值并进行处理,虽然类型都是Tensor,调试时也没感觉耗费很多时间,但是把这部分代码去掉后,该做Tensor的函数进行操作后模型训练时间有了提高。
修改后的代码:利用where()函数来进行判断并处理

delay_time_temp = arrive_time - tw[rng, a, 1]
zero2 = torch.zeros_like(delay_time_temp)
delay_time = torch.where(delay_time_temp < 0, zero2, delay_time_temp)

问题2. 有冗余的无意义代码存在
在调试代码的过程中自己有写很多没用的tensor变量和其他一些代码,之后忘记注释掉。这部分也浪费时间。在注释之后时间又有了一部分提高。在相同参数下一个epoch 时间到了十几分钟。
修改后的时间
发愁了好几天,记录一下,在训练模型时要避免使用过多的for 语句或者一些冗余的代码,对于tensor 还是要用相关函数来进行处理。具体原因还不太懂,但是速度个人还是不满意,提高graph_size 后速度还是会到30分钟左右,希望还能在优化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xxwl.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值