TFX w potokach Cloud AI Platform

Wstęp

Ten samouczek ma na celu wprowadzenie do TensorFlow Extended (TFX) i AIPlatform Pipelines i pomoc w nauce tworzenia własnych potoków uczenia maszynowego w Google Cloud. Pokazuje integrację z TFX, AI Platform Pipelines i Kubeflow, a także interakcję z TFX w notatnikach Jupyter.

Na końcu tego samouczka utworzysz i uruchomisz potok ML, hostowany w Google Cloud. Będziesz mógł zwizualizować wyniki każdego biegu i zobaczyć rodowód utworzonych artefaktów.

Będziesz postępować zgodnie z typowym procesem opracowywania ML, zaczynając od zbadania zestawu danych, a kończąc na kompletnym potoku roboczym. Po drodze poznasz sposoby debugowania i aktualizowania potoku oraz mierzenia wydajności.

Zbiór danych o taksówce w Chicago

TaxiChicago taksówka

Korzystasz z zestawu danych Taxi Trips udostępnionego przez miasto Chicago.

Możesz przeczytać więcej o zbiorze danych w Google BigQuery . Przeglądaj pełny zbiór danych w interfejsie użytkownika BigQuery .

Cel modelu - Klasyfikacja binarna

Czy klient napiwku więcej czy mniej niż 20%?

1. Skonfiguruj projekt Google Cloud

1.a Skonfiguruj swoje środowisko w Google Cloud

Aby rozpocząć, potrzebujesz konta Google Cloud. Jeśli już go masz, przejdź od razu do Utwórz nowy projekt .

  1. Przejdź do konsoli Google Cloud .

  2. Zaakceptuj warunki Google Cloud

  3. Jeśli chcesz rozpocząć z bezpłatnym kontem próbnym, kliknij Wypróbuj za darmo (lub Rozpocznij za darmo ).

    1. Wybierz swój kraj.

    2. Zaakceptuj warunki korzystania z usługi.

    3. Wprowadź dane rozliczeniowe.

      W tym momencie nie zostaniesz obciążona opłatą. Jeśli nie masz innych projektów Google Cloud, możesz ukończyć ten samouczek bez przekraczania limitów bezpłatnej warstwy Google Cloud , która obejmuje maksymalnie 8 rdzeni działających jednocześnie.

1.b Utwórz nowy projekt.

  1. W głównym panelu Google Cloud kliknij menu rozwijane projektu obok nagłówka Google Cloud Platform i wybierz Nowy projekt .
  2. Nadaj nazwę swojemu projektowi i wprowadź inne szczegóły projektu
  3. Po utworzeniu projektu wybierz go z listy rozwijanej projektu.

2. Skonfiguruj i wdróż potok AI Platform w nowym klastrze Kubernetes

  1. Przejdź do strony Klastry potoków AI Platform .

    W głównym menu nawigacyjnym: ≡ > AI Platform > Rurociągi

  2. Kliknij + Nowa instancja , aby utworzyć nowy klaster.

  3. Na stronie przeglądu potoków Kubeflow kliknij opcję Konfiguruj .

  4. Kliknij „Włącz”, aby włączyć interfejs Kubernetes Engine API

  5. Na stronie Wdrażanie potoków Kubeflow :

    1. Wybierz strefę (lub „region”) dla swojego klastra. Sieć i podsieć można ustawić, ale na potrzeby tego samouczka pozostawimy je jako domyślne.

    2. WAŻNE Zaznacz pole oznaczone Zezwól na dostęp do następujących interfejsów API chmury . (Jest to wymagane, aby ten klaster mógł uzyskać dostęp do innych elementów projektu. Jeśli pominiesz ten krok, naprawienie go później jest nieco trudne).

    3. Kliknij opcję Utwórz nowy klaster i poczekaj kilka minut, aż klaster zostanie utworzony. To zajmie kilka minut. Po zakończeniu zobaczysz komunikat taki jak:

      Klaster „klaster-1” pomyślnie utworzony w strefie „us-central1-a”.

    4. Wybierz przestrzeń nazw i nazwę instancji (używanie wartości domyślnych jest w porządku). Na potrzeby tego samouczka nie sprawdzaj executor.emisary ani managedstorage.enabled .

    5. Kliknij opcję Wdróż i poczekaj kilka chwil, aż potok zostanie wdrożony. Wdrażając Kubeflow Pipelines, akceptujesz Warunki korzystania z usługi.

