نقل التعلم لنماذج تصنيف صور TensorFlow في Amazon SageMaker

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

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

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

كيفية استخدام خوارزمية تصنيف الصور TensorFlow الجديدة

يصف هذا القسم كيفية استخدام خوارزمية تصنيف الصور TensorFlow مع ملف SageMaker بيثون SDK. للحصول على معلومات حول كيفية استخدامه من Studio UI ، راجع سيج ميكر جومب ستارت.

تدعم الخوارزمية نقل التعلم للنماذج المدربة مسبقًا المدرجة في نماذج TensorFlow Hub. يتم تحديد كل نموذج من قبل فريد model_id. يوضح الكود التالي كيفية ضبط MobileNet V2 1.00 224 بدقة model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 على مجموعة بيانات تدريب مخصصة. لكل model_id، من أجل إطلاق وظيفة تدريب SageMaker من خلال مقدر فئة SageMaker Python SDK ، فأنت بحاجة إلى إحضار URI لصورة Docker ، و URI للبرنامج النصي للتدريب ، و URI للنموذج المدرّب مسبقًا من خلال وظائف الأداة المساعدة المتوفرة في SageMaker. يحتوي البرنامج النصي للتدريب URI على جميع الكودات اللازمة لمعالجة البيانات ، وتحميل النموذج المدرب مسبقًا ، وتدريب النموذج ، وحفظ النموذج المدرب للاستدلال. يحتوي نموذج URI المدربين مسبقًا على تعريف بنية النموذج المدربين مسبقًا ومعلمات النموذج. لاحظ أن عنوان URI لصورة Docker و URI للبرنامج النصي للتدريب متماثلان في جميع نماذج تصنيف الصور TensorFlow. نموذج URI المدرب مسبقًا خاص بالنموذج المعين. تم تنزيل كرات القطران النموذجية المدربة مسبقًا من TensorFlow Hub وحفظها بتوقيع النموذج المناسب في خدمة تخزين أمازون البسيطة حاويات (Amazon S3) ، مثل أن وظيفة التدريب تعمل بمعزل عن الشبكة. انظر الكود التالي:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

باستخدام هذه الأدوات التدريبية الخاصة بالنموذج ، يمكنك إنشاء كائن من مقدر صف دراسي:

# Create SageMaker Estimator instance
tf_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,
)

بعد ذلك ، لنقل التعلم على مجموعة البيانات المخصصة الخاصة بك ، قد تحتاج إلى تغيير القيم الافتراضية لمعلمات التدريب التشعبية المدرجة في معلمات هايبر. يمكنك إحضار قاموس Python لهذه المعلمات التشعبية بقيمها الافتراضية عن طريق الاتصال hyperparameters.retrieve_default، قم بتحديثها حسب الحاجة ، ثم قم بتمريرها إلى فئة المقدر. لاحظ أن القيم الافتراضية لبعض المعلمات التشعبية تختلف باختلاف الطرز. بالنسبة للنماذج الكبيرة ، يكون حجم الدُفعة الافتراضي أصغر ويكون حجم train_only_top_layer تم تعيين المعلمة التشعبية على True. المعلمة الفائقة Train_only_top_layer يحدد معلمات النموذج التي تتغير أثناء عملية الضبط الدقيق. إذا train_only_top_layer is True، تتغير معلمات طبقات التصنيف وتبقى باقي المعلمات ثابتة أثناء عملية الضبط الدقيق. من ناحية أخرى ، إذا train_only_top_layer is False، يتم ضبط جميع معلمات النموذج بدقة. انظر الكود التالي:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

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

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

أخيرًا ، لبدء تشغيل وظيفة تدريب SageMaker من أجل ضبط النموذج بدقة ، اتصل .fit على كائن فئة المقدر ، أثناء اجتياز موقع S3 لمجموعة بيانات التدريب:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

واجهة الإدخال / الإخراج لخوارزمية تصنيف الصور TensorFlow

يمكنك ضبط كل من النماذج المدربة مسبقًا المدرجة في نماذج TensorFlow Hub إلى أي مجموعة بيانات معينة تشتمل على صور تنتمي إلى أي عدد من الفئات. الهدف هو تقليل أخطاء التنبؤ في بيانات الإدخال. يمكن نشر النموذج الذي تم إرجاعه عن طريق الضبط الدقيق للاستدلال. فيما يلي التعليمات الخاصة بكيفية تنسيق بيانات التدريب للإدخال في النموذج:

  • إدخال - دليل يحتوي على العديد من الدلائل الفرعية مثل عدد الفئات. يجب أن يحتوي كل دليل فرعي على صور تنتمي إلى تلك الفئة بتنسيق .jpg أو .jpeg أو .png.
  • الناتج - نموذج دقيق يمكن نشره للاستدلال أو يمكن تدريبه بشكل أكبر باستخدام التدريب الإضافي. تتم إضافة توقيع ما قبل المعالجة والمعالجة اللاحقة إلى النموذج الدقيق بحيث يأخذ صورة jpg الخام كمدخلات ويعيد احتمالات الفئة. يتم حفظ فهارس فئة تعيين الملفات لتسميات الفئات جنبًا إلى جنب مع النماذج.

يجب أن يبدو دليل الإدخال مثل المثال التالي إذا كانت بيانات التدريب تحتوي على صور من فصلين: roses و dandelion. يجب أن يبدو مسار S3 مثل s3://bucket_name/input_directory/. لاحظ الزائدة / مطلوب. أسماء المجلدات و roses, dandelion، ويمكن أن تكون أسماء ملفات jpg. يقوم ملف تعيين الملصقات الذي تم حفظه مع النموذج المدرب على دلو S3 بتعيين أسماء المجلدات الورود والهندباء إلى الفهارس الموجودة في قائمة احتمالات الفئة التي يتم إخراجها من النموذج. يتبع التعيين الترتيب الأبجدي لأسماء المجلدات. في المثال التالي ، يتوافق الفهرس 0 في قائمة مخرجات النموذج مع dandelion، والفهرس 1 يتوافق مع roses.

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

الاستدلال باستخدام خوارزمية تصنيف الصور TensorFlow

يمكن استضافة النماذج التي تم إنشاؤها للاستدلال ودعم تنسيقات الصور .jpg و .jpeg و .png المشفرة مثل application/x-image نوع المحتوى. يتم تغيير حجم الصورة المدخلة تلقائيًا. يحتوي الإخراج على قيم الاحتمال ، وتسميات الفئات لجميع الفئات ، والتسمية المتوقعة المقابلة لفهرس الفئة مع أعلى احتمال ، والمشفرة بتنسيق JSON. يعالج نموذج تصنيف الصور TensorFlow صورة واحدة لكل طلب ويخرج سطرًا واحدًا فقط في JSON. فيما يلي مثال على استجابة في JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept ومن المقرر أن application/json، ثم يقوم النموذج بإخراج الاحتمالات فقط. لمزيد من التفاصيل حول التدريب والاستدلال ، راجع نموذج دفتر الملاحظات مقدمة إلى SageMaker TensorFlow - تصنيف الصور.

استخدم خوارزميات SageMaker المضمنة من خلال JumpStart UI

يمكنك أيضًا استخدام تصنيف الصور SageMaker TensorFlow وأي من الخوارزميات المضمنة الأخرى بنقرات قليلة عبر JumpStart UI. JumpStart هي إحدى ميزات SageMaker التي تسمح لك بتدريب ونشر خوارزميات مدمجة ونماذج مدربة مسبقًا من أطر عمل تعلم متعددة ومحاور نموذجية من خلال واجهة رسومية. كما يسمح لك بنشر حلول ML كاملة تجمع بين نماذج ML والعديد من خدمات AWS الأخرى لحل حالة استخدام مستهدفة. الدفع قم بتشغيل تصنيف النص باستخدام Amazon SageMaker JumpStart باستخدام نماذج TensorFlow Hub و Hugging Face لمعرفة كيفية استخدام JumpStart لتدريب خوارزمية أو نموذج مدرب مسبقًا ببضع نقرات.

وفي الختام

في هذا المنشور ، أعلنا عن إطلاق خوارزمية مدمجة لتصنيف الصور SageMaker TensorFlow. قدمنا ​​مثالًا على رمز حول كيفية القيام بنقل التعلم على مجموعة بيانات مخصصة باستخدام نموذج مدرب مسبقًا من TensorFlow Hub باستخدام هذه الخوارزمية. لمزيد من المعلومات ، تحقق من توثيق و سبيل المثال دفتر.


عن المؤلفين

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

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

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

نقل التعلم لنماذج تصنيف الصور TensorFlow في Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.راجو بنماتشا هو مهندس حلول متخصص في الذكاء الاصطناعي / التعلم الآلي في AWS. يعمل مع عملاء من مؤسسات تعليمية وحكومية وغير ربحية في مشروعات التعلم الآلي والذكاء الاصطناعي ، مما يساعدهم في بناء حلول باستخدام AWS. عندما لا يساعد العملاء ، يحب السفر إلى أماكن جديدة.

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

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