Budowa rurociągów TFX

Korzystanie z klasy Pipeline

Potoki TFX są definiowane przy użyciu klasy Pipeline . Poniższy przykład ilustruje sposób użycia klasy Pipeline .

pipeline.Pipeline(
    pipeline_name=pipeline-name,
    pipeline_root=pipeline-root,
    components=components,
    enable_cache=enable-cache,
    metadata_connection_config=metadata-connection-config,
)

Zastąp następujące elementy:

  • pipeline-name : Nazwa tego potoku. Nazwa potoku musi być unikatowa.

    TFX używa nazwy potoku podczas wysyłania zapytań do metadanych ML w celu uzyskania artefaktów wejściowych komponentów. Ponowne użycie nazwy potoku może spowodować nieoczekiwane zachowania.

  • pipeline-root : Ścieżka główna wyników tego potoku. Ścieżka główna musi być pełną ścieżką do katalogu, do którego Twój koordynator ma dostęp do odczytu i zapisu. W czasie wykonywania TFX używa katalogu głównego potoku do generowania ścieżek wyjściowych dla artefaktów komponentów. Ten katalog może być lokalny lub znajdować się w obsługiwanym rozproszonym systemie plików, takim jak Google Cloud Storage lub HDFS.

  • components : lista instancji komponentów, które tworzą przepływ pracy tego potoku.

  • enable-cache : (Opcjonalnie). Wartość logiczna wskazująca, czy potok korzysta z buforowania w celu przyspieszenia wykonywania potoku.

  • metadata-connection-config : (Opcjonalnie). Konfiguracja połączenia dla metadanych ML.

Definiowanie wykresu wykonania komponentu

Instancje komponentów generują artefakty jako dane wyjściowe i zazwyczaj zależą od artefaktów generowanych przez instancje komponentów poprzedzających jako dane wejściowe. Kolejność wykonywania instancji komponentów jest określana poprzez utworzenie skierowanego wykresu acyklicznego (DAG) zależności artefaktów.

Na przykład standardowy komponent ExampleGen może pobierać dane z pliku CSV i wyprowadzać serializowane przykładowe rekordy. Standardowy komponent StatisticsGen akceptuje te przykładowe rekordy jako dane wejściowe i tworzy statystyki zbioru danych. W tym przykładzie instancja StatisticsGen musi następować po ExampleGen , ponieważ SchemaGen zależy od danych wyjściowych ExampleGen .

Zależności oparte na zadaniach

Możesz także zdefiniować zależności oparte na zadaniach, używając metod add_upstream_node i add_downstream_node swojego komponentu. add_upstream_node pozwala określić, że bieżący komponent musi zostać wykonany po określonym komponencie. add_downstream_node pozwala określić, że bieżący komponent musi zostać wykonany przed określonym komponentem.

Szablony rurociągów

Najłatwiejszym sposobem szybkiego skonfigurowania potoku i sprawdzenia, jak wszystkie elementy do siebie pasują, jest użycie szablonu. Używanie szablonów opisano w części Tworzenie lokalnego potoku TFX .

Buforowanie

Buforowanie potoku TFX umożliwia potok pomijanie komponentów, które zostały wykonane z tym samym zestawem danych wejściowych w poprzednim uruchomieniu potoku. Jeśli buforowanie jest włączone, potok próbuje dopasować sygnaturę każdego komponentu, komponentu i zestawu danych wejściowych do jednego z poprzednich wykonań komponentów tego potoku. Jeśli istnieje dopasowanie, potok korzysta z danych wyjściowych komponentu z poprzedniego uruchomienia. Jeśli nie ma dopasowania, komponent jest wykonywany.

Nie używaj buforowania, jeśli potok wykorzystuje komponenty niedeterministyczne. Na przykład, jeśli utworzysz komponent w celu utworzenia losowej liczby dla potoku, włączenie pamięci podręcznej spowoduje jednorazowe wykonanie tego komponentu. W tym przykładzie kolejne przebiegi wykorzystują liczbę losową z pierwszego przebiegu zamiast generować liczbę losową.