TensorFlow

O TensorFlow é um quadro de código aberto para machine learning criado pela Google. Apoia a aprendizagem profunda e os cálculos numéricos gerais em CPUs, GPUs e clusters de GPUs. Está sujeito aos termos e condições da Licença Apache 2.0.

As seguintes secções fornecem orientação sobre a instalação do TensorFlow em Databricks Azure e dão um exemplo de execução dos programas TensorFlow.

Nota

Este guia não é um guia abrangente sobre o TensorFlow. Consulte o site do TensorFlow.

Versões do TensorFlow incluídas no Databricks Runtime ML

Databricks Runtime for Machine Learning inclui TensorFlow e TensorBoard para que possa utilizar estas bibliotecas sem instalar quaisquer pacotes. Aqui estão as versões TensorFlow incluídas:

Versão ML de runtime de databricks Versão TensorFlow
7.3 - 7.4 2.3.0
7.0 - 7.2 2.2.0
6.3 - 6.6 1.15.0

Instalar o TensorFlow

Esta secção fornece instruções para instalar ou desclassificar o TensorFlow em Databricks Runtime for Machine Learning and Databricks Runtime, para que possa experimentar as funcionalidades mais recentes no TensorFlow. Devido às dependências dos pacotes, pode haver problemas de compatibilidade com outros pacotes pré-instalados. Após a instalação, pode verificar a versão instalada executando o seguinte comando num caderno Python:

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

Instalar TensorFlow 2.3 em Databricks Prazo de execução 7.2

A Azure Databricks recomenda a instalação do TensorFlow utilizando comandos mágicos %pip e %conda. Num caderno, corra:

%pip install tensorflow-cpu==2.3.*

Instalar TensorFlow 1.15 em Databricks Runtime 7.2

Num caderno, corra:

%pip install tensorflow-cpu==1.15.*

Instalar TensorFlow 2.3 em Databricks Tempo de execução 7.2 ML

Num caderno, corra:

Cpu

%pip install tensorflow-cpu==2.3.*

Gpu

%pip install tensorflow-gpu==2.3.*

Instalar TensorFlow 1.15 em Databricks Runtime 7.2 ML

Num caderno, corra:

Cpu

%pip install tensorflow-cpu==1.15.*

Gpu

A versão oficial do TensorFlow 1.15 foi construída contra o CUDA 10.0, o que não é compatível com o CUDA 10.1 instalado em Databricks Runtime 7.0 ML ou superior. A Azure Databricks fornece uma construção personalizada de TensorFlow 1.15.3 que é compatbile com CUDA 10.1. Utilize o comando abaixo para o instalar.

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

Instale o TensorFlow 2.3 em Databricks Runtime 5.5 LTS ML

Roteiro init para clusters em:

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

Instale o TensorFlow 2.3 em Databricks Runtime 5.5 LTS

Roteiro init para clusters em:

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 problemas conhecidos

O TensorFlow 2 tem uma incompatibilidade conhecida com a pickling Python. Poderá encontrá-lo se utilizar PySpark, HorovodRunner, Hyperoptou quaisquer outros pacotes que dependam do pickling. A solução é importar explicitamente os módulos TensorFlow dentro das suas funções. Segue-se um exemplo:

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)

Instalar TensorFlow 1.15 em Databricks Runtime 5.5 LTS ML

A Azure Databricks recomenda a instalação do TensorFlow 1.15 em Databricks Runtime 5.5 LTS ML utilizando um script init.

Roteiro init para clusters em:

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

Instalar TensorFlow 1.15 em Databricks Runtime 5.5 LTS

A Azure Databricks recomenda a instalação do TensorFlow 1.15 em Databricks Runtime 5.5 LTS utilizando um script init.

Roteiro init para clusters em:

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

O TensorBoard é um conjunto de ferramentas de visualização para depuração, otimização e compreensão de TensorFlow, PyTorch e outros programas de aprendizagem automática.

Use TensorBoard

Utilize o TensorBoard em Databricks Runtime 7.2 e superior

Iniciar o TensorBoard em Azure Databricks não é diferente de o iniciar num bloco de notas Jupyter no seu computador local.

  1. Carregue o %tensorboard comando mágico e defina o seu diretório de registo.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. Invoque o %tensorboard comando mágico.

    %tensorboard --logdir $experiment_log_dir
    

    O servidor TensorBoard inicia e exibe a interface do utilizador no portátil. Também fornece um link para abrir o TensorBoard num novo separador.

    A imagem que se segue mostra que o TensorBoard UI começou num diretório de log povoado.

    TensorBoard

Também pode iniciar o TensorBoard utilizando diretamente o módulo de caderno do TensorBoard.

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

Utilize o TensorBoard em Databricks Runtime 7.1 e abaixo

Para iniciar o TensorBoard a partir do seu caderno, utilize o dbutils.tensorboard utilitário.

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

Este comando mostra um link que, quando clicado, abre o TensorBoard num novo separador.

Quando começar a utilizar este API TensorBoard continua a funcionar até que o pare dbutils.tensorboard.stop() ou desligue o seu cluster.

Nota

Se ligar o TensorFlow ao seu cluster como biblioteca Azure Databricks, poderá ter de voltar a ligar o seu portátil antes de iniciar o TensorBoard.

Registos e diretórios de tensorboard

O TensorBoard visualiza os seus programas de aprendizagem automática através da leitura de registos gerados por callbacks e funções tensorBoard em TensorBoard ou PyTorch. Para gerar registos para outras bibliotecas de aprendizagem automática, pode escrever diretamente registos utilizando os autores de ficheiros TensorFlow (ver Módulo: tf.resumo para TensorFlow 2.x e ver Módulo: tf.compat.v1.resumo para a API mais antiga em TensorFlow 1.x).

Para se certificar de que os seus registos de experiências são armazenados de forma fiável, a Azure Databricks recomenda a escrita de registos para o DBFS (isto é, um diretório de registo /dbfs/ em ) e não no sistema de ficheiros efémeros de cluster. Para cada experiência, inicie o TensorBoard num diretório único. Para cada execução do seu código de aprendizagem automática na experiência que gera registos, desenrem o backback tensorBoard ou o filewriter para escrever para um subdiretor do diretório de experiências. Desta forma, os dados no UI TensorBoard serão separados em runs.

Leia a documentação oficial do TensorBoard para começar a usar o TensorBoard para registar informações para o seu programa de aprendizagem automática.

Gerir processos do TensorBoard

Os processos tensorBoard iniciados no portátil Azure Databricks não são encerrados quando o caderno é desligado ou o REPL é reiniciado (por exemplo, quando limpa o estado do caderno). Para eliminar manualmente um processo tensorboard, envie-lhe um sinal de terminação utilizando %sh kill -15 pid . Os processos de TensorBoard indevidamente mortos podem notebook.list() corromper.

Para listar os servidores tensorBoard atualmente em execução no seu cluster, com os respetivos diretórios de registo e iDs de processo, notebook.list() executados a partir do módulo de portátil TensorBoard.

Problemas conhecidos

  • O UI do TensorBoard inline está dentro de um iframe. As funcionalidades de segurança do navegador impedem que as ligações externas dentro da UI funcionem a menos que abra o link num novo separador.
  • A --window_title opção de TensorBoard é ultrapassada em Azure Databricks.
  • Por predefinição, o TensorBoard verifica uma gama de portas para selecionar uma porta para ouvir. Se houver demasiados processos do TensorBoard em execução no cluster, todas as portas da gama portuária podem não estar disponíveis. Pode contornar esta limitação especificando um número de porta com o --port argumento. O porto especificado deve estar entre 6006 e 6106.
  • Para descarregar links para funcionar, deve abrir o TensorBoard num separador.
  • Quando utilizar o TensorBoard 1.15.0, o separador Projetor está em branco. Como solução alternativa, para visitar diretamente a página do projetor, pode substituir #projector no URL por data/plugin/projector/projector_binary.html .

Utilizar o TensorFlow num nó único

Para testar e migrar fluxos de trabalho de uma única máquina, pode começar com um cluster só para condutores em Azure Databricks, definindo o número de trabalhadores para zero. Embora o Apache Spark não esteja funcional nesta definição, é uma forma rentável de executar fluxos de trabalho de tensorFlow de máquina única. O seguinte caderno mostra como pode executar o TensorFlow (1.x e 2.x), com a monitorização do TensorBoard num cluster apenas para o condutor.

Caderno TensorFlow 1.15/2.x

Obter o bloco de notas