Caffe Tutorial(Caffeinated Convolution:how Caffe computes convolutions)

Caffe的卷积策略是将问题减少到矩阵 - 矩阵乘法。这种线性代数计算在BLAS库中进行了较大调整,并可在GPU设备上进行高效计算。

更多细节:Convolution in Caffe: a memo.

在过去的几个月里,与人们聊起Caffe,我得到的一个共同评论是:“Caffe的卷积有一些内存问题。”

虽然这在某种意义上是真的,但我不确定这是否是一个真正的问题 -在我仅用两个月的时间编写Caffe框架并且面临即将到期的论文截止日期时,这是研究生期间的设计选择。事实证明,它有自己的优点(比任何微不足道的实现都快,除非你真正认真优化)和缺点(大内存消耗)。 如果你有兴趣,更详细的解释如下。

比任何普通的实现都要快,除非你真的认真地进行优化。

首先,在某种意义上,卷积是很难优化的。虽然传统的计算机视觉卷积定义通常只是一个与单个滤波器卷积的单通道图像(实际上是英特尔IPP的卷积手段),但在深度网络中,我们通常会使用多输入通道执行卷积(通常这个词是可与“深度”互换)和多个输出通道。

简单的说,假设我们在每个输入location都有一个深度为D的W*H图像。对于每个location,我们得到一个K*K的patch,它可以被认为是一个K*K*D矢量,并对其应用M个滤波器。在伪代码中,可以表示为(忽略边界条件):

for w in 1..W
  for h in 1..H
    for x in 1..K
      for y in 1..K
        for m in 1..M
          for d in 1..D
            output(w, h, m) += input(w+x, h+y, d) * filter(m, x, y, d)
          end
        end
      end
    end
  end
end

优化这样一个复杂的嵌套for循环是不简单的。如果你已经尝试过优化矩阵乘法,那么你知道这其中涉及很多技巧。在我的博士学位第三年,我在伯克利的CS267(并行计算)课上做了这个尝试,我们获得了最高性能[1],其中包括两层缓存,展开的最内层计算和SSE2(AVX在我们使用的集群上不可用)。卷积的优化只能是更复杂的。

我很久以来就非常钦佩Alex Krizhevsky在cuda-convnet方面的出色优化[2]。不幸的是,我当时不得不完成我的论文,并且我可能不像他那样精通GPU。但我仍然需要快速卷积。因此,我采取了一种更简单的方法:将问题简化为更简单的问题,而其他人已经对这类问题进行了很好的优化。

诀窍就是布置所有本地patch,并将它们组织成(W * H,K * K * D)矩阵。在Matlab中,这通常被称为im2col操作。之后,考虑滤波器也是一个(M,K * K * D)矩阵,卷积自然会减少为矩阵乘法(Gemm in BLAS)问题。我们拥有令人印象深刻的BLAS库,如MKL,Atlas和CuBLAS等。这也适用于GPU,尽管GPU内存的确比其CPU同胞更“珍贵”。但是,经ImageNet等较大模型的验证,Caffe一直工作得很好。由于GPU硬件的最新进展,它甚至能够使用这些模型处理视频。另一个好处是,由于BLAS通常是由BLAS分销商(如Intel和Nvidia)针对所有平台进行优化的,所以我们不需要担心特定平台的优化,并且可以自然地认为,这些BLAS库支持的所有平台几乎都可以实现相当快的速度。

对我而言,有点令人惊讶的是,这样的“懒惰优化”相当有效,比其他几种方法更好,最近才被强大的Krizhevsky优化的cuda-convnet2代码殴打(如预期的)[3]:

https://github.com/soumith/convnet-benchmarks(as of Jul 27, 2014)

所以这就是内存问题的故事。我不是故意要捍卫它 - 无论如何,它都被设计成临时解决方案。每当这个词弹出时,它让我想起这个[4]:

// somedev1 -  6/7/02 Adding temporary tracking of Login screen
// somedev2 -  5/22/07 Temporary my ass

所以我们正在通过伯克利人和合作者进行很多改进 - 事情显然会很快好起来 - 预计今年秋季将会有更快更有效的内存卷积。

对于我来说,研究生时编写Caffe所学到的经验教训就是简化:将我的问题转变为已解决的问题。它有时会burn[5],但如果有必要,可以随后进行改进。



猜你喜欢

转载自blog.csdn.net/littlestudent12/article/details/80852605