1. بررسی اجمالی
این آزمایشگاه شما را از طریق ابزارهای مختلف در نوت بوک های پلتفرم هوش مصنوعی برای کاوش در داده های خود و نمونه سازی مدل های ML راهنمایی می کند.
آنچه یاد می گیرید
شما یاد خواهید گرفت که چگونه:
- یک نمونه نوت بوک پلتفرم هوش مصنوعی ایجاد و سفارشی کنید
- کد نوت بوک خود را با git که مستقیماً در نوت بوک های پلتفرم هوش مصنوعی ادغام شده است، ردیابی کنید
- از ابزار What-If در نوت بوک خود استفاده کنید
کل هزینه اجرای این آزمایشگاه در Google Cloud حدود 1 دلار است. جزئیات کامل قیمت نوت بوک های پلتفرم هوش مصنوعی را می توانید در اینجا بیابید.
2. یک نمونه نوت بوک پلتفرم هوش مصنوعی ایجاد کنید
برای اجرای این کد لبه به یک پروژه Google Cloud Platform با فعال بودن صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعمل های اینجا را دنبال کنید.
مرحله ۲: Compute Engine API را فعال کنید
به Compute Engine بروید و اگر قبلاً فعال نشده است Enable را انتخاب کنید. برای ایجاد نمونه نوت بوک خود به این نیاز دارید.
مرحله 3: یک نمونه نوت بوک ایجاد کنید
به بخش AI Platform Notebooks در Cloud Console خود بروید و روی New Instance کلیک کنید. سپس آخرین نوع نمونه TensorFlow 2 Enterprise را بدون GPU انتخاب کنید:
به نمونه خود یک نام بدهید یا از پیش فرض استفاده کنید. سپس گزینه های سفارشی سازی را بررسی می کنیم. روی دکمه Customize کلیک کنید:
نوتبوکهای پلتفرم هوش مصنوعی گزینههای سفارشیسازی مختلفی دارند، از جمله: منطقهای که نمونه شما در آن مستقر است، نوع تصویر، اندازه دستگاه، تعداد پردازندههای گرافیکی و موارد دیگر. ما از پیش فرض های منطقه و محیط استفاده خواهیم کرد. برای پیکربندی ماشین، از ماشین n1-standard-8 استفاده می کنیم:
ما هیچ پردازنده گرافیکی اضافه نمی کنیم و از پیش فرض ها برای دیسک بوت، شبکه و مجوز استفاده می کنیم. برای ایجاد نمونه خود ، Create را انتخاب کنید. چند دقیقه طول می کشد تا تکمیل شود.
پس از ایجاد نمونه، یک علامت سبز رنگ در کنار آن در رابط کاربری Notebooks مشاهده خواهید کرد. Open JupyterLab را انتخاب کنید تا نمونه خود باز شود و نمونه سازی آغاز شود:
هنگامی که نمونه را باز می کنید، یک دایرکتوری جدید به نام codelab ایجاد کنید. این دایرکتوری است که ما در سراسر این آزمایشگاه از آن کار خواهیم کرد:
با دوبار کلیک کردن روی دایرکتوری Codelab جدید ایجاد شده خود، روی آن کلیک کنید و سپس Python 3 notebook را از لانچر انتخاب کنید:
نام نوت بوک را به demo.ipynb
یا هر نامی که می خواهید برای آن بگذارید تغییر دهید.
مرحله 4: بسته های پایتون را وارد کنید
یک سلول جدید در نوت بوک ایجاد کنید و کتابخانه هایی را که در این لبه کد استفاده می کنیم وارد کنید:
import pandas as pd
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
import json
from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle
from google.cloud import bigquery
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder
3. داده های BigQuery را به نوت بوک خود وصل کنید
BigQuery، انبار داده های بزرگ Google Cloud، مجموعه داده های زیادی را برای کاوش شما در دسترس عموم قرار داده است. نوتبوکهای پلتفرم هوش مصنوعی از ادغام مستقیم با BigQuery بدون نیاز به احراز هویت پشتیبانی میکنند.
برای این آزمایشگاه، از مجموعه داده natality استفاده خواهیم کرد. این شامل اطلاعات تقریباً هر تولد در ایالات متحده در یک دوره زمانی 40 ساله است، از جمله وزن تولد کودک، و اطلاعات جمعیت شناختی والدین نوزاد. ما از زیرمجموعه ای از ویژگی ها برای پیش بینی وزن تولد نوزاد استفاده خواهیم کرد.
مرحله 1: داده های BigQuery را در نوت بوک ما دانلود کنید
ما از کتابخانه کلاینت پایتون برای BigQuery برای دانلود داده ها در Pandas DataFrame استفاده خواهیم کرد. مجموعه داده اصلی 21 گیگابایت است و شامل 123 میلیون ردیف است. برای ساده نگه داشتن کارها، فقط از 10000 ردیف از مجموعه داده استفاده می کنیم.
کوئری را بسازید و DataFrame حاصل را با کد زیر مشاهده کنید. در اینجا ما 4 ویژگی از مجموعه داده اصلی را به همراه وزن نوزاد (چیزی که مدل ما پیش بینی می کند) دریافت می کنیم. مجموعه داده به سالها قبل برمیگردد، اما برای این مدل فقط از دادههای پس از سال 2000 استفاده میکنیم:
query="""
SELECT
weight_pounds,
is_male,
mother_age,
plurality,
gestation_weeks
FROM
publicdata.samples.natality
WHERE year > 2000
LIMIT 10000
"""
df = bigquery.Client().query(query).to_dataframe()
df.head()
برای دریافت خلاصه ای از ویژگی های عددی در مجموعه داده ما، اجرا کنید:
df.describe()
این میانگین، انحراف استاندارد، حداقل و سایر معیارها را برای ستونهای عددی ما نشان میدهد. در نهایت، اجازه دهید برخی از داده ها را در ستون بولی خود دریافت کنیم که جنسیت کودک را نشان می دهد. می توانیم با روش Pandas value_counts
این کار را انجام دهیم:
df['is_male'].value_counts()
به نظر می رسد مجموعه داده تقریباً 50/50 بر اساس جنسیت متعادل است.
مرحله 2: مجموعه داده را برای آموزش آماده کنید
اکنون که مجموعه داده را به عنوان یک Pandas DataFrame در نوت بوک خود دانلود کرده ایم، می توانیم مقداری پیش پردازش انجام دهیم و آن را به مجموعه های آموزشی و آزمایشی تقسیم کنیم.
ابتدا، بیایید ردیف هایی با مقادیر تهی را از مجموعه داده رها کنیم و داده ها را به هم بزنیم:
df = df.dropna()
df = shuffle(df, random_state=2)
سپس، ستون برچسب را در یک متغیر جداگانه استخراج کنید و یک DataFrame فقط با ویژگی های ما ایجاد کنید. از آنجایی که is_male
یک بولی است، آن را به یک عدد صحیح تبدیل می کنیم تا تمام ورودی های مدل ما عددی باشد:
labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
data['is_male'] = data['is_male'].astype(int)
اکنون اگر مجموعه داده ما را با اجرای data.head()
پیشنمایش کنید، باید چهار ویژگی را که برای آموزش استفاده میکنیم، ببینید.
4. git را راه اندازی کنید
نوت بوک های پلتفرم هوش مصنوعی با git ادغام مستقیم دارند، به طوری که می توانید کنترل نسخه را مستقیماً در محیط نوت بوک خود انجام دهید. این از اجرای کد مستقیماً در رابط کاربری نوت بوک یا از طریق ترمینال موجود در JupyterLab پشتیبانی می کند. در این بخش، یک مخزن git را در نوت بوک خود راه اندازی می کنیم و اولین commit خود را از طریق UI انجام می دهیم.
مرحله 1: یک مخزن git را راه اندازی کنید
از پوشه codelab خود، Git و سپس Init را از نوار منوی بالای JupyterLab انتخاب کنید:
وقتی از شما می پرسد که آیا می خواهید این دایرکتوری را به یک Git Repo تبدیل کنید، Yes را انتخاب کنید. سپس آیکون Git را در نوار کناری سمت چپ انتخاب کنید تا وضعیت فایلها و commitهای خود را ببینید:
مرحله 2: اولین تعهد خود را انجام دهید
در این رابط کاربری، میتوانید فایلها را به یک commit اضافه کنید، تفاوتهای فایل را ببینید (بعداً به آن خواهیم پرداخت)، و تغییرات خود را انجام دهید. بیایید با commit کردن فایل نوت بوکی که به تازگی اضافه کردیم شروع کنیم.
کادر کنار فایل نوت بوک demo.ipynb
خود را علامت بزنید تا آن را برای commit مرحله بندی کنید (می توانید دایرکتوری .ipynb_checkpoints/
نادیده بگیرید). یک پیام commit را در کادر متنی وارد کنید و سپس بر روی علامت چک کلیک کنید تا تغییرات خود را انجام دهید:
وقتی از شما خواسته شد نام و ایمیل خود را وارد کنید. سپس به برگه History برگردید تا اولین commit خود را ببینید:
توجه داشته باشید که به دلیل بهروزرسانیها از زمان انتشار این آزمایشگاه، ممکن است اسکرینشاتها دقیقاً با رابط کاربری شما مطابقت نداشته باشند.
5. یک مدل TensorFlow بسازید و آموزش دهید
ما از مجموعه داده تولد BigQuery که در نوت بوک خود دانلود کرده ایم برای ساخت مدلی استفاده می کنیم که وزن نوزاد را پیش بینی می کند. در این آزمایشگاه ما به جای دقت خود مدل بر روی ابزار نوت بوک تمرکز خواهیم کرد.
مرحله 1: داده های خود را به مجموعه های قطار و آزمایش تقسیم کنید
ما از ابزار Scikit Learn train_test_split
برای تقسیم دادههایمان قبل از ساخت مدل استفاده میکنیم:
x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)
اکنون ما آماده ساختن مدل TensorFlow خود هستیم!
مرحله 2: مدل TensorFlow را بسازید و آموزش دهید
ما این مدل را با استفاده از API مدل Sequential
tf.keras خواهیم ساخت، که به ما امکان می دهد مدل خود را به عنوان پشته ای از لایه ها تعریف کنیم. تمام کدهایی که برای ساخت مدل خود نیاز داریم در اینجا هستند:
model = Sequential([
Dense(64, activation='relu', input_shape=(len(x_train.iloc[0]),)),
Dense(32, activation='relu'),
Dense(1)]
)
سپس مدل خود را کامپایل می کنیم تا بتوانیم آن را آموزش دهیم. در اینجا ما بهینهساز مدل، تابع ضرر و معیارهایی را انتخاب میکنیم که میخواهیم مدل در طول آموزش ثبت شود. از آنجایی که این یک مدل رگرسیونی است (پیشبینی یک مقدار عددی)، ما از میانگین مربعات خطا بهجای دقت به عنوان متریک استفاده میکنیم:
model.compile(optimizer=tf.keras.optimizers.RMSprop(),
loss=tf.keras.losses.MeanSquaredError(),
metrics=['mae', 'mse'])
می توانید از تابع handy model.summary()
Keras برای مشاهده شکل و تعداد پارامترهای قابل آموزش مدل خود در هر لایه استفاده کنید.
اکنون ما آماده ایم تا مدل خود را آموزش دهیم. تنها کاری که باید انجام دهیم این است که متد fit()
فراخوانی کنیم و داده ها و برچسب های آموزشی خود را به آن ارسال کنیم. در اینجا ما از پارامتر اختیاری validation_split استفاده می کنیم که بخشی از داده های آموزشی ما را برای اعتبارسنجی مدل در هر مرحله نگه می دارد. در حالت ایدهآل، میخواهید شاهد کاهش افت آموزش و اعتبارسنجی باشید. اما به یاد داشته باشید که در این مثال ما بیشتر بر روی مدل سازی و ابزار نوت بوک تمرکز کرده ایم تا کیفیت مدل:
model.fit(x_train, y_train, epochs=10, validation_split=0.1)
مرحله 3: پیش بینی هایی را روی نمونه های آزمایشی ایجاد کنید
برای اینکه ببینیم مدل ما چگونه عمل می کند، اجازه دهید برخی از پیش بینی های آزمایشی را در 10 نمونه اول از مجموعه داده آزمایشی خود ایجاد کنیم.
num_examples = 10
predictions = model.predict(x_test[:num_examples])
و سپس پیشبینیهای مدل خود را تکرار میکنیم و آنها را با مقدار واقعی مقایسه میکنیم:
for i in range(num_examples):
print('Predicted val: ', predictions[i][0])
print('Actual val: ',y_test.iloc[i])
print()
مرحله 4: از git diff استفاده کنید و تغییرات خود را انجام دهید
اکنون که تغییراتی در نوت بوک ایجاد کرده اید، می توانید ویژگی git diff موجود در Notebooks git UI را امتحان کنید. نوت بوک demo.ipynb
اکنون باید در بخش «تغییر شده» در رابط کاربری قرار گیرد. ماوس را روی نام فایل ببرید و روی نماد تفاوت کلیک کنید:
با این کار باید بتوانید تفاوت تغییرات خود را مشاهده کنید، مانند موارد زیر:
این بار تغییرات خود را از طریق خط فرمان با استفاده از ترمینال انجام می دهیم. از منوی Git در نوار منوی بالای JupyterLab، Git Command را در ترمینال انتخاب کنید. اگر هنگام اجرای دستورات زیر، تب git نوار کناری سمت چپ خود را باز داشته باشید، میتوانید تغییرات خود را در رابط کاربری git مشاهده کنید.
در نمونه ترمینال جدید خود، موارد زیر را اجرا کنید تا فایل نوت بوک خود را برای commit مرحله بندی کنید:
git add demo.ipynb
و سپس موارد زیر را اجرا کنید تا تغییرات خود را انجام دهید (شما می توانید از هر پیام commit که می خواهید استفاده کنید):
git commit -m "Build and train TF model"
سپس باید آخرین commit خود را در تاریخ ببینید:
6. از ابزار What-If به طور مستقیم از نوت بوک خود استفاده کنید
ابزار What-If یک رابط بصری تعاملی است که برای کمک به تجسم مجموعه داده های خود و درک بهتر خروجی مدل های ML طراحی شده است. این یک ابزار منبع باز است که توسط تیم PAIR در Google ایجاد شده است. در حالی که با هر نوع مدلی کار می کند، دارای برخی ویژگی ها است که به طور انحصاری برای پلتفرم Cloud AI ساخته شده است.
ابزار What-If در نمونه های نوت بوک های پلتفرم Cloud AI با TensorFlow از پیش نصب شده است. در اینجا ما از آن برای مشاهده عملکرد کلی مدل خود استفاده می کنیم و رفتار آن را در نقاط داده مجموعه آزمایشی خود بررسی می کنیم.
مرحله 1: داده ها را برای ابزار What-If آماده کنید
برای استفاده حداکثری از ابزار What-If، نمونه هایی از مجموعه آزمایشی خود را به همراه برچسب های اصلی برای آن مثال ها ( y_test
) برای آن ارسال می کنیم. به این ترتیب میتوانیم آنچه را که مدل ما پیشبینی کرده بود با حقیقت زمین مقایسه کنیم. خط کد زیر را اجرا کنید تا یک DataFrame جدید با نمونه های آزمایشی ما و برچسب های آنها ایجاد کنید:
wit_data = pd.concat([x_test, y_test], axis=1)
در این آزمایشگاه، ابزار What-If را به مدلی که به تازگی در نوت بوک خود آموزش داده ایم وصل می کنیم. برای انجام این کار، باید تابعی بنویسیم که ابزار از آن برای اجرای این نقاط داده آزمایشی به مدل ما استفاده کند:
def custom_predict(examples_to_infer):
preds = model.predict(examples_to_infer)
return preds
مرحله 2: ابزار What-If را نمونه سازی کنید
ما ابزار What-If را با ارسال 500 نمونه از مجموعه داده آزمایشی الحاقی + برچسب های حقیقت پایه که به تازگی ایجاد کردیم، نمونه سازی می کنیم. ما یک نمونه از WitConfigBuilder
ایجاد میکنیم تا ابزار را راهاندازی کنیم، دادههایمان، تابع پیشبینی سفارشی که در بالا تعریف کردیم، به همراه هدف (چیزی که پیشبینی میکنیم) و نوع مدل را به آن ارسال میکنیم:
config_builder = (WitConfigBuilder(wit_data[:500].values.tolist(), data.columns.tolist() + ['weight_pounds'])
.set_custom_predict_fn(custom_predict)
.set_target_feature('weight_pounds')
.set_model_type('regression'))
WitWidget(config_builder, height=800)
هنگامی که ابزار What-If بارگیری می شود باید چیزی شبیه به این را ببینید:
در محور x، میتوانید نقاط دادههای آزمایشی خود را ببینید که بر اساس مقدار وزن پیشبینیشده مدل، weight_pounds
پخش شدهاند.
مرحله 3: رفتار مدل را با ابزار What-If بررسی کنید
کارهای جالب زیادی وجود دارد که می توانید با ابزار What-If انجام دهید. ما در اینجا فقط تعدادی از آنها را بررسی می کنیم. ابتدا اجازه دهید به ویرایشگر نقطه داده نگاه کنیم. می توانید هر نقطه داده ای را برای مشاهده ویژگی های آن انتخاب کنید و مقادیر ویژگی را تغییر دهید. با کلیک کردن روی هر نقطه داده شروع کنید:
در سمت چپ مقادیر ویژگی را برای نقطه داده ای که انتخاب کرده اید می بینید. همچنین میتوانید برچسب حقیقت پایه آن نقطه داده را با مقدار پیشبینیشده توسط مدل مقایسه کنید. در نوار کناری سمت چپ، همچنین میتوانید مقادیر ویژگیها را تغییر دهید و پیشبینی مدل را مجدداً اجرا کنید تا تأثیر این تغییر را بر روی مدل خود مشاهده کنید. به عنوان مثال، میتوانیم gestation_weeks را برای این نقطه داده با دوبار کلیک کردن روی آن یک پیشبینی مجدد به 30 تغییر دهیم:
با استفاده از منوهای کشویی در بخش نمودار ابزار What-If، می توانید انواع تجسم های سفارشی ایجاد کنید. به عنوان مثال، در اینجا نموداری با وزن پیشبینیشده مدلها در محور x، سن مادر در محور y، و نقاط رنگشده با خطای استنتاج آنها (تیرهتر به معنای تفاوت بیشتر بین وزن پیشبینیشده و واقعی) است. در اینجا به نظر می رسد که با کاهش وزن، خطای مدل کمی افزایش می یابد:
بعد، دکمه نمودارهای وابستگی جزئی را در سمت چپ علامت بزنید. این نشان می دهد که چگونه هر ویژگی بر پیش بینی مدل تأثیر می گذارد. به عنوان مثال، با افزایش زمان بارداری، وزن نوزاد پیش بینی شده مدل ما نیز افزایش می یابد:
برای ایدههای اکتشافی بیشتر با ابزار What-If، پیوندهای ابتدای این بخش را بررسی کنید.
7. اختیاری: مخزن git محلی خود را به GitHub متصل کنید
در نهایت، ما یاد خواهیم گرفت که چگونه مخزن git را در نمونه نوت بوک خود به یک مخزن در حساب GitHub خود متصل کنیم. اگر میخواهید این مرحله را انجام دهید، به یک حساب GitHub نیاز دارید.
مرحله 1: یک مخزن جدید در GitHub ایجاد کنید
در حساب GitHub خود، یک مخزن جدید ایجاد کنید. نام و توضیحی برای آن بگذارید، تصمیم بگیرید که آیا میخواهید عمومی باشد یا خیر، و Create repository را انتخاب کنید (نیازی به مقداردهی اولیه با README ندارید). در صفحه بعدی، دستورالعملهای فشار دادن مخزن موجود از خط فرمان را دنبال میکنید.
یک پنجره ترمینال را باز کنید و مخزن جدید خود را به عنوان یک کنترل از راه دور اضافه کنید. username
در URL مخزن زیر با نام کاربری GitHub خود جایگزین کنید و your-repo
با نام کاربری که به تازگی ایجاد کرده اید جایگزین کنید:
git remote add origin git@github.com:username/your-repo.git
مرحله 2: در نمونه نوت بوک خود در GitHub احراز هویت کنید
در مرحله بعد باید از داخل نمونه نوت بوک خود به GitHub احراز هویت کنید. این فرآیند بسته به اینکه احراز هویت دو مرحلهای را در GitHub فعال کرده باشید، متفاوت است.
اگر مطمئن نیستید از کجا شروع کنید، مراحل موجود در مستندات GitHub را برای ایجاد یک کلید SSH دنبال کنید و سپس کلید جدید را به GitHub اضافه کنید .
مرحله 3: مطمئن شوید که مخزن GitHub خود را به درستی پیوند داده اید
برای اطمینان از اینکه همه چیز را به درستی تنظیم کرده اید، git remote -v
در ترمینال خود اجرا کنید. شما باید مخزن جدید خود را به عنوان یک کنترل از راه دور مشاهده کنید. هنگامی که URL مخزن GitHub خود را مشاهده کردید و از نوت بوک خود به GitHub احراز هویت شدید، آماده هستید که مستقیماً از نمونه نوت بوک خود به GitHub فشار دهید.
برای همگام سازی مخزن گیت نوت بوک محلی خود با مخزن جدید GitHub خود، روی دکمه آپلود ابری در بالای نوار کناری Git کلیک کنید:
مخزن GitHub خود را تازه کنید، و باید کد نوت بوک خود را با commit های قبلی خود ببینید! اگر دیگران به مخزن GitHub شما دسترسی دارند و میخواهید آخرین تغییرات نوتبوک خود را پایین بیاورید، روی نماد دانلود ابری کلیک کنید تا این تغییرات همگامسازی شود.
در تب History در Notebooks git UI، میتوانید ببینید که آیا commitهای محلی شما با GitHub همگامسازی شدهاند یا خیر. در این مثال، origin/master
با مخزن ما در GitHub مطابقت دارد:
هر زمان که تعهدات جدیدی انجام دادید، کافی است دوباره روی دکمه آپلود ابری کلیک کنید تا این تغییرات در مخزن GitHub شما اعمال شود.
8. تبریک!
شما در این آزمایشگاه کارهای زیادی انجام داده اید 👏👏👏
برای جمع بندی، شما یاد گرفته اید که چگونه:
- یک نمونه نوت بوک پلتفرم هوش مصنوعی سفارشی سازی کنید
- یک مخزن git محلی را در آن نمونه راه اندازی کنید، commit ها را از طریق git UI یا خط فرمان اضافه کنید، تفاوت های git را در Notebook git UI مشاهده کنید.
- یک مدل ساده TensorFlow 2 بسازید و آموزش دهید
- از ابزار What-If در نمونه Notebook خود استفاده کنید
- مخزن git Notebook خود را به یک مخزن خارجی در GitHub متصل کنید
9. پاکسازی
اگر می خواهید به استفاده از این نوت بوک ادامه دهید، توصیه می شود در صورت عدم استفاده آن را خاموش کنید. از رابط کاربری Notebooks در Cloud Console خود، نوت بوک را انتخاب کنید و سپس Stop را انتخاب کنید:
اگر میخواهید تمام منابعی را که در این آزمایشگاه ایجاد کردهاید حذف کنید، بهجای توقف آن، نمونه نوتبوک را به سادگی حذف کنید.
با استفاده از منوی پیمایش در Cloud Console، به Storage بروید و هر دو سطل را که برای ذخیره دارایی های مدل خود ایجاد کرده اید حذف کنید.