tensorflow
Konfiguracja procesora graficznego TensorFlow
Szukaj…
Wprowadzenie
Ten temat dotyczy konfigurowania procesorów graficznych i zarządzania nimi w TensorFlow.
Zakłada się, że wersja TensorFlow dla GPU została zainstalowana (więcej informacji na temat instalacji GPU znajduje się na stronie https://www.tensorflow.org/install/ ).
Możesz także zajrzeć do oficjalnej dokumentacji: https://www.tensorflow.org/tutorials/using_gpu
Uwagi
Główne źródła:
Uruchom TensorFlow tylko na CPU - używając zmiennej środowiskowej `CUDA_VISIBLE_DEVICES`.
Aby upewnić się, że proces TensorFlow w wersji GPU działa tylko na procesorze:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
import tensorflow as tf
Aby uzyskać więcej informacji na temat CUDA_VISIBLE_DEVICES
, CUDA_VISIBLE_DEVICES
się z tą odpowiedzią lub dokumentacją CUDA .
Uruchamiaj wykres TensorFlow tylko na CPU - używając `tf.config`
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
Należy pamiętać, że ta metoda uniemożliwia grafowi TensorFlow korzystanie z GPU, ale TensorFlow nadal blokuje urządzenie GPU, jak opisano w tym problemie dotyczącym tej metody. Użycie CUDA_VISIBLE_DEVICES
wydaje się być najlepszym sposobem na zapewnienie, że TensorFlow jest trzymany z dala od karty graficznej (zobacz tę odpowiedź ).
Użyj określonego zestawu urządzeń GPU
Aby użyć określonego zestawu urządzeń GPU, można użyć zmiennej środowiskowej CUDA_VISIBLE_DEVICES
:
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
(Cytat z tej odpowiedzi ; więcej informacji na temat zmiennych środowiskowych CUDA tutaj .)
Wymień dostępne urządzenia dostępne przez TensorFlow w procesie lokalnym.
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Kontroluj przydział pamięci GPU
Domyślnie TensorFlow wstępnie przydziela całą pamięć karty GPU (co może powodować ostrzeżenie CUDA_OUT_OF_MEMORY
).
Aby to zmienić, można to zrobić
zmień procent wstępnie przydzielonej pamięci, używając opcji konfiguracji
per_process_gpu_memory_fraction
,Wartość między 0 a 1, która wskazuje, jaka część
dostępna pamięć GPU do wstępnego przydzielenia dla każdego procesu. 1 oznacza
aby wstępnie przydzielić całą pamięć GPU, 0,5 oznacza proces
przydziela ~ 50% dostępnej pamięci GPU.wyłącz wstępną alokację, używając opcji konfiguracji
allow_growth
. Przydział pamięci będzie wzrastał wraz ze wzrostem wykorzystania.Jeśli to prawda, alokator nie przydziela wstępnie całej podanej wartości
Obszar pamięci GPU, zamiast tego zaczyna się mały i rośnie w razie potrzeby.
Na przykład:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:
lub
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):
Więcej informacji o opcjach konfiguracji tutaj .