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:
- Solução nº 1: Instale o Windows Subsystem for Linux (WSL) em sua máquina Windows e siga as instruções do Linux.
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.