Peut Keras avec Tensorflow backend être forcé d'utiliser le CPU ou GPU à volonté?
J'ai Keras installé avec le Tensorflow backend et CUDA. J'aimerais parfois à la demande de la force de Keras à l'utilisation de l'UC. Cela peut être fait sans le dire l'installation séparée de l'UC seule Tensorflow dans un environnement virtuel? Si oui, comment? Si le backend ont été Théano, les indicateurs pourraient être définies, mais je n'ai pas entendu parler de Tensorflow drapeaux accessible via Keras.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez forcer Keras à l'utilisation de l'UC
Voie 1
avant de Keras /Tensorflow est importé.
2
Exécuter votre script comme
Voir aussi
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
comme dans la réponse ci-dessousCUDA_DEVICE_ORDER=PCI_BUS_ID
dans le numéro 152import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"] = ""
, maintenant comment puis-je "annuler" cette ? Je voudrais Keras d'utiliser le GPU de nouveau.Plutôt séparables façon de le faire est d'utiliser
Ici, avec
booleans
GPU
etCPU
, nous indiquer si nous tenons à exécuter notre code avec le GPU ou CPU de manière rigide définissant le nombre de Gpu et Cpu de la Tensorflow session est autorisé à accéder. Les variablesnum_GPU
etnum_CPU
définir cette valeur.num_cores
définit alors le nombre de cœurs de PROCESSEUR disponible pour utilisation viaintra_op_parallelism_threads
etinter_op_parallelism_threads
.La
intra_op_parallelism_threads
variable détermine le nombre de threads d'un fonctionnement en parallèle dans un seul nœud dans le graphe est autorisé à utiliser (intra). Alors que leinter_ops_parallelism_threads
variable définit le nombre de threads accessible pour les opérations parallèles entre les nœuds du graphe (inter).allow_soft_placement
permet pour les opérations à exécuter sur le PROCESSEUR si l'un des critères suivants sont satisfaits:il n'y a pas de GPU de la mise en œuvre de l'opération
il n'y a pas de GPU dispositifs connus ou enregistré
il est nécessaire de faire cohabiter avec d'autres entrées de la CPU
Tout cela est exécuté dans le constructeur de ma classe avant les autres opérations, et est complètement séparable à partir d'un modèle ou d'un autre code que j'utilise.
Note: Ceci nécessite
tensorflow-gpu
etcuda
/cudnn
être installé car l'option est donnée à l'utilisation d'un GPU.Réf:
Ce que les options en ConfigProto comme allow_soft_placement et log_device_placement veux dire?
Sens de l'inter_op_parallelism_threads et intra_op_parallelism_threads
allow_soft_placement
,intra_op_parallelism_threads
,inter_op_parallelism_threads
inter
/intra_op_parallelism_threads
reportez-vous à la CPU ou GPU opérations?Cela a fonctionné pour moi (win10), de la place avant d'importer keras:
Comme par keras tutoriel, vous pouvez simplement utiliser la même
tf.device
portée qu'à l'ordinaire tensorflow:with
peut être tout Keras code.Il suffit d'importer tensortflow et l'utilisation keras, c'est facile.
tf.device('/cpu:0')
, je voyais encore de la mémoire est allouée pour python, plus tard, avecnvidia-smi
.Je viens de passer un certain temps à le comprendre.
Thoma, la réponse n'est pas complète.
Dire que votre programme est
test.py
, vous souhaitez utiliser gpu0 pour exécuter ce programme, et de garder les autres gpu gratuit.Vous devriez écrire
CUDA_VISIBLE_DEVICES=0 python test.py
Avis c'est
DEVICES
pasDEVICE
Cela fonctionne pour moi: