NNI优化超参数

1. NNI简介

NNI (Neural Network Intelligence) 是微软开源的自动机器学习(AutoML)的工具包。它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。

在其中使用到的基本概念如下:

  • Experiment(实验): 表示一次任务,例如,寻找模型的最佳超参组合,或最好的神经网络架构等。它由 Trial 和自动机器学习算法所组成。
  • Search Space(搜索空间):是模型调优的范围。 例如,超参的取值范围。
  • Configuration(配置):配置是搜索空间的实例化,从搜索空间中固定下来一定的超参数,每个超参都会有特定的值。
  • Trial(尝试):是一次独立的尝试,它会使用某组配置(例如,一组超参值,或者特定的神经网络架构)。 Trial 会基于提供的配置来运行。
  • Tuner(调优器):一种自动机器学习算法,会为下一个 Trial 生成新的配置。 新的 Trial 会使用这组配置来运行。
  • Assessor(评估器):分析 Trial 的中间结果(例如,定期评估数据集上的精度),来确定 Trial 是否应该被提前终止。
  • 训练平台:是 Trial 的执行环境。 根据 Experiment 的配置,可以是本机,远程服务器组,或其它大规模训练平台(如OpenPAI,Kubernetes等)。

最后说一下版本问题,NNI如果是在Windows系统上运行的话,我测试的是v2.7版本比较稳定,其余v2.8,v2.9,v2.10或多或少都有连接不稳的问题,Linux系统上则不存在此类问题。

官方文档地址如下:https://nni.readthedocs.io/en/v2.9/hpo/overview.html

2. 使用步骤及示例

2.1 编写程序

首先NNI只是一个自动机器学习的工具,作用是调参、神经架构搜索等,即是对已经能够训练出模型的代码文件进行参数的调节,所以,第一步,我们需要先写出能够训练出模型的代码。之后,在这基础上插入NNI的几行代码即可。

这里,我们用我文本分类文章中的程序来做示例,当然,没看过这篇文章的朋友也可以继续看下去,因为改动其实很少的。

2.2 设置参数搜索空间

NNI能够支持TensorFlow、Pytorch等很多的深度学习框架,且兼容性很好,如果需要使用NNI的参数优化,仅需要添加很少的代码,这里,假如我们需要调节的参数只有学习率 learning_rate 以及 训练轮次 epoch,建立一个名为 search_space.json 的JSON文件,文件内容如下:

{
   
   
    "learning_rate": {
   
   "_type":"uniform", "_value": [0.0001, 0.1]},
    "num_epochs":{
   
   "_type":"choice","_value":[5, 10, 15, 20]}
}

上述文件中,learning_rate,epoch 为需要优化的参数的名称,_type 为参数搜索的策略,比如如果搜索策略为 chioce,那么参数的搜索就会在 _value 的值中选择一个值进行搜索,如果搜索策略为 uniform,那么参数就会在 _value 所属的范围里面按照均匀分布进行参数的选择,更加详细的策略下面会讲。

2.3 更改源程序

原来的程序主函数如下所示。

# 存放数据的文件夹
dataset = 'text_classify_data'

# 搜狗新闻:embedding_SougouNews.npz, 腾讯:embedding_Tencent.npz, 随机初始化:random
embedding = 'embedding_SougouNews.npz'

# 需要用到的所有参数
config = Config(dataset, embedding)

# 得到数据的迭代器
vocab, train_data, dev_data, test_data = get_data(config, False)
dataloaders = {
   
   
    'train': DataLoader(TextDataset(train_data, config), 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值