这一篇在干嘛?

论文出处:Luo 等,ACM TECS 2024,第 3 章 Automated Network Design。本篇覆盖 NAS 的三要素:模块化搜索空间(cell-based / block-based)、搜索策略(强化学习 / 进化算法 / 可微分梯度)、加速技术与扩展(超网、延迟预测、精度预测、零成本代理、Benchmark)。 最值得记住的三个数字:40000 → 10 GPU 小时。MnasNet 在 ImageNet 上搜一次要 40000 V100 GPU 小时,而 LightNAS 只要 10 RTX 3090 GPU 小时——中间隔着参数共享、one-shot 超网、可微分松弛、延迟查表、自动学习 λ 这一整条技术链。第二个数字:12800 个独立候选架构,这是最早的强化学习 NAS 为了让 RNN 控制器收敛必须训的网络数量。第三个:6.3×10²⁹,这是 DARTS 那个看起来很小的 cell 搜索空间里包含的候选架构总数。 一句话概括本篇主线:NAS 的全部工程努力,都在跟”评估一个架构好不好”这件事的昂贵代价作斗争。


一、NAS 到底在解决什么问题

1.1 从”人设计”到”机器设计”

第 ① 篇讲的手工设计有一个根本缺陷:它高度依赖人类专家的经验,通过反复试错来探索新结构。每验证一个想法,就得完整训练一次网络、跑一次评测。这不仅需要大量工程投入,还需要惊人的算力。更要命的是,人能想到的结构受限于人的想象力。

神经架构搜索(Neural Architecture Search, NAS),也常被归入 AutoML(自动化机器学习),就是要让机器自动去探索网络结构。近十年 NAS 在准确率和效率两个维度上都超过了传统手工设计。

1.2 NAS 的标准三要素

任何一篇 NAS 论文,基本都可以拆成三个可替换的模块:

要素含义本文对应
搜索空间 允许搜索的所有网络结构的集合第 2 节
搜索策略 里怎么找第 3~5 节
性能评估怎么快速知道一个候选架构好不好第 6 节

理解 NAS 的钥匙,是意识到搜索空间决定了算法的性能上限。如果最优结构不在 里,搜索策略再聪明也搜不出来。

1.3 为什么必须”模块化”搜索

搜索空间为什么难设计?因为自由度实在太多了:

  • 算子候选(operator candidates):1×1、3×3、5×5、7×7 卷积,池化,跳连……
  • 网络配置(network configurations):这些算子怎么组合、每一层通道数怎么排。

如果按”逐层”的细粒度去搜,一个 20 层的网络意味着每层的算子、通道数都是独立变量,搜索空间是天文数字,根本搜不动。

所以主流做法是模块化搜索空间(modular search space)——先搜出一个小的”模块(cell 或 block)“,再把这个模块重复堆叠成完整网络。这是粗粒度搜索,把复杂度从”层数的指数”降到”模块内结构的指数”。

图 7:NASNet 与 DARTS 的 cell-based 搜索空间示意。两者的区别在于算子候选的挂靠位置——NASNet 把算子放在节点(node)上,DARTS 把算子放在边(edge)上。这一字之差,是可微分搜索得以成立的关键。


二、搜索空间:cell-based 与 block-based 之争

2.1 Cell-Based 搜索空间:NAS 早期的绝对主流

由 NASNet 和 DARTS 开创。它的结构是:

  • 定义两种 cell:normal cell(保持空间尺寸)和 reduction cell(以 stride=2 的卷积开头,负责降采样)。
  • 每种 cell 都被编码成一个有向无环图(DAG, Directed Acyclic Graph)
  • 搜索结束后,把搜到的 cell 结构重复堆叠成最终网络。

DARTS 版本的 cell:每个 cell 有两个输入节点、一个输出节点,中间是若干有序节点,每个节点 是一个隐表示(就是一张特征图)。从节点 的有向边上挂着一组候选算子 。于是中间节点由它的所有前驱节点决定:

这个搜索空间有多大? DARTS 的 cell 搜索空间包含 个候选架构。作为对比,可观测宇宙里的恒星数量估计在 量级。

为什么"搜完就重复堆叠"是个问题

cell-based 的做法是:搜出一个最优 cell,然后把同一个 cell 结构在整个网络里重复堆叠。MnasNet 明确指出这会导致算子多样性(operator diversity)缺失,从而精度和效率都变差。真实的好网络在不同深度需要不同的结构——浅层要大感受野下采样,深层要更多通道。

2.2 Block-Based 搜索空间:为硬件而生

block-based 的思路更朴素:每个候选架构由多个串联的算子候选组成,每个 block 可以不一样。

关键区别在于它从成熟的手工网络里取材。比如:

  • ProxylessNAS 的 block 空间基于 MobileNetV2 的倒残差块;
  • HSCoNAS 的 block 空间基于 ShuffleNetV2;
  • HURRICANE 发现不同硬件平台偏好不同搜索空间,于是做了一个混合 block 空间,同时包含 MobileNetV2 和 ShuffleNetV2 的块。

图 8:基于 MobileNetV2 的 block-based 搜索空间示意(MnasNet)。每个 block 独立选择自己的算子与配置,允许算子多样性。

为什么 block-based 对硬件友好? 论文给了两个理由:

  1. 内存访问开销。cell-based 的候选架构包含多条并行分支(看图 7 就能直观感受到)。根据 roofline 分析,多分支结构会带来额外的内存访问开销,直接恶化目标硬件上的推理效率。block-based 是串联的单路结构,没有这个问题。
  2. 算子多样性。block-based 允许不同 block 用不同算子,更容易搜到精度—效率权衡更优的解。

因此 MnasNet、ProxylessNAS、OFA、HSCoNAS、SurgeNAS、LightNAS 这些硬件感知 NAS 的主力选手,全部采用 block-based。

对比维度Cell-BasedBlock-Based
结构多分支 DAG,算子挂在边/节点上单路串联 block
堆叠方式搜一个 cell,重复堆叠各 block 独立选择
算子多样性
内存访问多分支,开销大单路,开销小
硬件友好度
代表工作NASNet、DARTS、ENASMnasNet、ProxylessNAS、FBNet、OFA
搜索空间大小DARTS:6.3×10²⁹MnasNet:约 10³⁹

为什么 block-based 比 cell-based 更适合硬件感知 NAS?

两个原因:① 内存访问——cell-based 的候选架构包含多条并行分支(看图 7 就很直观),按 roofline 分析会带来额外内存访问开销,恶化端侧推理效率;block-based 是单路串联结构,没有这个开销。② 算子多样性——cell-based 搜出一个 cell 后重复堆叠整个网络,导致各层结构雷同;block-based 允许每个 block 独立选算子,更容易搜到精度—效率权衡更优的解。附带后果:延迟查找表(LUT)只对 block-based 可靠,cell-based 必须上学习型预测器。


三、搜索策略一:强化学习(Reinforcement Learning)

3.1 开山之作:用 RNN 当”架构生成器”

NAS 领域的第一篇工作(论文 [137])用强化学习(RL) 作为搜索引擎,方案出奇地直接:

  1. 用一个 RNN(循环神经网络)作为 RL 控制器,从搜索空间里”生成”一个候选架构描述;
  2. 把这个候选架构从零开始训练,在目标任务上测出准确率;
  3. 把准确率作为奖励(reward)反馈给 RNN 控制器,更新控制器参数;
  4. 控制器下一轮就能生成更好的架构。

图 9:强化学习 NAS 中,RNN 控制器如何从搜索空间采样候选卷积架构。控制器输出一串”架构描述 token”,采样出的架构被训练后把准确率回传给控制器。

成绩:RNN 生成的网络在 CIFAR-10 上达到 96.35% Top-1,与 ResNet 等手工网络相当甚至更好。这标志着 NAS 时代的开启。

代价呢? 为了让控制器收敛,它训练了 12800 个独立的候选架构。用论文的数据,一次搜索实验在 450 张 NVIDIA GTX 1080 Ti GPU 上跑 3~4 天

3.2 NASNet:换上 cell 搜索空间

NASNet 把搜索空间换成前面说的 cell-based,精度进一步提升:CIFAR-10 上 97.6%,比前作高 1.25%,参数反而更少(37.4 M → 27.6 M)。

3.3 ENAS:参数共享,把成本打下来三个数量级

ENAS(Efficient NAS) 提出了一个改变整个领域的范式——参数共享(parameter sharing)

强制所有候选架构共享同一套网络权重,从而避免每个候选架构都从零训练。

效果极其显著:同样在 CIFAR-10 上,ENAS 找到 97.11% 精度的网络,只用了 不到 16 小时、单张 NVIDIA GTX 1080 Ti GPU。对比前作的”450 卡 × 3~4 天”,这是三个数量级的压缩。

这个范式太成功了,以至于后续 DARTS、OFA 等几乎所有主流 NAS 都建立在它之上。

参数共享为什么能行?又为什么有隐患?

为什么能行:把搜索空间里的所有候选架构塞进一个”超网(supernet)“,所有子结构共用同一份权重。训练超网一次,之后所有候选架构都可以直接继承权重来评估,不必单独训练。 隐患:不同子结构的权重被强行耦合在一起,会互相干扰(weight interference)。这导致”超网里的排名”和”单独训练的真实排名”不一定一致——这个问题后面会以”排序相关性(ranking correlation)“的名义反复出现。

3.4 MnasNet:把硬件延迟写进奖励函数

早期的 RL-NAS 有个共同问题:只优化精度,完全无视延迟、能耗这些嵌入式系统最关心的指标。

MnasNet 第一个把它形式化为一个多目标优化问题,同时优化精度和延迟,并把延迟直接在目标硬件上实测。它的目标是找到帕累托最优(Pareto-optimal)的架构

其中 是目标任务精度, 是目标硬件延迟,指定的延迟约束(latency constraint)

权重指数 控制精度与延迟的权衡力度,是一个分段函数:

是与应用相关的超参数。MnasNet 依据”延迟翻倍通常带来约 5% 的相对精度提升”这一经验观察,取

图 10:MnasNet 总览。它引入灵活的 block-based 搜索空间,并设计了多目标 RL 奖励函数来优化 RNN 控制器,同时把真实硬件上测得的延迟纳入目标。

显式搜索成本 vs 隐式搜索成本

这是本篇非常重要的一个观念。MnasNet 的问题不只是”搜一次要多久”(显式成本),更麻烦的是:为了得到恰好满足延迟约束 的架构,你必须反复调 。这两个超参数敏感且难调,换一个新硬件或新搜索空间就得重调一遍。论文指出,通常需要重复 7 次搜索实验来试错调参——总搜索成本直接乘以 7(隐式成本)。 而且延迟是在真实设备上实测的,面对 MnasNet 那约 的搜索空间,这种实测的工程量非常恐怖。

3.5 TuNAS 与 MONAS:更省心的奖励函数

TuNAS 重新设计了奖励函数,消掉了那个难调的指数:

其中 取绝对值, 是一个有限的负数值,控制”把延迟拉向 “的力度。直觉很简单:延迟偏离目标值 越远,惩罚越大;而且惩罚是双侧对称的——延迟太低也罚(因为那意味着精度白白牺牲了),这比 MnasNet 的分段函数更合理。

MONAS 则把目标换成”精度 + 能耗”:

其中 控制精度与能耗的权衡。这个形式很容易推广到其他约束(比如延迟、内存)。


四、搜索策略二:进化算法 + One-Shot 超网

4.1 进化算法的四步循环

进化算法(Evolutionary Algorithm) 凭借灵活性、概念简单、性能有竞争力成为 NAS 的另一大分支。标准流程是四步循环:

  1. 采样:从搜索空间采样一批候选架构,构成子代种群(child population)
  2. 评估:评估子代中每个候选架构的性能(精度、效率等);
  3. 选择:保留子代中最好的 top-k 个,构成父代种群(parent population),淘汰差的;
  4. 变异/交叉:对父代进行操作,生成下一代子代。

重复直到收敛。生成子代的方式有两种经典操作:

  • 交叉(crossover):随机选两个父代架构,“杂交”出一个新的子代架构;
  • 变异(mutation):随机选一个父代架构,以固定概率改变它的某些算子。

早期进化 NAS 的死穴

早期进化 NAS 同样必须从零训练大量独立候选架构来评估精度,算力开销巨大。这个死穴和早期 RL-NAS 一模一样——所以它们都被同一个解药救了:one-shot 超网

4.2 One-Shot NAS:把整个搜索空间装进一个超网

One-Shot NAS 是当前最主流的 NAS 范式。核心思路:

设计一个包含搜索空间中所有候选架构的超网(supernet)。只需训练这一个超网,之后所有候选架构都可以继承超网权重来快速评估。

图 11:One-shot 超网示意。实线表示该算子候选被启用虚线表示该算子属于搜索空间但当前被禁用。整个超网包含了搜索空间中的所有候选架构。

训练超网本身非常简单——用带动量的标准 SGD 就行。超网训好之后,就可以用**权重共享(weight sharing)**范式快速、可靠地近似不同候选架构的性能:

图 12:One-shot NAS 中的候选架构评估。从预训练好的超网里”抽出”一条子路径,直接继承它的权重来评估性能,无需从头训练。

超网训好后,用标准进化算法在它上面搜索高精度架构就变得非常直接。

一个容易漏掉的细节

one-shot 搜出来的架构仍然需要在目标任务上重新训练或微调,才能恢复精度并部署到目标硬件。超网权重只是用来”排序”的,不能直接当最终模型用。

4.3 超网训练的三代改进

SPOS(Single Path One-Shot) 指出 one-shot 的两个关键问题:

  1. 超网中的网络权重在训练过程中深度耦合
  2. 联合优化进一步加剧了候选架构与超网权重之间的耦合。

解法:单路径 one-shot——每次从超网中均匀采样一条单路径子网络来训练,而不是训练整个超网。好处有二:① 显存消耗降到单路径级别;② 最终搜出的架构性能更好。

FairNAS 进一步指出:均匀采样只保证了**“软公平”(soft fairness)。要做到”严格公平”(strict fairness),FairNAS 在每次训练迭代中采样多条单路径子网络,强制超网中所有算子候选都被均等优化**。

OFA(Once-For-All) 是另一个代表作。它训练一个超网,之后可以从中”拆出”带继承权重的单路径子网络直接部署。不过拆出来的子网络仍需**微调若干轮(例如 25 个 epoch)**才能获得有竞争力的精度。

BigNAS 则致力于干掉微调这一步:通过一系列改进训练单阶段超网,使得拆出的子网络继承权重后无需重训或微调就能达到优秀精度,可直接部署。这在需要面向多种不同硬件平台部署的场景下,节省的算力极其可观。

4.4 进化算法的多目标形式

进化 NAS 很容易扩展到硬件感知场景——最大化精度的同时满足多种现实约束:

其中 是一组现实性能指标(延迟、能耗、内存……), 是对应的上限。

三种搜索策略的本质区别

  • 强化学习:学一个”生成器”(控制器),让它越来越会生成好架构。优化信号来自奖励。
  • 进化算法:维护一个”种群”,靠选择 + 变异迭代。不需要梯度,极其灵活,任何不可微目标(延迟、能耗)都能直接塞进去。
  • 可微分搜索(下一节):把离散选择”松弛”成连续权重,直接用梯度下降优化。

五、搜索策略三:可微分搜索(DARTS 与它的子孙)

5.1 DARTS 的核心洞察:把离散选择”融化”成连续的

DARTS(Differentiable ARchiTecture Search) 是可微分 NAS 的开山之作,也是目前影响力最大的 NAS 工作之一。它的效率有多高?单张 GTX 1080 Ti、约 1 天就能出一个优秀架构。

之前的 NAS 都依赖离散搜索空间(选 3×3 还是 5×5,是二选一,不可导)。DARTS 的天才之处在于:引入一组架构参数 ,把离散的搜索空间松弛(relax)成连续的

具体来说:在边 上,不再”选一个”算子,而是让所有算子同时存在,用 softmax 加权求和:

其中 是算子空间, 是边 上算子 架构参数。当某个 远大于其他时,softmax 权重趋近 1,就等价于”选了它”。

关键在于:现在 连续可导的!于是网络权重 和架构参数 可以交替用梯度下降优化

这是一个双层优化(bilevel optimization):内层在训练集上优化 ,外层在验证集上优化

为什么外层要用验证集损失 ,而不是训练集损失?

如果 也在训练集上优化,架构参数会”作弊”——它倾向于选择那些能更好记忆训练集的算子(通常是参数量更大、容量更高的算子),导致严重过拟合,搜出来的架构在真实测试上表现很差。用验证集损失优化架构参数、用训练集损失优化网络权重,是一种元学习(meta-learning)式的分工:让权重去拟合数据,让架构去拟合”泛化能力”。

搜索结束后,DARTS 通过算子强度(就是式 (7) 里的那个 softmax 权重)来做离散化:在每条边上只保留最强的那个算子,删掉其他算子。最后,搜出的架构仍需在目标任务上重新训练以恢复精度。

图 13:DARTS 总览,共四个阶段:(1) 在超网中初始化 ;(2) 通过交替梯度下降优化 ;(3) 从超网中离散化出最优架构;(4) 重训最优架构以恢复精度。

5.2 DARTS 的后裔:都在治什么病

DARTS 火了之后涌现了大量改进工作,每个都在治一个具体的病:

工作治的病药方
PC-DARTS显存开销过大(所有算子同时优化)部分通道连接(partial channel connections)
DARTS+性能崩塌(performance collapse)早停策略:满足预设条件就终止搜索
DARTS−性能崩塌辅助跳连,缓解并稳定搜索
Single-DARTS / Gold-NAS双层优化可能收敛到次优退回单层优化
GDAS / SNAS优化复杂度高Gumbel-Softmax 重参数化,把复杂度降到单路径级别
PT-DARTS 不总能指示最优架构基于**扰动(perturbation)**的架构选择

什么是"性能崩塌"?

DARTS+ 和 DARTS− 都观察到:搜索过程中,架构参数 过度偏爱 skip-connect(跳连)。跳连不干活、梯度通畅,训练损失降得快,所以被疯狂选中。结果是搜出来的网络几乎全是跳连、没有真正的特征提取层,验证精度反而崩掉。这是可微分搜索最著名的陷阱之一。

5.3 硬件感知可微分 NAS:把延迟项塞进损失函数

上面这些都是精度至上(accuracy-only)的搜索,没法满足端侧的资源约束。硬件感知可微分 NAS 的做法是:把延迟约束作为惩罚项加进总损失:

是权衡系数。论文明确指出规律: 越大,得到低精度低延迟的架构; 越小,得到高精度高延迟的架构。

这个形式很容易推广到多个硬件指标联合优化:

5.4 从 cell 转向 block:FBNet、ProxylessNAS、SP-NAS、TF-NAS

早期的硬件感知可微分 NAS 仍依赖 cell-based 空间,继承了两个老毛病:① 重复堆叠导致算子多样性缺失;② 多分支结构内存访问开销大、难以享受硬件并行度。

于是 FBNet、ProxylessNAS、SP-NAS、TF-NAS 这一批工作集体转向 block-based 空间:

  • FBNet:用 Gumbel-Softmax 重参数化松弛离散空间;收集一张**延迟查找表(latency lookup table, LUT)**快速估算延迟,并把它集成进搜索过程。
  • ProxylessNAS:治 FBNet 的病——FBNet 和 DARTS 一样需要同时优化所有算子候选,无法扩展到大搜索空间,还有内存瓶颈。ProxylessNAS 提出路径级二值化(path-level binarization),把显存消耗降到单路径级别,在不损失搜索质量的前提下大幅提升效率。
  • SP-NAS:洞察到超网里不同的算子候选可以看作是一个过参数化超级卷积核(superkernel)的子集,于是把所有算子候选编码进这个 superkernel,同样把显存降到单路径级别。
  • TF-NAS:系统梳理了硬件感知可微分 NAS 的三个搜索自由度,并集成延迟查找表 + 双采样(bi-sampling)搜索算法来加速。

图 14:TF-NAS 总览。它梳理了常规硬件感知可微分 NAS 中的三个搜索自由度:(1) 算子级(operator-level)、(2) 深度级(depth-level)、(3) 宽度级(width-level),从而实现细粒度架构搜索。

5.5 关键一击:LightNAS 让 λ 变成可学习的

到这里,还差最后一个痛点没解决—— 太难调了

