1. Genel Bakış
Bu laboratuvarda, Vertex Pipelines'da Kubeflow Pipelines SDK'yı kullanarak özel model eğitim işi çalıştırmayı öğreneceksiniz.
Öğrenecekleriniz
Öğrenecekleriniz:
- Ölçeklenebilir makine öğrenimi ardışık düzenleri derlemek için Kubeflow Pipelines SDK'yı kullanma
- Vertex AI tarafından yönetilen veri kümelerini kullanan ve bir ardışık düzen içinde Vertex AI Training'de çalışacak özel bir Scikit-learn model eğitim işi oluşturup container mimarisine alın
- Vertex Pipelines içinde toplu tahmin işi çalıştırma
- Vertex AI hizmetleriyle etkileşime geçmek için
google_cloud_pipeline_components
kitaplığı üzerinden sağlanan önceden oluşturulmuş bileşenleri kullanın
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 olan Vertex AI kullanılmaktadır. Vertex AI, Google'ın Google Cloud'daki 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. Vertex AI'ın sunduğu tüm ürün tekliflerini aşağıdaki şemada görebilirsiniz.
Geri bildiriminiz varsa lütfen destek sayfasını inceleyin.
Makine öğrenimi ardışık düzenleri neden faydalıdır?
Başlamadan önce, neden bir ardışık düzen kullanmak isteyeceğinizi öğrenelim. Veri işleme, model eğitme, hiperparametre ayarı, değerlendirme ve model dağıtımı özelliklerini içeren bir ML iş akışı oluşturduğunuzu hayal edin. Bu adımların her birinin farklı bağımlılıkları olabilir. İş akışının tamamını monolit olarak ele alırsanız bunlar zorlaşabilir. 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, tekrarlanabilir bir süreç olmadan bu zor olabilir. Ardışık düzenler sayesinde makine öğrenimi sürecinizdeki her adım kendi container'ıdır. Bu, adımları bağımsız olarak geliştirmenize ve her adımdaki giriş ve çıkışı tekrarlanabilir bir şekilde izlemenize olanak tanır. 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, makine öğrenimi iş akışlarınızı kolaylaştırmanıza ve yeniden üretmenize 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 var. 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 çevirmeni 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ü bilgisayarınızda yeniden deneyebilirsiniz.
Cloud Shell'i etkinleştirme
Cloud Console'un sağ üst köşesinden 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ında) gösterilir. Bu durumda Devam'ı tıklayın (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
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 ayarlandığını görürsünüz.
Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list
Komut çıkışında şuna benzer bir çıkış görürsünüz:
gcloud komutunun projenizi bildiğini 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 birkaç ortam değişkeni bulunur. Bunların arasında mevcut Cloud projemizin adını içeren GOOGLE_CLOUD_PROJECT
yer alır. Bu adı, bu laboratuvar boyunca çeşitli yerlerde kullanacağız. Bu klasörü şu komutu çalıştırarak görebilirsiniz:
echo $GOOGLE_CLOUD_PROJECT
2. Adım: API'leri etkinleştirme
Sonraki adımlarda bu hizmetlerin nerede, neden gerekli olduğunu göreceksiniz. Şimdilik projenizin Compute Engine, Container Registry ve Vertex AI hizmetlerine erişmesine izin vermek için şimdilik şu komutu çalıştırın:
gcloud services enable compute.googleapis.com \
containerregistry.googleapis.com \
aiplatform.googleapis.com
Bu işlem, aşağıdakine benzer başarılı bir mesaj üretir:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Adım: Cloud Storage Paketi oluşturun
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). Zaten 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, işlem hizmeti hesabımızın bu pakete erişmesine izin vereceğiz. Bu sayede Vertex Pipelines bu pakete dosya yazmak için gerekli izinlere sahip olur. 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şturun
Cloud Console'un Vertex AI bölümünde Workbench'i tıklayın:
İlgili sayfada, Kullanıcı tarafından yönetilen Not Defteri'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 ardından Oluştur'u tıklayın.
5. Adım: Not Defterinizi açın
Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin:
4. Vertex Pipelines kurulumu
Vertex Pipelines'ı kullanmak için yüklememiz gereken birkaç kitaplık daha vardır:
- Kubeflow Pipelines: Bu, ardışık düzenimizi oluşturmak için kullanacağımız SDK'dır. Vertex Pipelines, hem Kubeflow Pipelines hem de TFX ile derlenen ardışık düzenlerin çalıştırılmasını destekler.
- Google Cloud Ardışık Düzeni Bileşenleri: Bu kitaplık, ardışık düzen adımlarınızdan Vertex AI hizmetleriyle etkileşime geçmeyi kolaylaştıran önceden oluşturulmuş bileşenler sağlar.
1. adım: Python not defteri oluşturun ve kitaplıkları yükleyin
Öncelikle Not Defteri örneğinizdeki Başlatıcı menüsünden (not defterinizin sol üst tarafındaki + simgesini tıklayarak erişebilirsiniz) Python 3'ü seçerek not defteri oluşturun:
Not defteri örneğinizin sol üst köşesindeki + 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ğıdaki komutu ç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 laboratuvarda Cloud projenize ve daha önce oluşturduğunuz pakete atıfta bulunacaksınız. Sonra, 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 halde buradan ayarlayın:
if PROJECT_ID == "" or PROJECT_ID is None:
PROJECT_ID = "your-project-id" # @param {type:"string"}
Ardından paket adınızı kaydedecek bir değişken oluşturun. Projeyi bu laboratuvarda oluşturduysanız aşağıdaki adımlar işinize yarayacaktır. 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 şunları 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: Sabit değerleri tanımlayın
Ardışık düzenimizi oluşturmadan önce yapmamız gereken son şey bazı sabit değişkenler 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, ardışık düzeninizin 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ğitim işi yapılandırma
Ardışık düzenimizi kurmadan önce özel model eğitim işmizin kodunu yazmamız gerekiyor. Modeli eğitmek için KOKLU, M. ve OZKAN, I.A., (2020), "Bilgisayar Görüşü ve Makine Öğrenimi Tekniklerini Kullanarak Kuru Fasulyelerin Çok Sınıflı Sınıflandırılması.""Tarımda Bilgisayar ve Elektronikte, 174, 105507. DOI.
İlk ardışık düzen adımımız, bu çekirdek verilerinin sürümünü içeren bir BigQuery tablosu kullanarak Vertex AI'da yönetilen bir veri kümesi oluşturacaktır. 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 şu şekilde oluşturacağız:
- Verilerimizdeki çekirdek türlerini sınıflandırmak için Scikit-learn
DecisionTreeClassifier
modeli yazın - Eğitim kodunu bir Docker container'ında paketleyin ve Container Registry'ye aktarın
Bu noktadan sonra doğrudan kendi ardışık düzenimizden Vertex AI Eğitimi işi başlatabileceğiz. Haydi, başlayalım.
1. Adım: Eğitim kodumuzu Docker container'ında tanımlayın
Not defterleri örneğinizden Başlatıcı'yı açın ve Terminal'i seçin:
Ardından aşağıdaki komutu çalıştırarak container mimarisine alınmış kodunuzu ekleyeceğiniz bir dizin oluşturun:
mkdir traincontainer
cd traincontainer
touch Dockerfile
mkdir trainer
touch trainer/train.py
Bu komutları çalıştırdıktan sonra, sol tarafta traincontainer/
adında bir dizin oluşturulur. Bu dizini görmek için yenile simgesini tıklamanız gerekebilir. traincontainer/
dizininizde aşağıdakiler gösterilir:
+ Dockerfile
+ trainer/
+ train.py
Kodumuzu container mimarisine almanın ilk adımı bir Dockerfile oluşturmaktır. Dockerfile'ımıza görüntümüzü çalıştırmak için gereken tüm komutları ekleyeceğiz. Kullandığımız tüm kitaplıkları yükler ve eğitim kodumuzun giriş noktasını ayarlar. Yeni oluşturduğunuz Dockerfile'ı açın ve aşağıdakini 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
işlevini kullanabilirsiniz.
Sonra, train.py
dosyasını açın. Eğitim kodumuzu buraya ekleyeceğiz. Aşağıdakini train.py
hedefine kopyalayın. Bu işlem, verileri yönetilen veri kümemizden getirir, bir 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
öğesini Cloud Storage paketinizin adıyla değiştirmek için 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
Dilerseniz bunu manuel olarak da yapabilirsiniz. Bunu yaparsanız komut dosyasını güncellerken gs://
öğesini paket adınıza eklemediğinizden emin olun.
Eğitim kodumuz bir Docker container'ında bulunuyor ve Cloud'da eğitim çalıştırmaya hazırız.
2. Adım: Container'ı Container Registry'ye aktarın
Eğitim kodumuz tamamlandığında bunu Google Container Registry'ye aktarmaya hazırız. Daha sonra ardışık düzenimizin eğitim bileşenini yapılandırdığımızda bu container'a Vertex Ardışık Düzenleri'ni yönlendireceğiz.
Terminalinize dönün ve traincontainer/
dizininizin kök dizininden Container Registry'deki container görüntünüzün URI'sıyla 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 container'ınızı derleyin:
docker build ./ -t $IMAGE_URI
Son olarak, container'ı Container Registry'ye aktarın:
docker push $IMAGE_URI
Kapsayıcınızın mevcut olduğunu doğrulamak için Cloud Console'un Container Registry bölümüne gidin. Şuna benzeyecektir:
6. Toplu tahmin işi yapılandırma
Ardışık düzenimizin son adımı bir toplu tahmin işi çalıştırır. Bunun işe yaraması için, tahmin almak istediğimiz örnekleri içeren bir CSV dosyasını Cloud Storage'da 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 dosya, çekirdek veri kümemizdeki her bir sınıftan 3 örnek içerir. Aşağıdaki örnekte, modelimiz tahmin edeceğinden Class
sütunu dahil değildir. Bu CSV dosyasını not defterinizde yerel olarak oluşturmak için aşağıdaki komutu ç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
Bir sonraki adımda ardışık düzenimizi tanımlarken bu dosyayı referanslayacağız.
7. Önceden oluşturulmuş bileşenlere sahip ardışık düzen oluşturma
Eğitim kodumuz bulutta yer aldığına göre artık ardışık düzenimizden çağrıda bulunmaya hazırız. Tanımlayacağımız ardışık düzen, daha önce yüklediğimiz google_cloud_pipeline_components
kitaplığından önceden oluşturulmuş üç bileşen kullanacaktır. Bu önceden tanımlanmış bileşenler, ardışık düzenimizi kurmak için yazmamız gereken kodu basitleştirir. Ayrıca, model eğitimi ve toplu tahmin gibi Vertex AI hizmetlerini kullanmamıza olanak tanır.
Üç adımlı ardışık düzenimizin işlevi şu şekildedir:
- Vertex AI'da yönetilen bir veri kümesi oluşturma
- Kurduğumuz özel container'ı kullanarak Vertx 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 tüm ardışık düzenimizi ardışık düzen tanımına yerleştirebiliriz. Not defteri hücresine aşağıdakileri 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ıktan sonra derlemeye hazırsınız demektir. Aşağıdaki işlem, 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="custom_train_pipeline.json"
)
Sonra, bir TIMESTAMP
değişkeni oluşturun. İş kimliğimizde bunu kullanacağız:
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
Ardından, projeye özgü birkaç parametreyi 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ükleri göreceksiniz:
Bu bağlantıya gidin. Bu sayfaya 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 ardışık düzenin çalıştırılması 5-10 dakika sürer ancak tamamlanmadan önce sonraki adıma geçebilirsiniz. Bir sonraki bölümde, bu ardışık düzen 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
Üç ardışık düzen adımımızı daha ayrıntılı bir şekilde inceleyelim.
Ardışık düzen 1. Adım: Yönetilen veri kümesi oluşturma
Ardışık düzenimizdeki ilk adım, Vertex AI'da yönetilen bir veri kümesi oluşturur. Konsolunuzun Ardışık düzenler bölümünde aşağıdaki veri kümesi bağlantısını tıklarsanız:
Veri kümenizi Vertex AI'da görürsünüz. Bu platformda, BigQuery'deki veri kaynağının bağlantısı ve veri kümenizdeki farklı sütunlarla ilgili bilgiler bulunur. Vertex AI'a yönetilen bir veri kümesi yüklendikten sonra, AutoML veya özel model eğitmek için bu veri kümesini kullanabilirsiniz.
Yönetilen veri kümeleri kullanan özel model işleri için Vertex AI, eğitim işlerinize özel ortam değişkenlerini iletir ve verilerinizi eğitim ve test kümelerine ayırmayı sağlar. Bunu bir sonraki ardışık düzen adımımızda kullanacağız.
Ardışık düzen 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 Model kaynağı oluşturulur. Böylece bu modeli online tahminler için bir uç noktaya dağıtabilir veya bir sonraki ardışık düzen adımımızda yapacağımız toplu tahmin işi oluşturabiliriz.
Ardışık düzen 3. Adım: Modelimizde toplu tahmin işi çalıştırma
Son olarak, ardışık düzenimiz CSV dosyası aracılığıyla iletilen ö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:
Bu bağlantıyı tıklayarak tahmin sonuçlarını bulabileceğiniz Cloud Storage dizinine gidin ve ardından prediction.results
dosyalarından birini indirmek için tıklayın. Dosyada şuna benzer satırlar görürsünüz:
{"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"}
Buna, modelimizin tahmin ettiği sınıfla birlikte belirli bir örnek için özellik değerleri dahildir. Bu örnekteki modelimiz bunun bir "HOROZ" olduğunu düşünüyor. fasulye.
Böylece laboratuvarı tamamlamış oldunuz.
🎉 Tebrikler! 🎉
Vertex AI'ı kullanarak şunları öğrendiniz:
- Özel bileşenlerle uçtan uca ardışık düzenler derlemek için Kubeflow Pipelines SDK'yı kullanın
- Ardışık düzenlerinizi Vertex Pipelines'da çalıştırın ve SDK ile ardışık düzen çalıştırmalarını başlatın
- Konsolda Vertex Pipelines grafiğinizi görüntüleme ve analiz etme
- Ardışık düzeninize Vertex AI hizmetlerini eklemek için önceden oluşturulmuş ardışık düzen bileşenlerini kullanın
- Yinelenen ardışık düzen işlerini planlama
Vertex'in farklı bölümleri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.
9. Temizleme
Ücret ödememek için bu laboratuvar boyunca oluşturulan kaynakları silmeniz önerilir.
1. Adım: Notebooks örneğinizi durdurun veya silin
Bu laboratuvarda oluşturduğunuz not defterini kullanmaya devam etmek istiyorsanız, kullanmadığınız not defterini kapatmanız önerilir. Cloud Console'daki Notebooks kullanıcı arayüzünde not defterini, ardından Stop'ı (Durdur) seçin. Örneği tamamen silmek istiyorsanız Sil'i seçin:
2. Adım: Cloud Storage paketinizi silin
Storage Paketini silmek için Cloud Console'unuzdaki gezinme menüsünü kullanarak Storage'a gidin, paketinizi seçin ve Sil'i tıklayın: