5.1 约束条件下的 NAS


文档摘要

5.1 约束条件下的 NAS 本节摘要:约束 NAS(Constrained NAS)把"精度唯一"改成"在满足约束前提下最大化性能"。本节讲清性能、资源、鲁棒性、公平、可解释五类约束的度量方式,对比惩罚项、拉格朗日/约束优化、多目标 Pareto、代理模型预测、强化学习五类方法,并讨论延迟/能耗预测精度、硬件多样性、多约束复杂耦合三大挑战与硬件感知 NAS 的实践价值。 学习目标 阅读完本节,你应当能够: 列出约束 NAS 的五类约束与各自的典型度量指标 对比惩罚项、约束优化、多目标、代理预测、强化学习五类方法的取舍 解释帕累托最优(Pareto 前沿)在约束 NAS 里的含义 说清硬件感知 NAS 的思路,以及延迟预测为什么难 一、问题与直觉:精度不是唯一目标 前四章的 NAS

5.1 约束条件下的 NAS

本节摘要:约束 NAS(Constrained NAS)把"精度唯一"改成"在满足约束前提下最大化性能"。本节讲清性能、资源、鲁棒性、公平、可解释五类约束的度量方式,对比惩罚项、拉格朗日/约束优化、多目标 Pareto、代理模型预测、强化学习五类方法,并讨论延迟/能耗预测精度、硬件多样性、多约束复杂耦合三大挑战与硬件感知 NAS 的实践价值。

学习目标

阅读完本节,你应当能够:

  1. 列出约束 NAS 的五类约束与各自的典型度量指标
  2. 对比惩罚项、约束优化、多目标、代理预测、强化学习五类方法的取舍
  3. 解释帕累托最优(Pareto 前沿)在约束 NAS 里的含义
  4. 说清硬件感知 NAS 的思路,以及延迟预测为什么难

一、问题与直觉:精度不是唯一目标

前四章的 NAS 有一个共同的隐含假设:精度越高越好。但真实部署场景里,这个假设常常不成立。手机上的模型要轻,自动驾驶的模型要快,边缘设备的模型要省电——这些约束和精度一样硬。SOURCE 用了一个贴切的类比:传统 NAS 像只追求最高速度的汽车设计师,约束 NAS 则要求"速度达标的前提下,油耗、安全、舒适都要兼顾"。

约束 NAS 的价值正在于把"部署现实"提前融进搜索过程。一个在 ImageNet 上精度 80% 但推理要 500ms 的架构,在移动端就是废纸;一个精度 78% 但延迟只有 30ms 的架构才是宝。不把约束放进搜索,搜出来的"最优"架构到了部署阶段才发现不达标,等于整个搜索白跑。

约束 NAS 的核心问题有两个:约束怎么度量、约束怎么融进搜索。度量问题难在"延迟、能耗"这类指标依赖具体硬件,不能光看理论 FLOPs;融入问题难在精度与约束常常互相冲突,不是加个惩罚项就完事。这两难构成了约束 NAS 的全部技术内容。

二、核心原理:五类约束与五类方法

五类约束。性能约束——精度、速度、吞吐量的下限要求(比如 ImageNet 精度不低于 80%、移动端延迟不超过 10ms)。资源约束——最常见的一类:FLOPs(浮点运算次数,衡量计算复杂度)、参数量(影响存储与计算)、内存占用(MB 计)、延迟(ms 计)、吞吐量(每秒处理样本数)、能耗。鲁棒性约束——对抗攻击、噪声干扰、数据分布偏移下的性能下限(比如特定对抗攻击下精度下降不超过 5%)。公平性约束——不同敏感群体(性别、种族、年龄)上的性能差异限制。可解释性约束——医疗、金融场景对模型复杂度、可理解性的要求。

方法一:惩罚项法。在目标函数里加惩罚项,违反约束就扣分。SOURCE 给了具体公式:Objective = Performance - λ × Penalty(FLOPs),惩罚项可以设计成 max(0, FLOPs - C),超过阈值 C 的部分按比例罚。λ 是惩罚系数,控制惩罚强度。优点实现最简单,缺点 λ 调参难——λ 太大压制精度,太小约束形同虚设。

