نشر تعليمة 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 أو سجل مساحة العمل وخدمة النموذج الخاص بك إلى نقطة نهاية خدمة النموذج.
مثال دفتر الملاحظات
يوضح مثال دفتر الملاحظات التالي كيفية تخصيص إخراج النموذج عندما يحتاج الإخراج الأولي للنموذج الذي تم الاستعلام إليه إلى المعالجة اللاحقة للاستهلاك.