ProxylessNAS:直接在目标任务和硬件上进行神经架构搜索——论文解读

简介: ProxylessNAS是一种直接在目标任务和硬件上进行神经架构搜索的方法,有效降低了传统NAS的计算成本。通过路径二值化和两路径采样策略,减少内存占用并提升搜索效率。相比代理任务方法,ProxylessNAS在ImageNet等大规模任务中展现出更优性能,兼顾准确率与延迟,支持针对不同硬件(如GPU、CPU、移动端)定制高效网络架构。

ProxylessNAS:直接在目标任务和硬件上进行神经架构搜索

Cai H, Zhu L, Han S. Proxylessnas: Direct neural architecture search on target task and hardware[J]. arXiv preprint arXiv:1812.00332, 2018.

第一章 引言与研究背景

神经架构搜索(NAS)在自动化神经网络架构设计方面取得了显著成功,特别是在图像识别和语言建模等深度学习任务中。然而,传统NAS算法的计算成本极其高昂,需要在目标任务上训练数千个模型,单次实验就需要$10^4$ GPU小时。这种计算密集性使得直接将NAS应用于大规模任务(如ImageNet)变得极其昂贵甚至不可能。

作为折中方案,Zoph等人提出在代理任务上搜索构建块的策略——包括训练更少的epoch、从较小的数据集(如CIFAR-10)开始,或使用更少的块进行学习。然后将表现最好的块堆叠并迁移到大规模目标任务。这种范式被后续的NAS算法广泛采用。然而,这些在代理任务上优化的块无法保证在目标任务上也是最优的,特别是当考虑延迟等硬件指标时。更重要的是,为了实现可迁移性,这些方法需要只搜索少数几个架构模式然后重复堆叠相同的模式,这限制了块的多样性并损害了性能。

图1描述:该图展示了ProxylessNAS与传统基于代理的方法的对比。左侧显示传统方法需要先在代理任务上学习,然后迁移到目标任务和硬件;右侧显示ProxylessNAS直接在目标任务和硬件上优化架构。图中还包含了三种不同NAS方法的GPU小时数和GPU内存对比:普通训练的NAS需要元控制器和代理;DARTS和One-shot不需要元控制器但需要代理;ProxylessNAS既不需要元控制器也不需要代理。

第二章 方法论详解

2.1 超参数化网络的数学构建

将神经网络表示为有向无环图$\mathcal{N}(e_1, \cdots, e_n)$,其中$e_i$代表图中的某条边。设$O = {oi}{i=1}^N$为包含$N$个候选原始操作的集合,包括各种卷积、池化、恒等映射和零操作。为了构建包含搜索空间中任何架构的超参数化网络,不将每条边设置为确定的原始操作,而是设置为具有$N$条并行路径的混合操作$m_O$。

在One-Shot方法中,给定输入$x$,混合操作$m_O$的输出定义为:
$$m_O^{\text{One-Shot}}(x) = \sum_{i=1}^{N} o_i(x)$$

在DARTS中,输出是加权和:
$$m_O^{\text{DARTS}}(x) = \sum_{i=1}^{N} p_i o_i(x) = \sum_{i=1}^{N} \frac{\exp(\alpha_i)}{\sum_{j=1}^N \exp(\alpha_j)} o_i(x)$$

其中权重通过对$N$个实值架构参数${\alphai}{i=1}^N$应用softmax计算得到。

2.2 路径二值化的创新机制

图2描述:该图详细展示了学习权重参数和二值化架构参数的过程。图分为两部分:左侧显示更新权重参数时,架构参数被冻结,二进制门控制哪条路径激活(例如CONV 3x3路径激活,其他路径不在内存中);右侧显示更新架构参数时,权重参数被冻结,不同的路径被激活用于梯度计算。图中用不同颜色区分了在内存中的特征图和不在内存中的特征图。

为了减少内存占用,ProxylessNAS在训练超参数化网络时只保留一条路径。引入$N$个实值架构参数${\alphai}{i=1}^N$,然后将实值路径权重转换为二进制门:

$$g = \text{binarize}(p_1, \cdots, p_N) = \begin{cases} [1, 0, \cdots, 0] & \text{以概率 } p_1 \\ [0, 1, \cdots, 0] & \text{以概率 } p_2 \\ \vdots & \vdots \\ [0, 0, \cdots, 1] & \text{以概率 } p_N \end{cases}$$

基于二进制门$g$,混合操作的输出为:
$$m_O^{\text{Binary}}(x) = \sum_{i=1}^{N} g_i o_i(x)$$

由于$gi \in {0, 1}$且$\sum{i=1}^N g_i = 1$,在任何时刻只有一条路径被激活。

2.3 二值化架构参数的梯度推导

架构参数不直接参与前向计算图,因此不能使用标准梯度下降更新。借鉴BinaryConnect的思想,使用$\partial L/\partial g_i$来近似$\partial L/\partial p_i$:

$$\frac{\partial L}{\partial \alpha_i} = \sum_{j=1}^{N} \frac{\partial L}{\partial p_j} \frac{\partial p_j}{\partial \alpha_i} \approx \sum_{j=1}^{N} \frac{\partial L}{\partial g_j} \frac{\partial p_j}{\partial \alpha_i}$$

对于softmax函数,有:
$$p_j = \frac{\exp(\alpha_j)}{\sum_{k=1}^N \exp(\alpha_k)}$$

其对$\alpha_i$的导数为:
$$\frac{\partial p_j}{\partial \alpha_i} = p_j(\delta_{ij} - p_i)$$

其中$\delta_{ij}$是Kronecker delta函数(当$i=j$时为1,否则为0)。

因此:
$$\frac{\partial L}{\partial \alpha_i} = \sum_{j=1}^{N} \frac{\partial L}{\partial g_j} p_j(\delta_{ij} - p_i)$$

2.4 两路径采样的内存优化策略

直接计算$\partial L/\partial g_j$需要计算并存储$o_j(x)$,这仍然需要$N$倍的GPU内存。ProxylessNAS的关键创新是将从$N$个候选中选择一条路径的任务分解为多个二元选择任务。直觉是:如果某条路径在特定位置是最佳选择,那么当它与任何其他路径单独比较时,它应该是更好的选择。

在架构参数的每次更新步骤中:

  1. 根据多项分布$(p_1, \cdots, p_N)$采样两条路径
  2. 屏蔽所有其他路径,候选数量临时从$N$减少到2
  3. 相应地重置路径权重${p_i}$和二进制门${g_i}$
  4. 使用梯度公式更新这两条采样路径的架构参数
  5. 重新缩放更新后的架构参数值,保持未采样路径的权重不变

第三章 处理硬件指标的算法设计

3.1 延迟建模与可微化

图3描述:该图展示了如何通过引入延迟正则化损失使延迟可微。左侧显示了网络结构,包含一系列可学习块,每个块都有多个候选操作(CONV 3x3、CONV 5x5、Identity、POOL 3x3等)。右侧显示了延迟计算公式:每个块的期望延迟是各操作延迟的加权和,整个网络的期望延迟是所有块期望延迟的总和,最终损失函数包含交叉熵损失、权重衰减和延迟正则化项。

将网络延迟建模为神经网络维度的连续函数。对于具有候选集${o_j}$的混合操作,每个$o_j$关联路径权重$p_j$,表示选择$o_j$的概率。可学习块(即混合操作)的期望延迟为:

$$E[\text{latency}_i] = \sum_{j} p_j^i \times F(o_j^i)$$

其中$E[\text{latency}_i]$是第$i$个可学习块的期望延迟,$F(\cdot)$表示延迟预测模型,$F(o_j^i)$是$o_j^i$的预测延迟。

$E[\text{latency}_i]$对架构参数的梯度为:
$$\frac{\partial E[\text{latency}_i]}{\partial p_j^i} = F(o_j^i)$$

对于包含一系列混合操作的整个网络,由于这些操作在推理时顺序执行,网络的期望延迟表示为:
$$E[\text{latency}] = \sum_i E[\text{latency}_i]$$

最终的损失函数为:
$$\text{Loss} = \text{Loss}_{\text{CE}} + \lambda_1\|w\|_2^2 + \lambda_2 E[\text{latency}]$$

其中$\text{Loss}_{\text{CE}}$表示交叉熵损失,$\lambda_1|w|_2^2$是权重衰减项,$\lambda_2 > 0$控制准确性和延迟之间的权衡。

3.2 基于REINFORCE的替代算法

考虑具有二值化参数$\alpha$的网络,更新二值化参数的目标是找到最优二进制门$g$以最大化奖励$R(\cdot)$。根据REINFORCE算法:

$$J(\alpha) = \mathbb{E}_{g\sim\alpha}[R(\mathcal{N}_g)] = \sum_i p_i R(\mathcal{N}(e = o_i))$$

梯度计算为:
$$\nabla_\alpha J(\alpha) = \sum_i R(\mathcal{N}(e = o_i))\nabla_\alpha p_i = \sum_i R(\mathcal{N}(e = o_i))p_i\nabla_\alpha \log(p_i)$$

$$= \mathbb{E}_{g\sim\alpha}[R(\mathcal{N}_g)\nabla_\alpha \log(p(g))] \approx \frac{1}{M}\sum_{i=1}^{M} R(\mathcal{N}_{g^i})\nabla_\alpha \log(p(g^i))$$

其中$g^i$表示第$i$个采样的二进制门,$p(g^i)$表示根据公式采样$g^i$的概率,$\mathcal{N}_{g^i}$是根据二进制门$g^i$的紧凑网络。

第四章 实验结果与架构分析

4.1 实验设置

图4和图5描述:图4展示了ProxylessNAS在不同延迟设置下始终优于MobileNetV2的性能对比图。横轴是移动设备延迟(ms),纵轴是Top-1准确率(%)。图中显示ProxylessNAS的模型在各个延迟点都取得了更高的准确率,特别是在相同准确率下,ProxylessNAS比MobileNetV2快1.83倍。图5展示了移动延迟预测模型的准确性,横轴是估计延迟,纵轴是实际测量延迟,点基本沿着y=x线分布,延迟RMSE仅为0.75ms。

在CIFAR-10实验中,使用树形结构架构空间,以PyramidNet为骨干网络。将PyramidNet残差块中的所有$3 \times 3$卷积层替换为树形结构单元,每个单元深度为3,每个节点的分支数设置为2(叶节点除外)。

在ImageNet实验中,使用MobileNetV2作为骨干构建架构空间。不是重复相同的移动倒残差卷积(MBConv),而是允许一组具有不同核大小${3, 5, 7}$和扩展比${3, 6}$的MBConv层。通过在候选集中添加零操作,允许带残差连接的块被跳过,实现宽度和深度之间的直接权衡。

4.2 专门化架构的硬件差异

图6描述:该图展示了ProxylessNAS为三种不同硬件平台(GPU、CPU、移动设备)搜索得到的高效模型架构。每个子图都显示了完整的网络结构,从输入到输出,包括各层的操作类型(如MB3 5x5表示扩展比为3的5×5 MBConv)和特征图尺寸。

GPU模型特点:

  • 网络更浅更宽,特别是在早期阶段
  • 偏好大型MBConv操作(如7×7 MBConv6)
  • 在高分辨率特征图阶段使用更宽的通道

CPU模型特点:

  • 网络更深更窄
  • 偏好较小的MBConv操作(多为3×3)
  • 延迟池化操作到网络后期

移动模型特点:

  • 在深度和宽度之间取得平衡
  • 混合使用不同大小的MBConv操作
  • 在下采样位置使用较大的核

所有平台的共同模式是在每个阶段的第一个块(负责下采样)中偏好使用较大的MBConv操作,这可能有助于在下采样时保留更多信息。

4.3 性能对比

在CIFAR-10上,ProxylessNAS达到2.08%的测试误差,仅使用5.7M参数,比之前最佳的AmoebaNet-B(2.13%误差,34.9M参数)减少了6倍参数量。

在ImageNet上的结果:

  • 移动设备:74.6% top-1准确率,78ms延迟
  • GPU:75.1% top-1准确率,5.1ms延迟
  • CPU:75.3% top-1准确率,138.7ms延迟

与MobileNetV2相比,ProxylessNAS在移动设备上将top-1准确率提高了2.6%,同时保持相似的延迟。与MnasNet相比,准确率高0.6%,但搜索成本减少了200倍(200 GPU小时 vs 40,000 GPU小时)。

附录 A:梯度计算

A.1 Softmax梯度

对于softmax函数:
$$p_j = \frac{\exp(\alpha_j)}{\sum_{k=1}^N \exp(\alpha_k)}$$

设分母为$Z = \sum_{k=1}^N \exp(\alpha_k)$,则:
$$p_j = \frac{\exp(\alpha_j)}{Z}$$

当$i = j$时:
$$\frac{\partial p_j}{\partial \alpha_j} = \frac{\partial}{\partial \alpha_j}\left(\frac{\exp(\alpha_j)}{Z}\right)$$

使用商法则:
$$= \frac{Z \cdot \exp(\alpha_j) - \exp(\alpha_j) \cdot \exp(\alpha_j)}{Z^2}$$
$$= \frac{\exp(\alpha_j)}{Z} \cdot \frac{Z - \exp(\alpha_j)}{Z}$$
$$= p_j(1 - p_j)$$

当$i \neq j$时:
$$\frac{\partial p_j}{\partial \alpha_i} = \frac{\partial}{\partial \alpha_i}\left(\frac{\exp(\alpha_j)}{Z}\right)$$
$$= -\frac{\exp(\alpha_j) \cdot \exp(\alpha_i)}{Z^2}$$
$$= -p_j p_i$$

