1. نظرة عامة
سيرشدك هذا النشاط إلى الأدوات المختلفة في "دفاتر ملاحظات منصة الذكاء الاصطناعي" لاستكشاف بياناتك وإنشاء نماذج أولية لنماذج تعلُّم الآلة.
المعلومات التي ستتعرّف عليها
ستتعرّف على كيفية:
- إنشاء مثيل "دفتر ملاحظات AI Platform" وتخصيصه
- تتبُّع رمز أوراق الملاحظات باستخدام git، وهو مدمج مباشرةً في "أوراق ملاحظات منصة الذكاء الاصطناعي"
- استخدام أداة "ماذا لو" في دفتر ملاحظاتك
تبلغ التكلفة الإجمالية لتنفيذ هذا البرنامج التدريبي على Google Cloud حوالي $1. يمكنك الاطّلاع على التفاصيل الكاملة حول أسعار "أجهزة الكمبيوتر المحمول لتكنولوجيات الذكاء الاصطناعي" هنا.
2. إنشاء مثيل "دفاتر ملاحظات منصة الذكاء الاصطناعي"
ستحتاج إلى مشروع على Google Cloud Platform تم تفعيل ميزة الفوترة فيه لتشغيل هذا الدليل التعليمي. لإنشاء مشروع، اتّبِع التعليمات الواردة هنا.
الخطوة 2: تفعيل Compute Engine API
انتقِل إلى Compute Engine (محرك الحوسبة) واختَر تفعيل إذا لم يكن مفعّلاً. ستحتاج إلى هذا الإجراء لإنشاء مثيل دفتر ملاحظات.
الخطوة 3: إنشاء مثيل دفتر ملاحظات
انتقِل إلى قسم "مذكّرات AI Platform" في Cloud Console وانقر على مثيل جديد. بعد ذلك، اختَر أحدث نوع من مثيلات TensorFlow 2 Enterprise بدون وحدات معالجة الرسومات:
أدخِل اسمًا لمثيلك أو استخدِم الاسم التلقائي. بعد ذلك، سنستكشف خيارات التخصيص. انقر على الزر تخصيص:
تتضمّن "دفاتر ملاحظات منصة الذكاء الاصطناعي" العديد من خيارات التخصيص المختلفة، بما في ذلك المنطقة التي يتم نشر المثيل فيها ونوع الصورة وحجم الجهاز وعدد وحدات معالجة الرسومات وغير ذلك. سنستخدم الإعدادات التلقائية للمنطقة والبيئة. لضبط إعدادات الجهاز، سنستخدم جهاز n1-standard-8:
لن نضيف أي وحدات معالجة رسومات، وسنستخدم الإعدادات التلقائية لقرص التمهيد والشبكة والأذونات. انقر على إنشاء لإنشاء المثيل. سيستغرق إكمال هذه الخطوة بضع دقائق.
بعد إنشاء المثيل، ستظهر علامة اختيار خضراء بجانبه في واجهة مستخدم "دفاتر ملاحظات Google". اختَر فتح JupyterLab لفتح المثيل وبدء إنشاء النماذج الأولية:
عند فتح المثيل، أنشئ دليلاً جديدًا باسم codelab. في ما يلي الدليل الذي سنعمل منه خلال هذا الدرس التطبيقي:
انقر على دليل codelab الذي أنشأته حديثًا من خلال النقر عليه مرّتين، ثم اختَر دفتر ملاحظات Python 3 من مشغّل التطبيقات:
أعِد تسمية دفتر الملاحظات باسم demo.ipynb
أو أي اسم تريده.
الخطوة 4: استيراد حِزم Python
أنشئ خلية جديدة في المفكرة واستورِد المكتبات التي سنستخدمها في هذا الدليل التعليمي للترميز:
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، قد وفّر العديد من مجموعات البيانات المتاحة للجميع لاستكشافها. تتيح "مذكّرات AI Platform" الدمج المباشر مع BigQuery بدون الحاجة إلى المصادقة.
في هذا الدرس العملي، سنستخدم مجموعة بيانات الولادة. يحتوي هذا السجلّ على بيانات عن كلّ ولادة تقريبًا في الولايات المتحدة على مدار فترة زمنية تبلغ 40 عامًا، بما في ذلك وزن الطفل عند الولادة والمعلومات الديمغرافية عن والدي الطفل. سنستخدم مجموعة فرعية من الميزات للتنبؤ بوزن الطفل عند الولادة.
الخطوة 1: تنزيل بيانات BigQuery إلى دفتر البيانات
سنستخدم مكتبة Python العميل لخدمة BigQuery لتنزيل البيانات إلى إطار بيانات Pandas. تبلغ مساحة مجموعة البيانات الأصلية 21 غيغابايت وتحتوي على 123 مليون صف. ولنبسّط الأمر، سنستخدم 10,000 صف فقط من مجموعة البيانات.
أنشئ الطلب ومعاينَا إطار البيانات الناتج باستخدام الرمز البرمجي التالي. في ما يلي 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()
يعرض هذا الجدول المتوسط والانحراف المعياري والحد الأدنى ومقاييس أخرى للأعمدة الرقمية. أخيرًا، لنحصل على بعض البيانات في عمودنا المنطقي الذي يشير إلى جنس الطفل. يمكننا إجراء ذلك باستخدام طريقة value_counts
في Pandas:
df['is_male'].value_counts()
يبدو أنّ مجموعة البيانات متوازنة تقريبًا بنسبة 50/50 حسب الجنس.
الخطوة 2: إعداد مجموعة البيانات للتدريب
بعد تنزيل مجموعة البيانات إلى دفتر البيانات كإطار بيانات Pandas، يمكننا إجراء بعض المعالجة المسبقة وتقسيمها إلى مجموعتَي تدريب واختبار.
أولاً، لنتمكّن من إزالة الصفوف التي تحتوي على قيم فارغة من مجموعة البيانات وترتيب البيانات عشوائيًا:
df = df.dropna()
df = shuffle(df, random_state=2)
بعد ذلك، استخرِج عمود التصنيف إلى متغيّر منفصل وأنشئ إطار بيانات يتضمّن ميزاتنا فقط. بما أنّ is_male
منطقي، سنحوّله إلى عدد صحيح لكي تكون كلّ مدخلات النموذج رقمية:
labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
data['is_male'] = data['is_male'].astype(int)
الآن، إذا كنت تريد معاينة مجموعة البيانات من خلال تشغيل data.head()
، من المفترض أن تظهر لك السمات الأربع التي سنستخدمها في عملية التدريب.
4. إعداد git
تتيح لك "مذكّرات AI Platform" دمجًا مباشرًا مع git، ما يتيح لك التحكّم في الإصدارات مباشرةً ضمن بيئة المذكّرة. يتيح ذلك إرسال الرمز البرمجي مباشرةً في واجهة مستخدم دفتر الملاحظات، أو من خلال Terminal المتاح في JupyterLab. في هذا القسم، سنبدأ مستودعًا على git في دفتر الملاحظات ونُجري أول عملية إرسال من خلال واجهة المستخدم.
الخطوة 1: إعداد مستودع git
من دليل codelab، اختَر Git ثم Init من شريط القوائم العلوي في JupyterLab:
عندما يُطلب منك تحديد ما إذا كنت تريد تحويل هذا الدليل إلى مستودع Git، اختَر نعم. بعد ذلك، انقر على رمز Git في الشريط الجانبي الأيمن للاطّلاع على حالة ملفاتك وعمليات الإضافة:
الخطوة 2: إجراء أول عملية التزام
في واجهة المستخدم هذه، يمكنك إضافة ملفات إلى عملية إرسال، والاطّلاع على الاختلافات في الملفات (سنتناول ذلك لاحقًا)، وإرسال التغييرات. لنبدأ بنشر ملف دفتر البيانات الذي أضفناه للتو.
ضَع علامة في المربّع بجانب ملف دفتر ملاحظات demo.ipynb
لإعداده للحفظ (يمكنك تجاهل الدليل .ipynb_checkpoints/
). أدخِل رسالة تأكيد في مربّع النص، ثم انقر على علامة الاختيار لتأكيد التغييرات:
أدخِل اسمك وبريدك الإلكتروني عندما يُطلَب منك ذلك. بعد ذلك، ارجع إلى علامة التبويب السجلّ للاطّلاع على أول عملية إرسال:
يُرجى العِلم أنّ لقطات الشاشة قد لا تتطابق تمامًا مع واجهة المستخدم في تطبيقك، وذلك بسبب التحديثات التي تم إجراؤها منذ نشر هذا الدليل التدريبي.
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 وتدريبه
سننشئ هذا النموذج باستخدام واجهة برمجة التطبيقات لنموذج tf.keras Sequential
، ما يتيح لنا تحديد النموذج على أنّه حزمة من الطبقات. في ما يلي كل الرموز البرمجية التي نحتاجها لإنشاء النموذج:
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'])
يمكنك استخدام دالة 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 المتاحة في واجهة مستخدم git في "دفاتر ملاحظات Google". من المفترض أن تظهر الآن دفتر ملاحظات demo.ipynb
ضمن قسم "العناصر التي تم تغييرها" في واجهة المستخدم. مرِّر مؤشر الماوس فوق اسم الملف وانقر على رمز الاختلافات:
بعد ذلك، من المفترض أن تتمكّن من الاطّلاع على اختلافات التغييرات التي أجريتها، مثل ما يلي:
هذه المرة، سنُجري التغييرات من خلال سطر الأوامر باستخدام Terminal. من قائمة Git في شريط القوائم العلوي في JupyterLab، اختَر Git Command in Terminal (أمر Git في Terminal). إذا كانت علامة تبويب git في الشريط الجانبي الأيمن مفتوحة أثناء تنفيذ الأوامر أدناه، ستتمكّن من رؤية التغييرات التي تم إجراؤها في واجهة مستخدم git.
في مثيل الوحدة الطرفية الجديد، شغِّل ما يلي لإعداد ملف دفتر الملاحظات لإجرائه:
git add demo.ipynb
بعد ذلك، نفِّذ ما يلي لحفظ التغييرات (يمكنك استخدام أي رسالة حفظ تريدها):
git commit -m "Build and train TF model"
من المفترض أن يظهر لك أحدث عملية إرسال في السجلّ:
6- استخدام "أداة ماذا لو" مباشرةً من دفتر الملاحظات
أداة "ماذا لو" هي واجهة مرئية تفاعلية مصمّمة لمساعدتك في عرض مجموعات البيانات بشكل مرئي وفهم نتائج نماذج الذكاء الاصطناعي بشكل أفضل. وهي أداة مفتوحة المصدر أنشأها فريق PAIR في Google. على الرغم من أنّه يعمل مع أي نوع من النماذج، إلا أنّه يتضمّن بعض الميزات المخصّصة حصريًا لمنصّة Cloud AI Platform.
تأتي "أداة ماذا لو" مثبَّتة مسبقًا في نُسخ "دفاتر ملاحظات" من Cloud AI Platform باستخدام TensorFlow. سنستخدمها هنا لمعرفة مستوى أداء النموذج بشكل عام وفحص سلوكه على نقاط البيانات من مجموعة الاختبار.
الخطوة 1: تحضير البيانات لأداة "ماذا لو"
للاستفادة إلى أقصى حد من "أداة الاحتمالات"، سنرسل إليها أمثلة من مجموعة الاختبار مع تصنيفات الحقائق الأساسية لهذه الأمثلة (y_test
). بهذه الطريقة، يمكننا مقارنة ما توقّعه نموذجنا بالحقائق الأساسية. شغِّل سطر التعليمات البرمجية أدناه لإنشاء إطار بيانات جديد يتضمّن أمثلة الاختبار وتصنيفاتها:
wit_data = pd.concat([x_test, y_test], axis=1)
في هذا التمرين، سنربط "أداة ماذا لو" بالنموذج الذي درّبناه للتو في دفتر البيانات. لإجراء ذلك، علينا كتابة دالة ستستخدمها الأداة لتشغيل نقاط البيانات الاختبارية هذه في النموذج:
def custom_predict(examples_to_infer):
preds = model.predict(examples_to_infer)
return preds
الخطوة 2: إنشاء مثيل لأداة "ماذا لو"
سننشئ مثيلًا لأداة "ماذا لو" من خلال تمريرها بـ 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)
من المفترض أن يظهر لك ما يلي عند تحميل "أداة الاحتمالات":
على محور x، يمكنك الاطّلاع على نقاط بيانات الاختبار المنتشرة حسب قيمة الوزن المتوقّعة للنموذج، weight_pounds
.
الخطوة 3: استكشاف سلوك النموذج باستخدام "أداة ماذا لو"
هناك الكثير من الإجراءات الرائعة التي يمكنك اتّخاذها باستخدام "أداة ماذا لو". سنستكشف بعض هذه العوامل هنا. أولاً، لنطّلِع على محرِّر نقاط البيانات. يمكنك اختيار أي نقطة بيانات للاطّلاع على ميزاتها وتغيير قيمها. ابدأ بالنقر على أي نقطة بيانات:
على يمين الصفحة، ستظهر لك قيم العناصر لنقطة البيانات التي اخترتها. يمكنك أيضًا مقارنة تصنيف الحقيقة الأساسية لنقطة البيانات هذه بالقيمة التي تنبأ بها النموذج. في الشريط الجانبي الأيمن، يمكنك أيضًا تغيير قيم السمات وإعادة تنفيذ توقّعات النموذج لمعرفة تأثير هذا التغيير في النموذج. على سبيل المثال، يمكننا تغيير gestation_weeks إلى 30 لهذه النقطة من البيانات من خلال النقر عليها مرّتين وإعادة إجراء التوقّع:
باستخدام القوائم المنسدلة في قسم الرسم البياني ضمن "أداة الاحتمالات"، يمكنك إنشاء جميع أنواع الرسومات البيانية المخصّصة. على سبيل المثال، إليك رسم بياني يعرض الوزن المتوقّع للنماذج على محور x وعمر الأم على محور y والنقاط الملوّنة حسب خطأ الاستنتاج (يشير اللون الداكن إلى اختلاف أكبر بين الوزن المتوقّع والوزن الفعلي). يبدو هنا أنّه كلما انخفضت القيمة، زاد خطأ النموذج قليلاً:
بعد ذلك، ضَع علامة في المربّع بجانب الزر رسومات التبعية الجزئية على يمين الصفحة. يوضّح ذلك مدى تأثير كلّ ميزة في توقّعات النموذج. على سبيل المثال، مع زيادة مدة الحمل، يزداد أيضًا وزن الطفل المتوقّع في النموذج:
لمزيد من أفكار الاستكشاف باستخدام "أداة ماذا لو"، اطّلِع على الروابط في بداية هذا القسم.
7- اختياري: ربط مستودع git المحلي بـ GitHub
أخيرًا، سنتعرّف على كيفية ربط مستودع git في مثيل دفتر البيانات بمستودع في حسابنا على GitHub. إذا أردت تنفيذ هذه الخطوة، ستحتاج إلى حساب على GitHub.
الخطوة 1: إنشاء مستودع جديد على GitHub
في حسابك على GitHub، أنشئ مستودعًا جديدًا. أدخِل اسمًا ووصفًا للملف، وحدِّد ما إذا كنت تريد أن يكون متاحًا للجميع، ثم اختَر إنشاء مستودع (لست بحاجة إلى إعداده باستخدام ملف README). في الصفحة التالية، اتّبِع التعليمات لدفع مستودع حالي من سطر الأوامر.
افتح نافذة Terminal (وحدة التحكّم الطرفية) وأضِف مستودعك الجديد كمستودع بعيد. استبدِل 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 من مثيل دفتر الملاحظات.
لمزامنة مستودع git لدفتر الملاحظات المحلي مع مستودع GitHub الذي تم إنشاؤه حديثًا، انقر على زر تحميل السحابة الإلكترونية في أعلى الشريط الجانبي في Git:
أعِد تحميل مستودع GitHub، ومن المفترض أن يظهر لك رمز المفكرة مع عمليات الإضافة السابقة. إذا كان بإمكان مستخدمين آخرين الوصول إلى مستودع GitHub وأردت تنزيل أحدث التغييرات على دفتر ملاحظاتك، انقر على رمز تنزيل السحابة الإلكترونية لمزامنة هذه التغييرات.
في علامة التبويب "السجلّ" ضمن واجهة مستخدم git في "دفاتر الملاحظات"، يمكنك معرفة ما إذا كانت عمليات الإضافة أو التعديل المحلية قد تمت مزامنتها مع GitHub. في هذا المثال، يتوافق origin/master
مع مستودعنا على GitHub:
كلما أجريت عمليات إرسال جديدة، ما عليك سوى النقر على زر تحميل السحابة الإلكترونية مرة أخرى لدفع هذه التغييرات إلى مستودع GitHub.
8. تهانينا!
لقد حقّقت الكثير في هذا الدرس التطبيقي 👏👏👏.
للتلخيص، لقد تعلمت كيفية:
- إنشاء مثيل مخصّص لدفتر ملاحظات AI Platform
- يمكنك إعداد مستودع git محلي في هذه الحالة، وإضافة عمليات الحفظ من خلال واجهة مستخدم git أو سطر الأوامر، وعرض الاختلافات في git في واجهة مستخدم git في "دفتر ملاحظات Google".
- إنشاء نموذج TensorFlow 2 بسيط وتدريبه
- استخدام أداة "ماذا لو" ضمن مثيل "دفتر ملاحظات"
- ربط مستودع git الخاص بـ Notebook بمستودع خارجي على GitHub
9. تنظيف
إذا أردت مواصلة استخدام دفتر الملاحظات هذا، ننصحك بإيقاف تشغيله عندما لا يكون قيد الاستخدام. من واجهة مستخدم "دفاتر ملاحظات Google" في Cloud Console، اختَر دفتر الملاحظات ثم اختَر إيقاف:
إذا أردت حذف جميع الموارد التي أنشأتها في هذا البرنامج التدريبي، ما عليك سوى حذف مثيل دفتر البيانات بدلاً من إيقافه.
باستخدام قائمة التنقّل في Cloud Console، انتقِل إلى "مساحة التخزين" وحذِف كلتا الحزمتَين اللتين أنشأتهما لتخزين مواد عرض النماذج.