人工智能实战_第七次作业_OpenPAI和NNI_廖盈嘉
第7次作业:学习OpenPAI和NNI的使用
项目 | 内容 |
---|---|
这个作业属于哪个课程 | |
这个作业的要求在哪里 | |
我在这个课程的目标是 | 学会、理解和应用神经网络知识来完成一个app |
这个作业在哪个具体方面帮助我实现目标 | 大致了解OpenPAI和NNI的功能 |
作业正文 | |
参考文献 |
一、作业内容
- 学习OpenPAI的使用,并提交OpenPAI job
- 介绍OpenPAI,以及使用心得体会,给出文档或者功能等方面的意见和建议
- 学习NNI的使用,并使用NNI进行调参或架构调整
- 介绍NNI,自己的心得体会,为NNI提建议或问题,包括文档功能等
二、作业内容
OpenPAI
介绍:OpenPAI是由微软推出的一套分布式深度学习训练平台,支持多种深度学习、机器学习及大数据任务,可提供大规模GPU集群调度、集群监控、任务监控、分布式存储等功能,且用户界面友好,易于操作。其基本结构就是将k8s、Hadoop、Yarn、Zookeeper、Grafana、GPU驱动等服务及模块用容器的形式有机结合,形成一套面向深度学习任务的集群调度系统,由yarn负责硬件资源分配,由k8s负责容器调度。并且微软VS Code和VS上都提供了开发插件集成,实现一站式人工智能开发。
使用心得: OpenPAI相对于NNI的操作来说,还是相对简单的。在训练模型的时候,其速度也非常地快,比我在本机上训练模型的速度快得多。我之前在本机上训练Mnist的模型(拓展识别英文字母)就花了将近6-7小时,而OpenPAI上训练couplet的模型只用了2小时30分钟。
具体步骤:
1) 在Visual Studio Code中下载并安装OpenPAI VS Code Client。
2) 添加集群:在PAI CLUSTER EXPLORER中,点击右上角的“+”按钮,创建OpenPAI集群。在VS Code界面上部的弹出窗,填写集群IP。
3)集群配置:在弹出的集群配置文件,填写"username"和”password”并保存配置
4)打开HDFS存储目录:在集群中,双击“Open HDFS”,打开HDFS存储目录。
5)打开存储界面。(此教程已为在hdfs上创建了/Beihang_Couplet/根目录,并在此目录下创建data/, code/, output/子目录。训练时使用的数据上传至data/目录下,将程序依赖文件上传至code/目录下,训练结果将传回output/目录下)
6)在桌面上创建一个名为“couplet_azure”的文件夹,并将所需要的文件放入该文件夹中。
7)打开"couplet_azure"文件夹。
8)couplet_azure文件夹已添加以下文件:
- init.py : 用于调用filetrans.py
- filetrans.py:实现hdfs和docker container之间的数据传输操作。主要实现数据download和upload
- run_samples.py:实现整个训练过程,包括下载数据,训练模型,上传结果模型
- train.sh: 训练模型的脚本命令
9) 配置文件:在PAI Cluster 40.73.28.255中,双击Create Job Config…创建配置文件
10)提交任务:在配置文件中,单机鼠标右键,选择Submit Job to PAI Cluster。
11)查看状态:提交任务后,PAI Client会在右下角提示Open Web Portal,点击可打开OpenPAI的web portal,查看任务的运行状态。在stdout中可查看运行log信息。
12)完成训练:当任务状态变成successed时,即完成训练过程。
13)下载模型:在/Beihang_Couplet/output/目录下,右键单击JobName命名的文件夹,选择Download,下载模型文件。
遇到的小问题:在配置文件的时候,当我更改了job name以后,由于没有点击保存再右键选择Submit Job to PAI Cluster,所以第一次提交Job的时候,返回的训练模型不在我以Job name命名的文件夹。之后,当我保存了配置文件以后,再次训练模型就可以了。另外,训练模型需要排队也是一个问题。
NNI
介绍:NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。NNI是一个自动调参工具,支持本地运行或OpenPAI上运行,支持Win10,linux和MacOS三种系统。它的使用场景为:
- 在本机尝试使用不同的自动机器学习(AutoML)算法来训练模型。
- 在分布式环境中加速自动机器学习(如:远程 GPU 工作站和云服务器)。
- 定制自动机器学习算法,或比较不同的自动机器学习算法。
- 在机器学习平台中支持自动机器学习。
使用心得和遇到的问题:
- 在这个教程里,由于其只写到NNI只支持Linux和MAC Os,然后我以为不支持Windows,就安装了Ubuntu。之后才在其“安装NNI”的链接中发现可以在Windows中安装NNI。(不过现在这个网页已经进行了这部分的修改)
- 根据教程,在本地环境中通过pip install安装了NNI, 一切运行都顺利直到遇到“port 8080 is used by another program”。通过更改port number 就可以了。
- 成功打开NNI的页面,但是发现experiments 的status是error。问题显示为我的Users\LIEW YING JIA有空格。它没办法识别空格。
- 为了解决第三点的问题,我根据教程的推荐,在anaconda中安装了NNI,并运行了相应的指令,但是无法识别路径中的空格的问题还是存在。
有鉴于此,我还不能很好的体验NNI的功能。