综合两种情况:
$$\frac{\partial p_j}{\partial \alpha_i} = p_j(\delta_{ij} - p_i)$$

A.2 两路径采样

设路径$i$的真实价值为$v_i$,在完整的$N$路径比较中,最优路径$i^*$满足:
$$i^* = \arg\max_{i \in [N]} v_i$$

在两两比较中,如果$i^$确实是最优的,则对于任意$j \neq i^$:
$$P(i^* \text{ wins against } j) > P(j \text{ wins against } i^*)$$

通过多次两两比较,可以逐渐增强最优路径的权重。设第$t$次更新后路径$i$的权重为$p_i^{(t)}$,更新规则为:

如果路径$i$和$j$被采样,且$i$获胜:
$$\alpha_i^{(t+1)} = \alpha_i^{(t)} + \eta \cdot \frac{\partial L}{\partial g_i}$$
$$\alpha_j^{(t+1)} = \alpha_j^{(t)} - \eta \cdot \frac{\partial L}{\partial g_j}$$

其中$\eta$是学习率。经过足够多的更新后,最优路径的权重将收敛到最大值。

A.3 延迟预测模型的构建

延迟预测使用以下特征:

  1. 操作类型(one-hot编码)
  2. 输入特征图尺寸:$(H{in}, W{in}, C_{in})$
  3. 输出特征图尺寸:$(H{out}, W{out}, C_{out})$
  4. 卷积核大小$k$、步长$s$、扩展比$e$(对于MBConv)

预测模型使用简单的线性回归:
$$\text{latency} = w^T \phi(x) + b$$

其中$\phi(x)$是特征向量,$w$和$b$是学习的参数。

对于MBConv操作,延迟可以分解为三个部分:
$$\text{latency}_{\text{MBConv}} = \text{latency}_{\text{expand}} + \text{latency}_{\text{depthwise}} + \text{latency}_{\text{project}}$$

每个部分的延迟与计算量成正比:

  • 扩展:$H{in} \times W{in} \times C{in} \times (e \cdot C{in})$
  • 深度卷积:$H{out} \times W{out} \times (e \cdot C_{in}) \times k^2$
  • 投影:$H{out} \times W{out} \times (e \cdot C{in}) \times C{out}$

A.4 REINFORCE梯度估计的方差减少

原始REINFORCE估计具有高方差。使用基线$b$减少方差:
$$\nabla_\alpha J(\alpha) \approx \frac{1}{M}\sum_{i=1}^{M} (R(\mathcal{N}_{g^i}) - b)\nabla_\alpha \log(p(g^i))$$

最优基线是奖励的期望值:
$$b^* = \mathbb{E}_{g\sim\alpha}[R(\mathcal{N}_g)]$$

实践中使用移动平均估计:
$$b^{(t+1)} = \beta b^{(t)} + (1-\beta) \cdot \frac{1}{M}\sum_{i=1}^{M} R(\mathcal{N}_{g^i})$$

其中$\beta \in [0, 1]$是动量系数。

目录
相关文章
|
8天前
|
数据采集 机器学习/深度学习 搜索推荐
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
MIT与丰田研究院研究发现,扩散模型的“局部性”并非源于网络架构的精巧设计,而是自然图像统计规律的产物。通过线性模型仅学习像素相关性,即可复现U-Net般的局部敏感模式,揭示数据本身蕴含生成“魔法”。
44 3
MIT新论文:数据即上限,扩散模型的关键能力来自图像统计规律,而非复杂架构
|
11天前
|
机器学习/深度学习 人工智能 资源调度
MicroNAS:面向MCU的零样本神经架构搜索——论文阅读
MicroNAS是一种专为微控制器单元(MCU)设计的零样本神经架构搜索(NAS)框架,无需训练即可通过理论驱动的性能指标评估网络架构。相比传统NAS方法,其搜索效率提升高达1104倍,同时兼顾精度与硬件效率,适用于边缘计算场景。该框架结合神经切线核(NTK)条件数、线性区域计数及硬件感知延迟模型,实现快速、高效的架构搜索,为资源受限设备上的AI部署提供了新思路。
84 2
MicroNAS:面向MCU的零样本神经架构搜索——论文阅读
|
11天前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
169 0
|
9月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
10月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
248 3
|
10月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
5月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
339 12
|
9月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
755 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
7月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
353 1
|
10月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
349 1
服务架构的演进:从单体到微服务的探索之旅

热门文章

最新文章