面向专用硬件优化神经网络的策略

面向专用硬件优化神经网络的策略 面向专用硬件优化神经网络的策略随着神经网络规模的不断扩大在设备端部署它们越来越需要能够并行化常见运算的专用硬件。但为了获得最高效率仅仅针对网络优化硬件是不够的网络本身也应该针对硬件进行优化。优化神经网络的标准方法是通过神经网络架构搜索其目标是同时最小化网络规模及其执行的浮点运算次数。但这种方法不适用于神经芯片因为神经芯片通常可以更快地执行易于并行化但浮点运算次数较高的任务而难以并行化但浮点运算次数较低的任务则执行较慢。最小化延迟是一个比最小化浮点运算次数更复杂的优化目标因此在某设备硬件组我们开发了多种策略使神经网络架构搜索能够针对某新型神经引擎系列加速器优化网络架构。这些策略涉及对架构搜索空间进行裁剪例如降低陷入局部最优解的可能性。我们还发现针对特定任务将一些人工直觉与神经网络架构搜索结果相结合可以帮助我们更可靠、更高效地将结果推广到新任务上。在涉及多个不同机器学习任务的实验中我们发现我们的神经网络架构搜索策略可以将延迟降低高达55%。神经网络架构搜索的类型神经网络架构搜索需要三要素搜索空间定义即指定构建网络可用的基础模块成本模型它是网络精度、延迟和内存的函数以及优化算法。我们使用性能预估器来测量延迟和内存占用但要测量精度我们必须训练网络。这是一个主要瓶颈因为训练单个网络可能需要数天时间。对数千种架构进行采样将耗费数千个GPU日这显然既不实际也不环保。神经网络架构搜索算法分为三类它们需要训练网络的次数不同多阶段法、单次法和零次法。多阶段法在每次迭代中对一组架构进行采样。每个网络都被训练并评估其精度和性能然后基于它们的成本对下一组架构进行采样。进化算法或基于强化学习的算法通常用于多阶段方法。单次法从一个称为超网的大网络开始该网络包含多个可能的子图。在训练过程中这些子图开始收敛到一个单一的、较小的网络。单次方法设计为仅训练一次但其训练时间比多阶段方法中单个网络的训练时间长得多。零次法的工作原理类似于多阶段方法主要区别在于网络从未被训练。作为精度的替代指标我们使用网络的可训练性评分该评分是根据网络的拓扑结构、非线性和运算来计算的。零次方法收敛最快因为计算评分在计算上非常便宜。缺点是可训练性与模型精度的相关性可能不佳。搜索空间裁剪神经网络架构搜索的成本函数可以可视化为一个地形图每个点代表一个潜在的架构。基于浮点运算次数的成本函数会随着网络尺寸或通道数等因素单调变化也就是说如果你找到了一个成本下降的方向可以确信继续沿着这个方向前进不会导致成本上升。然而加入加速器感知的约束条件会引入更多渐近线即成本从下降转为上升的点从而破坏了函数的单调性。这导致地形变得更加复杂和崎岖。为了解决这个问题我们减少了搜索空间中的选项数量。我们主要探索卷积架构这意味着输入被分解为几个不同的分量每个分量在网络中都有自己的通道。反过来每个通道中的数据会以几种不同的方式进行过滤每种过滤都涉及不同的数据卷积。以前我们会以1为步长探索通道数而现在我们只考虑少数几个通道大小。我们将通道大小的选项限制在对神经引擎的并行度因子有利的特定值上。并行度因子是可以并行执行的操作如点积的数量。在某些情况下我们甚至在搜索空间中添加了深度乘数比率用于在整个模型中缩放通道数。这些改进可以想象为在更平滑的地形上迈出更少但更大步的步伐而不是试图穿越因成本函数中加入加速器感知性能而导致的崎岖地形。在优化过程中由于选项数量减少它们带来了更快的收敛速度并且由于裁剪后的搜索空间具有单调性还提高了稳定性和可靠性。关键细节在于我们的性能预估器。我们不是在实际硬件或模拟器上部署架构来获取性能指标而是使用一个机器学习回归模型来估计它们该模型是在不同算子或子图的测量值上训练的。在推理时预估器会将查询的架构分解为子图并使用回归模型估计每个子图的性能。然后它会累加这些估计值以给出模型级的性能。这种基于回归器的设计简化了我们的神经网络架构搜索框架因为它不再需要编译、推理或硬件。这项技术使我们能够在设计阶段测试加速器甚至在为它们开发定制编译器和硬件模拟器之前。将神经网络架构搜索产品化专家在环裁剪搜索空间提高了收敛速度、稳定性和可靠性但将其转移到新的用例并不简单。例如为检测器模型进行的神经网络架构搜索结果可能不易转移到分类模型。另一方面由于时间限制为每个新数据集从头运行神经网络架构搜索可能不可行。在这些情况下我们发现结合神经网络架构搜索结果和人类专业知识是最快的方法。当我们在不同数据集上进行神经网络架构搜索时我们看到了一些共同模式例如将卷积层与之前的卷积层融合减少通道数并使它们与硬件并行度因子对齐。特别是在倒置瓶颈块中融合卷积层对提高效率贡献最大。仅通过这些修改我们观察到延迟降低了高达50%而一个完全收敛的神经网络架构搜索模型会产生略好的53%的降低。在从头运行神经网络架构搜索不可行的情况下人类专家可以依赖数学直觉和对类似数据集上神经网络架构搜索结果的观察来构建所需的模型架构。成果与产品影响我们将此技术应用于某设备产品组合中的多个产品从Echo Show和Blink家庭安全产品到最新的家用消费机器人Astro。1. 将Echo Show的检测延迟减半Echo Show运行一个模型来检测人体存在并定位房间内被检测到的人。原始模型使用了倒置瓶颈块。我们使用加速器感知的神经网络架构搜索将此模型的延迟降低了53%。我们对深度乘数以及用融合倒置瓶颈块替换倒置瓶颈块的机会进行了搜索。要求是在提高延迟的同时保持原始模型的平均精度均值不变。我们的V3模型将延迟提高了超过53%即速度提升2.2倍同时保持平均精度均值分数与基线相同。神经网络架构搜索后的发现并非每次倒置瓶颈块融合都能改善延迟和精度。较后层更大用融合层替换它们会损害性能。对于选择融合的层浮点运算次数如期增加但延迟并未增加。2. 使模型适配Blink泛光摄像头的严苛内存预算Blink摄像头使用分类模型进行安全辅助。我们的目标是将模型参数和峰值激活内存控制在严苛的内存预算内。在这种情况下我们将神经网络架构搜索技术与专家在环相结合以提供微调。在分类数据集上的神经网络架构搜索结果提供了关于哪些算子/子图更改可以从加速器设计中获益的直觉。专家建议是用标准卷积替换深度卷积并通过使整个模型的通道数为偶数最好是并行度因子的倍数来减少通道数。通过这些更改模型开发者能够将模型大小和中间内存使用量减少47%并使模型符合预算要求。3. 为机器人技术实现快速语义分割在机器人技术背景下语义分割用于理解机器人与之交互的对象和场景。我们对此模型的目标是将延迟减半。我们的起点是一个为在CPU上运行而优化的语义分割模型。对于此模型我们搜索了不同的通道大小、融合方式以及输出和输入维度。我们使用多阶段方法结合进化搜索算法。神经网络架构搜索为我们提供了多个具有不同性能的候选模型。最佳候选模型能够将延迟减半。4. 通过设备端推理保障用户隐私某神经引擎支持在设备上进行大模型推理因此我们可以在不将数据发送到云端的情况下处理麦克风和视频馈送。例如某神经引擎使Alexa能够在设备上执行自动语音识别。设备端处理还提供了更好的用户体验因为推理流程不会受到间歇性连接问题的影响。在我们的神经网络架构搜索工作中我们发现更大、更精确的模型现在也可以在设备上运行且不会影响延迟。使边缘AI可持续发展我们之前提到需要完整训练的多阶段神经网络架构搜索可能耗费高达2000个GPU日。然而通过本文中描述的某些技术我们能够在大大缩短的时间内创建高效的架构使神经网络架构搜索更具可扩展性和可持续性。但我们的可持续发展努力不止于此。由于其并行性和混合精度特性神经引擎比通用CPU更节能。对于一百万个普通用户而言差异每年达到数百万千瓦时的数量级。当我们通过神经网络架构搜索优化模型时我们增加了设备同时运行更多神经网络模型的能力。这使我们能够使用更小的应用处理器并且在某些情况下使用更少的处理器。通过这种方式减少硬件占用我们进一步减少了设备的碳足迹。未来工作我们已经认识到裁剪需要一位深入了解硬件设计的专家。这可能无法扩展到未来更复杂的硬件世代。我们还认识到在时间紧迫的情况下让专家参与仍然比从头运行神经网络架构搜索更快。因此我们正在持续研究具有加速器感知能力的神经网络架构搜索算法如何处理大型搜索空间。我们还致力于通过探索如何将三类算法结合来提高搜索算法的效率和效果。我们还计划通过剪枝和聚类引入稀疏性来探索模型优化。敬请期待FINISHED更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手或者 我的个人博客 https://blog.qife122.com/对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享