Problemas conhecidos

Prefira YDF para novos projetos

YDF é a nova biblioteca do Google para treinar Florestas de Decisão.

YDF amplia o poder do TF-DF, oferecendo novos recursos, uma API simplificada, tempos de treinamento mais rápidos, documentação atualizada e compatibilidade aprimorada com bibliotecas populares de ML.

Alguns dos problemas mencionados abaixo foram corrigidos no YDF.

O pacote Windows Pip não está disponível

O TensorFlow Decision Forests ainda não está disponível como um pacote Windows Pip.

Soluções alternativas:

Incompatibilidade com Keras 3

A compatibilidade com Keras 3 ainda não foi implementada. Use tf_keras ou uma versão do TensorFlow anterior à 2.16. Alternativamente, use ydf .

Não testado para conda

Embora o TF-DF possa funcionar com o Conda, isso não foi testado e atualmente não mantemos pacotes no conda-forge.

Incompatibilidade com versões antigas ou noturnas do TensorFlow

A ABI do TensorFlow não é compatível entre versões. Como o TF-DF depende de operações C++ personalizadas do TensorFlow, cada versão do TF-DF está vinculada a uma versão específica do TensorFlow. A última versão lançada do TF-DF está sempre vinculada à última versão lançada do TensorFlow.

Por esses motivos, a versão atual do TF-DF pode não ser compatível com versões mais antigas ou com a compilação noturna do TensorFlow.

Se estiver usando versões incompatíveis de TF e TF-DF, você verá erros enigmáticos como:

tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
  • Use a versão do TF-DF compatível com sua versão do TensorFlow.

Tabela de compatibilidade

A tabela a seguir mostra a compatibilidade entre tensorflow_decision_forests e suas dependências:

tensorflow_decision_forests fluxo tensor
1.11.0 2.18.0
1.10.0 2.17.0
1.9.2 2.16.2
1.9.1 2.16.1
1.9.0 2.16.1
1.8.0 - 1.8.1 2.15.0
1.6.0 - 1.7.0 2.14.0
1.5.0 2.13.0
1.3.0 - 1.4.0 2.12.0
1.1.0 - 1.2.0 2.11.0
1.0.0 - 1.0.1 2.10.0 - 2.10.1
0.2.6 - 0.2.7 2.9.1
0.2.5 2.9
0.2.4 2.8
0.2.1 - 0.2.3 2.7
0.1.9 - 0.2.0 2.6
0.1.1 - 0.1.8 2,5
0.1.0 2.4
  • Solução nº 2: envolva sua função de pré-processamento em outra função que comprima suas entradas.

Nem todos os modelos suportam treinamento distribuído e estratégias de distribuição

A menos que especificado, os modelos são treinados em uma única máquina e não são compatíveis com estratégias de distribuição. Por exemplo, o GradientBoostedTreesModel não oferece suporte ao treinamento distribuído, enquanto DistributedGradientBoostedTreesModel oferece.

Soluções alternativas:

  • Use um modelo que suporte estratégias de distribuição (por exemplo, DistributedGradientBoostedTreesModel ) ou reduza a resolução do seu conjunto de dados para que ele caiba em uma única máquina.

Sem suporte para GPU/TPU.

TF-DF não suporta treinamento de GPU ou TPU. A compilação com instruções AVX, entretanto, pode acelerar a veiculação.

Não há suporte para model_to_estimator

O TF-DF não implementa as APIs necessárias para converter um modelo treinado/não treinado para o formato de estimador.

Os modelos carregados se comportam de maneira diferente dos modelos Python.

Embora abstraído pela API Keras, um modelo instanciado em Python (por exemplo, com tfdf.keras.RandomForestModel() ) e um modelo carregado do disco (por exemplo, com tf_keras.models.load_model() ) podem se comportar de maneira diferente. Notavelmente, um modelo instanciado em Python aplica automaticamente as conversões de tipo necessárias. Por exemplo, se um recurso float64 for alimentado a um modelo que espera um recurso float32 , essa conversão será executada implicitamente. Contudo, tal conversão não é possível para modelos carregados do disco. Portanto, é importante que os dados de treinamento e os dados de inferência tenham sempre exatamente o mesmo tipo.

Limpeza de nome de recurso do Tensorflow

O Tensorflow limpa nomes de recursos e pode, por exemplo, convertê-los em letras minúsculas.