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.
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'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 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'e bağlanmak ve ortam oluşturmak yalnızca birkaç dakikanızı alır.
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:
Buradan kullanıcı tarafından yönetilen not defterleri bölümünde Yeni Not Defteri'ni tıklayın:
Ardından, GPU'suz TensorFlow Enterprise 2.3 (LTS özellikli) örnek türünü seçin:
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:
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:
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ürmetrain_sklearn_model
: Bir Scikit Learn modelini eğitmek ve bazı metriklerle birlikte dışa aktarmak için Pandas DataFrame'i kullanmadeploy_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:
İş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:
İ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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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: