TFX w potokach Cloud AI Platform

Wstęp

Celem tego samouczka jest wprowadzenie do TensorFlow Extended (TFX) i AIPlatform Pipelines oraz 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.

Pod koniec tego samouczka utworzysz i uruchomisz potok ML hostowany w Google Cloud. Będziesz mógł wizualizować wyniki każdego przebiegu i przeglądać pochodzenie utworzonych artefaktów.

Będziesz postępować zgodnie z typowym procesem programowania uczenia maszynowego, zaczynając od sprawdzenia zestawu danych, a kończąc na kompletnym działającym potoku. Po drodze poznasz sposoby debugowania i aktualizowania potoku oraz pomiaru wydajności.

Zbiór danych o taksówkach w Chicago

TaxiTaksówka z Chicago

Korzystasz ze zbioru danych dotyczących przejazdów taksówkami opublikowanego przez miasto Chicago.

Więcej o zbiorze danych możesz przeczytać w Google BigQuery . Przeglądaj pełny zbiór danych w interfejsie BigQuery .

Cel modelu – Klasyfikacja binarna

Czy klient otrzyma napiwek większy czy mniejszy 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 posiadasz, przejdź od razu do sekcji Utwórz nowy projekt .

  1. Przejdź do konsoli Google Cloud .

  2. Zaakceptuj Warunki korzystania z usługi Google Cloud

  3. Jeśli chcesz rozpocząć od bezpłatnego konta próbnego, kliknij Wypróbuj za darmo (lub Rozpocznij bezpłatnie ).

    1. Wybierz swój kraj.

    2. Zaakceptuj warunki korzystania z usługi.

    3. Wprowadź szczegóły rozliczeniowe.

      Na tym etapie nie poniesiesz żadnych opłat. Jeśli nie masz innych projektów Google Cloud, możesz ukończyć ten samouczek, nie przekraczając 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 projektu obok nagłówka Google Cloud Platform i wybierz Nowy projekt .
  2. Nadaj swojemu projektowi nazwę i wprowadź inne szczegóły projektu
  3. Po utworzeniu projektu pamiętaj o wybraniu go z listy rozwijanej projektu.

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

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

    W głównym menu nawigacyjnym: ≡ > Platforma AI > Potoki

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

  3. Na stronie przeglądu Kubeflow Pipelines kliknij Konfiguruj .

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

  5. Na stronie Wdróż potoki Kubeflow :

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

    2. WAŻNE Zaznacz pole Zezwalaj 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, późniejsze naprawienie go będzie 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 „cluster-1” został pomyślnie utworzony w strefie „us-central1-a”.

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

    5. Kliknij opcję Wdróż i poczekaj kilka chwil na wdrożenie potoku. Wdrażając Kubeflow Pipelines, akceptujesz Warunki świadczenia usług.

3. Skonfiguruj instancję Notatnika platformy Cloud AI.

  1. Przejdź do strony środowiska roboczego Vertex AI . 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 notes 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 obszarze Konfiguracja komputera możesz wybrać konfigurację z 1 lub 2 procesorami wirtualnymi, jeśli chcesz pozostać w warstwie bezpłatnej.

    3. Poczekaj na utworzenie nowego notesu, a następnie kliknij opcję Włącz interfejs API notesów

4. Uruchom notatnik Pierwsze kroki

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

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

  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 platformy Cloud AI w Google Cloud .

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

    wybierz notatnik

5. Kontynuuj pracę w Notatniku

zainstalować

Notatnik wprowadzający 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źć pod adresem URL pulpitu nawigacyjnego Pipelines. Przejdź do panelu Kubeflow Pipeline i spójrz na adres URL. Punktem końcowym jest wszystko w adresie URL, począwszy od https:// aż do googleusercontent.com włącznie.

ENDPOINT='' # Enter YOUR ENDPOINT here.

Następnie notatnik ustawia unikalną nazwę 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ę notesu, 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)

Następnie notes używa interfejsu wiersza polecenia tfx do skopiowania szablonu potoku. W tym samouczku wykorzystano zbiór 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

Następnie notatnik zmienia kontekst CWD na katalog projektu:

%cd {PROJECT_DIR}

Przeglądaj pliki potoku

Po lewej stronie notatnika platformy Cloud AI 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ć także w środowisku notatnika.)

# You can also list the files from the shell
 ls

Powyższe polecenie tfx template copy utworzyło podstawowe rusztowanie plików tworzących potok. Należą do nich kody źródłowe języka Python, przykładowe dane i notesy Jupyter. Są one przeznaczone dla tego konkretnego przykładu. W przypadku własnych potoków będą to pliki pomocnicze wymagane przez potok.

Oto krótki opis plików Pythona.

  • pipeline - ten katalog zawiera definicję potoku
    • configs.py — definiuje wspólne stałe dla elementów uruchamiających potoki
    • pipeline.py — definiuje komponenty TFX i potok
  • models — ten katalog zawiera definicje modeli ML.
    • features.py features_test.py — definiuje funkcje 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 przy użyciu 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 protokołu Keras
  • beam_runner.py / kubeflow_runner.py — zdefiniuj moduły uruchamiające dla każdego silnika orkiestracji

