既知の問題

新しいプロジェクトには YDF を優先する

YDF は、デシジョン フォレストをトレーニングするための Google の新しいライブラリです。

YDF は TF-DF の機能を拡張し、新機能、簡素化された API、トレーニング時間の短縮、ドキュメントの更新、一般的な ML ライブラリとの互換性の強化を提供します。

以下に挙げる問題の一部は YDF で修正されています。

Windows Pip パッケージは利用できません

TensorFlow Decision Forests は、Windows Pip パッケージとしてはまだ利用できません。

回避策:

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 は機能名をサニタイズし、たとえば機能名を小文字に変換する場合があります。