archai
微软开源的AutoML NAS框架,让AI自动搜索最优神经网络架构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软开源的AutoML NAS框架,让AI自动搜索最优神经网络架构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
传统深度学习有一个绕不开的痛点:调参全靠经验,炼丹全凭运气。一个 ResNet 网络,从多少层、每层多少通道、要不要残差连接,到学习率衰减策略、batch size 设置,每一步都是玄学。ResNet 的作者何恺明花了大量时间做实验才找到那套最优配置,普通人根本没有这个资源。
在这个背景下,神经网络架构搜索(Neural Architecture Search,NAS) 应运而生。简单说,就是让算法自己在大规模的候选网络空间中搜索,找到性能最优(或帕累托最优)的网络结构。Google 的 NASNet 论文发表后,这个方向火遍全球。但 NAS 有一个致命问题:搜索成本高得离谱——Google 最早做一次 NAS,光 GPU 集群就要跑 800 张卡跑 28 天。
Archai 正是微软为了解决这个问题而生的。作为微软研究院的开源项目,Archai 的核心目标只有一个:让 NAS 研究变得快速、可复现、模块化,把 NAS 从"大厂专属玩具"变成"每个研究者都能用得起的工具"。
Archai 最值得称道的特点,是它的模块化设计。整个框架围绕离散搜索(Discrete Search)核心构建,用户可以自由替换搜索空间、搜索算法和评估器。
Archai 内置了多种搜索空间,覆盖 CV 和 NLP 两大领域:
confs/ 目录,定义了搜索空间的具体参数范围。Archai 实现了 6 种主流 NAS 算法,全部遵循统一的 API 设计,可以直接替换:
| 算法 | 描述 | 特点 |
|---|---|---|
| BANanas | Bayesian Optimization + Neural Networks | 基于元学习的代理模型,加速搜索 |
| EvolutionParetoSearch | 进化算法 + 帕累托优化 | 多目标优化,输出帕累托前沿 |
| RegularizedEvolution | 正则化进化搜索 | Google 论文中的经典方法 |
| RandomSearch | 随机搜索 | 基线对比 |
| SuccessiveHalving | 渐进式减半 | 算力友好的早停策略 |
| LocalSearch | 局部搜索 | 邻居空间的精细化探索 |
Archai 的另一个亮点是丰富的评估器。以 NLP 场景为例,用户可以使用:
NonEmbeddingParamsProxy:统计非 embedding 层参数量(评估模型大小的代理指标)TransformerFlexOnnxLatency:通过 ONNX 导出测延迟(评估推理速度)TransformerFlexOnnxMemory:通过 ONNX 测内存占用(评估部署友好性)所有评估器都遵循统一的接口规范,用户可以自行扩展。
Archai 的代码结构分为两大分支:传统 NAS(supergraph/) 和 离散搜索(discrete_search/)。当前活跃开发集中在 discrete_search 分支。
archai/
├── discrete_search/ # 活跃分支:模块化NAS框架
│ ├── algos/ # 6种搜索算法
│ ├── api/ # 核心API(search_objectives等)
│ ├── evaluators/ # 评估器
│ ├── predictors/ # 预测模型
│ └── search_spaces/ # 搜索空间(cv/nlp)
├── supergraph/ # 传统NAS实现
├── onnx/ # ONNX模型导出与优化
├── quantization/ # 量化工具
├── trainers/ # 训练器封装
├── datasets/ # 数据集工具
└── api/ # 对外API封装
Archai 的核心技术栈是 PyTorch,依赖涵盖了 Azure ML(云端训练)、DeepSpeed(分布式训练)、ONNX(模型导出)、Ray(分布式搜索)、transformers(HuggingFace 集成)等重量级库。
Archai 是一个纯研究框架,没有 Web 界面。上手方式有三种:
pip install archai,最简单,但依赖众多(60+ 包),容易出现版本冲突。setup.py 安装,适合需要魔改代码的研究者。使用流程大约是:定义搜索空间 → 配置搜索目标(可多目标)→ 选择算法 → 执行搜索 → 导出 ONNX 模型。每个步骤都有 Python API 可调用,官方文档和 Jupyter notebook 覆盖了基本用法。
需要注意的坑:Archai 的许多高级功能依赖 Azure ML(azure-ai-ml),如果仅想在本地运行,需要额外配置;此外,transformers 依赖固定为 4.27.4,与最新版本不兼容,可能影响与其他 LLM 库的集成。
Archai 也有它的问题。最明显的是维护状态——GitHub 最近一次 push 是 2025-11-24,距今已有约 7 个月没有更新,issues 堆积(4 个 open),而 AutoML 领域迭代极快,7 个月意味着可能已经落后于最新的 NAS 方法。
此外,Archai 的搜索效率虽然比 Google 原始方法快了很多,但相比 2023-2024 年出现的新一代 One-Shot NAS 方法(如 Once-for-All、BigNAS),单位算力下的搜索效果仍有差距。它的优势更多在于研究的模块化和可复现性,而非端到端的搜索效率。
最后,项目文档质量参差不齐——快速开始指南写得不错,但高级功能(如多目标优化、ONNX 导出流水线)的文档明显缺乏,实际使用中需要大量参考源码。
Archai 代表了微软在 AutoML 领域的一次有意义的探索。它的模块化设计理念影响了很多后续的 NAS 框架,让研究者不必从零构建搜索框架。根据 GitHub topics(automl、nas、darts、hyperparameter-optimization、model-compression),Archai 已经被标记为 AutoML 领域的标杆项目之一。
对于需要将深度学习模型部署到生产环境(尤其是边缘设备)的团队来说,Archai 提供的**多目标搜索(参数量 + 延迟 + 内存)**能力是实打实的刚需——可以让模型在精度不损失太多的情况下,大幅缩小体积以适应移动端或嵌入式设备。

图1:Archai 项目 Logo,由微软研究院出品
核心适用场景:深度学习研究(NAS 实验)、模型压缩与部署优化(边缘部署前的架构探索)、多目标优化(精度 vs 速度 vs 模型大小的权衡研究)。