1. 前言
2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学、中国科学技术大学、西安交通大学和浙江大学四所国内顶尖高校共建新一代人工智能开放科研教育平台,以推动中国人工智能领域科研与教育事业的发展。作为由微软亚洲研究院为该平台提供的三大关键技术之一,Open Platform for AI(OpenPAI)也备受瞩目。
事实上,随着人工智能技术的快速发展,各种深度学习框架层出不穷,为了提高效率,更好地让人工智能快速落地,很多企业都很关注深度学习训练的平台化问题。例如,如何提升GPU等硬件资源的利用率?如何节省硬件投入成本?如何支持算法工程师更方便的应用各类深度学习技术,从繁杂的环境运维等工作中解脱出来?等等。
为了解决这些问题,微软亚洲研究院和微软(亚洲)互联网工程院基于各自的特长,联合研发、创建了OpenPAI,希望为深度学习提供一个深度定制和优化的人工智能集群管理平台,让人工智能堆栈变得简单、快速、可扩展。
2. 为什么要使用OpenPAI?
● 为深度学习量身定做,可扩展支撑更多AI和大数据框架
通过创新的PAI运行环境支持,几乎所有深度学习框架如CNTK、TensorFlow、PyTorch等无需修改即可运行;其基于Docker的架构则让用户可以方便地扩展更多AI与大数据框架。
● 容器与微服务化,让AI流水线实现DevOps
OpenPAI 100%基于微服务架构,让AI平台以及开发便于实现DevOps的开发运维模式。
● 支持GPU多租,可统筹集群资源调度与服务管理能力
在深度学习负载下,GPU逐渐成为资源调度的一等公民,OpenPAI提供了针对GPU优化的调度算法,丰富的端口管理,支持Virtual Cluster多租机制,可通过Launcher Server为服务作业的运行保驾护航。
● 提供丰富的运营、监控、调试功能,降低运维复杂度
PAI为运营人员提供了硬件、服务、作业的多级监控,同时开发者还可以通过日志、SSH等方便调试作业。
● 兼容AI开发工具生态
平台实现了与Visual Studio Tools for AI等开发工具的深度集成,用户可以一站式进行AI开发。
3. 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集群中。
image.png
(以上内容摘自:https://www.msra.cn/zh-cn/news/features/openpai)
4. 搭建与测试
搭建步骤可以参考:https://github.com/microsoft/pai#deploy-openpai
这里备份几个重要配置文件:
# tree pai-config/
pai-config/
|-- k8s-role-definition.yaml
|-- kubernetes-configuration.yaml
|-- layout.yaml
`-- services-configuration.yaml
0 directories, 4 files
- pai-config/layout.yaml
# kubernetes api server and dashboard host
kubernetes:
api-servers-url: http://10.50.0.194:8080
dashboard-url: http://10.50.0.194:9090
# TODO please modify it according to your own hardware
machine-sku:
cpu-node:
mem: 8G
cpu:
vcore: 4
os: ubuntu16.04
p100-node:
mem: 30G
gpu:
type: Tesla P100
count: 1
cpu:
vcore: 4
os: ubuntu16.04
machine-list:
- dashboard: "true"
docker-data: "/var/lib/docker"
etcdid: "etcdid1"
hostip: "10.50.0.194"
hostname: "iZbp1illiteltgz7xb9dadZ"
k8s-role: "master"
machine-type: "cpu-node"
nodename: "10.50.0.194"
pai-master: "true"
password: "nZ42R24SL"
ssh-port: "22"
username: "root"
zkid: "1"
- docker-data: "/var/lib/docker"
hostip: "10.0.15.177"
hostname: "iZbp1dwjnydcl5f76wygheZ"
k8s-role: "worker"
machine-type: "p100-node"
nodename: "10.0.15.177"
pai-worker: "true"
password: "nZ42R24SL"
ssh-port: "22"
username: "root"
- pai-config/services-configuration.yaml
cluster:
common:
# Enable QoS feature or not. Default value is "true"
qos-switch: "false"
# uncomment following if you want to change customeize drivers
drivers:
version: "418.56"
- pai-config/kubernetes-configuration.yaml
kubernetes:
# The docker registry used in the k8s deployment. If you can access to gcr, we suggest to use gcr.
docker-registry: gcr.azk8s.cn/google_containers
#Enable QoS feature for k8s or not. Default value is "true"
qos-switch: "false"
- Commands
python paictl.py cluster k8s-clean -p ~/pai-config -f
python paictl.py cluster k8s-bootup -p ~/pai-config
python paictl.py config push -p /root/pai-config/ -c ~/.kube/config
python paictl.py service start -c ~/.kube/config
python paictl.py service stop -c ~/.kube/config
-
Portal - Jobs
image.png
5. Refer
-
OpenPAI github
https://github.com/microsoft/pai -
OpenPAI:大规模人工智能集群管理平台
https://www.msra.cn/zh-cn/news/features/openpai -
OpenPAI安装部署及踩坑记录
https://zhuanlan.zhihu.com/p/45813208
网友评论