基于让人工智能可快速大规模布建的需求,自动机器学习(AutoML)和神经网络架构搜索(NAS,Neural Architecture Search)成为相当受到关注的新领域,NAS 旨在利用算法自动设计出神经网络,优点是快速且高效,缺点则是需要大量的运算能力,成本昂贵。
MIT电子工程和计算机科学系助理教授韩松(清华大学电子系2008级)
麻省理工学院(MIT)电子工程和计算机科学系助理教授韩松与团队人员蔡涵和朱力耕设计出的 NAS 算法—ProxylessNAS,可以直接针对目标硬件平台训练专用的卷积神经网络(CNN),而且在 1000 类ImageNet 大规模图像数据集上直接搜索,仅需 200 个GPU 小时,如此便能让 NAS 算法能够更广泛的被运用。该论文将在 5 月举办的 ICLR(InternationalConference on Learning Representations)大会上发表。
AutoML是用以模型选择、或是超参数优化的自动化方法,而 NAS 属于 AutoML 概念下的一个领域,简单来说,就是用“神经网络来设计神经网络”,一来好处是可以加速模型开发的进度,再者,NAS 开发的神经网络可望比人类工程师设计的系统更加准确和高效,因此 AutoML 和 NAS 是达成 AI 普及化远景的重要方法之一。
DeepTech采访了韩松,他表示,AutoML是个很有前景的方向,架构搜索只是 AutoML 的一部分,它能自动化地找到一些过去人类探索不到的结构,反过来帮助人们设计高效的模型。然而,过去 NAS 算法的硬件效率有待提高:搜索过程需要很久的时间、而且搜出的模型的推理速度难以保证。NAS 和硬件结合,能带来很多新的设计策略。
ProxylessNAS为硬件定制专属的高效神经网络架构,不同硬件适合不同的模型
大幅减少计算成本
举例来说,谷歌所开发的NAS 算法,需要运行在 GPU 上 4.8 万个小时,才能生成一个用来做图像分类或检测任务的 CNN。当然,谷歌拥有庞大的 GPU 数量和其他专用硬件的资源,这对许多其他人来说是遥不可及的方法。而这就是 MIT 研究人员希望解决 NAS 计算昂贵的问题。他们提出的 ProxylessNAS 算法,仅需 200 个 GPU 小时,就可以在 1000 类ImageNet 的大规模图像数据集上直接进行搜索,换算下来,比谷歌的 48,000 GPU 小时,快了 240 倍。而且,ProxylessNAS 可以针对特定的目标硬件平台上定制专属的深度学习模型,使其不仅准而且运行速度快。
“主要目标是实现人工智能在各种硬件平台上的普及,在特定硬件上提供“一键加速”的解决方案,帮助 AI 专家和非 AI 专家、硬件专家和非硬件专家有效率地设计又准又快的神经网络架构,”韩松说。同时,他也强调,NAS 算法永远不会取代人类工程师,“目的是减轻设计和改进神经网络架构所带来的重复性和繁琐的工作”。
路径级二值化和修剪
在该研究中,他们的做法是删除非必要性的神经网络设计组件,借此缩短计算时间、减少和内存开销来运行 NAS 算法。另一项创新则是让每个输出的 CNN 在特定硬件平台上(CPU、GPU 和移动设备)的运行效率比使用传统方法所设计的模型来得快速。在测试中,研究人员的 CNN 在手机上的测量速度,比相似精度的 MobileNet-V2 快了 1.8 倍。
CNN 能连接不同层(layer)的人工神经网路,受到大脑处理影像的视觉皮质(visual cortex)组织启发,适合处理视觉方面的任务,是计算机视觉领域十分流行的架构。一个 CNN 架构是由多个可调整参数的计算层(称为“过滤器”),以及这些过滤器之间可能的连接所组成。
这种连接方式多种多样,由于可以选择的架构数量(称为“搜索空间”search space)非常庞大,所以想应用 NAS 在海量图像数据集上创建一个神经网络,计算量总是个很大的问题,所以工程师通常在较小的代理数据集上运行 NAS,再把将训练好的 CNN 迁移到目标任务上,但是,这种方法降低模型的准确性,此外,把一样的模型架构套用在所有的硬件平台,也难以发挥各种硬件的最佳效率。
研究人员直接在ImageNet 大型数据集上训练和测试他们开发的新 NAS 算法,首先,他们创建一个搜索空间,包含了所有可能的 CNN“路径”(路径是指层和过滤器如何连接来处理数据),让 NAS 算法可以自由寻找出一个最佳架构。
这种方法通常把所有可能的路径存储在内存中,如果用传统的架构搜索办法直接在千类 ImageNet 搜索,就会超过 GPU 内存的限制。为了解决此问题,研究人员利用了一种称为“路径级二值化”(path-level binarization)的技术,一次只在内存中存放一个采样路径,大幅节省内存的消耗。
接着,他们将这种二值化与“路径级修剪”(path-level pruning)结合,通常该技术是用来学习神经网络中有哪些神经元(neuron)可以被删除,而且不会影响输出。不过,研究人员 NAS 算法是采用修剪整个路径以取代丢掉神经元,如此能够完全改变神经网络的架构。
在训练过程中,所有路径最初都被给予相同的选择概率,然后,该算法跟踪这些路径,并记下输出的准确性和损失,进而调整路径的概率,借此优化准确性和效率。最后,该算法修剪掉所有低概率的路径,仅保留最高概率的路径,形成最终版的 CNN 架构。
MITNews 报道韩松团队新的神经网络架构搜索算法
为硬件定制网络结构
另一项重要创新就是使NAS 算法“hardware-aware”,也就是说,它会为一个硬件平台量身定制专用的网络结构,使得推理的延迟更低。
韩松解释,hardware-aware是指 NAS 搜出来的模型不仅准确率高,而且在硬件实测的速度也要快,使得搜出来的模型容易落地。然而,为了量测移动设备的模型推理延迟,大公司的作法是利用大量的手机来实测,成本很高;而 ProxylessNAS 则是给延迟建模,这样可以让延迟可导(make latencydifferentiable),便于对延迟进行端到端的优化,而且只要使用一台手机,成本低、精度误差小于 1 毫秒。
对于网络中的每个所选层,算法利用上述的延迟预测模型来采样,然后使用这些信息设计出一个快速运行的架构,同时实现高精度。在实验中,研究人员的 CNN 在移动设备上的运行速度几乎是现有 MobileNet-V2 模型的 2 倍。
韩松也提到一个有趣的结果,有些卷积核结构曾被误以为效率太低,但在研究人员的测试中,这些架构在某些硬件上是高效的。
他指出,比如 7x7 这样的大卷积核最近几年被比较少被人使用,因为 3 个 3x3 卷积核和 1 个 7x7 卷积核有同样的感受野(receptivefield),而 3 个 3x3 卷积核有 27 个权重,1 个 7x7 卷积核有 49 个权重,仿佛 7x7 不如 3 个 3x3 能让模型更小。
但实际在 GPU 上 invoke kernel call 的代价很高,执行多个小型过滤器不如执行单个大型过滤器效率高,大的 kernel call 更适合 GPU 这样并行度高的硬件。“所以在 GPU 上,ProxylessNAS 在较深的层自动选取了大量 7x7 的卷积核,这是很有意思的,”他说。
GPU 的并行运算特性能够同时进行多个计算,因此,执行单个大型过滤器时,反而比处理多个小型过滤器更高效。“这打破了过去的想法”,“搜索空间越大,可以找到的内容就越多。你不知道某个东西是否会比过去人类经历表现得更好,那就让 AI 来探索,”韩松说。
他进一步指出,类似例子在量化中也有体现,如他们最近的工作 HAQ: Hardware-aware Automated Quantization (CVPR 19 oral paper) 发现,不同硬件,如边缘设备(edge device)和云端设备(cloud device),对量化策略的偏好是不同的。不同层在不同硬件上所需的比特数也不一样,有些层是计算受限,有些层是内存受限;在这样大的设计空间,人类给每种网络、每种硬件订制专属的量化策略费时费力,基于学习的策略可以做得更好。
他认为,这也说明研究specialization 和 domain-specific hardware architecture 的重要性。最近越来越多好的深度学习工作都是算力推动的,比如用于自然语言预训练的 Bert。很多场景落地也需要低功耗的硬件支持,比如端上智能和 AIoT。所以未来算法和算力的协同研究是值得关注的方向。
帮助人类减轻做琐事或工作的负担,一直是大家对 AI 的期望。这也就是为什么 AutoML 和 NAS 受到重视的原因之一,所以如果要让 NAS 普及,除了克服上述的计算成本高之外,还有哪些需要一步改善的问题?面对这个提问,韩松给了两个很明确的方向,一是设计空间(design space)的设计,目前的 NAS 性能好坏很大程度依赖设计空间的选取,这部分还有很多人为的经验。二是对速度和资源的优化,为了让 NAS 更容易在工业界落地,有两个条件:搜索的过程占用的计算资源要低,搜索出的模型硬件效率要高——最终实现让硬件效率和算法性能同步提升。