1. نظرة عامة
في هذا الدرس العملي، ستستخدم Vertex AI لتشغيل وظيفة تدريب متعددة العمال لنموذج TensorFlow.
المعلومات التي تطّلع عليها
وستتعرّف على كيفية:
- تعديل رمز تطبيق التدريب لتدريب عمال متعددين
- إعداد وبدء مهمة تدريب متعددة العمال من واجهة مستخدم Vertex AI
- إعداد وبدء مهمة تدريب متعددة العمال باستخدام حزمة تطوير برامج (SDK) Vertex
تبلغ التكلفة الإجمالية لتنفيذ هذا البرنامج التدريبي على Google Cloud حوالي 5 دولار أمريكي.
2. مقدمة عن Vertex AI
يستخدم هذا المختبر أحدث منتجات الذكاء الاصطناعي المتاحة على Google Cloud. تدمج Vertex AI عروض تعلُّم الآلة في Google Cloud في تجربة تطوير سلسة. في السابق، كان الوصول إلى النماذج المدرَّبة باستخدام AutoML والنماذج المخصّصة ممكنًا من خلال خدمات منفصلة. ويجمع العرض الجديد بين الاثنين في واجهة برمجة تطبيقات واحدة، إلى جانب منتجات جديدة أخرى. يمكنك أيضًا نقل المشاريع الحالية إلى Vertex AI. إذا كانت لديك أي ملاحظات، يُرجى الانتقال إلى صفحة الدعم.
تتضمّن Vertex AI العديد من المنتجات المختلفة لدعم سير عمل تعلُّم الآلة من البداية إلى النهاية. سيركّز هذا التمرين المعملي على المنتجات الموضَّحة أدناه: التدريب وطاولة العمل
3- نظرة عامة على حالة الاستخدام
في هذا الدرس التطبيقي، ستستخدم أسلوب التعلّم التحويلي لتدريب نموذج لتصنيف الصور استنادًا إلى مجموعة بيانات الكاساوا من مجموعات بيانات TensorFlow. البنية التي ستستخدمها هي نموذج ResNet50 من مكتبة tf.keras.applications
التي تم تدريبها مسبقًا على مجموعة بيانات Imagenet.
لماذا التدريب الموزَّع؟
إذا كان لديك وحدة معالجة رسومات واحدة، سيستخدم TensorFlow هذا المسرّع لتسريع تدريب النموذج بدون أي جهد إضافي من جانبك. مع ذلك، إذا أردت تعزيز استخدام وحدات معالجة رسومات متعدّدة على جهاز واحد أو أجهزة متعدّدة (يمكن أن يتضمّن كلّ منها وحدات معالجة رسومات متعددة)، عليك استخدام tf.distribute
، وهي مكتبة TensorFlow لإجراء العمليات الحسابية على أجهزة متعدّدة. يشير الجهاز إلى وحدة معالجة مركزية (CPU) أو مسرِّعة أعمال، مثل وحدات معالجة الرسومات أو وحدات معالجة الموتّرات، على بعض الأجهزة التي يمكن لمنصة TensorFlow تشغيل العمليات عليها.
إنّ أبسط طريقة للبدء في التدريب الموزّع هي استخدام جهاز واحد مزوّد بأجهزة معالجة رسومات متعددة. ستتولى استراتيجية توزيع TensorFlow من وحدة tf.distribute
إدارة تنسيق توزيع البيانات وتحديثات التدرج في جميع وحدات معالجة الرسومات. إذا كنت قد أتقنت تدريب المضيف الفردي وتبحث عن توسيع نطاق التدريب بشكل أكبر، يمكن أن تساعدك إضافة أجهزة متعددة إلى مجموعتك في تحقيق تحسين أكبر في الأداء. يمكنك الاستفادة من مجموعة من الأجهزة التي تتضمّن وحدة معالجة مركزية فقط، أو التي تتضمّن كلّ منها وحدة معالجة رسومات واحدة أو أكثر. يتناول هذا المختبر الحالة الأخيرة ويوضّح كيفية استخدام MultiWorkerMirroredStrategy
لتوزيع تدريب نموذج TensorFlow على أجهزة متعددة على Vertex AI.
MultiWorkerMirroredStrategy
هي استراتيجية متزامنة للبيانات المشابهة يمكنك استخدامها مع تغييرات قليلة في الرمز فقط. يتم إنشاء نسخة من النموذج على كل جهاز في مجموعتك. وسيتم إجراء تعديلات التدرج اللوني اللاحقة بشكل متزامن. وهذا يعني أنّ كل جهاز عامل يحسب المرورَين إلى الأمام والخلف من خلال النموذج على شريحة مختلفة من بيانات الإدخال. ثم يتم تجميع التدرجات المحسوبة من كل شريحة من هذه الشرائح على جميع الأجهزة الموجودة على الجهاز وجميع الأجهزة في المجموعة العنقودية ويتم تقليلها (عادةً ما يكون متوسط) في عملية تعرف باسم الخفض الكلي. بعد ذلك، يُجري المحسِّن تعديلات المَعلمات باستخدام هذه التدرّجات المنخفضة، ما يحافظ على مزامنة الأجهزة. للاطّلاع على مزيد من المعلومات حول التدريب الموزّع باستخدام TensorFlow، يمكنك مشاهدة الفيديو أدناه:
4. إعداد البيئة
ستحتاج إلى مشروع على Google Cloud Platform تم تفعيل ميزة الفوترة فيه لتشغيل هذا الدليل التعليمي. لإنشاء مشروع، اتّبِع التعليمات الواردة هنا.
الخطوة 1: تفعيل واجهة برمجة التطبيقات Compute Engine API
انتقِل إلى Compute Engine (محرك الحوسبة) واختَر تفعيل إذا لم يكن مفعّلاً. ستحتاج إلى هذا لإنشاء مثيل دفتر الملاحظات.
الخطوة 2: تفعيل واجهة برمجة التطبيقات Container Registry API
انتقِل إلى مستودع الحِزم واختَر تفعيل إذا لم يكن مفعّلاً. ستستخدم هذا الإجراء لإنشاء حاوية لمهمة التدريب المخصّصة.
الخطوة 3: تفعيل واجهة برمجة التطبيقات Vertex AI API
انتقِل إلى قسم Vertex AI في Cloud Console وانقر على تفعيل واجهة برمجة التطبيقات Vertex AI API.
الخطوة 4: إنشاء مثيل Vertex AI Workbench
من قسم Vertex AI في Cloud Console، انقر على Workbench:
فعِّل واجهة برمجة التطبيقات Notebooks API إذا لم تكن مفعَّلة.
بعد تفعيل هذه الميزة، انقر على دفاتر الملاحظات المُدارة:
بعد ذلك، اختَر دفتر ملاحظات جديد.
أدخِل اسمًا لدفتر الملاحظات، ثم انقر على الإعدادات المتقدّمة.
ضمن "الإعدادات المتقدّمة"، فعِّل ميزة "إيقاف الجهاز في حال عدم النشاط" واضبط عدد الدقائق على 60. وهذا يعني أنه سيتم إيقاف تشغيل دفتر الملاحظات تلقائيًا عندما لا يتم استخدامه، وبذلك لن تتحمل أي تكاليف غير ضرورية.
ضمن الأمان، اختَر "تفعيل وحدة التحكّم" إذا لم تكن مفعّلة.
يمكنك ترك جميع الإعدادات المتقدّمة الأخرى كما هي.
بعد ذلك، انقر على إنشاء. ستستغرق عملية توفير المثيل بضع دقائق.
بعد إنشاء المثيل، اختَر فتح JupyterLab.
عند استخدام مثيل جديد لأول مرة، سيُطلب منك المصادقة. اتّبِع الخطوات الواردة في واجهة المستخدم لإجراء ذلك.
5- رمز تطبيق التدريب على Containerize
يمكنك إرسال هذه المهمة التدريبية إلى Vertex من خلال وضع رمز تطبيق التدريب في حاوية Docker وإرسال هذه الحاوية إلى Google Container Registry. باستخدام هذا النهج، يمكنك تدريب نموذج تم إنشاؤه باستخدام أي إطار عمل.
للبدء، افتح نافذة Terminal (المحطة الطرفية) في مثيل دفتر ملاحظاتك من قائمة Launcher (المشغِّل):
أنشئ دليلاً جديدًا باسم cassava
وأضِفه إليه:
mkdir cassava
cd cassava
الخطوة 1: إنشاء ملف شامل
الخطوة الأولى في احتواء التعليمة البرمجية هي إنشاء ملف Dockerfile. في Dockerfile، ستضمّن جميع الأوامر اللازمة لتشغيل الصورة. ستقوم بتثبيت جميع المكتبات الضرورية وإعداد نقطة الدخول لرمز التدريب.
من Terminal، أنشئ ملف Dockerfile فارغًا:
touch Dockerfile
افتح Dockerfile وانسخ ما يلي إليه:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-7
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.task"]
يستخدم ملف Dockerfile هذا صورة Docker لوحدة معالجة الرسومات Deep Learning Container TensorFlow Enterprise 2.7. تأتي حاويات تعلُّم الآلة العميقة على Google Cloud مع العديد من إطارات عمل تعلُّم الآلة وعلم البيانات الشائعة المثبَّتة مسبقًا. بعد تنزيل تلك الصورة، يُعِدّ هذا الملف الشامل نقطة الدخول لرمز التدريب. لم تنشئ هذه الملفات بعد. في الخطوة التالية، ستضيف الرمز البرمجي لتدريب النموذج وضبطه.
الخطوة 2: إنشاء حزمة في Cloud Storage
في مهمة التدريب هذه، ستصدِّر نموذج TensorFlow الذي تم تدريبه إلى حزمة في Cloud Storage. من Terminal، نفِّذ ما يلي لتحديد متغيّر env لمشروعك، مع الحرص على استبدال your-cloud-project
بمعرّف مشروعك:
PROJECT_ID='your-cloud-project'
بعد ذلك، نفِّذ ما يلي في Terminal لإنشاء حزمة جديدة في مشروعك.
BUCKET="gs://${PROJECT_ID}-bucket"
gsutil mb -l us-central1 $BUCKET
الخطوة 3: إضافة رمز تدريب النموذج
من Terminal، نفِّذ ما يلي لإنشاء دليل لرمز التدريب وملف Python الذي ستضيف إليه الرمز:
mkdir trainer
touch trainer/task.py
من المفترض أن يتوفّر لديك الآن ما يلي في دليل cassava/
:
+ Dockerfile
+ trainer/
+ task.py
بعد ذلك، افتح ملف task.py
الذي أنشأته للتو وانسخ الرمز البرمجي أدناه. عليك استبدال {your-gcs-bucket}
باسم حزمة Cloud Storage التي أنشأتها للتو.
import tensorflow as tf
import tensorflow_datasets as tfds
import os
PER_REPLICA_BATCH_SIZE = 64
EPOCHS = 2
# TODO: replace {your-gcs-bucket} with the name of the Storage bucket you created earlier
BUCKET = 'gs://{your-gcs-bucket}/mwms'
def preprocess_data(image, label):
'''Resizes and scales images.'''
image = tf.image.resize(image, (300,300))
return tf.cast(image, tf.float32) / 255., label
def create_dataset(batch_size):
'''Loads Cassava dataset and preprocesses data.'''
data, info = tfds.load(name='cassava', as_supervised=True, with_info=True)
number_of_classes = info.features['label'].num_classes
train_data = data['train'].map(preprocess_data,
num_parallel_calls=tf.data.experimental.AUTOTUNE)
train_data = train_data.shuffle(1000)
train_data = train_data.batch(batch_size)
train_data = train_data.prefetch(tf.data.experimental.AUTOTUNE)
# Set AutoShardPolicy
options = tf.data.Options()
options.experimental_distribute.auto_shard_policy = tf.data.experimental.AutoShardPolicy.DATA
train_data = train_data.with_options(options)
return train_data, number_of_classes
def create_model(number_of_classes):
'''Creates and compiles pretrained ResNet50 model.'''
base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False)
x = base_model.output
x = tf.keras.layers.GlobalAveragePooling2D()(x)
x = tf.keras.layers.Dense(1016, activation='relu')(x)
predictions = tf.keras.layers.Dense(number_of_classes, activation='softmax')(x)
model = tf.keras.Model(inputs=base_model.input, outputs=predictions)
model.compile(
loss='sparse_categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(0.0001),
metrics=['accuracy'])
return model
def _is_chief(task_type, task_id):
'''Helper function. Determines if machine is chief.'''
return task_type == 'chief'
def _get_temp_dir(dirpath, task_id):
'''Helper function. Gets temporary directory for saving model.'''
base_dirpath = 'workertemp_' + str(task_id)
temp_dir = os.path.join(dirpath, base_dirpath)
tf.io.gfile.makedirs(temp_dir)
return temp_dir
def write_filepath(filepath, task_type, task_id):
'''Helper function. Gets filepath to save model.'''
dirpath = os.path.dirname(filepath)
base = os.path.basename(filepath)
if not _is_chief(task_type, task_id):
dirpath = _get_temp_dir(dirpath, task_id)
return os.path.join(dirpath, base)
def main():
# Create strategy
strategy = tf.distribute.MultiWorkerMirroredStrategy()
# Get data
global_batch_size = PER_REPLICA_BATCH_SIZE * strategy.num_replicas_in_sync
train_data, number_of_classes = create_dataset(global_batch_size)
# Wrap variable creation within strategy scope
with strategy.scope():
model = create_model(number_of_classes)
model.fit(train_data, epochs=EPOCHS)
# Determine type and task of the machine from
# the strategy cluster resolver
task_type, task_id = (strategy.cluster_resolver.task_type,
strategy.cluster_resolver.task_id)
# Based on the type and task, write to the desired model path
write_model_path = write_filepath(BUCKET, task_type, task_id)
model.save(write_model_path)
if __name__ == "__main__":
main()
قبل إنشاء الحاوية، لنلقِ نظرةً عن كثب على الرمز الذي يستخدم MultiWorkerMirroredStrategy
من tf.distribute.Strategy
API.
هناك بعض المكوّنات في الرمز ضرورية لكي يعمل الرمز مع MultiWorkerMirroredStrategy
.
- يجب تقسيم البيانات، بمعنى أنه يتم تعيين مجموعة فرعية من مجموعة البيانات بأكملها لكل عامل. لذلك، في كل خطوة، سيعالج كل عامل حجمًا إجماليًا للمجموعة من عناصر مجموعة البيانات غير المتداخلة. ويتم تقسيم البيانات تلقائيًا باستخدام
tf.data.experimental.AutoShardPolicy
، ويمكن ضبطه علىFILE
أوDATA
. في هذا المثال، تضبط الدالةcreate_dataset()
القيمةAutoShardPolicy
علىDATA
لأنّه لا يتم تنزيل مجموعة بيانات الكسافا كملفات متعددة. ومع ذلك، إذا لم يتم ضبط السياسة علىDATA
، سيتم تفعيل السياسة التلقائيةAUTO
وستكون النتيجة النهائية هي نفسها. يمكنك الاطّلاع على مزيد من المعلومات حول تقسيم مجموعة البيانات باستخدامMultiWorkerMirroredStrategy
هنا. - في الدالة
main()
، يتم إنشاء الكائنMultiWorkerMirroredStrategy
. بعد ذلك، تُنهي إنشاء متغيّرات النموذج ضمن نطاق الاستراتيجية. تُخبر هذه الخطوة المهمة TensorFlow بالمتغيّرات التي يجب نسخها في النُسخ المكرّرة. - يتم تكبير حجم الحزمة بمقدار
num_replicas_in_sync
. يضمن ذلك أن تعالج كل نسخة العدد نفسه من النماذج في كل خطوة. يُعدّ تغيير حجم الحزمة من أفضل الممارسات عند استخدام استراتيجيات التوازي المتزامن للبيانات في TensorFlow. - يكون حفظ النموذج أكثر تعقيدًا قليلاً في حالة استخدام عدة عاملِين لأنّ الوجهة يجب أن تكون مختلفة لكل عامل. سيحفظ العامل الرئيسي النموذج في دليل النموذج المطلوب، بينما سيحفظ العمال الآخرون النموذج في أدلة مؤقتة. من المهم أن تكون هذه الدلائل المؤقتة فريدة لمنع عدة مستخدمين من الكتابة في الموقع الجغرافي نفسه. يمكن أن يتضمّن الحفظ عمليات جماعية، ما يعني أنّه على جميع العمال الحفظ وليس فقط على رئيس الفريق. تتضمن الدوال
_is_chief()
و_get_temp_dir()
وwrite_filepath()
والدالةmain()
جميعها رموزًا نموذجية تساعد في حفظ النموذج.
يُرجى العلم أنّه إذا كنت قد استخدمت MultiWorkerMirroredStrategy
في بيئة مختلفة، قد تكون قد أعددت متغيّر البيئة TF_CONFIG
. تضبط Vertex AI متغير TF_CONFIG
نيابةً عنك تلقائيًا، لذا لا تحتاج إلى تحديد هذا المتغيّر على كل جهاز في مجموعتك.
الخطوة 4: إنشاء الحاوية
من Terminal، نفِّذ ما يلي لتحديد متغيّر env لمشروعك، مع الحرص على استبدال your-cloud-project
بمعرّف مشروعك:
PROJECT_ID='your-cloud-project'
حدد متغيرًا باستخدام معرف الموارد المنتظم (URI) لصورة الحاوية في Google Container Registry:
IMAGE_URI="gcr.io/$PROJECT_ID/multiworker:cassava"
ضبط إعدادات Docker
gcloud auth configure-docker
بعد ذلك، يمكنك إنشاء الحاوية من خلال تنفيذ ما يلي من جذر دليل cassava
:
docker build ./ -t $IMAGE_URI
أخيرًا، ادفع الحزمة إلى Google Container Registry:
docker push $IMAGE_URI
مع إرسال الحاوية إلى Container Registry، تكون الآن جاهزًا لبدء مهمة التدريب.
6- تنفيذ مهمة تدريب متعددة العاملين على Vertex AI
تستخدِم هذه التجربة التدريبية تدريبًا مخصّصًا من خلال حاوية مخصّصة على Google Container Registry، ولكن يمكنك أيضًا تنفيذ مهمة تدريب باستخدام الحاويات المُنشأة مسبقًا.
للبدء، انتقِل إلى قسم التدريب في قسم Vertex ضمن وحدة تحكّم Cloud:
الخطوة 1: ضبط مهمة التدريب
انقر على إنشاء لإدخال مَعلمات مهمة التدريب.
- ضمن مجموعة البيانات، اختَر ما مِن مجموعة بيانات مُدارة.
- بعد ذلك، اختَر تدريب مخصّص (متقدّم) كطريقة للتدريب وانقر على متابعة.
- أدخِل
multiworker-cassava
(أو أي اسم تريد أن تطلقه على نموذجك) في حقل اسم النموذج. - انقر على متابعة.
في خطوة "إعدادات الحاوية"، اختَر حاوية مخصّصة:
في المربّع الأول (صورة الحاوية)، أدخِل قيمة متغيّر IMAGE_URI
من القسم السابق. يجب أن يكون gcr.io/your-cloud-project/multiworker:cassava
مع رقم تعريف مشروعك. اترك باقي الحقول فارغةً وانقر على متابعة.
تخطّ خطوة مَعلمات H الفائقة من خلال النقر على متابعة مرة أخرى.
الخطوة 2: ضبط مجموعة الحوسبة
توفّر Vertex AI 4 مجموعات عامل لتغطية الأنواع المختلفة من مهام الآلة.
تضبط مجموعة العمال 0 "أساسي" أو "رئيسي" أو "أداة الجدولة" أو "رئيسي". في MultiWorkerMirroredStrategy
، يتم تصنيف جميع الأجهزة على أنّها أجهزة عامل، وهي الأجهزة المادية التي يتم تنفيذ العمليات الحسابية المكرّرة عليها. بالإضافة إلى أنّ كل جهاز هو عامل، يجب أن يكون هناك عامل واحد يتولّى بعض الأعمال الإضافية، مثل حفظ نقاط التحقق وكتابة ملفات التلخيص في TensorBoard. ويُعرف هذا الجهاز باسم "الجهاز الرئيسي". لا يتوفّر سوى عامل رئيسي واحد، لذا سيكون عدد العمال في مجموعة العمال 0 دائمًا واحدًا.
في وحدة الحساب والأسعار، اترك المنطقة المحدّدة كما هي واضبط مجموعة العمال 0 على النحو التالي:
"مجموعة العمال 1" هي المكان الذي تضبط فيه العمال لقطّعتك.
اضبط مجموعة العمال 1 على النحو التالي:
تم ضبط المجموعة الآن لتضم جهازين يعملان على وحدة المعالجة المركزية (CPU) فقط. عند تشغيل رمز تطبيق التدريب، ستوزّع MultiWorkerMirroredStrategy
التدريب على كلا الجهازَين.
لا يتضمّن MultiWorkerMirroredStrategy
سوى نوعَي المهام، وهما مهام رئيسية ومهام عامل، لذا لا حاجة إلى ضبط "مجموعات العمال" الإضافية. ومع ذلك، إذا كنت تريد استخدام ParameterServerStrategy
في TensorFlow، عليك ضبط خوادم المَعلمات في مجموعة العمال 2. وإذا أردت إضافة مقيّم إلى مجموعتك، يمكنك إعداد هذا الجهاز في مجموعة العمال 3.
انقر على بدء التدريب لبدء مهمة ضبط المَعلمات الفائقة. في قسم "التدريب" في وحدة التحكّم ضمن علامة التبويب تدريب المسارات، سترى الوظيفة التي تم إطلاقها حديثًا:
🎉 تهانينا. 🎉
لقد تعلمت كيفية استخدام Vertex AI لإجراء ما يلي:
- ابدأ مهمة تدريب متعددة العاملين للحصول على رمز تدريب متوفر في حاوية مخصّصة. لقد استخدمت نموذج TensorFlow في هذا المثال، ولكن يمكنك تدريب نموذج تم إنشاؤه باستخدام أي إطار عمل باستخدام حاويات مخصصة أو مدمجة.
لمعرفة المزيد عن الأجزاء المختلفة من Vertex، اطّلِع على المستندات.
7- [اختياري] استخدام حزمة تطوير البرامج (SDK) لـ Vertex
شرح القسم السابق كيفية بدء وظيفة التدريب من خلال واجهة المستخدم. في هذا القسم، ستتعرّف على طريقة بديلة لإرسال وظيفة التدريب باستخدام واجهة برمجة التطبيقات Vertex Python API.
ارجع إلى النسخة الافتراضية لدفترك وأنشِئ دفتر ملاحظات TensorFlow 2 من "مشغّل التطبيقات":
استورِد حزمة تطوير برامج Vertex AI.
from google.cloud import aiplatform
لبدء مهمة التدريب باستخدام عدة عمال، عليك أولاً تحديد مواصفات مجموعة العمال. يُرجى العِلم أنّ استخدام وحدات معالجة الرسومات في المواصفات اختياري تمامًا ويمكنك إزالة accelerator_type
وaccelerator_count
إذا كنت تريد إنشاء مجموعة تتضمّن وحدة المعالجة المركزية فقط كما هو موضّح في القسم السابق.
# The spec of the worker pools including machine type and Docker image
# Be sure to replace {YOUR-PROJECT-ID} with your project ID.
worker_pool_specs=[
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-8", "accelerator_type": "NVIDIA_TESLA_V100", "accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{YOUR-PROJECT-ID}/multiworker:cassava"}
},
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-8", "accelerator_type": "NVIDIA_TESLA_V100", "accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{YOUR-PROJECT-ID}/multiworker:cassava"}
}
]
بعد ذلك، أنشئ CustomJob
وشغِّله. عليك استبدال {YOUR_BUCKET}
بحزمة في مشروعك لوضعها في مرحلة الإعداد. يمكنك استخدام الحزمة نفسها التي أنشأتها سابقًا.
# Replace YOUR_BUCKET
my_multiworker_job = aiplatform.CustomJob(display_name='multiworker-cassava-sdk',
worker_pool_specs=worker_pool_specs,
staging_bucket='gs://{YOUR_BUCKET}')
my_multiworker_job.run()
في قسم "التدريب" في وحدة التحكّم ضمن علامة التبويب وظائف مخصصة، سترى مهمة التدريب:
8. تنظيف
لأنّنا ضبطنا ورقة الملاحظات على انتهاء مهلة الحاسب بعد 60 دقيقة من عدم النشاط، لا داعي للقلق بشأن إيقاف تشغيل المثيل. إذا أردت إيقاف المثيل يدويًا، انقر على زر "إيقاف" في قسم Vertex AI Workbench في وحدة التحكّم. إذا كنت ترغب في حذف المفكرة بالكامل، فانقر فوق الزر حذف.
لحذف حزمة التخزين، استخدِم قائمة التنقّل في Cloud Console للانتقال إلى "مساحة التخزين"، واختَر الحزمة، ثم انقر على "حذف":