تبعيات نموذج السجل

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

تسجيل تبعيات نموذج حزمة Python

لدى MLflow دعم أصلي لبعض مكتبات Python ML، حيث يمكن ل MLflow تسجيل التبعيات بشكل موثوق للنماذج التي تستخدم هذه المكتبات. راجع نكهات النموذج المضمنة.

على سبيل المثال، يدعم MLflow scikit-learn في الوحدة النمطية mlflow.sklearn، ويسجل الأمر mlflow.sklearn.log_model إصدار sklearn. وينطبق الشيء نفسه على التسجيل التلقائي مع مكتبات التعلم الآلي هذه. راجع مستودع MLflow github للحصول على أمثلة إضافية.

إشعار

لتمكين تسجيل التتبع لأحمال عمل الذكاء الاصطناعي التوليدية، يدعم MLflow التسجيل التلقائي ل OpenAI.

بالنسبة لمكتبات التعلم الآلي التي يمكن تثبيتها مع pip install PACKAGE_NAME==VERSION، ولكن ليس لديها نكهات نموذج MLflow مضمنة، يمكنك تسجيل هذه الحزم باستخدام أسلوب mlflow.pyfunc.log_model . تأكد من تسجيل المتطلبات باستخدام إصدار المكتبة الدقيق، على سبيل المثال، f"nltk=={nltk.__version__}" بدلا من فقط nltk.

mlflow.pyfunc.log_model يدعم التسجيل من أجل:

  • المكتبات العامة والمخصصة المحزمة كملفات بيضة Python أو ملفات عجلة Python.
  • الحزم العامة على PyPI والحزم المستضافة بشكل خاص على خادم PyPI الخاص بك.

مع mlflow.pyfunc.log_model، يحاول MLflow استنتاج التبعيات تلقائيا. يستنتج MLflow التبعيات باستخدام mlflow.models.infer_pip_requirements، ويسجلها إلى requirements.txt ملف كأداة نموذج.

في الإصدارات القديمة، لا يحدد MLflow في بعض الأحيان جميع متطلبات Python تلقائيا، خاصة إذا كانت المكتبة ليست نكهة نموذج مضمنة. في هذه الحالات، يمكنك تحديد تبعيات إضافية مع المعلمة extra_pip_requirements في log_model الأمر . راجع مثالا لاستخدام المعلمة extra_pip_requirements.

هام

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

تسجيل النموذج المخصص

بالنسبة للسيناريوهات التي يكون فيها تسجيل النموذج الأكثر تخصيصا ضروريا، يمكنك إما:

  • كتابة نموذج Python مخصص. يسمح لك القيام بذلك بفئة mlflow.pyfunc.PythonModel فرعية لتخصيص التهيئة والتنبؤ. يعمل هذا النهج بشكل جيد لتخصيص نماذج Python فقط.
  • اكتب نكهة مخصصة. في هذا السيناريو، يمكنك تخصيص التسجيل أكثر من النكهة العامة pyfunc ، ولكن القيام بذلك يتطلب المزيد من العمل لتنفيذه.

تعليمة Python البرمجية المخصصة

قد يكون لديك تبعيات تعليمات Python البرمجية التي لا يمكن تثبيتها باستخدام %pip install الأمر، مثل ملف واحد أو أكثر .py .

عند تسجيل نموذج، يمكنك إخبار MLflow أن النموذج يمكنه العثور على هذه التبعيات في مسار محدد باستخدام المعلمة code_path في mlflow.pyfunc.log_model. يخزن MLflow أي ملفات أو أدلة تم تمريرها باستخدام code_path كتحف مع النموذج في دليل التعليمات البرمجية. عند تحميل النموذج، يضيف MLflow هذه الملفات أو الدلائل إلى مسار Python. يعمل هذا المسار أيضا مع ملفات عجلة Python المخصصة، والتي يمكن تضمينها في النموذج باستخدام code_path، تماما مثل .py الملفات.

mlflow.pyfunc.log_model( artifact_path=artifact_path,
                         code_path=[filename.py],
                         data_path=data_path,
                         conda_env=conda_env,
                       )

تسجيل تبعيات نموذج حزمة غير Python

لا يلتقط MLflow تلقائيا تبعيات غير Python، مثل حزم Java وحزم R والحزم الأصلية (مثل حزم Linux). لهذه الحزم، تحتاج إلى تسجيل بيانات إضافية.

  • قائمة التبعية: توصي Databricks بتسجيل أداة باستخدام النموذج الذي يحدد هذه التبعيات غير Python. قد يكون هذا بسيطا أو .json ملفا.txt. يسمح لك mlflow.pyfunc.log_model بتحديد هذه الأداة الإضافية باستخدام الوسيطة artifacts .
  • الحزم المخصصة: تماما كما هو الحال مع تبعيات Python المخصصة أعلاه، تحتاج إلى التأكد من توفر الحزم في بيئة النشر الخاصة بك. بالنسبة للحزم في موقع مركزي مثل Maven Central أو المستودع الخاص بك، تأكد من أن الموقع متاح في وقت التسجيل أو التقديم. بالنسبة للحزم الخاصة غير المستضافة في مكان آخر، يمكنك تسجيل الحزم جنبا إلى جنب مع النموذج كقطع أثرية.

توزيع النماذج ذات التبعيات

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

بالنسبة لجميع أوضاع النشر، توصي Databricks بتشغيل الاستدلال على نفس إصدار وقت التشغيل الذي استخدمته أثناء التدريب، نظرا لأن Databricks Runtime الذي أنشأت فيه النموذج الخاص بك يحتوي على مكتبات مختلفة مثبتة بالفعل. يحفظ MLflow في Databricks تلقائيا إصدار وقت التشغيل هذا في MLmodel ملف بيانات التعريف في databricks_runtime حقل، مثل databricks_runtime: 10.2.x-cpu-ml-scala2.12.

خدمة عبر الإنترنت: خدمة نموذج الذكاء الاصطناعي الفسيفساء

يوفر Databricks خدمة النموذج، حيث يتم عرض نماذج التعلم الآلي MLflow الخاصة بك كنقاط نهاية REST API قابلة للتطوير.

بالنسبة إلى تبعيات Python في requirements.txt الملف، يعالج Databricks وMLflow كل شيء لتبعيات PyPI العامة. وبالمثل، إذا حددت .py ملفات أو ملفات عجلة Python عند تسجيل النموذج باستخدام الوسيطة code_path ، يقوم MLflow بتحميل هذه التبعيات لك تلقائيا.

للحصول على سيناريوهات خدمة النموذج هذه، راجع ما يلي:

بالنسبة إلى تبعيات Python في requirements.txt الملف، يعالج Databricks وMLflow كل شيء لتبعيات PyPI العامة. وبالمثل، إذا حددت .py ملفات أو ملفات عجلة Python عند تسجيل النموذج باستخدام الوسيطة code_path ، يقوم MLflow بتحميل هذه التبعيات لك تلقائيا.

الخدمة عبر الإنترنت: أنظمة الجهات الخارجية أو حاويات Docker

إذا كان السيناريو الخاص بك يتطلب الخدمة لحلول خدمة الجهات الخارجية أو الحل المستند إلى Docker الخاص بك، يمكنك تصدير النموذج الخاص بك كحاوية Docker.

توصي Databricks بما يلي لخدمة الجهات الخارجية التي تتعامل تلقائيا مع تبعيات Python. ومع ذلك، بالنسبة للتبعيات غير Python، يجب تعديل الحاوية لتضمينها.

وظائف الدفعات والتدفق

يجب تشغيل تسجيل الدفعات والتدفق كوظائف Databricks. غالبا ما تكون مهمة دفتر الملاحظات كافية، وأبسط طريقة لإعداد التعليمات البرمجية هي استخدام سجل نموذج Databricks لإنشاء دفتر ملاحظات لتسجيل النقاط.

يصف ما يلي العملية والخطوات التي يجب اتباعها لضمان تثبيت التبعيات وتطبيقها وفقا لذلك:

  1. ابدأ نظام مجموعة تسجيل النقاط بنفس إصدار Databricks Runtime المستخدم أثناء التدريب. databricks_runtime اقرأ الحقل من MLmodel ملف بيانات التعريف، وابدأ مجموعة بإصدار وقت التشغيل هذا.

    • يمكن القيام بذلك يدويا في تكوين نظام المجموعة أو تلقائيا باستخدام منطق مخصص. للأتمتة، تنسيق إصدار وقت التشغيل الذي تقرأه من ملف بيانات التعريف في واجهة برمجة تطبيقات الوظائف وواجهة برمجة تطبيقات المجموعات.
  2. بعد ذلك، قم بتثبيت أي تبعيات غير Python. للتأكد من أن تبعياتك غير Python يمكن الوصول إليها في بيئة التوزيع الخاصة بك، يمكنك إما:

    • قم بتثبيت تبعيات غير Python للنموذج يدويا على مجموعة Databricks كجزء من تكوين نظام المجموعة قبل تشغيل الاستدلال.
    • بدلا من ذلك، يمكنك كتابة منطق مخصص في نشر مهمة تسجيل النقاط لأتمتة تثبيت التبعيات على نظام المجموعة الخاص بك. بافتراض أنك حفظت تبعيات غير Python كقطع أثرية كما هو موضح في تبعيات نموذج حزمة Log non-Python، يمكن أن تقوم هذه الأتمتة بتثبيت المكتبات باستخدام واجهة برمجة تطبيقات المكتبات. أو يمكنك كتابة تعليمات برمجية معينة لإنشاء برنامج نصي للتهيئة على نطاق المجموعة لتثبيت التبعيات.
  3. تقوم مهمة التسجيل بتثبيت تبعيات Python في بيئة تنفيذ الوظيفة. في Databricks، يسمح لك Model Registry بإنشاء دفتر ملاحظات للاستدلال الذي يقوم بذلك نيابة عنك.

    • عند استخدام سجل نموذج Databricks لإنشاء دفتر ملاحظات تسجيل، يحتوي دفتر الملاحظات على تعليمات برمجية لتثبيت تبعيات Python في ملف النموذج requirements.txt . بالنسبة لمهمة دفتر الملاحظات لتسجيل الدفعات أو الدفق، تقوم هذه التعليمة البرمجية بتهيئة بيئة دفتر الملاحظات، بحيث يتم تثبيت تبعيات النموذج وجاهزة للنموذج الخاص بك.
  4. يعالج MLflow أي تعليمة برمجية Python مخصصة مضمنة في المعلمة code_path في log_model. تتم إضافة هذه التعليمة البرمجية إلى مسار Python عند استدعاء أسلوب النموذج predict() . يمكنك أيضا القيام بذلك يدويا إما عن طريق:

    إشعار

    إذا حددت .py ملفات أو ملفات عجلة Python عند تسجيل النموذج باستخدام الوسيطة code_path ، يقوم MLflow بتحميل هذه التبعيات لك تلقائيا.