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
Tags amazon-web-services