1. بررسی اجمالی
در این آزمایشگاه، از Vertex AI برای ایجاد خط لوله ای استفاده می کنید که یک مدل Keras سفارشی را در TensorFlow آموزش می دهد. سپس از عملکرد جدید موجود در Vertex AI Experiments برای ردیابی و مقایسه اجراهای مدل استفاده خواهیم کرد تا تشخیص دهیم کدام ترکیبی از فراپارامترها بهترین عملکرد را دارند.
چیزی که یاد می گیرید
شما یاد خواهید گرفت که چگونه:
- آموزش یک مدل Keras سفارشی برای پیشبینی رتبهبندی بازیکنان (به عنوان مثال، رگرسیون)
- از Kubeflow Pipelines SDK برای ساخت خطوط لوله ML مقیاس پذیر استفاده کنید
- یک خط لوله 5 مرحلهای ایجاد و اجرا کنید که دادهها را از فضای ذخیرهسازی ابری دریافت میکند، دادهها را مقیاسبندی میکند، مدل را آموزش میدهد، آن را ارزیابی میکند و مدل حاصل را دوباره در فضای ذخیرهسازی ابری ذخیره میکند.
- از Vertex ML Metadata برای ذخیره مصنوعات مدل مانند Models و Model Metrics استفاده کنید
- از آزمایشهای هوش مصنوعی Vertex برای مقایسه نتایج اجرای خطوط لوله مختلف استفاده کنید
کل هزینه اجرای این آزمایشگاه در Google Cloud حدود 1 دلار است.
2. مقدمه ای بر Vertex AI
این آزمایشگاه از جدیدترین محصول هوش مصنوعی موجود در Google Cloud استفاده می کند. Vertex AI پیشنهادات ML را در سراسر Google Cloud در یک تجربه توسعه یکپارچه ادغام می کند. پیش از این، مدلهای آموزش دیده با AutoML و مدلهای سفارشی از طریق سرویسهای جداگانه قابل دسترسی بودند. پیشنهاد جدید هر دو را به همراه سایر محصولات جدید در یک API واحد ترکیب می کند. همچنین می توانید پروژه های موجود را به Vertex AI منتقل کنید.
Vertex AI شامل بسیاری از محصولات مختلف برای پشتیبانی از گردش کار ML سرتاسر است. این آزمایشگاه بر روی محصولات برجسته شده در زیر تمرکز خواهد کرد: آزمایشها ، خطوط لوله ، فراداده ML و میز کار
3. از Case Overview استفاده کنید
ما از یک مجموعه داده محبوب فوتبال استفاده خواهیم کرد که از سری بازی های ویدیویی FIFA EA Sports تهیه شده است. این شامل بیش از 25000 مسابقه فوتبال و 10000+ بازیکن برای فصول 2008-2016 است. دادهها از قبل پردازش شدهاند تا بتوانید راحتتر به زمین برسید. شما از این مجموعه داده در سراسر آزمایشگاه استفاده خواهید کرد که اکنون می توانید آن را در یک سطل عمومی Cloud Storage پیدا کنید. ما جزئیات بیشتری را بعداً در نرم افزار کد در مورد نحوه دسترسی به مجموعه داده ارائه خواهیم داد. هدف نهایی ما این است که امتیاز کلی یک بازیکن را بر اساس اقدامات مختلف در بازی مانند مهار و پنالتی پیش بینی کنیم.
چرا Vertex AI Experiments برای Data Science مفید است؟
علم داده ماهیتی تجربی دارد - به هر حال آنها را دانشمندان می نامند. دانشمندان داده خوب فرضیه محور هستند و از آزمون و خطا برای آزمایش فرضیه های مختلف استفاده می کنند با این امید که تکرارهای متوالی منجر به مدلی کارآمدتر شود.
در حالی که تیم های علم داده آزمایش را پذیرفته اند، آنها اغلب برای پیگیری کار خود و "سس مخفی" که از طریق تلاش های آزمایشی آنها کشف شده است، تلاش می کنند. این به چند دلیل اتفاق می افتد:
- ردیابی مشاغل آموزشی می تواند دست و پا گیر شود و به راحتی از چشم آنچه که کار می کند در مقابل آنچه که نیست، غافل شود.
- این مشکل زمانی تشدید میشود که به یک تیم علم داده نگاه میکنید، زیرا ممکن است همه اعضا آزمایشها را ردیابی یا حتی نتایج خود را با دیگران به اشتراک نگذارند.
- جمعآوری دادهها زمانبر است و اکثر تیمها از روشهای دستی (مثلاً برگهها یا اسناد) استفاده میکنند که منجر به اطلاعات ناسازگار و ناقص برای یادگیری میشود.
tl;dr: Vertex AI Experiments کار را برای شما انجام می دهد و به شما کمک می کند تا آزمایشات خود را به راحتی ردیابی و مقایسه کنید.
چرا آزمایشهای هوش مصنوعی Vertex برای بازی؟
بازی از لحاظ تاریخی زمین بازی برای یادگیری ماشین و آزمایشات ML بوده است. بازیها نه تنها میلیاردها رویداد بلادرنگ در روز تولید میکنند، بلکه از تمام این دادهها با استفاده از آزمایشهای ML و ML برای بهبود تجربیات درون بازی، حفظ بازیکنان و ارزیابی بازیکنان مختلف در پلتفرم خود استفاده میکنند. از این رو ما فکر کردیم که مجموعه داده بازی به خوبی با تمرین کلی آزمایش ما مطابقت دارد.
4. محیط خود را تنظیم کنید
برای اجرای این کد لبه به یک پروژه Google Cloud Platform با فعال بودن صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعمل های اینجا را دنبال کنید.
مرحله 1: Compute Engine API را فعال کنید
به Compute Engine بروید و اگر قبلاً فعال نشده است Enable را انتخاب کنید.
مرحله ۲: Vertex AI API را فعال کنید
به بخش Vertex AI در Cloud Console خود بروید و روی Enable Vertex AI API کلیک کنید.
مرحله 3: یک نمونه Vertex AI Workbench ایجاد کنید
از بخش Vertex AI در Cloud Console خود، روی Workbench کلیک کنید:
اگر قبلاً API Notebooks وجود ندارد، آن را فعال کنید.
پس از فعال شدن، روی دفترچه یادداشت مدیریت شده کلیک کنید:
سپس NEW NOTEBOOK را انتخاب کنید.
نوت بوک خود را نامی بگذارید و سپس روی تنظیمات پیشرفته کلیک کنید.
در قسمت تنظیمات پیشرفته، خاموش شدن بیحرکت را فعال کنید و تعداد دقیقهها را روی 60 دقیقه تنظیم کنید. این بدان معناست که نوت بوک شما در صورت عدم استفاده به طور خودکار خاموش میشود تا هزینههای غیرضروری متحمل نشوید.
مرحله 4: نوت بوک خود را باز کنید
پس از ایجاد نمونه، Open JupyterLab را انتخاب کنید.
مرحله 5: احراز هویت (فقط برای اولین بار)
اولین باری که از یک نمونه جدید استفاده می کنید، از شما خواسته می شود که احراز هویت کنید. برای انجام این کار مراحل موجود در UI را دنبال کنید.
مرحله 6: هسته مناسب را انتخاب کنید
نوتبوکهای مدیریتشده چندین هسته را در یک رابط کاربری ارائه میکنند. هسته را برای Tensorflow 2 (محلی) انتخاب کنید.
5. مراحل راه اندازی اولیه در نوت بوک شما
قبل از ساخت خط لوله خود، باید یک سری مراحل اضافی را برای تنظیم محیط خود در نوت بوک خود انجام دهید. این مراحل عبارتند از: نصب هر بسته اضافی، تنظیم متغیرها، ایجاد سطل ذخیره سازی ابری شما، کپی کردن مجموعه داده بازی از یک سطل ذخیره سازی عمومی، و وارد کردن کتابخانه ها و تعریف ثابت های اضافی.
مرحله 1: بسته های اضافی را نصب کنید
ما نیاز به نصب وابستگی های بسته اضافی داریم که در حال حاضر در محیط نوت بوک شما نصب نشده اند. یک مثال شامل KFP SDK است.
!pip3 install --user --force-reinstall 'google-cloud-aiplatform>=1.15' -q --no-warn-conflicts
!pip3 install --user kfp -q --no-warn-conflicts
سپس می خواهید هسته Notebook را مجددا راه اندازی کنید تا بتوانید از بسته های دانلود شده در نوت بوک خود استفاده کنید.
# Automatically restart kernel after installs
import os
if not os.getenv("IS_TESTING"):
# Automatically restart kernel after installs
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
مرحله 2: متغیرها را تنظیم کنید
ما می خواهیم PROJECT_ID
خود را تعریف کنیم. اگر Project_ID
خود را نمی دانید، ممکن است بتوانید PROJECT_ID
خود را با استفاده از gcloud دریافت کنید.
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)
در غیر این صورت، PROJECT_ID
خود را در اینجا تنظیم کنید.
if PROJECT_ID == "" or PROJECT_ID is None:
PROJECT_ID = "[your-project-id]" # @param {type:"string"}
همچنین می خواهیم متغیر REGION
را تنظیم کنیم که در بقیه قسمت های این نوت بوک استفاده می شود. در زیر مناطق پشتیبانی شده برای Vertex AI آمده است. توصیه می کنیم نزدیک ترین منطقه به خود را انتخاب کنید.
- آمریکا: us-central1
- اروپا: europe-west4
- آسیا و اقیانوسیه: asia-east1
لطفاً از سطل چند منطقه ای برای آموزش با Vertex AI استفاده نکنید. همه مناطق از همه خدمات Vertex AI پشتیبانی نمی کنند. درباره مناطق Vertex AI بیشتر بیاموزید.
#set your region
REGION = "us-central1" # @param {type: "string"}
در نهایت یک متغیر TIMESTAMP
تنظیم می کنیم. این متغیرها برای جلوگیری از تضاد نام بین کاربران در منابع ایجاد شده استفاده می شود، شما برای هر جلسه نمونه یک TIMESTAMP
ایجاد می کنید و آن را به نام منابعی که در این آموزش ایجاد می کنید اضافه می کنید.
#set timestamp to avoid collisions between multiple users
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
مرحله 3: یک سطل ذخیره سازی ابری ایجاد کنید
شما باید یک سطل مرحلهبندی Cloud Storage را مشخص کرده و از آن استفاده کنید. سطل مرحلهبندی جایی است که تمام دادههای مرتبط با مجموعه داده و منابع مدل شما در طول جلسات نگهداری میشوند.
نام سطل Cloud Storage خود را در زیر تنظیم کنید. نامهای سطل باید در تمام پروژههای Google Cloud، از جمله پروژههای خارج از سازمان شما، در سطح جهانی منحصربهفرد باشند.
#set cloud storage bucket
BUCKET_NAME = "[insert bucket name here]" # @param {type:"string"}
BUCKET_URI = f"gs://{BUCKET_NAME}"
اگر سطل شما از قبل وجود ندارد، می توانید سلول زیر را برای ایجاد سطل ذخیره سازی ابری خود اجرا کنید.
! gsutil mb -l $REGION -p $PROJECT_ID $BUCKET_URI
سپس می توانید با اجرای سلول زیر دسترسی به سطل فضای ذخیره سازی ابری خود را تأیید کنید.
#verify access
! gsutil ls -al $BUCKET_URI
مرحله 4: مجموعه داده بازی ما را کپی کنید
همانطور که قبلا ذکر شد، شما از یک مجموعه داده بازی محبوب از بازی های ویدیویی موفق EA Sports، FIFA استفاده خواهید کرد. ما کار پیش پردازش را برای شما انجام داده ایم، بنابراین شما فقط باید مجموعه داده را از سطل ذخیره سازی عمومی کپی کنید و آن را به چیزی که ایجاد کرده اید منتقل کنید.
# copy the data over to your cloud storage bucket
DATASET_URI = "gs://cloud-samples-data/vertex-ai/structured_data/player_data"
!gsutil cp -r $DATASET_URI $BUCKET_URI
مرحله 5: کتابخانه ها را وارد کنید و ثابت های اضافی را تعریف کنید
در مرحله بعد می خواهیم کتابخانه های خود را برای Vertex AI، KFP و غیره وارد کنیم.
import logging
import os
import time
logger = logging.getLogger("logger")
logging.basicConfig(level=logging.INFO)
import kfp.v2.compiler as compiler
# Pipeline Experiments
import kfp.v2.dsl as dsl
# Vertex AI
from google.cloud import aiplatform as vertex_ai
from kfp.v2.dsl import Artifact, Input, Metrics, Model, Output, component
from typing import NamedTuple
ما همچنین ثابت های اضافی را تعریف خواهیم کرد که در بقیه نوت بوک مانند مسیر(های) فایل به داده های آموزشی خود به آنها مراجعه خواهیم کرد.
#import libraries and define constants
# Experiments
TASK = "regression"
MODEL_TYPE = "tensorflow"
EXPERIMENT_NAME = f"{PROJECT_ID}-{TASK}-{MODEL_TYPE}-{TIMESTAMP}"
# Pipeline
PIPELINE_URI = f"{BUCKET_URI}/pipelines"
TRAIN_URI = f"{BUCKET_URI}/player_data/data.csv"
LABEL_URI = f"{BUCKET_URI}/player_data/labels.csv"
MODEL_URI = f"{BUCKET_URI}/model"
DISPLAY_NAME = "experiments-demo-gaming-data"
BQ_DATASET = "player_data"
BQ_LOCATION = "US"
VIEW_NAME = 'dataset_test'
PIPELINE_JSON_PKG_PATH = "experiments_demo_gaming_data.json"
PIPELINE_ROOT = f"gs://{BUCKET_URI}/pipeline_root"
6. بیایید خط لوله خود را بسازیم
اکنون سرگرمی شروع می شود و می توانیم از Vertex AI برای ایجاد خط لوله آموزشی خود استفاده کنیم. ما Vertex AI SDK را مقداردهی اولیه می کنیم، کار آموزشی خود را به عنوان یک جزء خط لوله راه اندازی می کنیم، خط لوله خود را می سازیم، اجرای خط لوله خود را ارسال می کنیم و از Vertex AI SDK برای مشاهده آزمایش ها و نظارت بر وضعیت آنها استفاده می کنیم.
مرحله 1: Vertex AI SDK را راه اندازی کنید
Vertex AI SDK را راهاندازی کنید، PROJECT_ID
و BUCKET_URI
خود را تنظیم کنید.
#initialize vertex AI SDK
vertex_ai.init(project=PROJECT_ID, staging_bucket=BUCKET_URI)
مرحله 2: کار آموزشی خود را به عنوان یک جزء خط لوله تنظیم کنید
برای شروع آزمایش های خود، باید کار آموزشی خود را با تعریف آن به عنوان یک جزء خط لوله مشخص کنیم. خط لوله ما داده ها و فراپارامترهای آموزشی (به عنوان مثال، DROPOUT_RATE ، LEARNING_RATE ، EPOCHS ) را به عنوان معیارهای مدل ورودی و خروجی (مانند MAE و RMSE ) و یک مصنوع مدل در نظر می گیرد.
@component(
packages_to_install=[
"numpy==1.21.0",
"pandas==1.3.5",
"scikit-learn==1.0.2",
"tensorflow==2.9.0",
]
)
def custom_trainer(
train_uri: str,
label_uri: str,
dropout_rate: float,
learning_rate: float,
epochs: int,
model_uri: str,
metrics: Output[Metrics],
model_metadata: Output[Model],
):
# import libraries
import logging
import uuid
from pathlib import Path as path
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.metrics import Metric
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error
import numpy as np
from math import sqrt
import os
import tempfile
# set variables and use gcsfuse to update prefixes
gs_prefix = "gs://"
gcsfuse_prefix = "/gcs/"
train_path = train_uri.replace(gs_prefix, gcsfuse_prefix)
label_path = label_uri.replace(gs_prefix, gcsfuse_prefix)
model_path = model_uri.replace(gs_prefix, gcsfuse_prefix)
def get_logger():
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(
logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
)
logger.addHandler(handler)
return logger
def get_data(
train_path: str,
label_path: str
) -> (pd.DataFrame):
#load data into pandas dataframe
data_0 = pd.read_csv(train_path)
labels_0 = pd.read_csv(label_path)
#drop unnecessary leading columns
data = data_0.drop('Unnamed: 0', axis=1)
labels = labels_0.drop('Unnamed: 0', axis=1)
#save as numpy array for reshaping of data
labels = labels.values
data = data.values
# Split the data
labels = labels.reshape((labels.size,))
train_data, test_data, train_labels, test_labels = train_test_split(data, labels, test_size=0.2, shuffle=True, random_state=7)
#Convert data back to pandas dataframe for scaling
train_data = pd.DataFrame(train_data)
test_data = pd.DataFrame(test_data)
train_labels = pd.DataFrame(train_labels)
test_labels = pd.DataFrame(test_labels)
#Scale and normalize the training dataset
scaler = StandardScaler()
scaler.fit(train_data)
train_data = pd.DataFrame(scaler.transform(train_data), index=train_data.index, columns=train_data.columns)
test_data = pd.DataFrame(scaler.transform(test_data), index=test_data.index, columns=test_data.columns)
return train_data,train_labels, test_data, test_labels
""" Train your Keras model passing in the training data and values for learning rate, dropout rate,and the number of epochs """
def train_model(
learning_rate: float,
dropout_rate: float,
epochs: float,
train_data: pd.DataFrame,
train_labels: pd.DataFrame):
# Train tensorflow model
param = {"learning_rate": learning_rate, "dropout_rate": dropout_rate, "epochs": epochs}
model = Sequential()
model.add(Dense(500, input_dim=train_data.shape[1], activation= "relu"))
model.add(Dropout(param['dropout_rate']))
model.add(Dense(100, activation= "relu"))
model.add(Dense(50, activation= "relu"))
model.add(Dense(1))
model.compile(
tf.keras.optimizers.Adam(learning_rate= param['learning_rate']),
loss='mse',
metrics=[tf.keras.metrics.RootMeanSquaredError(),tf.keras.metrics.MeanAbsoluteError()])
model.fit(train_data, train_labels, epochs= param['epochs'])
return model
# Get Predictions
def get_predictions(model, test_data):
dtest = pd.DataFrame(test_data)
pred = model.predict(dtest)
return pred
# Evaluate predictions with MAE
def evaluate_model_mae(pred, test_labels):
mae = mean_absolute_error(test_labels, pred)
return mae
# Evaluate predictions with RMSE
def evaluate_model_rmse(pred, test_labels):
rmse = np.sqrt(np.mean((test_labels - pred)**2))
return rmse
#Save your trained model in GCS
def save_model(model, model_path):
model_id = str(uuid.uuid1())
model_path = f"{model_path}/{model_id}"
path(model_path).parent.mkdir(parents=True, exist_ok=True)
model.save(model_path + '/model_tensorflow')
# Main ----------------------------------------------
train_data, train_labels, test_data, test_labels = get_data(train_path, label_path)
model = train_model(learning_rate, dropout_rate, epochs, train_data,train_labels )
pred = get_predictions(model, test_data)
mae = evaluate_model_mae(pred, test_labels)
rmse = evaluate_model_rmse(pred, test_labels)
save_model(model, model_path)
# Metadata ------------------------------------------
#convert numpy array to pandas series
mae = pd.Series(mae)
rmse = pd.Series(rmse)
#log metrics and model artifacts with ML Metadata. Save metrics as a list.
metrics.log_metric("mae", mae.to_list())
metrics.log_metric("rmse", rmse.to_list())
model_metadata.uri = model_uri
مرحله 3: خط لوله خود را بسازید
اکنون گردش کار خود را با استفاده از Domain Specific Language (DSL)
موجود در KFP تنظیم می کنیم و خط لوله خود را در یک فایل JSON
کامپایل می کنیم.
# define our workflow
@dsl.pipeline(name="gaming-custom-training-pipeline")
def pipeline(
train_uri: str,
label_uri: str,
dropout_rate: float,
learning_rate: float,
epochs: int,
model_uri: str,
):
custom_trainer(
train_uri,label_uri, dropout_rate,learning_rate,epochs, model_uri
)
#compile our pipeline
compiler.Compiler().compile(pipeline_func=pipeline, package_path="gaming_pipeline.json")
مرحله 4: اجرای خط لوله (های) خود را ارسال کنید
کار سخت برای راه اندازی مولفه و تعریف خط لوله ما انجام شده است. ما آماده هستیم تا اجراهای مختلفی از خط لوله را که در بالا مشخص کردیم ارسال کنیم. برای انجام این کار، باید مقادیری را برای هایپرپارامترهای مختلف خود به صورت زیر تعریف کنیم:
runs = [
{"dropout_rate": 0.001, "learning_rate": 0.001,"epochs": 20},
{"dropout_rate": 0.002, "learning_rate": 0.002,"epochs": 25},
{"dropout_rate": 0.003, "learning_rate": 0.003,"epochs": 30},
{"dropout_rate": 0.004, "learning_rate": 0.004,"epochs": 35},
{"dropout_rate": 0.005, "learning_rate": 0.005,"epochs": 40},
]
با تعریف هایپرپارامترها، سپس می توانیم از یک for loop
برای تغذیه موفقیت آمیز در اجراهای مختلف خط لوله استفاده کنیم:
for i, run in enumerate(runs):
job = vertex_ai.PipelineJob(
display_name=f"{EXPERIMENT_NAME}-pipeline-run-{i}",
template_path="gaming_pipeline.json",
pipeline_root=PIPELINE_URI,
parameter_values={
"train_uri": TRAIN_URI,
"label_uri": LABEL_URI,
"model_uri": MODEL_URI,
**run,
},
)
job.submit(experiment=EXPERIMENT_NAME)
مرحله 5: از Vertex AI SDK برای مشاهده آزمایش ها استفاده کنید
Vertex AI SDK به شما امکان می دهد وضعیت اجرای خط لوله را نظارت کنید. همچنین می توانید از آن برای برگرداندن پارامترها و معیارهای Pipeline Runs در Vertex AI Experiment استفاده کنید. از کد زیر برای مشاهده پارامترهای مرتبط با اجراهای خود و وضعیت فعلی آن استفاده کنید.
# see state/status of all the pipeline runs
vertex_ai.get_experiment_df(EXPERIMENT_NAME)
می توانید از کد زیر برای دریافت به روز رسانی در مورد وضعیت اجرای خط لوله خود استفاده کنید.
#check on current status
while True:
pipeline_experiments_df = vertex_ai.get_experiment_df(EXPERIMENT_NAME)
if all(
pipeline_state != "COMPLETE" for pipeline_state in pipeline_experiments_df.state
):
print("Pipeline runs are still running...")
if any(
pipeline_state == "FAILED"
for pipeline_state in pipeline_experiments_df.state
):
print("At least one Pipeline run failed")
break
else:
print("Pipeline experiment runs have completed")
break
time.sleep(60)
همچنین می توانید با استفاده از run_name
کارهای خط لوله خاصی را فراخوانی کنید.
# Call the pipeline runs based on the experiment run name
pipeline_experiments_df = vertex_ai.get_experiment_df(EXPERIMENT_NAME)
job = vertex_ai.PipelineJob.get(pipeline_experiments_df.run_name[0])
print(job.resource_name)
print(job._dashboard_uri())
در نهایت، میتوانید وضعیت اجراهای خود را در بازههای زمانی تعیینشده (مانند هر 60 ثانیه) بهروزرسانی کنید تا ببینید که حالتها از RUNNING
به FAILED
یا COMPLETE
تغییر میکنند.
# wait 60 seconds and view state again
import time
time.sleep(60)
vertex_ai.get_experiment_df(EXPERIMENT_NAME)
7. بهترین اجرا را شناسایی کنید
عالی است، ما اکنون نتایج اجرای خط لوله خود را داریم. ممکن است بپرسید، چه چیزی می توانم از نتایج یاد بگیرم؟ خروجی آزمایشهای شما باید شامل پنج ردیف باشد، یکی برای هر اجرای خط لوله. چیزی شبیه به شکل زیر خواهد بود:
هر دو MAE و RMSE معیارهایی برای میانگین خطای پیشبینی مدل هستند، بنابراین مقدار کمتری برای هر دو معیار در بیشتر موارد مطلوب است. میتوانیم بر اساس خروجی آزمایشهای Vertex AI مشاهده کنیم که موفقترین اجرای ما در هر دو معیار، اجرای نهایی با dropout_rate
0.001، learning_rate
اگر 0.001 است، و تعداد کل epochs
20 است. بر اساس این آزمایش، این مدلها پارامترها در نهایت در تولید استفاده خواهند شد زیرا بهترین عملکرد مدل را به همراه دارد.
با آن، شما آزمایشگاه را به پایان رساندید!
🎉 تبریک می گویم! 🎉
شما یاد گرفته اید که چگونه از Vertex AI برای موارد زیر استفاده کنید:
- آموزش یک مدل Keras سفارشی برای پیشبینی رتبهبندی بازیکنان (به عنوان مثال، رگرسیون)
- از Kubeflow Pipelines SDK برای ساخت خطوط لوله ML مقیاس پذیر استفاده کنید
- یک خط لوله 5 مرحله ای ایجاد و اجرا کنید که داده ها را از GCS دریافت می کند، داده ها را مقیاس بندی می کند، مدل را آموزش می دهد، آن را ارزیابی می کند و مدل حاصل را دوباره در GCS ذخیره می کند.
- از Vertex ML Metadata برای ذخیره مصنوعات مدل مانند Models و Model Metrics استفاده کنید
- از آزمایشهای هوش مصنوعی Vertex برای مقایسه نتایج اجرای خطوط لوله مختلف استفاده کنید
برای کسب اطلاعات بیشتر در مورد بخش های مختلف Vertex، مستندات را بررسی کنید.
8. پاکسازی
برای اینکه هزینه ای از شما دریافت نشود، توصیه می شود منابع ایجاد شده در سراسر این آزمایشگاه را حذف کنید.
مرحله 1: نمونه Notebook خود را متوقف یا حذف کنید
اگر میخواهید به استفاده از نوتبوکی که در این آزمایشگاه ایجاد کردهاید ادامه دهید، توصیه میشود در صورت عدم استفاده آن را خاموش کنید. از رابط کاربری Notebooks در Cloud Console، نوت بوک را انتخاب کنید و سپس Stop را انتخاب کنید. اگر می خواهید نمونه را به طور کامل حذف کنید، حذف را انتخاب کنید:
مرحله 2: سطل Cloud Storage خود را حذف کنید
برای حذف Storage Bucket، با استفاده از منوی Navigation در Cloud Console خود، به Storage بروید، سطل خود را انتخاب کنید و روی Delete کلیک کنید: