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

时间:2017-07-15 13:46:24

标签: tensorflow deep-learning gpu scalability

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

插入额外的GPU卡会自动解决这个问题(假设所有GPU卡的总内存量足以容纳批量及其渐变)?或者纯粹的张量流是不可能的?

我读过,有比特币或以太矿工,可以用多张GPU卡建造采矿场,这个农场可以更快地开采。

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

1 个答案:

答案 0 :(得分:2)

  

插入额外的GPU卡会自动解决这个问题吗?

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

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

  

纯张力流是不可能的?

可以使用tensorflow,但您必须更改为单个火车/推理设备编写的代码。

  

我读过,有比特币或以太矿工,可以用多张GPU卡建造采矿场,这个农场将更快开采。   采矿农场对深度学习的表现也会更好吗?

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

这意味着如果您的单个GPU可以猜测1000个散列/秒,则2个相同的GPU可以猜测2 x 1000个散列/秒。

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

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