开放AI平台(OpenPAI)
自v1.8.1版本发布以来,OpenPAI已经进入稳定模式,暂无重大功能发布计划。为了节省维护成本,我们将仓库改为只读模式。如需合作,请直接联系仓库管理员。
随着v1.0版本的发布,OpenPAI正在切换到更加健壮、强大且轻量级的架构。OpenPAI还变得越来越模块化,以便平台能够轻松定制和扩展以满足新需求。OpenPAI还提供了许多AI友好功能,使终端用户和管理员更容易完成日常的AI任务。
目录
何时考虑OpenPAI
- 当您的组织需要在团队之间共享强大的AI计算资源(GPU/FPGA集群等)时。
- 当您的组织需要共享和重用常见的AI资产(如模型、数据、环境等)时。
- 当您的组织需要一个易于管理的AI平台时。
- 当您希望在一个地方运行完整的训练流程时。
为何选择OpenPAI
该平台整合了经过微软大规模生产环境验证的成熟设计。
支持本地部署且易于部署
OpenPAI是一个全栈解决方案。OpenPAI不仅支持本地部署、混合部署或公有云部署,还支持单机部署以供试用。
支持流行的AI框架和异构硬件
预构建了流行AI框架的Docker。易于包含异构硬件。支持分布式训练,如分布式TensorFlow。
最完整的解决方案且易于扩展
OpenPAI是深度学习的最完整解决方案,支持虚拟集群,兼容Kubernetes生态系统,在一个集群上完成整个训练流程等。OpenPAI的架构是模块化的:不同模块可以根据需要插入。这里是OpenPAI的架构,突出平台的技术创新。
入门指南
OpenPAI管理计算资源,并针对深度学习进行了优化。通过Docker技术,计算硬件与软件解耦,使得分布式作业、深度学习框架切换或其他类型作业在一致的环境中容易运行。
作为一个平台,OpenPAI通常有两种不同的角色:
- 集群用户是集群计算资源的使用者。根据部署场景,集群用户可以是机器学习和深度学习的研究人员、数据科学家、实验教师、学生等等。
- 集群管理员是计算资源的拥有者和维护者。管理员负责集群的部署和可用性。
OpenPAI为集群用户和管理员提供了端到端的手册。
针对集群管理员
管理员手册是集群管理员的综合指南,涵盖(但不限于)以下内容:
-
安装和升级。安装基于Kubespray, 这里是系统要求。OpenPAI提供了一个安装指南以便于安装。
如果您正在考虑从旧版本升级到最新的v1.0.0,请参阅下表以简要比较
v0.14.0
和v1.0.0
。关于升级注意事项的更多详细信息,请参阅升级指南。v0.14.0
v1.0.0
架构 Kubernetes + Hadoop YARN Kubernetes 调度程序 YARN调度程序 HiveD / K8S默认调度程序 作业编排 YARN框架启动器 框架控制器 RESTful API v1 + v2 纯v2 存储 团队共享存储插件 PV/PVC存储共享 市场 Marketplace v2 openpaimarketplace SDK Python JavaScript / TypeScript 如果在部署期间有任何问题,请先检查安装常见问题及故障排除。如果尚未涵盖,请参阅这里提出问题或提交问题。
-
基本集群管理。通过Web门户和命令行工具
paictl
,管理员可以完成集群管理,例如添加(或移除)节点,监控节点和服务和存储设置和权限控制。 -
用户和群组管理。管理员可以轻松管理用户和群组。
-
告警管理。管理员可以自定义告警规则和动作。
-
自定义。管理员可以通过插件自定义集群。管理员还可以升级(或降级)单个组件(例如REST服务器)以满足定制应用需求。
针对集群用户
用户手册是集群用户的指南,用户可以在OpenPAI上训练和服务深度学习(及其他)任务。
-
作业提交和监控。 快速入门教程是学习如何在OpenPAI上训练模型的良好起点。更多示例和对多个主流框架(开箱即用docker镜像)的支持在这里。OpenPAI还提供了对良好调试性和高级作业功能的支持。
-
数据管理。用户可以在作业中使用集群提供的存储和自定义存储。集群提供的存储集成良好,并且易于在作业中配置(参见此处)。
-
协作和共享。OpenPAI为团队和组织之间的协作提供了便利。集群提供的存储按团队(组)组织,用户可以轻松在市场上共享他们的工作(例如作业),其他人可以通过一键轻松发现和复现(克隆)。 除了网络门户,OpenPAI 还提供了 VS Code 扩展 和 命令行工具(预览版)。VS Code扩展是一个友好的基于GUI的OpenPAI客户端工具,强烈推荐使用。它是Visual Studio Code的扩展。它可以提交作业、本地模拟作业、管理多个OpenPAI环境等。
独立组件
自 v1.0.0
版本发布以来,OpenPAI 开始使用更加模块化的组件设计,并将代码结构重新组织为1个主要仓库和7个独立关键组件仓库。pai 是主仓库,而这7个组件仓库是:
- hivedscheduler 是一个用于多租户GPU集群的Kubernetes调度器扩展器,它相对于标准的k8s调度器提供了各种优势。
- frameworkcontroller 是一个单控制器运行的Kubernetes应用程序协调器。
- openpai-protocol 是OpenPAI作业协议的规范。
- openpai-runtime 提供了OpenPAI协议所需的运行时支持。
- openpaisdk 是一个JavaScript SDK,旨在促进OpenPAI开发人员提供更友好用户体验。
- openpaimarketplace 是一个存储示例和作业模板的服务。用户可以通过webportal插件使用它来分享他们的作业或运行和学习其他人的共享作业。
- openpaivscode 是一个VSCode扩展,使用户能够轻松地连接OpenPAI集群、提交AI作业、本地模拟作业和管理VSCode中的文件。
参考
- PyTorch CIFAR-10 和 TensorFlow CIFAR-10 作业示例
- RESTful API
- 如果你有兴趣,可以在这里找到设计文档。
相关项目
为了开放性和推动尖端技术的发展,微软研究院(MSR) 和 微软亚洲软件技术中心(STCA) 还发布了少量其他开源项目。
- NNI : 一个开源的AutoML工具包,用于神经架构搜索和超参数调优。 我们鼓励研究人员和学生利用这些项目加速AI开发和研究。
- MMdnn : 一个全面的跨框架解决方案,用于转换、可视化和诊断深度神经网络模型。MMdnn中的"MM"代表模型管理,"dnn"是深度神经网络的缩写。
- NeuronBlocks : 一个NLP深度学习建模工具包,帮助工程师像玩乐高一样构建DNN模型。该工具包的主要目标是减少构建NLP深度神经网络模型(包括训练和推理阶段)的开发成本。
- SPTAG : 空间分区树和图(SPTAG)是一个开源库,用于大规模向量近似最近邻搜索场景。
参与
- Stack Overflow: 如果你对OpenPAI有疑问,请在Stack Overflow上提交标签为:openpai的问题
- Gitter chat: 你也可以在Microsoft/pai对话中提问。
- 创建问题或功能请求: 如果你有问题/缺陷/新功能,请将其提交到GitHub。
如何贡献
贡献者许可协议
这个项目欢迎贡献和建议。大多数贡献需要你同意一个 贡献者许可协议(CLA),声明你有权利,并且实际上也确实授予我们 使用你贡献的权利。详情访问 https://cla.microsoft.com。
当你提交一个拉取请求时,CLA-bot 会自动确定是否需要你提供 CLA 并相应地装饰PR(例如标签、评论)。只需按照机器人的说明操作即可。 对于使用我们CLA的所有仓库,你只需要完成一次此操作。
这个项目已采用 微软开源行为准则。 更多信息请参见行为准则FAQ或 联系opencode@microsoft.com以获取任何额外的问题或评论。
贡献征集
我们正在进行一系列重大功能的改进和重构,任何熟悉这些功能的人都被鼓励加入设计审查和在相应问题票中的讨论。
- GPU公平使用 Issue 4266
谁应考虑为OpenPAI做贡献
- 想为其他机器学习和深度学习框架增加支持的人
- 想让OpenPAI成为更丰富的AI平台的人(如支持更多的ML流程、超参数调优)
- 想撰写教程/博客文章来展示如何使用OpenPAI解决AI问题的人
贡献者
OpenPAI的一个关键目的就是支持来自学术界和工业界的高度多样化的需求。OpenPAI完全开放:它是MIT许可证下的。这使OpenPAI在评估各种研究想法时特别具有吸引力,包括但不限于这些组件。
OpenPAI以开放模型运行。它最初由微软研究院(MSR)和微软亚洲软件技术中心(STCA)平台团队设计和开发。 我们很高兴有北京大学、西安交通大学、浙江大学、中国科学技术大学 和 上海仪电AI创新中心(SHAIIC) 加入我们共同开发该平台。 欢迎来自学术界和工业界的贡献。