Vertex ML Meta Verilerini Ardışık Düzenlerle Kullanma

1. Genel Bakış

Bu laboratuvarda, Vertex ML Metadata ile birlikte Vertex Pipelines çalıştırmalarınızdaki meta verileri nasıl analiz edeceğinizi öğreneceksiniz.

Öğrenecekleriniz

Öğrenecekleriniz:

  • Vertex AI'da veri kümesi oluşturan ve bu veri kümesinde özel bir Scikit-learn modeli eğiten ve dağıtan bir makine öğrenimi ardışık düzeni derlemek için Kubeflow Pipelines SDK'yı kullanın
  • Yapılar ve meta veriler oluşturan özel ardışık düzen bileşenlerini yazma
  • Hem Cloud Console'da hem de programatik olarak Vertex Pipelines çalıştırmalarını karşılaştırma
  • Ardışık düzen tarafından oluşturulan yapıların sırasını takip etme
  • Ardışık düzen çalıştırması meta verilerinizi sorgulama

Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 2 ABD dolarıdır.

2. Vertex AI'a giriş

Bu laboratuvarda, Google Cloud'daki en yeni AI ürün teklifi kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimiyle entegre eder. Önceden, AutoML ve özel modellerle eğitilen modellere ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, her ikisi de tek bir API'de ve diğer yeni ürünlerle birleştirilir. Dilerseniz mevcut projeleri Vertex AI'a taşıyabilirsiniz.

Vertex AI, model eğitimi ve dağıtım hizmetlerinin yanı sıra Vertex Pipelines, ML Metadata, Model Monitoring ve Feature Store gibi çeşitli MLOps ürünlerini de içerir. Vertex AI'ın sunduğu tüm ürün tekliflerini aşağıdaki şemada görebilirsiniz.

Vertex ürününe genel bakış

Bu laboratuvar, Vertex Pipelines'a ve Vertex ML Metadata'ya odaklanmaktadır.

Vertex AI ile ilgili geri bildiriminiz varsa lütfen destek sayfasını inceleyin.

Makine öğrenimi ardışık düzenleri neden faydalıdır?

Başlamadan önce, neden bir ardışık düzen kullanmak isteyeceğinizi öğrenelim. Veri işleme, model eğitme, hiperparametre ayarı, değerlendirme ve model dağıtımı özelliklerini içeren bir ML iş akışı oluşturduğunuzu düşünün. Bu adımların her birinin farklı bağımlılıkları olabilir. İş akışının tamamını monolit olarak ele alırsanız bunlar zorlaşabilir. Makine öğrenimi sürecinizi ölçeklendirmeye başladığınızda, makine öğrenimi iş akışınızı ekibinizdeki diğer kişilerle paylaşarak onların da çalıştırıp kod katkısında bulunmasına yardımcı olabilirsiniz. Güvenilir, tekrarlanabilir bir süreç olmadan bu zor olabilir. Ardışık düzenler sayesinde makine öğrenimi sürecinizdeki her adım kendi container'ıdır. Bu, adımları bağımsız olarak geliştirmenize ve her adımdaki giriş ve çıkışı tekrarlanabilir bir şekilde izlemenize olanak tanır. Ayrıca, yeni eğitim verileri kullanılabilir olduğunda bir ardışık düzen çalıştırması başlatmak gibi, Cloud ortamınızdaki diğer etkinliklere göre ardışık düzeninizin çalıştırılmasını planlayabilir veya tetikleyebilirsiniz.

Özet: Ardışık düzenler, makine öğrenimi iş akışınızı otomatikleştirmenize ve yeniden oluşturmanıza yardımcı olur.

3. Bulut ortamı kurulumu

Bu codelab'i çalıştırmak için faturalandırmanın etkin olduğu bir Google Cloud Platform projesine ihtiyacınız var. Proje oluşturmak için buradaki talimatları uygulayın.

Cloud Shell'i Başlatma

Bu laboratuvarda, Google'ın bulutunda çalışan bir sanal makine tarafından barındırılan bir komut çevirmeni olan Cloud Shell oturumunda çalışacaksınız. Bu bölümü yerel olarak kendi bilgisayarınızda da yerel olarak çalıştırabilirsiniz. Ancak Cloud Shell kullanarak herkes tutarlı bir ortamda tekrarlanabilir bir deneyime erişebilir. Laboratuvardan sonra bu bölümü bilgisayarınızda yeniden deneyebilirsiniz.

Cloud Shell'i yetkilendirin

Cloud Shell'i etkinleştirme

Cloud Console'un sağ üst köşesinden aşağıdaki düğmeyi tıklayarak Cloud Shell'i etkinleştirin:

Cloud Shell'i etkinleştirme

Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:

Cloud Shell kurulumu

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

Cloud Shell başlatma

Bu sanal makinede, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını görürsünüz.

Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud auth list

Komut çıkışı

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

Cloud Shell'de birkaç ortam değişkeni bulunur. Bunların arasında mevcut Cloud projemizin adını içeren GOOGLE_CLOUD_PROJECT yer alır. Bu adı, bu laboratuvar boyunca çeşitli yerlerde kullanacağız. Bu klasörü şu komutu çalıştırarak görebilirsiniz:

echo $GOOGLE_CLOUD_PROJECT

API'leri etkinleştir

Sonraki adımlarda bu hizmetlerin nerede, neden gerekli olduğunu göreceksiniz. Şimdilik projenizin Compute Engine, Container Registry ve Vertex AI hizmetlerine erişmesine izin vermek için şimdilik şu komutu çalıştırın:

gcloud services enable compute.googleapis.com         \
                       containerregistry.googleapis.com  \
                       aiplatform.googleapis.com

Bu işlem, aşağıdakine benzer başarılı bir mesaj üretir:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

Cloud Storage Paketi Oluşturma

Vertex AI'da eğitim işi çalıştırmak için kayıtlı model öğelerimizi depolayacak bir depolama paketine ihtiyacımız vardır. Paketin bölgesel olması gerekir. Burada us-central kullanıyoruz, ancak başka bir bölge de kullanabilirsiniz (bu laboratuvar boyunca başka bir bölgeyi değiştirmeniz yeterlidir). Zaten bir paketiniz varsa bu adımı atlayabilirsiniz.

Paket oluşturmak için Cloud Shell terminalinizde aşağıdaki komutları çalıştırın:

BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME

Ardından, işlem hizmeti hesabımızın bu pakete erişmesine izin vereceğiz. Bu sayede Vertex Pipelines bu pakete dosya yazmak için gerekli izinlere sahip olur. Bu izni eklemek için aşağıdaki komutu çalıştırın:

gcloud projects describe $GOOGLE_CLOUD_PROJECT > project-info.txt
PROJECT_NUM=$(cat project-info.txt | sed -nre 's:.*projectNumber\: (.*):\1:p')
SVC_ACCOUNT="${PROJECT_NUM//\'/}-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT --member serviceAccount:$SVC_ACCOUNT --role roles/storage.objectAdmin

Vertex AI Workbench örneği oluşturma

Cloud Console'un Vertex AI bölümünde Workbench'i tıklayın:

Vertex AI menüsü

İlgili sayfada Kullanıcı tarafından yönetilen not defterleri içinde Yeni Not Defteri'ni tıklayın:

Yeni not defteri oluştur

Ardından GPU'suz TensorFlow Enterprise 2.3 (LTS özellikli) örnek türünü seçin:

TFE örneği

Varsayılan seçenekleri kullanın ve ardından Oluştur'u tıklayın.

Not defterinizi açma

Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin:

Not defterini aç

4. Vertex Pipelines kurulumu

Vertex Pipelines'ı kullanmak için yüklememiz gereken birkaç kitaplık daha vardır:

  • Kubeflow Pipelines: Bu, ardışık düzenimizi oluşturmak için kullanacağımız SDK'dır. Vertex Pipelines, hem Kubeflow Pipelines hem de TFX ile derlenen ardışık düzenlerin çalıştırılmasını destekler.
  • Vertex AI SDK: Bu SDK, Vertex AI API'yi çağırma deneyimini optimize eder. Bu sistemi, ardışık düzenimizi Vertex AI'da çalıştırmak için kullanacağız.

Python not defteri oluşturma ve kitaplıkları yükleme

Öncelikle Not Defteri örneğinizdeki Başlatıcı menüsünden Python 3'ü seçerek bir not defteri oluşturun:

Python3 not defteri oluşturma

Bu laboratuvarda kullanacağımız her iki hizmeti de yüklemek için önce bir not defteri hücresinde kullanıcı işaretini ayarlayın:

USER_FLAG = "--user"

Ardından not defterinizden aşağıdaki komutu çalıştırın:

!pip3 install {USER_FLAG} google-cloud-aiplatform==1.7.0
!pip3 install {USER_FLAG} kfp==1.8.9

Bu paketleri yükledikten sonra çekirdeği yeniden başlatmanız gerekir:

import os

if not os.getenv("IS_TESTING"):
    # Automatically restart kernel after installs
    import IPython

    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)

Sonraki adımda, KFP SDK sürümünü doğru şekilde yüklediğinizden emin olun. Değer en az 1,8 olmalıdır:

!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"

Ardından Vertex AI SDK sürümünüzün 1.6.2 veya daha yeni bir sürüm olduğundan emin olun:

!pip list | grep aiplatform

Proje kimliğinizi ve paketinizi ayarlama

Bu laboratuvarda Cloud projenize ve daha önce oluşturduğunuz pakete atıfta bulunacaksınız. Şimdi, bunların her biri için değişkenler oluşturacağız.

Proje kimliğinizi bilmiyorsanız aşağıdaki kodu çalıştırarak alabilirsiniz:

import os
PROJECT_ID = ""

# Get your Google Cloud project ID from gcloud
if not os.getenv("IS_TESTING"):
    shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
    PROJECT_ID = shell_output[0]
    print("Project ID: ", PROJECT_ID)

Aksi halde buradan ayarlayın:

if PROJECT_ID == "" or PROJECT_ID is None:
    PROJECT_ID = "your-project-id"  # @param {type:"string"}

Ardından paket adınızı kaydedecek bir değişken oluşturun. Projeyi bu laboratuvarda oluşturduysanız aşağıdaki adımlar işinize yarayacaktır. Aksi takdirde, bunu manuel olarak ayarlamanız gerekir:

BUCKET_NAME="gs://" + PROJECT_ID + "-bucket"

Kitaplıkları içe aktar

Bu codelab'de kullanacağımız kitaplıkları içe aktarmak için şunları ekleyin:

import matplotlib.pyplot as plt
import pandas as pd

from kfp.v2 import compiler, dsl
from kfp.v2.dsl import pipeline, component, Artifact, Dataset, Input, Metrics, Model, Output, InputPath, OutputPath

from google.cloud import aiplatform

# We'll use this namespace for metadata querying
from google.cloud import aiplatform_v1

Sabit değerleri tanımlayın

Ardışık düzenimizi oluşturmadan önce yapmamız gereken son şey bazı sabit değişkenler tanımlamaktır. PIPELINE_ROOT, ardışık düzenimiz tarafından oluşturulan yapıların yazılacağı Cloud Storage yoludur. Burada bölge olarak us-central1 kullanıyoruz. Ancak paketinizi oluştururken farklı bir bölge kullandıysanız aşağıdaki kodda REGION değişkenini güncelleyin:

PATH=%env PATH
%env PATH={PATH}:/home/jupyter/.local/bin
REGION="us-central1"

PIPELINE_ROOT = f"{BUCKET_NAME}/pipeline_root/"
PIPELINE_ROOT

Yukarıdaki kodu çalıştırdıktan sonra, ardışık düzeninizin kök dizininin yazdırıldığını görmeniz gerekir. Bu, ardışık düzeninizdeki yapıların yazılacağı Cloud Storage konumudur. gs://YOUR-BUCKET-NAME/pipeline_root/ biçiminde olacaktır

5. Özel bileşenlerle 3 adımlı ardışık düzen oluşturma

Bu laboratuvarın odak noktası, ardışık düzen çalıştırmalarından elde edilen meta verileri anlamaktır. Bunun için Vertex Pipelines'da çalışacak bir ardışık düzene ihtiyacımız olacak. Buradan başlayacağız. Burada, aşağıdaki özel bileşenlere sahip 3 adımlı bir ardışık düzen tanımlayacağız:

  • get_dataframe: BigQuery tablosundan veri alma ve Pandas DataFrame'e dönüştürme
  • train_sklearn_model: Scikit Learn modelini ve bazı metrikleri eğitmek ve dışa aktarmak için Pandas DataFrame'i kullanın
  • deploy_model: Dışa aktarılan Scikit Learn modelini Vertex AI'daki bir uç noktaya dağıtma

Bu ardışık düzende KOKLU, M. ve OZKAN, I.A., (2020), "Bilgisayar Görüşü ve Makine Öğrenimi Tekniklerini Kullanarak Kuru Fasulyelerin Çok Sınıflı Sınıflandırılması.""Tarımda Bilgisayar ve Elektronikte, 174, 105507. DOI.

Bu, tablo biçiminde bir veri kümesidir. Ardışık düzenimizde, fasulyeleri özelliklerine göre 7 türden birinde sınıflandıran bir Scikit-learn modelini eğitmek, değerlendirmek ve dağıtmak için bu veri kümesini kullanacağız. Kodlamaya başlayalım.

Python işlevine dayalı bileşenler oluşturma

KFP SDK'sını kullanarak Python işlevlerine dayalı bileşenler oluşturabiliriz. Bunu, ardışık düzendeki 3 bileşende kullanacağız.

BigQuery verilerini indir ve CSV'ye dönüştür

İlk olarak get_dataframe bileşenini oluşturacağız:

@component(
    packages_to_install=["google-cloud-bigquery", "pandas", "pyarrow", "db-dtypes"],
    base_image="python:3.9",
    output_component_file="create_dataset.yaml"
)
def get_dataframe(
    bq_table: str,
    output_data_path: OutputPath("Dataset")
):
    from google.cloud import bigquery
    import pandas as pd
    import os

    project_number = os.environ["CLOUD_ML_PROJECT_ID"]
    bqclient = bigquery.Client(project=project_number)
    table = bigquery.TableReference.from_string(
        bq_table
    )
    rows = bqclient.list_rows(
        table
    )
    dataframe = rows.to_dataframe(
        create_bqstorage_client=True,
    )
    dataframe = dataframe.sample(frac=1, random_state=2)
    dataframe.to_csv(output_data_path)

Bu bileşende olanlara daha yakından bakalım:

  • @component tasarımcısı, ardışık düzen çalıştırıldığında bu işlevi bir bileşen olarak derler. Özel bileşen yazdığınızda bunu kullanırsınız.
  • base_image parametresi, bu bileşenin kullanacağı kapsayıcı görüntüsünü belirtir.
  • Bu bileşen, packages_to_install parametresiyle belirttiğimiz birkaç Python kitaplığını kullanır.
  • output_component_file parametresi isteğe bağlıdır ve derlenen bileşenin yazılacağı yaml dosyasını belirtir. Hücreyi çalıştırdıktan sonra söz konusu dosyanın not defteri örneğinize yazıldığını görürsünüz. Bu bileşeni bir kullanıcıyla paylaşmak isterseniz oluşturulan yaml dosyasını kendisine gönderebilir ve aşağıdaki şekilde yüklemesini isteyebilirsiniz:
# This is optional, it shows how to load a component from a yaml file
# dataset_component = kfp.components.load_component_from_file('./create_dataset.yaml')
  • Bu bileşen, BigQuery Python istemci kitaplığını kullanarak verilerimizi BigQuery'den bir Pandas DataFrame'e indirir ve ardından bu verilerin çıkış yapısını CSV dosyası olarak oluşturur. Bu, bir sonraki bileşenimize girdi olarak iletilecektir

Scikit-learn modelini eğitmek için bileşen oluşturma

Bu bileşende, daha önce oluşturduğumuz CSV'yi alıp Scikit-learn karar ağacı modelini eğitmek için kullanacağız. Bu bileşen, sonuçta elde edilen Scikit modelini ve modeli eğitmek için kullanılan veri kümesinin doğruluğunu, çerçevesini ve boyutunu içeren Metrics yapısını dışa aktarır:

@component(
    packages_to_install=["sklearn", "pandas", "joblib", "db-dtypes"],
    base_image="python:3.9",
    output_component_file="beans_model_component.yaml",
)
def sklearn_train(
    dataset: Input[Dataset],
    metrics: Output[Metrics],
    model: Output[Model]
):
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import roc_curve
    from sklearn.model_selection import train_test_split
    from joblib import dump

    import pandas as pd
    df = pd.read_csv(dataset.path)
    labels = df.pop("Class").tolist()
    data = df.values.tolist()
    x_train, x_test, y_train, y_test = train_test_split(data, labels)

    skmodel = DecisionTreeClassifier()
    skmodel.fit(x_train,y_train)
    score = skmodel.score(x_test,y_test)
    print('accuracy is:',score)

    metrics.log_metric("accuracy",(score * 100.0))
    metrics.log_metric("framework", "Scikit Learn")
    metrics.log_metric("dataset_size", len(df))
    dump(skmodel, model.path + ".joblib")

Modeli Vertex AI'a yüklemek ve dağıtmak için bileşen tanımlayın

Son olarak, son bileşenimiz önceki adımdan eğitilen modeli alıp Vertex AI'a yükleyecek ve bir uç noktaya dağıtacaktır:

@component(
    packages_to_install=["google-cloud-aiplatform"],
    base_image="python:3.9",
    output_component_file="beans_deploy_component.yaml",
)
def deploy_model(
    model: Input[Model],
    project: str,
    region: str,
    vertex_endpoint: Output[Artifact],
    vertex_model: Output[Model]
):
    from google.cloud import aiplatform

    aiplatform.init(project=project, location=region)

    deployed_model = aiplatform.Model.upload(
        display_name="beans-model-pipeline",
        artifact_uri = model.uri.replace("model", ""),
        serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.0-24:latest"
    )
    endpoint = deployed_model.deploy(machine_type="n1-standard-4")

    # Save data to the output params
    vertex_endpoint.uri = endpoint.resource_name
    vertex_model.uri = deployed_model.resource_name

Bu örnekte, tahmin için önceden oluşturulmuş bir container kullanarak modeli yüklemek üzere Vertex AI SDK'sından yararlanıyoruz. Daha sonra modeli bir uç noktaya dağıtır ve URI'ları hem model hem de uç nokta kaynaklarına döndürür. Bu codelab'in ilerleyen bölümlerinde, bu verileri yapı olarak döndürmenin ne anlama geldiği hakkında daha fazla bilgi edineceksiniz.

Ardışık düzeni tanımlama ve derleme

Üç bileşenimizi tanımladığımıza göre şimdi ardışık düzen tanımımızı oluşturacağız. Bu görselde, giriş ve çıkış yapılarının adımlar arasında nasıl ilerlediği açıklanmıştır:

@pipeline(
    # Default pipeline root. You can override it when submitting the pipeline.
    pipeline_root=PIPELINE_ROOT,
    # A name for the pipeline.
    name="mlmd-pipeline",
)
def pipeline(
    bq_table: str = "",
    output_data_path: str = "data.csv",
    project: str = PROJECT_ID,
    region: str = REGION
):
    dataset_task = get_dataframe(bq_table)

    model_task = sklearn_train(
        dataset_task.output
    )

    deploy_task = deploy_model(
        model=model_task.outputs["model"],
        project=project,
        region=region
    )

Aşağıdaki işlem, ardışık düzeni çalıştırmak için kullanacağınız bir JSON dosyası oluşturur:

compiler.Compiler().compile(
    pipeline_func=pipeline, package_path="mlmd_pipeline.json"
)

İki ardışık düzen çalıştırması başlatma

Ardından, ardışık düzenimizin iki çalıştırmasını başlatacağız. İlk olarak ardışık düzen iş kimliklerimiz için kullanılacak bir zaman damgası tanımlayalım:

from datetime import datetime

TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")

