我刚刚开始使用 AWS BATCH 来处理我的深度学习工作负载。我使用以下配置创建了一个计算环境:
我的帐户的最大 vCPU 数量限制为 16 个,每个作业需要 16GB 内存。我发现在任何时间点最多可以同时运行 2 个作业。我之前使用的是
allocation strategy: BEST_FIT
,并将其更改为 allocation strategy: BEST_FIT_PROGRESSIVE
,但我仍然看到只能同时运行 2 个作业。这限制了我在给定时间内可以进行的实验数量。我可以做什么来增加可以同时运行的作业数量?
我自己现在就明白了。我在这里发布一个答案,以防将来有人发现它有帮助。事实证明,分配给我的每个作业的实例都是 g4dn2xlarge。每个实例占用 8 个 vCPU。由于我的 vCPU 限制为 16,因此只能同时运行 2 个作业。解决方案之一是要求 AWS 通过创建新的支持案例来增加 vCPU 的限制。另一种解决方案可能是修改计算环境以使用消耗 4 个 vCPU 的 GPU 实例(AWS 上尽可能低),在这种情况下最多可以同时运行 4 个作业。
有2种解决方案:
使用具有多个作业定义的 vCPU 的 EC2 实例配置您的计算环境。例如:EC2 实例类型为 8 个 vCPU 且限制为最多 128 个 vCPU 的计算环境。如果您的作业定义具有 8 个 vCPU,则最多允许您执行 16 个并发作业。因为 16 个并发作业 x 8 个 vCPU = 128 个 vCPU(考虑实例的分配策略和内存,这很重要,因为您的作业也会消耗内存资源)。
多节点并行作业;这是一个非常有趣的解决方案,因为在这种场景中,您不需要 EC2 实例 vCPU(至少是作业定义中使用的 vCPU 的倍数),并且可以跨多个 Amazon EC2 实例生成作业。