إدارة سجلات النماذج في Azure التعلم الآلي من Microsoft Azure with MLflow

يدعم Azure التعلم الآلي MLflow لإدارة النموذج عند الاتصال بمساحة عمل. يمثل هذا النهج طريقة ملائمة لدعم دورة حياة النموذج بأكملها للمستخدمين على دراية بعميل MLFlow. تصف المقالة التالية مختلف القدرات وكيفية مقارنتها بالخيارات الأخرى.

المتطلبات الأساسية

  • قم بتثبيت حزمة mlflow MLflow SDK والمكون الإضافي Azure التعلم الآلي ل MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    تلميح

    يمكنك استخدام الحزمة mlflow-skinny ، وهي حزمة MLflow خفيفة الوزن دون تخزين SQL أو الخادم أو واجهة المستخدم أو تبعيات علم البيانات. mlflow-skinny يوصى به للمستخدمين الذين يحتاجون في المقام الأول إلى قدرات تتبع وتسجيل MLflow دون استيراد مجموعة كاملة من الميزات بما في ذلك عمليات النشر.

  • مساحة عمل للتعلم الآلي من Microsoft Azure. يمكنك إنشاء واحد باتباع البرنامج التعليمي إنشاء موارد التعلم الآلي.

  • إذا كنت تقوم بإجراء تعقب عن بعد (أي تعقب التجارب التي تعمل خارج Azure التعلم الآلي)، فبادر بتكوين MLflow للإشارة إلى تعقب URI لمساحة عمل Azure التعلم الآلي. لمزيد من المعلومات حول كيفية توصيل MLflow بمساحة العمل الخاصة بك، راجع تكوين MLflow ل Azure التعلم الآلي.

  • لاحظ أن السجلات التنظيمية غير مدعومة لإدارة النموذج باستخدام MLflow.

  • قد يتم تنفيذ بعض العمليات مباشرة باستخدام MLflow Fluent API (mlflow.<method>). ومع ذلك، قد يتطلب آخرون إنشاء عميل MLflow، والذي يسمح بالاتصال ب Azure التعلم الآلي في بروتوكول MLflow. يمكنك إنشاء كائن MlflowClient كما يلي. يستخدم هذا البرنامج التعليمي الكائن client للإشارة إلى عميل MLflow هذا.

    import mlflow
    
    client = mlflow.tracking.MlflowClient()
    

تسجيل نماذج جديدة في السجل

يقدم سجل النماذج طريقة مريحة ومركزية لإدارة النماذج في مساحة عمل. كل مساحة عمل لها سجل نماذج مستقل خاص بها. يشرح القسم التالي طرقا متعددة لتسجيل النماذج في السجل باستخدام MLflow SDK.

إنشاء النماذج من تشغيل موجود

إذا كان لديك نموذج MLflow مسجل داخل عملية تشغيل وتريد تسجيله في سجل، فاستخدم معرف التشغيل والمسار حيث تم تسجيل النموذج. راجع إدارة التجارب وتشغيل MLflow لمعرفة كيفية الاستعلام عن هذه المعلومات إذا لم تكن لديك.

mlflow.register_model(f"runs:/{run_id}/{artifact_path}", model_name)

إشعار

لا يمكن تسجيل النماذج إلا في السجل في نفس مساحة العمل حيث تم تتبع التشغيل. لا يتم دعم العمليات عبر مساحة العمل باللحظة في التعلم الآلي من Microsoft Azure.

تلميح

نوصي بتسجيل النماذج من عمليات التشغيل أو استخدام الأسلوب mlflow.<flavor>.log_model من داخل التشغيل حيث يحافظ على دورة حياة البيانات من المهمة التي أنشأت الأصل.

إنشاء النماذج من الأصول

إذا كان لديك مجلد مزود بنموذج MLModel MLflow، فيمكنك تسجيله مباشرة. ليست هناك حاجة لأن يكون النموذج دائمًا في سياق التشغيل. للقيام بذلك، يمكنك استخدام مخطط URI file://path/to/model لتسجيل نماذج MLflow المخزنة في نظام الملفات المحلي. دعونا ننشئ نموذج بسيط باستخدام Scikit-Learn وحفظه بتنسيق MLflow في التخزين المحلي:

from sklearn import linear_model

reg = linear_model.LinearRegression()
reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])

mlflow.sklearn.save_model(reg, "./regressor")

تلميح

