قم بتشغيل تجزئة الصور باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بتشغيل تجزئة الصور باستخدام Amazon SageMaker JumpStart

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

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

إذا كنت تريد الانتقال مباشرة إلى كود JumpStart API الذي نشرناه في هذا المنشور ، يمكنك الرجوع إلى نماذج دفاتر Jupyter التالية:

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

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

  • انشر نماذج مدربة مسبقًا لمهام ML الشائعة - يمكّنك JumpStart من معالجة مهام ML الشائعة دون بذل جهود تطويرية من خلال توفير النشر السهل للنماذج المدربة مسبقًا على مجموعات البيانات الكبيرة والمتاحة للجمهور. بذل مجتمع أبحاث ML قدرًا كبيرًا من الجهد في جعل غالبية النماذج المطورة حديثًا متاحة للاستخدام العام. يستضيف JumpStart مجموعة من أكثر من 300 نموذج ، تغطي 15 مهمة ML الأكثر شيوعًا مثل اكتشاف الكائنات وتصنيف النص وإنشاء النصوص ، مما يسهل على المبتدئين استخدامها. هذه النماذج مستمدة من محاور النماذج الشهيرة مثل TensorFlow و PyTorch و Hugging Face و MXNet.
  • صقل النماذج المدربة مسبقًا - يسمح لك 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.

التجزئة الدلالية

التقسيم الدلالي يحدد كل فئة من الكائنات التي تظهر في صورة الإدخال. يقوم بتمييز (تصنيف) كل بكسل من صورة الإدخال مع تسمية فئة من مجموعة فئات محددة مسبقًا. يتم تعيين كائنات متعددة من نفس الفئة إلى نفس القناع.

يبني النموذج المتاح للضبط الدقيق "رأس" شبكة تلافيفية بالكامل (FCN) أعلى الشبكة الأساسية. تعمل خطوة الضبط الدقيقة على ضبط FCNHead مع الحفاظ على معلمات بقية النموذج مجمدة ، وإرجاع النموذج الدقيق. الهدف هو تقليل فقدان الانتروبيا المتقاطعة لكل بكسل لتدريب FCN. يمكن نشر النموذج الذي تم إرجاعه عن طريق الضبط الدقيق للاستدلال.

يجب أن يبدو دليل الإدخال مثل الكود التالي إذا كانت بيانات التدريب تحتوي على صورتين. يمكن أن تكون أسماء ملفات .png أي شيء.

input_directory
    |--images
        |--abc.png
        |--def.png
    |--masks
        |--abc.png
        |--def.png
    class_label_to_prediction_index.json

يجب أن تحتوي ملفات القناع على معلومات تسمية الفئة لكل بكسل.

تجزئة المثيل

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

حاليًا ، يقدم JumpStart نماذج للاستدلال فقط لتجزئة المثال ولا يدعم الضبط الدقيق.

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

حل نظرة عامة

توفر الأقسام التالية عرضًا توضيحيًا خطوة بخطوة لأداء التجزئة الدلالية باستخدام JumpStart ، عبر واجهة مستخدم Studio وعبر واجهات برمجة تطبيقات JumpStart.

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

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

نناقش أيضًا الميزات المتقدمة الإضافية لبرنامج JumpStart.

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

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

قم بتشغيل الاستدلال على النموذج المدرب مسبقًا

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

بعد بضع دقائق ، تكون نقطة النهاية جاهزة للعمل وجاهزة للرد على طلبات الاستدلال.

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

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

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

يتضمن الضبط الدقيق لمجموعة البيانات الخاصة بك أخذ التنسيق الصحيح للبيانات (كما هو موضح في صفحة النموذج) ، وتحميلها إلى خدمة تخزين أمازون البسيطة (Amazon S3) ، وتحديد موقعه في تكوين مصدر البيانات. نستخدم نفس قيم المعلمة الفائقة التي تم تعيينها افتراضيًا (عدد الفترات ومعدل التعلم وحجم الدُفعة). نستخدم أيضًا ml.p3.2xlarge المدعوم من GPU كمثال تدريب SageMaker.

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

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

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

قم بتشغيل الاستدلال على النموذج المدرب مسبقًا

في هذا القسم ، نختار نموذجًا مناسبًا تم تدريبه مسبقًا في JumpStart ، وننشر هذا النموذج في نقطة نهاية SageMaker ، ونقوم بتشغيل الاستدلال على نقطة النهاية المنشورة.

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

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    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")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

على سبيل المثال التجزئة ، يمكننا تعيين model_id إلى mxnet-semseg-fcn-resnet50-ade. إن الموجود في المعرف يتوافق مع تجزئة المثيل.

بعد ذلك ، نقوم بتغذية الموارد في ملف نموذج SageMaker مثيل ونشر نقطة نهاية:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

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

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

query_response = query(base_model_predictor, pedestrian_img)
predictions, labels, image_labels = parse_response(query_response)
print("Objects present in the picture:", image_labels)

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

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

from sagemaker import image_uris, model_uris, script_uris

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"
training_instance_type = "ml.p3.2xlarge"
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 يتوافق مع نفس النموذج الذي استخدمناه سابقًا. يمكنك الآن ضبط نموذج JumpStart هذا على مجموعة البيانات المخصصة الخاصة بك باستخدام SageMaker SDK. نستخدم مجموعة بيانات يتم استضافتها بشكل عام على Amazon S3 ، وتركز بشكل ملائم على التجزئة الدلالية. يجب تنظيم مجموعة البيانات من أجل الضبط الدقيق كما هو موضح في القسم السابق. انظر رمز المثال التالي:

# URI of your training dataset
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_SemSeg/"
training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning")# Create SageMaker Estimator instance
semseg_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
semseg_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.

أثناء تدريب الخوارزمية ، يمكنك مراقبة تقدمها إما في دفتر SageMaker حيث تقوم بتشغيل الكود نفسه ، أو في الأمازون CloudWatch. عند اكتمال التدريب ، يتم تحميل عناصر النموذج الدقيقة إلى موقع إخراج Amazon S3 المحدد في تكوين التدريب. يمكنك الآن نشر النموذج بنفس طريقة النموذج المدرب مسبقًا.

الخيارات المتقدمة

بالإضافة إلى ضبط النماذج المدربة مسبقًا ونشرها ، تقدم JumpStart العديد من الميزات المتقدمة.

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

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

وفي الختام

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

لمعرفة المزيد حول JumpStart وكيف يمكنك استخدام نماذج مفتوحة المصدر مدربة مسبقًا لمجموعة متنوعة من مهام ML الأخرى ، تحقق من ما يلي AWS re: Invent 2020 video.


حول المؤلف

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

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

قم بتشغيل تجزئة الصور باستخدام Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. البحث العمودي. عاي.ليوناردو باتشيغا هو عالم كبير ومدير في فريق Amazon SageMaker JumpStart. إنه متحمس لبناء خدمات الذكاء الاصطناعي لرؤية الكمبيوتر.

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

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