【嵌牛导读】:近两年人工智能技术发展迅速,以Google开源的TensorFlow为代表的各种深度学习框架层出不穷。为了方便算法工程师使用各类深度学习技术,减少繁杂的诸如运行环境部署运维等工作,提升GPU等硬件资源利用率,节省硬件投入成本,奇虎360系统部大数据团队与人工智能研究院联合开发了深度学习调度平台——XLearning。
【嵌牛鼻子】:XLearning
【嵌牛提问】:此深度学习调度平台特点是什么?
【嵌牛正文】:
XLearning平台将大数据与深度学习相融合,基于Hadoop Yarn完成了对TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost等常用深度学习框架的集成,是典型的“AI on Hadoop”的实现。XLearning从今年(2017)4月份正式开发上线运行,经多次版本迭代更新,为各学习框架的使用者提供了统一、稳定的调度平台,实现了资源共享,极大的提高了资源利用率,并且具有良好的扩展性和兼容性。目前已经在公司搜索、人工智能研究院、商业化、数据中心等业务部门广泛使用。
XLearning架构
Client:XLearning客户端,负责启动作业及获取作业执行状态;
ApplicationMaster(AM):负责输入数据分片、启动及管理Container、执行日志保存等;
Container:作业的实际执行者,负责启动Worker或PS(Parameter Server)进程,监控并向AM汇报进程状态,上传作业的输出等。对于TensorFlow类型作业,还负责启动TensorBoard服务。
XLearning功能特性
XLearning虽然架构简洁,但具有丰富的功能方便用户进行模型训练,并依托于Yarn提供有作业资源的统一管理。
支持多种深度学习框架
XLearning支持TensorFlow、MXNet分布式和单机模式,支持所有的单机模式的深度学习框架,如Caffe、Theano、PyTorch等。对于同一个深度学习框架支持多版本和自定义版本,满足用户个性化需求,不受限于集群机器上各学习框架的安装版本。
基于HDFS的统一数据管理
XLearning提供多种模式用于数据的输入、输出,包括数据的流式读写、直接HDFS读写等,可根据作业处理的数据量与集群机器硬盘容量,视情况决定所采用的读写方式。
可视化界面
为方便用户查看作业信息,XLearning提供可视化界面用于展示作业执行进度和输出日志等内容。作业执行完毕后,亦可查看日志内容,便于分析训练过程进展。对于TensorFlow类型作业,支持TensorBoard服务。作业运行界面大致分为三部分(如下图所示):
All Containers:显示当前作业所含Container列表及各Container对应信息,如Contianer ID、所在机器(Container Host)、所属类型(Container Role)、当前执行状态(Container Status)、开始时间(Start Time)、结束时间(Finish Time)、执行进度(Reporter Progress);
View TensorBoard:当作业类型为TensorFlow时,可点击该链接直接跳转至TensorBoard页面;
Save Model:用户可在作业执行过程中,可以将当前训练模型的输出结果上传至HDFS,并显示目前已上传的模型列表。
原生代码兼容
XLearning支持TensorFlow分布式模式的ClusterSpec自动分配构建,单机模式和其他深度学习框架代码不用做任何修改即可迁移到XLearning上,便于用户快速使用。
Checkpoint功能
利用深度学习框架本身的Checkpoint机制和直接读写HDFS数据功能,XLearning方便用户实现训练恢复继续执行。
XLearning开源版本环境依赖简单,可直接运行于社区Hadoop版本,使用方便,入门学习成本极低。公司的Yarn版本是我们在社区版本上做了不少增强,比如支持GPU的资源调度、GPU通信亲和性的感知、DockerContainer支持等。依赖于这些特性公司在用的版本多出了GPU资源调度支持、作业Docker化、临时GPU虚拟机、Container Metrics可视化图表展示等功能。这些功能我们后续会通过提供Yarn Patch或者开源自用Yarn版本来分享给大家,也欢迎大家随时跟我们沟通。