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 ve bu veri kümesinde özel bir Scikit-learn modelini eğitip dağıtan bir ML ardışık düzeni oluşturmak için Kubeflow Pipelines SDK'sını kullanın.
  • Artefak ve meta veri oluşturan özel ardışık düzen bileşenleri yazma
  • Vertex Pipelines çalıştırmalarını hem Cloud Console'da hem de programatik olarak 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ırma meta verilerinizi sorgulayın

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ılır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyiminde birleştirir. Daha önce, AutoML ile eğitilen modellere ve özel modellere ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, diğer yeni ürünlerle birlikte her ikisini de tek bir API'de birleştirir. Mevcut projeleri Vertex AI'a da taşıyabilirsiniz.

Vertex AI, model eğitimi ve dağıtım hizmetlerinin yanı sıra Vertex Pipelines, ML Meta Verileri, Model İzleme, Feature Store ve daha fazlası gibi çeşitli MLOps ürünlerini de içerir. Tüm Vertex AI ürün tekliflerini aşağıdaki şemada görebilirsiniz.

Vertex'e genel bakış

Bu laboratuvarda Vertex Pipelines ve Vertex ML Meta Verileri ele alınmaktadır.

Vertex AI ile ilgili geri bildiriminiz varsa lütfen destek sayfasına göz atın.

ML ardışık düzenleri neden yararlıdır?

Başlamadan önce, neden bir ardışık düzen kullanmak isteyeceğinizi öğrenelim. Veri işleme, model eğitimi, hiper parametre ayarı, değerlendirme ve model dağıtımı içeren bir makine öğrenimi iş akışı oluşturduğunuzu hayal edin. Bu adımların her birinin farklı bağımlılıkları olabilir. İş akışının tamamını tek bir birim olarak ele alırsanız bu durum can sıkıcı olabilir. 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 ve tekrarlanabilir bir süreç olmadan bu işlem zor olabilir. Veri akışlarında, makine öğrenimi işleminizdeki her adım kendi kapsayıcısına sahiptir. Bu sayede adımları bağımsız olarak geliştirebilir ve her adımdaki giriş ile çıkışı tekrarlanabilir bir şekilde izleyebilirsiniz. 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, ML iş akışınızı otomatikleştirmenize ve yeniden oluşturmanıza yardımcı olur.

3. Bulut ortamı kurulumu

Bu kod laboratuvarını çalıştırmak için faturalandırmanın etkin olduğu bir Google Cloud Platform projeniz olmalıdı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ısı 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ü kendi bilgisayarınızda tekrar deneyebilirsiniz.

Cloud Shell'e yetki verme

Cloud Shell'i etkinleştirme

Cloud Shell'i etkinleştirmek için Cloud Console'un sağ üst kısmındaki aşağıdaki düğmeyi tıklayın:

Cloud Shell'i etkinleştirme

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

Cloud Shell kurulumu

Cloud Shell'e bağlanmak ve ortam oluşturmak yalnızca birkaç dakikanızı alır.

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 göre ayarlandığını görürsünüz.

Kimliğinizi doğrulamak 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 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>

Doğru değilse aşağıdaki 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 gibi birkaç ortam değişkeni vardır. Bu laboratuvar boyunca çeşitli yerlerde bu değişkeni kullanacağız. Aşağıdaki komutu çalıştırarak bu bilgileri görebilirsiniz:

echo $GOOGLE_CLOUD_PROJECT

API'leri etkinleştir

Bu hizmetlerin nerelerde (ve neden) gerekli olduğunu sonraki adımlarda göreceksiniz. Şimdilik projenize Compute Engine, Container Registry ve Vertex AI hizmetlerine erişim vermek için aşağıdaki komutu çalıştırın:

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

Bu işlem, aşağıdakine benzer bir başarılı mesaj döndürür:

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). Halihazırda 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, bilgi işlem hizmet hesabımıza bu pakete erişim izni vereceğiz. Bu işlem, Vertex Pipelines'in 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ünden Workbench'i tıklayın:

Vertex AI menüsü

Buradan kullanıcı tarafından yönetilen not defterleri bölümünde Yeni Not Defteri'ni 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ın ve 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 ardışık düzenlerini 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 budur. Vertex Pipelines, hem Kubeflow Pipelines hem de TFX ile oluşturulan ardışık düzenlerin çalıştırılmasını destekler.
  • Vertex AI SDK'sı: Bu SDK, Vertex AI API'yi çağırma deneyimini optimize eder. Bu dosyayı, ardışık düzenimizi Vertex AI'da çalıştırmak için kullanacağız.

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

Öncelikle, not defteri örneğinizin 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)

Sonraki adımda, KFP SDK sürümünü doğru şekilde yüklediğinizden emin olun. 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 onaylayı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 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 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ğıdaki yöntem işe yarayacaktır. Aksi takdirde bunu manuel olarak ayarlamanız gerekir:

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

Kitaplıkları içe aktarma

Bu codelab boyunca 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ılmaktadır 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örürsünüz. Bu, ardışık düzeninizdeki yapıların yazılacağı Cloud Storage konumudur. gs://YOUR-BUCKET-NAME/pipeline_root/ biçimindedir.

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. Bunu yapmak için Vertex Pipelines'de çalışacak bir ardışık düzene ihtiyacımız var. Bu nedenle, işe ardışık düzen oluşturarak başlayacağız. Burada, aşağıdaki özel bileşenleri içeren 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: Bir Scikit Learn modelini eğitmek ve bazı metriklerle birlikte dışa aktarmak için Pandas DataFrame'i kullanma
  • 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 Teknikleri Kullanılarak Kuru Fasulyelerin Çok Sınıflı Sınıflandırılması."In Computers and Electronics in Agriculture, 174, 105507. DOI.

Bu, tablo biçiminde bir veri kümesidir. Veri kümesini, akışı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 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 neler olduğuna 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 yazarken her zaman bu sınıfı 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 derlenmiş 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örürsünüz. Bu bileşeni biriyle paylaşmak isterseniz oluşturulan yaml dosyasını gönderebilir ve aşağıdakilerle 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, BigQuery'deki verileri Pandas DataFrame'e indirmek için BigQuery Python istemci kitaplığını kullanır ve ardından bu verilerin CSV dosyası olarak bir çıkış yapısını oluşturur. Bu, bir sonraki bileşenimize girdi olarak iletilecektir

Scikit-learn modelini eğitmek için bir 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, elde edilen Scikit modelini ve modelimizin doğruluğunu, çerçevesini ve eğitmek için kullanılan veri kümesinin boyutunu içeren bir 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ükleyip dağıtacak bir bileşen tanımlama

Son olarak, son bileşenimiz önceki adımdaki eğitilmiş modeli alır, Vertex AI'a yükler ve bir uç noktaya dağıtı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

Burada, tahmin için önceden oluşturulmuş bir kapsayıcı kullanarak modeli yüklemek için Vertex AI SDK'sını 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ı 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 sırada ardışık düzen tanımı 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 komut, 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üzenimizi iki kez çalıştıracağı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")

Oluşturduğumuz ardışık düzeni çalıştırırken bir parametre kullandığını unutmayın: eğitim verileri için kullanmak istediğimiz bq_table. Bu ardışık düzen çalıştırmasında, beans veri kümesinin daha küçük bir sürümü kullanılı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 çalıştırma işlemlerini başlatın. Her çalıştırmanın çıktısını görebilmeniz için bunu iki ayrı not defteri hücresinde yapmanız önerilir.

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 ardışık düzeni görüntülemek için kullanabileceğiniz bir bağlantı görürsünüz. Akışınızla ilgili daha fazla bilgi görmek 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üzen, çalıştırma başına 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ı tamamladığınıza göre ardışık düzen yapılarını, metriklerini ve soy ağacını daha yakından incelemeye hazırsınız.

6. Ardışık düzen yapılarını ve soy ağacını anlama

Ardışık düzen grafiğinizde her adımdan sonra küçük kutular görürsünüz. Bunlar yapılar veya bir ardışık düzen adımında 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 biri hakkında daha fazla ayrıntı görmek için kullanıcı arayüzünün üst kısmındaki Öğeleri Genişlet kaydırma çubuğunu tıklayın:

Yapıları genişlet

Bir yapıyı tıkladığınızda URI'si de 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ı ayrıntıları

Metrics yapıları, belirli bir ardışık düzen adımı ile ilişkili özel metrikleri iletmenize olanak tanır. 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. Bu 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:

Soy ağacını göster

Bu işlem, seçtiğiniz öğeye bağlı tüm yapıları görebileceğiniz yeni bir sekme açar. Soy ağacı grafiğiniz şöyle görünür:

Uç noktası soy ağacı grafiği

Bu uç noktayla ilişkili modeli, metrikleri ve veri kümesini gösterir. Neden yararlı? Birden fazla uç noktaya dağıtılmış bir modeliniz olabilir veya incelediğiniz uç noktaya dağıtılan modeli eğitmek için kullanılan belirli veri kümesini bilmeniz gerekebilir. Soy ağacı grafiği, her yapıyı yapay zeka sisteminizin geri kalanı bağlamında anlamanıza yardımcı olur. Soyağacına programatik olarak da erişebilirsiniz. Bu konuyu bu codelab'in ilerleyen bölümlerinde ele alacağız.

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

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

Pipelines kullanıcı arayüzünde çalıştırmaları karşılaştırma

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

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

Bu işlem bizi, seçtiklerimiz her bir çalıştırma için giriş parametrelerini ve metrikleri 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ışma meta verilerine erişmek için aiplatform.get_pipeline_df() yöntemini kullanabilirsiniz. Burada, aynı ardışık düzenin son iki çalıştırmasının meta verilerini alıp bir Pandas DataFrame'e yükleyeceğiz. Buradaki pipeline parametresi, ardışık düzen tanımında 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 şey görürsünüz:

Ardışık düzen metrikleri DataFrame

Burada ardışık düzenimizi yalnızca iki kez yürüttük, ancak daha fazla yürütmeyle kaç metrik elde edeceğinizi 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ğı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 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

Artefaktları 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öndeririz ve yanıtımızda hangi yapıları görmek istediğimizi belirten bir filtre iletiriz. Öncelikle, projemizdeki model türündeki tüm yapıları getirelim. Bunun 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ısını ve her modelin ilişkili meta verilerini içeren bir iterlenebilir nesne içerir.

Nesneleri filtreleme ve bir veri çerçevesinde görüntüleme

Sonuç olarak elde edilen yapı sorgusunu daha kolay görselleştirebilsek iyi olur. Ardından, 10 Ağustos 2021'den sonra LIVE durumuyla oluşturulan tüm yapıları alalım. Bu isteği çalıştırdıktan sonra sonuçları bir 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ö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 şey görürsünüz:

Filtrelenmiş yapı veri kümesi

Burada denediğinize ek olarak yapıları diğer ölçütlere göre de filtreleyebilirsiniz.

Böylece laboratuvarı tamamlamış oldunuz.

🎉 Tebrikler. 🎉

Aşağıdakiler için Vertex AI'ı nasıl kullanacağınızı öğ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
  • Artefak ve meta veri oluşturan özel ardışık düzen bileşenleri yazma
  • Vertex Pipelines çalıştırmalarını hem Cloud Console'da hem de programatik olarak 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ırma meta verilerinizi sorgulayın

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

9. Temizleme

Sizden ücret alınmaması için bu laboratuvarda 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 Not Defteri kullanıcı arayüzünde not defterini, 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 sil simgesini tıklayın:

Uç noktayı silin

Cloud Storage paketinizi silme

Depolama paketini silmek için Cloud Console'daki Gezinme menüsünü kullanarak Depolama'ya gidin, paketinizi seçin ve Sil'i tıklayın:

Depolama alanını silme