3. Skonfiguruj instancję Cloud AI Platform Notebook.

  1. Przejdź do strony Vertex AI Workbench . Przy pierwszym uruchomieniu Workbencha konieczne będzie włączenie interfejsu Notebooks API.

    W głównym menu nawigacji: ≡ -> Vertex AI -> Workbench

  2. Jeśli pojawi się monit, włącz interfejs Compute Engine API.

  3. Utwórz nowy notatnik z zainstalowanym TensorFlow Enterprise 2.7 (lub nowszym).

    Nowy notebook -> TensorFlow Enterprise 2.7 -> Bez GPU

    Wybierz region i strefę, a następnie nadaj instancji notatnika nazwę.

    Aby utrzymać się w granicach poziomu bezpłatnego, może być konieczna zmiana ustawień domyślnych w tym miejscu, aby zmniejszyć liczbę procesorów wirtualnych dostępnych dla tej instancji z 4 do 2:

    1. Wybierz pozycję Opcje zaawansowane u dołu formularza Nowy notes .
    2. W sekcji Konfiguracja maszyny możesz wybrać konfigurację z 1 lub 2 procesorami wirtualnymi, jeśli chcesz pozostać w warstwie bezpłatnej.

    3. Poczekaj na utworzenie nowego notatnika, a następnie kliknij Włącz Notebooks API

4. Uruchom Notatnik Pierwsze kroki

  1. Przejdź do strony Klastry potoków AI Platform .

    W głównym menu nawigacyjnym: ≡ -> AI Platform -> Pipelines

  2. W wierszu klastra używanego w tym samouczku kliknij opcję Otwórz pulpit nawigacyjny potoków .

  3. Na stronie Pierwsze kroki kliknij Otwórz notatnik Cloud AI Platform w Google Cloud .

  4. Wybierz instancję Notatnika, której używasz w tym samouczku i Kontynuuj , a następnie Potwierdź .

    wybierz-notebook

5. Kontynuuj pracę w Notatniku

zainstalować

Notatnik Pierwsze kroki rozpoczyna się od zainstalowania TFX i Kubeflow Pipelines (KFP) na maszynie wirtualnej, na której działa Jupyter Lab.

Następnie sprawdza, która wersja TFX jest zainstalowana, dokonuje importu oraz ustawia i drukuje identyfikator projektu:

sprawdź wersję Pythona i zaimportuj

Połącz się ze swoimi usługami Google Cloud

Konfiguracja potoku wymaga identyfikatora projektu, który można uzyskać za pośrednictwem notatnika i ustawić jako zmienną środowiskową.

# Read GCP project id from env.
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
GCP_PROJECT_ID=shell_output[0]
print("GCP project ID:" + GCP_PROJECT_ID)

Teraz ustaw punkt końcowy klastra KFP.

Można to znaleźć w adresie URL pulpitu nawigacyjnego Pipelines. Przejdź do pulpitu nawigacyjnego Kubeflow Pipeline i spójrz na adres URL. Punktem końcowym jest wszystko w adresie URL, począwszy od https:// , aż do googleusercontent.com .

ENDPOINT='' # Enter YOUR ENDPOINT here.

Notatnik następnie ustawia unikatową nazwę dla niestandardowego obrazu platformy Docker:

# Docker image name for the pipeline image
CUSTOM_TFX_IMAGE='gcr.io/' + GCP_PROJECT_ID + '/tfx-pipeline'

6. Skopiuj szablon do katalogu projektu

Edytuj następną komórkę notatnika, aby ustawić nazwę potoku. W tym samouczku użyjemy my_pipeline .

PIPELINE_NAME="my_pipeline"
PROJECT_DIR=os.path.join(os.path.expanduser("~"),"imported",PIPELINE_NAME)

Notatnik używa następnie interfejsu wiersza tfx do kopiowania szablonu potoku. Ten samouczek używa zestawu danych Chicago Taxi do przeprowadzenia klasyfikacji binarnej, więc szablon ustawia model na taxi :

!tfx template copy \
  --pipeline-name={PIPELINE_NAME} \
  --destination-path={PROJECT_DIR} \
  --model=taxi

Notatnik następnie zmienia swój kontekst CWD na katalog projektu:

%cd {PROJECT_DIR}

Przeglądaj pliki potoku

Po lewej stronie Notatnika Cloud AI Platform powinna pojawić się przeglądarka plików. Powinien istnieć katalog z nazwą twojego potoku ( my_pipeline ). Otwórz go i przejrzyj pliki. (Będziesz mógł je otwierać i edytować również w środowisku notatnika).

# You can also list the files from the shell
 ls

Powyższe polecenie tfx template copy utworzyło podstawowy szkielet plików, które tworzą potok. Należą do nich kody źródłowe Pythona, przykładowe dane i notatniki Jupyter. Są one przeznaczone dla tego konkretnego przykładu. Dla twoich własnych potoków byłyby to pliki pomocnicze, których wymaga twój potok.

Oto krótki opis plików Pythona.

  • pipeline — ten katalog zawiera definicję potoku
    • configs.py — definiuje wspólne stałe dla programów uruchamiających potok
    • pipeline.py — definiuje komponenty TFX i potok
  • models — ten katalog zawiera definicje modeli ML.
    • features.py features_test.py — definiuje cechy modelu
    • preprocessing.py / preprocessing_test.py — definiuje zadania przetwarzania wstępnego za pomocą tf::Transform
    • estimator — ten katalog zawiera model oparty na estymatorze.
      • constants.py — definiuje stałe modelu
      • model.py / model_test.py — definiuje model DNN za pomocą estymatora TF
    • keras — ten katalog zawiera model oparty na Keras.
      • constants.py — definiuje stałe modelu
      • model.py / model_test.py — definiuje model DNN przy użyciu Keras
  • beam_runner.py / kubeflow_runner.py — zdefiniuj runnery dla każdego silnika orkiestracji

7. Uruchom swój pierwszy potok TFX na Kubeflow

Notatnik uruchomi potok za pomocą polecenia tfx run CLI.

Połącz z magazynem

Uruchomione potoki tworzą artefakty, które muszą być przechowywane w ML-Metadata . Artefakty odnoszą się do ładunków, czyli plików, które muszą być przechowywane w systemie plików lub pamięci blokowej. W tym samouczku użyjemy GCS do przechowywania ładunków metadanych przy użyciu zasobnika, który został utworzony automatycznie podczas konfiguracji. Jego nazwa to <your-project-id>-kubeflowpipelines-default .

Utwórz potok

Notatnik prześle nasze przykładowe dane do zasobnika GCS, abyśmy mogli później użyć ich w naszym potoku.

gsutil cp data/data.csv gs://{GOOGLE_CLOUD_PROJECT}-kubeflowpipelines-default/tfx-template/data/taxi/data.csv

Notatnik używa następnie polecenia tfx pipeline create w celu utworzenia potoku.

!tfx pipeline create  \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT} \
--build-image

Podczas tworzenia potoku zostanie wygenerowany Dockerfile w celu zbudowania obrazu Docker. Nie zapomnij dodać tych plików do systemu kontroli źródła (na przykład git) wraz z innymi plikami źródłowymi.

Uruchom rurociąg

Notatnik używa następnie polecenia tfx run create , aby uruchomić wykonanie potoku. Zobaczysz również to uruchomienie na liście Eksperymenty na pulpicie nawigacyjnym potoków Kubeflow.

tfx run create --pipeline-name={PIPELINE_NAME} --endpoint={ENDPOINT}

Możesz wyświetlić swój potok z pulpitu nawigacyjnego Kubeflow Pipelines.

8. Zweryfikuj swoje dane

Pierwszym zadaniem w każdym projekcie Data Science lub ML jest zrozumienie i wyczyszczenie danych.

  • Poznaj typy danych dla każdej funkcji
  • Poszukaj anomalii i brakujących wartości
  • Zrozum rozkłady dla każdej funkcji

składniki

Komponenty danychKomponenty danych

W edytorze plików laboratoryjnych Jupyter:

W pipeline / pipeline.py odkomentuj wiersze, które dołączają te komponenty do potoku:

# components.append(statistics_gen)
# components.append(schema_gen)
# components.append(example_validator)

( ExampleGen było już włączone podczas kopiowania plików szablonów.)

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
! tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

! tfx run create --pipeline-name "{PIPELINE_NAME}"

Sprawdź rurociąg

W przypadku Kubeflow Orchestrator przejdź do pulpitu nawigacyjnego KFP i znajdź dane wyjściowe potoku na stronie dla uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i „Wszystkie uruchomienia” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą twojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Aby zapoznać się z bardziej zaawansowanym przykładem, zobacz TensorFlow Data Validation Colab .

Aby uzyskać więcej informacji na temat używania TFDV do eksploracji i walidacji zestawu danych, zobacz przykłady na tensorflow.org .

9. Inżynieria funkcji

Możesz zwiększyć predykcyjną jakość swoich danych i/lub zmniejszyć wymiarowość dzięki inżynierii funkcji.

  • Krzyże funkcji
  • Słowniki
  • Osadzania
  • PCA
  • Kodowanie kategoryczne

Jedną z korzyści płynących z używania TFX jest to, że napiszesz kod transformacji raz, a wynikowe przekształcenia będą spójne między trenowaniem a udostępnianiem.

składniki

Przekształcać

  • Transform wykonuje inżynierię funkcji w zestawie danych.

W edytorze plików laboratoryjnych Jupyter:

W pipeline.py pipeline znajdź i odkomentuj linię, która dołącza Transform do potoku.

# components.append(transform)

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
! tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

! tfx run create --pipeline-name "{PIPELINE_NAME}"

Sprawdź wyjścia rurociągu

W przypadku Kubeflow Orchestrator przejdź do pulpitu nawigacyjnego KFP i znajdź dane wyjściowe potoku na stronie dla uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i „Wszystkie uruchomienia” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą twojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Aby zapoznać się z bardziej zaawansowanym przykładem, zobacz TensorFlow Transform Colab .

10. Trening

Trenuj model TensorFlow, korzystając z ładnych, czystych i przekształconych danych.

  • Uwzględnij przekształcenia z poprzedniego kroku, aby były stosowane konsekwentnie
  • Zapisz wyniki jako SavedModel do produkcji
  • Wizualizuj i poznawaj proces szkolenia za pomocą TensorBoard
  • Zapisz również EvalSavedModel do analizy wydajności modelu

składniki

  • Trener szkoli model TensorFlow.

W edytorze plików laboratoryjnych Jupyter:

W pipeline / pipeline.py , znajdź i odkomentuj ten, który dołącza Trainer do potoku:

# components.append(trainer)

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
! tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

! tfx run create --pipeline-name "{PIPELINE_NAME}"

Sprawdź wyjścia rurociągu

W przypadku Kubeflow Orchestrator przejdź do pulpitu nawigacyjnego KFP i znajdź dane wyjściowe potoku na stronie dla uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i „Wszystkie uruchomienia” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą twojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma na celu tylko rozpoczęcie pracy. Bardziej zaawansowany przykład można znaleźć w samouczku TensorBoard .

11. Analiza wydajności modelu

Zrozumienie więcej niż tylko wskaźników najwyższego poziomu.

  • Użytkownicy doświadczają wydajności modelu tylko dla swoich zapytań
  • Niska wydajność na wycinkach danych może być ukryta przez wskaźniki najwyższego poziomu
  • Sprawiedliwość modelu jest ważna
  • Często kluczowe podzbiory użytkowników lub danych są bardzo ważne i mogą być małe
    • Wydajność w krytycznych, ale nietypowych warunkach
    • Wydajność dla kluczowych odbiorców, takich jak influencerzy
  • Jeśli wymieniasz model, który jest aktualnie w produkcji, najpierw upewnij się, że nowy jest lepszy

składniki

  • Ewaluator przeprowadza dogłębną analizę wyników szkolenia.

W edytorze plików laboratoryjnych Jupyter:

W pipeline.py pipeline i odkomentuj wiersz, który dołącza Evaluator do potoku:

components.append(evaluator)

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
! tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

! tfx run create --pipeline-name "{PIPELINE_NAME}"

Sprawdź wyjścia rurociągu

W przypadku Kubeflow Orchestrator przejdź do pulpitu nawigacyjnego KFP i znajdź dane wyjściowe potoku na stronie dla uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i „Wszystkie uruchomienia” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą twojego potoku.

12. Obsługa modelki

Jeśli nowy model jest gotowy, zrób to.

  • Pusher wdraża SavedModels w dobrze znanych lokalizacjach

Cele wdrożeniowe otrzymują nowe modele z dobrze znanych lokalizacji

  • Obsługa TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • Centrum TensorFlow

składniki

  • Pusher wdraża model w infrastrukturze obsługującej.

W edytorze plików laboratoryjnych Jupyter:

W pipeline.py pipeline znajdź i odkomentuj wiersz, który dołącza Pusher do potoku:

# components.append(pusher)

Sprawdź wyjścia rurociągu

W przypadku Kubeflow Orchestrator przejdź do pulpitu nawigacyjnego KFP i znajdź dane wyjściowe potoku na stronie dla uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i „Wszystkie uruchomienia” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą twojego potoku.

Dostępne cele wdrożenia

