Databricks Runtime 7.0 ML (EoS)
Observação
O suporte para esta versão do Databricks Runtime foi encerrado. Para obter a data de fim do suporte, consulte o Histórico de fim do suporte. Para todas as versões compatíveis do Databricks Runtime, consulte Versões e compatibilidade de notas sobre a versão do Databricks Runtime.
O Databricks lançou essa versão em junho de 2020.
O Databricks Runtime 7.0 para Machine Learning fornece um ambiente de aprendizado de máquina e ciência de dados pronto para uso baseado no Databricks Runtime 7.0 (EoS). O Databricks Runtime ML contém muitas bibliotecas de machine learning populares, incluindo o TensorFlow, o PyTorch e o XGBoost. Ele também dá suporte ao treinamento de aprendizado profundo distribuído com o uso do Horovod.
Para obter mais informações, incluindo instruções para criar um cluster de ML do Databricks Runtime, confira IA e Machine Learning no Databricks.
Novos recursos e principais alterações
O Databricks Runtime 7.0 ML foi desenvolvido com base no Databricks Runtime 7.0. Para obter informações sobre as novidades no Databricks Runtime 7.0, incluindo Apache Spark MLlib e SparkR, confira as notas de versão do Databricks Runtime 7.0 (EoS).
Agendamento com reconhecimento de GPU
O Databricks Runtime 7.0 ML dá suporte ao agendamento com reconhecimento de GPU no Apache Spark 3.0. O Azure Databricks o configura automaticamente para você. Confira Agendamento de GPU.
Alterações importantes no ambiente de ML do Python
Esta seção descreve as principais alterações no ambiente do Python do ML pré-instalado em comparação com o Databricks Runtime 6.6 ML (EoS). Você também deve examinar as principais alterações no ambiente base do Python no Databricks Runtime 7.0 (EoS). Para ver uma lista completa dos pacotes do Python instalados e suas versões, confira Bibliotecas do Python.
Pacotes do Python atualizados
- tensorflow 1.15.0 –> 2.2.0
- tensorboard 1.15.0 –> 2.2.2
- pytorch 1.4.0 –> 1.5.0
- xgboost 0.90 –> 1.1.1
- sparkdl 1.6.0-db1 –> 2.1.0-db1
- hyperopt 0.2.2.db1 –> 0.2.4.db1
Pacotes do Python adicionados
- lightgbm: 2.3.0
- nltk: 3.4.5
- petastorm: 0.9.2
- plotly: 4.5.2
Pacotes do Python removidos
- argparse
- boto (use
boto3
no lugar dele) - colorama
- preterido
- et-xmlfile
- fusepy
- html5lib
- jdcal
- keras (use
tensorflow.keras
no lugar dele) - keras-applications (use
tensorflow.keras.applications
no lugar dele) - llvmlite
- lxml
- nose
- nose-exclude
- numba
- openpyxl
- pathlib2
- ply
- pymongo
- singledispatch
- tensorboardX (use
torch.utils.tensorboard
no lugar dele) - virtualenv
- webencodings
Alterações importantes no ambiente de ML do R
O Databricks Runtime 7.0 ML inclui uma versão não modificada do RStudio Server Open Source v1.2.5033, para o qual o código-fonte pode ser encontrado no GitHub. Leia mais sobre o RStudio Server no Azure Databricks.
Alterações em pacotes de ML do Spark, bibliotecas do Java e do Scala
Os pacotes a seguir foram atualizados. Alguns deles foram atualizados para versões SNAPSHOT
compatíveis com o Apache Spark 3.0:
- graphframes: 0.7.0-db1-spark2.4 –> 0.8.0-db2-spark3.0
- spark-tensorflow-connector: 1.15.0 (Scala 2.11) –> 1.15.0 (Scala 2.12)
- xgboost4j and xgboost4j-spark: 0.90 –> 1.0.0
- mleap-databricks-runtime: 0.17.0-4882dc3 (SNAPSHOT)
Os seguintes pacotes estão disponíveis:
- TensorFlow (Java)
- TensorFrames
- Pipelines de aprendizado profundo para Apache Spark (o HorovodRunner está disponível no Python)
Adição de comandos do Conda e do Pip para dar suporte às bibliotecas do Python no escopo do notebook (versão prévia pública)
A partir do Databricks Runtime 7.0, você pode usar os comandos %pip
e %conda
para gerenciar as bibliotecas do Python instaladas em uma sessão do notebook.
Use também esses comandos para criar um ambiente personalizado para um notebook e reproduzir esse ambiente entre notebooks.
Para habilitar esse recurso, nas configurações do cluster, defina a configuração do Sparkspark.databricks.conda.condaMagic.enabled true
.
Para obter mais informações, confira Bibliotecas do Python no escopo do notebook.
Reprovações e recursos sem suporte
O Databricks Runtime 7.0 ML não dá suporte ao controle de acesso à tabela. Caso você precise usar o controle de acesso à tabela, recomendamos que use o Databricks Runtime 7.0.
Problemas conhecidos
- Se você estiver registrando um modelo MLlib no formato mleap, quando o argumento
sample_input
for passado paramlflow.spark.log_model
ele falhará com um AttributeError. Esse problema é causado por uma alteração de API para mleap. Para contornar esse problema, atualize para o MLflow 1.9.0. Instale o MLflow 1.9.0 usando Bibliotecas do Python no escopo do notebook.
Ambiente do sistema
O ambiente do sistema no Databricks Runtime 7.0 ML é diferente do Databricks Runtime 7.0 nestes aspectos:
- DBUtils: o Databricks Runtime ML não contém um Utilitário de biblioteca (dbutils.library) (herdado).
Em vez disso, use os comandos
%pip
e%conda
. Confira as bibliotecas Python no escopo do notebook. - Para clusters de GPU, as seguintes bibliotecas de GPU NVIDIA:
- CUDA 10.1 Atualização 2
- cuDNN 7.6.5
- NCCL 2.7.3
- TensorRT 6.0.1
Bibliotecas
As seções a seguir listam as bibliotecas incluídas no Databricks Runtime 7.0 ML que são diferentes daquelas incluídas no Databricks Runtime 7.0.
Nesta seção:
- Bibliotecas de camada superior
- Bibliotecas do Python
- Bibliotecas do R
- Bibliotecas do Java e do Scala (cluster do Scala 2.12)
Bibliotecas de camada superior
O Databricks Runtime 7.0 ML inclui as seguintes bibliotecas de camada superior:
- GraphFrames
- Horovod e HorovodRunner
- MLflow
- PyTorch
- spark-tensorflow-connector
- TensorFlow
- TensorBoard
Bibliotecas do Python
O Databricks Runtime 7.0 ML usa o Conda para o gerenciamento de pacotes do Python e inclui vários pacotes populares de ML. A seção a seguir descreve o ambiente do Conda para o Databricks Runtime 7.0 ML.
Python em clusters de CPU
name: databricks-ml
channels:
- pytorch
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- absl-py=0.9.0=py37_0
- asn1crypto=1.3.0=py37_0
- astor=0.8.0=py37_0
- backcall=0.1.0=py37_0
- backports=1.0=py_2
- bcrypt=3.1.7=py37h7b6447c_1
- blas=1.0=mkl
- blinker=1.4=py37_0
- boto3=1.12.0=py_0
- botocore=1.15.0=py_0
- c-ares=1.15.0=h7b6447c_1001
- ca-certificates=2020.1.1=0
- cachetools=4.1.0=py_1
- certifi=2020.4.5.1=py37_0
- cffi=1.14.0=py37h2e261b9_0
- chardet=3.0.4=py37_1003
- click=7.0=py37_0
- cloudpickle=1.3.0=py_0
- configparser=3.7.4=py37_0
- cpuonly=1.0=0
- cryptography=2.8=py37h1ba5d50_0
- cycler=0.10.0=py37_0
- cython=0.29.15=py37he6710b0_0
- decorator=4.4.1=py_0
- dill=0.3.1.1=py37_1
- docutils=0.15.2=py37_0
- entrypoints=0.3=py37_0
- flask=1.1.1=py_1
- freetype=2.9.1=h8a8886c_1
- future=0.18.2=py37_1
- gast=0.3.3=py_0
- gitdb2=2.0.6=py_0
- gitpython=3.0.5=py_0
- google-auth=1.11.2=py_0
- google-auth-oauthlib=0.4.1=py_2
- google-pasta=0.2.0=py_0
- grpcio=1.27.2=py37hf8bcb03_0
- gunicorn=20.0.4=py37_0
- h5py=2.10.0=py37h7918eee_0
- hdf5=1.10.4=hb1b8bf9_0
- icu=58.2=he6710b0_3
- idna=2.8=py37_0
- intel-openmp=2020.0=166
- ipykernel=5.1.4=py37h39e3cac_0
- ipython=7.12.0=py37h5ca1d4c_0
- ipython_genutils=0.2.0=py37_0
- itsdangerous=1.1.0=py37_0
- jedi=0.14.1=py37_0
- jinja2=2.11.1=py_0
- jmespath=0.9.4=py_0
- joblib=0.14.1=py_0
- jpeg=9b=h024ee3a_2
- jupyter_client=5.3.4=py37_0
- jupyter_core=4.6.1=py37_0
- kiwisolver=1.1.0=py37he6710b0_0
- krb5=1.16.4=h173b8e3_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=9.1.0=hdf63c60_0
- libgfortran-ng=7.3.0=hdf63c60_0
- libpng=1.6.37=hbc83047_0
- libpq=11.2=h20c2e04_0
- libprotobuf=3.11.4=hd408876_0
- libsodium=1.0.16=h1bed415_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- libtiff=4.1.0=h2733197_0
- lightgbm=2.3.0=py37he6710b0_0
- lz4-c=1.8.1.2=h14c3975_0
- mako=1.1.2=py_0
- markdown=3.1.1=py37_0
- markupsafe=1.1.1=py37h7b6447c_0
- matplotlib-base=3.1.3=py37hef1b27d_0
- mkl=2020.0=166
- mkl-service=2.3.0=py37he904b0f_0
- mkl_fft=1.0.15=py37ha843d7b_0
- mkl_random=1.1.0=py37hd6b4f25_0
- ncurses=6.2=he6710b0_1
- networkx=2.4=py_0
- ninja=1.9.0=py37hfd86e86_0
- nltk=3.4.5=py37_0
- numpy=1.18.1=py37h4f9e942_0
- numpy-base=1.18.1=py37hde5b4d6_1
- oauthlib=3.1.0=py_0
- olefile=0.46=py37_0
- openssl=1.1.1g=h7b6447c_0
- packaging=20.1=py_0
- pandas=1.0.1=py37h0573a6f_0
- paramiko=2.7.1=py_0
- parso=0.5.2=py_0
- patsy=0.5.1=py37_0
- pexpect=4.8.0=py37_0
- pickleshare=0.7.5=py37_0
- pillow=7.0.0=py37hb39fc2d_0
- pip=20.0.2=py37_3
- plotly=4.5.2=py_0
- prompt_toolkit=3.0.3=py_0
- protobuf=3.11.4=py37he6710b0_0
- psutil=5.6.7=py37h7b6447c_0
- psycopg2=2.8.4=py37h1ba5d50_0
- ptyprocess=0.6.0=py37_0
- pyasn1=0.4.8=py_0
- pyasn1-modules=0.2.7=py_0
- pycparser=2.19=py37_0
- pygments=2.5.2=py_0
- pyjwt=1.7.1=py37_0
- pynacl=1.3.0=py37h7b6447c_0
- pyodbc=4.0.30=py37he6710b0_0
- pyopenssl=19.1.0=py37_0
- pyparsing=2.4.6=py_0
- pysocks=1.7.1=py37_0
- python=3.7.6=h0371630_2
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- pytorch=1.5.0=py3.7_cpu_0
- pytz=2019.3=py_0
- pyzmq=18.1.1=py37he6710b0_0
- readline=7.0=h7b6447c_5
- requests=2.22.0=py37_1
- requests-oauthlib=1.3.0=py_0
- retrying=1.3.3=py37_2
- rsa=4.0=py_0
- s3transfer=0.3.3=py37_0
- scikit-learn=0.22.1=py37hd81dba3_0
- scipy=1.4.1=py37h0b6359f_0
- setuptools=45.2.0=py37_0
- simplejson=3.17.0=py37h7b6447c_0
- six=1.14.0=py37_0
- smmap2=2.0.5=py37_0
- sqlite=3.31.1=h62c20be_1
- sqlparse=0.3.0=py_0
- statsmodels=0.11.0=py37h7b6447c_0
- tabulate=0.8.3=py37_0
- tk=8.6.8=hbc83047_0
- torchvision=0.6.0=py37_cpu
- tornado=6.0.3=py37h7b6447c_3
- tqdm=4.42.1=py_0
- traitlets=4.3.3=py37_0
- unixodbc=2.3.7=h14c3975_0
- urllib3=1.25.8=py37_0
- wcwidth=0.1.8=py_0
- websocket-client=0.56.0=py37_0
- werkzeug=1.0.0=py_0
- wheel=0.34.2=py37_0
- wrapt=1.11.2=py37h7b6447c_0
- xz=5.2.4=h14c3975_4
- zeromq=4.3.1=he6710b0_3
- zlib=1.2.11=h7b6447c_3
- zstd=1.3.7=h0b5b093_0
- pip:
- astunparse==1.6.3
- databricks-cli==0.11.0
- diskcache==4.1.0
- docker==4.2.1
- gorilla==0.3.0
- horovod==0.19.1
- hyperopt==0.2.4.db1
- keras-preprocessing==1.1.2
- mleap==0.16.0
- mlflow==1.8.0
- opt-einsum==3.2.1
- petastorm==0.9.2
- pyarrow==0.15.1
- pyyaml==5.3.1
- querystring-parser==1.2.4
- seaborn==0.10.0
- sparkdl==2.1.0-db1
- tensorboard==2.2.2
- tensorboard-plugin-wit==1.6.0.post3
- tensorflow-cpu==2.2.0
- tensorflow-estimator==2.2.0
- termcolor==1.1.0
- xgboost==1.1.1
prefix: /databricks/conda/envs/databricks-ml
Python em clusters GPU
name: databricks-ml-gpu
channels:
- pytorch
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- absl-py=0.9.0=py37_0
- asn1crypto=1.3.0=py37_0
- astor=0.8.0=py37_0
- backcall=0.1.0=py37_0
- backports=1.0=py_2
- bcrypt=3.1.7=py37h7b6447c_1
- blas=1.0=mkl
- blinker=1.4=py37_0
- boto3=1.12.0=py_0
- botocore=1.15.0=py_0
- c-ares=1.15.0=h7b6447c_1001
- ca-certificates=2020.1.1=0
- cachetools=4.1.0=py_1
- certifi=2020.4.5.2=py37_0
- cffi=1.14.0=py37h2e261b9_0
- chardet=3.0.4=py37_1003
- click=7.0=py37_0
- cloudpickle=1.3.0=py_0
- configparser=3.7.4=py37_0
- cryptography=2.8=py37h1ba5d50_0
- cudatoolkit=10.1.243=h6bb024c_0
- cycler=0.10.0=py37_0
- cython=0.29.15=py37he6710b0_0
- decorator=4.4.1=py_0
- dill=0.3.1.1=py37_1
- docutils=0.15.2=py37_0
- entrypoints=0.3=py37_0
- flask=1.1.1=py_1
- freetype=2.9.1=h8a8886c_1
- future=0.18.2=py37_1
- gast=0.3.3=py_0
- gitdb2=2.0.6=py_0
- gitpython=3.0.5=py_0
- google-auth=1.11.2=py_0
- google-auth-oauthlib=0.4.1=py_2
- google-pasta=0.2.0=py_0
- grpcio=1.27.2=py37hf8bcb03_0
- gunicorn=20.0.4=py37_0
- h5py=2.10.0=py37h7918eee_0
- hdf5=1.10.4=hb1b8bf9_0
- icu=58.2=he6710b0_3
- idna=2.8=py37_0
- intel-openmp=2020.0=166
- ipykernel=5.1.4=py37h39e3cac_0
- ipython=7.12.0=py37h5ca1d4c_0
- ipython_genutils=0.2.0=py37_0
- itsdangerous=1.1.0=py37_0
- jedi=0.14.1=py37_0
- jinja2=2.11.1=py_0
- jmespath=0.9.4=py_0
- joblib=0.14.1=py_0
- jpeg=9b=h024ee3a_2
- jupyter_client=5.3.4=py37_0
- jupyter_core=4.6.1=py37_0
- kiwisolver=1.1.0=py37he6710b0_0
- krb5=1.16.4=h173b8e3_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libedit=3.1.20181209=hc058e9b_0
- libffi=3.2.1=hd88cf55_4
- libgcc-ng=9.1.0=hdf63c60_0
- libgfortran-ng=7.3.0=hdf63c60_0
- libpng=1.6.37=hbc83047_0
- libpq=11.2=h20c2e04_0
- libprotobuf=3.11.4=hd408876_0
- libsodium=1.0.16=h1bed415_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- libtiff=4.1.0=h2733197_0
- lightgbm=2.3.0=py37he6710b0_0
- lz4-c=1.8.1.2=h14c3975_0
- mako=1.1.2=py_0
- markdown=3.1.1=py37_0
- markupsafe=1.1.1=py37h7b6447c_0
- matplotlib-base=3.1.3=py37hef1b27d_0
- mkl=2020.0=166
- mkl-service=2.3.0=py37he904b0f_0
- mkl_fft=1.0.15=py37ha843d7b_0
- mkl_random=1.1.0=py37hd6b4f25_0
- ncurses=6.2=he6710b0_1
- networkx=2.4=py_0
- ninja=1.9.0=py37hfd86e86_0
- nltk=3.4.5=py37_0
- numpy=1.18.1=py37h4f9e942_0
- numpy-base=1.18.1=py37hde5b4d6_1
- oauthlib=3.1.0=py_0
- olefile=0.46=py37_0
- openssl=1.1.1g=h7b6447c_0
- packaging=20.1=py_0
- pandas=1.0.1=py37h0573a6f_0
- paramiko=2.7.1=py_0
- parso=0.5.2=py_0
- patsy=0.5.1=py37_0
- pexpect=4.8.0=py37_0
- pickleshare=0.7.5=py37_0
- pillow=7.0.0=py37hb39fc2d_0
- pip=20.0.2=py37_3
- plotly=4.5.2=py_0
- prompt_toolkit=3.0.3=py_0
- protobuf=3.11.4=py37he6710b0_0
- psutil=5.6.7=py37h7b6447c_0
- psycopg2=2.8.4=py37h1ba5d50_0
- ptyprocess=0.6.0=py37_0
- pyasn1=0.4.8=py_0
- pyasn1-modules=0.2.7=py_0
- pycparser=2.19=py37_0
- pygments=2.5.2=py_0
- pyjwt=1.7.1=py37_0
- pynacl=1.3.0=py37h7b6447c_0
- pyodbc=4.0.30=py37he6710b0_0
- pyopenssl=19.1.0=py37_0
- pyparsing=2.4.6=py_0
- pysocks=1.7.1=py37_0
- python=3.7.6=h0371630_2
- python-dateutil=2.8.1=py_0
- python-editor=1.0.4=py_0
- pytorch=1.5.0=py3.7_cuda10.1.243_cudnn7.6.3_0
- pytz=2019.3=py_0
- pyzmq=18.1.1=py37he6710b0_0
- readline=7.0=h7b6447c_5
- requests=2.22.0=py37_1
- requests-oauthlib=1.3.0=py_0
- retrying=1.3.3=py37_2
- rsa=4.0=py_0
- s3transfer=0.3.3=py37_0
- scikit-learn=0.22.1=py37hd81dba3_0
- scipy=1.4.1=py37h0b6359f_0
- setuptools=45.2.0=py37_0
- simplejson=3.17.0=py37h7b6447c_0
- six=1.14.0=py37_0
- smmap2=2.0.5=py37_0
- sqlite=3.31.1=h62c20be_1
- sqlparse=0.3.0=py_0
- statsmodels=0.11.0=py37h7b6447c_0
- tabulate=0.8.3=py37_0
- tk=8.6.8=hbc83047_0
- torchvision=0.6.0=py37_cu101
- tornado=6.0.3=py37h7b6447c_3
- tqdm=4.42.1=py_0
- traitlets=4.3.3=py37_0
- unixodbc=2.3.7=h14c3975_0
- urllib3=1.25.8=py37_0
- wcwidth=0.1.8=py_0
- websocket-client=0.56.0=py37_0
- werkzeug=1.0.0=py_0
- wheel=0.34.2=py37_0
- wrapt=1.11.2=py37h7b6447c_0
- xz=5.2.4=h14c3975_4
- zeromq=4.3.1=he6710b0_3
- zlib=1.2.11=h7b6447c_3
- zstd=1.3.7=h0b5b093_0
- pip:
- astunparse==1.6.3
- databricks-cli==0.11.0
- diskcache==4.1.0
- docker==4.2.1
- gorilla==0.3.0
- horovod==0.19.1
- hyperopt==0.2.4.db1
- keras-preprocessing==1.1.2
- mleap==0.16.0
- mlflow==1.8.0
- opt-einsum==3.2.1
- petastorm==0.9.2
- pyarrow==0.15.1
- pyyaml==5.3.1
- querystring-parser==1.2.4
- seaborn==0.10.0
- sparkdl==2.1.0-db1
- tensorboard==2.2.2
- tensorboard-plugin-wit==1.6.0.post3
- tensorflow-estimator==2.2.0
- tensorflow-gpu==2.2.0
- termcolor==1.1.0
- xgboost==1.1.1
prefix: /databricks/conda/envs/databricks-ml-gpu
Pacotes do Spark que contêm módulos do Python
Pacote do Spark | Módulo do Python | Versão |
---|---|---|
graphframes | graphframes | 0.8.0-db2-spark3.0 |
Bibliotecas do R
As bibliotecas do R são idênticas às bibliotecas do R do Databricks Runtime 7.0 Beta.
Bibliotecas do Java e do Scala (cluster do Scala 2.12)
Além das bibliotecas do Java e do Scala do Databricks Runtime 7.0, o Databricks Runtime 7.0 ML contém os seguintes JARs:
ID do Grupo | Artifact ID | Versão |
---|---|---|
com.typesafe.akka | akka-actor_2.12 | 2.5.23 |
ml.combust.mleap | mleap-databricks-runtime_2.12 | 0.17.0-4882dc3 |
ml.dmlc | xgboost4j-spark_2.12 | 1.0.0 |
ml.dmlc | xgboost4j_2.12 | 1.0.0 |
org.mlflow | mlflow-client | 1.8.0 |
org.scala-lang.modules | scala-java8-compat_2.12 | 0.8.0 |
org.tensorflow | spark-tensorflow-connector_2.12 | 1.15.0 |