جدولة مهام دفتر الملاحظات Amazon SageMaker وإدارة سير عمل دفتر الملاحظات متعدد الخطوات باستخدام واجهات برمجة التطبيقات | خدمات الويب الأمازون

جدولة مهام دفتر الملاحظات Amazon SageMaker وإدارة سير عمل دفتر الملاحظات متعدد الخطوات باستخدام واجهات برمجة التطبيقات | خدمات الويب الأمازون

عقدة المصدر: 2985648

أمازون ساجميكر ستوديو يوفر حلاً مُدارًا بالكامل لعلماء البيانات لإنشاء نماذج التعلم الآلي (ML) وتدريبها ونشرها بشكل تفاعلي. وظائف الكمبيوتر الدفتري Amazon SageMaker السماح لعلماء البيانات بتشغيل دفاتر الملاحظات الخاصة بهم عند الطلب أو وفقًا لجدول زمني ببضع نقرات في SageMaker Studio. من خلال هذا الإطلاق، يمكنك تشغيل دفاتر الملاحظات برمجيًا كمهام باستخدام واجهات برمجة التطبيقات التي توفرها خطوط أنابيب Amazon SageMaker، ميزة تنسيق سير عمل ML الأمازون SageMaker. علاوة على ذلك، يمكنك إنشاء سير عمل تعلم الآلة متعدد الخطوات مع العديد من دفاتر الملاحظات التابعة باستخدام واجهات برمجة التطبيقات هذه.

SageMaker Pipelines عبارة عن أداة أصلية لتنسيق سير العمل لبناء مسارات تعلم الآلة التي تستفيد من تكامل SageMaker المباشر. يتكون كل خط أنابيب SageMaker من سلموالتي تتوافق مع المهام الفردية مثل المعالجة أو التدريب أو معالجة البيانات باستخدام أمازون EMR. تتوفر الآن مهام دفتر ملاحظات SageMaker كنوع خطوة مضمن في مسارات SageMaker. يمكنك استخدام خطوة مهمة دفتر الملاحظات هذه لتشغيل دفاتر الملاحظات بسهولة كمهام باستخدام بضعة أسطر فقط من التعليمات البرمجية باستخدام الأمازون SageMaker Python SDK. بالإضافة إلى ذلك، يمكنك دمج العديد من دفاتر الملاحظات التابعة معًا لإنشاء سير عمل في شكل رسوم بيانية غير دورية موجهة (DAGs). يمكنك بعد ذلك تشغيل مهام دفاتر الملاحظات أو DAGs هذه وإدارتها وتصورها باستخدام SageMaker Studio.

يستخدم علماء البيانات حاليًا SageMaker Studio لتطوير دفاتر ملاحظات Jupyter الخاصة بهم بشكل تفاعلي ثم استخدام مهام دفاتر ملاحظات SageMaker لتشغيل دفاتر الملاحظات هذه كمهام مجدولة. يمكن تشغيل هذه الوظائف على الفور أو وفقًا لجدول زمني متكرر دون الحاجة إلى عمال البيانات لإعادة بناء التعليمات البرمجية كوحدات Python. تتضمن بعض حالات الاستخدام الشائعة للقيام بذلك ما يلي:

  • تشغيل أجهزة الكمبيوتر المحمولة طويلة الأمد في الخلفية
  • تشغيل نموذج الاستدلال بانتظام لإنشاء التقارير
  • الارتقاء من إعداد مجموعات بيانات العينات الصغيرة إلى العمل مع بيانات ضخمة بحجم بيتابايت
  • إعادة تدريب ونشر النماذج على بعض الإيقاع
  • جدولة المهام لجودة النموذج أو مراقبة انجراف البيانات
  • استكشاف مساحة المعلمة للحصول على نماذج أفضل

على الرغم من أن هذه الوظيفة تجعل من السهل على العاملين في مجال البيانات أتمتة دفاتر الملاحظات المستقلة، إلا أن سير عمل تعلم الآلة غالبًا ما يتكون من عدة دفاتر ملاحظات، يؤدي كل منها مهمة محددة ذات تبعيات معقدة. على سبيل المثال، يجب أن يحتوي دفتر الملاحظات الذي يراقب انحراف بيانات النموذج على خطوة مسبقة تسمح باستخراج البيانات الجديدة وتحويلها وتحميلها (ETL) ومعالجتها وخطوة لاحقة لتحديث النموذج والتدريب في حالة ملاحظة انحراف كبير . علاوة على ذلك، قد يرغب علماء البيانات في تشغيل سير العمل بأكمله وفقًا لجدول زمني متكرر لتحديث النموذج بناءً على البيانات الجديدة. لتمكينك من أتمتة دفاتر الملاحظات الخاصة بك بسهولة وإنشاء مهام سير العمل المعقدة، تتوفر الآن مهام دفتر ملاحظات SageMaker كخطوة في خطوط أنابيب SageMaker. في هذا المنشور، نعرض كيف يمكنك حل حالات الاستخدام التالية باستخدام بضعة أسطر من التعليمات البرمجية:

  • قم بتشغيل دفتر ملاحظات مستقل برمجيًا على الفور أو وفقًا لجدول زمني متكرر
  • قم بإنشاء مهام سير عمل متعددة الخطوات لأجهزة الكمبيوتر المحمولة مثل DAGs لأغراض التكامل المستمر والتسليم المستمر (CI/CD) التي يمكن إدارتها عبر SageMaker Studio UI

حل نظرة عامة

يوضح الرسم البياني التالي بنية الحل لدينا. يمكنك استخدام SageMaker Python SDK لتشغيل مهمة دفتر ملاحظات واحدة أو سير عمل. تقوم هذه الميزة بإنشاء مهمة تدريب SageMaker لتشغيل دفتر الملاحظات.

في الأقسام التالية، نستعرض نموذجًا لحالة استخدام تعلم الآلة ونعرض الخطوات اللازمة لإنشاء سير عمل لمهام دفتر الملاحظات، وتمرير المعلمات بين خطوات دفتر الملاحظات المختلفة، وجدولة سير العمل، ومراقبته عبر SageMaker Studio.

بالنسبة لمشكلة ML الخاصة بنا في هذا المثال، نقوم ببناء نموذج تحليل المشاعر، وهو نوع من مهام تصنيف النص. تشمل التطبيقات الأكثر شيوعًا لتحليل المشاعر مراقبة وسائل التواصل الاجتماعي وإدارة دعم العملاء وتحليل تعليقات العملاء. مجموعة البيانات المستخدمة في هذا المثال هي مجموعة بيانات Stanford Sentiment Treebank (SST2)، والتي تتكون من مراجعات الأفلام بالإضافة إلى عدد صحيح (0 أو 1) يشير إلى المشاعر الإيجابية أو السلبية للمراجعة.

فيما يلي مثال على ملف data.csv الملف المطابق لمجموعة بيانات SST2، ويعرض القيم في أول عمودين له. لاحظ أن الملف يجب ألا يحتوي على أي رأس.

عمود 1 عمود 2
0 إخفاء الإفرازات الجديدة من الوحدات الأبوية
0 لا يحتوي على أي ذكاء، فقط الكمامات المجهدة
1 يحب شخصياته وينقل شيئًا جميلًا عن الطبيعة البشرية
0 يظل راضيًا تمامًا عن البقاء على حاله طوال الوقت
0 حول أسوأ الكليشيهات المتعلقة بالانتقام من المهووسين التي يمكن لصانعي الأفلام أن يتخلصوا منها
0 وهذا أمر مأساوي للغاية بحيث لا يستحق مثل هذه المعاملة السطحية
1 يوضح أن مخرج أفلام هوليوود الرائجة مثل "الألعاب الوطنية" لا يزال بإمكانه إنتاج فيلم شخصي صغير ذو تأثير عاطفي.

في مثال ML هذا، يجب علينا تنفيذ عدة مهام:

  1. قم بإجراء هندسة الميزات لإعداد مجموعة البيانات هذه بتنسيق يمكن لنموذجنا فهمه.
  2. هندسة ما بعد الميزة، قم بتشغيل خطوة تدريبية تستخدم المحولات.
  3. قم بإعداد الاستدلال الدفعي باستخدام النموذج المضبوط بدقة للمساعدة في التنبؤ بميول المراجعات الجديدة الواردة.
  4. قم بإعداد خطوة مراقبة البيانات حتى نتمكن من مراقبة بياناتنا الجديدة بانتظام بحثًا عن أي انحراف في الجودة قد يتطلب منا إعادة تدريب أوزان النموذج.

مع إطلاق مهمة دفتر الملاحظات كخطوة في مسارات SageMaker، يمكننا تنسيق سير العمل هذا، والذي يتكون من ثلاث خطوات متميزة. يتم تطوير كل خطوة من خطوات سير العمل في دفتر ملاحظات مختلف، والتي يتم بعد ذلك تحويلها إلى خطوات مهام دفتر ملاحظات مستقلة ويتم توصيلها كمسار:

  • تجهيزها - قم بتنزيل مجموعة بيانات SST2 العامة من خدمة تخزين أمازون البسيطة (Amazon S3) وقم بإنشاء ملف CSV للدفتر في الخطوة 2 لتشغيله. مجموعة بيانات SST2 عبارة عن مجموعة بيانات لتصنيف النص تحتوي على علامتين (0 و1) وعمود نصي لتصنيفه.
  • قادة الإيمان - خذ ملف CSV ذو الشكل وقم بإجراء الضبط الدقيق باستخدام BERT لتصنيف النص باستخدام مكتبات Transformers. نستخدم دفترًا لإعداد بيانات الاختبار كجزء من هذه الخطوة، وهو عبارة عن تبعية لخطوة الضبط الدقيق والاستدلال الدفعي. عند اكتمال الضبط الدقيق، يتم تشغيل هذا الكمبيوتر الدفتري باستخدام Run Magic وإعداد مجموعة بيانات اختبار لاستنتاج العينة باستخدام النموذج الذي تم ضبطه بدقة.
  • تحويل ومراقبة – إجراء استنتاج دفعة وإعداد جودة البيانات من خلال مراقبة النموذج للحصول على اقتراح مجموعة بيانات أساسية.

قم بتشغيل دفاتر الملاحظات

نموذج التعليمات البرمجية لهذا الحل متاح على GitHub جيثب:.

يشبه إنشاء خطوة مهمة دفتر ملاحظات SageMaker إنشاء خطوات SageMaker Pipeline الأخرى. في مثال دفتر الملاحظات هذا، نستخدم SageMaker Python SDK لتنظيم سير العمل. لإنشاء خطوة دفتر ملاحظات في SageMaker Pipelines، يمكنك تحديد المعلمات التالية:

  • دفتر الإدخال – اسم دفتر الملاحظات الذي ستقوم خطوة دفتر الملاحظات هذه بتنسيقه. هنا يمكنك تمرير المسار المحلي إلى دفتر الإدخال. بشكل اختياري، إذا كان دفتر الملاحظات هذا يحتوي على دفاتر ملاحظات أخرى قيد التشغيل، فيمكنك تمريرها في ملف AdditionalDependencies معلمة خطوة مهمة دفتر الملاحظات.
  • صورة URI – صورة Docker خلف خطوة مهمة دفتر الملاحظات. يمكن أن تكون هذه هي الصور المحددة مسبقًا التي يوفرها SageMaker بالفعل أو صورة مخصصة قمت بتحديدها ودفعتها إليها سجل الأمازون المرنة للحاويات (أمازون إي سي آر). ارجع إلى قسم الاعتبارات في نهاية هذا المنشور للحصول على الصور المدعومة.
  • اسم النواة – اسم النواة التي تستخدمها في SageMaker Studio. تم تسجيل مواصفات النواة هذه في الصورة التي قدمتها.
  • نوع المثيل (اختياري) - و الأمازون الحوسبة المرنة السحابية (Amazon EC2) نوع المثيل الموجود خلف مهمة دفتر الملاحظات التي حددتها والتي سيتم تشغيلها.
  • المعلمات (اختياري) – المعلمات التي يمكنك تمريرها والتي ستكون متاحة لجهاز الكمبيوتر المحمول الخاص بك. يمكن تعريفها في أزواج القيمة الرئيسية. بالإضافة إلى ذلك، يمكن تعديل هذه المعلمات بين عمليات تشغيل مهام دفتر الملاحظات المختلفة أو عمليات تشغيل المسارات.

