我在想是否可以使用tensorflow在多个GPU卡上并行地在相对较小的数据上训练多个小模型(通过在单个图形中以“独立”的方式放置它们)。这对于快速超参数扫描非常有用。
我天真的期望是,只要模型和数据适合卡存储器,就应该几乎不会将执行时间与模型数量相关联。
我使用了带有4张Tesla K80卡的系统来测试它。模型以循环方式放置在GPU上(第一个模型 - GPU0,第二个 - GPU1,......,第五个 - GPU0再次)。 4个独立的数据副本也放在GPU上。我看到执行时间与模型数量的依赖性如下:
从类似步骤的行为看,一张卡片能够适应一个模型(当某个卡上放置一个额外的模型时,我们会在图上“加强”)。我知道如何才能达到理想的性能(即只要卡片内存不饱和,就不会对所安装的模型数量的执行时间产生依赖性)?
更多信息:
nvidia-smi为每张卡提供了354 MB内存利用率(当模型拟合与gpu_options.allow_growth = True运行时),因此剩余大量可用内存
源代码(改编自tensorflow udacity课程)可在https://github.com/fruboes/parallel-small-models上使用 - 为简化而训练相同的模型