Comment pouvez-vous programmer dans la bibliothèque keras (ou tensorflow) pour partitionner la formation sur plusieurs GPU? Supposons que vous vous trouviez dans une instance Amazon ec2 comportant 8 GPU et que vous souhaitiez toutes les utiliser pour vous entraîner plus rapidement, mais que votre code ne concerne qu'un seul processeur ou GPU.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
la source
la source
Réponses:
De la FAQ de Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Le code ci-dessous est copié-collé pour activer le «parallélisme des données». C'est-à-dire que chacun de vos GPU traite un sous-ensemble différent de vos données indépendamment.
Notez que cela semble être valable uniquement pour le backend Tensorflow au moment de la rédaction.
Mise à jour (février 2018) :
Keras accepte maintenant la sélection automatique de gpu en utilisant multi_gpu_model, vous n'avez donc plus à coder en dur le nombre de gpus. Détails dans cette demande d'extraction . En d'autres termes, cela active un code qui ressemble à ceci:
Mais pour être plus explicite , vous pouvez vous en tenir à quelque chose comme:
Prime :
Pour vérifier si vous utilisez réellement tous vos GPU, en particulier ceux de NVIDIA, vous pouvez surveiller votre utilisation dans le terminal en utilisant:
Les références:
la source
multi_gpu_model(model, gpus=None)
travail fonctionne dans le cas où il y a seulement 1 GPU? Ce serait cool s'il s'adapte automatiquement au nombre de GPU disponibles.TensorFlow Utilisation de GPU
Voici un exemple de code d'utilisation, ainsi pour chaque tâche est spécifiée la liste avec devices / device:
tf utilisera le GPU par défaut pour le calcul, même s’il s’agit d’un CPU (si le GPU supporté est présent). vous pouvez donc simplement créer une boucle for: "pour d dans ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" et dans le "tf.device (d)" devrait inclure toutes vos ressources GPU d'instance. Donc tf.device () sera réellement utilisé.
Mise à l'échelle de Keras Model Training sur plusieurs GPU
Pour Keras en utilisant Mxnet plutôt que args.num_gpus , où num_gpus est la liste de vos GPU requis.
En plus de tous les Horovod Uber à code source ouvert récemment et je trouve ça génial:
Horovod
la source
Fondamentalement, vous pouvez prendre exemple de l'exemple suivant. Tout ce dont vous avez besoin est de spécifier les valeurs de consommation cpu et gpu après l'importation de keras.
Après cela, vous adapteriez le modèle.
Enfin, vous pouvez réduire les valeurs de consommation et non le travail sur les limites supérieures.
la source