浅析自动机器学习(AutoML)工具NNI(下)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: NNI 简介NNI (Neural Network Intelligence) 是一个轻量级但功能强大的自动机器学习(AutoML)工具包,可帮助用户自动化特征工程、神经架构搜索、超参数调优和模型压缩,并支持单机、本地多机、云等不同的运行环境。

NNI 超参数调优实验的简单示例


NNI 用来帮助超参调优的伪代码如下:

  • 输入: 搜索空间, Trial 代码, 配置文件
  • 输出: 一组最优的参数配置
1: For t = 0, 1, 2, ..., maxTrialNum,
 2:      hyperparameter = 从搜索空间选择一组参数
 3:      final result = run_trial_and_evaluate(hyperparameter)
 4:      返回最终结果给 NNI
 5:      If 时间达到上限,
 6:          停止实验
 7: 返回最好的实验结果
复制代码


开发并启动一个 NNI 实验

启动 Experiment 的包含如下三个步骤:

第一步 :编写 JSON 格式的 搜索空间 文件,包括所有需要搜索的超参的 名称分布 (离散和连续值均可)。

search_space.json

{
    "batch_size": {"_type":"choice", "_value": [16, 32, 64, 128]},
    "hidden_size":{"_type":"choice","_value":[128, 256, 512, 1024]},
    "lr":{"_type":"choice","_value":[0.0001, 0.001, 0.01, 0.1]},
    "momentum":{"_type":"uniform","_value":[0, 1]}
}
复制代码


第二步 :修改 Trial 代码来从 NNI 获取超参,并返回 NNI 最终结果。

mnist.py

import nni
def main(args):
    # 下载数据
    train_loader = torch.utils.data.DataLoader(datasets.MNIST(...), batch_size=args['batch_size'], shuffle=True)
    test_loader = torch.tuils.data.DataLoader(datasets.MNIST(...), batch_size=1000, shuffle=True)
    # 构造模型
    model = Net(hidden_size=args['hidden_size'])
    optimizer = optim.SGD(model.parameters(), lr=args['lr'], momentum=args['momentum'])
    # 训练
    for epoch in range(10):
        train(args, model, device, train_loader, optimizer, epoch)
        test_acc = test(args, model, device, test_loader)
        print(test_acc)
        nni.report_intermeidate_result(test_acc)    
    print('final accuracy:', test_acc)
    # 报告评估指标
    nni.report_final_result(test_acc)
if __name__ == '__main__':
    # 设置超参数默认值
    params = {'batch_size': 32, 'hidden_size': 128, 'lr': 0.001, 'momentum': 0.5}
    # 获取一次Trail的超参数
    params = nni.get_next_parameter()
    main(params)
复制代码


第三步: 定义 YAML 格式的 配置 文件,声明搜索空间和 Trail 文件的 路径 。 它还提供其他信息,例如调整算法,最大 Trial 运行次数和最大持续时间的参数。

config.yml

authorName: default
experimentName: example_mnist
trialConcurrency: 1
maxExecDuration: 1h
maxTrialNum: 10
trainingServicePlatform: local
# 搜索空间文件路径
searchSpacePath: search_space.json
useAnnotation: false
tuner:
  builtinTunerName: TPE
# 运行的命令,以及 Trial 代码的路径
trial:
  command: python3 mnist.py
  codeDir: .
  gpuNum: 0
复制代码


最后,从命令行使用 config.yml 文件启动 MNIST Experiment 。

nnictl create --config config.yml
复制代码


注意

如果要使用远程服务器或集群作为训练平台,为了避免产生过大的网络压力,NNI 限制了文件的最大数量为 2000,大小为 300 MB。 如果 codeDir 中包含了过多的文件,可添加 .nniignore 文件来排除部分,与 .gitignore 文件用法类似。

在命令行中等待输出 INFO: Successfully started experiment! 。 此消息表明实验已成功启动。 期望的输出如下:

INFO: Starting restful server...
INFO: Successfully started Restful server!
INFO: Setting local config...
INFO: Successfully set local config!
INFO: Starting experiment...
INFO: Successfully started experiment!
-----------------------------------------------------------------------
The experiment id is egchD4qy
The Web UI urls are: [Your IP]:8080
-----------------------------------------------------------------------
You can use these commands to get more information about the experiment
-----------------------------------------------------------------------
         commands                       description
1. nnictl experiment show        show the information of experiments
2. nnictl trial ls               list all of trial jobs
3. nnictl top                    monitor the status of running experiments
4. nnictl log stderr             show stderr log content
5. nnictl log stdout             show stdout log content
6. nnictl stop                   stop an experiment
7. nnictl trial kill             kill a trial job by id
8. nnictl --help                 get help information about nnictl
-----------------------------------------------------------------------
复制代码


如果根据上述步骤准备好了相应 Trial搜索空间配置 ,并成功创建的 NNI 任务。NNI 会自动开始通过配置的搜索空间来运行不同的超参集合,搜索最好的超参。 通过 Web 界面可看到 NNI 的进度。

通过Web UI 可视化实验过程

启动 Experiment 后,可以在命令行界面找到如下的 Web 界面地址

The Web UI urls are: [Your IP]:8080
复制代码


在浏览器中打开 Web 界面地址 (即:[IP地址]:8080 ),就可以看到 Experiment 的详细信息,以及所有的 Trial 任务。

查看概要页面

Experiment 相关信息会显示在界面上,如配置和搜索空间等。 NNI 还支持通过 Experiment summary 按钮下载这些信息和参数。


网络异常,图片无法展示
|


查看 Trial 详情页面

可以在此页面中看到最佳的尝试指标和超参数图。 当您单击按钮 Add/Remove columns 时,表格内容包括更多列。 当您单击按钮 Add/Remove columns 时,表格内容包括更多列。

网络异常,图片无法展示
|


查看 Experiment 管理页面

All experiments 页面可以查看计算机上的所有实验。

网络异常,图片无法展示
|


到处为止,一次AutoML超参数调优的实验运行就已经完成。

总结

本文简单介绍了自动机器学习工具NNI的基本概念、主要功能特点以及如何使用NNI进行一个超参调优实验,希望能够帮助到你。

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
651 0
|
机器学习/深度学习 自然语言处理 算法
Azure - 自动化机器学习AutoML Azure使用详解
Azure - 自动化机器学习AutoML Azure使用详解
404 0
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
540 1
|
机器学习/深度学习 人工智能 PyTorch
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
545 1
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
917 8
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
485 2
|
机器学习/深度学习 数据采集 算法
探索XGBoost:自动化机器学习(AutoML)
探索XGBoost:自动化机器学习(AutoML)
613 40
|
机器学习/深度学习 边缘计算 TensorFlow
Python机器学习工具与库的现状,并展望其未来的发展趋势
【6月更文挑战第13天】本文探讨了Python在机器学习中的核心地位,重点介绍了Scikit-learn、TensorFlow、PyTorch等主流库的现状。未来发展趋势包括自动化、智能化的工具,增强可解释性和可信赖性的模型,跨领域融合创新,以及云端与边缘计算的结合。这些进展将降低机器学习门槛,推动技术在各领域的广泛应用。
347 3
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
存储 机器学习/深度学习 人工智能
基于Megatron-Core的稀疏大模型训练工具:阿里云MoE大模型最佳实践
随着大模型技术的不断发展,模型结构和参数量级快速演化。大模型技术的应用层出不穷。大模型展现惊人效果,但训练和推理成本高,一直是巨大挑战。模型稀疏化能降低计算和存储消耗。近期以Mixtral为代表的MoE(多专家混合)大模型证明了稀疏MoE技术能大幅降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队深入合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时会遇到的可拓展性、易用性、功能性以及收敛精度等核心问题,在下游任务上取得了很好的模型效果。

热门文章

最新文章