Amazon web services AWS批次限制单个主机上的容器数量

Amazon web services AWS批次限制单个主机上的容器数量,amazon-web-services,tensorflow,aws-batch,Amazon Web Services,Tensorflow,Aws Batch,我有一些带有GPU Tensorflow作业的容器,如果在一台主机上同时执行其中的2+个,那么只有1个会成功(2018-05-11 13:02:19.147869:E tensorflow/core/common_runtime/direct_session.cc:171]内部:初始化CUDA设备的StreamExecutor失败顺序0:内部:调用CUDevicePrimary CTXRetain失败:CUDA_错误\u ECC_不可纠正,即无法正确共享GPU) 完美的场景如下:我有10个GPU

我有一些带有GPU Tensorflow作业的容器,如果在一台主机上同时执行其中的2+个,那么只有1个会成功(
2018-05-11 13:02:19.147869:E tensorflow/core/common_runtime/direct_session.cc:171]内部:初始化CUDA设备的StreamExecutor失败顺序0:内部:调用CUDevicePrimary CTXRetain失败:CUDA_错误\u ECC_不可纠正
,即无法正确共享GPU)

完美的场景如下:我有10个GPU作业和最多5个容器。前5个被执行,其他5个等待(目前,他们不等待,但尝试执行并失败),当一个完成时,第6个立即在同一台主机上启动,然后第7、8、9、10个

我使用p2.xlarge,为gpu作业设置了4个vCPU和42000内存。根据ec2instances.info,这台机器有61.0 GiB内存和4个vCPU。但是,无论如何,批处理似乎同时安排了几个容器,导致了所述故障

到目前为止,我试着使用
vCPU
memory
参数,但批处理的调度程序似乎忽略了这些参数

有趣的是,相关ECS任务定义将
1/--
作为
硬/软内存限制(MiB)
的值,因此看起来批处理“作业定义”中的值不会传播到ECS“任务定义”

另一种选择是设置大量尝试,但是

  • 很难看
  • 对于长期运行的工作,即使是大部分人也可能精疲力竭
  • 我因永远运行作业(例如,配置错误)而失去防御能力
  • 不确定这种中断会如何影响已经在运行的Tensorflow作业

作业的vCPU和内存需求是什么,计算环境中的实例类型是什么

如果更新作业的vCpu和内存,使一个实例中只能容纳一个作业,Batch将逐个安排作业,而不会尝试同时运行两个作业


例如,如果您的计算环境具有p3.16xlarge64vCpus,488Gib)实例并要确保一次只在实例中运行一个作业,请确保作业指定vCPU>32内存>244GB

当容器的内存小于最大可能内存时,批处理的作业调度程序似乎会出现一些问题。因此,有时它会尝试运行两个有内存的容器一间只能住一个人的房间,但有些保留(例如42000/61000,我最初试过)所以,解决方法是将几乎所有机器的内存都保留在容器中。

我使用了
p2.xlarge
,为gpu作业设置了4个vCPU和42000内存。根据ec2instances.info,这台机器有61.0 GiB内存和4个vCPU。但是,无论如何,批处理似乎同时安排了几个容器,导致了所述的故障。请注意d ECS任务定义将
1/--
作为容器的内存限制。这是错误吗?更新的问题。“刚刚注意到ECS任务定义有1/--”确保在启动任务时检查正在运行的任务CPU/内存任务定义参数是否可以覆盖