TensorFlow

TensorFlow, Google tarafından oluşturulan makine öğrenmesi için açık kaynaklı bir çerçevedir. CPU'lar, GPU'lar ve GPU kümeleri üzerinde derin öğrenme ve genel sayısal hesaplamaları destekler. Apache Lisansı 2.0'ın hüküm ve koşullarına bağlıdır.

Databricks Runtime için Machine Learning, herhangi bir paket yüklemeden bu kitaplıkları kullanabileceğiniz tensorFlow ve TensorBoard'u içerir. Kullanmakta olduğunu Databricks Runtime ML sürümüne yüklenmiş TensorFlow sürümü için sürüm notlarına bakın.

Aşağıdaki bölümlerde TensorFlow'u Azure Databricks ve TensorFlow programlarını çalıştırma örneği vemektedir.

Not

Bu kılavuz TensorFlow ile ilgili kapsamlı bir kılavuz değildir. TensorFlow web sitesine bakın.

TensorFlow yükleme

Bu bölümde, TensorFlow'daki en son özellikleri deneyebilirsiniz Databricks Runtime ve Machine Learning Databricks Runtime için TensorFlow'u Databricks Runtime'a yüklemek veya eski sürüme düşürme yönergelerini sağlar. Paket bağımlılıkları nedeniyle, diğer önceden yüklenmiş paketlerle uyumluluk sorunları olabilir. Yüklemeden sonra, python not defterinde aşağıdaki komutu yürüterek yüklü sürümü doğruabilirsiniz:

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

TensorFlow 2.4'ü Databricks Runtime 7.6'ya yükleme

Azure Databricks % pip ve %conda magic komutları kullanarak TensorFlow'u yüklemenizi önermektedir.

Resmi TensorFlow 2.4 sürümü, Databricks Runtime 7.0 ML ve üzeri sürümlerde yüklü CUDA 10.1 ile uyumlu olan CUDA 11.0 ile uyumlu değildir. Azure Databricks, CUDA 10.1 ile uyumlu özel bir TensorFlow 2.4.0 derlemesi sağlar. Yüklemek için aşağıdaki GPU komutunu kullanın.

Cpu

%pip install tensorflow-cpu==2.4.*

Gpu

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

TensorFlow 2.3'ü Databricks Runtime 7.2'ye yükleme

Azure Databricks % pip ve %conda magic komutları kullanarak TensorFlow'u yüklemenizi önermektedir. Not defterinde şunları çalıştırın:

%pip install tensorflow-cpu==2.3.*

TensorFlow 1.15'i Databricks Runtime 7.2'ye yükleme

Not defterinde şunları çalıştırın:

%pip install tensorflow-cpu==1.15.*

TensorFlow 2.3'ü Databricks Runtime 7.2 ML'ye yükleme

Not defterinde şunları çalıştırın:

Cpu

%pip install tensorflow-cpu==2.3.*

Gpu

%pip install tensorflow-gpu==2.3.*

TensorFlow 1.15'i Databricks Runtime 7.2 ML'ye yükleme

Not defterinde şunları çalıştırın:

Cpu

%pip install tensorflow-cpu==1.15.*

Gpu

Resmi TensorFlow 1.15 sürümü, Databricks Runtime 7.0 ML ve üzeri sürümlerde yüklü CUDA 10.1 ile uyumlu olan CUDA 10.0 sürümüne göre 10.0'a göre 10.15'e göre inşa edilmiştir. Azure Databricks TensorFlow 1.15.3'ten cuDA 10.1 ile uyumluluk sağlayan özel bir derleme sağlar. Yüklemek için aşağıdaki komutu kullanın.

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

TensorFlow 2.3'ü Databricks Runtime için 5.5 LTS üzerine Machine Learning

Kümeler için init betiği:

Cpu

#!/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.*

Gpu

#!/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.*

TensorFlow 2.3'ü Databricks Runtime 5.5 LTS'ye yükleme

Kümeler için init betiği:

Cpu

#!/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

Gpu

#!/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 bilinen sorunlar

TensorFlow 2'nin Python pickling ile bilinen bir uyumsuzluğu vardır. PySpark, HorovodRunner, Hyperoptveya pickling'e bağlı diğer paketleri kullanıyorsanız bu sorunla karşılaşabilirsiniz. Geçici çözüm, TensorFlow modüllerini işlevlerinizin içine açıkça içeri aktarmadır. Aşağıda bir örnek verilmiştir:

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)

TensorFlow 1.15'i Databricks Runtime için 5.5 LTS üzerine Machine Learning

Azure Databricks bir init betiği kullanarak tensorFlow 1.15'i Databricks Runtime için Machine Learning 5.5 LTS üzerine yüklemenizi öneririz.

Kümeler için init betiği:

Cpu

#!/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

Gpu

#!/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

TensorFlow 1.15'i Databricks Runtime 5.5 LTS'ye yükleme

Azure Databricks, init betiği kullanarak TensorFlow 1.15'i Databricks Runtime 5.5 LTS üzerine yüklemenizi önerer.

Kümeler için init betiği:

Cpu

#!/bin/bash

set -e

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

Gpu

#!/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; TensorFlow, PyTorch ve diğer makine öğrenmesi programlarında hata ayıklama, iyileştirme ve anlama için bir görselleştirme araçları paketidir.

TensorBoard’u kullanma

7.2 ve üzeri Databricks Runtime TensorBoard kullanma

TensorBoard'u Azure Databricks yerel bilgisayarınızda Jupyter notebook'ta başlatmadan farklı bir şey yoktur.

  1. Magic %tensorboard komutunu yükleme ve günlük dizininizi tanımlama.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. Magic %tensorboard komutunu çağırma.

    %tensorboard --logdir $experiment_log_dir
    

    TensorBoard sunucusu başlatılır ve kullanıcı arabirimini not defterinde satır içinde görüntüler. Ayrıca TensorBoard'i yeni bir sekmede açmak için bir bağlantı sağlar.

    Aşağıdaki ekran görüntüsünde doldurulmuş bir günlük dizininde başlayan TensorBoard kullanıcı arabirimini görebilirsiniz.

    Doldurulmuş günlük dizininde TensorBoard kullanıcı arabirimi başlatıldı

TensorBoard'un not defteri modülünü doğrudan kullanarak da TensorBoard'ı başlatabilirsiniz.

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

7.1 ve Databricks Runtime TensorBoard kullanma

Not defteriniz ile TensorBoard'a başlamak için yardımcı dbutils.tensorboard programını kullanın.

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

Bu komut, tıklandıktan sonra TensorBoard'u yeni bir sekmede açan bir bağlantı görüntüler.

Bu API TensorBoard'ı kullanmaya başlandı, siz durdurana veya kümenizi dbutils.tensorboard.stop() kapatana kadar çalışmaya devam eder.

Not

TensorFlow'i kümenize bir Azure Databricks kitaplığı olarak iliştirersiniz, TensorBoard'a başlamadan önce not defterinizi yeniden eklemeniz gerekir.

TensorBoard günlükleri ve dizinleri

TensorBoard, TensorBoard veya PyTorch'ta TensorBoard geri çağırmaları ve işlevleri tarafından oluşturulan günlükleri okuyarak makine öğrenmesi programlarınızı görselleştirmektedir. Diğer makine öğrenmesi kitaplıklarına yönelik günlükler oluşturmak için, TensorFlow dosya yazıcılarını kullanarak günlükleri doğrudan yazabilirsiniz (bkz. TensorFlow 2.x için modül: tf.summary ve bkz. TensorFlow 1.x'te eski API için modül: tf.compat.v1.summary).

Deneme günlüklerinin güvenilir bir şekilde depolanmış olduğundan emin olmak için Azure Databricks kısa ömürlü küme dosya sistemi yerine DBFS'ye (yani altında bir günlük /dbfs/ dizini) yazmanızı öneririz. Her deneme için TensorBoard'i benzersiz bir dizinde başlatabilirsiniz. Denemede günlük oluşturan makine öğrenmesi kodunuzun her çalıştırması için TensorBoard geri çağırma veya dosya yazıcısını deneme dizininin alt dizinine yazacak şekilde ayarlayın. Bu şekilde TensorBoard kullanıcı arabiriminde veriler çalıştırmalara ayrılır.

Makine öğrenmesi programınıza ilişkin bilgileri günlüğe almak için TensorBoard kullanmaya başlamaya yönelik resmi TensorBoard belgelerini okuyun.

TensorBoard süreçlerini yönetme

Azure Databricks not defteri içinde başlayan TensorBoard işlemleri, not defteri ayrılırken veya REPL yeniden başlatıldığında sonlandırılmaz (örneğin, not defterinin durumunu temizledikten sonra). Bir TensorBoard işlemini el ile sonlandırmak için kullanarak bir sonlandırma sinyali %sh kill -15 pid gönderin. Hatalı şekilde son bulaştırmış TensorBoard işlemleri bozuk notebook.list() olabilir.

Kümeniz üzerinde o anda çalışan TensorBoard sunucularını ilgili günlük dizinleri ve işlem kimlikleriyle birlikte listeleyebilirsiniz. notebook.list() TensorBoard not defteri modülünden çalıştırın.

Bilinen sorunlar

  • Satır içi TensorBoard kullanıcı arabirimi bir iframe içindedir. Tarayıcı güvenlik özellikleri, bağlantıyı yeni bir sekmede açmadıkça kullanıcı arabirimi içindeki dış bağlantıların çalışmasını önler.
  • --window_titleTensorBoard seçeneği, Azure Databricks.
  • TensorBoard varsayılan olarak dinleme için bir bağlantı noktası seçmek için bir bağlantı noktası aralığını tarar. Kümede çalışan çok fazla TensorBoard işlemi varsa, bağlantı noktası aralığındaki tüm bağlantı noktaları kullanılamıyor olabilir. Bu sınırlamaya çözüm olarak bağımsız değişkeniyle bir bağlantı noktası numarası --port belirterek çalışabilirsiniz. Belirtilen bağlantı noktası 6006 ile 6106 arasında olabilir.
  • İndirme bağlantılarının çalışması için TensorBoard'i bir sekmede açabilirsiniz.
  • TensorBoard 1.15.0 kullanırken Projektör sekmesi boştur. Geçici bir çözüm olarak, yansıtıcı sayfasını doğrudan ziyaret etmek için #projector URL'de yerine data/plugin/projector/projector_binary.html yazın.
  • TensorBoard 2.4.0'ın yükseltilirse TensorBoard işlemesini etkileyebilecek bilinen bir sorunu var.

Tek bir düğümde TensorFlow kullanma

Tek makineli TensorFlow iş akışlarını test etmek ve geçirmek için, çalışan sayısını sıfır olarak ayar Azure Databricks sürücü kümesiyle başlayabilirsiniz. Bu Apache Spark çalışmasa da, tek makineli TensorFlow iş akışlarını çalıştırmanın uygun maliyetli bir yolu değildir. Aşağıdaki not defteri, TensorBoard izlemesi ile yalnızca sürücü kümesinde TensorFlow'ı (1.x ve 2.x) nasıl çalıştırabilirsiniz?

TensorFlow 1.15/2.x not defteri

Not defterini alma