【干货】快速部署微软开源GPU管理利器: OpenPAI
【干货】快速部署微软开源GPU管理利器: OpenPAI
介绍
不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力。除此之外,还要压榨出硬件的所有潜力来加快模型训练。OpenPAI作为GPU管理的利器,不管是一块GPU,还是上千块GPU,都能够做好调度,帮助加速机器学习的模型训练过程。
关于什么是OpenPAI,请参考介绍视频:微软开源GPU集群管理利器。
本文提供了简化的OpenPAI安装步骤。如果有更复杂的安装要求或部署环境,请参考官网。
准备工作
环境要求如下:
- 推荐Ubuntu 16.04 LTS(暂不支持CentOS等其它Linux系统)。
- 静态IP地址。
- 能够访问外网,可下载Docker Hub的镜像文件。
- 为集群中每台机器提供统一的用户名密码,并有sudo权限。
- 有统一的时间同步服务(默认即可)。
- 推荐干净环境进行安装。如果已经安装了Docker,API版本必须大于等于1.26。
- 各台计算机之间网络可达。
安装过程
1. 安装用于配置的docker
即管理、安装整个OpenPAI的docker(在官方文档中称为dev-box)。以后的管理、配置工作都会在这个docker中进行。
登录进某台计算机(可选用集群中的机器),确保有sudo权限。然后按顺序执行下列命令。
安装docker,如果安装有更新的版本可跳过。
sudo apt-get -y install docker.io
# 拉取,并启动dev-box
sudo docker run -itd -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM -v /var/lib/docker:/var/lib/docker -v /var/run/docker.sock:/var/run/docker.sock -v /pathHadoop:/pathHadoop -v /pathConfiguration:/cluster-configuration --pid=host --privileged=true --net=host --name=dev-box docker.io/openpai/dev-box
# 登录dev-box
sudo docker exec -it dev-box /bin/bash
2. 配置安装环境
以下脚本需要修改一下安装环境相关的信息。machines表示GPU集群的服务器IP,ssh-username和ssh-password分别代表登录这些服务器要用到的用户名、密码。
注意:第一台会作为master节点,其余节点作为worker。关于master/worker可参考视频介绍。暂时推荐不要用GPU服务器做master角色,或将worker角色部署到master上,因为这样可能会造成资源紧张,从而造成master进程的内存不够用。所以,master节点可以用没有GPU的服务器,推荐8核16G或以上配置。
cd /pai/pai-management
cat << EOF > quick-start.yaml
machines:
- 192.168.1.2
- 192.168.1.3
ssh-username: <用户名>
ssh-password: <密码>
EOF
CONFIG_PATH=/cluster-configuration
rm $CONFIG_PATH/*
3. 安装节点
根据quick-start的基本信息,在/cluster-configuration目录中生成配置文件。配置文件的具体内容可参考github,这里就不详细介绍了。
python paictl.py cluster generate-configuration -i quick-start.yaml -o $CONFIG_PATH
安装kubenetes
python paictl.py cluster k8s-bootup -p $CONFIG_PATH
安装并启动OpenPAI相关服务
python paictl.py service start -p $CONFIG_PATH
运行最后一步时,如果网速很慢或服务器很多,有可能会花一天。完成后,即可在浏览器中试着访问第一台服务器的web地址。因为服务器还需要启动一会儿,可能并不能马上看到结果。等一会儿,或者多试几次即可。
默认的用户名、密码如下,可点击右上方的login连接登录。建议第一时间改掉。
admin
admin-password
好了!大功告成!
可以参考github中的任务模板来配置自己的任务模板。也可以看看Github中的文档来探索更多高级功能。接下来就可以看看前面的介绍视频来学习如何从Tools for AI来提交任务了。
如果集群比较小,可以给集群去掉end-to-end测试用例,从而节省资源。(参考常见问答)
常见问题
遇到问题,可在官网提交Issue。
如何删除end-to-end测试任务?
如果没有足够的服务器资源,建议在部署过程中删除掉end-to-end测试。否则,它会定期进入队列,以测试系统是否可用。在dev-box中运行:
python paictl.py service delete -p $CONFIG_PATH -n end-to-end-test
安装过程中出现 ... is not ready yet. Please wait for a moment!,该怎么办?
这种一般是网络问题造成的,可以进入以下网址(注意替换master IP),将出现pull image错误的pods删掉,加快Kubernetes重新pull的速度。
http://<替换成master的IP>:9090/#!/pod?namespace=default
【干货】快速部署微软开源GPU管理利器: OpenPAI的更多相关文章
- Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET
Docker&Kubernetes沙龙干货集锦:容器集群管理利器kubernetes详谈-CSDN.NET undefined Package - crawler undefined 科学网- ...
- 如何快速部署国人开源的 Java 博客系统 Tale
除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...
- 快速部署Kubernetes集群管理
这篇文章介绍了如何快速部署一套Kubernetes集群,下面就快速开始吧! 准备工作 //关闭防火墙 systemctl stop firewalld.service systemctl disabl ...
- 一键部署joomla开源内容管理平台
https://market.azure.cn/Vhd/Show?vhdId=10896&version=12949 产品详情 产品介绍Joomla是一套自由.开放源代码的内容管理系统,以PH ...
- 私活利器,docker快速部署node.js应用
http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...
- 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群
本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...
- 微软开源自动机器学习工具NNI安装与使用
微软开源自动机器学习工具 – NNI安装与使用 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...
- SNF快速开发平台MVC-名片管理(实际名片样式)
名片管理实际的做的意义在于演示应用,在这里使用的技术有排序控件,查询条件.自由样式瀑布流式分页等技术. 下面是自由样式效果图: 下面表格样式效果图: 具体操作: 新增名片 在新增时可以上传图像进行裁剪 ...
- 深度学习GPU集群管理软件 OpenPAI 简介
OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...
随机推荐
- SSM-Spring-22:Spring+Mybatis+JavaWeb的整合
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 众所周知,框架Spring来整合别的框架,但是Mybatis出现的晚,Spring就没有给他提供支持,那怎么办 ...
- ZooKeeper的使用---命令端
一.进入命令行 ./bin/zkCli.sh 二.常用命令 命令 作用 范例 备注 connect host:port 连接其他zookeeper客户端 connect hadoop2:21 ...
- c/c++(hiredis)异步调用redis【转】
hiredis是redis官方推荐的C/C++客户端代码库.使用hiredis库很简易方便的进行redis的相关开发. 同步方式 不过大多数情况下,我们采用的都是同步的调用方式. 1 2 3 4 ...
- 图形验证码知识点整理 Object.prototype.toString.call()等
使用typeof bar === "object"检测”bar”是否为对象有什么缺点?如何避免?这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的, ...
- JS奇淫巧技:防抖函数与节流函数
应用场景 实际工作中,我们经常性的会通过监听某些事件完成对应的需求,比如: 通过监听 scroll 事件,检测滚动位置,根据滚动位置显示返回顶部按钮 通过监听 resize 事件,对某些自适应页面调整 ...
- 17.app后端如何保证通讯安全--aes对称加密
在上文<16.app后端如何保证通讯安全--url签名>提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点.在本文中,会介绍对称加密的具体原理,和详 ...
- 跟我学ASP.NET MVC之五:SportsStrore开始
摘要: 这篇文章将介绍一个ASP.NET应用程序SportsStore的开发过程. 开始 创建解决方案 创建工程 在New ASP.NET Project - SportsStore窗口中,选择Emp ...
- Dubbo中集群Cluster,负载均衡,容错,路由解析
Dubbo中的Cluster可以将多个服务提供方伪装成一个提供方,具体也就是将Directory中的多个Invoker伪装成一个Invoker,在伪装的过程中包含了容错的处理,负载均衡的处理和路由的处 ...
- election.go
package)) ].GetResponseRange().Kvs[] ) ].Value),] } wch := client.Watch(cctx, string ...
- POJ_1269_Intersecting Lines_求直线交点
POJ_1269_Intersecting Lines_求直线交点 Description We all know that a pair of distinct points on a plane ...