TensorFlow

TensorFlow je open-source platforma pro strojové učení vytvořená v Google. Podporuje obsáhlé učení a obecné číselné výpočty na procesorech, GPU a clusterech GPU. Podléhá podmínkám licence Apache 2,0.

Databricks runtime pro Machine Learning zahrnuje TensorFlow a TensorBoard, takže můžete tyto knihovny použít bez nutnosti instalovat balíčky. Verzi TensorFlow nainstalovanou ve verzi Databricks Runtime ML, kterou používáte, najdete v poznámkách k verzi.

V následujících částech najdete pokyny k instalaci TensorFlow na Azure Databricks a zadání příkladu pro spouštění programů TensorFlow.

Poznámka

Tato příručka není vyčerpávajícím průvodcem pro TensorFlow. Podívejte se na Web TensorFlow.

Nainstalovat TensorFlow

V této části najdete pokyny k instalaci nebo downgradování TensorFlow v Databricks runtime pro Machine Learning a Databricks runtime, abyste si mohli vyzkoušet nejnovější funkce v TensorFlow. Kvůli závislostem balíčku může docházet k problémům s kompatibilitou s dalšími předinstalovanými balíčky. Po instalaci můžete nainstalovanou verzi ověřit spuštěním následujícího příkazu v poznámkovém bloku Python:

import tensorflow as tf
print([tf.__version__, tf.test.is_gpu_available()])

Instalace TensorFlow 2,4 na Databricks Runtime 7,6

Azure Databricks doporučuje instalovat TensorFlow pomocí příkazů% PIP a% conda Magic.

Oficiální verze TensorFlow 2,4 je postavená na CUDA 11,0, což není kompatibilní s CUDA 10,1 nainstalované v Databricks Runtime 7,0 ML a vyšší. Azure Databricks poskytuje vlastní Build TensorFlow 2.4.0, který je kompatibilní s CUDA 10,1. K instalaci použijte níže uvedený příkaz GPU.

Včetně

%pip install tensorflow-cpu==2.4.*

Procesor

%pip install "https://databricks-prod-cloudfront.cloud.databricks.com/artifacts/tensorflow/runtime-7.x/tensorflow-2.4.0-cp37-cp37m-linux_x86_64.whl"

Instalace TensorFlow 2,3 na Databricks Runtime 7,2

Azure Databricks doporučuje instalovat TensorFlow pomocí příkazů% PIP a% conda Magic. V poznámkovém bloku spusťte:

%pip install tensorflow-cpu==2.3.*

Instalace TensorFlow 1,15 na Databricks Runtime 7,2

V poznámkovém bloku spusťte:

%pip install tensorflow-cpu==1.15.*

Instalace TensorFlow 2,3 na Databricks Runtime 7,2 ML

V poznámkovém bloku spusťte:

Včetně

%pip install tensorflow-cpu==2.3.*

Procesor

%pip install tensorflow-gpu==2.3.*

Instalace TensorFlow 1,15 na Databricks Runtime 7,2 ML

V poznámkovém bloku spusťte:

Včetně

%pip install tensorflow-cpu==1.15.*

Procesor

Oficiální verze TensorFlow 1,15 je postavená na CUDA 10,0, což není kompatibilní s CUDA 10,1 nainstalované v Databricks Runtime 7,0 ML a vyšší. Azure Databricks poskytuje vlastní Build TensorFlow 1.15.3, který je compatbile s CUDA 10,1. K její instalaci použijte následující příkaz.

%pip install https://databricks-prod-cloudfront.cloud.databricks.com/artifacts/tensorflow/runtime-7.x/tensorflow-1.15.3-cp37-cp37m-linux_x86_64.whl

Nainstalujte TensorFlow 2,3 na Databricks Runtime 5,5 LTS pro Machine Learning

Inicializační skript pro clustery na:

Včetně

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda activate /databricks/python

pip install --upgrade pip
pip install tensorflow-cpu==2.3.* setuptools==41.* grpcio==1.24.*

Procesor

#!/bin/bash

set -e

apt-get remove -y --auto-remove cuda-toolkit-10-0
apt-get update
apt-get install -y --no-install-recommends --allow-downgrades \
  libnccl2=2.4.8-1+cuda10.1 \
  libnccl-dev=2.4.8-1+cuda10.1 \
  cuda-libraries-10-1 \
  libcudnn7=7.6.4.38-1+cuda10.1 \
  libcudnn7-dev=7.6.4.38-1+cuda10.1 \
  libcublas10=10.2.1.243-1 \
  libcublas-dev=10.2.1.243-1 \
  cuda-libraries-dev-10-1 \
  cuda-compiler-10-1
ln -sfn cuda-10.1 /usr/local/cuda

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda activate /databricks/python

pip install --upgrade pip
pip install tensorflow==2.3.* setuptools==41.* grpcio==1.24.*

Instalace TensorFlow 2,3 na Databricks Runtime 5,5 LTS

Inicializační skript pro clustery na:

Včetně

#!/bin/bash

set -e

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-cpu==2.3.* setuptools==41.* pyasn1==0.4.6
/databricks/python/bin/pip uninstall -y numpy
rm -rf /databricks/python/lib/python3.5/site-packages/numpy
/databricks/python/bin/pip install numpy==1.18.4

Procesor

#!/bin/bash

set -e

apt-get update
apt-get install -y gnupg-curl

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.1.243-1_amd64.deb
dpkg -i cuda-repo-ubuntu1604_10.1.243-1_amd64.deb
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

apt-get update
apt-get install -y --no-install-recommends --allow-downgrades \
  libnccl2=2.4.8-1+cuda10.1 \
  libnccl-dev=2.4.8-1+cuda10.1 \
  cuda-libraries-10-1 \
  libcudnn7=7.6.4.38-1+cuda10.1 \
  libcudnn7-dev=7.6.4.38-1+cuda10.1 \
  libcublas10=10.2.1.243-1 \
  libcublas-dev=10.2.1.243-1 \
  cuda-libraries-dev-10-1 \
  cuda-compiler-10-1
ln -sfn cuda-10.1 /usr/local/cuda

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow==2.3.* setuptools==41.*
/databricks/python/bin/pip uninstall -y numpy
rm -rf /databricks/python/lib/python3.5/site-packages/numpy
/databricks/python/bin/pip install numpy==1.18.4

TensorFlow 2 – známé problémy

TensorFlow 2 má známou nekompatibilitu s výběrem Pythonu. K tomu může dojít, pokud používáte PySpark, HorovodRunner, Hyperoptnebo jakékoli jiné balíčky, které závisejí na výběru. Alternativním řešením je explicitně importovat TensorFlow moduly do vašich funkcí. Tady je příklad:

import tensorflow as tf

def bad_func(_):
  tf.keras.Sequential()

# You might see an error.
sc.parallelize(range(0)).foreach(bad_func)

def good_func(_):
  import tensorflow as tf
  tf.keras.some_func

# No error.
sc.parallelize(range(0)).foreach(good_func)

Nainstalujte TensorFlow 1,15 na Databricks runtime 5,5 LTS pro Machine Learning

Azure Databricks doporučuje instalovat TensorFlow 1,15 na Databricks Runtime 5,5 LTS pro Machine Learning pomocí skriptu init.

Inicializační skript pro clustery na:

Včetně

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda install -y conda=4.6
conda activate /databricks/python

conda install -y tensorflow-mkl=1.15 setuptools=41

Procesor

#!/bin/bash

set -e

/databricks/python/bin/python -V
. /databricks/conda/etc/profile.d/conda.sh
conda install -y conda=4.6
conda activate /databricks/python

conda install -y tensorflow-gpu=1.15 setuptools=41

Instalace TensorFlow 1,15 na Databricks Runtime 5,5 LTS

Azure Databricks doporučuje instalovat TensorFlow 1,15 na Databricks Runtime 5,5 LTS pomocí skriptu init.

Inicializační skript pro clustery na:

Včetně

#!/bin/bash

set -e

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-cpu==1.15.* setuptools==41.*

Procesor

#!/bin/bash

set -e

apt-get update
apt-get install -y gnupg-curl

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

apt-get update
apt-get install -y --no-install-recommends cuda-libraries-10-0 libcudnn7=7.4.2.24-1+cuda10.0

/databricks/python/bin/python -V
/databricks/python/bin/pip install tensorflow-gpu==1.15.* setuptools==41.*

TensorBoard

TensorBoard je sada nástrojů pro vizualizaci pro ladění, optimalizaci a porozumění TensorFlow, PyTorch a dalším programům machine learningu.

Použití TensorBoard

Použít TensorBoard na Databricks Runtime 7,2 a vyšší

Spuštění TensorBoard v Azure Databricks se neliší od spuštění na poznámkovém bloku Jupyter na místním počítači.

  1. Načtěte %tensorboard příkaz Magic a definujte adresář protokolu.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. Vyvolat %tensorboard příkaz Magic.

    %tensorboard --logdir $experiment_log_dir
    

    Spustí se server TensorBoard a zobrazí se uživatelské rozhraní vložené do poznámkového bloku. Poskytuje také odkaz na otevření TensorBoard na nové kartě.

    Na následujícím snímku obrazovky vidíte, že uživatelské rozhraní TensorBoard bylo spuštěno v zaplněné adresáři protokolu.

    Uživatelské rozhraní TensorBoard bylo spuštěno v zaplněné adresáři protokolu

TensorBoard můžete také spustit přímo pomocí modulu poznámkového bloku TensorBoard.

from tensorboard import notebook
notebook.start("--logdir {}".format(experiment_log_dir))

Použít TensorBoard na Databricks Runtime 7,1 a nižší

Pokud chcete začít TensorBoard z vašeho poznámkového bloku, použijte dbutils.tensorboard nástroj.

dbutils.tensorboard.start("/tmp/tensorflow_log_dir")

Tento příkaz zobrazí odkaz, který po kliknutí otevře TensorBoard na nové kartě.

Když se toto rozhraní API začne používat TensorBoard, bude se dál spouštět, dokud ho nezastavíte dbutils.tensorboard.stop() nebo vypnete cluster.

Poznámka

Pokud k vašemu clusteru připojíte TensorFlow jako knihovnu Azure Databricks, možná budete muset před spuštěním TensorBoard znovu připojit svůj Poznámkový blok.

Protokoly a adresáře TensorBoard

TensorBoard vizualizuje programy machine learningu čtením protokolů generovaných zpětná voláními TensorBoard a funkcemi v TensorBoard nebo PyTorch. Pokud chcete generovat protokoly pro jiné knihovny strojového učení, můžete přímo zapisovat protokoly pomocí zapisovacích souborů TensorFlow (podívejte se na modul: TF. Summary pro TensorFlow 2. x a podívejte se na modul: TF. kompatibility. v1. Summary pro starší rozhraní API v TensorFlow 1. x).

Aby bylo zajištěno, že budou protokoly experimentů spolehlivě uloženy, Azure Databricks doporučuje zapisovat protokoly do DBFS (tzn. do adresáře protokolu /dbfs/ ), nikoli na dočasný systém souborů clusteru. Pro každý experiment spusťte TensorBoard v jedinečném adresáři. Pro každé spuštění kódu strojového učení v experimentu, který generuje protokoly, nastavte zpětné volání TensorBoard nebo modul pro zápis do podadresáře adresáře experiment. Tímto způsobem budou data v uživatelském rozhraní TensorBoard rozdělena do spuštění.

Přečtěte si oficiální dokumentaci k TensorBoard , kde můžete začít používat TensorBoard k protokolování informací pro váš program Machine Learning.

Správa procesů TensorBoard

Procesy TensorBoard spuštěné v rámci Azure Databricks poznámkového bloku nejsou ukončeny, když je Poznámkový blok odpojený nebo je REPL restart (například při vymazání stavu poznámkového bloku). Pokud chcete ručně ukončit proces TensorBoard, pošlete mu signál ukončení pomocí %sh kill -15 pid . Nesprávně Ukončené procesy TensorBoard můžou být poškozené notebook.list() .

Pokud chcete zobrazit seznam aktuálně spuštěných serverů TensorBoard v clusteru, spusťte notebook.list() z modulu poznámkového bloku TensorBoard jejich odpovídající adresáře protokolů a ID procesů.

Známé problémy

  • Vložené uživatelské rozhraní TensorBoard je uvnitř prvku IFRAME. Funkce zabezpečení prohlížeče zabraňují externím odkazům v uživatelském rozhraní v práci, pokud odkaz neotevřete na nové kartě.
  • --window_titleMožnost TensorBoard je přepsána při Azure Databricks.
  • Ve výchozím nastavení TensorBoard prohledává rozsah portů pro výběr portu, na který se má naslouchat. Pokud je v clusteru spuštěno příliš mnoho procesů TensorBoard, nemusí být k dispozici všechny porty v rozsahu portů. Toto omezení můžete obejít tak, že zadáte číslo portu s --port argumentem. Zadaný port by měl být mezi 6006 a 6106.
  • Aby odkazy na stažení fungovaly, měli byste na kartě otevřít TensorBoard.
  • Při použití TensorBoard 1.15.0 je karta projektor prázdná. Alternativní řešení: Pokud chcete na stránce projektoru přejít přímo, můžete #projector v adrese URL nahradit data/plugin/projector/projector_binary.html .
  • TensorBoard 2.4.0 má známý problém , který může při upgradu ovlivnit TensorBoard vykreslování.

Použití knihovny TensorFlow na jednom uzlu

Pokud chcete testovat a migrovat TensorFlow pracovní postupy pro jeden počítač, můžete začít s clusterem pouze ovladače na Azure Databricks nastavením počtu pracovních procesů na nulu. I když Apache Spark v rámci tohoto nastavení není funkční, je to cenově výhodné způsob, jak spouštět pracovní postupy TensorFlow na jednom počítači. Následující Poznámkový blok ukazuje, jak můžete spustit TensorFlow (1. x a 2. x) s monitorováním TensorBoard na clusteru pouze s ovladači.

Notebook TensorFlow 1.15/2. x

Získat poznámkový blok