tensorflow - 添加 GPU 卡会自动扩展 tensorflow 使用量吗?

标签 tensorflow deep-learning gpu scalability

假设我可以使用 tensorflow 在我的 GTX 1070 卡上使用样本大小 N、批量大小 M 和网络深度 L 进行训练。现在,假设我想使用更大的样本 2N 和/或更深的网络 2L 进行训练并消除内存错误。

插入额外的 GPU 卡会自动解决这个问题吗(假设所有 GPU 卡的内存总量足以容纳批处理及其梯度)?或者纯 tensorflow 是不可能的?

我读到,有比特币或以太坊矿工,可以使用多个 GPU 卡构建矿场,并且该矿场的挖矿速度会更快。

矿场在深度学习方面也会表现更好吗?

最佳答案

Will plugging additional GPU cards automatically solve this problem?

没有。您必须更改 Tensorflow 代码以显式计算不同设备上的不同操作(例如:在每个 GPU 上计算单个批处理的梯度,然后将计算出的梯度发送到协调器,该协调器累积接收到的梯度并更新平均这些梯度的模型参数)。

此外,Tensorflow 非常灵活,允许您为每个不同的设备(或不同的远程节点,这是相同的)指定不同的操作。 您可以在单个计算节点上进行数据增强,并让其他节点处理数据而不应用此功能。您只能在一个设备或一组设备上执行某些操作。

it is impossible with pure tensorflow?

使用 tensorflow 是可能的,但您必须更改为单个训练/推理设备编写的代码。

I'v read, that there are bitcoin or etherium miners, that can build mining farm with multiple GPU cards and that this farm will mine faster. Will mining farm also perform better for deep learning?

使用 POW(工作量证明)工作的区 block 链需要使用类似暴力的方法来解决一个难题(它们使用不同的输入计算大量哈希值,直到找到有效的哈希值)。

这意味着如果您的单个 GPU 可以猜测 1000 哈希/秒,那么 2 个相同的 GPU 可以猜测 2 x 1000 哈希/秒。

GPU 正在进行的计算完全不相关:GPU:0 生成的数据不被 GPU:1 使用,并且计算之间没有同步点。这意味着一个 GPU 执行的任务可以由另一个 GPU 并行执行(显然每个 GPU 具有不同的输入,因此设备计算哈希值来解决网络给出的不同问题)

回到 Tensorflow:一旦您修改了代码以使用不同的 GPU,您就可以更快地训练您的网络(简而言之,因为您使用的是更大的批处理)

关于tensorflow - 添加 GPU 卡会自动扩展 tensorflow 使用量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45118918/

相关文章:

Tensorflow RNN 权重矩阵初始化

python - torch.transforms.normalize 中的数字是什么以及如何选择它们?

linux - 通过绕过 GUI 节省 GPU 内存

ubuntu - --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 是什么意思?

tensorflow - TensorFlow 中的 tf.nn.sigmoid 实现

tensorflow - 如何使用 tensorflow 数据集训练 sklearn 模型?

machine-learning - 有没有一种简单的方法可以在 TensorFlow 中实现 Optimizer.Maximize() 函数

machine-learning - 较深层的神经元如何能够比较浅/较早层的神经元做出更复杂的决策?

tensorflow - 使用keras通过预训练的VGG实现知觉丧失

tensorflow - TPU 比 GPU 慢?