Twój model został przeszkolony i zweryfikowany, a model jest teraz gotowy do produkcji. Możesz teraz wdrożyć swój model w dowolnym z celów wdrożenia TensorFlow, w tym:

  • TensorFlow Serving , do obsługi modelu na serwerze lub farmie serwerów i przetwarzania żądań wnioskowania REST i/lub gRPC.
  • TensorFlow Lite do dołączania modelu do natywnej aplikacji mobilnej na Androida lub iOS lub do aplikacji Raspberry Pi, IoT lub mikrokontrolera.
  • TensorFlow.js , do uruchamiania modelu w przeglądarce internetowej lub aplikacji Node.JS.

Bardziej zaawansowane przykłady

Powyższy przykład ma na celu tylko rozpoczęcie pracy. Poniżej kilka przykładów integracji z innymi usługami Cloud.

Zagadnienia dotyczące zasobów Kubeflow Pipelines

W zależności od wymagań obciążenia domyślna konfiguracja wdrożenia Kubeflow Pipelines może, ale nie musi, spełniać Twoje potrzeby. Możesz dostosować konfiguracje zasobów za pomocą funkcji pipeline_operator_funcs w wywołaniu KubeflowDagRunnerConfig .

pipeline_operator_funcs to lista elementów OpFunc , która przekształca wszystkie wygenerowane instancje ContainerOp w specyfikacji potoku KFP skompilowanej z KubeflowDagRunner .

Na przykład, aby skonfigurować pamięć, możemy użyć set_memory_request do zadeklarowania potrzebnej ilości pamięci. Typowym sposobem, aby to zrobić, jest utworzenie opakowania dla set_memory_request i użycie go do dodania do listy potoku OpFunc s:

def request_more_memory():
  def _set_memory_spec(container_op):
    container_op.set_memory_request('32G')
  return _set_memory_spec

# Then use this opfunc in KubeflowDagRunner
pipeline_op_funcs = kubeflow_dag_runner.get_default_pipeline_operator_funcs()
pipeline_op_funcs.append(request_more_memory())
config = KubeflowDagRunnerConfig(
    pipeline_operator_funcs=pipeline_op_funcs,
    ...
)
kubeflow_dag_runner.KubeflowDagRunner(config=config).run(pipeline)

Podobne funkcje konfiguracji zasobów obejmują:

  • set_memory_limit
  • set_cpu_request
  • set_cpu_limit
  • set_gpu_limit

Wypróbuj BigQueryExampleGen

BigQuery to bezserwerowa, wysoce skalowalna i ekonomiczna hurtownia danych w chmurze. BigQuery może służyć jako źródło przykładów szkoleniowych w TFX. W tym kroku dodamy BigQueryExampleGen do potoku.

W edytorze plików laboratoryjnych Jupyter:

Kliknij dwukrotnie, aby otworzyć pipeline.py . Skomentuj CsvExampleGen i odkomentuj wiersz, który tworzy instancję BigQueryExampleGen . Musisz także odkomentować argument query funkcji create_pipeline .

Musimy określić, który projekt GCP ma być używany w BigQuery. Robimy to, ustawiając --project w beam_pipeline_args podczas tworzenia potoku.

Kliknij dwukrotnie, aby otworzyć configs.py . Usuń komentarz z definicji BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS i BIG_QUERY_QUERY . Zastąp identyfikator projektu i wartość regionu w tym pliku prawidłowymi wartościami dla projektu GCP.

Zmień katalog o jeden poziom w górę. Kliknij nazwę katalogu nad listą plików. Nazwa katalogu jest nazwą potoku, czyli my_pipeline , jeśli nie zmieniłeś nazwy potoku.

Kliknij dwukrotnie, aby otworzyć kubeflow_runner.py . Odkomentuj dwa argumenty, query i beam_pipeline_args , dla funkcji create_pipeline .

Teraz potok jest gotowy do użycia BigQuery jako przykładowego źródła. Zaktualizuj potok jak poprzednio i utwórz nowe uruchomienie, tak jak zrobiliśmy to w krokach 5 i 6.

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
!tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}

Wypróbuj przepływ danych

Kilka komponentów TFX używa Apache Beam do implementacji równoległych potoków danych, co oznacza, że ​​możesz dystrybuować obciążenia przetwarzania danych za pomocą Google Cloud Dataflow . W tym kroku ustawimy koordynatora Kubeflow tak, aby używał Dataflow jako zaplecza przetwarzania danych dla Apache Beam.

# Select your project:
gcloud config set project YOUR_PROJECT_ID

# Get a list of services that you can enable in your project:
gcloud services list --available | grep Dataflow

# If you don't see dataflow.googleapis.com listed, that means you haven't been
# granted access to enable the Dataflow API.  See your account adminstrator.

# Enable the Dataflow service:

gcloud services enable dataflow.googleapis.com

Kliknij dwukrotnie pipeline aby zmienić katalog, i kliknij dwukrotnie, aby otworzyć configs.py . Usuń komentarz z definicji GOOGLE_CLOUD_REGION i DATAFLOW_BEAM_PIPELINE_ARGS .

Zmień katalog o jeden poziom w górę. Kliknij nazwę katalogu nad listą plików. Nazwa katalogu jest nazwą potoku, czyli my_pipeline , jeśli nie zmieniłeś.

Kliknij dwukrotnie, aby otworzyć kubeflow_runner.py . beam_pipeline_args . (Upewnij się również, że skomentowałeś bieżące beam_pipeline_args dodane w kroku 7.)

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
!tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}

Zadania Dataflow możesz znaleźć w Dataflow w Cloud Console .

Wypróbuj szkolenia i prognozy Cloud AI Platform z KFP

TFX współpracuje z kilkoma zarządzanymi usługami GCP, takimi jak Cloud AI Platform for Training and Prediction . Możesz skonfigurować komponent Trainer tak, aby korzystał z Cloud AI Platform Training, zarządzanej usługi do trenowania modeli ML. Co więcej, gdy Twój model jest już zbudowany i gotowy do udostępnienia, możesz przekazać go do usługi Cloud AI Platform Prediction w celu udostępnienia. W tym kroku ustawimy nasz komponent Trainer i Pusher , aby korzystał z usług Cloud AI Platform.

Przed edytowaniem plików może być konieczne włączenie interfejsu AI Platform Training & Prediction API .

Kliknij dwukrotnie pipeline aby zmienić katalog, i kliknij dwukrotnie, aby otworzyć configs.py . Usuń komentarz z definicji GOOGLE_CLOUD_REGION , GCP_AI_PLATFORM_TRAINING_ARGS i GCP_AI_PLATFORM_SERVING_ARGS . Użyjemy naszego niestandardowego obrazu kontenera do trenowania modelu w Cloud AI Platform Training, więc powinniśmy ustawić masterConfig.imageUri w GCP_AI_PLATFORM_TRAINING_ARGS na taką samą wartość jak CUSTOM_TFX_IMAGE powyżej.

Zmień katalog o jeden poziom w górę i kliknij dwukrotnie, aby otworzyć kubeflow_runner.py . Usuń komentarz ai_platform_training_args i ai_platform_serving_args .

Zaktualizuj potok i uruchom go ponownie

# Update the pipeline
!tfx pipeline update \
  --pipeline-path=kubeflow_runner.py \
  --endpoint={ENDPOINT}

!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}

Możesz znaleźć swoje oferty pracy szkoleniowej w Cloud AI Platform Jobs . Jeśli Twój potok zakończył się pomyślnie, możesz znaleźć swój model w Cloud AI Platform Models .

14. Użyj własnych danych

W tym samouczku utworzyłeś potok dla modelu przy użyciu zestawu danych Chicago Taxi. Teraz spróbuj umieścić własne dane w potoku. Twoje dane mogą być przechowywane wszędzie tam, gdzie potok ma do nich dostęp, w tym w Google Cloud Storage, BigQuery lub plikach CSV.

Musisz zmodyfikować definicję potoku, aby pomieścić dane.

Jeśli Twoje dane są przechowywane w plikach

  1. Zmodyfikuj DATA_PATH w kubeflow_runner.py , wskazując lokalizację.

Jeśli Twoje dane są przechowywane w BigQuery

  1. Zmodyfikuj BIG_QUERY_QUERY w configs.py w swoim zapytaniu.
  2. Dodaj funkcje w models / features.py .
  3. Zmodyfikuj models / preprocessing.py w celu przekształcenia danych wejściowych do szkolenia .
  4. Zmodyfikuj models model.py i models / keras / keras , aby constants.py model ML .

Dowiedz się więcej o Trenerze

Zobacz przewodnik po składnikach trenera, aby uzyskać więcej informacji na temat potoków szkoleniowych.

Sprzątanie

Aby wyczyścić wszystkie zasoby Google Cloud używane w tym projekcie, możesz usunąć projekt Google Cloud użyty w samouczku.

Alternatywnie możesz wyczyścić poszczególne zasoby, odwiedzając każdą konsolę: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine