Docker

Docker wykorzystuje kontenery 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 procesora graficznego, łączenie się z Internetem itp.). Obrazy Dockera TensorFlow są testowane dla każdej wersji.

Docker to najprostszy sposób na włączenie obsługi procesora graficznego TensorFlow w systemie Linux, ponieważ na komputerze hosta wymagany jest jedynie sterownik procesora graficznego NVIDIA® (nie trzeba instalować zestawu narzędzi NVIDIA® CUDA® Toolkit ).

Wymagania dotyczące platformy Docker TensorFlow

  1. Zainstaluj Docker na lokalnym komputerze -hoście .
  2. Aby uzyskać obsługę procesora graficznego w systemie Linux, zainstaluj obsługę 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 zawierających 19.03 i nowszych będziesz używać pakietu nvidia-container-toolkit i flagi --gpus all . Obie opcje są udokumentowane na stronie, do której link znajduje się powyżej.

Pobierz obraz okna dokowanego TensorFlow

Oficjalne obrazy Dockera TensorFlow znajdują się w repozytorium tensorflow/tensorflow Docker Hub. Publikacje obrazów są oznaczane w następującym formacie:

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 (zawiera notesy z samouczkami TensorFlow)

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

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 Docker TensorFlow

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

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

Szczegółowe informacje można znaleźć w dokumentacji dotyczącej uruchamiania okna dokowanego .

Przykłady wykorzystujące obrazy tylko dla procesora

Sprawdźmy instalację TensorFlow przy użyciu latest oznaczonego 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])))"

Pokażmy więcej przepisów na Docker TensorFlow. Rozpocznij sesję powłoki bash w kontenerze skonfigurowanym za pomocą 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 zostaną udostępnione hostowi. Zwykle najlepiej jest edytować pliki w systemie hosta.

Uruchom serwer Jupyter Notebook, korzystając z 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 uruchomienia TensorFlow na GPU, ponieważ maszyna hosta wymaga jedynie sterownika NVIDIA® (zestaw narzędzi NVIDIA® CUDA® Toolkit nie jest wymagany).

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

Sprawdź, czy procesor graficzny jest dostępny:

lspci | grep -i nvidia

Sprawdź instalację nvidia-docker :

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

Przykłady wykorzystania obrazów z obsługą GPU

Pobierz i uruchom obraz TensorFlow z obsługą procesora graficznego (może to zająć 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 procesor graficzny może zająć trochę czasu. Jeśli wielokrotnie uruchamiasz skrypty oparte na GPU, możesz użyć docker exec , aby ponownie wykorzystać kontener.

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

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