SchemaGen TFX パイプライン コンポーネント

一部の TFX コンポーネントは、スキーマと呼ばれる入力データの記述を使用します。スキーマはschema.protoのインスタンスです。特徴値のデータ型、すべての例に特徴が存在する必要があるかどうか、許容される値の範囲、その他のプロパティを指定できます。 SchemaGen パイプライン コンポーネントは、トレーニング データからタイプ、カテゴリ、および範囲を推測することによってスキーマを自動的に生成します。

  • 消費するもの: StatisticsGen コンポーネントからの統計情報
  • 出力: データスキーマプロト

以下はスキーマ プロトからの抜粋です。

...
feature {
  name: "age"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
feature {
  name: "capital-gain"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
...

次の TFX ライブラリはこのスキーマを使用します。

  • TensorFlow データの検証
  • TensorFlow 変換
  • TensorFlow モデル分析

一般的な TFX パイプラインでは、SchemaGen によってスキーマが生成され、他のパイプライン コンポーネントによって使用されます。ただし、自動生成されたスキーマはベストエフォート型であり、データの基本的なプロパティの推論のみを試みます。開発者が必要に応じてレビューし、変更することが期待されます。

変更されたスキーマは、ImportSchemaGen コンポーネントを使用してパイプラインに戻すことができます。初期スキーマ生成用の SchemaGen コンポーネントは削除でき、すべてのダウンストリーム コンポーネントは ImportSchemaGen の出力を使用できます。インポートされたスキーマを使用してExampleValidatorを追加し、トレーニング データを継続的に検査することもお勧めします。

SchemaGen と TensorFlow データの検証

SchemaGen は、スキーマを推論するためにTensorFlow Data Validationを広範囲に利用します。

SchemaGen コンポーネントの使用

初期スキーマ生成の場合

SchemaGen パイプライン コンポーネントは通常、非常に簡単にデプロイでき、カスタマイズはほとんど必要ありません。典型的なコードは次のようになります。

schema_gen = tfx.components.SchemaGen(
    statistics=stats_gen.outputs['statistics'])

詳細については、 SchemaGen API リファレンスを参照してください。

レビューされたスキーマインポートの場合

ImportSchemaGen コンポーネントをパイプラインに追加して、レビューされたスキーマ定義をパイプラインに取り込みます。

schema_gen = tfx.components.ImportSchemaGen(
    schema_file='/some/path/schema.pbtxt')

schema_file 、テキスト protobuf ファイルへのフルパスである必要があります。

詳細については、 ImportSchemaGen API リファレンスを参照してください。