微软开源mlsys库之NNI

2021-06-27  本文已影响0人  加油11dd23

最近无论是腾讯还是ntu都在用这个库,这个库算是业内做automl比较好的仓库了,这里简单做下总结。

一、总览

NNI (Neural Network Intelligence) 是一个轻量但强大的工具包,帮助用户自动的进行特征工程神经网络架构搜索超参调优以及模型压缩
NNI 管理自动机器学习 (AutoML) 的 Experiment,调度运行由调优算法生成的 Trial 任务来找到最好的神经网络架构和/或超参,支持各种训练环境,如本机远程服务器OpenPAIKubeflow基于 K8S 的 FrameworkController(如,AKS 等)DLWorkspace (又称 DLTS), AML (Azure Machine Learning), AdaptDL(又称 ADL) ,和其他的云平台甚至 混合模式

二、支持的功能

NNI 提供命令行工具以及友好的 WebUI 来管理训练的 Experiment。 通过可扩展的 API,可定制自动机器学习算法和训练平台。 为了方便新用户,NNI 内置了最新的自动机器学习算法,并为流行的训练平台提供了开箱即用的支持。

  1. 穷举搜索(random, grid, batch)
  2. 启发式(进化,退火,hyperband, PBT)
  3. 贝叶斯
  4. 强化学习
  1. ENAS
  2. DARTS
  3. P-DARTS
  4. CDARTS
  5. SPOS
  6. ProxylessNAS
  7. Network Morphism
  8. TextNAS
  9. Cream

三、模型压缩

因为主要用到这一块,这里单另出来介绍

剪枝算法
^^^^^^^^^^^^^^^^^^

剪枝算法通过删除冗余权重或层通道来压缩原始网络,从而降低模型复杂性并解决过拟合问题。

.. list-table::
:header-rows: 1
:widths: auto

参考此 :githublink:基准测试 <../CommunitySharings/ModelCompressionComparison.rst> 来查看这些剪枝器在一些基准问题上的表现。

量化算法
^^^^^^^^^^^^^^^^^^^^^^^

量化算法通过减少表示权重或激活所需的精度位数来压缩原始网络,这可以减少计算和推理时间。

.. list-table::
:header-rows: 1
:widths: auto

模型加速

模型压缩的目的是减少推理延迟和模型大小。 但现有的模型压缩算法主要通过模拟的方法来检查压缩模型性能(如精度)。例如,剪枝算法中使用掩码,而量化算法中量化值仍然是以 32 位浮点数来存储。 只要给出这些算法产生的掩码和量化位,NNI 可真正的加速模型。 模型加速的详细文档参考 这里 <./ModelSpeedup.rst>__。

压缩工具

压缩工具包括了一些有用的工具,能帮助用户理解并分析要压缩的模型。 例如,可检查每层对剪枝的敏感度。 可很容易的计算模型的 FLOPs 和参数数量。 点击这里 <./CompressionUtils.rst>__,查看压缩工具的完整列表。

高级用法

NNI 模型压缩提供了简洁的接口,用于自定义新的压缩算法。 接口的设计理念是,将框架相关的实现细节包装起来,让用户能聚焦于压缩逻辑。 用户可以进一步了解我们的压缩框架,并根据我们的框架定制新的压缩算法(剪枝算法或量化算法)。 此外,还可利用 NNI 的自动调参功能来自动的压缩模型。 参考 这里 <./advanced.rst>__ 了解更多细节。

上一篇下一篇

猜你喜欢

热点阅读