Doker

Docker używa kontenerów do tworzenia środowisk wirtualnych, które izolują instalację TensorFlow od reszty systemu. Programy TensorFlow są uruchamiane w tym wirtualnym środowisku, które może udostępniać zasoby swojej maszynie hosta (dostęp do katalogów, korzystanie z GPU, łączenie się z Internetem itp.). Obrazy TensorFlow Docker są testowane dla każdej wersji.

Docker to najłatwiejszy sposób na włączenie obsługi procesora graficznego TensorFlow w systemie Linux, ponieważ na komputerze hosta wymagany jest tylko sterownik procesora graficznego NVIDIA® ( zestaw narzędzi NVIDIA® CUDA® nie musi być instalowany).

Wymagania Dockera TensorFlow

  1. Zainstaluj Dockera na lokalnym hoście .
  2. Aby uzyskać obsługę GPU w systemie Linux, zainstaluj obsługę platformy NVIDIA Docker .
    • Zanotuj swoją wersję Dockera za pomocą docker -v . Wersje wcześniejsze niż 19.03 wymagają nvidia-docker2 i flagi --runtime=nvidia . W wersjach włącznie i późniejszych będziesz używać pakietu nvidia-container-toolkit i flagi --gpus all . Obie opcje są udokumentowane na stronie, do której prowadzi link powyżej.

Pobierz obraz Dockera TensorFlow

Oficjalne obrazy TensorFlow Docker znajdują się w repozytorium tensorflow/tensorflow Docker Hub. Zwolnienia graficzne są oznaczane przy użyciu następującego formatu:

Etykietka Opis
latest Najnowsza wersja obrazu binarnego procesora TensorFlow. Domyślny.
nightly Nocne kompilacje obrazu TensorFlow. (Nietrwały.)
version Określ wersję obrazu binarnego TensorFlow, na przykład: 2.8.3

Każdy tag podstawowy ma warianty, które dodają lub zmieniają funkcjonalność:

Warianty tagów Opis
tag -gpu Określona wersja tagu z obsługą GPU. ( Patrz poniżej )
tag -jupyter Określona wersja tagu z Jupyter (obejmuje notesy samouczków TensorFlow)

Możesz używać wielu wariantów jednocześnie. Na przykład następujące pliki do pobrania obrazów wersji TensorFlow na Twoją maszynę:

docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

Uruchom kontener TensorFlow Docker

Aby uruchomić kontener skonfigurowany w TensorFlow, użyj następującego formularza polecenia:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

Aby uzyskać szczegółowe informacje, zobacz informacje o uruchamianiu platformy Docker .

Przykłady użycia obrazów tylko dla procesora

Sprawdźmy instalację TensorFlow przy użyciu latest oznakowanego obrazu. Docker pobiera nowy obraz TensorFlow przy pierwszym uruchomieniu:

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

Zademonstrujmy więcej przepisów TensorFlow Docker. Rozpocznij sesję powłoki bash w kontenerze skonfigurowanym przez TensorFlow:

docker run -it tensorflow/tensorflow bash

W kontenerze możesz rozpocząć sesję python i zaimportować TensorFlow.

Aby uruchomić program TensorFlow opracowany na komputerze hosta w kontenerze, zamontuj katalog hosta i zmień katalog roboczy kontenera ( -v hostDir:containerDir -w workDir ):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

Problemy z uprawnieniami mogą wystąpić, gdy pliki utworzone w kontenerze są udostępniane hostowi. Zwykle najlepiej jest edytować pliki w systemie hosta.

Uruchom serwer Jupyter Notebook przy użyciu nocnej kompilacji TensorFlow:

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

Postępuj zgodnie z instrukcjami i otwórz adres URL w przeglądarce hosta: http://127.0.0.1:8888/?token=...

Wsparcie GPU

Docker to najłatwiejszy sposób na uruchomienie TensorFlow na GPU, ponieważ host wymaga tylko sterownika NVIDIA® ( zestaw narzędzi NVIDIA® CUDA® nie jest wymagany).

Zainstaluj zestaw narzędzi Nvidia Container Toolkit , aby dodać obsługę GPU NVIDIA® do platformy Docker. nvidia-container-runtime jest dostępna tylko dla systemu Linux. Aby uzyskać szczegółowe informacje, zobacz często zadawane pytania dotyczące obsługi platformy nvidia-container-runtime .

Sprawdź, czy karta graficzna jest dostępna:

lspci | grep -i nvidia

Sprawdź swoją instalację nvidia-docker :

docker run --gpus all --rm nvidia/cuda nvidia-smi

Przykłady użycia obrazów obsługujących GPU

Pobierz i uruchom obraz TensorFlow z obsługą GPU (może to potrwać kilka minut):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

Konfiguracja obrazu obsługującego GPU może chwilę potrwać. Jeśli wielokrotnie uruchamiasz skrypty oparte na GPU, możesz użyć docker exec , aby ponownie użyć kontenera.

Użyj najnowszego obrazu GPU TensorFlow, aby rozpocząć sesję powłoki bash w kontenerze:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash