Préférer YDF pour les nouveaux projets
YDF est la nouvelle bibliothèque de Google pour former les forêts de décision.
YDF étend la puissance de TF-DF, offrant de nouvelles fonctionnalités, une API simplifiée, des temps de formation plus rapides, une documentation mise à jour et une compatibilité améliorée avec les bibliothèques ML populaires.
Certains des problèmes mentionnés ci-dessous sont résolus dans YDF.
Le package Windows Pip n’est pas disponible
TensorFlow Decision Forests n'est pas encore disponible en tant que package Windows Pip.
Solutions de contournement :
- Solution n°1 : installez le sous-système Windows pour Linux (WSL) sur votre ordinateur Windows et suivez les instructions Linux.
Incompatibilité avec Keras 3
La compatibilité avec Keras 3 n'est pas encore implémentée. Utilisez tf_keras ou une version de TensorFlow antérieure à 2.16. Vous pouvez également utiliser ydf .
Non testé pour conda
Bien que TF-DF puisse fonctionner avec Conda, cela n'est pas testé et nous ne maintenons actuellement pas de packages sur conda-forge.
Incompatibilité avec les anciennes versions ou les versions nocturnes de TensorFlow
L'ABI de TensorFlow n'est pas compatible entre les versions. Étant donné que TF-DF s'appuie sur des opérations TensorFlow C++ personnalisées, chaque version de TF-DF est liée à une version spécifique de TensorFlow. La dernière version publiée de TF-DF est toujours liée à la dernière version publiée de TensorFlow.
Pour ces raisons, la version actuelle de TF-DF peut ne pas être compatible avec les anciennes versions ou avec la version nocturne de TensorFlow.
Si vous utilisez des versions incompatibles de TF et TF-DF, vous verrez des erreurs énigmatiques telles que :
tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
- Utilisez la version de TF-DF compatible avec votre version de TensorFlow.
Tableau de compatibilité
Le tableau suivant montre la compatibilité entre tensorflow_decision_forests
et ses dépendances :
tensorflow_decision_forests | flux tensoriel |
---|---|
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 |
- Solution n°2 : enveloppez votre fonction de prétraitement dans une autre fonction qui compresse ses entrées.
Tous les modèles ne prennent pas en charge les stratégies de formation et de distribution distribuées
Sauf indication contraire, les modèles sont formés sur une seule machine et ne sont pas compatibles avec les stratégies de distribution. Par exemple, le GradientBoostedTreesModel
ne prend pas en charge la formation distribuée alors que DistributedGradientBoostedTreesModel
le fait.
Solutions de contournement :
- Utilisez un modèle qui prend en charge les stratégies de distribution (par exemple
DistributedGradientBoostedTreesModel
) ou sous-échantillonnez votre ensemble de données afin qu'il tienne sur une seule machine.
Pas de support pour GPU/TPU.
TF-DF ne prend pas en charge la formation GPU ou TPU. Cependant, la compilation avec les instructions AVX peut accélérer la diffusion.
Pas de support pour model_to_estimator
TF-DF n'implémente pas les API requises pour convertir un modèle entraîné/non entraîné au format estimateur.
Les modèles chargés se comportent différemment des modèles Python.
Bien qu'abstraits par l'API Keras, un modèle instancié en Python (par exemple, avec tfdf.keras.RandomForestModel()
) et un modèle chargé depuis le disque (par exemple, avec tf_keras.models.load_model()
) peuvent se comporter différemment. Notamment, un modèle instancié Python applique automatiquement les conversions de type nécessaires. Par exemple, si une fonctionnalité float64
est transmise à un modèle attendant une fonctionnalité float32
, cette conversion est effectuée implicitement. Cependant, une telle conversion n'est pas possible pour les modèles chargés depuis le disque. Il est donc important que les données d'entraînement et les données d'inférence aient toujours exactement le même type.
Nettoyage du nom de la fonctionnalité Tensorflow
Tensorflow nettoie les noms de fonctionnalités et peut, par exemple, les convertir en minuscules.