任务依赖
任务依赖用于构建工作流:一个任务会等待其他任务完成后才开始运行。
快速开始
bash
gbatch --time 10 python preprocess.py
gbatch --depends-on @ --gpus 1 --time 4:00:00 python train.py
gbatch --depends-on @ --time 10 python evaluate.py依赖方式
单依赖
bash
gbatch --depends-on <job_id|@|@~N> python next.py语法糖:
@:最近一次提交的任务@~N:倒数第 N+1 次提交的任务(例如@~1是上一次提交)
多依赖(AND / OR)
bash
# AND:所有父任务都必须成功完成
gbatch --depends-on-all 101,102,103 python merge.py
# OR:任意一个父任务成功完成即可继续
gbatch --depends-on-any 201,202,203 python process_first_success.py@ 语法同样可用于列表(例如 --depends-on-all @,@~1,@~2)。
脚本指令
脚本指令只支持 --depends-on(单依赖):
bash
#!/bin/bash
# GFLOW --depends-on=123
python next.py自动取消
默认情况下,当依赖任务失败/取消/超时,依赖它的任务会被自动取消。若希望它们继续保持排队状态,可禁用自动取消:
bash
gbatch --depends-on <job_id> --no-auto-cancel python next.py禁用后,即使父任务失败,依赖任务也不会自动继续运行;你需要手动取消或重新提交。
监控依赖
bash
# 树视图
gqueue -t示例输出:
JOBID NAME ST TIME NODES NODELIST(REASON)
1 prep CD 00:02:15 0 -
├─2 train R 00:10:03 1 0
└─3 eval PD - 0 (WaitingForDependency)bash
# 只看部分任务
gqueue -j <job_id>,<job_id> -t
# 查看排队原因(通常是等待依赖或资源)
gqueue -s Queued -f JOBID,NAME,ST,NODELIST(REASON)故障排除
依赖任务未启动
bash
gqueue -t
gqueue -j <parent_job_id> -f JOBID,ST
ginfo修复失败后重做整条链
bash
gjob redo <job_id> --cascade