Número de limite de lote do AWS do contêiner em um único host

1

Eu tenho alguns contêineres com trabalhos do GPU Tensorflow e, se mais de dois deles forem executados simultaneamente em um único host, apenas um será bem-sucedido ( 2018-05-11 13:02:19.147869: E tensorflow/core/common_runtime/direct_session.cc:171] Internal: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_ECC_UNCORRECTABLE , ou seja, eles não poderão compartilhar GPUs adequadamente).

O cenário perfeito seria o seguinte: tenho 10 trabalhos de GPU e máximo de 5 contêineres. Primeiros 5 são executados, outros 5 esperam (no momento, eles não esperam, mas tentam executar e falhar), quando um termina, 6 começa imediatamente no mesmo host, então 7, 8, 9, 10.

Eu uso o p2.xlarge e configuro 4 vCPU e 42000 de memória para o trabalho de gpu. De acordo com o ec2instances.info, esta máquina possui 61.0 GiB de memória e 4 vCPUs. Mas, de qualquer forma, o lote parece agendar vários contêineres simultaneamente, levando ao fracasso descrito.

Até agora eu tentei brincar com os parâmetros vCPU e memory , mas o agendador do Batch parece ignorar esses.

Interessante que a definição de tarefa relevante do ECS tem 1/-- como valor para Hard/Soft memory limits (MiB) , então parece que valores do Batch 'job defition' não são propagados para a definição de tarefa do ECS '.

Outra alternativa é configurar um grande número de tentativas, mas

  • é feio
  • para trabalhos de longa duração, mesmo um número grande pode ficar esgotado
  • Perco a defesa de trabalhos para sempre (por exemplo, mal configurados)
  • não sabe como esse tipo de interrupção afetaria a execução de trabalhos do Tensorflow
por guest 13.05.2018 / 16:28

0 respostas