目录
引言
近几年来,伴随着AI应用领域需求的扩增和政策红利的推动,AI开发平台的市场规模得到了快速增长。AI开发平台是集成了AI算法、算力与开发工具的平台,通过接口调用的形式使企业、个人或开发者可高效使用平台中的AI能力完成AI产品开发或AI赋能。作为一个机器学习平台,它提供训练所需要的计算资源,支持使用各种单机以及分布式训练任务训练模型。这时,由于平台大多部署在私有集群,而集群内项目的资源是有限的,所以在项目初期,项目训练任务不多的时候,每个任务都能获取足够的资源进行训练;但随着项目里的训练任务越来越多,任务调度的需求也日益凸显。
什么是任务调度,它对机器学习有多重要?
任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。在 AI任务训练中,可能同时运行数百个任务和上千个节点。如果没有任务调度,用户尝试执行的任务将无法与可用资源进行正确匹配。可以说,任务调度系统类似于军队的司令,指挥着AI平台上的各个组件的运行,时刻监督着任务的运行情况。
AI开发平台使用任务调度程序来对训练任务进行接收、调度和监控。这些调度程序使算法工程师能够通过任务控制指令手动或自动启动和管理任务。手动管理和监控通过图形用户界面 (GUI) 或命令行界面 (CLI) 执行。
任务调度系统的目的是:
-
最小化任务在队列中等待的时间长度
-
最大化任务并行量以确保同时运行尽可能多的任务
-
优化资源利用率以降本增效
当任务调度系统有效运行时,它可以确保任务尽快完成工作负载的调度,从而减少待处理任务的操作瓶颈。在机器学习当中,这意味着更短的模型训练时间和更快的业务上线时间。 如今,AI技术的快速发展也为任务调度提供了越来越多的选择。
SLURM 资源调度系统
SLURM