نشر تعليمة Python البرمجية مع خدمة النموذج

توضح هذه المقالة كيفية نشر التعليمات البرمجية ل Python باستخدام Model Serving.

توفر دالة Python الخاصة ب MLflow، pyfuncمرونة لنشر أي جزء من التعليمات البرمجية ل Python أو أي نموذج Python. فيما يلي أمثلة على السيناريوهات التي قد ترغب فيها في استخدام الدليل.

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

إنشاء نموذج دالة MLflow Python مخصص

يوفر MLflow القدرة على تسجيل تعليمة Python البرمجية بتنسيق نماذج Python المخصصة.

هناك دالتان مطلوبتان عند حزم تعليمة python البرمجية العشوائية باستخدام MLflow:

  • load_context - يجب تعريف أي شيء يحتاج إلى تحميل مرة واحدة فقط للنموذج للعمل في هذه الوظيفة. هذا أمر بالغ الأهمية بحيث يقلل النظام من عدد البيانات الاصطناعية التي تم تحميلها أثناء predict الوظيفة، ما يؤدي إلى تسريع الاستدلال.
  • predict - تحتوي هذه الدالة على كل المنطق الذي يتم تشغيله في كل مرة يتم فيها تقديم طلب إدخال.

تسجيل نموذج دالة Python

على الرغم من أنك تكتب نموذجك باستخدام تعليمات برمجية مخصصة، فمن الممكن استخدام الوحدات النمطية المشتركة للتعليمات البرمجية من مؤسستك. باستخدام المعلمة code_path ، يمكن لمؤلفي النماذج تسجيل مراجع التعليمات البرمجية الكاملة التي يتم تحميلها في المسار ويمكن استخدامها من نماذج مخصصة pyfunc أخرى.

على سبيل المثال، إذا تم تسجيل نموذج باستخدام:

mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])

تتوفر التعليمات البرمجية preprocessing_utils من في السياق المحمل للنموذج. فيما يلي نموذج مثال يستخدم هذه التعليمة البرمجية.

class CustomModel(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
        self.model = torch.load(context.artifacts["model-weights"])
        from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
        self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])

    def format_inputs(self, model_input):
        # insert some code that formats your inputs
        pass

    def format_outputs(self, outputs):
        predictions = (torch.sigmoid(outputs)).data.numpy()
        return predictions

    def predict(self, context, model_input):
        model_input = self.format_inputs(model_input)
        outputs = self.model.predict(model_input)
        return self.format_outputs(outputs)

خدمة النموذج الخاص بك

بعد تسجيل النموذج المخصص pyfunc الخاص بك، يمكنك تسجيله في كتالوج Unity أو سجل مساحة العمل وخدمة النموذج الخاص بك إلى نقطة نهاية خدمة النموذج.

مثال دفتر الملاحظات

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

تخصيص إخراج خدمة النموذج باستخدام دفتر ملاحظات MLflow PyFunc

الحصول على دفتر الملاحظات