KubeFlow 是基于 Kubernetes 构建的可组合, 便携式, 可扩展的机器学习技术栈, 支持实现从 JupyterHub 模型开发, TFJob 模型训练到 TF-serving,Seldon 预测端到端的解决方案. 但是 KubeFlow 需要用户精通 Kubernetes, 比如写一个 TFJob 的部署 yaml 文件, 这对于机器学习平台最主要的使用者 --- 数据科学家来说是非常有挑战的事情.
这与数据科学家的期望还有比较大的差距, 数据科学家关心的是三件事:
数据从哪里来
如何运行机器学习的代码
训练结果 (模型和日志) 如何查看
数据科学家编写一些简单的脚本, 在桌面机上运行机器学习代码, 这是他们熟悉和喜欢的工作方式. 但是利用桌面机进行模型训练, 又会遇到由于硬盘空间有限导致处理数据量不足, 无法使用分布式训练导致计算力受限等问题.
为此我们开发了 Arena, 用一个命令行工具屏蔽所有底层资源, 环境管理, 任务调度和 GPU 调度分配的复杂性, 它帮助数据科学家以一种简单熟悉的方式提交训练任务并且检查训练进展. 数据科学家在调用 Arena 的时候可以指定数据来源, 代码下载和是否使用 TensorBoard 查看训练效果.
Arena 目前支持单机训练和 PS-Worker 模式的分布式训练, 其后端实现依赖于 KubeFlow 提供的 TFJob, 很快也会扩展到 MPIJob,PytorchJob.
未来我们希望能够通过 Arena 实现深度学习生产流水线 - 集成训练数据管理, 实验任务管理, 模型开发, 持续训练, 评估, 上线预测全流程.
同时也支持实时训练的运维包括:
利用 top 命令监控 GPU 资源的分配和调度
支持 CPU,GPU 的资源监控
训练日志的实时查询
Arena 的目标就是让数据科学家简单的释放 KubeFlow 的洪荒之力, 像桌面机上训练一样简单, 同时又拥有了集群级别调度和管理的掌控性. 为了能够更好的在社区内共享和合作, 我们已经在 github 上开源了自己的代码: https://github.com/AliyunContainerService/arena , 欢迎大家了解和使用, 如果您觉得不错, 请给我们点赞. 如果您希望贡献代码, 我们非常欢迎.
以下是使用文档:
1. 单机训练 https://github.com/AliyunContainerService/arena/blob/master/docs/userguide/1-tfjob-standalone.md
2. 使用 TensorBoard 进行单机训练 https://github.com/AliyunContainerService/arena/blob/master/docs/userguide/2-tfjob-tensorboard.md
3. 运行分布式训练 https://github.com/AliyunContainerService/arena/blob/master/docs/userguide/3-tfjob-distributed.md
4. 使用外部数据进行分布式训练 https://github.com/AliyunContainerService/arena/blob/master/docs/userguide/4-tfjob-distributed-data.md
视频 Demo:
来源: https://yq.aliyun.com/articles/622283