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 tworzących 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 zestawu 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ą.