将批大小保持2的幂有什么优势?


16

在机器学习中训练模型时,为什么有时将批次大小保持为2的幂是有利的?我认为最好使用最大适合GPU内存/ RAM的大小。

答案声称,对于某些包装,批次大小以2的幂为佳。有人可以为此提供详细说明/链接到详细说明吗?对于所有优化算法(梯度下降,反向传播等)还是仅其中某些算法,这是正确的吗?

Answers:


20

这是虚拟处理器(VP)与GPU的物理处理器(PP)对齐的问题。由于PP的数量通常是2的幂,因此使用与2的幂不同的VP数量会导致性能下降。
您可以看到VP在PP上的映射,就像一堆大小等于PP数的切片一样。
假设您有16 PP。
您可以在它们上映射16 VP:1 VP映射到1 PP。
您可以在它们上映射32 VP:2片16 VP,1 PP将负责2 VP。
在执行过程中,每个PP将执行他负责的第一个VP的工作,然后执行第二个VP等的工作。
如果使用17 VP,则每个PP都会执行其第一个PP的工作,然后1个PP将执行执行第17个AND的工作其他的则什么也不做(如下所述)。
这是由于GPU使用的SIMD范例(在70年代称为向量)。这通常被称为数据并行性:所有PP都在同一时间执行相同的操作,但对不同的数据执行相同的操作。请参阅https://en.wikipedia.org/wiki/SIMD
更准确地说,在具有17 VP的示例中,一旦完成了第一片的工作(所有PP都完成了其第一VP的工作),所有PP都将执行相同的工作(第二VP),但是只有一个拥有一些要处理的数据
与学习无关。这只是编程的东西。


那么说批量大小应该是PP数量的倍数是否更准确?也就是说,在您的示例中,我们可以将16x3 = 48 VP映射到16 PP?
1west

是。好吧...如果您自己进行VP-> PP映射,请确保您100%正确。如果您使用图书馆,并要求80 VP。我不确定。我并不是说你错了。如果该比率是2的幂,则可以使用非常经典且简单的优化方法。如果VP的楼上邻居的数量不是2的乘方,例如5,则lib将无法像以前那样轻易地使用经典O(log_2(n))访问邻居的内存。
jcm69

@ jcm69您能否解释或给出用于VP存储器访问的log_2(n)访问时间的链接
Arayan Singh,

那只是在计算机科学中处理对象的一般考虑。当您确定对象遵循2条规则的力量时,可以通过二进制搜索树,二进制移位等轻松,安全地管理它们。不确定时,您可能需要进行一些附加测试和更复杂的算法。无论如何,这与最初的问题有点距离;)
jcm69,19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.