具有定制培训步骤的Tensorflow分布式培训

问题描述

我正面临缓慢的训练,我试图通过使用Tensorflow的Strategy API来利用所有4个GPU来扩大训练过程。

我正在使用MirrorStrategy并使用experimental_distribute_dataset对数据集进行分区。

我的训练数据的本质是稀疏矩阵和稠密矩阵的混合。 I'm using a generator to construct my dataset从数据中选择随机索引)。但是,在我当前的TF(2.1)generators don't support sparse matrices版本中。 sparse_matrix没有静态大小,并且是Ragged张量。

这有点丑陋并且可以解决,但是我将sparse_matrix_list直接传递给了train函数,并通过拥有一个全局队列来对其进行索引,该全局队列通过将随机索引推入内部来填充generator

在这方法可以正常工作,但是速度太慢了,我想尝试使用所有GPU进行训练。由于我不得不将sparse_matrix_list手动划分为num_workers个拆分,因此问题变得更加严重。

但是,当前的主要问题是训练过程似乎不是并行,并且副本(GPU)似乎是按顺序运行的。。我通过nvidia-smi进行了验证,并登录train_process函数

我以前没有进行分布式培训的经验,也不知道为什么会这样,如果有人对如何更好地处理spare和{{1 }}数据。我目前在获取数据方面面临巨大的瓶颈,这些数据未充分利用GPU(在10%至30%之间波动)

dense

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)