KTQueue 介绍
KTQueue
在Naturali的机器学习实践中,随着机器学习任务数量和物理机器的不断增长,原有粗放的任务运行方式的弊端逐渐显现出来。
- 难以方便的找到GPU空闲的机器,浪费时间
- 任务无法方便的监控日志,当训练任务已经失败,无法及时发现并停止任务让出GPU。
- 用户控制复杂,需要给每个用户在机器上建立SSH帐户,管理困难。
- 需要指定GPU的时候,容易出现失误,抢占已有任务的GPU
- 缺少排队机制,GPU利用率低下
在KTQueue之前,Naturali 内部已经有两代任务队列系统,但是随着 Kubernetes 的成熟,将调度任务的工作交给kubernetes 显然是更好的方法。KTQueue 继承了前代工具的功能,也添加了新的功能
- 使用 Docker image 为同类任务提供统一的环境,又允许用户自己配置自己的环境,使用自己喜欢的库
- 使用 Git Repo, Docker Image, command 即可启动任务
- 支持手动/自动选择机器运行
- 支持将物理机目录映射到容器内
- 对于 Tensorflow 任务,对 Tensorboard 做了特别支持
- 可以手动添加 deployment key 兼容非 Github 项目
- 使用 Docker 隔离任务的资源,包括GPU,文件系统,内存
- 提供友好的界面,用户可以克隆,修改任务,可以实时观察日志输出
- 提供基于Github的用户认证机制,可以使用 Github OAuth 的权限克隆代码