7. Uruchom swój pierwszy potok TFX w Kubeflow

Notatnik uruchomi potok za pomocą polecenia tfx run CLI.

Połącz się z magazynem

Działające 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 w pamięci blokowej. W tym samouczku użyjemy GCS do przechowywania ładunków metadanych przy użyciu zasobnika utworzonego automatycznie podczas konfiguracji. Jego nazwa będzie brzmieć <your-project-id>-kubeflowpipelines-default .

Utwórz potok

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

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

Następnie notatnik używa 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 platformy 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

Następnie notatnik używa polecenia tfx run create aby rozpocząć wykonywanie potoku. Zobaczysz także to uruchomienie na liście w obszarze Eksperymenty w panelu kontrolnym Kubeflow Pipelines.

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 związanym z nauką o danych lub uczeniem maszynowym jest zrozumienie i oczyszczenie danych.

  • Zapoznaj się z typami danych dla każdej funkcji
  • Szukaj anomalii i brakujących wartości
  • Zapoznaj się z dystrybucjami każdej funkcji

składniki

Składniki danychSkładniki danych

W edytorze plików laboratorium Jupyter:

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

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

( ExampleGen był już włączony 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 odwiedź pulpit nawigacyjny KFP i znajdź wyniki potoku na stronie uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i opcję „Wszystkie przebiegi” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą swojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma tak naprawdę jedynie na celu pomóc Ci zacząć. Bardziej zaawansowany przykład można znaleźć w Colab dotyczącym sprawdzania poprawności danych TensorFlow .

Więcej informacji na temat używania TFDV do eksploracji i sprawdzania zbioru danych można znaleźć w przykładach na tensorflow.org .

9. Inżynieria cech

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

  • Charakterystyczne krzyże
  • Słowniki
  • Osadzenia
  • PCA
  • Kodowanie kategoryczne

Jedną z zalet używania TFX jest to, że kod transformacji napiszesz raz, a powstałe w ten sposób transformacje będą spójne w przypadku uczenia i udostępniania.

składniki

Przekształcać

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

W edytorze plików laboratorium Jupyter:

W pipeline / pipeline.py znajdź i odkomentuj wiersz dołączający 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 odwiedź pulpit nawigacyjny KFP i znajdź wyniki potoku na stronie uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i opcję „Wszystkie przebiegi” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą swojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma tak naprawdę jedynie na celu pomóc Ci zacząć. Bardziej zaawansowany przykład można znaleźć w TensorFlow Transform Colab .

10. Szkolenie

Trenuj model TensorFlow przy użyciu ładnych, czystych i przekształconych danych.

  • Uwzględnij przekształcenia z poprzedniego kroku, aby zastosować je spójnie
  • Zapisz wyniki jako zapisany model do celów produkcyjnych
  • Wizualizuj i eksploruj proces szkolenia za pomocą TensorBoard
  • Zapisz także EvalSavedModel do analizy wydajności modelu

składniki

  • Trener trenuje model TensorFlow.

W edytorze plików laboratorium Jupyter:

W pipeline / pipeline.py znajdź i odkomentuj, 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 odwiedź pulpit nawigacyjny KFP i znajdź wyniki potoku na stronie uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i opcję „Wszystkie przebiegi” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą swojego potoku.

Bardziej zaawansowany przykład

Przedstawiony tutaj przykład ma tak naprawdę jedynie na celu pomóc Ci zacząć. Bardziej zaawansowany przykład można znaleźć w samouczku TensorBoard .

11. Analiza wydajności modelu

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

  • Użytkownicy doświadczają wydajności modelu tylko w przypadku swoich zapytań
  • Słabą wydajność wycinków danych można ukryć za pomocą wskaźników najwyższego poziomu
  • Wzorowa sprawiedliwość 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 dokonuje głębokiej analizy wyników szkolenia.

W edytorze plików laboratorium Jupyter:

W pipeline / pipeline.py znajdź i odkomentuj linię dołączającą 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 odwiedź pulpit nawigacyjny KFP i znajdź wyniki potoku na stronie uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i opcję „Wszystkie przebiegi” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą swojego potoku.

12. Służenie modelowi

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

  • Pusher wdraża SavedModels w dobrze znanych lokalizacjach

Cele wdrożenia otrzymują nowe modele ze znanych lokalizacji

  • Obsługa TensorFlow
  • TensorFlow Lite
  • TensorFlow JS
  • Hub TensorFlow

składniki

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

W edytorze plików laboratorium Jupyter:

W pipeline / pipeline.py znajdź i odkomentuj linię dołączającą Pusher do potoku:

# components.append(pusher)

Sprawdź wyjścia rurociągu

W przypadku Kubeflow Orchestrator odwiedź pulpit nawigacyjny KFP i znajdź wyniki potoku na stronie uruchomienia potoku. Kliknij kartę „Eksperymenty” po lewej stronie i opcję „Wszystkie przebiegi” na stronie Eksperymenty. Powinieneś być w stanie znaleźć przebieg z nazwą swojego potoku.

Dostępne cele wdrożenia

Przeszkoliłeś i zweryfikowałeś swój model, a Twój model jest teraz gotowy do produkcji. Możesz teraz wdrożyć swój model w dowolnym miejscu docelowym 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 , umożliwiający dołączenie modelu do natywnej aplikacji mobilnej na Androida lub iOS albo do aplikacji Raspberry Pi, IoT lub mikrokontrolera.
  • TensorFlow.js do uruchamiania modelu w przeglądarce internetowej lub aplikacji Node.JS.

Bardziej zaawansowane przykłady

Przykład przedstawiony powyżej ma tak naprawdę jedynie na celu pomóc Ci zacząć. Poniżej kilka przykładów integracji z innymi usługami Cloud.

Uwagi dotyczące zasobów Kubeflow Pipelines

W zależności od wymagań Twojego 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ą pipeline_operator_funcs w wywołaniu KubeflowDagRunnerConfig .

pipeline_operator_funcs to lista elementów OpFunc , która przekształca wszystkie wygenerowane instancje ContainerOp w specyfikację potoku KFP skompilowaną z KubeflowDagRunner .

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

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 laboratorium Jupyter:

Kliknij dwukrotnie, aby otworzyć pipeline.py . Skomentuj CsvExampleGen i odkomentuj wiersz tworzący instancję BigQueryExampleGen . Musisz także odkomentować argument query funkcji create_pipeline .

Musimy określić, którego projektu GCP użyć dla BigQuery, a można to zrobić, ustawiając --project w beam_pipeline_args podczas tworzenia potoku.

Kliknij dwukrotnie, aby otworzyć plik configs.py . Odkomentuj definicję BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS i BIG_QUERY_QUERY . Powinieneś zastąpić identyfikator projektu i wartość regionu w tym pliku poprawnymi wartościami dla swojego projektu GCP.

Zmień katalog o jeden poziom wyżej. 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 wykonania, tak jak to zrobiliśmy 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 wykorzystuje Apache Beam do implementowania równoległych potoków danych, co oznacza, że ​​możesz dystrybuować obciążenia związane z przetwarzaniem 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ć plik configs.py . Odkomentuj definicję GOOGLE_CLOUD_REGION i DATAFLOW_BEAM_PIPELINE_ARGS .

Zmień katalog o jeden poziom wyżej. Kliknij nazwę katalogu nad listą plików. Nazwa katalogu jest nazwą potoku, czyli my_pipeline , jeśli nie została zmieniona.

Kliknij dwukrotnie, aby otworzyć kubeflow_runner.py . Odkomentuj beam_pipeline_args . (Pamiętaj także o skomentowaniu bieżącego beam_pipeline_args dodanego 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 znajdziesz w Dataflow w Cloud Console .

Wypróbuj szkolenie i prognozowanie platformy Cloud AI 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, usługi zarządzanej do szkolenia modeli uczenia maszynowego. Co więcej, gdy model zostanie zbudowany i będzie gotowy do udostępnienia, możesz przekazać go do usługi Cloud AI Platform Prediction w celu udostępnienia. Na tym etapie skonfigurujemy nasz komponent Trainer i Pusher tak, aby korzystał z usług Cloud AI Platform.

Przed edycją 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ć plik configs.py . Odkomentuj definicję GOOGLE_CLOUD_REGION , GCP_AI_PLATFORM_TRAINING_ARGS i GCP_AI_PLATFORM_SERVING_ARGS . Będziemy używać naszego niestandardowego obrazu kontenera do uczenia modelu w szkoleniu Cloud AI Platform Training, dlatego powinniśmy ustawić masterConfig.imageUri w GCP_AI_PLATFORM_TRAINING_ARGS na tę samą wartość co CUSTOM_TFX_IMAGE powyżej.

Zmień katalog o jeden poziom wyżej i kliknij dwukrotnie, aby otworzyć kubeflow_runner.py . Odkomentuj 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}

Oferty pracy szkoleniowej możesz znaleźć w dziale Zadania platformy Cloud AI . Jeśli potok został pomyślnie ukończony, możesz znaleźć swój model w modelach platformy Cloud AI .

14. Korzystaj z własnych danych

W tym samouczku utworzono 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 w dowolnym miejscu, w którym potok ma do nich dostęp, na przykład w Google Cloud Storage, BigQuery lub plikach CSV.

Należy zmodyfikować definicję potoku, aby uwzględnić 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 na instrukcję zapytania.
  2. Dodaj funkcje w models / features.py .
  3. Zmodyfikuj models / preprocessing.py , aby przekształcić dane wejściowe na potrzeby uczenia .
  4. Zmodyfikuj models keras i models / keras / constants.py model.py aby opisać swój model ML .

Dowiedz się więcej o Trenerze

Aby uzyskać więcej informacji na temat potoków szkoleniowych, zobacz Przewodnik po komponencie trenera .

Sprzątanie

Aby wyczyścić wszystkie zasoby Google Cloud użyte 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