Press "Enter" to skip to content

深度神经网络部署的自动调优

什么,为什么,最重要的是……如何?

照片由S. Tsuchiya在Unsplash上提供

介绍

用于比较不同神经网络(NN)架构的指标之一是训练所需的时间。需要几个小时?几天?几周?通常情况下,通过更新用于训练的硬件可以改进这一点。用更强大的GPU替换较低级的GPU,将训练并行化到多个GPU上等等。推理步骤也有类似的情况。我们将训练好的网络部署在嵌入式设备上,比如微控制器吗?还是在移动设备上运行?也许网络太大了,我们需要一个嵌入式GPU甚至是一个服务器大小的GPU来执行它。

让我们选择其中一个。我们将我们的NN编译为我们的设备,并测试它运行的速度有多快。哦不!它不能满足我们的延迟要求!我们需要NN的运行速度快于1秒,而我们的NN需要2秒才能运行!现在有什么选择?

  • 用更强大的设备替换:这可能非常麻烦,特别是当存在严格的应用约束条件时。也许您只能使用特定的已认证硬件。或者您有困难的能源约束需要满足。
  • 减少NN的复杂性:这也可能很困难,因为如果不小心进行,可能会损失NN的质量。
  • 为您的特定硬件自动调整NN。

等等,什么?你说的自动调整是什么意思?好吧,这就是本文的主题。请跟我一起学习这个迷人的技术。在本文中,我将尝试从高层次的角度解释这个主题。如果您一直阅读到文章的最后,您将找到可以用于优化您的NN的软件框架的示例,以及链接到它们的教程。

自动……为什么?

如果您读过我的上一篇文章,您可能还记得对计算机体系结构的非常简单的解释。在那里,我谈到了两个元素:计算单元和存储单元。

为了执行NN的一个层,数据需要在存储层次结构中传输,直到它到达计算单元。然后,计算单元将执行……

Leave a Reply

Your email address will not be published. Required fields are marked *