يحتوي مثالنا على إجمالي خمسة دفاتر ملاحظات:

  • ملحوظة-الوظيفة-pipeline.ipynb – هذا هو دفتر ملاحظاتنا الرئيسي حيث نحدد خط الأنابيب وسير العمل لدينا.
  • preprocess.ipynb - يعد هذا الدفتر الخطوة الأولى في سير العمل لدينا ويحتوي على الكود الذي سيسحب مجموعة بيانات AWS العامة وينشئ ملف CSV منها.
  • Training.ipynb – يعد هذا الدفتر الخطوة الثانية في سير العمل لدينا ويحتوي على رمز لأخذ ملف CSV من الخطوة السابقة وإجراء التدريب المحلي والضبط الدقيق. تحتوي هذه الخطوة أيضًا على تبعية من prepare-test-set.ipynb دفتر ملاحظات لسحب مجموعة بيانات اختبارية لاستدلال العينة باستخدام النموذج المضبوط بدقة.
  • إعداد اختبار set.ipynb - يقوم هذا الدفتر بإنشاء مجموعة بيانات اختبارية سيستخدمها دفتر التدريب الخاص بنا في خطوة خط الأنابيب الثانية ويستخدم لاستنتاج العينة باستخدام النموذج المضبوط بدقة.
  • تحويل مراقب.ipynb - يمثل هذا الكمبيوتر الدفتري الخطوة الثالثة في سير العمل لدينا ويأخذ نموذج BERT الأساسي ويقوم بتشغيل مهمة تحويل دفعة SageMaker، مع إعداد جودة البيانات أيضًا من خلال مراقبة النموذج.

بعد ذلك، نسير عبر دفتر الملاحظات الرئيسي nb-job-pipeline.ipynb، الذي يجمع كافة أجهزة الكمبيوتر المحمولة الفرعية في مسار ويدير سير العمل الشامل. لاحظ أنه على الرغم من أن المثال التالي يقوم بتشغيل دفتر الملاحظات مرة واحدة فقط، إلا أنه يمكنك أيضًا جدولة المسار لتشغيل دفتر الملاحظات بشكل متكرر. تشير إلى وثائق SageMaker للحصول على تعليمات مفصلة.

في الخطوة الأولى لمهمة الكمبيوتر الدفتري، قمنا بتمرير معلمة باستخدام حاوية S3 الافتراضية. يمكننا استخدام هذه المجموعة لتفريغ أي عناصر نريدها متاحة لخطوات خطوط الأنابيب الأخرى. للمفكرة الأولى (preprocess.ipynb)، نقوم بسحب مجموعة بيانات قطار SST2 العامة لـ AWS وإنشاء ملف CSV للتدريب منها وندفعه إلى مجموعة S3 هذه. انظر الكود التالي:

# Parameters
print(default_s3_bucket)

!aws s3 cp s3://sagemaker-sample-files/datasets/text/SST2/sst2.train sst2.train

# will read just the first 500 lines for quicker execution
with open('sst2.train', 'r') as f:
    lines = f.readlines()[:500] 

data = []
for line in lines:
    label, text = line.strip().split(' ', 1)
    data.append((int(label), text))

df = pd.DataFrame(data, columns=['label', 'text'])
df.to_csv("train.csv", index=False) #create csv file with smaller dataset
!aws s3 cp "train.csv" {default_s3_bucket}

يمكننا بعد ذلك تحويل هذا الكمبيوتر الدفتري إلى ملف NotebookJobStep مع الكود التالي في دفترنا الرئيسي:

# provide S3 Bucket to dump artifacts in
nb_job_params = {"default_s3_bucket": notebook_artifacts}

preprocess_nb_step = NotebookJobStep(
name=preprocess_step_name,
description=preprocess_description,
notebook_job_name=preprocess_job_name,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
role=role,
input_notebook=preprocess_notebook,
instance_type="ml.m5.4xlarge",
parameters=nb_job_params,
)

الآن بعد أن أصبح لدينا نموذج لملف CSV، يمكننا البدء في تدريب نموذجنا في دفتر التدريب الخاص بنا. يأخذ دفتر التدريب الخاص بنا نفس المعلمة مع مجموعة S3 ويسحب مجموعة بيانات التدريب من ذلك الموقع. ثم نقوم بإجراء الضبط الدقيق باستخدام كائن تدريب المحولات مع مقتطف التعليمات البرمجية التالي:

from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(output_dir="test_trainer", evaluation_strategy="epoch")

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)

trainer.train()

بعد الضبط الدقيق، نريد تشغيل بعض الاستدلالات المجمعة لمعرفة كيفية أداء النموذج. ويتم ذلك باستخدام دفتر ملاحظات منفصل (prepare-test-set.ipynb) في نفس المسار المحلي الذي ينشئ مجموعة بيانات اختبارية لإجراء الاستدلال على استخدام نموذجنا المدرب. يمكننا تشغيل دفتر الملاحظات الإضافي في دفتر التدريب الخاص بنا باستخدام الخلية السحرية التالية:

%run 'prepare-test-set.ipynb'

نحدد هذه التبعية الإضافية للكمبيوتر الدفتري في ملف AdditionalDependencies المعلمة في خطوة مهمة دفتر الملاحظات الثانية لدينا:

train_nb_step = NotebookJobStep(
name=training_step_name,
description=training_description,
notebook_job_name=training_job_name,
input_notebook=training_notebook,
additional_dependencies=[test_data_prep_notebook],
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)

يجب علينا أيضًا تحديد أن خطوة مهمة دفتر الملاحظات التدريبي (الخطوة 2) تعتمد على خطوة مهمة دفتر الملاحظات المسبق (الخطوة 1) باستخدام add_depends_on استدعاء API على النحو التالي:

train_nb_step.add_depends_on([preprocess_nb_step])

خطوتنا الأخيرة، هي أن يقوم نموذج BERT بتشغيل تحويل دفعة SageMaker، مع إعداد التقاط البيانات والجودة أيضًا عبر SageMaker Model Monitor. لاحظ أن هذا يختلف عن استخدام المدمج في تحول or إنها تقوم بالتسجيل  خطوات عبر خطوط الأنابيب. سيقوم دفتر الملاحظات الخاص بنا لهذه الخطوة بتنفيذ واجهات برمجة التطبيقات نفسها، ولكن سيتم تعقبه كخطوة مهمة دفتر الملاحظات. تعتمد هذه الخطوة على خطوة مهمة التدريب التي قمنا بتحديدها مسبقًا، لذا فإننا نلتقطها أيضًا باستخدام العلامةdependent_on.

batch_monitor_step = NotebookJobStep(
name=batch_monitor_step_name,
description=batch_monitor_description,
notebook_job_name=batch_monitor_job_name,
input_notebook=batch_monitor_notebook,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)
batch_monitor_step.add_depends_on([train_nb_step])

بعد تحديد الخطوات المختلفة لسير العمل لدينا، يمكننا إنشاء وتشغيل المسار الشامل:

# create pipeline
pipeline = Pipeline(
name=pipeline_name,
steps=[preprocess_nb_step, train_nb_step, batch_monitor_step],
)

# execute pipeline
pipeline.create(session.get_execution_role())
execution = pipeline.start(parameters={})
execution.wait(delay=30, max_attempts=60)
execution_steps = execution.list_steps()
print(execution_steps)

مراقبة تشغيل خط الأنابيب

يمكنك تتبع ومراقبة خطوات تشغيل دفتر الملاحظات عبر SageMaker Pipelines DAG، كما هو موضح في لقطة الشاشة التالية.

يمكنك أيضًا مراقبة تشغيل دفتر الملاحظات الفردي بشكل اختياري على لوحة معلومات مهمة دفتر الملاحظات وتبديل ملفات الإخراج التي تم إنشاؤها عبر واجهة مستخدم SageMaker Studio. عند استخدام هذه الوظيفة خارج SageMaker Studio، يمكنك تحديد المستخدمين الذين يمكنهم تتبع حالة التشغيل على لوحة معلومات مهمة دفتر الملاحظات باستخدام العلامات. لمزيد من التفاصيل حول العلامات المراد تضمينها، راجع اعرض مهام الكمبيوتر الدفتري الخاص بك وقم بتنزيل المخرجات في لوحة معلومات Studio UI.

في هذا المثال، نقوم بإخراج مهام دفتر الملاحظات الناتجة إلى دليل يسمى outputs في المسار المحلي الخاص بك باستخدام رمز تشغيل خط الأنابيب الخاص بك. كما هو موضح في لقطة الشاشة التالية، يمكنك هنا رؤية مخرجات دفتر الإدخال الخاص بك وأيضًا أي معلمات قمت بتحديدها لهذه الخطوة.

تنظيف

إذا اتبعت المثال الخاص بنا، فتأكد من حذف المسار الذي تم إنشاؤه ووظائف دفتر الملاحظات وبيانات s3 التي تم تنزيلها بواسطة نماذج دفاتر الملاحظات.

الاعتبارات

وفيما يلي بعض الاعتبارات الهامة لهذه الميزة:

  • قيود SDK - لا يمكن إنشاء خطوة مهمة دفتر الملاحظات إلا عبر SageMaker Python SDK.
  • قيود الصورة -خطوة مهمة دفتر الملاحظات تدعم الصور التالية:

وفي الختام

مع هذا الإطلاق، يمكن للعاملين في مجال البيانات الآن تشغيل دفاتر ملاحظاتهم برمجيًا باستخدام بضعة أسطر من التعليمات البرمجية باستخدام SageMaker بيثون SDK. بالإضافة إلى ذلك، يمكنك إنشاء عمليات سير عمل معقدة متعددة الخطوات باستخدام أجهزة الكمبيوتر المحمولة الخاصة بك، مما يقلل بشكل كبير من الوقت اللازم للانتقال من جهاز الكمبيوتر المحمول إلى مسار CI/CD. بعد إنشاء المسار، يمكنك استخدام SageMaker Studio لعرض وتشغيل DAGs لخطوط الأنابيب الخاصة بك وإدارة عمليات التشغيل ومقارنتها. سواء كنت تقوم بجدولة سير عمل التعلم الآلي الشامل أو جزء منه، فإننا نشجعك على المحاولة سير العمل القائم على دفتر الملاحظات.


عن المؤلفين

أنشيت جوبتا هو مدير منتج أول في Amazon SageMaker Studio. وهي تركز على تمكين سير عمل علوم البيانات التفاعلية وهندسة البيانات من داخل SageMaker Studio IDE. تستمتع في أوقات فراغها بالطهي ولعب ألعاب الطاولة/البطاقات والقراءة.

رام فيجيراجو هو مهندس ML مع فريق خدمة SageMaker. يركز على مساعدة العملاء في بناء حلول الذكاء الاصطناعي / التعلم الآلي وتحسينها على Amazon SageMaker. يحب السفر والكتابة في أوقات فراغه.

إدوارد صن هو أحد كبار SDE يعمل في SageMaker Studio في Amazon Web Services. يركز على بناء حل ML تفاعلي وتبسيط تجربة العملاء لدمج SageMaker Studio مع التقنيات الشائعة في هندسة البيانات والنظام البيئي ML. في أوقات فراغه ، يعتبر إدوارد من أشد المعجبين بالتخييم والمشي لمسافات طويلة وصيد الأسماك ويستمتع بقضاء الوقت مع أسرته.

الطابع الزمني:

اكثر من التعلم الآلي من AWS