Ardışık düzenimizin, çalıştırıldığı sırada tek bir parametre aldığını unutmayın: Eğitim verileri için kullanmak istediğimiz bq_table. Bu ardışık düzen çalıştırması, çekirdek veri kümesinin daha küçük bir sürümünü kullanır:

run1 = aiplatform.PipelineJob(
    display_name="mlmd-pipeline",
    template_path="mlmd_pipeline.json",
    job_id="mlmd-pipeline-small-{0}".format(TIMESTAMP),
    parameter_values={"bq_table": "sara-vertex-demos.beans_demo.small_dataset"},
    enable_caching=True,
)

Ardından, aynı veri kümesinin daha büyük bir sürümünü kullanarak başka bir ardışık düzen çalıştırması oluşturun.

run2 = aiplatform.PipelineJob(
    display_name="mlmd-pipeline",
    template_path="mlmd_pipeline.json",
    job_id="mlmd-pipeline-large-{0}".format(TIMESTAMP),
    parameter_values={"bq_table": "sara-vertex-demos.beans_demo.large_dataset"},
    enable_caching=True,
)

Son olarak, her iki çalıştırma için ardışık düzen yürütmelerini başlatın. En iyi yöntem, her çalıştırmanın çıktısını görebilmek için bu işlemi iki ayrı not defteri hücresinde yapmanızdır.

run1.submit()

Ardından ikinci koşuyu başlatın:

run2.submit()

Bu hücreyi çalıştırdıktan sonra Vertex AI konsolunda her ardışık düzeni görüntülemek için kullanabileceğiniz bir bağlantı görürsünüz. Ardışık düzeninizle ilgili daha fazla ayrıntı görmek için şu bağlantıyı açın:

Ardışık düzen çalıştırma URL&#39;si

Tamamlandığında (bu ardışık düzenin çalıştırma başına yaklaşık 10-15 dakika sürmesi gerekir) aşağıdakine benzer bir sonuç görürsünüz:

sklearn ardışık düzeni tamamlandı

Tamamlanmış iki ardışık düzen çalıştırmanız olduğuna göre artık ardışık düzen yapılarını, metrikleri ve sırayı daha yakından incelemeye hazırsınız.

6. Ardışık düzen yapılarını ve sırayı anlama

Ardışık düzen grafiğinizde her adımdan sonra küçük kutular göreceksiniz. Bunlar, yapılar veya bir ardışık düzen adımından oluşturulan çıkışlardır. Birçok yapı türü vardır. Bu ardışık düzende veri kümesi, metrikler, model ve uç nokta yapıları bulunur. Her biriyle ilgili daha fazla ayrıntı görmek için kullanıcı arayüzünün üst kısmındaki Yapıları Genişlet kaydırma çubuğunu tıklayın:

Yapıları genişlet

Bir yapıyı tıkladığınızda, URI'sı da dahil olmak üzere yapıyla ilgili daha fazla ayrıntı gösterilir. Örneğin, vertex_endpoint yapısını tıkladığınızda, dağıtılan uç noktayı Vertex AI konsolunuzda bulabileceğiniz URI gösterilir:

Uç nokta yapısı ayrıntıları

Metrics yapısı, belirli bir ardışık düzen adımıyla ilişkilendirilen özel metrikleri iletmenizi sağlar. Ardışık düzenimizin sklearn_train bileşeninde modelimizin doğruluğu, çerçevesi ve veri kümesi boyutuyla ilgili metrikleri günlüğe kaydettik. İlgili ayrıntıları görmek için metrik yapısını tıklayın:

Model metrikleri

Her yapı, bağlı olduğu diğer eserleri açıklayan Lineage'a sahiptir. Ardışık düzeninizin vertex_endpoint yapısını tekrar tıklayın, ardından Seriyi Görüntüle düğmesini tıklayın:

Soyu göster

Bu işlem, seçtiğiniz yapıya bağlı tüm yapıları görebileceğiniz yeni bir sekme açar. Sıra grafiğiniz aşağıdaki gibi görünür:

Uç nokta sıra grafiği

Bu işlem, bu uç noktayla ilişkilendirilmiş modeli, metrikleri ve veri kümesini gösterir. Neden yararlı? Birden çok uç noktaya dağıtılan bir modeliniz olabilir veya modeli incelemekte olduğunuz uç noktaya dağıtılan modeli eğitmek için kullanılan belirli veri kümesini bilmeniz gerekebilir. Sıra grafiği, her bir yapıyı ML sisteminizin geri kalanı bağlamında anlamanıza yardımcı olur. Bu codelab'in sonraki bölümlerinde göreceğimiz gibi, sınıfa programatik olarak da erişebilirsiniz.

7. Ardışık düzen çalıştırmalarını karşılaştırma

Tek bir ardışık düzenin farklı giriş parametreleri, yeni veriler veya ekibinizdeki kişiler tarafından birden çok kez çalıştırılma olasılığı yüksektir. Ardışık düzen çalıştırmalarını takip etmek için bunları çeşitli metriklere göre karşılaştırabileceğiniz bir yönteme sahip olmanız faydalı olacaktır. Bu bölümde, çalıştırmaları karşılaştırmanın iki yolunu göreceğiz.

Ardışık düzenler kullanıcı arayüzündeki çalıştırmaları karşılaştırma

Cloud Console'da Pipelines kontrol panelinize gidin. Bu, yürüttüğünüz her ardışık düzen çalıştırmasına genel bir bakış sağlar. Son iki çalıştırmayı kontrol edin ve en üstteki Karşılaştır düğmesini tıklayın:

Çalıştırmaları karşılaştırma

Bu işlem, bizi seçtiğimiz her çalıştırmanın giriş parametrelerini ve metriklerini karşılaştırabileceğimiz bir sayfaya yönlendirir. Bu iki çalıştırma için farklı BigQuery tablolarına, veri kümesi boyutlarına ve doğruluk değerlerine dikkat edin:

Karşılaştırma metrikleri

Bu kullanıcı arayüzü işlevini kullanarak ikiden fazla çalıştırmayı, hatta farklı ardışık düzenlerden çalıştırmaları karşılaştırabilirsiniz.

Vertex AI SDK'sı ile çalıştırmaları karşılaştırma

Birçok ardışık düzen yürütmesinde, metrik ayrıntılarını derinlemesine incelemek ve görselleştirmeler oluşturmak için bu karşılaştırma metriklerini programatik olarak almanın bir yolunu bulmak isteyebilirsiniz.

Çalıştırma meta verilerine erişmek için aiplatform.get_pipeline_df() yöntemini kullanabilirsiniz. Burada, aynı ardışık düzenin son iki çalıştırmasına ait meta verileri alıp bunu bir Pandas DataFrame'e yükleyeceğiz. Buradaki pipeline parametresi, ardışık düzen tanımımızda ardışık düzenimize verdiğimiz adı ifade eder:

df = aiplatform.get_pipeline_df(pipeline="mlmd-pipeline")
df

DataFrame'i yazdırdığınızda şuna benzer bir sayfa görürsünüz:

Ardışık düzen metrikleri DataFrame

Ardışık düzenimizi burada yalnızca iki kez yürüttük. Ancak daha fazla yürütme işlemi sayesinde ne kadar metriğiniz olacağını tahmin edebilirsiniz. Şimdi, modelimizin doğruluğu ile eğitim için kullanılan veri miktarı arasındaki ilişkiyi görmek için matplotlib ile özel bir görselleştirme oluşturacağız.

Yeni bir not defteri hücresinde aşağıdaki komutu çalıştırın:

plt.plot(df["metric.dataset_size"], df["metric.accuracy"],label="Accuracy")
plt.title("Accuracy and dataset size")
plt.legend(loc=4)
plt.show()

Aşağıdakine benzer bir tablo görürsünüz:

Matplotlib meta veri grafiği

8. Ardışık düzen metriklerini sorgulama

Tüm ardışık düzen metrikleri için bir DataFrame almanın yanı sıra ML sisteminizde oluşturulan yapıları programatik olarak sorgulamak isteyebilirsiniz. Buradan özel bir kontrol paneli oluşturabilir veya kuruluşunuzdaki diğer kişilerin belirli yapılar hakkında ayrıntılı bilgi almasına izin verebilirsiniz.

Tüm model yapılarını alma

