۱. مرور کلی
در این آزمایش، شما از ابزار What-if برای تجزیه و تحلیل یک مدل XGBoost که بر روی دادههای مالی آموزش دیده و در پلتفرم هوش مصنوعی ابری مستقر شده است، استفاده خواهید کرد.
آنچه یاد میگیرید
شما یاد خواهید گرفت که چگونه:
- آموزش یک مدل XGBoost روی مجموعه دادههای وام مسکن عمومی در AI Platform Notebooks
- مدل XGBoost را روی پلتفرم هوش مصنوعی مستقر کنید
- مدل را با استفاده از ابزار What-if تجزیه و تحلیل کنید
هزینه کل اجرای این آزمایشگاه در گوگل کلود حدود ۱ دلار است.
۲. یک شروع سریع با XGBoost
XGBoost یک چارچوب یادگیری ماشینی است که از درختهای تصمیمگیری و تقویت گرادیان برای ساخت مدلهای پیشبینی استفاده میکند. این چارچوب با ادغام چندین درخت تصمیمگیری بر اساس امتیاز مرتبط با گرههای برگ مختلف در یک درخت، کار میکند.
نمودار زیر تجسمی از یک مدل درخت تصمیم ساده است که ارزیابی میکند آیا یک بازی ورزشی باید بر اساس پیشبینی آب و هوا انجام شود یا خیر:

چرا از XGBoost برای این مدل استفاده میکنیم؟ در حالی که شبکههای عصبی سنتی نشان دادهاند که در دادههای بدون ساختار مانند تصاویر و متن بهترین عملکرد را دارند، درختهای تصمیم اغلب در دادههای ساختاریافته مانند مجموعه داده وام مسکن که در این آزمایشگاه کد از آن استفاده خواهیم کرد، عملکرد بسیار خوبی دارند.
۳. محیط خود را راهاندازی کنید
برای اجرای این codelab به یک پروژه Google Cloud Platform با قابلیت پرداخت صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعملهای اینجا را دنبال کنید.
مرحله ۱: فعال کردن API مدلهای پلتفرم هوش مصنوعی ابری
به بخش مدلهای پلتفرم هوش مصنوعی در کنسول ابری خود بروید و اگر از قبل فعال نشده است، روی فعال کردن کلیک کنید.

مرحله ۲: فعال کردن رابط برنامهنویسی کاربردی موتور محاسبات
به Compute Engine بروید و اگر از قبل فعال نشده است، آن را فعال کنید . برای ایجاد نمونه نوتبوک خود به این مورد نیاز خواهید داشت.
مرحله ۳: ایجاد یک نمونه از نوتبوکهای پلتفرم هوش مصنوعی
به بخش AI Platform Notebooks در کنسول ابری خود بروید و روی New Instance کلیک کنید. سپس آخرین نوع نمونه TF Enterprise 2.x را بدون GPU انتخاب کنید:
از گزینههای پیشفرض استفاده کنید و سپس روی Create کلیک کنید. پس از ایجاد نمونه، Open JupyterLab را انتخاب کنید:

مرحله ۴: نصب XGBoost
پس از باز شدن نمونه JupyterLab، باید بسته XGBoost را اضافه کنید.
برای انجام این کار، ترمینال را از لانچر انتخاب کنید:

سپس دستور زیر را برای نصب آخرین نسخه XGBoost که توسط Cloud AI Platform پشتیبانی میشود، اجرا کنید:
pip3 install xgboost==0.90
پس از اتمام این کار، یک نمونه Python 3 Notebook را از لانچر باز کنید. شما آماده شروع کار در نوتبوک خود هستید!
مرحله ۵: وارد کردن بستههای پایتون
در سلول اول دفترچه یادداشت خود، موارد زیر را وارد کرده و سلول را اجرا کنید. میتوانید آن را با فشار دادن دکمه فلش سمت راست در منوی بالا یا فشار دادن کلید ترکیبی command-enter اجرا کنید:
import pandas as pd
import xgboost as xgb
import numpy as np
import collections
import witwidget
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.utils import shuffle
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder
۴. دانلود و پردازش دادهها
ما از یک مجموعه داده وام مسکن از ffiec.gov برای آموزش مدل XGBoost استفاده خواهیم کرد. ما پیشپردازشهایی را روی مجموعه داده اصلی انجام دادهایم و یک نسخه کوچکتر برای آموزش مدل ایجاد کردهایم. این مدل پیشبینی میکند که آیا یک درخواست وام مسکن خاص تأیید خواهد شد یا خیر .
مرحله ۱: دانلود مجموعه دادههای پیشپردازششده
ما نسخهای از مجموعه دادهها را در فضای ابری گوگل (Google Cloud Storage) برای شما در دسترس قرار دادهایم. میتوانید با اجرای دستور gsutil زیر در نوتبوک ژوپیتر خود، آن را دانلود کنید:
!gsutil cp 'gs://mortgage_dataset_files/mortgage-small.csv' .
مرحله ۲: خواندن مجموعه دادهها با Pandas
قبل از ایجاد قاب داده Pandas، یک dict از نوع داده هر ستون ایجاد میکنیم تا Pandas مجموعه داده ما را به درستی بخواند:
COLUMN_NAMES = collections.OrderedDict({
'as_of_year': np.int16,
'agency_code': 'category',
'loan_type': 'category',
'property_type': 'category',
'loan_purpose': 'category',
'occupancy': np.int8,
'loan_amt_thousands': np.float64,
'preapproval': 'category',
'county_code': np.float64,
'applicant_income_thousands': np.float64,
'purchaser_type': 'category',
'hoepa_status': 'category',
'lien_status': 'category',
'population': np.float64,
'ffiec_median_fam_income': np.float64,
'tract_to_msa_income_pct': np.float64,
'num_owner_occupied_units': np.float64,
'num_1_to_4_family_units': np.float64,
'approved': np.int8
})
در مرحله بعد، یک DataFrame ایجاد میکنیم و انواع دادههایی را که در بالا مشخص کردیم، به آن منتقل میکنیم. در صورتی که مجموعه دادههای اصلی به شیوهای خاص مرتب شده باشند، مهم است که دادههای خود را به صورت درهمریخته (brush) مرتب کنیم. ما برای انجام این کار از یک ابزار sklearn به نام shuffle استفاده میکنیم که در سلول اول وارد کردیم:
data = pd.read_csv(
'mortgage-small.csv',
index_col=False,
dtype=COLUMN_NAMES
)
data = data.dropna()
data = shuffle(data, random_state=2)
data.head()
data.head() به ما اجازه میدهد پنج ردیف اول مجموعه داده خود را در Pandas پیشنمایش کنیم. پس از اجرای سلول بالا، باید چیزی شبیه به این را ببینید:

اینها ویژگیهایی هستند که ما برای آموزش مدل خود استفاده خواهیم کرد. اگر تا انتها اسکرول کنید، ستون آخر approved خواهید دید، که همان چیزی است که ما پیشبینی میکنیم. مقدار 1 نشان میدهد که یک برنامه خاص تأیید شده و 0 نشان میدهد که رد شده است.
برای مشاهده توزیع مقادیر تایید شده/رد شده در مجموعه داده و ایجاد یک آرایه نامپای از برچسبها، دستور زیر را اجرا کنید:
# Class labels - 0: denied, 1: approved
print(data['approved'].value_counts())
labels = data['approved'].values
data = data.drop(columns=['approved'])
حدود ۶۶٪ از مجموعه دادهها شامل برنامههای تأیید شده است.
مرحله ۳: ایجاد ستونهای ساختگی برای مقادیر دستهبندیشده
این مجموعه داده شامل ترکیبی از مقادیر دستهای و عددی است، اما XGBoost ایجاب میکند که همه ویژگیها عددی باشند. به جای نمایش مقادیر دستهای با استفاده از کدگذاری وان-هات ، برای مدل XGBoost خود از تابع get_dummies در Pandas بهره خواهیم برد.
get_dummies یک ستون با چندین مقدار ممکن را میگیرد و آن را به مجموعهای از ستونها تبدیل میکند که هر کدام فقط شامل ۰ و ۱ هستند. برای مثال، اگر ستونی به نام "color" با مقادیر ممکن "blue" و "red" داشته باشیم، تابع get_dummies این ستون را به ۲ ستون به نامهای "color_blue" و "color_red" با تمام مقادیر بولی ۰ و ۱ تبدیل میکند.
برای ایجاد ستونهای ساختگی برای ویژگیهای دستهبندیشده، کد زیر را اجرا کنید:
dummy_columns = list(data.dtypes[data.dtypes == 'category'].index)
data = pd.get_dummies(data, columns=dummy_columns)
data.head()
وقتی این بار دادهها را پیشنمایش میکنید، خواهید دید که ویژگیهای تکی (مانند purchaser_type که در تصویر زیر نشان داده شده است) به چندین ستون تقسیم شدهاند:

