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

Will adding GPU cards automatically scale tensorflow usage?

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

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

我读到过,有比特币或以太币矿工,可以用多个 GPU 卡建造矿场,而且这个矿场的挖矿速度会更快。

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

Will plugging additional GPU cards automatically solve this problem?

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

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

it is impossible with pure tensorflow?

tensorflow 可以,但您必须更改为单个 train/inference 设备编写的代码。

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(工作量证明)工作的区块链需要使用类似蛮力的方法来解决难题(它们使用不同的输入计算大量的哈希值,直到找到有效的哈希值)。

这意味着如果您的单个 GPU 可以猜出 1000 hash/s,那么 2 个相同的 GPU 可以猜出 2 x 1000 hash/s。

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

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