تعقب نماذج التعلم الآلي باستخدام MLflow والتعلم الآلي من Azure
ينطبق على: Python SDK azureml v1
في هذه المقالة، تعرف على كيفية تمكينتتبع MLflow لتوصيل التعلم الآلي من Microsoft Azure كواجهة خلفية لتجارب MLflow الخاصة بك.
Myflow عبارة عن مكتبة مفتوحة المصدر لإدارة دورة حياة تجارب التعلم الآلي. MLflow Tracking هو أحد مكونات MLflow الذي يسجل ويتعقب مقاييس تشغيل التدريب والبيانات الاصطناعية للنموذج، بغض النظر عن بيئة تجربتك - محلياً على جهاز الكمبيوتر الخاص بك، أو على حساب هدف بعيد، أو جهاز ظاهري، أو نظام مجموعة Azure Databricks.
راجع MLflow والتعلم الآلي من Azure لجميع وظائف MLflow والتعلم الآلي المدعومة بما في ذلك دعم MLflow Project (الإصدار الأولي) وتوزيع النموذج.
تلميح
إذا كنت ترغب في تتبع التجارب التي تعمل على Azure Databricks أو Azure Synapse Analytics، فراجع المقالات المخصصة تتبع تجارب Azure Databricks ML مع MLflow و التعلم الآلي من Microsoft Azure أو تتبع تجارب Azure Synapse Analytics ML باستخدام MLflow و التعلم الآلي من Microsoft Azure.
إشعار
المعلومات الواردة في هذا المستند مخصصة في المقام الأول لعلماء البيانات والمطورين الذين يرغبون في مراقبة عملية تدريب النموذج. إذا كنت مسؤولاً مهتمًا بمراقبة استخدام الموارد والأحداث من التعلم الآلي من Microsoft Azure، مثل الحصص أو وظائف التدريب المكتملة أو عمليات نشر النموذج المكتملة، فراجع مراقبة التعلم الآلي في Microsoft Azure.
المتطلبات الأساسية
ثبّت حزمة
mlflow
.- يمكنك استخدام MLflow Skinny، وهو حزمة خفيفة من MLflow دون تخزين SQL أو خادم أو واجهة مستخدم أو تبعيات علوم البيانات. يوصى بذلك للمستخدمين الذين يحتاجون في المقام الأول إلى إمكانيات التعقب والتسجيل دون استيراد المجموعة الكاملة من ميزات MLflow بما في ذلك عمليات التوزيع.
ثبّت حزمة
azureml-mlflow
.قم بتثبت وإعدادAzure Machine Learning CLI (الإصدار 1)وتأكد من تثبيت ملحق التعلم الآلي.
هام
تتطلب أوامر Azure CLI الواردة في هذه المقالة ملحق
azure-cli-ml
، أو الإصدار 1، التعلم الآلي من Microsoft Azure. سينتهي دعم ملحق الإصدار 1 في 30 سبتمبر 2025. ستتمكن من تثبيت ملحق v1 واستخدامه حتى ذلك التاريخ.نوصي بالانتقال إلى ملحق
ml
أو الإصدار 2 قبل 30 سبتمبر 2025. لمزيد من المعلومات حول ملحق v2، راجع ملحق Azure ML CLI وPython SDK v2.قم بتثبيت وإعداد Azure Machine Learning SDK للغة Python.
تعقب عمليات التشغيل من جهازك المحلي أو الحوسبة عن بعد
يتيح لك التتبع باستخدام MLflow مع التعلم الآلي من Microsoft Azure تخزين المقاييس المسجلة والقطع الأثرية التي تم تنفيذها على جهازك المحلي في مساحة عمل التعلم الآلي من Microsoft Azure.
إعداد بيئة التعقب
لتعقب تشغيل لا يعمل على حوسبة التعلم الآلي من Azure (من الآن فصاعدا يشار إليه باسم "الحوسبة المحلية")، تحتاج إلى توجيه حسابك المحلي إلى عنوان URI لتعقب MLflow التعلم الآلي من Azure
إشعار
عند التشغيل على الحساب في Azure (دفاتر ملاحظات Azure، ودفاتر Jupyter Notebook المستضافة على مثيلات حساب Azure أو أنظمة مجموعات الحساب) لا يتعين عليك تكوين عنوان URI للتعقب. يتم تكوينه تلقائيًا لك.
ينطبق على: Python SDK azureml v1
يمكنك الحصول على Azure التعلم الآلي MLflow tracking URI باستخدام Azure التعلم الآلي SDK v1 ل Python. تأكد من تثبيت المكتبة azureml-sdk
في نظام المجموعة الذي تستخدمه. يحصل النموذج التالي على عنوان URI الفريد للتتبع MLFLow المرتبط بمساحة عملك. ثم يشير الأسلوب set_tracking_uri()
إلى عنوان URI لتعقب MLflow إلى عنوان URI هذا.
استخدام ملف تكوين مساحة العمل:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
تلميح
يمكنك تنزيل ملف تكوين مساحة العمل عن طريق:
- انتقل إلى Azure التعلم الآلي studio
- انقر فوق الزاوية العلوية اليمنى من الصفحة -> تنزيل ملف التكوين.
- احفظ الملف
config.json
في نفس الدليل الذي تعمل عليه.
باستخدام معرف الاشتراك واسم مجموعة الموارد واسم مساحة العمل:
from azureml.core import Workspace import mlflow #Enter details of your Azure Machine Learning workspace subscription_id = '<SUBSCRIPTION_ID>' resource_group = '<RESOURCE_GROUP>' workspace_name = '<AZUREML_WORKSPACE_NAME>' ws = Workspace.get(name=workspace_name, subscription_id=subscription_id, resource_group=resource_group) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
تعيين اسم التجربة
جميع عمليات تشغيل MLflow مسجلة في التجربة النشطة. بشكل افتراضي، يتم تسجيل عمليات التشغيل في تجربة مسماة Default
يتم إنشاؤها تلقائيًا لك. لتكوين التجربة التي تريد العمل عليها، استخدم أمر MLflow mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
تلميح
عند إرسال المهام باستخدام Azure التعلم الآلي SDK، يمكنك تعيين اسم التجربة باستخدام الخاصية experiment_name
عند إرسالها. ليس عليك تكوينه في البرنامج النصي للتدريب الخاص بك.
بدء تشغيل التدريب
بعد تعيين اسم تجربة MLflow، يمكنك بدء تشغيل التدريب باستخدام start_run()
. ثم استخدم log_metric()
لتنشيط واجهة برمجة تطبيقات تسجيل MLflow والبدء في تسجيل مقاييس تشغيل التدريب.
import os
from random import random
with mlflow.start_run() as mlflow_run:
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
للحصول على تفاصيل حول كيفية تسجيل المقاييس والمعلمات والتحف في تشغيل باستخدام طريقة عرض MLflow كيفية تسجيل المقاييس وعرضها.
تعقب عمليات التشغيل النشطة على التعلم الآلي من Azure
ينطبق على: Python SDK azureml v1
تتيح لك عمليات التشغيل عن بُعد (الوظائف) تدريب نماذجك بطريقة أكثر قوة وتكرارًا. يمكنهم أيضًا الاستفادة من حسابات أكثر قوة، مثل مجموعات حوسبة التعلم الآلي. راجع استخدام أهداف الحساب لتدريب النموذج للتعرف على خيارات الحساب المختلفة.
عند إرسال عمليات التشغيل، التعلم الآلي من Azure يُكون MLflow تلقائيًا للعمل مع مساحة العمل التي يعمل فيها التشغيل. وهذا يعني عدم الحاجة لتكوين عنوان URI لتتبع MLflow. علاوة على ذلك، تُسمى التجارب تلقائيا استنادًا إلى تفاصيل إرسال التجربة.
هام
عند إرسال وظائف التدريب إلى التعلم الآلي من Microsoft Azure، لن تحتاج إلى تكوين عنوان URI لتتبع MLflow على منطق التدريب الخاص بك، لأنه تكون فعلًا من أجلك. لا تحتاج كذلك إلى تكوين اسم التجربة في نظام التدريب الخاص بك.
إنشاء نظام تدريبي
أولاً، يجب إنشاء دليل فرعي src
، وإنشاء ملف مع التعليمات البرمجية للتدريب في ملف train.py
في الدليل الفرعي src
. ستنتقل جميع التعليمات البرمجية للتدريب إلى الدليل الفرعي، بما في src
ذلك train.py
.
يتم أخذ التعليمات البرمجية للتدريب من مثال MLfLow هذا في مستودع أمثلة التعلم الآلي من Microsoft Azure.
انسخ هذه التعليمة البرمجية في الملف:
# imports
import os
import mlflow
from random import random
# define functions
def main():
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
# run functions
if __name__ == "__main__":
# run main function
main()
تكوين التجربة
ستحتاج إلى استخدام Python لإرسال التجربة التعلم الآلي من Azure. في دفتر أو ملف Python، كوّن بيئة تشغيل الحساب والتدريب باستخدامEnvironment
الفئة.
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
env = Environment(name="mlflow-env")
# Specify conda dependencies with scikit-learn and temporary pointers to mlflow extensions
cd = CondaDependencies.create(
conda_packages=["scikit-learn", "matplotlib"],
pip_packages=["azureml-mlflow", "pandas", "numpy"]
)
env.python.conda_dependencies = cd
بعد ذلك، أنشئ ScriptRunConfig
باستخدام الحساب البعيد الخاص بك كحساب هدف.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
باستخدام تكوين تشغيل الحساب والتدريب هذا، استخدم الأسلوب Experiment.submit()
لإرسال تشغيل. يُعين هذا الأسلوب تلقائياً URI لتعقب MLflow وتوجيه التسجيل من MLflow إلى مساحة العمل الخاصة بك.
from azureml.core import Experiment
from azureml.core import Workspace
ws = Workspace.from_config()
experiment_name = "experiment_with_mlflow"
exp = Experiment(workspace=ws, name=experiment_name)
run = exp.submit(src)
عرض المقاييس والبيانات الاصطناعية في مساحة عملك
تعقب المقاييس والبيانات الاصطناعية من تسجيل MLflow في مساحة عملك. لعرضها في أي وقت، انتقل إلى مساحة عملك، وابحث عن التجربة بالاسم في مساحة العمل في أستوديو التعلم الآلي من Microsoft Azure. أو شغّل التعليمات البرمجية أدناه.
استرد مقياس التشغيل باستخدام MLflow get_run().
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
run_id = mlflow_run.info.run_id
finished_mlflow_run = MlflowClient().get_run(run_id)
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
print(metrics,tags,params)
لعرض البيانات الاصطناعية للتشغيل، يمكنك استخدام MlFlowClient.list_artifacts()
client.list_artifacts(run_id)
لتنزيل البيانات الاصطناعية إلى الدليل الحالي، يمكنك استخدام MLFlowClient.download_artifacts()
client.download_artifacts(run_id, "helloworld.txt", ".")
لمزيد من التفاصيل حول كيفية استرداد المعلومات من التجارب وتشغيلها في التعلم الآلي من Azure باستخدام طريقة عرض MLflow إدارة التجارب وتشغيلها باستخدام MLflow.
المقارنة والاستعلام
قارن واستعلم عن جميع عمليات تشغيل MLflow في مساحة عمل التعلم الآلي من Microsoft Azure باستخدام التعليمات البرمجية التالية. تعرف على المزيد بشأن كيفية الاستعلام عن عمليات التشغيل باستخدام MLflow.
from mlflow.entities import ViewType
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
query = "metrics.hello_metric > 0"
runs = mlflow.search_runs(experiment_ids=all_experiments, filter_string=query, run_view_type=ViewType.ALL)
runs.head(10)
التسجيل التلقائي
باستخدام التعلم الآلي من Microsoft Azure وMLFlow، يمكن للمستخدمين تسجيل المقاييس ومعلمات النموذج وبيانات النموذج الاصطناعية تلقائياً عند تدريب نموذج. تُدعم مجموعة متنوعة من مكتبات التعلم الآلي الشائعة.
لتمكين التسجيل التلقائي، أدرج التعليمات البرمجية التالية قبل التعليمات البرمجية للتدريب:
mlflow.autolog()
تعرف على المزيد بشأن التسجيل التلقائي باستخدام MLflow.
إدارة النماذج
سجل نماذجك وتعقبها باستخدام سجل نموذج التعلم الآلي من Microsoft Azure، والذي يدعم سجل نموذج MLflow. تتم محاذاة نماذج التعلم الآلي من Azure مع مخطط نموذج MLflow، مما يسهل تصدير هذه النماذج واستيرادها عبر مهام سير عمل مختلفة. يتم أيضاً تعقب بيانات التعريف المتعلقة بـ MLflow، مثل معرف التشغيل، مع النموذج المسجل للتعقب. يمكن للمستخدمين إرسال عمليات تشغيل التدريب وتسجيل وتوزيع النماذج المنتجة من عمليات تشغيل MLflow.
إذا كنت ترغب في توزيع نموذج جاهز للإنتاج وتسجيله في خطوة واحدة، فشاهد توزيع نماذج MLflow وتسجيلها.
لتسجيل نموذج وعرضه من عملية تشغيل، استخدم الخطوات التالية:
بمجرد اكتمال التشغيل، استدعِ الأسلوب
register_model()
.# the model folder produced from a run is registered. This includes the MLmodel file, model.pkl and the conda.yaml. model_path = "model" model_uri = 'runs:/{}/{}'.format(run_id, model_path) mlflow.register_model(model_uri,"registered_model_name")
اعرض النموذج المسجل في مساحة العمل باستخدام أستوديو التعلم الآلي من Microsoft Azure.
في المثال التالي، يحتوي النموذج المسجل
my-model
على بيانات تعريف تعقب MLflow وُضعت عليها علامة.حدد علامة التبويب "Artifacts" لعرض جميع ملفات النموذج التي تتحاذى مع مخطط النموذج MLflow (conda.yaml، MLmodel، model.pkl).
حدد MLmodel لمشاهدة ملف MLmodel الذي تم إنشاؤه بواسطة التشغيل.
تنظيف الموارد
إذا كنت لا تخطط لاستخدام المقاييس والبيانات الاصطناعية التي سُجلت في مساحة عملك، فلن تتوفر إمكانية حذفها بشكل فردي في الوقت الحالي. بدلاً من ذلك، احذف مجموعة الموارد التي تحتوي على حساب التخزين ومساحة العمل، حتى لا تتحمل أي رسوم:
من مدخل Microsoft Azure، حدد Resource groups من أقصى الجانب الأيمن.
من القائمة، حدد مجموعة الموارد التي أنشأتها.
حدد Delete resource group.
أدخل اسم مجموعة الموارد. ثم حدد حذف.
مثال دفاتر الملاحظات
يوضح MLflow مع دفاتر التعلم الآلي من Microsoft Azure المفاهيم المقدمة في هذه المقالة وتوسيعها. راجع أيضاً المجتمع الظاهري المستند إلى المستودع AzureML-Examples.
الخطوات التالية
- توزيع النماذج باستخدام MLflow.
- مراقبة نماذج الإنتاج الخاصة بك من أجل انحراف البيانات.
- تتبع جولات Azure Databricks مع MLflow.
- إدارة النماذج الخاصة بك.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