tensorflow
TensorFlow GPU-konfiguration
Sök…
Introduktion
Detta ämne handlar om att ställa in och hantera GPU: er i TensorFlow.
Det antar att GPU-versionen av TensorFlow har installerats (se https://www.tensorflow.org/install/ för mer information om GPU-installationen).
Du kanske också vill titta på den officiella dokumentationen: https://www.tensorflow.org/tutorials/using_gpu
Anmärkningar
Huvudsakliga källor:
Kör endast TensorFlow på CPU - med hjälp av miljövariabeln CUDA_VISIBLE_DEVICES.
För att säkerställa att en GPU-version TensorFlow-process bara körs på CPU:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
import tensorflow as tf
För mer information om CUDA_VISIBLE_DEVICES
, titta på detta svar eller på CUDA-dokumentationen .
Kör endast TensorFlow-graf på CPU - med hjälp av `tf.config`
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
Tänk på att den här metoden förhindrar TensorFlow-grafen från att använda GPU men TensorFlow låser fortfarande GPU-enheten som beskrivs i det här ett problem som öppnades med den här metoden. Att använda CUDA_VISIBLE_DEVICES
verkar vara det bästa sättet att säkerställa att TensorFlow hålls borta från GPU-kortet (se detta svar ).
Använd en viss uppsättning GPU-enheter
För att använda en viss uppsättning GPU-enheter kan CUDA_VISIBLE_DEVICES
användas:
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0" # Will use only the first GPU device
os.environ["CUDA_VISIBLE_DEVICES"]="0,3" # Will use only the first and the fourth GPU devices
(Citat från detta svar ; mer information om CUDA-miljövariablerna här .)
Lista de tillgängliga enheterna som finns tillgängliga av TensorFlow i den lokala processen.
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Kontrollera GPU-minnesallokering
Som standard fördelar TensorFlow hela minnet på GPU-kortet (vilket kan orsaka CUDA_OUT_OF_MEMORY
varning).
För att ändra detta är det möjligt att
ändra procentsatsen för fördelat minne med
per_process_gpu_memory_fraction
konfigurationsalternativet,Ett värde mellan 0 och 1 som indikerar vilken bråkdel av
tillgängligt GPU-minne för fördelning för varje process. 1 betyder
att fördela allt GPU-minne, 0,5 betyder processen
fördelar ~ 50% av det tillgängliga GPU-minnet.inaktivera fördelningen med hjälp av
allow_growth
allow_growth. Tilldelning av minne kommer att växa när användningen växer.Om det är sant fördelar inte allokeraren det angivna
GPU-minnesregion, istället börjar små och växa efter behov.
Till exempel:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:
eller
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):
Mer information om konfigurationsalternativ här .