Instalação

Instalação com Pip

Instale o TensorFlow Decision Forests executando:

# Install TensorFlow Decision Forests.
pip3 install tensorflow_decision_forests --upgrade

Em seguida, verifique a instalação executando:

# Check the version of TensorFlow Decision Forests.
python3 -c "import tensorflow_decision_forests as tfdf; print('Found TF-DF v' + tfdf.__version__)"

Construir a partir da fonte

Detalhes técnicos

O TensorFlow Decision Forests (TF-DF) implementa operações personalizadas para o TensorFlow e, portanto, depende da ABI do TensorFlow. Como a ABI pode mudar entre versões, qualquer versão do TF-DF só é compatível com uma versão específica do TensorFlow.

Para evitar a compilação e o envio de todo o TensorFlow com TF-DF, o TF-DF vincula-se à biblioteca compartilhada libtensorflow que é distribuída com o pacote Pip do TensorFlow. Apenas uma pequena parte do TensorFlow é compilada e a compilação leva apenas cerca de 10 minutos em uma estação de trabalho forte (em vez de várias horas ao compilar todo o TensorFlow). Para garantir que isso funcione, a versão do TensorFlow que é realmente compilada e a biblioteca compartilhada libtensorflow devem corresponder exatamente.

O script tools/test_bazel.sh configura a construção do TF-DF para garantir que as versões dos pacotes usados ​​correspondam. Para obter detalhes sobre esse processo, consulte o código-fonte deste script. Como a compilação do TensorFlow muda frequentemente, ela só oferece suporte à compilação com as versões mais recentes do TensorFlow e todas as noites.

Linux

Construção do Docker

A maneira mais fácil de construir TF-DF no Linux é usando build Build docker do TensorFlow. Basta executar as seguintes etapas para construir:

./tools/start_compile_docker.sh # Start the docker, might require root
export RUN_TESTS=1              # Whether to run tests after build
export PY_VERSION=3.9           # Python version to use for build
# TensorFlow version to compile against. This must match exactly the version
# of TensorFlow used at runtime, otherwise TF-DF may crash unexpectedly.
export TF_VERSION=2.16.1        # Set to "nightly" for building with tf-nightly
./tools/test_bazel.sh

Isso coloca o código C++ compilado no diretório bazel-bin . Observe que este é um link simbólico que não é exposto fora do contêiner (ou seja, a compilação desaparece após sair do contêiner).

Para construir as rodas, execute

tools/build_pip_package.sh ALL_VERSIONS INSTALL_PYENV

Isso instalará Pyenv e Pyenv-virtualenv dentro da janela de encaixe e os usará para instalar o Python em todas as versões suportadas para construção. As rodas são colocadas no subdiretório dist/ .

Construção manual

Construir o TF-DF sem o docker pode ser mais difícil e a equipe provavelmente não será capaz de ajudar com isso.

Requisitos

  • Bazel >= 6.3.0
  • Pitão >= 3
  • Git
  • Pyenv, Pyenv-virtualenv (somente se for empacotado para muitas versões do Python)

Prédio

Baixe o TensorFlow Decision Forests da seguinte maneira:

# Download the source code of TF-DF.
git clone https://github.com/tensorflow/decision-forests.git
cd decision-forests

Opcional: as florestas de decisão do TensorFlow dependem das florestas de decisão Yggdrasil . Se quiser editar o código Yggdrasil, você pode clonar o repositório Yggdrasil e alterar o caminho adequadamente em third_party/yggdrasil_decision_forests/workspace.bzl .

Compile e execute os testes unitários do TF-DF com o seguinte comando. Observe que test_bazel.sh está configurado para o compilador padrão em sua máquina. Edite o arquivo diretamente para alterar esta configuração.

# Build and test TF-DF.
RUN_TESTS=1 PY_VERSION=3.9 TF_VERSION=2.16.1 ./tools/test_bazel.sh

Crie e teste um pacote pip com o seguinte comando. Substitua python3.9 pela versão do python que você deseja usar. Observe que você não precisa usar a mesma versão do Python do script test_bazel.sh .

Se sua configuração for compatível com manylinux2014 , um pacote pip compatível com manylinux2014 será produzido.

Se a sua configuração não for compatível com o manylinux2014, um pacote pip não compatível com manylinux2014 será produzido e a verificação final falhará. Não importa se você deseja usar o TF-DF em sua própria máquina. Uma maneira fácil de tornar a compilação do Manylinux2014 compatível é usar o docker mencionado acima.

# Build and test a Pip package.
./tools/build_pip_package.sh python3.9

Este comando instalará o pacote pip TF-DF e executará o exemplo em examples/minimal.py . O pacote Pip está localizado no diretório dist/ .

Se você deseja criar um pacote Pip para outra versão compatível do Python, execute:

# Install the other versions of python (assume only python3.9 is installed; this is the case in the build docker).
sudo apt-get update && sudo apt-get install python3.9 python3-pip

# Create the Pip package for the other version of python
./tools/build_pip_package.sh python3.9

Alternativamente , você pode criar o pacote pip para todas as versões compatíveis do python usando pyenv executando o seguinte comando. Veja o cabeçalho de tools/build_pip_package.sh para mais detalhes.

# Build and test all the Pip package using Pyenv.
./tools/build_pip_package.sh ALL_VERSIONS

Mac OS

Configurar

Requisitos

  • Ferramentas de linha de comando XCode
  • Bazel ( Bazelisk recomendado)
  • Pacotes Homebrew: GNU coreutils, GNU sed, GNU grep
  • Pyenv (para construir os pacotes Pip com múltiplas versões do Python)

Processador Arm64

Para sistemas MacOS com CPU ARM64, siga estas etapas:

  1. Prepare seu ambiente

    git clone https://github.com/tensorflow/decision-forests.git
    python3 -m venv venv
    source venv/bin/activate
    
  2. Decida qual versão do Python e do TensorFlow você deseja usar e executar

    cd decision-forests
    bazel clean --expunge            # Remove old builds (esp. cross-compiled).
    export RUN_TESTS=1               # Whether to run tests after build.
    export PY_VERSION=3.9            # Python version to use for build.
    # TensorFlow version to compile against. This must match exactly the version
    # of TensorFlow used at runtime, otherwise TF-DF may crash unexpectedly.
    export TF_VERSION=2.16.1
    ./tools/test_bazel.sh            # Takes ~15 minutes on a modern Mac.
    
  3. Empacote a compilação.

    # Building the packages uses different virtualenvs through Pyenv.
    deactivate
    # Build the packages.
    ./tools/build_pip_package.sh ALL_VERSIONS
    
  4. Os pacotes podem ser encontrados em decision-forests/dist/ .

Compilação cruzada para CPUs Intel

Se você tiver uma máquina MacOS com CPU Apple, faça a compilação cruzada do TF-DF para máquinas MacOS com CPUs Intel da seguinte maneira.

  1. Prepare seu ambiente

    git clone https://github.com/tensorflow/decision-forests.git
    python3 -m venv venv
    source venv/source/activate
    
  2. Decida qual versão do Python você deseja usar e executar

    cd decision-forests
    bazel clean --expunge            # Remove old builds (esp. cross-compiled).
    export RUN_TESTS=0               # Cross-compiled builds can't run tests.
    export PY_VERSION=3.9            # Python version to use for build.
    # TensorFlow version to compile against. This must match exactly the version
    # of TensorFlow used at runtime, otherwise TF-DF may crash unexpectedly.
    export TF_VERSION=2.16.1
    export MAC_INTEL_CROSSCOMPILE=1  # Enable cross-compilation.
    ./tools/test_bazel.sh            # Takes ~15 minutes on a modern Mac.
    
  3. Empacote a compilação.

    # Building the packages uses different virtualenvs through Pyenv.
    deactivate
    # Build the packages.
    ./tools/build_pip_package.sh ALL_VERSIONS_MAC_INTEL_CROSSCOMPILE
    
  4. Os pacotes podem ser encontrados em decision-forests/dist/ . Observe que eles não foram testados e seria prudente testá-los antes da distribuição.

Windows

Uma compilação do Windows foi produzida com êxito no passado, mas não é mantida neste momento. Consulte tools/test_bazel.bat e tools/test_bazel.sh para obter dicas (possivelmente desatualizadas) para compilação no Windows.

Para usuários do Windows, o YDF oferece compilações oficiais do Windows e a maior parte das funcionalidades (e muito mais!) do TF-DF.