Path: blob/master/site/ja/tfx/guide/custom_component.md
25118 views
フルカスタムコンポーネントの構築
このガイドでは、TFX API を使用してフルカスタムコンポーネントを構築する方法について説明します。フルカスタムコンポーネントを使用すると、コンポーネント仕様、Executor、およびコンポーネントインターフェイスクラスを定義し、コンポーネントを構築できます。これより、ニーズに合わせて標準コンポーネントを再利用および拡張できます。
TFX パイプラインが初めての方は、TFX パイプラインの中心的概念の学習をご確認ください。
カスタム Executor またはカスタムコンポーネント
コンポーネントの入力、出力、および実行プロパティが既存のコンポーネントと同じであるときにカスタム処理ロジックのみが必要な場合は、カスタム Executor で十分です。入力、出力、または実行プロパティのいずれかが既存の TFX コンポーネントと異なる場合は、完全にカスタムのコンポーネントが必要です。
カスタムコンポーネントの作成
フルカスタムのコンポーネントを作成するには、以下が必要です。
新しいコンポーネントの定義済み入力および出力アーティファクト仕様。特に、入力アーティファクトの型は、アーティファクトを生成するコンポーネントの出力アーティファクト型と一致している必要があり、出力アーティファクトの型は、アーティファクトを使用するコンポーネントの入力アーティファクト型と一致している必要があります。
新しいコンポーネントに必要なアーティファクト以外の実行パラメータ。
ComponentSpec
ComponentSpec
クラスは、コンポーネントへの入力アーティファクトと出力アーティファクト、およびコンポーネントの実行に使用されるパラメータを定義することにより、コンポーネントコントラクトを定義します。これには 3 つの部分があります。
入力: コンポーネント Executor に渡される入力アーティファクトの型付きパラメータのディクショナリ。通常、入力アーティファクトは上流コンポーネントからの出力であるため、同じ型を共有します。
出力: コンポーネントが生成する出力アーティファクトの型付きパラメータのディクショナリ。
パラメータ: コンポーネント Executor に渡される追加のExecutionParameter アイテムのディクショナリ。これらは、パイプライン DSL で柔軟に定義し、実行に渡すアーティファクト以外のパラメータです。
以下は、ComponentSpec の例です。
Executor
次に、新しいコンポーネントの Executor コードを記述します。基本的に、base_executor.BaseExecutor
の新しいサブクラスを作成し、そのDo
関数をオーバーライドする必要があります。Do
関数では、INPUTS
、OUTPUTS
およびPARAMETERS
にマップして渡されるinput_dict
、output_dict
およびexec_properties
引数は、ComponentSpec でそれぞれ定義されます。exec_properties
の場合、値はディクショナリルックアップを介して直接フェッチできます。input_dict
およびoutput_dict
のアーティファクトの場合、アーティファクトインスタンスまたはアーティファクト URI をフェッチするための artifact_utils クラスで使用できる便利な関数があります。
カスタム Executor の単体テスト
カスタム Executor の単体テストは、こちらのように作成できます。
コンポーネントインターフェイス
最も複雑な部分は以上です。次の手順では、これらの部分をコンポーネントインターフェイスにアセンブルし、コンポーネントをパイプラインで使用できるようにします。これには、いくつかのステップがあります。
コンポーネントインターフェイスを
base_component.BaseComponent
のサブクラスにします以前に定義された
ComponentSpec
クラスをもつクラス変数SPEC_CLASS
を割り当てます以前に定義された Executor クラスをもつクラス変数
EXECUTOR_SPEC
を割り当てます関数の引数を使用して
__init__()
コンストラクタ関数を定義し、ComponentSpec クラスのインスタンスを構築し、その値とオプションの名前を使用してスーパー関数を呼び出します。
コンポーネントのインスタンスが作成されると、base_component.BaseComponent
クラスの型チェックロジックが呼び出され、渡された引数がComponentSpec
クラスで定義された型情報と互換性があることを確認します。
TFX パイプラインにアセンブルする
最後のステップは、新しいカスタムコンポーネントを TFX パイプラインにプラグすることです。新しいコンポーネントのインスタンスの他に、以下を追加する必要があります。
新しいコンポーネントのアップストリームコンポーネントとダウンストリームコンポーネントを適切に接続します。これは、新しいコンポーネントでアップストリームコンポーネントの出力を参照し、ダウンストリームコンポーネントで新しいコンポーネントの出力を参照することによって行われます。
パイプラインを構築するときに、新しいコンポーネントインスタンスをコンポーネントリストに追加します。
以下の例は、前述の変更を示しています。完全な例は、TFX GitHub リポジトリをご覧ください。
フルカスタムコンポーネントのデプロイ
パイプラインを適切に実行するには、コードの変更に加えて、新しく追加されたすべてのパーツ(ComponentSpec
、Executor
、コンポーネントインターフェイス)がパイプライン実行環境でアクセス可能である必要があります。