Como você pode programar na biblioteca keras (ou tensorflow) para particionar o treinamento em várias GPUs? Digamos que você esteja em uma instância do Amazon ec2 com 8 GPUs e que gostaria de usá-los para treinar mais rapidamente, mas seu código é apenas para uma única CPU ou GPU.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
fonte
fonte
Respostas:
Nas perguntas frequentes de Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Abaixo está o código copiado e colado para ativar o 'paralelismo de dados'. Ou seja, cada uma das suas GPUs processa um subconjunto diferente de seus dados independentemente.
Observe que isso parece ser válido apenas para o back-end do Tensorflow no momento da gravação.
Atualização (fev 2018) :
O Keras agora aceita a seleção automática de gpu usando multi_gpu_model, para que você não precise mais codificar o número de gpus. Detalhes nesta solicitação de recebimento . Em outras palavras, isso habilita um código parecido com este:
Mas, para ser mais explícito , você pode usar algo como:
Bônus :
Para verificar se você realmente está utilizando todas as suas GPUs, especificamente as da NVIDIA, você pode monitorar seu uso no terminal usando:
Referências:
fonte
multi_gpu_model(model, gpus=None)
trabalho funciona no caso em que há apenas 1 GPU? Seria legal se ele se adaptasse automaticamente ao número de GPUs disponíveis.TensorFlow usando GPUs
Aqui está o código de exemplo de como é usado, portanto, para cada tarefa é especificada a lista com dispositivos / dispositivo:
tf usará a GPU por padrão para computação, mesmo que seja para CPU (se houver GPU suportada). para que você possa fazer um loop for: "para d em ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" e no "tf.device (d)" deve incluir todos os recursos da GPU da sua instância. Então tf.device () será realmente usado.
Escalando o treinamento do modelo Keras para várias GPUs
Para Keras usando Mxnet do que args.num_gpus , em que num_gpus é a lista de suas GPUs necessárias.
Além de todo o Uber, o Horovod de código aberto recentemente e acho ótimo:
Horovod
fonte
Basicamente, você pode usar o exemplo a seguir. Tudo o que você precisa é especificar valores de consumo de CPU e GPU após a importação de keras.
Depois disso, você ajustaria o modelo.
Por fim, você pode diminuir os valores de consumo e não o trabalho nos limites superiores.
fonte