Jak przygotować środowisko do Tensorflow, jak poprawnie zainstalować niezbędne biblioteki: CUDA, cuDNN oraz jak najlepiej zorganizować sobie strukturę folderów.
Co jakiś czas zmuszony jestem do zainstalowania środowiska do Tensorflow, a to u siebie na laptopie, a to na serwerach, a to na stacjonarnym w firmie. Oczywiście pełen sposób instalacji TF jest dostępny na stronie tej biblioteki, ja chciałbym wam przedstawić, ten który u mnie sprawdza się najlepiej.
Gdy zacząłem pracować z TF to zastanawiałem się jak to wszystko zorganizować aby było łatwo odtwarzalne, powtarzalne i w jak najmniejszym stopniu ingerowało w moje dotychczasowe konfiguracje i instalacje. Przez ten czas wyrobiłem już sobie pewne podejście, które u mnie działa dobrze. Na proces instalacji miało wpływ kilka decyzji:
- będę wykorzystywał Pythona 3 (v3.5 dokładnie),
- chcę utrzymać kompatybilność z poprzednimi wersjami TF, mam kilka skryptów pisanych w wersjach 0.10, czy 0.12,
- chcę mieć elatyczne środowisko tak aby być przygotowanym na kolejne wersje (obecnie aktualna jest wersja 1.0),
- chcę mieć dwie wersje TF na CPU i GPU, często u siebie na laptopie testuję na CPU, potem uruchamiam testowo na GPU zobaczyć czy „chodzi”. Ostatecznie obliczenia uruchamiam na serwerze z kartami GPU.
Jeżeli chcesz przejść do konkretów to całość została spisana w gist’cie ubuntu16_tensorflow_cuda8.sh
Post ten jest uaktualnioną i poprawioną wersją poprzednich postów:
- https://ksopyla.com/2016/12/instalacja-tensorflow-r0-12-cuda-8-ubuntu-16/
- https://ksopyla.com/2016/07/instalacja-tensorflow-0-9-cuda-7-5-na-ubuntu-16-04/
Instalacja sterowników NVidia
Na początku należy zainstalować (lub zaktualizować) sterowniki karty graficznej od NVidi. Sterowniki będą pobrane z dodanego repozytorium ppa:graphics-drivers/ppa
# update packages sudo apt-get update sudo apt-get upgrade #Add the ppa repo for NVIDIA graphics driver sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update #Install the recommended driver (currently nvidia-378) sudo ubuntu-drivers autoinstall sudo reboot #check if drivers were installed nvidia-smi
Instalujemy sterowniki i na końcu poleceniem nvidia-smi sprawdzamy czy wszystko poprawnie się zainstalowało.
Instalacja bibliotek CUDA i cuDNN
Gdy mamy już sterowniki to należy zainstalować biblioteki CUDA Toolkit oraz cuDNN. Obie można ściągnąć z stron NVidia. W chwili pisania posta CUDA dostępna była w wersji 8.0 a cuDNN w wersji 5.1, takie też wersje zalecane są na stronach Tensorflow.
wget -O cuda_8_linux.run https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run sudo chmod +x cuda_8_linux.run ./cuda_8.0.61_375.26_linux.run
Instalacja cuDNN wymaga zaakceptowania licencji i odpowiedzi na stronie NVidi, ściągamy ją na dysk, rozpakowujemy i kopiujemy do folderu z bibliotekami CUDA Toolkit
tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz # copy libs to /usr/local/cuda folder sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
Instalacja Tensorflow w virtualenv Python 3
Ostatnim krokiem jest instalacja Pythona 3, pakietu python3-venv oraz stworzenie wirtualnego środowisko przy pomocy virtualenv. Dzięki virtualenv będziemy mogli tworzyć niezależne od siebie wersje Pythona z różnym zestawem paczek, czyli poprzednie projekty nie będą sobie wchodziły w paradę z powodu zależności.
sudo apt install python3-pip sudo apt install python3-venv # create virtual environment for tensorflow python3 -m venv tfenv # activate the virtualenv workspace source tfenv/bin/activate # Instal tensorflow package with gpu support (tfenv)$ pip install tensorflow-gpu #or CPU version (tfenv)$ pip install tensorflow
W przykładzie stworzyliśmy środowisko nazwane tfenv (nazwa jest dowolna), w którym instalujemy tensorflow, wersję na GPU lub CPU. Ja zazwyczaj tworzę dwa środowiska tfenv-gpu i tfenv-cpu każde z odpowiednią wersją biblioteki.
Sprawdzenie poprawności instalacji
Po zainstalowaniu bibliotek, a w szczególności z wspaciem dla GPU, ja zazwyczaj uruchamiam prosty skrypt w TF dodający dwie liczby. Uruchamiamy konsolę pythona importujemy tensorflow, tworzymy sesję, dwie stałe i dodajemy je do siebie. Istotne abyśmy zaraz po imporcie dostali informację o tym że biblioteki CUDA zostały odnalezione.
(tfenv)$ python import tensorflow as tf #I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally #I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so locally #I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally #I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so locally #I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally tf_session = tf.Session() x = tf.constant(1) y = tf.constant(1) print(tf_session.run(x + y)) # 2 tf_session.close()
Błędy podczas instalacji lub uruchamiania?
Oczywiście jak to w informatyce, każdy ma inne środowisko i inne ustawienia, poniżej znajduje się aktuaizowana lista błędów, które mogą wystąpić:
- Nie odnajduje bibliotek CUDA. Zazwyczaj jest to spowodowane nie ustawieniem ścieżek do CUDA, można to naprawić ustawiajć zmienne:
export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64″ export CUDA_HOME=/usr/local/cuda
- Po aktualizacji Ubuntu 16.04 zostało mi zaktualizowane jądro vmlinuz-4.4.0-53-generic do vmlinuz-4.4.0-53-generic, przez co sterowniki do Nvidia także przestały działać, posuł się obraz i nie mogłem się zalogować do systemu! Pomogło uruchomienie w trybie rescu z siecią(wtedy system plików jest do zapisu), z konsoli usunąłem sterowniki
sudo apt-get remove --purge nvidia* sudo shutdown -r now
Po restarcie mogłęm się już zalogować i ponownie zainstalowałem sterowniki do nvidi, zostały one przebudowane z wsparciem dla nowego jądra.
Idealnie, właśnie dzisiaj miałem instalować, bo przyszła nowa GTX Pascal 😀
Uuu, to powodzenia. Jeżeli to seria 10xx to zapas mocy obliczeniowej jest 🙂
Dzięki za ściągawkę i dobre słowa. Udało się 🙂 Tylko trzeba było Secure Boota wyłączyć przy instalacji sterowników Nvidii.
Pozdrawiam!
P.S. to tylko 1050Ti szkoda, że nie 1080Ti 😛
Po 4 formatach Ubuntu Twoje instrukcje w końcu zadziałały.
Dzięki wielkie :D.
U mnie od jakiegoś czasu ciągle wywalało proces gpu, podejrzewam że to za sprawą sterowników.
Znalazłem na githubie podobną instrukcję różnica polega na instalacji sterowaników wprost od nvidia może komuś pomoże https://github.com/williamFalcon/tensorflow-gpu-install-ubuntu-16.04
Thanks for these instructions. Unfortunately I was unable to get this to work, seems like the versions of the software are a moving target. Here are steps that worked for me yesterday (1/30/18): http://www.sixthdoor.com/deep-learning-setup-tensorflow-gpu-1-4-on-ubuntu-16-04/