Help protect the Great Barrier Reef with TensorFlow on Kaggle Join Challenge

Aus Quelle erstellen

Bauen Sie ein TensorFlow Pip - Paket von Quelle und installieren es auf Ubuntu Linux und Mac OS. Während die Anweisungen für andere Systeme funktionieren können, wird sie nur für Ubuntu und macOS getestet und unterstützt.

Einrichtung für Linux und macOS

Installieren Sie die folgenden Build-Tools, um Ihre Entwicklungsumgebung zu konfigurieren.

Installieren Sie Python und die TensorFlow-Paketabhängigkeiten

Ubuntu

sudo apt install python3-dev python3-pip

Mac OS

Erfordert Xcode 9.2 oder höher.

Installieren Sie das mit Homebrew Paket - Manager:

/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

Installieren Sie die TensorFlow pip Paketabhängigkeiten (wenn eine virtuelle Umgebung verwenden, lassen Sie die --user Argument):

pip install -U --user pip numpy wheel
pip install -U --user keras_preprocessing --no-deps

Bazel installieren

Um TensorFlow zu erstellen, müssen Sie Bazel installieren. Bazelisk ist eine einfache Möglichkeit , Bazel zu installieren und lädt automatisch die richtige Version für Bazel TensorFlow. Zum leichteren Verwendung, fügt Bazelisk als bazel ausführbare Datei in Ihrem PATH .

Wenn Bazelisk nicht verfügbar ist, können Sie manuell Bazel installieren . Achten Sie darauf , eine unterstützte Bazel Version zu installieren: eine Version zwischen _TF_MIN_BAZEL_VERSION und _TF_MAX_BAZEL_VERSION wie in bestimmten tensorflow/configure.py .

GPU-Unterstützung installieren (optional, nur Linux)

Es gibt keine GPU - Unterstützung für Mac OS.

Lesen Sie die GPU - Unterstützung Handbuch werden die Treiber und zusätzliche Software installieren erforderlich TensorFlow auf einer GPU laufen.

Laden Sie den TensorFlow-Quellcode herunter

Verwenden Sie Git die klonen TensorFlow Repository :

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

Die Repo - Vorgaben an den master - Entwicklungszweig. Sie können auch eine Kasse Release - Zweig zu bauen:

git checkout branch_name  # r2.2, r2.3, etc.

Build konfigurieren

Konfigurieren Sie Ihr System zu bauen , indem Sie das ./configure an der Wurzel Ihrer TensorFlow Quellbaum. Dieses Skript fragt Sie nach dem Speicherort der TensorFlow-Abhängigkeiten und fragt nach zusätzlichen Build-Konfigurationsoptionen (z. B. Compiler-Flags).

./configure

Bei der Verwendung einer virtuellen Umgebung, python configure.py priorisiert Pfade innerhalb der Umgebung, während ./configure priorisiert Pfade außerhalb der Umgebung. In beiden Fällen können Sie die Standardeinstellung ändern.

Probesitzung

Die folgende zeigt ein Probelauf von ./configure - Skript ( die Sitzung kann abweichen):

Einstellmöglichkeiten

GPU-Unterstützung

Für GPU - cuda=Y Unterstützung , Satz cuda=Y während der Konfiguration und geben Sie die Versionen von CUDA und cuDNN. Wenn auf Ihrem System mehrere Versionen von CUDA oder cuDNN installiert sind, legen Sie die Version explizit fest, anstatt sich auf den Standard zu verlassen. ./configure erstellt symbolische Links auf Ihr System CUDA - Bibliotheken-so , wenn Sie Ihre CUDA Bibliothekspfade aktualisieren, dieser Konfigurationsschritt muss erneut ausgeführt wird vor dem Bau.

Optimierungen

Zur Erstellung Optimierungsflags, der Standard ( -march=native ) optimiert den generierten Code für CPU - Typen Ihrer Maschine. Wenn Sie jedoch TensorFlow für einen anderen CPU-Typ erstellen, sollten Sie ein spezifischeres Optimierungsflag in Betracht ziehen. Siehe das GCC Handbuch für Beispiele.

Vorkonfigurierte Konfigurationen

Es gibt einige vorkonfigurierte Build - Konfigurationen zur Verfügung , die auf den hinzugefügt werden kann bazel build - Befehl, zum Beispiel:

  • --config=dbg -Build mit Debug - Informationen. Siehe CONTRIBUTING.md für weitere Einzelheiten.
  • --config=mkl -Unterstützung für den Intel® MKL-DNN .
  • --config=monolithic -Konfiguration für einen meist statischen, monolithisch zu bauen.
  • --config=v1 -Build TensorFlow 1.x statt 2.x.

Baue das Pip-Paket

TensorFlow 2.x

Installieren Sie bazel build Bazel und Verwendung bazel build das TensorFlow 2.x - Paket mit CPU-only - Unterstützung zu schaffen:

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

GPU-Unterstützung

So erstellen Sie einen TensorFlow-Paketersteller mit GPU-Unterstützung:

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

TensorFlow 1.x

So erstellen Sie ein älteres TensorFlow 1.x - Paket, verwenden Sie die --config=v1 Option:

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

Bazel-Build-Optionen

Siehe die Bazel Befehlszeilenreferenz für Build - Optionen .

Das Erstellen von TensorFlow aus der Quelle kann viel RAM verbrauchen. Wenn Ihr System Speicher-constrained, Grenze Bazel der RAM - Nutzung mit: --local_ram_resources=2048 .

Die offizielle TensorFlow Pakete sind mit einem GCC 7.3 Toolchain , dass erfüllt die manylinux2010 Paket Standard gebaut.

Für GCC 5 und höher, die Kompatibilität mit älterem ABI kann mit gebaut werden: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" . Die ABI-Kompatibilität stellt sicher, dass benutzerdefinierte Operationen, die mit dem offiziellen TensorFlow-Paket erstellt wurden, weiterhin mit dem von GCC 5 erstellten Paket funktionieren.

Bauen Sie das Paket zusammen

Der bazel build Befehl erstellt eine ausführbare Datei namens build_pip_package -Dies ist das Programm, das die baut pip - Paket. Führen Sie die ausführbare wie unten gezeigt , um ein bauen .whl Paket im /tmp/tensorflow_pkg Verzeichnis.

So erstellen Sie aus einem Release-Zweig:

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

Um Build vom Master, verwendet --nightly_flag , um die richtigen Abhängigkeiten zu erhalten:

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

Obwohl es möglich ist , sowohl CUDA und nicht-CUDA - Konfigurationen unter dem gleichen Quellbaum zu bauen, ist es empfehlenswert , läuft bazel clean , wenn zwischen diesen beiden Konfigurationen in dem gleichen Quellbaum wechseln.

Installieren Sie das Paket

Der Dateiname der erzeugten .whl Datei hängt von der TensorFlow Version und Ihrer Plattform. Verwenden pip install Sie das Paket, zum Beispiel zu installieren:

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

Docker Linux-Builds

Die Docker-Entwicklungsimages von TensorFlow sind eine einfache Möglichkeit, eine Umgebung zum Erstellen von Linux-Paketen aus dem Quellcode einzurichten. Diese Images enthalten bereits den Quellcode und die Abhängigkeiten, die zum Erstellen von TensorFlow erforderlich sind. Siehe die TensorFlow Docker Leitfaden für die Installation und die Liste der verfügbaren Image - Tags .

Nur CPU

Das folgende Beispiel verwendet das :devel Bild ein CPU-Paket nur aus dem aktuellen TensorFlow Quellcode zu bauen. Siehe die Docker Führung verfügbaren TensorFlow -devel Tags.

Laden Sie die neueste Entwicklung Bild und starten Sie einen Docker Container , dass wir verwenden , um das Pip - Paket zu bauen:

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

Der obige docker run startet eine Schale in der /tensorflow_src verzeichnis der Wurzel des Quellbaums. Es bringt aktuelles Verzeichnis des Host in den Behälter /mnt Verzeichnis, und übergibt die Informationen des Host - Benutzer in die Behälter durch eine Umgebungsvariable (verwendet , um Berechtigungen festlegen-Docker können diese knifflige machen).

Alternativ können Sie eine Host - Kopie von TensorFlow innerhalb eines Containers, montieren Sie den Host - Quellbaum an dem Behälter bauen /tensorflow Verzeichnis:

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

Erstellen Sie bei eingerichtetem Quellbaum das TensorFlow-Paket in der virtuellen Umgebung des Containers:

  1. Build konfigurieren – Dies fordert den Benutzer auf, Fragen zur Build-Konfiguration zu beantworten.
  2. Bauen Sie das Werkzeug benutzt , um das Pip - Paket zu erstellen.
  3. Führen Sie das Tool das Pip - Paket zu erstellen.
  4. Passen Sie die Eigentumsrechte der Datei für außerhalb des Containers an.
./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

Installieren und überprüfen Sie das Paket im Container:

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__)"

Auf dem Host - Rechner ist das TensorFlow Pip - Paket im aktuellen Verzeichnis (mit Host - Benutzerberechtigungen): ./tensorflow- version - tags .whl

GPU-Unterstützung

Docker ist der einfachste Weg für TensorFlow zu bauen GPU - Unterstützung , da die Host - Maschine erfordert nur den NVIDIA® Treiber (der NVIDIA® CUDA® Toolkit muss nicht installiert werden). Sehen Sie sich die GPU - Unterstützung Führung und die TensorFlow Docker Leitfaden zur Einrichtung nvidia-Docker (nur Linux).

Das folgende Beispiel lädt die TensorFlow :devel-gpu Bild und Anwendungen nvidia-docker den GPU-fähigen Behälter laufen. Diese Entwicklung Bild konfiguriert ist, ein Paket mit pip GPU Unterstützung zu erstellen:

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

Erstellen Sie dann in der virtuellen Umgebung des Containers das TensorFlow-Paket mit GPU-Unterstützung:

./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

Installieren und überprüfen Sie das Paket im Container und suchen Sie nach einer 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.list_physical_devices('GPU')))"

Getestete Build-Konfigurationen

Linux

Zentralprozessor

Ausführung Python-Version Compiler Build-Tools
tensorflow-2.6.0 3,6-3,9 GCC 7.3.1 Bazel 3.7.2
Tensorflow-2.5.0 3,6-3,9 GCC 7.3.1 Bazel 3.7.2
tensorflow-2.4.0 3,6-3,8 GCC 7.3.1 Bazel 3.1.0
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

Ausführung Python-Version Compiler Build-Tools cuDNN CUDA
tensorflow-2.6.0 3,6-3,9 GCC 7.3.1 Bazel 3.7.2 8.1 11.2
Tensorflow-2.5.0 3,6-3,9 GCC 7.3.1 Bazel 3.7.2 8.1 11.2
tensorflow-2.4.0 3,6-3,8 GCC 7.3.1 Bazel 3.1.0 8.0 11,0
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

Mac OS

Zentralprozessor

Ausführung Python-Version Compiler Build-Tools
tensorflow-2.6.0 3,6-3,9 Klingeln von xcode 10.11 Bazel 3.7.2
Tensorflow-2.5.0 3,6-3,9 Klingeln von xcode 10.11 Bazel 3.7.2
tensorflow-2.4.0 3,6-3,8 Klingeln von xcode 10.3 Bazel 3.1.0
tensorflow-2.3.0 3,5-3,8 Klingeln von xcode 10.1 Bazel 3.1.0
Tensorflow-2.2.0 3,5-3,8 Klingeln von xcode 10.1 Bazel 2.0.0
tensorflow-2.1.0 2,7, 3,5-3,7 Klingeln von xcode 10.1 Bazel 0.27.1
Tensorflow-2.0.0 2,7, 3,5-3,7 Klingeln von xcode 10.1 Bazel 0.27.1
Tensorflow-2.0.0 2,7, 3,3-3,7 Klingeln von xcode 10.1 Bazel 0.26.1
Tensorflow-1.15.0 2,7, 3,3-3,7 Klingeln von xcode 10.1 Bazel 0.26.1
tensorflow-1.14.0 2,7, 3,3-3,7 Klingeln von xcode Bazel 0.24.1
Tensorflow-1.13.1 2,7, 3,3-3,7 Klingeln von xcode Bazel 0.19.2
Tensorflow-1.12.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.15.0
Tensorflow-1.11.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.15.0
Tensorflow-1.10.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.15.0
Tensorflow-1.9.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.11.0
tensorflow-1.8.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.10.1
tensorflow-1.7.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.10.1
tensorflow-1.6.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.8.1
tensorflow-1.5.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.8.1
tensorflow-1.4.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.5.4
tensorflow-1.3.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.5
tensorflow-1.2.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.5
tensorflow-1.1.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.2
Tensorflow-1.0.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.2

GPU

Ausführung Python-Version Compiler Build-Tools cuDNN CUDA
tensorflow_gpu-1.1.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2,7, 3,3-3,6 Klingeln von xcode Bazel 0.4.2 5.1 8