Skip to main content

1

好的,根据提供的文本,我们可以深入分析一下为什么使用两个 GPU 进行训练会降低错误率。 这里的核心在于他们采用的并行化策略以及由此带来的网络结构和连接方式的变化,而非仅仅是算力的提升。

让我们逐步解析:

内存限制与模型分割: 单个 GTX 580 GPU 只有 3GB 的内存,这限制了可以在其上训练的网络的规模。 当网络太大无法在一个 GPU 上容纳时,他们选择将网络分散到两个 GPU 上。 这本身就意味着可以训练更大的模型,或者至少是更深的网络,因为可以容纳更多的参数。

跨 GPU 并行化的优势: 当前的 GPU 可以直接读写彼此的内存,而无需通过主机内存。 这对于并行化至关重要,因为它可以减少数据传输的瓶颈,提高效率。

定制的并行化方案: 他们采用的并行化方案并非简单的平分网络。 关键在于他们“基本上将一半的核(或神经元)放在每个 GPU 上,并采用了一个额外的技巧:GPU 仅在某些层中进行通信。” 这意味着:

层内并行: 在某些层(比如早期的卷积层),每个 GPU 处理一部分核或神经元。

层间选择性通信: GPU 之间并非在所有层都进行密集的通信。 例如,layer 3 从所有 kernel maps in layer 2 获取输入,而 layer 4 的 kernel 则仅从位于同一 GPU 上的那些 kernel maps 获取输入。

连接模式与正则化效应: 这种选择性的通信模式是降低错误率的关键。 文本明确指出:“选择连接模式是交叉验证的一个问题,但它允许我们精确地调整通信量,直到它成为计算量的一个可接受的部分。” 这暗示了以下几点:

引入结构化限制: 通过限制层间的连接,他们实际上引入了一种结构化的正则化。 每个 GPU 上的子网络专注于学习一部分特征,然后在某些层进行有限的交互。 这种结构化的限制可以防止网络过度拟合训练数据,从而提高泛化能力,降低错误率。

模仿“列式” CNN: 他们将这种架构与 Cireşan 等人提出的“列式” CNN 进行比较,并指出其相似之处。 “列式” CNN 的特点在于其模块化的结构,不同的“列”学习不同的特征,然后进行组合。 他们提出的双 GPU 方案在某种程度上模拟了这种思想。

实验结果佐证: 实验结果表明,与在单个 GPU 上训练的网络相比,双 GPU 训练将 top-1 和 top-5 错误率分别降低了 1.7% 和 1.2%。 这有力地证明了他们提出的并行化方案的有效性。

关于参数数量的补充说明: 脚注 2 解释了为什么单 GPU 网络最终卷积层的核数量与双 GPU 网络相同。 这是因为大部分参数位于全连接层,而他们并没有平分全连接层。 这个脚注实际上是在解释实验设计的细节,并强调了比较的复杂性。 尽管单 GPU 网络的参数量更大,但双 GPU 网络凭借其独特的并行化策略和结构化限制,仍然取得了更好的性能。

总结来说,两个 GPU 训练错误率下降的主要原因并非简单的算力提升,而是他们精心设计的并行化方案,该方案通过限制层间通信引入了一种结构化的正则化效应,类似于“列式” CNN 的思想,从而提高了模型的泛化能力,降低了错误率。 这种方法巧妙地利用了多 GPU 的特性,克服了单 GPU 的内存限制,并探索了新的网络结构设计思路。