12 KiB
AI 开放平台(OpenPAI)
OpenPAI 作为开源平台,提供了完整的 AI 模型训练和资源管理能力,能轻松扩展,并支持各种规模的私有部署、云和混合环境。
OpenPAI v0.14.0 已发布!
目录
适用场景
- 在团队间共享强大的 AI 计算资源(例如,GPU、FPGA 集群)。
- 在组织内共享或重用 AI 资产(如模型、数据、运行环境等) 。
- 构建易于 IT 运维管理的 AI 计算平台。
- 在同一个环境中完成模型训练过程。
特点
OpenPAI 的设计成熟可靠。在微软的大规模部署中,得到了多年持续运行的验证。
易于部署
OpenPAI 是全栈的解决方案。 不仅支持本地、公有云及混合云中的部署,还支持单机试用的部署。
支持流行的 AI 框架以及异构的硬件
OpenPAI 提供了预构建的支持主流 AI 框架的 Docker。 支持添加异构硬件。 支持分布式训练, 如分布式 TensorFlow。
全栈解决方案、易于扩展
OpenPAI 是支持深度学习、虚拟集群,兼容 Hadoop/Kubernetes 生态系统的完整解决方案。 OpenPAI 支持可扩展组件:可根据需要接入扩展模块。
相关项目
聚焦于开放和最前沿的技术,微软研究院(MSR)和微软互联网工程院还发布了其它一些开源项目。
- NNI: 用于神经体系结构搜索和超参数调优的开源 AutoML 工具包。 我们鼓励研究人员和学生利用这些项目来加速 AI 开发和研究。
- MMdnn:一个完整、跨框架的解决方案,能够转换、可视化、诊断深度神经网络模型。 MMdnn 中的 "MM" 表示 model management(模型管理),而 "dnn" 是 deep neural network(深度神经网络)的缩写。
- NeuronBlocks:面向自然语言理解(NLP)的深度学习建模工具包,帮助工程师像搭建积木一样创建深度神经网络模型。 该工具包可减少自然语言理解建模时的开发成本,对于训练和推理阶段都适用。
- SPTAG : Space Partition Tree And Graph (SPTAG) 是用于大规模向量的最近邻搜索场景的开源库。
入门
OpenPAI 用于管理计算资源,并对机器学习任务进行了优化。 通过 Docker 技术,硬件计算资源与软件相分离。这样,用户能轻松的进行分布式计算,在不同的深度学习框架间切换,也能在完全一致的环境中重复运行 Job。
作为平台,OpenPAI 需要部署后才能使用。 OpenPAI 也支持单机部署。
部署完成后,可参考训练模型。
部署
根据以下内容来检查先决条件,部署并验证 OpenPAI 集群。 初次部署完成后,还可以根据需要添加新的服务器。
强烈建议在空闲的服务器上安装 OpenPAI。 有关硬件规范,参考这里。
先决条件和准备工作
- Ubuntu 16.04 (18.04 未经完整测试,或许没问题)。
- 每台服务器都有静态 IP 地址,并确保服务器可以相互通信。
- 确保服务器可以访问互联网,特别是 Docker Hub 或其镜像服务器。 在部署过程中需要拉取 OpenPAI 的 Docker 映像。
- 确保 SSH 服务已启用,所有服务器使用相同的用户名、密码,并启用 sudo 权限。
- 确保 NTP 服务已启用。
- 建议不提前安装 Docker 组件,如果已安装,确保 Docker 版本高于 1.26。
- OpenPAI 会保留部分内存和 CPU 资源来运行服务,须确保服务器有足够的资源来运行机器学习作业。 详情参考硬件要求。
- OpenPAI 的服务器不能提供其它服务。 OpenPAI 会管理服务器的所有 CPU、内存和 GPU 资源。 如果服务器上有其它的服务负载,可能导致资源不足而产生各种问题。
部署
对于小于 50 台服务器的中小型集群,参考使用默认设置部署,用最简单的方式来部署 OpoenPAI。 在默认配置的基础上,可针对不同的硬件环境和使用场景来定制优化部署方案。
使用默认配置部署
对于小于 50 台服务器的中小型集群, 建议使用默认配置部署。 如果只有一台高性能的计算服务器,参考在单机上部署 OpenPAI。
对于大型集群,仍需要根据此向导来生成默认配置,然后再自定义部署配置。
自定义部署
由于不同的硬件环境和使用场景,OpenPAI 的默认配置需要通过自定义来修改。 参考自定义部署,了解详情。
验证部署
部署完成后,建议参考验证 OpenPAI 的关键组件来确认 OpenPAI 处于正常状态。 验证成功后,可提交 hello-world Job 进行端到端的验证。
培训用户
OpenPAI 的一般用法是提交 Job 请求,等到 Job 获得计算资源后再开始执行。 这和每个人在自己的服务器上运行是不同的。 用户可能会觉得,与在自己的机器上训练相比,这样无法管理计算资源,而且还需要学习如何使用 OpenPAI。 但通过 OpenPAI 来共享资源能够提高资源利用率,并显著节省维护运行的时间。
对于 OpenPAI 的管理员来说,部署成功只是第一步,而第二步是让用户理解 OpenPAI 带来的好处,并学会使用它。 用户可从训练模型开始学习如何使用。 虽然下面训练模型的章节覆盖了各种场景下的方案,但用户通常不需要了解所有的方法。 因此,管理员可以根据用户的实际场景来创建更简单的文档。
常见问答
如果在部署过程中遇到问题,先查看这里。
如果还不能解决问题,通过这里来讨论或者提交问题。
训练模型
与所有计算平台一样,OpenPAI 是提高生产力的工具,最大限度地利用资源。 因此,在进行模型训练时,推荐直接将任务提交到 OpenPAI,并让其分配资源来运行。 如果 Job 太多,一些 Job 会排队等待资源。 这与在自己的服务器上运行代码不同,并且还需要学习一些在 OpenPAI 上提交并管理训练 Job 的知识。
注意,除了支持 Job 排队,OpenPAI 也支持分配专用的资源。 用户可以像使用物理服务器一样,用 SSH 或 Jupyter Notebook 来连接。 虽然这样对资源的利用不高,但也节省了在物理服务器上配置管理环境的精力。
提交训练作业
参考提交 Job 教程来学习如何在 OpenPAI 上训练模型。 这是使用 OpenPAI 的入门教程。
客户端
OpenPAI VS Code Client 是推荐的 OpenPAI 客户端工具,其基于图形界面,易于使用。 它是 Visual Studio Code 的扩展。 支持提交 Job,在本地模拟运行 Job,管理多个 OpenPAI 环境等等。
调研 Job 错误
Web 界面和 Job 日志有助于分析错误,OpenPAI 也支持通过 SSH 登录来调试。
有关调研 Job 错误的详细信息参考这里。
运维管理
参考手册
用户
- 客户端
- 使用存储
- Job 配置
- RESTful API
- 设计文档可帮助了解 OpenPAI 的设计和架构。
寻求帮助
- Stack Overflow:如果对 OpenPAI 有问题,在 Stack Overflow 网站的标签 openpai 下提交问题。
- Gitter Chat:也可以在 Gitter 中提问。
- 提交问题或功能请求:如果发现了错误,或有新功能的需求,可提交到 GitHub。
参与贡献
贡献者许可协议
本项目欢迎任何贡献和建议。 大多数贡献都需要你同意参与者许可协议(CLA),来声明你有权,并实际上授予我们有权使用你的贡献。 有关详细信息,请访问 https://cla.microsoft.com。
当你提交拉取请求时,CLA 机器人会自动检查你是否需要提供 CLA,并修饰这个拉取请求(例如,标签、注释)。 只需要按照机器人提供的说明进行操作即可。 CLA 只需要同意一次,就能应用到所有的代码仓库上。
该项目采用了 Microsoft 开源行为准则 。 有关详细信息,请参阅行为守则常见问题解答或联系 opencode@microsoft.com 咨询问题或评论。
征集意见建议
当前,正在进行一些主要功能的改进和重构,如果熟悉这些功能,可在相应的讨论区中参与设计评审和讨论。
- OpenPAI 虚拟集群设计。 Issue 1754
- OpenPAI 协议设计。 Issue 2007
考虑为 OpenPAI 做贡献
- 希望添加对其它机器学习或深度学习框架的支持
- 希望 OpenPAI 成为更强大的 AI 平台(例如,支持更多的机器学习流程,超参调优)
- 希望写作教程和博客文章,来展示如何使用 OpenPAI 解决 AI 问题
贡献者
OpenPAI 的一个重要目标是支持学术界和工业界非常多样化的需求。 OpenPAI 是完全开放的:它采用了 MIT 许可证。 这使得 PAI 特别适合用来探索各种研究想法,例如这些模块。
OpenPAI 采用开放的形式来合作。 由微软研究院(MSR)和微软互联网工程院 AI 平台团队联合设计开发。 很高兴能有北京大学、西安交通大学、浙江大学、中国科学技术大学等高校加入平台开发。 无论是来自从学术界还是工业界的贡献,都非常欢迎。