مرحله ۴: تقسیم دادهها به مجموعههای آموزش و آزمایش
یک مفهوم مهم در یادگیری ماشین، تقسیم آموزش/آزمون است. ما بخش عمدهای از دادهها را برای آموزش مدل خود استفاده میکنیم و بقیه را برای آزمایش مدل خود روی دادههایی که قبلاً هرگز دیده نشده است، کنار میگذاریم.
کد زیر را به دفترچه یادداشت خود اضافه کنید، که از تابع train_test_split در Scikit Learn برای تقسیم دادهها استفاده میکند:
x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)
حالا شما آمادهاید تا مدل خود را بسازید و آموزش دهید!
۵. ساخت، آموزش و ارزیابی یک مدل XGBoost
مرحله ۱: تعریف و آموزش مدل XGBoost
ایجاد یک مدل در XGBoost ساده است. ما از کلاس XGBClassifier برای ایجاد مدل استفاده خواهیم کرد و فقط باید پارامتر objective مناسب را برای وظیفه طبقهبندی خاص خود ارسال کنیم. در این حالت reg:logistic استفاده میکنیم زیرا یک مسئله طبقهبندی دودویی داریم و میخواهیم مدل یک مقدار واحد در محدوده (0،1) را خروجی دهد: 0 برای عدم تأیید و 1 برای تأیید.
کد زیر یک مدل XGBoost ایجاد میکند:
model = xgb.XGBClassifier(
objective='reg:logistic'
)
شما میتوانید مدل را با یک خط کد آموزش دهید، متد fit() را فراخوانی کنید و دادههای آموزشی و برچسبها را به آن ارسال کنید.
model.fit(x_train, y_train)
مرحله ۲: ارزیابی دقت مدل
اکنون میتوانیم از مدل آموزشدیده خود برای تولید پیشبینی روی دادههای آزمایشی با تابع predict() استفاده کنیم.
سپس از تابع accuracy_score در Scikit Learn برای محاسبه دقت مدل خود بر اساس نحوه عملکرد آن بر روی دادههای تست استفاده خواهیم کرد. مقادیر واقعی را به همراه مقادیر پیشبینیشده مدل برای هر مثال در مجموعه تست خود به آن ارسال خواهیم کرد:
y_pred = model.predict(x_test)
acc = accuracy_score(y_test, y_pred.round())
print(acc, '\n')
شما باید دقتی حدود ۸۷٪ را ببینید، اما دقت شما کمی متفاوت خواهد بود زیرا همیشه عنصری از تصادفی بودن در یادگیری ماشین وجود دارد.
مرحله ۳: مدل خود را ذخیره کنید
برای استقرار مدل، کد زیر را اجرا کنید تا آن را در یک فایل محلی ذخیره کنید:
model.save_model('model.bst')
۶. مدل را روی پلتفرم هوش مصنوعی ابری مستقر کنید
ما مدل خود را به صورت محلی کار میکنیم، اما خوب میشد اگر میتوانستیم از هر جایی (نه فقط این دفترچه یادداشت!) روی آن پیشبینی انجام دهیم. در این مرحله، آن را در فضای ابری مستقر خواهیم کرد.
مرحله ۱: ایجاد یک فضای ذخیرهسازی ابری برای مدل ما
بیایید ابتدا برخی از متغیرهای محیطی را که در ادامهی کد از آنها استفاده خواهیم کرد، تعریف کنیم. مقادیر زیر را با نام پروژهی گوگل کلود خود، نام باکت ذخیرهسازی ابری که میخواهید ایجاد کنید (باید به صورت سراسری منحصر به فرد باشد) و نام نسخهی اولین نسخهی مدل خود پر کنید:
# Update these to your own GCP project, model, and version names
GCP_PROJECT = 'your-gcp-project'
MODEL_BUCKET = 'gs://storage_bucket_name'
VERSION_NAME = 'v1'
MODEL_NAME = 'xgb_mortgage'
اکنون آمادهایم تا یک مخزن ذخیرهسازی برای ذخیره فایل مدل XGBoost خود ایجاد کنیم. هنگام استقرار، پلتفرم هوش مصنوعی ابری را به این فایل ارجاع خواهیم داد.
برای ایجاد یک سطل، دستور gsutil را از داخل نوتبوک خود اجرا کنید:
!gsutil mb $MODEL_BUCKET
مرحله ۲: فایل مدل را در فضای ذخیرهسازی ابری کپی کنید
در مرحله بعد، فایل مدل ذخیره شده XGBoost خود را در فضای ابری کپی خواهیم کرد. دستور gsutil زیر را اجرا کنید:
!gsutil cp ./model.bst $MODEL_BUCKET
برای تأیید کپی شدن فایل، به مرورگر ذخیرهسازی در کنسول ابری خود بروید:

مرحله ۳: ایجاد و استقرار مدل
تقریباً آمادهایم تا مدل را مستقر کنیم! دستور ai-platform gcloud زیر یک مدل جدید در پروژه شما ایجاد میکند. ما این مدل را xgb_mortgage مینامیم:
!gcloud ai-platform models create $MODEL_NAME --region='global'
حالا وقتشه که مدل رو مستقر کنیم. میتونیم این کار رو با دستور gcloud انجام بدیم:
!gcloud ai-platform versions create $VERSION_NAME \
--model=$MODEL_NAME \
--framework='XGBOOST' \
--runtime-version=2.1 \
--origin=$MODEL_BUCKET \
--python-version=3.7 \
--project=$GCP_PROJECT \
--region='global'
در حالی که این برنامه در حال اجرا است، بخش مدلهای کنسول پلتفرم هوش مصنوعی خود را بررسی کنید. باید نسخه جدید خود را در آنجا مشاهده کنید:

وقتی عملیات با موفقیت انجام شد، یک علامت تیک سبز در محل بارگذاری چرخنده مشاهده خواهید کرد. عملیات استقرار باید ۲ تا ۳ دقیقه طول بکشد.
مرحله ۴: مدل پیادهسازی شده را آزمایش کنید
برای اطمینان از اینکه مدل پیادهسازیشده شما کار میکند، آن را با استفاده از gcloud برای پیشبینی آزمایش کنید. ابتدا، یک فایل JSON با اولین مثال از مجموعه آزمایشی ما ذخیره کنید:
%%writefile predictions.json
[2016.0, 1.0, 346.0, 27.0, 211.0, 4530.0, 86700.0, 132.13, 1289.0, 1408.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0]
با اجرای این کد، مدل خود را آزمایش کنید:
prediction = !gcloud ai-platform predict --model=xgb_mortgage --region='global' --json-instances=predictions.json --version=$VERSION_NAME --verbosity=none
print(prediction)
شما باید پیشبینی مدل خود را در خروجی ببینید. این مثال خاص تایید شده است، بنابراین باید مقداری نزدیک به ۱ را ببینید.
۷. از ابزار What-if برای تفسیر مدل خود استفاده کنید
مرحله ۱: ایجاد تجسم ابزار What-if
برای اتصال ابزار What-if به مدلهای پلتفرم هوش مصنوعی خود، باید زیرمجموعهای از نمونههای آزمایشی خود را به همراه مقادیر حقیقی پایه برای آن نمونهها به آن منتقل کنید. بیایید یک آرایه Numpy از ۵۰۰ نمونه آزمایشی خود را به همراه برچسبهای حقیقی پایه آنها ایجاد کنیم:
num_wit_examples = 500
test_examples = np.hstack((x_test[:num_wit_examples].values,y_test[:num_wit_examples].reshape(-1,1)))
نمونهسازی ابزار What-if به سادگی ایجاد یک شیء WitConfigBuilder و ارسال مدل پلتفرم هوش مصنوعی که میخواهیم تحلیل کنیم به آن است.
ما در اینجا از پارامتر اختیاری adjust_prediction استفاده میکنیم زیرا ابزار What-if انتظار دارد لیستی از نمرات برای هر کلاس در مدل ما (در این مورد ۲) نمایش داده شود. از آنجایی که مدل ما فقط یک مقدار واحد از ۰ تا ۱ را برمیگرداند، آن را در این تابع به قالب صحیح تبدیل میکنیم:
def adjust_prediction(pred):
return [1 - pred, pred]
config_builder = (WitConfigBuilder(test_examples.tolist(), data.columns.tolist() + ['mortgage_status'])
.set_ai_platform_model(GCP_PROJECT, MODEL_NAME, VERSION_NAME, adjust_prediction=adjust_prediction)
.set_target_feature('mortgage_status')
.set_label_vocab(['denied', 'approved']))
WitWidget(config_builder, height=800)
توجه داشته باشید که بارگذاری تصویرسازی یک دقیقه طول میکشد. پس از بارگذاری، باید تصویر زیر را مشاهده کنید:

محور y پیشبینی مدل را به ما نشان میدهد، که 1 پیشبینی با اطمینان بالا approved و 0 پیشبینی با اطمینان بالا denied است. محور x فقط پراکندگی تمام نقاط داده بارگذاری شده است.
مرحله ۲: نقاط داده منفرد را کاوش کنید
نمای پیشفرض در ابزار What-if، تب ویرایشگر Datapoint است. در اینجا میتوانید روی هر نقطه داده کلیک کنید تا ویژگیهای آن را ببینید، مقادیر ویژگی را تغییر دهید و ببینید که چگونه این تغییر بر پیشبینی مدل روی یک نقطه داده تأثیر میگذارد.
در مثال زیر، ما یک نقطه داده نزدیک به آستانه ۰.۵ را انتخاب کردیم. درخواست وام مسکن مرتبط با این نقطه داده خاص از CFPB سرچشمه گرفته است. ما آن ویژگی را به ۰ تغییر دادیم و همچنین مقدار agency_code_Department of Housing and Urban Development (HUD) را به ۱ تغییر دادیم تا ببینیم اگر این وام از HUD سرچشمه گرفته باشد، چه اتفاقی برای پیشبینی مدل میافتد:

همانطور که در بخش پایین سمت چپ ابزار What-if میبینیم، تغییر این ویژگی پیشبینی approved مدل را به میزان قابل توجهی ۳۲٪ کاهش داده است. این میتواند نشان دهد که آژانسی که وام از آن گرفته شده است، تأثیر زیادی بر خروجی مدل دارد، اما برای اطمینان بیشتر باید تجزیه و تحلیل بیشتری انجام دهیم.
در قسمت پایین سمت چپ رابط کاربری، میتوانیم مقدار واقعی هر نقطه داده را نیز ببینیم و آن را با پیشبینی مدل مقایسه کنیم:

مرحله ۳: تحلیل خلاف واقع
سپس، روی هر نقطه داده کلیک کنید و اسلایدر نمایش نزدیکترین نقطه داده خلاف واقع را به سمت راست حرکت دهید:

با انتخاب این گزینه، نقطه دادهای که بیشترین شباهت را به مقدار ویژگی اولیه انتخاب شده شما دارد، اما پیشبینی آن برعکس است، به شما نشان داده میشود. سپس میتوانید مقادیر ویژگی را مرور کنید تا ببینید دو نقطه داده در کجا با هم تفاوت دارند (تفاوتها با رنگ سبز و پررنگ مشخص شدهاند).
مرحله ۴: به نمودارهای وابستگی جزئی نگاه کنید
برای مشاهدهی چگونگی تأثیر هر ویژگی بر پیشبینیهای کلی مدل، کادر « نمودارهای وابستگی جزئی» (Partial dependency plots) را علامت بزنید و مطمئن شوید که «نمودارهای وابستگی جزئی سراسری» (Global partial dependency plots) انتخاب شده است:

در اینجا میتوانیم ببینیم که وامهای صادر شده از HUD احتمال رد شدن کمی بیشتری دارند. نمودار به این شکل است زیرا کد آژانس یک ویژگی بولی است، بنابراین مقادیر فقط میتوانند دقیقاً 0 یا 1 باشند.
applicant_income_thousands یک ویژگی عددی است و در نمودار وابستگی جزئی میتوانیم ببینیم که درآمد بالاتر، احتمال تأیید درخواست را کمی افزایش میدهد، اما فقط تا حدود ۲۰۰ هزار دلار. پس از ۲۰۰ هزار دلار، این ویژگی تاثیری بر پیشبینی مدل ندارد.
مرحله ۵: عملکرد کلی و انصاف را بررسی کنید
سپس، به برگه «عملکرد و انصاف» (Performance & Fairness) بروید. این برگه، آمار کلی عملکرد نتایج مدل روی مجموعه دادههای ارائه شده، شامل ماتریسهای درهمریختگی، منحنیهای PR و منحنیهای ROC را نشان میدهد.
برای دیدن ماتریس درهمریختگی، mortgage_status به عنوان ویژگی حقیقت زمینی انتخاب کنید:

این ماتریس سردرگمی، پیشبینیهای درست و نادرست مدل ما را به صورت درصدی از کل نشان میدهد. اگر مربعهای «بله واقعی/بله پیشبینیشده» و «خیر واقعی/خیر پیشبینیشده» را با هم جمع کنید، باید به همان دقت مدل شما (حدود ۸۷٪) برسد.
شما همچنین میتوانید با اسلایدر آستانه آزمایش کنید، امتیاز طبقهبندی مثبتی را که مدل باید قبل از تصمیمگیری برای پیشبینی وام approved برگرداند، افزایش و کاهش دهید و ببینید که چگونه این امر دقت، مثبتهای کاذب و منفیهای کاذب را تغییر میدهد. در این حالت، دقت در حدود آستانه 0.55 بالاترین است.
سپس، در منوی کشویی Slice by سمت چپ، گزینه loan_purpose_Home_purchase را انتخاب کنید:

اکنون عملکرد را در دو زیرمجموعه از دادههای خود مشاهده خواهید کرد: برش "0" زمانی را نشان میدهد که وام برای خرید خانه نیست و برش "1" زمانی است که وام برای خرید خانه است. برای بررسی تفاوتها در عملکرد، دقت، مثبت کاذب و منفی کاذب را بین دو برش بررسی کنید.
اگر ردیفها را گسترش دهید تا ماتریسهای درهمریختگی را مشاهده کنید، میتوانید ببینید که مدل پیشبینی میکند حدود ۷۰٪ از درخواستهای وام برای خرید خانه و تنها ۴۶٪ از وامهایی که برای خرید خانه نیستند، «تایید شده» هستند (درصد دقیق در مدل شما متفاوت خواهد بود):

اگر از دکمههای رادیویی سمت چپ، گزینه «برابری جمعیتی» را انتخاب کنید، دو آستانه طوری تنظیم میشوند که مدل، درصد مشابهی از متقاضیان را در هر دو برش، approved پیشبینی کند. این چه تأثیری بر دقت، مثبتهای کاذب و منفیهای کاذب برای هر برش دارد؟
مرحله ۶: بررسی توزیع ویژگیها
در نهایت، به تب Features در ابزار What-if بروید. این تب توزیع مقادیر هر ویژگی در مجموعه داده شما را نشان میدهد:

میتوانید از این تب برای اطمینان از متعادل بودن مجموعه دادههای خود استفاده کنید. برای مثال، به نظر میرسد تعداد بسیار کمی از وامهای موجود در مجموعه دادهها از آژانس خدمات کشاورزی سرچشمه گرفتهاند. برای بهبود دقت مدل، در صورت موجود بودن دادهها، میتوانیم وامهای بیشتری از آن آژانس اضافه کنیم.
ما در اینجا فقط چند ایده برای کاوش در مورد ابزار What-if را شرح دادهایم. میتوانید به کار با این ابزار ادامه دهید، حوزههای بسیار بیشتری برای کاوش وجود دارد!
۸. پاکسازی
اگر میخواهید به استفاده از این دفترچه یادداشت ادامه دهید، توصیه میشود وقتی از آن استفاده نمیکنید، آن را خاموش کنید. از رابط کاربری دفترچه یادداشتها در کنسول ابری خود، دفترچه یادداشت را انتخاب کرده و سپس توقف را انتخاب کنید:

اگر میخواهید تمام منابعی را که در این آزمایشگاه ایجاد کردهاید حذف کنید، به جای متوقف کردن آن، کافیست نمونه نوتبوک را حذف کنید.
با استفاده از منوی ناوبری در کنسول ابری خود، به بخش ذخیرهسازی (Storage) بروید و هر دو باکتی را که برای ذخیره داراییهای مدل خود ایجاد کردهاید، حذف کنید.
