У меня установлен Keras с серверной частью Tensorflow и CUDA. Я бы хотел, чтобы иногда по требованию Keras использовал CPU. Можно ли это сделать без установки отдельного Tensorflow только для ЦП в виртуальной среде? Если да, то как? Если бы бэкэнд был Theano, флаги можно было бы установить, но я не слышал о флагах Tensorflow, доступных через Keras.
python
machine-learning
tensorflow
keras
mikal94305
источник
источник
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
как в ответе нижеCUDA_DEVICE_ORDER=PCI_BUS_ID
в выпуске № 152import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"] = ""
, как мне «отменить» это? Я бы хотел, чтобы Керас снова использовал графический процессор.Достаточно отдельный способ сделать это - использовать
Здесь с помощью
booleans
GPU
иCPU
мы указываем, хотим ли мы запускать наш код с помощью графического процессора или процессора, жестко определяя количество графических процессоров и процессоров, к которым разрешен доступ сеансу Tensorflow. Переменныеnum_GPU
иnum_CPU
определяют это значение.num_cores
затем устанавливает количество ядер ЦП, доступных для использования с помощьюintra_op_parallelism_threads
иinter_op_parallelism_threads
.В
intra_op_parallelism_threads
диктует переменное число потоков параллельной работы в одном узле в графе вычисления допускается использование (внутри). В то время какinter_ops_parallelism_threads
переменная определяет количество потоков, доступных для параллельных операций через узлы графа вычислений (inter).allow_soft_placement
позволяет запускать операции на ЦП, если выполняется любой из следующих критериев:нет реализации на GPU для операции
нет известных или зарегистрированных устройств GPU
необходимо совмещать с другими входами ЦП
Все это выполняется в конструкторе моего класса перед любыми другими операциями и полностью отделимо от любой модели или другого кода, который я использую.
Примечание. Для этого требуется установка
tensorflow-gpu
иcuda
/cudnn
, поскольку предоставляется возможность использовать графический процессор.Ссылки:
Что означают такие параметры в ConfigProto, как allow_soft_placement и log_device_placement?
Значение inter_op_parallelism_threads и intra_op_parallelism_threads
источник
allow_soft_placement
,intra_op_parallelism_threads
,inter_op_parallelism_threads
inter
/intra_op_parallelism_threads
см CPU или GPU операций?Это сработало для меня (win10), поместите перед импортом keras:
источник
Просто импортируйте tensortflow и используйте keras, это так просто.
источник
tf.device('/cpu:0')
, я все еще мог видеть, что память выделяется для Python позже с помощьюnvidia-smi
.with
?В соответствии с руководством по keras вы можете просто использовать ту же
tf.device
область видимости, что и в обычном тензорном потоке:источник
with
может быть любым кодом Keras.Я просто потратил некоторое время на то, чтобы понять это. Ответ Тома неполный. Допустим, ваша программа
test.py
хочет использовать gpu0 для запуска этой программы и оставить другие графические процессоры бесплатными.Ты должен написать
CUDA_VISIBLE_DEVICES=0 python test.py
Обратите внимание, это
DEVICES
неDEVICE
источник
Для людей, работающих с PyCharm, и для форсирования ЦП вы можете добавить следующую строку в конфигурацию Run / Debug в разделе Environment variables:
источник