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能在推广过程中节省大量精力