تدريب تدريجي مع Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تدريب تدريجي مع Amazon SageMaker JumpStart

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

كان كل محتوى JumpStart متاحًا في السابق فقط من خلال أمازون ساجميكر ستوديووالتي توفر واجهة رسومية سهلة الاستخدام للتفاعل مع الميزة. في الآونة الأخيرة ، ونحن أيضا أعلن إطلاقه سهل الاستخدام واجهات برمجة تطبيقات JumpStart كإمتداد لـ SageMaker Python SDK ، مما يسمح لك بنشر مجموعة كبيرة من النماذج المدربة مسبقًا والمدعومة من JumpStart على مجموعات البيانات الخاصة بك وضبطها برمجيًا. يفتح هذا الإطلاق استخدام إمكانات JumpStart في مهام سير عمل التعليمات البرمجية الخاصة بك وخطوط أنابيب MLOps وفي أي مكان آخر تتفاعل فيه مع SageMaker عبر SDK.

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

نظرة عامة حول JumpStart

JumpStart هو منتج متعدد الأوجه يتضمن قدرات مختلفة لمساعدتك على البدء بسرعة مع ML على SageMaker. في وقت كتابة هذا التقرير ، يمكنك JumpStart من القيام بما يلي:

  • انشر نماذج مدربة مسبقًا لمهام ML الشائعة - يمكّنك JumpStart من معالجة مهام ML الشائعة دون بذل جهود تطويرية من خلال توفير النشر السهل للنماذج المدربة مسبقًا على مجموعات البيانات الكبيرة والمتاحة للجمهور. بذل مجتمع أبحاث ML قدرًا كبيرًا من الجهد في جعل غالبية النماذج المطورة حديثًا متاحة للاستخدام العام ؛ يستضيف JumpStart مجموعة من أكثر من 300 نموذج ، تغطي 15 مهمة ML الأكثر شيوعًا مثل اكتشاف الكائنات وتصنيف النص وإنشاء النصوص ، مما يسهل على المبتدئين استخدامها. هذه النماذج مستمدة من محاور النماذج الشهيرة ، مثل TensorFlow و PyTorch و Hugging Face و MXNet Hub.
  • صقل النماذج المدربة مسبقًا - يسمح لك JumpStart بضبط النماذج المدربة مسبقًا دون الحاجة إلى كتابة خوارزمية التدريب الخاصة بك. في ML ، تسمى القدرة على نقل المعرفة المكتسبة في مجال إلى آخر نقل التعلم. يمكنك استخدام التعلم بالنقل لإنتاج نماذج دقيقة على مجموعات البيانات الأصغر ، بتكاليف تدريب أقل بكثير من تلك المستخدمة في تدريب النموذج الأصلي. يتضمن JumpStart أيضًا خوارزميات تدريب شائعة تعتمد على LightGBM و CatBoost و XGBoost و Scikit-Learn أنه يمكنك التدريب من نقطة الصفر للانحدار المجدول والتصنيف.
  • استخدم الحلول الجاهزة - يوفر JumpStart مجموعة من 17 حلاً لحالات استخدام ML الشائعة مثل التنبؤ بالطلب والتطبيقات الصناعية والمالية ، والتي يمكنك نشرها ببضع نقرات فقط. الحلول عبارة عن تطبيقات ML شاملة تجمع بين خدمات AWS المتنوعة لحل حالة استخدام عمل معينة. هم يستخدمون تكوين سحابة AWS القوالب والبنى المرجعية للنشر السريع ، مما يعني أنها قابلة للتخصيص بالكامل.
  • استخدم أمثلة دفتر الملاحظات لخوارزميات SageMaker - يوفر SageMaker مجموعة من الخوارزميات المضمنة لمساعدة علماء البيانات وممارسي تعلم الآلة على البدء في التدريب ونشر نماذج التعلم الآلي بسرعة. يوفر JumpStart نماذج من دفاتر الملاحظات التي يمكنك استخدامها لتطبيق هذه الخوارزميات بسرعة.
  • مراجعة مقاطع الفيديو التدريبية والمدونات - يوفر JumpStart أيضًا العديد من منشورات المدونة ومقاطع الفيديو التي تعلمك كيفية استخدام وظائف مختلفة داخل SageMaker.

يقبل JumpStart إعدادات VPC المخصصة وملفات خدمة إدارة مفتاح AWS (AWS KMS) مفاتيح التشفير ، بحيث يمكنك استخدام النماذج والحلول المتاحة بأمان داخل بيئة مؤسستك. يمكنك تمرير إعدادات الأمان الخاصة بك إلى JumpStart داخل Studio أو من خلال SageMaker Python SDK.

تصنيف الصورة

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

بالنسبة لمجموعة البيانات الخاصة بنا ، يكون الإدخال عبارة عن دليل به العديد من الأدلة الفرعية مثل عدد الفئات. يجب أن يحتوي كل دليل فرعي على صور تنتمي إلى تلك الفئة بتنسيق .jpg. يجب أن يبدو دليل الإدخال مثل التسلسل الهرمي التالي إذا كانت بيانات التدريب تحتوي على صور من فصلين: roses و dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

يمكن أن تكون أسماء المجلدات والفئات وأسماء ملفات .jpg أي شيء.

نحن نقدم tf_flowers1 مجموعة البيانات كمجموعة بيانات افتراضية لضبط النموذج. تتكون مجموعة البيانات هذه من صور خمسة أنواع من الزهور. تم تنزيل مجموعة البيانات من TensorFlow.

نظرة عامة تجول

توفر الأقسام التالية عرضًا توضيحيًا خطوة بخطوة لإجراء تصنيف للصور باستخدام JumpStart ، عبر كل من Studio UI و JumpStart APIs.

نسير من خلال الخطوات التالية:

  1. الوصول إلى JumpStart من خلال Studio UI:
    1. صقل النموذج المدرَّب مسبقًا.
    2. انشر النموذج الدقيق.
    3. تدرب تدريجيًا على النموذج الذي تم ضبطه جيدًا وأعد نشره.
  2. استخدم JumpStart برمجيًا مع SageMaker Python SDK:
    1. صقل النموذج المدرَّب مسبقًا.
    2. انشر النموذج الدقيق.
    3. تدرب تدريجيًا على النموذج الذي تم ضبطه جيدًا وأعد نشره.

قم بالوصول إلى JumpStart من خلال Studio UI

في هذا القسم ، نوضح كيفية ضبط نماذج JumpStart ونشرها من خلال Studio UI. بالإضافة إلى ذلك ، نوضح كيفية تدريب نموذج قمت بضبطه مسبقًا بشكل تدريجي.

صقل النموذج المدرَّب مسبقًا

يوضح الفيديو التالي كيفية العثور على نموذج تصنيف صور مدرب مسبقًا على JumpStart وضبطه. تحتوي صفحة النموذج على معلومات قيمة حول النموذج وكيفية استخدامه وتنسيق البيانات المتوقع وبعض تفاصيل الضبط.

لأغراض العرض التوضيحي ، نقوم بضبط النموذج باستخدام مجموعة البيانات المتوفرة افتراضيًا ، وهي ملف tf_flowers مجموعة بيانات تتكون من أنواع مختلفة من الزهور. يتضمن الضبط الدقيق لمجموعة البيانات الخاصة بك أخذ التنسيق الصحيح للبيانات (كما هو موضح في صفحة النموذج) ، وتحميلها إلى خدمة تخزين أمازون البسيطة (Amazon S3) ، وتحديد موقعه في تكوين مصدر البيانات.

نستخدم نفس قيم المعلمة الفائقة التي تم تعيينها افتراضيًا (عدد الفترات ومعدل التعلم وحجم الدُفعة). نستخدم أيضًا مثيل ml.p3.2xlarge المدعوم من GPU كمثال تدريب SageMaker.

يمكنك مراقبة وظيفتك التدريبية مباشرة على وحدة تحكم الاستوديو ، ويتم إعلامك عند اكتمالها.

انشر النموذج الدقيق

بعد اكتمال التدريب ، يمكنك نشر النموذج الدقيق من نفس الصفحة التي تحتوي على تفاصيل مهمة التدريب. لنشر نموذجنا ، نختار نوع مثيل مختلف ، ml.p2.xlarge. لا يزال يوفر تسريع GPU اللازم لوقت استجابة منخفض للاستدلال ، ولكن عند نقطة سعر أقل. بعد تكوين مثيل استضافة SageMaker ، اختر نشر. قد يستغرق الأمر من 5 إلى 10 دقائق حتى يتم تشغيل نقطة النهاية الثابتة.

ثم تكون نقطة النهاية جاهزة للعمل وجاهزة للرد على طلبات الاستدلال!

لتسريع وقتك في الاستدلال ، يوفر JumpStart نموذج دفتر ملاحظات يوضح لك كيفية تشغيل الاستدلال على نقطة النهاية التي تم نشرها حديثًا. يختار افتح المفكرة مع استخدم نقطة النهاية من الاستوديو.

تدريب النموذج الدقيق بشكل متزايد ونشره

عند اكتمال الضبط الدقيق ، يمكنك تدريب النموذج بشكل أكبر لتعزيز الأداء. هذه الخطوة مشابهة جدًا لعملية الضبط الأولي ، باستثناء أننا نستخدم النموذج الذي تم ضبطه بالفعل كنقطة انطلاق. يمكنك استخدام بيانات جديدة ، ولكن يجب أن يكون تنسيق مجموعة البيانات هو نفسه (نفس مجموعة الفئات).

استخدم JumpStart برمجيًا مع SageMaker SDK

في الأقسام السابقة ، أوضحنا كيف يمكنك استخدام JumpStart UI لضبط النموذج ونشره وتدريبه بشكل تدريجي بشكل تفاعلي في بضع نقرات. يمكنك أيضًا استخدام نماذج JumpStart والضبط السهل برمجيًا باستخدام واجهات برمجة التطبيقات المدمجة في SageMaker SDK. ننتقل الآن إلى مثال سريع لكيفية تكرار العملية السابقة. جميع الخطوات في هذا العرض التوضيحي متوفرة في أجهزة الكمبيوتر المحمولة المصاحبة مقدمة إلى JumpStart - تصنيف الصور.

صقل النموذج المدرَّب مسبقًا

لضبط النموذج المحدد ، نحتاج إلى الحصول على URI الخاص بهذا النموذج ، بالإضافة إلى البرنامج النصي للتدريب وصورة الحاوية المستخدمة للتدريب. لحسن الحظ ، تعتمد هذه المدخلات الثلاثة فقط على اسم النموذج والإصدار (للحصول على قائمة النماذج المتاحة ، انظر JumpStart نموذج الجدول المتاح) ، ونوع المثيل الذي تريد التدرب عليه. هذا موضح في مقتطف الشفرة التالي:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

نسترجع ملف model_id يتوافق مع نفس النموذج الذي استخدمناه سابقًا. يتوافق الرمز ic الموجود في المعرف مع تصنيف الصورة.

يمكنك الآن ضبط نموذج JumpStart هذا على مجموعة البيانات المخصصة الخاصة بك باستخدام SageMaker SDK. نحن نستخدم نفس الشيء tf_flowers مجموعة البيانات التي يتم استضافتها بشكل عام على Amazon S3 ، والتي تركز بشكل ملائم على تحليل المشاعر. يجب تنظيم مجموعة البيانات الخاصة بك من أجل الضبط الدقيق ، كما هو موضح في القسم السابق. انظر رمز المثال التالي:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

نحصل على نفس المعلمات التشعبية الافتراضية للنموذج المحدد لدينا مثل تلك التي رأيناها في القسم السابق ، باستخدام sagemaker.hyperparameters.retrieve_default(). نقوم بعد ذلك بإنشاء مثيل لمقدر SageMaker واستدعاء طريقة .fit لبدء ضبط نموذجنا ، وتمريره إلى Amazon S3 URI لبيانات التدريب الخاصة بنا. كما ترى ، فإن entry_point تم تسمية البرنامج النصي المقدم transfer_learning.py (نفس الشيء بالنسبة للمهام والنماذج الأخرى) ، وتم تمرير قناة بيانات الإدخال إلى .fit يجب تسميته training.

نشر النموذج الدقيق

عند اكتمال التدريب ، يمكنك نشر النموذج الدقيق الخاص بك. للقيام بذلك ، كل ما نحتاج إلى الحصول عليه هو URI النصي للاستدلال (الكود الذي يحدد كيفية استخدام النموذج للاستدلال بمجرد نشره) وصورة حاوية الاستدلال URI ، والتي تتضمن خادمًا نموذجيًا مناسبًا لاستضافة النموذج الذي اخترناه. انظر الكود التالي:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

بعد بضع دقائق ، يتم نشر نموذجنا ويمكننا الحصول على تنبؤات منه في الوقت الفعلي!

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

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

تدرب تدريجيًا على النموذج الذي تم ضبطه جيدًا وأعد نشره

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

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

عند اكتمال التدريب ، يمكننا استخدام نفس الخطوات الموضحة في القسم السابق لنشر النموذج.

وفي الختام

JumpStart هي قدرة في SageMaker تسمح لك بالبدء بسرعة مع ML. يستخدم JumpStart نماذج مفتوحة المصدر مدربة مسبقًا لحل مشكلات ML الشائعة مثل تصنيف الصور واكتشاف الكائنات وتصنيف النص وتصنيف أزواج الجملة والإجابة على الأسئلة.

في هذا المنشور ، أوضحنا لك كيفية ضبط ونشر نموذج تصنيف صور مدرب مسبقًا. أظهرنا أيضًا كيفية تدريب نموذج مضبوط بشكل تدريجي لتصنيف الصور. باستخدام JumpStart ، يمكنك إجراء هذه العملية بسهولة دون الحاجة إلى كتابة التعليمات البرمجية. جرب الحل بنفسك وأخبرنا كيف تسير الأمور في التعليقات. لمعرفة المزيد حول JumpStart ، تحقق من فيديو AWS re: Invent 2020 ابدأ مع ML في دقائق مع Amazon SageMaker JumpStart.

مراجع حسابات

  1. فريق TensorFlow، 2019

حول المؤلف

تدريب تدريجي مع Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.الدكتور فيفيك مادان هو عالم تطبيقي مع فريق Amazon SageMaker JumpStart. حصل على الدكتوراه. من جامعة إلينوي في أوربانا شامبين وكان باحثًا بعد الدكتوراه في Georgia Tech. وهو باحث نشط في التعلم الآلي وتصميم الخوارزمية وقد نشر أوراقًا علمية في مؤتمرات EMNLP و ICLR و COLT و FOCS و SODA.

تدريب تدريجي مع Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.جواو مورا هو مهندس حلول متخصص في AI / ML في Amazon Web Services. يركز في الغالب على حالات استخدام البرمجة اللغوية العصبية ومساعدة العملاء على تحسين التدريب على نموذج التعلم العميق ونشره. وهو أيضًا مؤيد نشط لحلول ML ذات التعليمات البرمجية المنخفضة والأجهزة المتخصصة في ML.

تدريب تدريجي مع Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.د. أشيش خيتان هو عالم تطبيقي أقدم مع أمازون سيج ميكر جومب ستارت و خوارزميات Amazon SageMaker المضمنة ويساعد في تطوير خوارزميات التعلم الآلي. وهو باحث نشط في التعلم الآلي والاستدلال الإحصائي وقد نشر العديد من الأوراق البحثية في مؤتمرات NeurIPS و ICML و ICLR و JMLR و ACL و EMNLP.

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

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