方法二:约束优化法。把约束 NAS 当约束优化问题求解。拉格朗日乘子法——把约束并入拉格朗日函数一起优化;对偶分解法——拆成子问题迭代求解;增广拉格朗日——结合乘子法与惩罚项的优势。优点理论基础扎实、约束处理精确;缺点实现复杂、计算开销大,大规模空间不一定跑得动。

方法三:多目标优化法。约束 NAS 本质是多目标问题——精度一个目标,约束一个目标,一起优化找帕累托前沿。NSGA-II、MOEA/D 这类进化多目标算法能搜索帕累托前沿;Pareto-NAS 显式维护和更新帕累托前沿。输出不再是"一个最优",而是一组"在精度与约束间不同折中"的架构,让用户按需选。优点选择余地大;缺点要多目标都要评估,开销大,选哪个折中还得人来定。

方法四:代理模型预测法。延迟、能耗这些约束指标如果在真实硬件上逐个测,成本爆炸。用代理模型预测——查找表、回归模型预测候选架构的延迟/FLOPs,只对少数架构上真实硬件实测校准。这个思路和第 4 章的代理评估一脉相承,只是预测对象从"性能"换成"约束指标"。

方法五:强化学习法。用 RL 智能体生成架构,奖励同时包含性能与约束满足度:Reward = w_performance × Performance + w_constraint × Constraint_Satisfaction。智能体自己学"怎么生成既好又快"的架构,不用手写惩罚函数。缺点 RL 训练重,收敛性难保证。

方法 约束融入方式 优点 代价
惩罚项 目标函数加惩罚 实现简单 λ 难调
约束优化 拉格朗日/对偶 理论扎实 复杂、开销大
多目标 帕累托前沿 给一簇折中解 开销大、要人来选
代理预测 预测约束指标 省真实硬件评估 预测精度决定效果
强化学习 奖励加权 自适应学策略 训练重、收敛难

三、工程实践要点:约束 NAS 的三个现实问题

问题一:延迟预测难。SOURCE 明确指出"如何准确预测候选架构在目标硬件上的约束指标(尤其是延迟和能耗)仍然是一个挑战"。FLOPs 是理论值,实际延迟受算子实现、内存带宽、并行度影响,理论 FLOPs 相同的两个架构,实测延迟可能差一倍。工程对策:用查找表(按算子类型查实测延迟)+ 少量真实硬件实测校准,比纯理论模型可靠得多。

问题二:硬件平台多样性。同一个架构在不同硬件(手机 SoC、GPU、NPU)上表现完全不同。硬件感知 NAS 的做法是把目标硬件特性(指令集、内存带宽)建模进搜索,直接在目标硬件上评估或模拟评估。做产品时,"目标硬件"必须一开始就定死,否则搜出来的"最优"在另一块板子上就不是最优。

问题三:多约束耦合。延迟、内存、能耗常互相牵扯——减内存可能加延迟,降能耗可能损精度。SOURCE 提醒"约束条件之间可能存在复杂的相互影响"。工程对策:别一次上太多约束,先定 1-2 个硬约束(延迟、参数量),跑通后再逐步加;用帕累托前沿直观呈现约束间的此消彼长,帮决策者看清 trade-off。

实践建议。从小处起步:先做"约束感知的搜索空间设计"——搜索空间里只放轻量操作(深度可分离卷积、组卷积)、限制深度宽度,让"能搜到的架构"天然在约束范围内。这比在搜索算法里加惩罚更省事,是工程上性价比最高的第一步。

⚠️ 常见坑:拿理论 FLOPs 当部署延迟的代理指标。FLOPs 没算内存带宽和算子实现,与真实延迟相关性有限——目标设备的实测延迟才是硬指标,FLOPs 只能当粗筛。

💡 关键直觉:约束 NAS 与普通 NAS 的区别不是"多加了一个优化目标",而是"搜索目标从单点变成了边界"——它不再找"一个最优架构",而是找"一簇满足约束的折中解"。理解这个转变,就理解了为什么帕累托前沿是约束 NAS 的核心输出。

四、约束 NAS 的机制细节与工程化

惩罚项法的数学形态与 λ 的调法

SOURCe 给了惩罚项法的具体公式:Objective = Performance - λ × Penalty(FLOPs),惩罚项可设计成 max(0, FLOPs - C)——超过阈值 C 的部分按比例罚。λ 是惩罚系数,它的调法有讲究:λ 太小,约束形同虚设(搜索会忽略 FLOPs 直奔精度);λ 太大,精度被压制得厉害(搜索只求轻不求准)。工程上的做法是"退火":搜索前期 λ 大(把搜索赶进满足约束的区域),后期 λ 小(在约束区域内精挑精度)。这个"先压约束、后挑精度"的两段式,比固定 λ 效果好得多——它把约束和精度从"对抗"变成了"分时合作"。

多目标优化里的帕累托前沿怎么用

多目标 NAS 输出的是帕累托前沿——一组"精度与约束不可同时改善"的架构。SOURCe 提到 NSGA-II、MOEA/D 这类进化多目标算法能搜索帕累托前沿。工程上的用法分三步:第一步,定义目标(精度 + 1-2 个约束指标);第二步,跑多目标搜索得到前沿(通常几十个折中解);第三步,按部署需求在前沿上选点——移动端选"低 FLOPs 端",云端选"高精度端"。帕累托前沿的价值在于"把决策交给业务":算法给出可能性集合,人来按场景做最终裁决。注意前沿的质量取决于两个目标的可信度——约束指标(尤其延迟)如果预测不准,前沿上的点就是错的。

硬件感知 NAS 的落地路径

硬件感知 NAS(Hardware-Aware NAS)把目标硬件特性(指令集、内存带宽)融进搜索。工程落地有三条渐进的路径:最省的是"查找表 + 回归"——先在新硬件上实测一批算子延迟建成查找表,再用回归模型预测任意架构的延迟,搜索时按预测值做约束;进阶的是"模拟器"——用硬件模拟器评估延迟,比查找表准但慢;最彻底的是"真机评估"——直接在目标硬件上测延迟,最准但最慢。SOURCe 提到 ProxylessNAS 直接在目标硬件上测延迟当约束,是硬件感知的典型。三条路径的选择依据是"硬件变更频率"——硬件固定用查找表,硬件常换用模拟器,精度要求极高才上真机。

约束 NAS 的常见失败模式

失败模式一:约束指标预测不准(用理论 FLOPs 当延迟),搜索结果在真机上全部超预算。失败模式二:约束过多过紧(同时限延迟、内存、能耗、精度),搜索空间被压得找不到可行解。失败模式三:惩罚系数不调(固定 λ),搜索要么无视约束要么被约束压死。三条的共性都是"把约束当静态参数,而不是动态平衡的变量"。SOURCe 提醒的"约束条件之间可能存在复杂的相互影响"也是同一个教训:约束不是独立的,处理它们的正确姿势是"少而准、动态调"。

收束:约束 NAS 对前三章方法论的"改造清单"

把约束 NAS 与第 2-4 章对照,改动点很清晰:搜索空间——操作集合换成轻量操作、深度宽度收紧范围(约束感知的空间设计);搜索策略——梯度方法的损失加惩罚项、多目标进化替代单目标、强化学习的奖励加约束项;评估策略——除了评估性能还要评估约束指标(代理模型预测延迟/FLOPs),评估阶梯多出一路"约束预测"。三处改造完成后,约束 NAS 不是新框架,而是把"约束"作为一等公民注入现有三大支柱的产物——这也解释了为什么 SOURCe 把它放在"高级主题"而非另起炉灶:它复用全部旧方法论,只是改了目标函数。

  • 五类约束:性能、资源、鲁棒性、公平、可解释
  • 资源指标:FLOPs、参数量、内存、延迟、吞吐量、能耗
  • 五类方法:惩罚项、约束优化、多目标、代理预测、强化学习
  • 帕累托前沿:输出一簇折中解而非单点最优
  • 延迟预测难:理论 FLOPs ≠ 实测延迟,用查找表+实测校准
  • 硬件多样性:目标硬件先定死,做硬件感知搜索
  • 多约束耦合:先 1-2 个硬约束,跑通再逐步加
  • 空间设计先行:搜索空间里只放轻量操作是最省事的约束手段

下一节看特定数据类型的 NAS——换个输入,搜索空间就得重画。

图5-1 硬件感知 NAS 的帕累托前沿示意

图5-1 硬件感知 NAS 的帕累托前沿示意


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U