image
VincentWei

天地间,浩然正气长存,为天地立心,为生民立命,为往圣继绝学,为万世开太平!

XLearning:360深度学习调度平台(2017年)

VincentWei    2019-01-16 20:11

XLearning“是一款支持多种机器学习、 深度学习框架的调度系统。 基于Hadoop Yarn完成了对TensorFlow/MXNet/ Caffe/ Theano/ PyTorch/ Keras/ XGBoost等常用框架的集成, 同时具备良好的扩展性和兼容性。”

 

为什么要设计XLearning平台
1. 服务器资源如何调度(CPU、 GPU、 MEM)
2. 训练数据和训练模型的存储管理
3. 深度学习作业管理(状态跟踪、 日志查看、 Metrics信息)
4. 多种深度学习框架的环境部署和多版本管理

 

平台设计考量
1. 可否能与现有调度平台融合
2. 训练数据的统一管理和高效存取
3. 与原生深度学习框架代码兼容、 性能一致
4. 要支持多租户管理和资源隔离
5. 开发和运维工作量

 

定位:大数据与人工智能的融合平台


XLearning架构简图
 

 

XLearning执行流程

XLearning主要功能&特点介绍
1. 支持主流的分布式和单机版深度学习框架
2. 同时支持同一个深度学习框架的多个版本和用户自定义版本
3. 实现了分布式TensorFlow作业ClusterSpec结构的自动构建
4. 支持GPU资源调度和隔离, 感知GPU设备亲和性(需要Yarn的支持)
5, 基于HDFS的数据统一存取, 支持多种数据存取模式
6, 支持在集群上创建临时GPU虚拟机, 解决Debug及个性化GPU需求
7. 集成Nvidia Digist系统
8. 友好的Web页面, 方便查看作业日志、 训练进度, 硬件资源实时负载信息图表化
9. 兼容原生深度学习框架的代码
10. 训练效果和性能与原生框架保持一致

 

 

XLearning使用介绍
$XLEARNING_HOME/bin/xl-submit \
--app-type “tensorflow” \ # 作业类型为“TensorFlow”
--app-name “tf-demo” \ # 作业名称为 "tf-demo"
--input /tmp/data/tensorflow#data \ # 输入数据的HDFS路径
--output /tmp/tensorflow_model#model \ # 输出模型的HDFS路径
--files demo.py,dataDeal.py \ # 本地TF代码文件
--launch-cmd “python demo.py” \ # TF程序启动指令
--worker-num 2 \ # worker数量为2
--worker-memory 10G \ # 每个worker需要10G内存
--worker-cores 4 \ # 每个worker需要4个CPU
--worker-gcores 2 \ # 每个worker需要2个GPU卡
--ps-num 1 \ # PS数量为1
--ps-memory 2G \ # 每个PS需要1G内存
--ps-cores 4\ # 每个PS需要4个CPU

 

 

XLearning对TensorFlow ClusterSpec的自动构建
tf.train.ClusterSpec({
“worker”: [
“worker0.example.com:2222”,
“worker1.example.com:2222”
],
“ps”: [
“ps0.example.com:2222”,
“ps1.example.com:2222”
]})
tf.train.ClusterSpec(json.loads(os.environ[“TF_CLUSTER_DEF”]))

 

 

平台设计经验分享
1. 提前想清楚平台的价值是什么, 能带来什么收益
2. 功能设计源于用户需求, 不要创造需求, 想象出来的功能往往没人用
3. 优先解决用户公共需求和最痛点的问题
4. 最大程度复用现有的技术工具, 尽量避免重复造轮子, 劳民伤财
5. 重视平台的兼容性(代码、 性能、 效果等) , 直接影响平台的推广难度
6. WIKI、 FAQ能在推广过程中节省大量精力

Views: 1.9K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment