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 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow