Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Twórz ze źródła

Zbuduj pakiet pip TensorFlow ze źródła i zainstaluj go w systemie Ubuntu Linux i macOS. Chociaż instrukcje mogą działać w innych systemach, zostały przetestowane i obsługiwane tylko w przypadku systemów Ubuntu i macOS.

Konfiguracja dla systemu Linux i macOS

Zainstaluj następujące narzędzia do kompilacji, aby skonfigurować środowisko programistyczne.

Zainstaluj język Python i zależności pakietu TensorFlow

Ubuntu

sudo apt install python3-dev python3-pip

System operacyjny Mac

Wymaga Xcode 9.2 lub nowszej.

Zainstaluj za pomocą menedżera pakietów Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
# if you are on macOS 10.12 (Sierra) use export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew install python

Zainstaluj zależności pakietu pip TensorFlow (jeśli używasz środowiska wirtualnego, pomiń argument --user ):

pip install -U --user pip six 'numpy<1.19.0' wheel setuptools mock 'future>=0.17.1' 'gast==0.3.3' typing_extensions
pip install -U --user keras_applications --no-deps
pip install -U --user keras_preprocessing --no-deps

Zainstaluj Bazel

Aby zbudować TensorFlow, musisz zainstalować Bazel. Bazelisk to łatwy sposób na zainstalowanie Bazel i automatyczne pobranie poprawnej wersji Bazel dla TensorFlow. Aby ułatwić obsługę, dodaj Bazelisk jako bazel wykonywalny bazel w swojej bazel PATH .

Jeśli Bazelisk jest niedostępny, możesz ręcznie zainstalować Bazel . Upewnij się, że zainstalowano obsługiwaną wersję Bazel: dowolną wersję między _TF_MIN_BAZEL_VERSION a _TF_MAX_BAZEL_VERSION jak określono w tensorflow/configure.py .

Zainstaluj obsługę GPU (opcjonalnie, tylko Linux)

Nie ma obsługi GPU dla macOS.

Przeczytaj przewodnik obsługi GPU, aby zainstalować sterowniki i dodatkowe oprogramowanie wymagane do uruchomienia TensorFlow na GPU.

Pobierz kod źródłowy TensorFlow

Użyj Git, aby sklonować repozytorium TensorFlow :

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

Repozytorium domyślnie działa w master gałęzi programistycznej. Możesz również pobrać gałąź wydania, aby zbudować:

git checkout branch_name  # r1.9, r1.10, etc.

Skonfiguruj plik build

Skonfiguruj kompilację systemu, uruchamiając ./configure w katalogu głównym drzewa źródłowego TensorFlow. Ten skrypt wyświetla monit o lokalizację zależności TensorFlow i prosi o dodatkowe opcje konfiguracji kompilacji (na przykład flagi kompilatora).

./configure

Przykładowa sesja

Poniżej przedstawiono przykładowe uruchomienie skryptu ./configure (Twoja sesja może się różnić):

Opcje konfiguracji

Obsługa GPU

Aby uzyskać obsługę GPU , ustaw cuda=Y podczas konfiguracji i określ wersje CUDA i cuDNN. Jeśli w systemie jest zainstalowanych wiele wersji CUDA lub cuDNN, należy jawnie ustawić wersję zamiast polegać na domyślnej. ./configure tworzy dowiązania symboliczne do bibliotek CUDA systemu - więc jeśli zaktualizujesz ścieżki bibliotek CUDA, ten krok konfiguracji musi zostać uruchomiony ponownie przed budowaniem.

Optymalizacje

W przypadku flag optymalizacji kompilacji wartość domyślna ( -march=native ) optymalizuje wygenerowany kod pod kątem typu procesora komputera. Jeśli jednak budujesz TensorFlow dla innego typu procesora, rozważ bardziej szczegółową flagę optymalizacji. Przykłady można znaleźć w podręczniku GCC .

Wstępnie skonfigurowane konfiguracje

Dostępnych jest kilka wstępnie skonfigurowanych konfiguracji kompilacji, które można dodać do polecenia bazel build , na przykład:

  • --config=mkl dla Intel® MKL-DNN .
  • --config=monolithic konfiguracja dla głównie statycznej, monolitycznej kompilacji.
  • --config=v1 Zbuduj TensorFlow 1.x zamiast 2.x.

Zbuduj pakiet pip

TensorFlow 2.x

Zainstaluj Bazel i użyj bazel build aby utworzyć pakiet TensorFlow 2.x z obsługą tylko procesora :

bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package

Obsługa GPU

Aby zbudować narzędzie do tworzenia pakietów TensorFlow z obsługą GPU:

bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

Aby zbudować starszy pakiet TensorFlow 1.x, użyj opcji --config=v1 :

bazel build --config=v1 [--config=option] //tensorflow/tools/pip_package:build_pip_package

Opcje budowania w Bazel

Aby zapoznać się z opcjami kompilacji, zobacz dokumentację wiersza polecenia Bazel.

Budowanie TensorFlow ze źródła może zużywać dużo pamięci RAM. Jeśli twój system ma ograniczoną pamięć, ogranicz użycie pamięci RAM Bazel za pomocą: --local_ram_resources=2048 .

Oficjalne pakiety TensorFlow są zbudowane przy użyciu łańcucha narzędzi GCC 7.3, który jest zgodny ze standardem pakietu manylinux2010.

Dla GCC 5 i nowszych kompatybilność ze starszym ABI można zbudować za pomocą: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" . Zgodność z ABI zapewnia, że ​​niestandardowe operacje oparte na oficjalnym pakiecie TensorFlow będą nadal działać z pakietem zbudowanym GCC 5.

Zbuduj pakiet

Polecenie bazel build tworzy plik wykonywalny o nazwie build_pip_package - jest to program, który buduje pakiet pip . Uruchom plik wykonywalny, jak pokazano poniżej, aby zbudować pakiet .whl w katalogu /tmp/tensorflow_pkg .

Aby zbudować z gałęzi wydania:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Aby zbudować z poziomu głównego, użyj --nightly_flag aby uzyskać odpowiednie zależności:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg

Chociaż możliwe jest zbudowanie konfiguracji CUDA i innych niż CUDA w tym samym drzewie źródłowym, zaleca się uruchomienie bazel clean podczas przełączania między tymi dwiema konfiguracjami w tym samym drzewie źródłowym.

Zainstaluj pakiet

Nazwa wygenerowanego pliku .whl zależy od wersji TensorFlow i używanej platformy. Użyj pip install aby zainstalować pakiet, na przykład:

pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl

Docker Linux buduje

Obrazy deweloperskie Dockera TensorFlow to łatwy sposób na skonfigurowanie środowiska do budowania pakietów Linuksa ze źródła. Te obrazy zawierają już kod źródłowy i zależności wymagane do zbudowania TensorFlow. Zobacz przewodnik TensorFlow Docker, aby zapoznać się z instalacją i listą dostępnych tagów obrazów .

Tylko procesor

Poniższy przykład używa obrazu :devel do zbudowania pakietu wyłącznie dla procesora z najnowszego kodu źródłowego TensorFlow. Zobacz przewodnik Docker, aby uzyskać dostępne tagi -devel TensorFlow.

Pobierz najnowszy obraz deweloperski i uruchom kontener Docker, którego użyjemy do zbudowania pakietu pip :

docker pull tensorflow/tensorflow:devel
docker run -it -w /tensorflow_src -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel bash

git pull  # within the container, download the latest source code

Powyższe polecenie /tensorflow_src docker run uruchamia powłokę w katalogu /tensorflow_src katalogu głównym drzewa źródłowego. Montuje bieżący katalog hosta w katalogu /mnt kontenera i przekazuje informacje o użytkowniku hosta do kontenera za pośrednictwem zmiennej środowiskowej (używanej do ustawiania uprawnień - Docker może to utrudnić).

Alternatywnie, aby zbudować kopię hosta TensorFlow w kontenerze, zamontuj drzewo źródłowe hosta w katalogu container /tensorflow :

docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
    -e HOST_PERMS="$(id -u):$(id -g)" tensorflow/tensorflow:devel bash

Po skonfigurowaniu drzewa źródłowego utwórz pakiet TensorFlow w środowisku wirtualnym kontenera:

  1. Skonfiguruj kompilację - spowoduje to wyświetlenie monitu o udzielenie odpowiedzi na pytania dotyczące konfiguracji kompilacji.
  2. Zbuduj narzędzie używane do tworzenia pakietu pip .
  3. Uruchom narzędzie, aby utworzyć pakiet pip .
  4. Dostosuj uprawnienia własności pliku poza kontenerem.
./configure  # answer prompts or use defaults

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

Zainstaluj i zweryfikuj pakiet w kontenerze:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(tf.__version__)"

Na twoim hoście pakiet pip TensorFlow znajduje się w bieżącym katalogu (z uprawnieniami użytkownika hosta): ./tensorflow- version - tags .whl

Obsługa GPU