现实场景(比如自动驾驶)对延迟有硬约束(例如 24 ms),超了就可能出事故。但要找到延迟恰好为 24 ms 的架构,前面这些工作必须反复跑大量搜索实验来试错调 ,总成本高得离谱。

HardCoRe-NAS 用 Block Coordinate Stochastic Frank-Wolfe(BCSFW)算法把搜索方向限制在指定延迟附近。

LightNAS 的解法更优雅——既然 λ 难调,那就让它变成搜索过程中自动学习的变量

对比式 (9),这里 不再是常数,而是可学习的超参数。记目标函数为 。更新规则是:梯度下降,而 梯度上升

为什么这样就能保证 这是一个非常漂亮的负反馈:

  • 已知: 越大 → 延迟越低; 越小 → 延迟越高
  • 若当前 (超了):则 ,梯度上升增大 → 延迟正则力度加强 → 下一轮延迟下降 靠拢。
  • 若当前 (还不到):则 ,梯度上升减小 → 正则力度减弱 → 下一轮延迟上升 靠拢。

于是搜索引擎最终收敛到严格满足延迟约束的架构——只搜一次(you only search once),彻底消灭了手工调 的隐式成本。

从 40000 到 10:搜索成本的压缩史

方法搜索代价GPU
早期 RL-NAS450 卡 × 3~4 天(12800 个候选架构)GTX 1080 Ti
ENAS< 16 小时(参数共享)单张 GTX 1080 Ti
DARTS~1 天(可微分松弛)单张 GTX 1080 Ti
MnasNet40,000 GPU 小时V100
ProxylessNAS200 GPU 小时V100
OFA1,200 GPU 小时V100
SP-NAS30 GPU 小时TPU
TF-NAS43 GPU 小时Titan RTX
LightNAS10 GPU 小时RTX 3090
TE-NAS< 4 小时(ImageNet,零成本代理)单张 GTX 1080 Ti

每一步压缩都对应一个具体的技术创新:参数共享 → one-shot 超网 → 可微分松弛 → 单路径二值化 → 延迟查表 → 自动学习 λ → 零成本代理。

5.6 硬件感知 NAS 全景对比表

说明:原论文此表用于粗略比较不同硬件感知 NAS 工作,N/A 表示原论文未报告该数据;准确率可能使用了不同的训练配方。LUT = 延迟查找表,Predictor = 学习型预测器。

方法搜索空间搜索策略数据集GPU 小时GPU 型号目标硬件硬件建模FLOPs (M)Top-1 (%)
MnasNetBlockReinforceImageNet40,000V100手机N/A31275.2
ProxylessNASBlockGradientImageNet200V100GPU/CPU/手机LUTN/A75.1
MobileNetV3BlockEvolutionImageNetN/AN/A手机N/A21975.2
FBNetBlockGradientImageNet216N/A手机LUT37574.9
TuNASBlockReinforceImageNetN/AN/A手机LUT75.4
OFABlockEvolutionImageNet1,200V100GPU/CPU/边缘 GPU/手机LUT23076.0
SP-NASBlockGradientImageNet30TPU手机LUTN/A75.0
LA-DARTSCellGradientCIFAR-1017P100GPU/CPUPredictor57574.8
MDARTSCellGradientCIFAR-10~6.5Titan XPEyerissPredictorN/AN/A
EH-DNASCellGradientCIFAR-10241080 Ti定制加速器Predictor84069.6
E-DNASBlockGradientImageNetN/AV100CPU/DSPPredictor36576.9
SNASBlockGradientImageNet30N/ATPUPredictor1,29079.4
HSCoNASBlockEvolutionImageNetN/AN/AGPU/CPU/边缘 GPULUTN/A74.9
DenseNASBlockGradientImageNet64Titan XPGPULUT36175.3
TF-NASBlockGradientImageNet43Titan RTXGPULUT28475.2
HardCoRe-NASBlockGradientImageNet400P100GPU/CPULUTN/A75.7
LightNASBlockGradientImageNet10RTX 3090边缘 GPUPredictorN/A75.2
SurgeNASBlockGradientImageNet30V100GPU/CPU/边缘 GPUPredictorN/A75.5
SPOSBlockEvolutionImageNet2881080 TiGPULUT32874.7
HURRICANEBlockEvolutionImageNetN/AN/ACPU/DSP/VPULUT40975.1
ProxyNASBlockEvolutionImageNetN/AN/AGPU/CPU/TPU/FPGAPredictorN/AN/A

怎么读这张表

别急着比最后一列的精度——训练配方不同,精度不可直接横比。真正值得看的是三件事:① Block 已全面压倒 Cell(20 个方法里 16 个用 Block);② Gradient(可微分)已成主流;③ GPU 小时从 40000 一路降到 10,而精度几乎没掉(75.2% vs 75.2%)。这就是整个 NAS 领域十年的核心成就。


六、加速技术大军:如何让”评估”变得便宜

回顾一下:NAS 慢的根源是”评估一个候选架构好不好”太贵(要训练)。第 6 节的所有技术,都是在攻击这个瓶颈。

6.1 Beyond One-Shot:从”一个超网”到”几个超网”

One-shot NAS 快是快,但有个著名问题:排序相关性差。论文 [205] 指出,one-shot 的搜索结果不一定和独立训练(stand-alone training)的结果相关。

Few-shot NAS 的对策:不再只用一个超网,而是用若干个超网去覆盖搜索空间的不同区域。搜索成本比 one-shot 略高,但结果可靠得多。论文 [206] 表明,最多只用 7 个超网就能在 ImageNet 上刷新当时的最优搜索结果。

  • [209] 证明零成本代理可以集成进 few-shot NAS,进一步增强搜索。
  • [208] 把 few-shot NAS 推广到蒸馏大语言模型——从一个大教师模型中自动蒸馏出多个满足不同算力预算的学生模型。
  • CLOSE 走了另一条路:不用多超网,而是提出 CLOSENet,用一个类课程学习(curriculum learning)的调度来动态控制超网内的参数共享程度,配合高效的图编码方案。

6.2 高效延迟预测:别再拿真机一个一个测了

MnasNet 那种直接在目标硬件上实测延迟的做法当然准,但耗时且无法扩展到大规模搜索空间。于是延迟预测器登场:

方案代表工作思路局限
延迟查找表 LUTProxylessNAS、FBNet、OFA预先测好每个算子的延迟,累加即得总延迟只适用于 block-based 空间;忽略算子间数据搬运
LUT + 数据搬运修正HSCoNAS量化中间数据移动与通信带来的额外延迟,补进 LUT仍然绑定 block-based
MLP 预测器EdgeNAS、LA-DARTS、LC-NAS训练一个多层感知机预测候选架构延迟需要大量训练样本(EdgeNAS 用了 10 万个样本)
GNN 预测器BRP-NAS、SurgeNAS用图神经网络建模架构拓扑,预测更可靠换硬件/换空间要重建
少样本/元学习预测器HELP、MAPLE-Edge只用极少量样本(HELP 最少 10 个测量值)即可泛化到新硬件精度与样本量权衡
自演化预测器EvoLP自演化方案,能以适应未知硬件较新方向

一个值得记住的对比

EdgeNAS 的 MLP 延迟预测器需要 100,000 个训练样本;HELP 用元学习只要 10 个延迟测量值就能泛化到新硬件平台。四个数量级的差距,这就是”元学习”在 NAS 里的价值。

6.3 高效精度预测:不训练就能猜出精度

与延迟预测并行,精度预测也成为一个热门方向:

  • [218]:用图卷积网络(GCN) 做精度预测器——因为架构天然是图结构,GCN 很合适。
  • BRP-NAS:同样用 GCN,并引入迁移学习,从预训练好的延迟预测器迁移过来提升精度预测。
  • [219]:用非神经网络GBDT(梯度提升决策树) 做预测器,在某些场景下表示学习能力比神经网络预测器更强。
  • NASLib:在三个主流 Benchmark(NAS-Bench-101/201/NLP)上系统比较了四类预测器(学习曲线外推、权重共享、监督学习、零成本代理),发现组合多个预测器显著优于任何单一预测器
  • DONNA:用分块知识蒸馏构建候选架构池,每个候选只需微调几个 epoch 就能得到精度,而不用从零训练。
  • GATES / TA-GATES:不采用图编码,而是把算子建模为信息传播的变换,更贴近真实数据处理过程;该编码方案可以集成进其他预测器以提升表现。

6.4 低成本代理:学习曲线外推

低成本代理(low-cost proxies),又称学习曲线外推(learning curve extrapolation):只用训练最初几个 epoch 的统计信息(如前几轮的训练损失)来推断这个架构最终能到多少精度。

  • [236]:把”网络配置”和”前几轮验证精度”一起作为输入特征训练回归模型,可泛化到未见过的架构。
  • TSE(Training Speed Estimation):简单累积早期训练统计量,实现可靠且极廉价的排序。
  • BTE / TBE(Batchwise / Trained Batchwise Estimation):考虑更细粒度的逐 batch训练统计量,用极小算力获得更可靠的预测。
  • LCGA(Loss Curve Gradient Approximation):用最少训练量对候选架构排序。
  • NAS-Bench-x11:通过预测训练轨迹来释放学习曲线外推的潜力,可轻松集成进上述方法。

6.5 零成本代理:一次前向反向就够了

零成本代理(zero-cost proxies) 更进一步:完全不需要训练。它们只用一个 mini-batch 的数据、一次前向 + 反向传播就能给出性能估计,计算成本接近于零。

代表性零成本代理:EPE、Fisher、GradNorm、Grasp、Jacov、Snip、Synflow、ZenScore、LRC、NTK

一个关键发现:组合多个零成本代理,排序可靠性优于任何单一代理

图 15(a):零成本代理 LRC 在 CIFAR-100 上的排序效果(精度取自 NAS-Bench-201)。散点越接近一条单调曲线,说明预测分数与真实精度的相关性越好。

图 15(b):零成本代理 NTK 在 CIFAR-100 上的排序效果。与 (a) 相比,散点更分散,相关性弱一些。

图 15(c):把 LRC 与 NTK 组合后的排序效果。可以直观看到散点明显收拢、相关性提升——这正是论文强调的”组合优于单一”。

TE-NAS 就是联合使用 LRC 和 NTK 来估计候选架构的排序,结果:单张 GTX 1080 Ti、不到 4 小时就在 ImageNet 上搜出最优架构。

6.6 高效 Transformer 搜索

NAS 不仅能搜 CNN,也能搜 Transformer。流水线在技术上与搜 CNN 完全相同

  • HAT(NLP 方向):先构建一个包含所有 Transformer 候选的过参数化 superformer,用标准权重共享训练它作为精度预测器;再建一个高效延迟预测器避免真机实测;最后用标准进化算法搜出既准又快的 Transformer。这套流程和 OFA 搜 CNN 如出一辙。
  • AutoFormer(视觉方向):第一个视觉 Transformer 的进化 NAS 框架。同样构建 superformer,但训练时用的是 weight entanglement(权重纠缠) 方案。

图 16:权重共享(weight sharing)权重纠缠(weight entanglement) 的对比。权重纠缠在技术上类似于 SP-NAS 中的 superkernel——不同候选共享同一个过参数化核的不同子集。

6.7 高效领域专用搜索

NAS 不止能做图像分类,还能迁移到各种真实场景:

  • MobileDets(目标检测):一族硬件高效检测网络,在移动端 CPU、边缘 TPU、边缘 GPU 上都表现优秀。做法是构建放大的检测搜索空间,再用类 MnasNet 的强化学习搜索,奖励函数与 TuNAS 一致(权衡检测精度与效率)。
  • LC-NAS(点云处理):硬件感知可微分 NAS 框架,与 EdgeNAS、LA-DARTS 一样使用 cell-based 空间并把延迟约束集成进优化目标。

这说明一件重要的事:只要把领域知识(比如领域专用搜索空间)嵌进主流 NAS 技术,就能搜出领域专用的网络方案

6.8 NAS Benchmark:为什么需要”考场”

公平比较为什么这么难?

不同 NAS 工作的训练配方(training recipe)差异巨大,导致无法判断性能提升到底来自搜索算法还是来自更好的训练技巧。 具体例子:DARTS+ 在 CIFAR-10 上训练搜出的架构 2000 个 epoch,DARTS 只训 600 个;DARTS+ 在 ImageNet 上训 800 个 epoch、batch size 2048、还用了 AutoAugment,而 DARTS 默认只有 250 个 epoch、batch size 128。对同一个架构,更长的训练和更强的数据增强通常精度更高。 更扎心的是:RandomNAS 证明随机搜索能打得过早期的 SOTA NAS 工作;RandWire 证明随机连线的网络在 ImageNet 上也很强。那么 NAS 的提升到底来自哪?这是个真问题。

为此学界提出了一大批 NAS Benchmark。它们有两部分:预定义的搜索空间 + 所有候选架构可直接查询的性能指标

  • 表格式(tabular)Benchmark:枚举并从零训练所有候选架构,把指标存成表。准确但昂贵。
  • 代理式(surrogate)Benchmark:用学习方法预测指标,不逐个训练,因此能覆盖远大于表格式的搜索空间(NAS-Bench-301 的 10¹⁸ vs NAS-Bench-201 的 15,625)。
Benchmark搜索空间大小类型表格代理任务数据集
NAS-Bench-101423kCell图像分类CIFAR-10
NAS-Bench-20115.6kCell图像分类CIFAR-10/100、ImageNet-16-120
NATS-Bench39.3kCell图像分类CIFAR-10/100、ImageNet-16-120
NAS-Bench-30110¹⁸Cell图像分类CIFAR-10
NAS-Bench-360N/ACell+Block10 个多样化任务10 个多样化数据集
NAS-Bench-1Shot1399kCell图像分类CIFAR-10
NAS-Bench-ASR8.2kCell自动语音识别TIMIT
NAS-Bench-Graph26.2kCell9 个图任务9 个图数据集
NAS-Bench-NLP14kCell语言理解PTB、WikiText-2
NAS-Bench-111423kCell图像分类CIFAR-10
NAS-Bench-31110¹⁸Cell图像分类CIFAR-10
NAS-Bench-NLP1110⁵³Cell语言理解PTB
NAS-Bench-SuiteN/ACell11 个表格/代理 Benchmark 的集合
HW-NAS-Bench15.6kCell图像分类CIFAR-10/100、ImageNet-16-120
HW-NAS-Bench10²¹Block图像分类CIFAR-100、ImageNet

注:ImageNet-16-120 是 ImageNet 的一个子集,含 120 个类别,输入分辨率固定为 16×16。


七、作者给出的七个未来方向

  1. 通用搜索空间(General Search Spaces)。现有搜索空间都是人用手撕出来的,通常基于 MobileNet、ShuffleNet 这类现成网络,虽然提升了搜索效率,但也把更优的结构挡在门外。已有的”更通用搜索空间”尝试仍然带着人类偏见。探索更通用的搜索空间是释放 NAS 潜力的关键。
  2. 全自动化架构搜索(Fully Automated Architecture Search)。早期 NAS 的搜索目标彼此孤立:有的搜架构、有的搜数据增强、有的搜激活函数、有的搜训练配方。但 FBNetV3 和 AutoHAS 已经证明:不同架构偏好不同的训练配方。因此未来方向是一次搜索同时确定架构 + 数据增强 + 激活函数 + 训练配方
  3. 多任务架构搜索(Multi-task Architecture Search)。现有工作都是”一个任务搜一次”,任务数量一多成本就爆炸。FBNetV5 迈出第一步,搜索能同时胜任 ImageNet 分类、COCO 检测、ADE20K 分割的架构。目标是”once for all”式的跨任务架构。
  4. 动态架构搜索(Dynamic Architecture Search)。现有 NAS 搜的是静态网络,只能跑在固定算力预算上。但真实环境中,同一台设备的可用算力也会随时间变化(手机的低电量/省电模式)。部署多个静态网络是个办法,但存储开销太大。因此需要搜索动态网络(如 slimmable neural networks),能即时、自适应地在精度与效率之间权衡。
  5. 混合架构搜索(Hybrid Architecture Search)。CNN 端侧效率高,ViT 精度高,混合起来有望双赢。但现有 NAS 基本只搜其中一类。搜索 CNN 与 ViT 优势互补的混合网络仍是一片蓝海。
  6. 可解释架构搜索(Explainable Architecture Search)。主流 NAS 都依赖权重共享范式,但它的可解释性很差——权重共享可能导致权重互相干扰,从而得到次优架构;更糟的是,one-shot NAS 为什么有效,社区至今没有共识。零成本代理是一条出路,但如图 15 所示,现有代理的估计还不够可靠
  7. 元架构搜索(Meta Architecture Search)元学习(meta-learning,learning-to-learn) 的目标是让模型用最少工程投入快速适应新任务/新环境。HELP 就是一个例子——只用 10 个延迟测量值就能泛化到新硬件。NAS 中广泛使用的权重共享范式,本质上就是一种元学习(把过参数化超网看作元模型),因此用元学习加速搜索是自然的方向。

八、本篇小结

把整条脉络串起来:

  1. 问题:手工设计依赖专家试错,成本高、上限受限于人。NAS 要自动化这个过程。
  2. 三要素:搜索空间(决定上限)、搜索策略(决定怎么找)、性能评估(决定成本)。
  3. 搜索空间:从细粒度逐层搜索退到模块化搜索;从 cell-based(多分支 DAG、重复堆叠、不硬件友好)演进到 block-based(单路串联、算子多样、硬件友好)。
  4. 搜索策略强化学习(RNN 控制器 + 奖励)→ 引入硬件感知多目标奖励(MnasNet 式 (2)、TuNAS 式 (4)、MONAS 式 (5));进化算法(种群 + 交叉变异)→ 结合 one-shot 超网(参数共享、单路径采样 SPOS、严格公平 FairNAS、免微调 BigNAS);可微分搜索 DARTS(softmax 松弛式 (7) + 双层优化式 (8))→ 硬件感知惩罚项(式 (9)(10))→ 自动学习 λ 的 LightNAS(式 (11)(12))。
  5. 加速技术:few-shot 多超网、延迟预测(LUT → MLP → GNN → 元学习 10 样本)、精度预测(GCN/GBDT/NASLib/DONNA/GATES)、低成本代理(学习曲线外推)、零成本代理(一次前向反向,LRC+NTK 组合)、Transformer 搜索、领域专用搜索、NAS Benchmark(解决公平比较)。
  6. 总账40000 GPU 小时 → 10 GPU 小时,精度基本不掉。

常见坑(汇总)

  1. 只看搜出来的精度。训练配方不同会让精度差好几个点,论文间横向比精度基本没意义——要看 Benchmark 上的可比结果。
  2. 以为超网权重可以直接部署。搜出来的架构几乎总是需要重新训练或微调才能恢复精度(BigNAS 是少数例外)。
  3. 以为 one-shot 的排名可信。one-shot 与独立训练之间的排序相关性是公认的弱项,这是 few-shot NAS 存在的理由。
  4. 小看隐式搜索成本。为了调 而重复 7 次搜索,等于总成本 ×7。选方法时一定要问”要不要手调超参”。
  5. 忘了搜索空间决定上限。搜索策略再花哨,若最优结构不在空间里也白搭;同时空间越大越难搜,这是一对永恒的矛盾。
  6. 以为零成本代理已经够准。图 15 清楚显示,即便 LRC+NTK 组合,散点仍很分散。它适合粗筛,不适合精确排序。
  7. 在 cell-based 空间上做延迟查表。LUT 只对 block-based 可靠,cell-based 需要学习型预测器。

通关标准

  • 能说出 NAS 三要素,并解释为什么”搜索空间决定性能上限”。
  • 能对比 cell-based 与 block-based,说出至少两条 block-based 更硬件友好的理由(内存访问 / 算子多样性)。
  • 能解释 DARTS 的 softmax 松弛(式 (7))为什么让 NAS 变得可导,以及双层优化里外层为什么用验证集
  • 能说清式 (9) 中 的大小如何影响结果,并解释 LightNAS 的梯度上升(式 (12))如何构成负反馈使延迟收敛到
  • 能按时间线讲出搜索成本从 40000 GPU 小时压到 10 GPU 小时的关键技术节点。
  • 能区分延迟预测的三代方案(LUT / 学习型预测器 / 少样本元学习)各自的适用条件。
  • 能解释 NAS Benchmark 存在的必要性,以及表格式与代理式的区别。

系列导航