Skip to content

Latest commit

 

History

History
89 lines (56 loc) · 5.68 KB

README_zh.md

File metadata and controls

89 lines (56 loc) · 5.68 KB

OPENI Platform alt text

Build Status Coverage Status

简介

OPENI是一个集群管理工具和资源调度平台,最初由 微软研究院(MSR)微软搜索技术中心(STC)北京大学西安交通大学浙江大学, 和中国科学技术大学 联合设计并开发, 由 鹏城实验室北京大学中国科学技术大学AITISA 进行维护。 该平台结合了一些在微软大规模生产环境中表现良好的成熟设计,主要为学术研究而量身打造。

OPENI支持在GPU集群中运行AI任务作业(比如深度学习任务作业)。平台提供了一系列接口,能够支持主流的深度学习框架,如CNTK, TensorFlow等。这些接口同时具有强大的可扩展性:添加一些额外的脚本或者Python代码后,平台即可支持新的深度学习框架(或者其他类型的工作)。

作为深度学习中非常重要的一项要求,OPENI支持GPU调度。 为了能得到更好的性能,OPENI支持细粒度的拓扑感知任务部署,可以获取到指定位置的GPU(比如获取在相同的PCI-E交换机下的GPU)。

启智采用microservices 结构:每一个组件都在一个容器中运行。 平台利用Kubernetes 来部署和管理系统中的静态组件。 其余动态的深度学习任务使用Hadoop YARN和GPU强化进行调度和管理。 训练数据和训练结果储存在Hadoop HDFS上。

用于研发及教育的开源AI平台

OPENI是完全开源的:它遵守Open-Intelligence许可。OPENI采用模块化的方式构建,可以根据用户的需要,插入不同的模块。 使用OPENI来实现和评价各种各样的研究思路是非常有吸引力的,因为它不仅仅包括:

  • 深度学习任务的调度机制
  • 需要在真实平台环境下进行评估的深度神经网络的应用
  • 新的深度学习框架
  • 适用于AI的编译技术
  • 适用于AI的高性能网络
  • 分析工具:包括网络、平台和AI作业的分析
  • AI Benchmark基本套件
  • 适用于AI的新硬件,包括FPGA、ASIC和神经处理器
  • AI存储支持
  • AI平台管理

OPENI以开源的模式运营:来自学术和工业界的贡献我们都非常欢迎。

系统部署

前提要求

该系统在一组机器集群上运行,每台机器都配有一块或多块GPU。 集群中的每台机器都运行Ubuntu 16.4 LTS,并有一个静态分配的IP地址。为了部署服务,系统进一步使用Docker注册服务 (例如Docker hub) 来存储要部署的服务的Docker镜像。系统还需要一台可以完全访问集群的、运行有相同环境的开发机器。系统还需要NTP服务进行时钟同步。

部署过程

执行以下几个步骤来部署和使用本系统。

  1. Hadoop AI构造二进制文件并将其放在指定路径中*
  2. 部署kubernetes和系统服务
  3. 访问web门户页面 进行任务提交和集群管理

* 如果跳过步骤1,则将会安装标准版Hadoop 2.9.0。

Kubernetes部署

平台使用Kubernetes(k8s)来部署和管理系统服务。 想要在集群中部署k8s,请参阅k8s的部署文件指南以获取详细信息。

服务部署

部署Kubernetes后,系统将使用其内置的k8s功能(例如configmap)来部署系统服务。 有关详细内容,请参阅系统部署文件指南

作业管理

系统服务部署完成后, 用户可以访问Web门户页面(一个Web UI界面)来进行集群和作业管理。 关于任务作业的提交,请参阅指南

集群管理

Web门户上也提供了Web UI进行集群的管理。

系统结构

System Architecture

系统的整体结构如上图所示。 用户通过Web门户提交了任务作业或集群状态监视的申请,该操作会调用REST服务器提供的API。 第三方工具也可以直接调用REST服务器进行作业管理。收到API调用后,REST服务器与FrameworkLauncher(简称Launcher)协同工作来进行作业管理。Launcher服务器处理来自REST服务器的请求,并将任务作业提交到Hadoop YARN。由YARN和GPU强化调度的作业, 可以使用集群中的GPU资源进行深度学习运算。其他基于CPU的AI工作或者传统的大数据任务作业也可以在平台上运行,与那些基于GPU的作业共存。 平台使用HDFS来存储数据。我们假设所有任务作业都支持HDFS。 所有静态服务(蓝色框)都由Kubernetes管理,而任务作业(紫色框)则由Hadoop YARN管理。