Docker to najłatwiejszy sposób na zbudowanie obsługi GPU dla TensorFlow, ponieważ maszyna hosta wymaga tylko sterownika NVIDIA® ( pakiet NVIDIA® CUDA® Toolkit nie musi być instalowany). Zapoznaj się z podręcznikiem obsługi procesorów GPU i przewodnikiem TensorFlow Docker, aby skonfigurować nvidia-docker (tylko Linux).

Poniższy przykład pobiera obraz TensorFlow :devel-gpu i używa nvidia-docker do uruchomienia kontenera z obsługą GPU. Ten obraz programistyczny jest skonfigurowany do kompilowania pakietu pip z obsługą GPU:

docker pull tensorflow/tensorflow:devel-gpu
docker run --gpus all -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel-gpu bash
git pull  # within the container, download the latest source code

Następnie w wirtualnym środowisku kontenera utwórz pakiet TensorFlow z obsługą GPU:

./configure  # answer prompts or use defaults

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

Zainstaluj i zweryfikuj pakiet w kontenerze i sprawdź, czy jest GPU:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(\"Num GPUs Available: \", len(tf.config.experimental.list_physical_devices('GPU')))"

Testowane konfiguracje kompilacji

Linux

procesor

Wersja Wersja Pythona Kompilator Twórz narzędzia
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Bazel 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 GCC 7.3.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.15.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1
tensorflow-1.14.0 2,7, 3,3-3,7 GCC 4.8 Bazel 0.24.1
tensorflow-1.13.1 2,7, 3,3-3,7 GCC 4.8 Bazel 0.19.2
tensorflow-1.12.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.11.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.10.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0
tensorflow-1.9.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.11.0
tensorflow-1.8.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0
tensorflow-1.7.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0
tensorflow-1.6.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0
tensorflow-1.5.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.8.0
tensorflow-1.4.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.5.4
tensorflow-1.3.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5
tensorflow-1.2.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5
tensorflow-1.1.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2
tensorflow-1.0.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2

GPU

Wersja Wersja Pythona Kompilator Twórz narzędzia cuDNN CUDA
tensorflow-2.3.0 3,5-3,8 GCC 7.3.1 Bazel 3.1.0 7.6 10.1
tensorflow-2.2.0 3,5-3,8 GCC 7.3.1 Bazel 2.0.0 7.6 10.1
tensorflow-2.1.0 2,7, 3,5-3,7 GCC 7.3.1 Bazel 0.27.1 7.6 10.1
tensorflow-2.0.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2,7, 3,3-3,7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2,7, 3,3-3,7 GCC 4.8 Bazel 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2,7, 3,3-3,7 GCC 4.8 Bazel 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.11.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.9.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.11.0 7 9
tensorflow_gpu-1.8.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.10.0 7 9
tensorflow_gpu-1.7.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.6.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.5.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.8.0 7 9
tensorflow_gpu-1.4.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.5.4 6 8
tensorflow_gpu-1.3.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5 6 8
tensorflow_gpu-1.2.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2,7, 3,3-3,6 GCC 4.8 Bazel 0.4.2 5.1 8

System operacyjny Mac

procesor

Wersja Wersja Pythona Kompilator Twórz narzędzia
tensorflow-2.3.0 3,5-3,8 Clang z xcode 10.1 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 Clang z xcode 10.1 Bazel 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 Clang z xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,5-3,7 Clang z xcode 10.1 Bazel 0.27.1
tensorflow-2.0.0 2,7, 3,3-3,7 Clang z xcode 10.1 Bazel 0.26.1
tensorflow-1.15.0 2,7, 3,3-3,7 Clang z xcode 10.1 Bazel 0.26.1
tensorflow-1.14.0 2,7, 3,3-3,7 Clang z xcode Bazel 0.24.1
tensorflow-1.13.1 2,7, 3,3-3,7 Clang z xcode Bazel 0.19.2
tensorflow-1.12.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.15.0
tensorflow-1.11.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.15.0
tensorflow-1.10.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.15.0
tensorflow-1.9.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.11.0
tensorflow-1.8.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.10.1
tensorflow-1.7.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.10.1
tensorflow-1.6.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.8.1
tensorflow-1.5.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.8.1
tensorflow-1.4.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.5.4
tensorflow-1.3.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.5
tensorflow-1.2.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.5
tensorflow-1.1.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.2
tensorflow-1.0.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.2

GPU

Wersja Wersja Pythona Kompilator Twórz narzędzia cuDNN CUDA
tensorflow_gpu-1.1.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2,7, 3,3-3,6 Clang z xcode Bazel 0.4.2 5.1 8