تعمل الطريقة save_model() بنفس الطريقة التي تعمل بها log_model(). أثناء حفظ log_model() النموذج بالداخل عند تشغيل نشط، يستخدم save_model() نظام الملفات المحلي لحفظ النموذج.

يمكنك الآن تسجيل نموذج من المسار المحلي:

import os

model_local_path = os.path.abspath("./regressor")
mlflow.register_model(f"file://{model_local_path}", "local-model-test")

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

يمكنك استخدام MLflow SDK للاستعلام عن النماذج المسجلة في السجل والبحث عنها. يشرح القسم التالي طرقا متعددة لتحقيق ذلك.

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

يمكنك الاستعلام عن جميع النماذج المسجلة في السجل باستخدام عميل MLflow. تطبع العينة التالية جميع أسماء النموذج:

for model in client.search_registered_models():
    print(f"{model.name}")

استخدم order_by للطلب بواسطة خاصية معينة مثل nameو versioncreation_timestampو وlast_updated_timestamp:

client.search_registered_models(order_by=["name ASC"])

إشعار

نصيحة MLflow 2.0: في الإصدارات الأقدم من Mlflow (<2.0)، استخدم الأسلوب MlflowClient.list_registered_models() بدلا من ذلك.

الحصول على الإصدارات المحددة من النموذج

يسترد search_registered_models() الأمر كائن النموذج، الذي يحتوي على جميع إصدارات النموذج. مع ذلك، إذا كنت ترغب في الحصول على آخر نسخة مسجلة من نموذج معين، فيمكنك استخدام get_registered_model:

client.get_registered_model(model_name)

إذا كنت بحاجة إلى نسخة محددة من النموذج، يمكنك الإشارة إلى ذلك:

client.get_model_version(model_name, version=2)

نماذج التحميل من السجل

يمكنك تحميل النماذج مباشرة من التسجيل لاستعادة كائنات النماذج التي تم تسجيلها. استخدم الدوال mlflow.<flavor>.load_model() أو mlflow.pyfunc.load_model() التي تشير إلى URI للنموذج الذي تريد تحميله باستخدام البناء التالي:

  • models:/<model-name>/latest، لتحميل النسخة الأخيرة من النموذج.
  • models:/<model-name>/<version-number>، لتحميل نسخة محددة من النموذج.
  • models:/<model-name>/<stage-name>، لتحميل نسخة معينة في مرحلة معينة لنموذج. عرض المراحل النموذجية للحصول على التفاصيل.

تلميح

للتعرف على الفرق بين mlflow.<flavor>.load_model() و mlflow.pyfunc.load_model()، اعرض مهام سير العمل لتحميل نماذج MLflow.

المراحل النموذجية

يُدعم MLflow مراحل النموذج لإدارة دورة حياة النموذج. يمكن أن تنتقل نسخة النموذج من مرحلة إلى أخرى. يتم تخصيص المراحل لإصدار النموذج (بدلاً من النماذج) مما يعني أن نموذجًا معينًا يمكن أن يكون له إصدارات متعددة في مراحل مختلفة.

هام

لا يمكن الوصول إلى المراحل إلا باستخدام MLflow SDK. لا تظهر في مدخل استوديو التعلم الآلي من Microsoft Azure ولا يمكن استردادها باستخدام Azure ML SDK أو Azure ML CLI أو Azure ML REST API. لا تدعم اللحظة إنشاء التوزيع من مرحلة نموذج معين.

الاستفسار عن مراحل النموذج

يمكنك استخدام عميل MLflow للتحقق من جميع المراحل الممكنة التي يمكن أن يكون عليها النموذج:

client.get_model_version_stages(model_name, version="latest")

يمكنك رؤية إصدار النموذج في كل مرحلة من خلال الحصول على النموذج من السجل. المثال التالي يحصل على نسخة النموذج حاليًا في المرحلة Staging.

client.get_latest_versions(model_name, stages=["Staging"])

إشعار

يمكن أن تكون الإصدارات المتعددة في نفس المرحلة في نفس الوقت في Mlflow، مع ذلك، فإن هذه الطريقة تعيد أحدث إصدار (إصدار أكبر) بينهم جميعًا.

تحذير

أسماء المراحل حساسة للحالة.

نماذج مرحلة انتقالية

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

client.transition_model_version_stage(model_name, version=3, stage="Staging")

بشكل افتراضي، إذا كان هناك إصدار نموذج موجود في تلك المرحلة المحددة، فإنه يبقى هناك. ومن ثم، لا يتم استبداله حيث يمكن أن تكون إصدارات نماذج متعددة في نفس المرحلة في نفس الوقت. بدلًا من ذلك، يمكنك الإشارة إلى archive_existing_versions=True لإخبار MLflow لنقل إصدار النموذج الحالي إلى المرحلة Archived.

client.transition_model_version_stage(
    model_name, version=3, stage="Staging", archive_existing_versions=True
)

نماذج التحميل من المراحل

يمكن تحميل نموذج في مرحلة معينة مباشرة من Python باستخدام الدالة load_model وتنسيق URI التالي. لاحظ أنه لكي تنجح هذه الطريقة، يجب أن تكون جميع المكتبات والتبعيات مثبتة بالفعل في البيئة التي تعمل فيها.

model = mlflow.pyfunc.load_model(f"models:/{model_name}/Staging")

نماذج التحرير والحذف

يتم دعم تحرير النماذج المسجلة في كل من Mlflow وAzure ML. ومع ذلك، هناك بعض الاختلافات الهامة التي يجب ملاحظتها:

تحذير

لا يتم دعم إعادة تسمية النماذج في التعلم الآلي من Microsoft Azure لأن الأشياء النموذجية قابلة للتماثل.

نماذج التحرير

يمكنك تعديل وصف النموذج وعلاماته من نموذج باستخدام Mlflow:

client.update_model_version(model_name, version=1, description="My classifier description")

لتحرير العلامات، عليك استخدام الطريقة set_model_version_tag وremove_model_version_tag:

client.set_model_version_tag(model_name, version="1", key="type", value="classification")

إزالة العلامة:

client.delete_model_version_tag(model_name, version="1", key="type")

حذف نسخة النموذج

يمكنك حذف أي نسخة نموذجية في السجل باستخدام عميل MLflow، كما هو موضح في المثال التالي:

client.delete_model_version(model_name, version="2")

إشعار

لا تدعم التعلم الآلي من Microsoft Azure حذف حاوية الطراز بأكملها. لتحقيق نفس الشيء، ستحتاج إلى حذف جميع الإصدارات النموذجية من نموذج معين.

مصفوفة دعم لإدارة النماذج باستخدام MLflow

يعرض عميل MLflow عدة مسارات لاسترداد النماذج وإدارتها. يبين الجدول التالي أي من هذه الطرق مدعومة حاليًا في MLflow عند توصيلها بالتعلم الآلي من Microsoft Azure. كما يقارنها بقدرات إدارة النماذج الأخرى في التعلم الآلي من Microsoft Azure.

ميزة MLflow التعلم الآلي من Microsoft Azure باستخدام MLflow التعلم الآلي من Microsoft Azure CLIv2 Azure ML Studio
تسجيل النماذج بنموذج MLflow
تسجيل النماذج ليس بتنسيق MLflow
تسجيل النماذج من مخرجات/بيانات اصطناعية عمليات التشغيل 1 2
تسجيل النماذج من مخرجات/بيانات اصطناعية عمليات التشغيل في خادم/مساحة عمل مختلفة للتتبع ✓5 ✓5
البحث/سرد النماذج المسجلة
استعادة تفاصيل إصدارات النموذج المسجل
تحرير وصف نسخ النموذج المسجل
تحرير علامات إصدارات نموذج مسجل
إعادة تسمية نماذج مسجلة 3 3 3
حذف النموذج المسجل (حاوية) 3 3 3
حذف نسخة النموذج المسجل
إدارة مراحل النموذج MLflow
البحث في النماذج المسجلة حسب الاسم 4
البحث في النماذج المسجلة باستخدام أداة مقارنة السلاسل LIKE و ILIKE 4
ابحث في النماذج المسجلة حسب البطاقة 4
دعم السجلات التنظيمية

إشعار

  • 1 استخدم URIs ذات نموذج runs:/<ruin-id>/<path>.
  • 2 استخدم URIs ذات نموذج azureml://jobs/<job-id>/outputs/artifacts/<path>.
  • 3 النماذج المسجلة هي كائنات ثابتة في التعلم الآلي من Microsoft Azure.
  • 4 استخدم مربع البحث في التعلم الآلي من Microsoft Azure Studio. تم دعم المطابقة الجزئية.
  • 5 استخدم السجلات لنقل النماذج عبر مساحات عمل مختلفة مع الحفاظ على دورة حياة البيانات.

الخطوات التالية