新しいプロジェクトには YDF を優先する
YDF は、デシジョン フォレストをトレーニングするための Google の新しいライブラリです。
YDF は TF-DF の機能を拡張し、新機能、簡素化された API、トレーニング時間の短縮、ドキュメントの更新、一般的な ML ライブラリとの互換性の強化を提供します。
以下に挙げる問題の一部は YDF で修正されています。
Windows Pip パッケージは利用できません
TensorFlow Decision Forests は、Windows Pip パッケージとしてはまだ利用できません。
回避策:
- 解決策 #1: Windows マシンにWindows Subsystem for Linux (WSL)をインストールし、Linux の手順に従います。
Keras 3 との非互換性
Keras 3 との互換性はまだ実装されていません。 tf_keras または 2.16 より前の TensorFlow バージョンを使用してください。あるいは、 ydfを使用します。
conda についてはテストされていません
TF-DF は Conda で動作する可能性がありますが、これはテストされておらず、現在 conda-forge でパッケージを保守していません。
TensorFlow の古いバージョンまたは夜間バージョンとの非互換性
TensorFlow のABI はリリース間で互換性がありません。 TF-DF はカスタム TensorFlow C++ 演算に依存しているため、TF-DF の各バージョンは TensorFlow の特定のバージョンに関連付けられています。 TF-DF の最後にリリースされたバージョンは、常に TensorFlow の最後にリリースされたバージョンに関連付けられます。
これらの理由により、TF-DF の現在のバージョンは、古いバージョンや TensorFlow の夜間ビルドと互換性がない可能性があります。
互換性のないバージョンの TF および TF-DF を使用している場合、次のような不可解なエラーが表示されます。
tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
- TensorFlow のバージョンと互換性のある TF-DF のバージョンを使用してください。
互換性表
次の表は、 tensorflow_decision_forests
とその依存関係の間の互換性を示しています。
tensorflow_decion_forests | テンソルフロー |
---|---|
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 |
- 解決策 #2:前処理関数を、入力を圧縮する別の関数にラップします。
すべてのモデルが分散トレーニングと分散戦略をサポートしているわけではありません
特に指定しない限り、モデルは単一マシンでトレーニングされ、分散戦略と互換性がありません。たとえば、 GradientBoostedTreesModel
は分散トレーニングをサポートしませんが、 DistributedGradientBoostedTreesModel
サポートします。
回避策:
- 分散戦略をサポートするモデル (例:
DistributedGradientBoostedTreesModel
) を使用するか、単一のマシンに収まるようにデータセットをダウンサンプリングします。
GPU / TPU はサポートされていません。
TF-DF は GPU または TPU トレーニングをサポートしていません。ただし、AVX 命令を使用してコンパイルすると、提供速度が向上する可能性があります。
model_to_estimatorはサポートされません
TF-DF は、トレーニング済み/未トレーニングのモデルを推定形式に変換するために必要な API を実装していません。
読み込まれたモデルは、Python モデルとは異なる動作をします。
Keras API によって抽象化されていますが、Python でインスタンス化されたモデル (例: tfdf.keras.RandomForestModel()
) とディスクからロードされたモデル (例: tf_keras.models.load_model()
) は異なる動作をする可能性があります。特に、Python でインスタンス化されたモデルは、必要な型変換を自動的に適用します。たとえば、 float64
機能がfloat32
機能を期待するモデルに供給された場合、この変換は暗黙的に実行されます。ただし、そのような変換は、ディスクからロードされたモデルでは不可能です。したがって、トレーニング データと推論データが常にまったく同じタイプであることが重要です。
Tensorflow 機能名のサニタイズ
Tensorflow は機能名をサニタイズし、たとえば機能名を小文字に変換する場合があります。