Microsoft NNI 入门 —— Mnist样例运行内置Tunner算法

前四种TPE、Random、Anneal、Naive Evolution方法,比较容易,只需要修改config.yml文件,其余方法会在算法介绍中详细解释使用过程中遇到的问题:
NNI提供了几种最新的Tunner算法,以下是官方github文档对算法的解释和实验结果截图+除官方文档给出的步骤以外的步骤记录:
1、TPE:是一种sequential model-based optimization(SMBO,即基于序列模型优化)的方法。 SMBO 方法根据历史指标数据来按顺序构造模型,来估算超参的性能,随后基于此模型来选择新的超参。

TPE

记得把config.yml设置参数gpuNum=1,即可使用GPU计算,否则默认是不会使用GPU的。

2、Random:在超参优化时,随机搜索算法展示了其惊人的简单和效果。 建议当不清楚超参的先验分布时,采用随机搜索作为基准。


Random

3、Anneal:这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。 退火率不是自适应的。


Anneal

4、Naive Evolution:朴素进化算法来自于大规模图像分类进化。 它会基于搜索空间随机生成一个种群。 在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 进化算法需要很多次 Trial 才能有效,但它也非常简单,也很容易扩展新功能。


Naive Evolution

5、SMAC: 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 SMAC 算法包装了 Github 的 SMAC3。 注意:SMAC 需要通过 nnictl package 命令来安装。
分别运行一下两个命令:
conda install gxx_linux-64 gcc_linux-64 swig
nnictl package install --name SMAC
即可成功安装。

(CentOS(Conda 4.5.4)上提示 ModuleNotFoundError: No module named '_regression' ,可能是之前安装的包影响了环境,直接新建了conda的虚拟环境,重新进行安装。)

SMAC

  • 安装时候遇到的问题
  1. 使用nnictl package的时候,如果服务器网速不给力,SMAC很有可能安装失败,(如果可以直接使用pip中的smac包就好了)。
  2. SMAC成功安装以后,其中使用到的一个包SpaceConfig在我使用的conda(conda 5+,清华的源)中没有找到,因此安装失败,运行的时候会报错,使用pip install SpaceConfig手动安装这个包即可解决。
  3. 运行Mnist-annotation中的例子会失败,config中配置的useAnnotation=true,换成了mnist中的例子即可(查看了ERR觉得是这个元婴,但是并不确定),并且指定参数空间(SearchSpace)。
  4. SMAC不可以使用combine_params类型的参数文件。

TIPS:

  • 使用nnictl experiment show可以查到本次实验的编号id,可以找到log文件和一些配置文件、运行文件的位置,在调试的时候,非常有效,或者网页中查看日志文件,位置一般是:/home/XXX/nni/experiments/nptml4D,其中最后一个是随机id。
  • nnictl 可以同时运行多个实验,只要使用不同的端口,(如果可以把所有的实验都能用一个网页显示,选择不同id的实验查看是不是更方便?)nnictl create --config config.yml --port 8081,运行时候会生成id,此时需要对相应id的时候进行操作就需要直接加上id号:nnictl experiment show nptml4D即可。

6、Batch tuner: Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。
searchSpacePath中定义搜索空间json文件,
searchSpacePath: search_space.json
注意: useAnnotation和searchSpacePath两个字段互斥,useAnnotation=True,searchSpacePath 字段必须被删除。useAnnotation 定义使用标记来分析代码并生成搜索空间。
使用了/mnist/例子中的的配置运行,运行后发生错误,查看log(experiment中有logPath),发现搜索空间的.json文件,必须要用combine_params

logPath

实验结果
BatchTuner

7、Grid Search:网格搜索会穷举定义在搜索空间文件中的所有超参组合。 网格搜索可以使用的类型有 choice, quniform, qloguniform。 quniform 和 qloguniform 中的数值 q 具有特别的含义(不同于搜索空间文档中的说明)。 它表示了在最高值与最低值之间采样的值的数量。
实验运行时,第一次参数是uniform类型的,发现直接改成quniform,需要再加一个q的参数值,文档中有对q参数进行说明。
本次实验直接定义了 choice类型的数值,

GridSearch

8、Hyperband:Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 它的基本思路是生成大量的配置,并运行少量的步骤来找到有可能好的配置,然后继续训练找到其中更好的配置。


Hyperband

9、Network Morphism:Network Morphism 提供了深度学习模型的自动架构搜索功能。 每个子网络都继承于父网络的知识和形态,并变换网络的不同形态,包括深度,宽度,跨层连接(skip-connection)。 然后使用历史的架构和指标,来估计子网络的值。 最后会选择最有希望的模型进行训练。

Network Morphism

由于计算资源受限,因此目前还没有跑出完整的结果,但是可以看到最高的得分0.91,最低的0.88。
安装过程中,pytorch版本的样例代码中,from network_morphism import utils,这样会报错,选择/nni/examples/trials,运行代码即可。后续文档希望可以晚上一下~
在运行cifar的程序过程中,由于网速太慢,可能会出现Time out的错误。
运行过程中出现BrokenPipeError: [Errno 32] Broken pipe,由于nni 0.4.1之前的版本有一些错误,所以出现错误,可以根据nni中issue解决-->ISSUE。我直接删除了调用的包中的相关语句,或者安装高版本的nni。
10、Metis Tuner:大多数调参工具仅仅预测最优配置,而 Metis 的优势在于有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 Trial 的建议。 它不进行随机取样。 大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。
Metis Tuner

默认配置下没有找到比较好的配置的结果。
简单分析:

算法 最高分数 最低分数 >0.80次数 >0.90次数 >0.95次数 总次数
TPE 0.9834 0.0958 7 5 3 10
Random 0.9823 0.0982 3 3 2 10
Anneal 0.9837 0.0892 2 2 2 10
Naive Evolution 0.9692 0.0958 2 1 1 10
Batch Tuner 0.9877 0.1135 3 3 2 6
Grid Search 0.988 0.0892 343 274 162 600
SMAC 0.9733 0.098 5 4 1 10
Hyperband 0.9831 0.0958 5 5 4 10

(使用NNI的Mnist-annotation例子分析,不同tuner算法的NNI WebUI的训练结果界面截图图像(以tuner命名),简单总结结果)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容