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

1. Genel Bakış

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

Öğrenecekleriniz

Öğrenecekleriniz:

  • Vertex AI'da veri kümesi oluşturan, bu veri kümesinde özel bir Scikit-learn modelini eğiten ve dağıtan bir ML ardışık düzeni oluşturmak için Kubeflow Pipelines SDK'sını kullanın.
  • Yapay nesneler ve meta veriler oluşturan özel işlem hattı bileşenleri 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 için soy ağacını izleme
  • Ardışık düzen çalıştırma 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'da sunulan en yeni yapay zeka ürünü kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimi için entegre eder. Daha önce, AutoML ile eğitilmiş modeller ve özel modeller ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, diğer yeni ürünlerle birlikte bu iki ürünü tek bir API'de birleştirir. Mevcut projeleri de 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. Tüm Vertex AI ürün tekliflerini aşağıdaki şemada görebilirsiniz.

Vertex ürününe genel bakış

Bu laboratuvarda Vertex Pipelines ve Vertex ML Metadata konuları ele alınmaktadır.

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

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

Ayrıntılara geçmeden önce, neden bir işlem hattı kullanmak isteyebileceğinizi anlayalım. Veri işleme, model eğitimi, hiperparametre ayarlama, değerlendirme ve model dağıtımı gibi adımları içeren bir makine öğrenimi iş akışı oluşturduğunuzu düşünün. Bu adımların her birinin farklı bağımlılıkları olabilir. Bu bağımlılıklar, iş akışının tamamını tek bir birim olarak ele alırsanız yönetilmesi zor bir hale gelebilir. Makine öğrenimi sürecinizi ölçeklendirmeye başladığınızda, makine öğrenimi iş akışınızı ekibinizdeki diğer kullanıcılarla paylaşmak isteyebilirsiniz. Böylece bu kullanıcılar iş akışını çalıştırabilir ve kod katkısında bulunabilir. Güvenilir ve tekrarlanabilir bir süreç olmadan bu zor olabilir. İşlem hatlarında, makine öğrenimi sürecinizdeki her adım kendi kapsayıcısında yer alır. Bu sayede adımları bağımsız olarak geliştirebilir ve her adımdaki giriş ve çıkışı tekrarlanabilir şekilde izleyebilirsiniz. Ayrıca, yeni eğitim verileri kullanıma sunulduğunda 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ırmaları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 vardır. 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 yorumlayıcı olan Cloud Shell oturumunda çalışacaksınız. Bu bölümü kendi bilgisayarınızda yerel olarak da çalıştırabilirsiniz ancak Cloud Shell'i kullanmak, herkesin tutarlı bir ortamda tekrarlanabilir bir deneyime erişmesini sağlar. Laboratuvarın ardından bu bölümü kendi bilgisayarınızda tekrar deneyebilirsiniz.

Cloud Shell'e yetki verme

Cloud Shell'i etkinleştirme

Cloud Console'un sağ üst kısmından 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ı) gösterilir. Bu durumda Devam'ı tıkladığınızda bu ekranı bir daha görmezsiniz. Bu tek seferlik ekran aşağıdaki gibi görünür:

Cloud Shell kurulumu

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

Cloud Shell init

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını yalnızca bir tarayıcı veya Chromebook'unuzla yapabilirsiniz.

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

Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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 projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

Cloud Shell'de, mevcut Cloud projemizin adını içeren GOOGLE_CLOUD_PROJECT dahil olmak üzere birkaç ortam değişkeni bulunur. Bu değeri laboratuvarın çeşitli yerlerinde kullanacağız. Bu durumu şu komutu çalıştırarak görebilirsiniz:

echo $GOOGLE_CLOUD_PROJECT

API'leri etkinleştir

Bu hizmetlerin nerede (ve neden) gerekli olduğunu sonraki adımlarda göreceksiniz. Ancak şimdilik projenizin Compute Engine, Container Registry ve Vertex AI hizmetlerine erişmesini sağlamak için bu komutu çalıştırın:

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

Bu işlem, şuna benzer bir başarılı mesajı oluşturur:

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 var. Paket bölgesel olmalıdır. Burada us-central kullanıyoruz ancak başka bir bölge de kullanabilirsiniz (bu laboratuvarda her yerde değiştirmeniz yeterlidir). Halihazırda bir paketiniz varsa bu adımı atlayabilirsiniz.

Bir 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, bu pakete işlem hizmeti hesabımızın erişmesini sağlayacağız. Bu işlem, Vertex Pipelines'ın bu pakete dosya yazmak için gerekli izinlere sahip olmasını sağlar. 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'unuzun Vertex AI bölümünde Workbench'i tıklayın:

Vertex AI menüsü

Buradan user-managed notebooks (kullanıcı tarafından yönetilen not defterleri) bölümünde New Notebook'u (Yeni Not Defteri) tıklayın:

Yeni not defteri oluşturma

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

TFE örneği

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

Not defterinizi açma

Örnek oluşturulduktan sonra Open JupyterLab'i (JupyterLab'i aç) seçin:

Not defterini açma

4. Vertex Pipelines kurulumu

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

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

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

İlk olarak, 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ğıdakileri ç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)

Ardından, KFP SDK sürümünü doğru şekilde yüklediğinizi kontrol edin. 1,8 veya daha yüksek 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 olduğunu doğrulayın:

!pip list | grep aiplatform

Proje kimliğinizi ve paketinizi ayarlama

Bu laboratuvar boyunca Cloud proje kimliğinize ve daha önce oluşturduğunuz pakete referans vereceksiniz. Ardından, bunların her biri için değişkenler oluşturacağız.

Proje kimliğinizi bilmiyorsanız aşağıdaki komutu ç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 takdirde, buradan ayarlayın:

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

Ardından, paketinizin adını depolayacak bir değişken oluşturun. Bu laboratuvarda oluşturduysanız aşağıdakiler işe yarar. Aksi takdirde, bunu manuel olarak ayarlamanız gerekir:

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

Kitaplıkları içe aktarma

Bu codelab'de kullanacağımız kitaplıkları içe aktarmak için aşağıdakileri 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

Sabitleri tanımlama

Ardışık düzenimizi oluşturmadan önce yapmamız gereken son şey, bazı sabit değişkenleri 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, işlem hattınızın 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ı bir ardışık düzen oluşturma

Bu laboratuvarda, ardışık düzen çalıştırmalarından elde edilen meta verileri anlamaya odaklanacağız. Bunu yapmak için Vertex Pipelines'da çalışacak bir işlem hattına ihtiyacımız var. İşleme buradan başlayacağız. Burada, aşağıdaki özel bileşenleri içeren 3 adımlı bir işlem hattı tanımlayacağız:

  • get_dataframe: BigQuery tablosundan veri alma ve bu verileri Pandas DataFrame'e dönüştürme
  • train_sklearn_model: Pandas DataFrame'i kullanarak bir Scikit Learn modelini eğitme ve bazı metriklerle birlikte dışa aktarma
  • 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. tarafından oluşturulan UCI Machine Learning Kuru fasulye veri kümesini kullanacağız. (2020), "Multiclass Classification of Dry Beans Using Computer Vision and Machine Learning Techniques."In Computers and Electronics in Agriculture, 174, 105507. DOI.

Bu, tablo biçiminde bir veri kümesidir. İşlem hattımızda, fasulyeleri özelliklerine göre 7 türden birine 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'yı kullanarak Python işlevlerine dayalı bileşenler oluşturabiliriz. Bu işlem hattındaki 3 bileşen için bunu kullanacağız.

BigQuery verilerini indirip CSV'ye dönüştürme

İ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 neler olduğuna daha yakından bakalım:

  • @component dekoratörü, işlem hattı çalıştırıldığında bu işlevi bir bileşene derler. Özel bir bileşen yazdığınız her zaman 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ığı 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 dosyanın not defteri örneğinize yazıldığını görmeniz gerekir. Bu bileşeni biriyle paylaşmak istiyorsanız oluşturulan YAML dosyasını gönderebilir ve aşağıdaki komutla 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')
  • Ardından bu bileşen, verilerimizi BigQuery'den Pandas DataFrame'e indirmek için BigQuery Python istemci kitaplığını kullanır ve bu verilerin çıkış yapıtını CSV dosyası olarak oluşturur. Bu, bir sonraki bileşenimize giriş olarak iletilecektir.

Scikit-learn modeli 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, ortaya çıkan Scikit modelini ve Metrics yapay nesnesini dışa aktarır. Yapay nesne, modelimizin doğruluğunu, çerçevesini ve modeli eğitmek için kullanılan veri kümesinin boyutunu içerir:

@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 bir bileşen tanımlayın

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

@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

Burada, tahmin için önceden oluşturulmuş bir kapsayıcı kullanarak modeli yüklemek için Vertex AI SDK'yı kullanıyoruz. Ardından modeli bir uç noktaya dağıtır ve hem model hem de uç nokta kaynaklarının URI'lerini döndürür. Bu codelab'in ilerleyen bölümlerinde, bu verileri yapılar 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 işlem hattı tanımımızı oluşturacağız. Bu, giriş ve çıkış yapıtlarının adımlar arasında nasıl aktığını açıklar:

@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 komut, işlem hattını ç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, işlem hattımızın iki çalıştırmasını başlatacağız. Öncelikle ardışık düzen iş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")

İşlem hattımızı çalıştırdığımızda 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ında, fasulye veri kümesinin daha küçük bir sürümü kullanılacaktı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 de ardışık düzen yürütmelerini başlatın. Bunu iki ayrı not defteri hücresinde yapmanız, her çalıştırmanın çıktısını görmenizi sağlar.

run1.submit()

Ardından, ikinci çalıştırmayı başlatın:

run2.submit()

Bu hücreyi çalıştırdıktan sonra, Vertex AI konsolunda her bir işlem hattını görüntülemek için bir bağlantı görürsünüz. Dönüşüm huninizle ilgili daha fazla bilgi için bu bağlantıyı açın:

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

İşlem tamamlandığında (bu ardışık düzenin her çalıştırması yaklaşık 10-15 dakika sürer) aşağıdakine benzer bir ekran görürsünüz:

Tamamlanmış sklearn ardışık düzeni

İki ardışık düzen çalıştırmasını tamamladığınıza göre artık ardışık düzen yapıtlarına, metriklerine ve soyuna daha yakından bakmaya hazırsınız.

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

Dönüşüm hunisi grafiğinizde her adımdan sonra küçük kutular görürsünüz. Bunlar, yapıtlar veya bir işlem hattı adımından oluşturulan çıktılardır. Birçok türde yapı vardır. Bu ardışık düzende veri kümesi, metrikler, model ve uç nokta yapay nesneleri bulunur. Her biri hakkında daha fazla ayrıntı görmek için kullanıcı arayüzünün üst kısmındaki Expand Artifacts (Öğeleri Genişlet) kaydırma çubuğunu tıklayın:

Yapıları genişletme

Bir yapıtı tıkladığınızda URI'si de dahil olmak üzere yapıtla ilgili daha fazla ayrıntı gösterilir. Örneğin, vertex_endpoint yapay nesnesini 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 işlem hattı adımıyla ilişkili özel metrikleri iletmenize olanak tanır. İşlem hattımızın sklearn_train bileşeninde modelimizin doğruluğu, çerçevesi ve veri kümesi boyutuyla ilgili metrikleri kaydettik. Bu ayrıntıları görmek için metrikler yapıtını tıklayın:

Model metrikleri

Her yapının, bağlı olduğu diğer yapıları açıklayan bir soy bilgisi vardır. İşlem hattınızın vertex_endpoint yapısını tekrar tıklayın ve ardından View Lineage (Soyu Görüntüle) düğmesini tıklayın:

Soyu göster

Bu işlem, seçtiğiniz öğeyle ilişkili tüm yapıtları görebileceğiniz yeni bir sekme açar. Soy grafiğiniz aşağıdaki gibi görünür:

Uç nokta soy grafiği

Bu, uç noktayla ilişkili modeli, metrikleri ve veri kümesini gösterir. Neden yararlıdır? Birden fazla uç noktaya dağıtılmış bir modeliniz olabilir veya baktığınız uç noktaya dağıtılan modeli eğitmek için kullanılan belirli veri kümesini bilmeniz gerekebilir. Soy grafiği, makine öğrenimi sisteminizin geri kalanı bağlamında her bir yapıyı anlamanıza yardımcı olur. Bu codelab'in ilerleyen bölümlerinde göreceğimiz gibi, soy bilgilerine programatik olarak da erişebilirsiniz.

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

Tek bir işlem hattı büyük olasılıkla birden çok kez çalıştırılır. Belki farklı giriş parametreleriyle, yeni verilerle veya ekibinizdeki kişiler tarafından. Ardışık düzen çalıştırmalarını takip etmek için bunları çeşitli metriklere göre karşılaştırmanın bir yolu olması faydalı olacaktır. Bu bölümde, çalıştırmaları karşılaştırmanın iki yolunu inceleyeceğiz.

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

Cloud Console'da Pipelines kontrol panelinize gidin. Bu görünümde, yürüttüğünüz her işlem hattı çalıştırmasına ilişkin genel bir bakış sunulur. Son iki çalıştırmayı kontrol edin ve ü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ırma için 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ı ve hatta farklı işlem hatlarındaki çalıştırmaları karşılaştırabilirsiniz.

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

Çok sayıda işlem hattı yürütmesiyle, metrik ayrıntılarını daha ayrıntılı incelemek ve görselleştirmeler oluşturmak için bu karşılaştırma metriklerini programatik olarak elde etmenin bir yolunu isteyebilirsiniz.

Çalıştırma meta verilerine erişmek için aiplatform.get_pipeline_df() yöntemini kullanabilirsiniz. Burada, aynı işlem hattının son iki çalıştırmasıyla ilgili meta verileri alıp 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 aşağıdakine benzer bir sonuç görürsünüz:

Ardışık düzen metrikleri DataFrame&#39;i

Burada yalnızca iki kez işlem hattı yürüttük ancak daha fazla yürütme ile kaç metrik elde edeceğinizi tahmin edebilirsiniz. Ardından, modelimizin doğruluğu ile eğitim için kullanılan veri miktarı arasındaki ilişkiyi görmek üzere matplotlib ile özel bir görselleştirme oluşturacağız.

Yeni bir not defteri hücresinde aşağıdakileri ç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 metriklerinin DataFrame'ini almanın yanı sıra, makine öğrenimi sisteminizde oluşturulan yapay nesneleri programatik olarak sorgulamak da isteyebilirsiniz. Buradan özel bir kontrol paneli oluşturabilir veya kuruluşunuzdaki diğer kullanıcıların belirli yapılarla ilgili ayrıntıları almasına izin verebilirsiniz.

Tüm model yapılarını alma

Bu şekilde sorgu oluşturmak için 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 list_artifacts isteği gönderip yanıtımızda hangi yapay nesneleri istediğimizi belirten bir filtre ileteceğiz. Öncelikle projemizdeki tüm modelleri alalım. Bunu yapmak için not defterinizde aşağıdakileri ç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ıtı için yinelenebilir bir nesne ve her modelle ilişkili meta verileri içerir.

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

Ortaya çıkan yapay nesne sorgusunu daha kolay görselleştirebilmek faydalı olurdu. Ardından, 10 Ağustos 2021'den sonra oluşturulan tüm çıktıları LIVE durumuyla alalım. Bu isteği çalıştırdıktan sonra sonuçları Pandas DataFrame'de gösteririz. Öncelikle 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österin:

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 şey görürsünüz:

Filtrelenmiş yapı yapısı

Yapıları, burada denediğiniz ölçütlerin yanı sıra başka ölçütlere göre de filtreleyebilirsiniz.

Böylece laboratuvarı tamamladınız.

🎉 Tebrikler! 🎉

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

  • Vertex AI'da veri kümesi oluşturan, bu veri kümesinde özel bir Scikit-learn modelini eğiten ve dağıtan bir ML ardışık düzeni oluşturmak için Kubeflow Pipelines SDK'sını kullanın.
  • Yapay nesneler ve meta veriler oluşturan özel işlem hattı bileşenleri 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 için soy ağacını izleme
  • Ardışık düzen çalıştırma meta verilerinizi sorgulama

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

9. Temizleme

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

Not defteri örneğinizi durdurma veya silme

Bu laboratuvarda oluşturduğunuz not defterini kullanmaya devam etmek istiyorsanız kullanmadığınız zamanlarda kapatmanız önerilir. Cloud Console'daki Notebooks kullanıcı arayüzünde not defterini ve ardından Durdur'u 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 gidin ve silme simgesini tıklayın:

Uç noktayı silin

Cloud Storage paketinizi silme

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

Depolama alanını silme