Yapıları bu şekilde sorgulamak için bir MetadataServiceClient oluşturacağız:

API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
metadata_client = aiplatform_v1.MetadataServiceClient(
  client_options={
      "api_endpoint": API_ENDPOINT
  }
)

Ardından, bu uç noktaya bir list_artifacts isteği gönderir ve yanıtımızda bulunmasını istediğimiz yapıları belirten bir filtre iletiriz. Öncelikle, projemizdeki model türündeki tüm yapıları getirelim. Bunun için not defterinizde aşağıdaki komutu çalıştırın:

MODEL_FILTER="schema_title = \"system.Model\""
artifact_request = aiplatform_v1.ListArtifactsRequest(
    parent="projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
    filter=MODEL_FILTER
)
model_artifacts = metadata_client.list_artifacts(artifact_request)

Elde edilen model_artifacts yanıtı, projenizdeki her model yapısı için yinelenebilir bir nesne ve her bir modelin ilişkili meta verilerini içerir.

Nesneleri filtreleme ve DataFrame'de görüntüleme

Sonuçta ortaya çıkan yapı sorgusunu daha kolay bir şekilde görselleştirebilirsek faydalı olur. Şimdi de 10 Ağustos 2021'den sonra oluşturulan tüm yapıları LIVE durumunda oluşturalım. Bu isteği çalıştırdıktan sonra sonuçları Pandas DataFrame'de gösteririz. İlk olarak isteği yürütün:

LIVE_FILTER = "create_time > \"2021-08-10T00:00:00-00:00\" AND state = LIVE"
artifact_req = {
    "parent": "projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
    "filter": LIVE_FILTER
}
live_artifacts = metadata_client.list_artifacts(artifact_req)

Ardından sonuçları bir DataFrame'de görüntüleyin:

data = {'uri': [], 'createTime': [], 'type': []}

for i in live_artifacts:
    data['uri'].append(i.uri)
    data['createTime'].append(i.create_time)
    data['type'].append(i.schema_title)

df = pd.DataFrame.from_dict(data)
df

Şuna benzer bir sayfa görürsünüz:

Filtrelenen yapı veri çerçevesi

Yapıları burada denediklerinize ek olarak diğer ölçütlere göre de filtreleyebilirsiniz.

Böylece laboratuvarı tamamlamış oldunuz.

🎉 Tebrikler! 🎉

Vertex AI'ı kullanarak şunları öğrendiniz:

  • Vertex AI'da veri kümesi oluşturan ve bu veri kümesinde özel bir Scikit-learn modeli eğiten ve dağıtan bir makine öğrenimi ardışık düzeni derlemek için Kubeflow Pipelines SDK'yı kullanın
  • Yapılar ve meta veriler oluşturan özel ardışık düzen bileşenlerini yazma
  • Hem Cloud Console'da hem de programatik olarak Vertex Pipelines çalıştırmalarını karşılaştırma
  • Ardışık düzen tarafından oluşturulan yapıların sırasını takip etme
  • Ardışık düzen çalıştırması meta verilerinizi sorgulama

Vertex'in farklı bölümleri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.

9. Temizleme

Ücret ödememek için bu laboratuvar boyunca oluşturulan kaynakları silmeniz önerilir.

Not defterleri örneğinizi durdurma veya silme

Bu laboratuvarda oluşturduğunuz not defterini kullanmaya devam etmek istiyorsanız, kullanmadığınız not defterini kapatmanız önerilir. Cloud Console'daki Notebooks kullanıcı arayüzünde not defterini, ardından Stop'ı (Durdur) seçin. Örneği tamamen silmek istiyorsanız Sil'i seçin:

Örneği durdur

Vertex AI uç noktalarınızı silme

Dağıttığınız uç noktayı silmek için Vertex AI konsolunuzun Uç Noktalar bölümüne gidip sil simgesini tıklayın:

Uç noktayı silin

Cloud Storage paketinizi silme

Storage Paketini silmek için Cloud Console'unuzdaki gezinme menüsünü kullanarak Storage'a gidin, paketinizi seçin ve Sil'i tıklayın:

Depolama alanını sil