Deep learning 在PyTorch型号的GPU之间调度作业

Deep learning 在PyTorch型号的GPU之间调度作业,deep-learning,pytorch,gpu,scheduling,Deep Learning,Pytorch,Gpu,Scheduling,我正在尝试建立一个系统,根据请求训练深度模型。一个用户来到我的网站,点击一个按钮,培训过程开始 但是,我有两个GPU,我不确定在这两个GPU之间排队/处理作业的最佳方式:在至少一个GPU可用时启动作业,如果当前没有可用GPU,则排队作业。我想每个作业请求使用一个GPU 这是我可以和芹菜一起做的吗?我在过去使用过这个,但我不知道如何处理这个GPU相关的问题 非常感谢 我对芹菜不太确定,因为我从来没有用过它,但从概念上讲,它似乎是合理的(而且这个问题是非常开放的): 创建只负责将任务分发到特定GP

我正在尝试建立一个系统,根据请求训练深度模型。一个用户来到我的网站,点击一个按钮,培训过程开始

但是,我有两个GPU,我不确定在这两个GPU之间排队/处理作业的最佳方式:在至少一个GPU可用时启动作业,如果当前没有可用GPU,则排队作业。我想每个作业请求使用一个GPU

这是我可以和芹菜一起做的吗?我在过去使用过这个,但我不知道如何处理这个GPU相关的问题


非常感谢

我对芹菜不太确定,因为我从来没有用过它,但从概念上讲,它似乎是合理的(而且这个问题是非常开放的):

  • 创建只负责将任务分发到特定GPU和接收请求的线程
  • 如果任何GPU是空闲的,请立即将任务分配给它
  • 如果两者都被占用,则完成任务可能需要估计时间(神经网络训练)
  • 将其添加到GPU将在最短的近似时间内完成
时间估计 给定固定数量的样本和时间,当前任务的ETA可以相当好地近似。如果情况并非如此(例如提前停止),则更难/更难,需要一些启发

当GPU过载时(假设每个GPU队列中有
5个
任务),我会做的是:

  • 停止GPU上当前正在进行的进程
  • 对几批数据运行新流程,粗略估计完成此任务可能需要多长时间
  • 要求它评估所有任务
现在,这取决于交通情况。如果它很大,并且会经常中断正在进行的进程,您应该简单地将新任务添加到任务量最少的GPU队列中(这里也需要一些启发式方法,您现在应该已经估计了可能的请求量,假设只有2个GPU,它可能不会很大)