"Select jobs to execute..." 永远运行
"Select jobs to execute..." runs literally forever
我有一个相当复杂的工作流程,有 750 个样本和大约 18.000 个作业,起初 snakemake 运行 还不错,但在大约 4.000 个作业后它突然冻结并在重新启动时挂起并显示“Select jobs to execute...”持续 24 小时,之后我终止了它。不过,最初的 DAG 构建大约需要 2-3 分钟。
当我 运行 使用 --verbose
选项的 snakemake(v5.32.0 和 v5.32.1)时,我得到大量与此类似的行:
Cbc0010I After 600 nodes, 304 on tree, -52534.791 best solution, best possible -52538.194 (7.08 seconds
我试图删除 .snakemake
文件夹,希望那里发生什么事,但不幸的是,情况并非如此。在我看来,CBC MILP Solver 似乎不会收敛,它会继续前进并使 best 和 best possible 解决方案更接近在一起!?
现在我不知道如何继续和解决问题了。我可能的解决方案是以某种方式改变收敛标准或求解器本身。在手册中,我找到了 --scheduler-ilp-solver
选项,但它显然只有一个选项,即默认的 COIN_CMD
.
终止一个(较短的)运行 后,我得到了这个详细的输出
Result - User ctrl-cuser ctrl-c
Objective value: 52534.79114334
Upper bound: 52538.202
Gap: -0.00
Enumerated nodes: 186926
Total iterations: 1807277
Time (CPU seconds): 1181.97
Time (Wallclock seconds): 1188.11
接下来我将尝试限制工作流程中的样本数量,看看这是否有任何影响(对于其他具有 500 个样本的数据集,运行 没有任何问题(使用 snakemake 版本 5.24),但是那里DAG的搭建花了好几个小时,所以我不是很想尝试旧版本。)
因此,非常感谢任何解决问题的想法。另外,我什至不知道这是不是bug!?
EDIT 实际上,我认为这是当前版本中的一个错误,我将 Snakemake 降级到 5.24 版本,它在 10 分钟内创建了 DAG 并开始 运行 管道。因此,显然最新版本存在一些错误。我会把它作为我自己问题的答案,因为降级到旧版本解决了问题...
实际上,我认为这是当前 snakemake 版本中的一个错误,我将 Snakemake 降级回 5.24 版本,它在 10 分钟内创建了 DAG 并开始 运行 流水线。因此,显然最新版本存在一些错误。我会把它作为我自己问题的答案,因为降级到旧版本解决了问题...
我还 运行 使用较小的工作流程(总共约 1500 个作业)和 snakemake 版本 6.0.2 解决了这个问题。当工作流卡住时,大约一半的作业有 运行,并且拒绝 运行 任何更多作业。看起来这是一个特定于 ILP 求解器的问题,因为当我用 --scheduler greedy
重新 运行 时,它工作正常。
我有一个相当复杂的工作流程,有 750 个样本和大约 18.000 个作业,起初 snakemake 运行 还不错,但在大约 4.000 个作业后它突然冻结并在重新启动时挂起并显示“Select jobs to execute...”持续 24 小时,之后我终止了它。不过,最初的 DAG 构建大约需要 2-3 分钟。
当我 运行 使用 --verbose
选项的 snakemake(v5.32.0 和 v5.32.1)时,我得到大量与此类似的行:
Cbc0010I After 600 nodes, 304 on tree, -52534.791 best solution, best possible -52538.194 (7.08 seconds
我试图删除 .snakemake
文件夹,希望那里发生什么事,但不幸的是,情况并非如此。在我看来,CBC MILP Solver 似乎不会收敛,它会继续前进并使 best 和 best possible 解决方案更接近在一起!?
现在我不知道如何继续和解决问题了。我可能的解决方案是以某种方式改变收敛标准或求解器本身。在手册中,我找到了 --scheduler-ilp-solver
选项,但它显然只有一个选项,即默认的 COIN_CMD
.
终止一个(较短的)运行 后,我得到了这个详细的输出
Result - User ctrl-cuser ctrl-c
Objective value: 52534.79114334
Upper bound: 52538.202
Gap: -0.00
Enumerated nodes: 186926
Total iterations: 1807277
Time (CPU seconds): 1181.97
Time (Wallclock seconds): 1188.11
接下来我将尝试限制工作流程中的样本数量,看看这是否有任何影响(对于其他具有 500 个样本的数据集,运行 没有任何问题(使用 snakemake 版本 5.24),但是那里DAG的搭建花了好几个小时,所以我不是很想尝试旧版本。)
因此,非常感谢任何解决问题的想法。另外,我什至不知道这是不是bug!?
EDIT 实际上,我认为这是当前版本中的一个错误,我将 Snakemake 降级到 5.24 版本,它在 10 分钟内创建了 DAG 并开始 运行 管道。因此,显然最新版本存在一些错误。我会把它作为我自己问题的答案,因为降级到旧版本解决了问题...
实际上,我认为这是当前 snakemake 版本中的一个错误,我将 Snakemake 降级回 5.24 版本,它在 10 分钟内创建了 DAG 并开始 运行 流水线。因此,显然最新版本存在一些错误。我会把它作为我自己问题的答案,因为降级到旧版本解决了问题...
我还 运行 使用较小的工作流程(总共约 1500 个作业)和 snakemake 版本 6.0.2 解决了这个问题。当工作流卡住时,大约一半的作业有 运行,并且拒绝 运行 任何更多作业。看起来这是一个特定于 ILP 求解器的问题,因为当我用 --scheduler greedy
重新 运行 时,它工作正常。