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.

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'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 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'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

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:

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:

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

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:

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:

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ürmetrain_sklearn_model: Pandas DataFrame'i kullanarak bir Scikit Learn modelini eğitme ve bazı metriklerle birlikte dışa aktarmadeploy_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:
@componentdekoratö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_imageparametresi, bu bileşenin kullanacağı kapsayıcı görüntüsünü belirtir.- Bu bileşen,
packages_to_installparametresiyle belirttiğimiz birkaç Python kitaplığı kullanır. output_component_fileparametresi 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:

İş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:

İ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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:
