2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学、中国科学技术大学、西安交通大学和浙江大学四所国内顶尖高校共建新一代人工智能开放科研教育平台,以推进中国人工智能领域科研与教育事业的发展。做为由微软亚洲研究院为该平台提供的三大关键技术之一,Open Platform for AI(OpenPAI)也备受瞩目。git
事实上,随着人工智能技术的快速发展,各类深度学习框架层出不穷,为了提升效率,更好地让人工智能快速落地,不少企业都很关注深度学习训练的平台化问题。例如,如何提高GPU等硬件资源的利用率?如何节省硬件投入成本?如何支持算法工程师更方便的应用各种深度学习技术,从繁杂的环境运维等工做中解脱出来?等等。github
为了解决这些问题,微软亚洲研究院和微软(亚洲)互联网工程院基于各自的特长,联合研发、建立了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开发。
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中的任务列表概览
OpenPAI提供了友好的用户界面,操做简单,便于用户进行集群监控、任务提交等。例如,主界面上显示了集群的GPU利用率、节点总数、CPU利用率、网络情况等。当某项数据异常时,OpenPAI将启动报警机制通知用户,并在UI上以颜色改变的形式进行提醒(如变成红色等)。
OpenPAI主界面
集群Job概览,点击Job名称能够查看详细信息及日志信息
Job运行状态页显示容器的IP地址、端口和GPU位置,该页面还提供远程SSH登陆容器的信息
集群中机器运行情况概览,不一样颜色展示了不一样的忙闲程度
集群中每台机器上的Service运行情况
OpenPAI部署
平台部署主要分为如下几个步骤:
1. 编译支持GPU调度的Hadoop AI容器,详见https://github.com/Microsoft/pai/blob/master/hadoop-ai/README.md
2. 部署Kubernetes以及系统服务(如drivers、zookeeper、REST Server等)。详见https://github.com/Microsoft/pai/blob/master/pai-management/README.md
3. 访问Web Portal进行任务提交和集群管理。
提交深度学习Job示例
1. 将你的数据和代码上传至HDFS:
如用hdfs命令行将数据上传至hdfs://host:port/path/tensorflow-distributed-jobguid/data
2. 准备Job配置文件:(详见https://github.com/Microsoft/pai/tree/master/job-tutorial)
3. 浏览Web Portal,点击"Submit Job"上传配置文件,便可提交你的Job。
想要体验、了解OpenPAI,请访问:https://github.com/Microsoft/pai