
一、论文基本信息论文题目Once-for-All: Train One Network and Specialize it for Efficient Deployment作者Han Cai、Chuang Gan、Tianzhe Wang、Zhekai Zhang、Song Han发表会议ICLR 2020方法简称OFAOnce-for-All Network官方代码mit-han-lab/once-for-all这篇论文的核心目标是解决高效模型部署中的一个现实问题不同设备、不同延迟约束、不同功耗预算下能否只训练一次网络然后快速得到适合具体部署场景的子网络。ICLR 官方页面明确指出OFA 的核心思想是decouple model training from architecture search也就是把模型训练和结构搜索解耦训练好一个 once-for-all network 后可以在不额外训练的情况下从中选择适合某个硬件和约束的专用子网络。官方代码仓库为mit-han-lab/once-for-all。仓库说明该方法发表于 ICLR 2020并提供 OFA 网络、预训练模型、子网络评估和多设备专用模型。仓库中也列出了 MobileNetV3、ProxylessNAS、OFA-ResNet50 等不同设计空间和多个硬件平台上的 specialized networks。(GitHub)二、论文要解决的问题深度网络部署时一个很常见的问题是同一个模型往往要部署到很多不同设备上例如服务器 GPU、移动端 CPU、移动端 GPU、FPGA、边缘设备等。不同设备的计算特性差异很大即使 FLOPs 相同真实延迟也可能完全不同。传统做法通常是给定一个设备和延迟约束然后用人工设计或 NAS 搜索一个专门的网络再从头训练。这样做的问题是成本非常高。每多一个设备或一个延迟目标就可能需要重新搜索、重新训练、重新调参。OFA 论文指出传统方法要么人工设计网络要么使用 NAS 为每个场景搜索并从头训练专用网络这在计算成本上是不可扩展的。OFA 想解决的问题是能不能只训练一个大网络让它包含大量不同子网络然后针对不同部署场景直接从里面选一个合适的子网络也就是说它不是为每个设备重新训练一个模型而是训练一次部署多次。这也是标题中Once-for-All的含义。三、核心思想OFA 的核心思想可以概括为一句话先训练一个包含海量子网络的超网络然后针对具体设备和约束从这个超网络中直接选择一个子网络进行部署。这个超网络不是只支持宽度变化而是支持多个维度的弹性变化包括输入分辨率。网络深度。通道宽度 / expansion ratio。卷积核大小。ICLR 页面明确写到OFA 支持 diverse architectural settings包括depth、width、kernel size、resolution。(ICLR)这和普通可伸缩网络的区别很明显。US-Net 主要让网络在不同宽度下运行而 OFA 进一步把可变维度扩展到深度、宽度、卷积核大小和输入分辨率。这样一个 OFA 网络中就包含了数量极其庞大的子网络。论文摘要中提到OFA 可以支持超过个子网络。(ICLR)所以OFA 的关键不只是“模型变宽变窄”而是一个训练好的超网络可以覆盖大量不同结构、不同计算量、不同延迟特性的子网络。四、OFA 和普通 NAS 的区别普通 NAS 通常是先搜索结构再训练该结构。也就是说流程是先针对某个设备和目标延迟搜索一个网络结构。然后从头训练这个网络。如果换一个设备或换一个延迟约束就可能要重新搜索、重新训练。OFA 的流程完全不同先训练一个 once-for-all network。然后针对不同设备和约束从中选择子网络。选出来的子网络可以直接继承 OFA 的权重不需要从头训练。这个区别非常关键普通 NAS 的成本会随着部署场景数量增加而增加。OFA 的训练成本基本只发生一次后续部署场景主要只需要搜索和选择子网络。ICLR 官方摘要也明确指出OFA 通过训练一个支持多种结构设置的网络把训练和搜索解耦给定部署场景后可以从 OFA 网络中快速选择专用子网络而不需要额外训练。(ICLR)五、核心技术一Progressive ShrinkingOFA 最大的训练难点是子网络数量太多。如果直接同时训练所有子网络训练会非常困难因为不同子网络之间会相互干扰。为了解决这个问题论文提出Progressive Shrinking渐进式收缩训练。它的核心思想是先训练最大网络再逐步让网络支持更小的子结构。也就是说不是一开始就同时训练所有深度、宽度、核大小和分辨率而是按照一定顺序逐渐扩大可采样子网络范围。这个过程可以理解为先让最大网络学好完整表达能力。然后逐步训练弹性卷积核大小。再训练弹性深度。再训练弹性宽度。最后训练弹性输入分辨率或联合弹性空间。论文将 Progressive Shrinking 称为一种 generalized pruning method因为它不仅缩小通道还在更多结构维度上进行收缩包括 depth、width、kernel size 和 resolution。(ICLR)这里的重点是OFA 不是简单地训练一个大网络然后随便截取子网络它通过 Progressive Shrinking 让大量子网络都能继承有效权重。六、核心技术二Elastic Kernel Size普通卷积层的卷积核大小是固定的比如、、。OFA 中一个卷积层可以支持多个 kernel size。例如最大 kernel 是较小的、可以看作从中心裁剪出来的子卷积核。这样一个大卷积核就可以包含多个不同大小的子卷积核。但是仅仅裁剪中心权重还不够因为不同 kernel size 的权重分布不同。为了让小核从大核中继承得更好OFA 引入了 kernel transformation使较小 kernel 能从较大 kernel 中更稳定地获得有效权重。这一点很重要OFA 的 elastic kernel size 不是简单粗暴地截取权重而是要让不同 kernel size 的子网络共享并适配权重。七、核心技术三Elastic Depth网络深度决定了计算量和表达能力。更深的网络通常精度更高但延迟也更大。OFA 支持不同深度的子网络。对于一个 stage如果最大深度是 4 个 block那么较小深度的子网络可以只使用其中前 2 个或前 3 个 block。这种设计让 OFA 能在不同设备上选择不同深度。如果设备预算充足可以选择更深网络。如果设备预算紧张可以选择更浅网络。所以elastic depth 的意义是让同一个网络可以在不同深度下运行从而适配不同延迟约束。八、核心技术四Elastic Width / Expansion Ratio在 MobileNetV3、MBConv 等结构中block 内部通常有 expansion ratio例如 3、4、6。Expansion ratio 越大中间通道越多表达能力越强但计算量也越大。OFA 支持不同 expansion ratio。这相当于让每个 block 的中间宽度可以变化。官方仓库中也列出了 OFA MobileNetV3 的设计空间例如 depth 取 2、3、4expand ratio 取 3、4、6kernel size 取 3、5、7。(GitHub)这说明 OFA 的子网络搜索空间不是只改变一两个全局超参数而是在多个 block 上同时选择深度、宽度和卷积核大小。这也是它能覆盖大量部署场景的原因。九、核心技术五Elastic Resolution输入分辨率也是影响计算量的重要因素。相同网络结构下输入分辨率越高计算量越大分辨率越低推理速度越快但可能损失精度。OFA 把输入分辨率也纳入搜索空间。官方仓库中可以看到 OFA-MobileNetV3 和 ProxylessNAS 的输入分辨率范围是 128 到 224OFA-ResNet50 的输入分辨率范围也是 128 到 224。(GitHub)这使 OFA 可以根据设备和任务要求选择合适分辨率。例如延迟非常严格时可以选择低分辨率如果精度要求更高可以选择高分辨率。这里的重点是OFA 不只搜索网络内部结构也搜索输入分辨率。十、子网络如何被选择出来训练好 OFA 超网络后还需要针对具体部署场景选择一个子网络。这个问题可以写成约束为其中表示一个子网络结构(T) 是目标设备上的延迟约束。也就是说目标是在满足延迟约束的前提下找到精度最高的子网络。为了高效搜索OFA 会使用两个辅助工具Accuracy predictor。Latency lookup table。Accuracy predictor 用来快速估计某个子网络的精度。Latency lookup table 用来估计某个子网络在目标硬件上的延迟。这样就不需要每次都完整训练和真实测试所有候选网络而可以快速搜索符合约束的结构。最终选出的子网络直接继承 OFA 权重可以进行少量 BN 重新统计或校准然后部署。这里最重要的是OFA 把昂贵的训练成本转移到一次性超网络训练中把后续部署变成低成本子网络选择问题。十一、和 US-Net 的区别US-Net 主要解决的是宽度可伸缩。它让一个网络可以在不同 width multiplier 下运行例如从到。OFA 则更进一步。它不仅改变宽度还同时改变深度。卷积核大小。输入分辨率。expansion ratio / channel width。所以US-Net 更像是一个宽度弹性网络。OFA 更像是一个多维结构弹性超网络。二者的共同点是都希望“训练一次多种部署”。区别是 OFA 的搜索空间更大也更接近硬件部署场景下的真实需求。十二、实验结果解读12.1 OFA 支持极大的子网络空间论文指出OFA 通过 progressive shrinking 可以同时训练超过个子网络。这个数量说明 OFA 的设计空间非常大不是简单几个宽度或几个深度组合。(ICLR)这点的意义在于部署时可以根据不同设备和延迟约束找到更细粒度、更合适的子网络。普通方法可能只有几个候选模型而 OFA 可以提供非常密集的结构选择空间。12.2 OFA 在多种硬件平台上优于已有 NAS 方法论文在 CPU、GPU、移动端 CPU、移动端 GPU、FPGA accelerator 等多种硬件平台上进行了实验。ICLR 页面显示OFA 在多种硬件平台和约束下 consistently outperforms SOTA NAS methods并且相较 MobileNetV3 最多有 4.0% ImageNet Top-1 提升。(ICLR)这说明 OFA 的优势不只是训练成本低而是在具体硬件约束下也能找到强性能子网络。这里要强调一点不同硬件对网络结构的偏好并不相同。某些设备可能更适合小 kernel某些设备可能更适合较浅网络某些设备对分辨率更敏感。OFA 的多维搜索空间正好能适应这种差异。12.3 移动端设置下达到 80.0% ImageNet Top-1论文报告中一个很有代表性的结果是OFA 在移动端设置下达到 80.0% ImageNet Top-1 accuracy并且 MACs 小于 600M。ICLR 页面和官方仓库都突出展示了这个结果。(ICLR)这个结果说明在移动端计算预算下OFA 不是只追求速度而是能达到很高的精度上限。对于高效模型设计来说这一点很关键OFA 不是简单压缩模型而是在具体资源约束下寻找精度和效率更优的结构。12.4 相比 MobileNetV3 和 EfficientNet 有真实延迟优势论文摘要中提到OFA 可以在相同精度下比 MobileNetV3 快 1.5×比 EfficientNet 快 2.6×这里比较的是 measured latency而不只是 FLOPs。(arXiv)这点非常重要。很多模型压缩论文只报告 FLOPs但 FLOPs 和真实延迟并不总是一致。OFA 在搜索时考虑目标硬件延迟因此更能找到实际部署友好的结构。所以 OFA 的实验重点不是单纯证明 MACs 低而是证明面向具体硬件约束搜索出来的子网络能带来真实部署优势。12.5 官方仓库提供多个设备和约束下的专用模型官方 GitHub 仓库列出了大量 specialized networks包括 LG G8、Samsung S7 Edge、Samsung Note8、Samsung Note10、Google Pixel、1080Ti、V100、Jetson TX2、Intel Xeon CPU 等不同平台上的模型配置和精度。(GitHub)这说明 OFA 的方法确实围绕“多设备部署”展开而不是只在单一 FLOPs 指标上做比较。这也是 OFA 和普通剪枝方法最大的不同之一它不是只给出一个压缩模型而是给出一套可以面向不同平台特化的模型生成机制。十三、方法优点13.1 训练一次适配多种部署场景OFA 最大优点是一次训练面向多个设备和多个约束生成专用子网络。这大幅降低了为不同部署场景分别设计、搜索和训练模型的成本。13.2 训练和搜索解耦OFA 的训练阶段只做一次后续针对不同设备只需要搜索子网络。这种training-search decoupling是 OFA 的核心贡献。相比每个场景都重新训练一个模型这种方式更可扩展。(ICLR)13.3 搜索空间非常大OFA 同时支持分辨率、深度、宽度、kernel size 等维度变化因此可以覆盖极其庞大的子网络空间。ICLR 页面提到 OFA 可以同时支持超过 (10^{19}) 个子网络。(ICLR)这意味着它能为不同硬件和延迟约束找到更细致的结构。13.4 不需要对子网络重新训练选出的子网络可以直接继承 OFA 网络权重不需要从头训练。这点非常实用因为如果每个子网络都要重新训练OFA 的优势就会大幅下降。13.5 面向真实硬件而不只是 FLOPsOFA 使用 latency predictor 或 lookup table 来适配不同硬件平台。这让它比只按 FLOPs 约束设计模型更接近真实部署需求。官方仓库中给出的多个设备专用模型也说明OFA 的重点是hardware-aware specialization。(GitHub)十四、方法局限14.1 OFA 训练本身成本仍然较高OFA 虽然避免了为每个场景重新训练模型但训练 once-for-all network 本身并不轻松。因为它需要支持大量子网络还要进行 Progressive Shrinking。因此OFA 的优势主要体现在部署场景很多时。如果只需要一个固定模型训练 OFA 可能反而比普通训练复杂。14.2 子网络之间存在权重共享干扰大量子网络共享同一套权重不同子网络的优化目标可能冲突。例如大 kernel 和小 kernel、深网络和浅网络、大宽度和小宽度都希望共享权重但它们对权重的需求并不完全一致。Progressive Shrinking 可以缓解这种干扰但不能完全消除。14.3 搜索空间需要人工设计OFA 的效果依赖预先定义好的搜索空间例如 kernel size 取 3、5、7depth 取 2、3、4expand ratio 取 3、4、6resolution 在 128 到 224 之间。如果搜索空间设计不好OFA 仍然可能找不到最佳结构。所以 OFA 并不是完全自动地发现所有可能网络结构而是在人工设定的弹性空间内搜索。14.4 子网络选择依赖预测器或延迟表OFA 的快速搜索依赖 accuracy predictor 和 latency lookup table。如果预测器不准搜索结果可能不是最优。此外延迟表也和具体硬件、推理框架、batch size 有关。换一个硬件环境时通常需要重新测量或构建新的延迟表。14.5 对非 CNN 架构不能直接照搬OFA 原始设计主要围绕 MobileNetV3、ProxylessNAS、ResNet 等 CNN 结构展开。对于 ViT、LLM、VLM 这类模型弹性维度可能变成 attention heads、MLP ratio、token 数量、layer 数量、hidden size 等。OFA 的思想可以迁移但具体训练和搜索方式需要重新设计。十五、整体评价OFA 的核心价值在于它把高效模型部署从“每个场景单独搜索和训练”推进到“一个超网络覆盖大量部署场景”。它并不是传统意义上的剪枝方法也不是简单的动态推理方法。更准确地说OFA 是一种弹性超网络训练与部署特化方法。它解决了三个关键问题如何训练包含大量子网络的超网络。如何让子网络继承有效权重而不重新训练。如何针对具体硬件和延迟约束快速选择合适子网络。Progressive Shrinking 是 OFA 的训练核心解决了海量子网络同时训练的困难多维弹性设计让 OFA 能覆盖分辨率、深度、宽度和卷积核大小硬件感知搜索让它能真正面向不同设备部署。这篇论文的影响也很大。它把 slimmable network 的思想进一步扩展成更完整的 once-for-all deployment framework为后续弹性网络、超网络训练、硬件感知 NAS、多预算部署等方向提供了重要基础。十六、一句话总结《Once-for-All: Train One Network and Specialize it for Efficient Deployment》提出 OFA通过 Progressive Shrinking 训练一个同时支持分辨率、深度、宽度和卷积核大小变化的超网络并在部署时根据具体硬件和延迟约束快速选择专用子网络它的核心贡献不是训练一个固定小模型而是实现“训练一次、适配多设备、多预算部署”在降低搜索和训练成本的同时获得强硬件适配能力。