本项目拟通过构造一个可以给多用户高速运行机器学习程序的环境,弥补当前云计算平台的空缺,简化配置机器学习实验平台的流程,降低学习成本,为更多愿意学习机器学习的同学提供良好的平台和空间。
本项目拟解决云平台无法通过显卡设备加速机器学习的问题、无法实现多租户共享显卡设备资源的问题、通过kubernetes有效管理机器学习服务的问题、搭建运行环境的问题、运行设备的监控和管理的问题、显卡设备与容器资源调度的问题等,提从而高云平台的可靠性、可用性和性能等问题同时结合现有的应用场景分析该架构的可行性并在生产环境中测试其表现能力。

1. 产品用途

本项目是基于kubernetes构建的机器学习云平台,提供了一个多用户高速运行机器学习程序的环境。用户之间通过唯一的命名空间相隔离;用户可以实时查看训练状态、根据自定义需求进行训练、支持CPU+GPU异构计算、支持Serverless无服务器计算。

2. 产品项目方案

  • kubernetes 机器学习集群的监控

通过编写 SCV 插件实现对kubernetes集群中机器学习服务的监控与遥测,实现对机器学习服务的容器数量、使用资源、节点数、运行进程、工作状态、安全性、网络与端口的监控。kubernetes 机器学习集群及其应用在长时间运行过程中会无可避免的产生故障告警或错误,这些故障信息可能包含节点不可用、CPU及显卡长时间使用率过高、磁盘空间不足、服务启动错误、数据服务超时、应用日志报错等等。因此使用目前流行的开源解决方案Prometheus实现对容器和服务的多维度数据模型监控,配合kubernetes有效观察当前集群中的容器工作状态,通过定制化配置信息与集群服务可视化实现对机器学习集群的高效监控与管理。

  • kubernetes 机器学习容器调度

通过编写中间件实现对kubernetes机器中容器实现合理化调度,根据宿主机自身的性能、水位和网络质量合理分配利用宿主机资源,使得每个用户分配到的机器学习服务端点都是可靠的。任务调度器与GPU嗅探器合作,并发收集各个节点的数据,基于MapReduce思想进行规约和过滤,然后把任务下发至合适于当前任务的最佳节点,基于增量更新思想,动态调整活跃节点表中的数据项,依据构建节点的GPU指标进行分布式容器任务调度,尽可能使得现有服务器群的GPU资源得到充分和高效的利用。在使用共享资源的情况下设置精细的资源配额和资源限制有效管理集群中各个容器所使用的资源,通过Namespace、Cgroup、Pod、Container四个级别进行调度。

  • kubernetes 机器学习云平台Web架构

通过Python语言编写基于Django Web框架的云平台面板,以图表为媒介,直观而形象的显示用户所需的数据,消除工作中的消极厌烦情绪,缓解由于系统终端处理数据带来的压力,通过支持动态数据渲染和数据分析渲染,让用户直观了解到自己编写的机器学习代码运行的状态,无需在本地安装任何软件即可实现代码的运行,降低服务的门槛难度,让服务处理更加人性化、直观化。于此同时,通过Web架构密切关注用户指标需求收集相关数据,在收集数据的基础上进行分析度量、预测和反馈,优化Web架构的效果。

3. 目标用户

  • 高校中研究机器学习、深度学习领域的硕士研究生、博士研究生和老师
  • 研究所或者企业中从事机器学习、深度学习研究的工作者

4. 系统架构

image.png

5. 功能特性

• Serverless 无服务器计算
• 自定义需求训练 (Pump2)
• 毫秒级响应
• 系统规模易扩展
• 支持 CPU+GPU 异构计算
• 高性能容器镜像管理
• 实时查看训练状态
• 多租户隔离环境
• 开放、共享