¿Cómo puede programar en la biblioteca de keras (o flujo de tensor) para particionar el entrenamiento en múltiples GPU? Digamos que se encuentra en una instancia de Amazon ec2 que tiene 8 GPU y desea utilizarlas todas para entrenar más rápido, pero su código es solo para una sola CPU o GPU.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
fuente
fuente
Respuestas:
De las preguntas frecuentes de Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
A continuación se muestra el código copiado para habilitar el "paralelismo de datos". Es decir, que cada una de sus GPU procese un subconjunto diferente de sus datos de forma independiente.
Tenga en cuenta que esto parece ser válido solo para el backend de Tensorflow en el momento de la escritura.
Actualización (febrero de 2018) :
Keras ahora acepta la selección automática de gpu usando multi_gpu_model, por lo que ya no tiene que codificar el número de gpus. Detalles en esta solicitud de extracción . En otras palabras, esto habilita un código que se ve así:
Pero para ser más explícito , puedes seguir con algo como:
Bono :
Para verificar si realmente está utilizando todas sus GPU, específicamente las de NVIDIA, puede monitorear su uso en el terminal usando:
Referencias
fuente
multi_gpu_model(model, gpus=None)
Funciona en el caso de que solo haya 1 GPU? Sería genial si se adaptara automáticamente a la cantidad de GPU disponibles.TensorFlow con GPU
Aquí está el código de muestra sobre cómo se usa, por lo que para cada tarea se especifica la lista con dispositivos / dispositivo:
tf usará GPU de manera predeterminada para el cálculo, incluso si es para CPU (si está presente GPU compatible). así que puede hacer un bucle for: "for d en ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" y en el "tf.device (d)" debe incluir todos los recursos de la GPU de su instancia. Por lo tanto, se utilizará tf.device ().
Escalando el entrenamiento del modelo Keras a múltiples GPU
Para Keras usando Mxnet que args.num_gpus , donde num_gpus es la lista de las GPU requeridas.
Además de todo, Uber de origen abierto Horovod recientemente y creo que es genial:
Horovod
fuente
Básicamente, puede tomar ejemplo del siguiente ejemplo. Todo lo que necesita es especificar los valores de consumo de CPU y GPU después de importar keras.
Después de eso, te quedaría el modelo.
Finalmente, puede disminuir los valores de consumo, no el trabajo en los límites superiores.
fuente