Determined AI 项目中的作业队列管理指南
作业队列管理概述
在分布式机器学习平台Determined AI中,作业队列管理系统是一个核心功能组件,它为集群资源调度提供了更强大的可视化和控制能力。这个系统允许用户清晰地查看所有提交作业的状态和顺序,并支持动态调整作业的优先级、资源池等关键参数。
作业队列管理功能适用于两种调度器:
- 公平份额调度器(Fair Share Scheduler)
- 优先级调度器(Priority Scheduler)
作业状态详解
在Determined系统中,作业可能处于以下两种主要状态:
- 排队中(Queued):作业已被系统接收,但尚未分配到所需的计算资源
- 已调度(Scheduled):作业已被调度执行,可能正在运行或即将运行,已分配部分或全部所需资源
需要注意的是,已完成或失败的作业不会被显示在活动作业队列中。
查看作业队列
通过Web界面查看
- 登录Determined WebUI
- 导航至"Job Queue"标签页
- 系统将显示当前所有活动作业的列表,按调度顺序排列
通过命令行界面查看
基本查看命令:
det job list
# 或简写
det job ls
查看特定资源池的作业队列:
det job list --resource-pool compute-pool
输出表格包含以下关键信息:
- 作业ID
- 作业类型
- 作业名称
- 优先级/权重值
- 提交时间
- 已获取/需要的计算槽位数量
- 当前状态
- 提交用户
修改作业队列配置
可调整参数
- 优先级(仅优先级调度器):数值越高,调度优先级越高
- 权重(仅公平份额调度器):决定作业获取资源的比例
- 资源池:指定作业运行的资源池
重要约束条件
- 优先级和权重字段互斥,只能根据当前使用的调度器类型调整对应字段
- 资源池变更仅适用于实验(Experiment)类型的作业,其他任务类型需要取消后重新提交
通过Web界面修改
- 进入"Job Queue"页面
- 定位到目标作业行
- 点击行末的三个点图标
- 选择"Manage Job"选项
- 在弹出窗口中修改参数
- 点击"OK"确认更改
通过命令行修改
基本更新命令格式:
det job update <jobID> --<parameter> <value>
示例:
# 修改作业优先级
det job update jobID --priority 10
# 更改作业资源池
det job update jobID --resource-pool a100
批量更新多个作业:
det job update-batch job1.priority=1 job2.resource-pool="compute"
实际应用示例
假设当前作业队列如下:
$ det job list
# | ID | Type | Job Name | Priority | Submitted | Slots (acquired/needed) | Status | User
---+----------+-----------------+------------+----------+----------------------+-------------------------+-----------------+------
0 | 73853c5c | TYPE_EXPERIMENT | second_job | 42 | 2022-01-01 00:01:01 | 1/1 | STATE_SCHEDULED | user1
1 | 0d714127 | TYPE_EXPERIMENT | first_job | 42 | 2022-01-01 00:01:00 | 0/1 | STATE_QUEUED | user1
批量调整优先级:
$ det job update-batch 73853c5c.priority=1 0d714127.priority=1
调整后结果:
$ det job list
# | ID | Type | Job Name | Priority | Submitted | Slots (acquired/needed) | Status | User
---+----------+-----------------+------------+----------+----------------------+-------------------------+-----------------+------
0 | 73853c5c | TYPE_EXPERIMENT | second_job | 1 | 2022-01-01 00:01:01 | 1/1 | STATE_SCHEDULED | user1
1 | 0d714127 | TYPE_EXPERIMENT | first_job | 1 | 2022-01-01 00:01:00 | 0/1 | STATE_QUEUED | user1
最佳实践建议
- 优先级设置:在业务高峰期,合理设置关键任务的优先级确保及时执行
- 资源池选择:根据作业的计算需求选择合适的资源池,如GPU密集型作业分配到专用GPU池
- 批量操作:当需要调整多个作业参数时,使用批量更新命令提高效率
- 状态监控:定期检查作业队列状态,及时发现并处理长期排队或资源不足的作业
- 资源规划:根据队列长度和等待时间评估是否需要扩展集群资源
通过合理使用Determined的作业队列管理功能,可以显著提高机器学习工作负载的执行效率和资源利用率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考