1. Genel Bakış
Bu laboratuvarda, Vertex Pipelines'da Kubeflow Pipelines SDK'yı kullanarak özel model eğitimi işi çalıştırmayı öğreneceksiniz.
Öğrenecekleriniz
Öğrenecekleriniz:
- Ölçeklenebilir makine öğrenimi ardışık düzenleri oluşturmak için Kubeflow Pipelines SDK'yı kullanma
- Vertex AI tarafından yönetilen veri kümelerini kullanan ve bir işlem hattı içinde Vertex AI Training'de çalışacak özel bir Scikit-learn modeli eğitim işi oluşturma ve kapsülleme
- Vertex Pipelines'da toplu tahmin işi çalıştırma
google_cloud_pipeline_componentskitaplığı aracılığıyla sağlanan, Vertex AI hizmetleriyle etkileşim için önceden oluşturulmuş bileşenleri kullanma
Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 5 ABD dolarıdır.
2. Vertex AI'a giriş
Bu laboratuvarda, Google Cloud'daki uçtan uca yönetilen ML platformumuz Vertex AI kullanılmaktadır. Vertex AI, Google Cloud'daki Google'ın makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimiyle entegre eder. Vertex AI, model eğitimi ve dağıtım hizmetlerinin yanı sıra Vertex Pipelines (bu laboratuvarın odak noktası), 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.

Geri bildiriminiz varsa lütfen destek sayfasına göz atın.
ML 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 da tüm iş akışını tek bir monolit olarak ele alırsanız yönetilmesi zor bir durum haline 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: İşlem hatları, ML iş akışlarınızı basitleş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.
1. adım: Cloud Shell'i başlatın
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 kolayca ç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ışında aşağıdakine benzer bir sonuç görürsünüz:

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
2. Adım: API'leri etkinleştirme
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, aşağıdakine benzer bir başarı mesajı oluşturur:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. adım: 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
4. adım: Vertex AI Workbench örneği oluşturma
Cloud Console'unuzun Vertex AI bölümünde 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ıp Oluştur'u tıklayın.
5. adım: Not defterinizi açın
Ö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.
- Google Cloud Pipeline Components: Bu kitaplık, ardışık düzen adımlarınızdan Vertex AI hizmetleriyle etkileşimi kolaylaştıran önceden oluşturulmuş bileşenler sağlar.
1. adım: Python not defteri oluşturun ve kitaplıkları yükleyin
İlk olarak, not defterinizin sol üst kısmındaki + simgesini tıklayarak erişebileceğiniz Notebook örneğinizdeki Başlatıcı menüsünden Python 3'ü seçerek bir not defteri oluşturun:

Not defteri örneğinizin sol üst kısmındaki + işaretini tıklayarak Başlatıcı menüsüne erişebilirsiniz.
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 --upgrade
!pip3 install {USER_FLAG} kfp==1.8.9 google-cloud-pipeline-components==0.2.0
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)
Son olarak, paketleri doğru şekilde yüklediğinizden emin olun. KFP SDK sürümü 1.8 veya üzeri olmalıdır:
!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"
!python3 -c "import google_cloud_pipeline_components; print('google_cloud_pipeline_components version: {}'.format(google_cloud_pipeline_components.__version__))"
2. adım: Proje kimliğinizi ve paketinizi ayarlayın
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"
3. adım: Kitaplıkları içe aktarın
Bu codelab'de kullanacağımız kitaplıkları içe aktarmak için aşağıdakileri ekleyin:
from kfp.v2 import compiler, dsl
from kfp.v2.dsl import pipeline
from google.cloud import aiplatform
from google_cloud_pipeline_components import aiplatform as gcc_aip
4. adım: Sabitleri tanımlayın
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 model eğitimi işini yapılandırma
İşlem hattımızı oluşturmadan önce özel model eğitim işimiz için kodu yazmamız gerekir. Modeli eğitmek için KOKLU, M. ve OZKAN, I.A., (2020), "Multiclass Classification of Dry Beans Using Computer Vision and Machine Learning Techniques."In Computers and Electronics in Agriculture, 174, 105507. DOI.
İlk ardışık düzen adımımız, bu fasulye verilerinin bir sürümünü içeren bir BigQuery tablosunu kullanarak Vertex AI'da yönetilen bir veri kümesi oluşturacak. Veri kümesi, eğitim işimize giriş olarak aktarılır. Eğitim kodumuzda, bu yönetilen veri kümesine erişmek için ortam değişkenine erişimimiz olacak.
Özel eğitim işimizi nasıl ayarlayacağımız aşağıda açıklanmıştır:
- Verilerimizdeki fasulye türlerini sınıflandırmak için Scikit-learn
DecisionTreeClassifiermodeli yazma - Eğitim kodunu Docker container'ında paketleyin ve Container Registry'ye aktarın.
Buradan, doğrudan ardışık düzenimizden bir Vertex AI Training işi başlatabiliriz. Haydi, başlayalım.
1. adım: Eğitim kodumuzu bir Docker container'da tanımlayın
Notebooks örneğinizde Başlatıcı'yı açın ve Terminal'i seçin:

Ardından, kapsama alınmış kodunuzu ekleyeceğiniz bir dizin oluşturmak için aşağıdakileri çalıştırın:
mkdir traincontainer
cd traincontainer
touch Dockerfile
mkdir trainer
touch trainer/train.py
Bu komutları çalıştırdıktan sonra solda traincontainer/ adlı bir dizin görmeniz gerekir (görmek için yenile simgesini tıklamanız gerekebilir). traincontainer/ dizininizde şunları görürsünüz:
+ Dockerfile
+ trainer/
+ train.py
Kodumuzu kapsayıcılaştırmanın ilk adımı Dockerfile oluşturmaktır. Dockerfile'ımıza, görüntümüzü çalıştırmak için gereken tüm komutları ekleyeceğiz. Bu işlem, kullandığımız tüm kitaplıkları yükler ve eğitim kodumuz için giriş noktasını ayarlar. Yeni oluşturduğunuz Dockerfile'ı açın ve aşağıdakileri ekleyin:
FROM gcr.io/deeplearning-platform-release/sklearn-cpu.0-23
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
RUN pip install sklearn google-cloud-bigquery joblib pandas google-cloud-storage
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.train"]
Dosyaları not defteri örneğinizde düzenlerken kaydetmek için ctrl+s simgesini kullanabilirsiniz.
Ardından, train.py dosyasını açın. Eğitim kodumuzu buraya ekleyeceğiz. Aşağıdakileri train.py içine kopyalayın. Bu kod, yönetilen veri kümemizdeki verileri alır, bunları Pandas DataFrame'e yerleştirir, Scikit-learn modelini eğitir ve eğitilen modeli Cloud Storage'a yükler:
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_curve
from sklearn.model_selection import train_test_split
from google.cloud import bigquery
from google.cloud import storage
from joblib import dump
import os
import pandas as pd
bqclient = bigquery.Client()
storage_client = storage.Client()
def download_table(bq_table_uri: str):
prefix = "bq://"
if bq_table_uri.startswith(prefix):
bq_table_uri = bq_table_uri[len(prefix):]
table = bigquery.TableReference.from_string(bq_table_uri)
rows = bqclient.list_rows(
table,
)
return rows.to_dataframe(create_bqstorage_client=False)
# These environment variables are from Vertex AI managed datasets
training_data_uri = os.environ["AIP_TRAINING_DATA_URI"]
test_data_uri = os.environ["AIP_TEST_DATA_URI"]
# Download data into Pandas DataFrames, split into train / test
df = download_table(training_data_uri)
test_df = download_table(test_data_uri)
labels = df.pop("Class").tolist()
data = df.values.tolist()
test_labels = test_df.pop("Class").tolist()
test_data = test_df.values.tolist()
# Define and train the Scikit model
skmodel = DecisionTreeClassifier()
skmodel.fit(data, labels)
score = skmodel.score(test_data, test_labels)
print('accuracy is:',score)
# Save the model to a local file
dump(skmodel, "model.joblib")
# Upload the saved model file to GCS
bucket = storage_client.get_bucket("YOUR_GCS_BUCKET")
model_directory = os.environ["AIP_MODEL_DIR"]
storage_path = os.path.join(model_directory, "model.joblib")
blob = storage.blob.Blob.from_string(storage_path, client=storage_client)
blob.upload_from_filename("model.joblib")
Ardından, not defterinize geri dönün ve yukarıdaki komut dosyasındaki YOUR_GCS_BUCKET yerine Cloud Storage paketinizin adını yazıp aşağıdaki komutu çalıştırın:
BUCKET = BUCKET_NAME[5:] # Trim the 'gs://' before adding to train script
!sed -i -r 's@YOUR_GCS_BUCKET@'"$BUCKET"'@' traincontainer/trainer/train.py
İsterseniz bu işlemi manuel olarak da yapabilirsiniz. Bu durumda, komut dosyasını güncellerken gs:// karakterini paket adınıza eklememeye dikkat edin.
Eğitim kodumuz artık bir Docker container'ında ve bulutta eğitim çalıştırmaya hazırız.
2. adım: Kapsayıcıyı Container Registry'ye gönderin
Eğitim kodumuz tamamlandığına göre bunu Google Container Registry'ye göndermeye hazırız. Daha sonra, ardışık düzenimizin eğitim bileşenini yapılandırırken Vertex Pipelines'ı bu kapsayıcıya yönlendireceğiz.
Terminalinize geri dönün ve traincontainer/ dizininizin kökünden Container Registry'deki kapsayıcı görüntünüzün URI'sini içeren bir değişken tanımlayın.
PROJECT_ID=$(gcloud config get-value project)
IMAGE_URI="gcr.io/$PROJECT_ID/scikit:v1"
Ardından, aşağıdaki komutu çalıştırarak kapsayıcınızı oluşturun:
docker build ./ -t $IMAGE_URI
Son olarak, kapsayıcıyı Container Registry'ye gönderin:
docker push $IMAGE_URI
Container'ınızın orada olduğunu doğrulamak için Cloud Console'unuzun Container Registry bölümüne gidin. Şuna benzeyecektir:

6. Toplu tahmin işini yapılandırma
Ardışık düzenimizin son adımında toplu tahmin işi çalıştırılır. Bunun çalışması için Cloud Storage'da tahmin almak istediğimiz örnekleri içeren bir CSV dosyası sağlamamız gerekir. Bu CSV dosyasını not defterimizde oluşturup gsutil komut satırı aracını kullanarak Cloud Storage'a kopyalayacağız.
Toplu tahmin örneklerini Cloud Storage'a kopyalama
Aşağıdaki dosyada, fasulye veri kümemizdeki her sınıftan 3 örnek yer almaktadır. Aşağıdaki örnekte, modelimizin tahmin edeceği sütun olduğu için Class sütunu yer almıyor. Bu CSV dosyasını not defterinizde yerel olarak oluşturmak için aşağıdakileri çalıştırın:
%%writefile batch_examples.csv
Area,Perimeter,MajorAxisLength,MinorAxisLength,AspectRation,Eccentricity,ConvexArea,EquivDiameter,Extent,Solidity,roundness,Compactness,ShapeFactor1,ShapeFactor2,ShapeFactor3,ShapeFactor4
23288,558.113,207.567738,143.085693,1.450653336,0.7244336162,23545,172.1952453,0.8045881703,0.9890847314,0.9395021523,0.8295857874,0.008913077034,0.002604069884,0.6882125787,0.9983578734
23689,575.638,205.9678003,146.7475015,1.403552348,0.7016945718,24018,173.6714472,0.7652721693,0.9863019402,0.8983750474,0.8431970773,0.00869465998,0.002711119968,0.7109813112,0.9978994889
23727,559.503,189.7993849,159.3717704,1.190922235,0.5430731512,24021,173.8106863,0.8037601626,0.9877607094,0.952462433,0.9157600082,0.007999299741,0.003470231343,0.8386163926,0.9987269085
31158,641.105,212.0669751,187.1929601,1.132879009,0.4699241567,31474,199.1773023,0.7813134733,0.989959967,0.9526231013,0.9392188582,0.0068061806,0.003267009878,0.8821320637,0.9993488983
32514,649.012,221.4454899,187.1344232,1.183349841,0.5346736437,32843,203.4652564,0.7849831,0.9899826447,0.9700068737,0.9188051492,0.00681077351,0.002994124691,0.8442029022,0.9989873701
33078,659.456,235.5600775,178.9312328,1.316483846,0.6503915309,33333,205.2223615,0.7877214708,0.9923499235,0.9558229607,0.8712102818,0.007121351881,0.002530662194,0.7590073551,0.9992209221
33680,683.09,256.203255,167.9334938,1.525623324,0.7552213942,34019,207.081404,0.80680321,0.9900349805,0.9070392732,0.8082699962,0.007606985006,0.002002710402,0.6533003868,0.9966903078
33954,716.75,277.3684803,156.3563259,1.773951126,0.825970469,34420,207.9220419,0.7994819873,0.9864613597,0.8305492781,0.7496238998,0.008168948587,0.001591181142,0.5619359911,0.996846984
36322,719.437,272.0582306,170.8914975,1.591993952,0.7780978465,36717,215.0502424,0.7718560075,0.9892420405,0.8818487005,0.7904566678,0.007490177594,0.001803782407,0.6248217437,0.9947124371
36675,742.917,285.8908964,166.8819538,1.713132487,0.8119506999,37613,216.0927123,0.7788277766,0.9750618137,0.8350248381,0.7558572692,0.0077952528,0.001569528272,0.5713202115,0.9787472145
37454,772.679,297.6274753,162.1493177,1.835514817,0.8385619338,38113,218.3756257,0.8016695205,0.9827093118,0.7883332637,0.7337213257,0.007946480356,0.001420623993,0.5383469838,0.9881438654
37789,766.378,313.5680678,154.3409867,2.031657789,0.8704771226,38251,219.3500608,0.7805870567,0.9879218844,0.8085170916,0.6995293312,0.008297866252,0.001225659709,0.4893412853,0.9941740339
47883,873.536,327.9986493,186.5201272,1.758516115,0.822571799,48753,246.9140116,0.7584464543,0.9821549443,0.7885506623,0.7527897207,0.006850002074,0.00135695419,0.5666923636,0.9965376533
49777,861.277,300.7570338,211.6168613,1.42123379,0.7105823885,50590,251.7499649,0.8019106536,0.9839296304,0.843243269,0.8370542883,0.00604208839,0.001829706116,0.7006598815,0.9958014989
49882,891.505,357.1890036,179.8346914,1.986207449,0.8640114945,51042,252.0153467,0.7260210171,0.9772736178,0.7886896753,0.7055518063,0.007160679276,0.001094585314,0.4978033513,0.9887407248
53249,919.923,325.3866286,208.9174205,1.557489212,0.7666552108,54195,260.3818974,0.6966846347,0.9825445152,0.7907120655,0.8002231025,0.00611066177,0.001545654241,0.6403570138,0.9973491406
61129,964.969,369.3481688,210.9473449,1.750902193,0.8208567513,61796,278.9836198,0.7501135067,0.9892064211,0.8249553283,0.7553404711,0.006042110436,0.001213219664,0.5705392272,0.9989583843
61918,960.372,353.1381442,224.0962377,1.575832543,0.7728529173,62627,280.7782864,0.7539207091,0.9886790043,0.8436218213,0.7950947556,0.005703319619,0.00140599258,0.6321756704,0.9962029945
141953,1402.05,524.2311633,346.3974998,1.513380332,0.7505863011,143704,425.1354762,0.7147107987,0.9878152313,0.9074598849,0.8109694843,0.003692991084,0.0009853172185,0.6576715044,0.9953071199
145285,1440.991,524.9567463,353.0769977,1.486805285,0.7400216694,146709,430.0960442,0.7860466375,0.9902937107,0.8792413513,0.8192980608,0.003613289371,0.001004269363,0.6712493125,0.9980170255
146153,1476.383,526.1933264,356.528288,1.475881001,0.7354662103,149267,431.3789276,0.7319360978,0.9791380546,0.8425962592,0.8198107159,0.003600290972,0.001003163512,0.6720896099,0.991924286
Ardından dosyayı Cloud Storage paketinize kopyalayın:
!gsutil cp batch_examples.csv $BUCKET_NAME
İşlem hattımızı tanımlarken bir sonraki adımda bu dosyaya başvuracağız.
7. Önceden oluşturulmuş bileşenlerle ardışık düzen oluşturma
Eğitim kodumuz artık bulutta olduğuna göre, işlem hattımızdan çağrılabilir. Tanımlayacağımız ardışık düzen, daha önce yüklediğimiz google_cloud_pipeline_components kitaplığındaki önceden oluşturulmuş üç bileşeni kullanacak. Bu önceden tanımlanmış bileşenler, ardışık düzenimizi oluşturmak için yazmamız gereken kodu basitleştirir ve model eğitimi ile toplu tahmin gibi Vertex AI hizmetlerini kullanmamıza olanak tanır.
Üç adımlı ardışık düzenimiz şu işlemleri yapar:
- Vertex AI'da yönetilen veri kümesi oluşturma
- Oluşturduğumuz özel container'ı kullanarak Vertex AI'da eğitim işi çalıştırma
- Eğitilmiş Scikit-learn sınıflandırma modelimizde toplu tahmin işi çalıştırma
1. adım: Ardışık düzenimizi tanımlayın
Önceden oluşturulmuş bileşenler kullandığımız için ardışık düzenimizin tamamını ardışık düzen tanımında ayarlayabiliriz. Aşağıdakileri bir not defteri hücresine ekleyin:
@pipeline(name="automl-beans-custom",
pipeline_root=PIPELINE_ROOT)
def pipeline(
bq_source: str = "bq://sara-vertex-demos.beans_demo.large_dataset",
bucket: str = BUCKET_NAME,
project: str = PROJECT_ID,
gcp_region: str = REGION,
bq_dest: str = "",
container_uri: str = "",
batch_destination: str = ""
):
dataset_create_op = gcc_aip.TabularDatasetCreateOp(
display_name="tabular-beans-dataset",
bq_source=bq_source,
project=project,
location=gcp_region
)
training_op = gcc_aip.CustomContainerTrainingJobRunOp(
display_name="pipeline-beans-custom-train",
container_uri=container_uri,
project=project,
location=gcp_region,
dataset=dataset_create_op.outputs["dataset"],
staging_bucket=bucket,
training_fraction_split=0.8,
validation_fraction_split=0.1,
test_fraction_split=0.1,
bigquery_destination=bq_dest,
model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.0-24:latest",
model_display_name="scikit-beans-model-pipeline",
machine_type="n1-standard-4",
)
batch_predict_op = gcc_aip.ModelBatchPredictOp(
project=project,
location=gcp_region,
job_display_name="beans-batch-predict",
model=training_op.outputs["model"],
gcs_source_uris=["{0}/batch_examples.csv".format(BUCKET_NAME)],
instances_format="csv",
gcs_destination_output_uri_prefix=batch_destination,
machine_type="n1-standard-4"
)
2. adım: Ardışık düzeni derleyin ve çalıştırın
Ardışık düzeniniz tanımlandığına göre derlemeye hazırsınız. 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="custom_train_pipeline.json"
)
Ardından, TIMESTAMP değişkeni oluşturun. Bu bilgiyi iş kimliğimizde kullanacağız:
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
Ardından, birkaç projeye özel parametre ileterek ardışık düzen işinizi tanımlayın:
pipeline_job = aiplatform.PipelineJob(
display_name="custom-train-pipeline",
template_path="custom_train_pipeline.json",
job_id="custom-train-pipeline-{0}".format(TIMESTAMP),
parameter_values={
"project": PROJECT_ID,
"bucket": BUCKET_NAME,
"bq_dest": "bq://{0}".format(PROJECT_ID),
"container_uri": "gcr.io/{0}/scikit:v1".format(PROJECT_ID),
"batch_destination": "{0}/batchpredresults".format(BUCKET_NAME)
},
enable_caching=True,
)
Son olarak, yeni bir ardışık düzen yürütmesi oluşturmak için işi çalıştırın:
pipeline_job.submit()
Bu hücreyi çalıştırdıktan sonra, konsolunuzda ardışık düzen çalıştırmasını görüntüleme bağlantısı içeren günlükler görmeniz gerekir:

Bağlantıya gidin. Ardışık Düzenler kontrol panelinizi açarak da erişebilirsiniz. Ardışık düzeniniz tamamlandığında aşağıdaki gibi görünmelidir:

Bu işlem hattının çalışması 5-10 dakika sürer ancak tamamlanmadan bir sonraki adıma geçebilirsiniz. Ardından, bu işlem hattı adımlarının her birinde neler olduğu hakkında daha fazla bilgi edineceksiniz.
8. Ardışık düzeninizin yürütülmesini anlama
Şimdi, üç aşamalı dönüşüm hunimizin her bir adımını daha ayrıntılı olarak inceleyelim.
İşlem hattı 1. adım: Yönetilen veri kümesi oluşturma
Ardışık düzenimizin ilk adımı, Vertex AI'da yönetilen bir veri kümesi oluşturur. Konsolunuzun Pipelines (Kanallar) bölümünde aşağıdaki veri kümesi bağlantısını tıklarsanız:

Vertex AI'da veri kümenizi görürsünüz. Bu veri kümesi, BigQuery'deki veri kaynağına giden bir bağlantının yanı sıra veri kümenizdeki farklı sütunlarla ilgili bilgileri içerir. Vertex AI'a yönetilen bir veri kümesi yükledikten sonra bu veri kümesi, AutoML veya özel bir modeli eğitmek için kullanılabilir.
Yönetilen veri kümelerini kullanan özel model işlerinde Vertex AI, eğitim işlerinize özel ortam değişkenleri iletir ve verilerinizi eğitim ve test kümelerine ayırma işlemini gerçekleştirir. Bunu bir sonraki ardışık düzen adımımızda kullanacağız.
Ardışık Düzenin 2. Adımı: Vertex AI Training'de model eğitme
Özel eğitim işiniz çalışırken günlükleri doğrudan Vertex Pipelines konsolunda görüntülemek için tıklayabilirsiniz:

Özel eğitim işiyle ilgili ayrıntıları Vertex AI eğitim kontrol panelinizde de görebilirsiniz. Eğitim işi tamamlandığında Vertex AI'da bir Model kaynağı oluşturulur. Ardından, bu modeli online tahminler için bir uç noktaya dağıtabilir veya toplu tahmin işi oluşturabiliriz. Bunu bir sonraki ardışık düzen adımımızda yapacağız.
3. ardışık düzen adımı: Modelimizde toplu tahmin işi çalıştırma
Son olarak, işlem hattımız CSV dosyası aracılığıyla ilettiğimiz örnekler hakkında tahminler alır. Toplu tahmin işi tamamlandığında Vertex AI, Cloud Storage'da belirttiğimiz konuma bir CSV dosyası yazar. Bu ardışık düzen adımı çalışmaya başladığında, oluşturulan işi görmek için Vertex AI konsolunuzun Toplu Tahminler bölümüne gidebilirsiniz.
Toplu tahminlerinizin Cloud Storage URL'sini görmek için tamamlandığında işi tıklayın:

Tahmin sonuçlarını bulabileceğiniz Cloud Storage dizinine gitmek için bu bağlantıyı tıklayın, ardından prediction.results dosyalarından birini indirmek için tıklayın. Dosyada aşağıdaki gibi satırlar görmeniz gerekir:
{"instance": [33954.0, 716.75, 277.3684803, 156.3563259, 1.773951126, 0.825970469, 34420.0, 207.9220419, 0.7994819873, 0.9864613597, 0.8305492781, 0.7496238998, 0.008168948587, 0.001591181142, 0.5619359911, 0.996846984], "prediction": "HOROZ"}
Bu, belirli bir örneğin özellik değerlerinin yanı sıra modelimizin tahmin ettiği sınıfı içerir. Bu örnekte modelimiz, bunun "HOROZ" fasulyesi olduğunu düşünüyor.
Böylece laboratuvarı tamamladınız.
🎉 Tebrikler! 🎉
Vertex AI'ı kullanarak şunları yapmayı öğrendiniz:
- Özel bileşenlerle uçtan uca ardışık düzenler oluşturmak için Kubeflow Pipelines SDK'yı kullanma
- Ardışık düzenlerinizi Vertex Pipelines'da çalıştırma ve SDK ile ardışık düzen çalıştırmalarını başlatma
- Konsolda Vertex Pipelines grafiğinizi görüntüleme ve analiz etme
- Ardışık düzeninize Vertex AI hizmetleri eklemek için önceden oluşturulmuş ardışık düzen bileşenlerini kullanma
- Yinelenen ardışık düzen işlerini planlama
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.
1. adım: Not defteri örneğinizi durdurun veya silin
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:

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