在 Google Colab 中使用多个 GPU 进行 Tensorflow 分布式训练

Mar*_*son 6 gpu distributed-computing tensorflow google-colaboratory

我最近对将分布式训练纳入我的 Tensorflow 项目感兴趣。我正在使用 Google Colab 和 Python 3 来实现具有自定义分布式训练循环的神经网络,如本指南所述: https: //www.tensorflow.org/tutorials/distribute/training_loops

在该指南的“创建分配变量和图形的策略”部分下,有一些代码的图片,这些代码基本上设置了“MirroredStrategy”,然后打印生成的模型副本的数量,请参见下文。

控制台输出

据我了解,输出表明 MirroredStrategy 仅创建了模型的一个副本,因此仅使用一个 GPU 来训练模型。我的问题:Google Colab 是否仅限于在单个 GPU 上进行训练?

我尝试过在使用和不使用 GPU 加速的情况下调用 MirroredStrategy(),但每次都只获得一个模型副本。这有点令人惊讶,因为当我在 Python 中使用多处理包时,我得到了四个线程。因此,我预计可以在 Google Colab 中并行训练四个模型。Tensorflows 实现分布式训练是否存在问题?

Ris*_*wat 1

在google colab上,你只能使用一个GPU,这是Google的限制。但是,您可以在不同的 GPU 实例上运行不同的程序,因此可以通过创建不同的 colab 文件并将它们与 GPU 连接,但您不能将相同的模型并行放置在许多 GPU 实例上。镜像策略没有任何问题,从个人经验来看,如果你有多个 GPU,它就可以正常工作。