قلل الوقت المستغرق لنشر نماذجك في Amazon SageMaker لاختبار ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.

قلل الوقت المستغرق لنشر نماذجك في Amazon SageMaker للاختبار

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

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

حل نظرة عامة

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

توفر مكتبة Python لعلماء البيانات واجهة بسيطة لبدء استخدام SageMaker بسرعة دون الحاجة إلى معرفة أي من وظائف SageMaker منخفضة المستوى.

إذا كانت لديك نماذج مدربة محليًا باستخدام IDE المفضل لديك وترغب في الاستفادة من حجم السحابة ، فيمكنك استخدام هذه المكتبة لنشر نموذجك في SageMaker. مع SageMaker ، بالإضافة إلى جميع مزايا القياس لمنصة ML القائمة على السحابة ، يمكنك الوصول إلى أدوات التدريب المصممة لهذا الغرض (التدريب الموزع ، وضبط المعلمات الفائقة) ، وإدارة التجربة ، وإدارة النموذج ، واكتشاف التحيز ، وإمكانية شرح النموذج ، والعديد من الأدوات الأخرى. القدرات التي يمكن أن تساعدك في أي جانب من جوانب دورة حياة تعلم الآلة. يمكنك الاختيار من بين الأطر الثلاثة الأكثر شيوعًا لـ ML: Scikit-Learn و PyTorch و TensorFlow ، ويمكنك اختيار نوع الحساب الذي تريده. يتم توفير الإعدادات الافتراضية على طول الطريق حتى يتمكن مستخدمو هذه المكتبة من نشر نماذجهم دون الحاجة إلى اتخاذ قرارات معقدة أو تعلم مفاهيم جديدة. في هذا المنشور ، نوضح لك كيفية البدء بهذه المكتبة وتحسين نشر نماذج ML الخاصة بك على استضافة SageMaker.

يمكن العثور على المكتبة في مستودع جيثب.

مجموعة أدوات ترحيل SageMaker

SageMakerMigration الصف متاح من خلال مكتبة Python المنشورة على GitHub. يتم توفير تعليمات تثبيت هذه المكتبة في المستودع ؛ تأكد من اتباع برنامج README لإعداد بيئتك بشكل صحيح. بعد تثبيت هذه المكتبة ، يتحدث باقي هذا المنشور عن كيفية استخدامها.

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

بالنسبة لنماذج Scikit-Learn و PyTorch و TensorFlow ، تدعم هذه المكتبة نشر النماذج المدربة إلى نقطة نهاية الوقت الحقيقي لـ SageMaker أو نقطة نهاية بدون خادم. لمعرفة المزيد حول خيارات الاستدلال في SageMaker ، ارجع إلى نشر النماذج للاستدلال.

الوقت الحقيقي مقابل نقاط النهاية التي لا تحتاج إلى خادم

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

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

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

قم بإعداد نموذجك المدرّب ونص الاستدلال

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

الأداة النموذجية المدربة هي ببساطة نموذج Scikit-Learn أو PyTorch أو TensorFlow المحفوظ. بالنسبة إلى Scikit-Learn ، يكون هذا عادةً ملفًا مخللًا ، وبالنسبة إلى PyTorch ، يكون هذا ملفًا بتنسيق .pt أو .pth ، وبالنسبة إلى TensorFlow ، يعد هذا مجلدًا به أصول وملفات .pb ومتغيرات أخرى.

بشكل عام ، يجب أن تكون قادرًا على التحكم في كيفية معالجة نموذجك للإدخال وتنفيذ الاستدلال ، والتحكم في تنسيق الإخراج لاستجابتك. باستخدام SageMaker ، يمكنك توفير ملف نص الاستدلال لإضافة هذا التخصيص. يجب أن يحتوي أي نص برمجي للاستدلال يستخدمه SageMaker على واحدة أو أكثر من وظائف المعالج الأربعة التالية: model_fn, input_fn, predict_fnو output_fn.

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

model_fn

هذه هي الوظيفة التي يتم استدعاؤها لأول مرة عند استدعاء نقطة نهاية SageMaker. هذا هو المكان الذي تكتب فيه التعليمات البرمجية الخاصة بك لتحميل النموذج. فمثلا:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

اعتمادًا على إطار العمل ونوع النموذج ، قد يتغير هذا الرمز ، ولكن يجب أن تُرجع الوظيفة نموذجًا مهيأ.

input_fn

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

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

request_body يحتوي على البيانات التي سيتم استخدامها لتوليد الاستدلال من النموذج ويتم تحليله في هذه الوظيفة بحيث يكون بالتنسيق المطلوب.

توقع_fn

هذه هي الوظيفة الثالثة التي يتم استدعاؤها عند استدعاء النموذج الخاص بك. تأخذ هذه الوظيفة بيانات الإدخال المعالجة التي تم إرجاعها من input_fn ويستخدم النموذج الذي تم إرجاعه من model_fn للقيام بالتنبؤ. فمثلا:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

يمكنك اختياريا إضافة output_fn لتحليل إخراج predict_fn قبل إعادته إلى العميل. توقيع الوظيفة هو def output_fn(prediction, content_type).

انقل نموذجك المدرَّب مسبقًا إلى SageMaker

بعد حصولك على ملف النموذج المدرَّب والنص البرمجي للاستدلال ، يجب عليك وضع هذه الملفات في مجلد على النحو التالي:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

بعد أن يتم تحضير النموذج والبرنامج النصي للاستدلال وحفظهما في هيكل المجلد هذا ، يكون نموذجك جاهزًا للنشر على SageMaker. انظر الكود التالي:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

بعد نشر نقطة النهاية الخاصة بك ، تأكد من تنظيف أي موارد لن تستخدمها عبر وحدة تحكم SageMaker أو من خلال delete_endpoint استدعاء Boto3 API.

وفي الختام

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

افحص مستودع جيثب لاستكشاف المزيد حول استخدام مجموعة أدوات ترحيل SageMaker ، ولا تتردد أيضًا في المساهمة بأمثلة أو طلبات ميزة لإضافتها إلى المشروع!


عن المؤلفين

قلل الوقت المستغرق لنشر نماذجك في Amazon SageMaker لاختبار ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.كيريت ثاداكا هو مهندس حلول ML يعمل في فريق Amazon SageMaker Service SA. قبل انضمامه إلى AWS ، أمضى Kirit وقتًا في العمل في المراحل المبكرة من الشركات الناشئة في مجال الذكاء الاصطناعي ، تلاه بعض الوقت في الاستشارات في أدوار مختلفة في أبحاث الذكاء الاصطناعي ، و MLOps ، والقيادة التقنية.

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

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

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