人工智能实战_第七次作业(2)_陈泽寅
16071070 _ 陈泽寅 _ 第七次作业_黄金点游戏:
一、简要概述
项目 | 内容 |
---|---|
课程 | 人工智能实战2019 |
作业要求 | 作业要求 |
我在这个课程的目标是 | 了解人工智能理论,提升coding能力 |
这个作业在哪个具体方面帮助我实现目标 | 理解算法本质,提升创新思维 |
二、作业内容
-
学习OpenPAI的使用:
学习文档,并提交OpenPAI job,将体验心得形成博客,选题方向可以是:- 介绍OpenPAI,以及使用心得体会,给出文档或者功能等方面的意见和建议
- 将OpenPAI与其他机器学习平台进行对比或评测
-
学习NNI的使用
学习文档,并使用NNI进行调参或架构调整,将体验心得形成博客,选题方向可以是:- 介绍NNI,自己的心得体会,为NNI提建议或问题,包括文档功能等
- 将NNI与自己了解的其他自动机器学习工具比较或评测
三、介绍OpenPAI
一:简介
-
OpenPAI是由微软亚洲研究院和微软(亚洲)互联网工程院联合研发的,支持多种深度学习、机器学习及大数据任务,可提供大规模GPU集群调度、集群监控、任务监控、分布式存储等功能,且用户界面友好,易于操作。
OpenPAI的架构如下图所示,用户通过Web Portal调用REST Server的API提交作业(Job)和监控集群,其它第三方工具也可通过该API进行任务管理。随后REST Server与Launcher交互,以执行各种作业,再由Launcher Server处理作业请求并将其提交至Hadoop YARN进行资源分配与调度。可以看到,OpenPAI给YARN添加了GPU支持,使其能将GPU作为可计算资源调度,助力深度学习。其中,YARN负责作业的管理,其它静态资源(下图蓝色方框所示)则由Kubernetes进行管理。
二:OpenPAI架构
- OpenPAI完全基于微服务架构,所有的OpenPAI服务和AI Job均在容器中运行,这样的设计让OpenPAI的部署更加简单,无论是在Ubuntu裸机集群还是在云服务器上,仅需运行几个脚本即可完成部署。这同时也使其能够支持多种不同类型的AI任务,如CNTK、TensorFlow、PyTorch等不同的深度学习框架。此外,用户通过自定义Job容器即可支持新的深度学习框架和其他机器学习、大数据等AI任务,具有很强的扩展性。
在运维方面,OpenPAI提供了AI任务在线调试、错误报警、日志管理、性能检测等功能,显著降低了AI平台的日常运维难度。同时,它还支持MPI、RDMA网络,可满足企业对大规模深度学习任务的性能要求。
不仅如此,OpenPAI还实现了与Visual Studio的集成。Visual Studio Tools for AI是微软Visual Studio 2017 IDE的扩展,用户在Visual Studio中就可以开发、调试和部署深度学习和AI解决方案。集成后,用户在Visual Studio中调试好的模型可便捷地部署到OpenPAI集群中。
三:使用心得
- 该平台集成能力强劲,运算资源丰富,使用方便。
- 平台实现了与Visual Studio Tools for AI等开发工具的深度集成,用户可以一站式进行AI开发。
- 提供丰富的运营、监控、调试功能,降低运维复杂度
- 稳定性不够
四、介绍NNI
1、简介
- NNI (Neural Network Intelligence) 是微软开源的自动机器学习工具包,与当前的各种自动机器学习服务或工具相比,有非常独特的价值。NNI着力解决超参调试过程的挑战,通过内置的超参选择算法、算力的强大支持和便捷的交互方式来加速和简化超参搜索的过程。
2、特点
- 安装简洁:通过pip命令就能完成安装;
- 支持私有部署,用自己的计算资源就能进行自动机器学习;
- 支持分布式调度:NNI 可以在单机上进行试验,还支持多种分布式调度平台,如通过 SSH 控制多台 GPU 服务器协同完成试验,或通过OpenPAI, Azure, Kubernetes等在独立的 Docker 中运行;
- 对超参搜索的底层支持:大部分自动机器学习服务与工具的服务都是针对于图片分类等特定的任务。而NNI通过让用户提供训练代码和超参搜索范围, 依靠NNI内置算法和训练服务来搜索最佳的超参和神经架构,NNI为有一定模型训练经验的用户提供更加通用的调参方式,便于用户做出更多尝试、决策和加入思考,并完整参与整个训练过程;
- 随库自带众多实例和流行的调参算法;
- 架构简洁、对开发和扩展及其友好。
3、使用方法
- 首先使用json文件定义超参数的搜索空间,搜索空间包括搜索的变量名、搜索的类型和搜索的值范围。在实验代码中引入nni包,并以几行代码加入nni的参数传递和结果回传即可将nni与实验代码结合起来。通过yaml配置文件来定义实验。再通过nnictl create命令来进行运作。