إدارة سجلات النماذج في Azure التعلم الآلي من Microsoft Azure with MLflow
يدعم Azure التعلم الآلي MLflow لإدارة النموذج عند الاتصال بمساحة عمل. يمثل هذا النهج طريقة ملائمة لدعم دورة حياة النموذج بأكملها للمستخدمين على دراية بعميل MLFlow. تصف المقالة التالية مختلف القدرات وكيفية مقارنتها بالخيارات الأخرى.
المتطلبات الأساسية
قم بتثبيت حزمة
mlflow
MLflow SDK والمكون الإضافي Azure التعلم الآلي ل MLflowazureml-mlflow
.pip install mlflow azureml-mlflow
تلميح
يمكنك استخدام الحزمة
mlflow-skinny
، وهي حزمة MLflow خفيفة الوزن دون تخزين SQL أو الخادم أو واجهة المستخدم أو تبعيات علم البيانات.mlflow-skinny
يوصى به للمستخدمين الذين يحتاجون في المقام الأول إلى قدرات تتبع وتسجيل MLflow دون استيراد مجموعة كاملة من الميزات بما في ذلك عمليات النشر.مساحة عمل للتعلم الآلي من Microsoft Azure. يمكنك إنشاء واحد باتباع البرنامج التعليمي إنشاء موارد التعلم الآلي.
- تعرف على أذونات الوصول التي تحتاجها لتنفيذ عمليات MLflow في مساحة العمل الخاصة بك.
إذا كنت تقوم بإجراء تعقب عن بعد (أي تعقب التجارب التي تعمل خارج 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
و version
creation_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 استخدم السجلات لنقل النماذج عبر مساحات عمل مختلفة مع الحفاظ على دورة حياة البيانات.