J'ai Keras installé avec le backend Tensorflow et CUDA. J'aimerais parfois forcer Keras à utiliser le processeur. Cela peut-il être fait sans, par exemple, installer un Tensorflow séparé, uniquement CPU, dans un environnement virtuel? Si c'est le cas, comment? Si le backend était Theano, les indicateurs pourraient être définis, mais je n'ai pas entendu parler des indicateurs Tensorflow accessibles via Keras.
python
machine-learning
tensorflow
keras
mikal94305
la source
la source
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
comme dans une réponse ciCUDA_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 "annuler" cela? J'aimerais que Keras utilise à nouveau le GPU.Une façon plutôt séparable de faire ceci est d'utiliser
Ici, avec
booleans
GPU
etCPU
, nous indiquons si nous souhaitons exécuter notre code avec le GPU ou le CPU en définissant de manière rigide le nombre de GPU et de CPU auxquels la session Tensorflow est autorisée à accéder. Les variablesnum_GPU
etnum_CPU
définissez cette valeur.num_cores
définit ensuite le nombre de cœurs CPU disponibles pour une utilisation viaintra_op_parallelism_threads
etinter_op_parallelism_threads
.La
intra_op_parallelism_threads
variable dicte le nombre de threads qu'une opération parallèle dans un seul nœud du graphe de calcul est autorisée à utiliser (intra). Alors que lainter_ops_parallelism_threads
variable définit le nombre de threads accessibles pour les opérations parallèles à travers les nœuds du graphe de calcul (inter).allow_soft_placement
permet d'exécuter des opérations sur la CPU si l'un des critères suivants est rempli:il n'y a pas d'implémentation GPU pour l'opération
il n'y a aucun périphérique GPU connu ou enregistré
il est nécessaire de co-localiser avec d'autres entrées du CPU
Tout cela est exécuté dans le constructeur de ma classe avant toute autre opération, et est complètement séparable de tout modèle ou autre code que j'utilise.
Remarque: Cela nécessite
tensorflow-gpu
etcuda
/cudnn
doit être installé car l'option est donnée d'utiliser un GPU.Réf:
Que signifient les options de ConfigProto telles que allow_soft_placement et log_device_placement?
Signification de inter_op_parallelism_threads et intra_op_parallelism_threads
la source
allow_soft_placement
,intra_op_parallelism_threads
,inter_op_parallelism_threads
inter
/ seintra_op_parallelism_threads
réfèrent aux opérations CPU ou GPU?Cela a fonctionné pour moi (win10), place avant d'importer des keras:
la source
Il suffit d'importer tensortflow et d'utiliser des keras, c'est aussi simple que cela.
la source
tf.device('/cpu:0')
, je pouvais toujours voir la mémoire allouée à python plus tard avecnvidia-smi
.with
?Selon le didacticiel keras , vous pouvez simplement utiliser la même
tf.device
portée que dans le tensorflow normal:la source
with
peut être n'importe quel code Keras.Je viens de passer un peu de temps à comprendre. La réponse de Thoma n'est pas complète. Disons que votre programme est
test.py
, vous voulez utiliser gpu0 pour exécuter ce programme et garder les autres gpus libres.Tu devrais écrire
CUDA_VISIBLE_DEVICES=0 python test.py
Remarquez que ce n'est
DEVICES
pasDEVICE
la source
Pour les personnes travaillant sur PyCharm et pour forcer le processeur, vous pouvez ajouter la ligne suivante dans la configuration Exécuter / Déboguer, sous Variables d'environnement:
la source