تعقب نماذج التعلم الآلي باستخدام 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 مع التعلم الآلي من 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 هذا.

  1. استخدام ملف تكوين مساحة العمل:

    from azureml.core import Workspace
    import mlflow
    
    ws = Workspace.from_config()
    mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
    

    تلميح

    يمكنك تنزيل ملف تكوين مساحة العمل عن طريق:

    1. انتقل إلى Azure التعلم الآلي studio
    2. انقر فوق الزاوية العلوية اليمنى من الصفحة -> تنزيل ملف التكوين.
    3. احفظ الملف config.json في نفس الدليل الذي تعمل عليه.
  2. باستخدام معرف الاشتراك واسم مجموعة الموارد واسم مساحة العمل:

    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 وتسجيلها.

لتسجيل نموذج وعرضه من عملية تشغيل، استخدم الخطوات التالية:

  1. بمجرد اكتمال التشغيل، استدعِ الأسلوب 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")
    
  2. اعرض النموذج المسجل في مساحة العمل باستخدام أستوديو التعلم الآلي من Microsoft Azure.

    في المثال التالي، يحتوي النموذج المسجل my-model على بيانات تعريف تعقب MLflow وُضعت عليها علامة.

    register-mlflow-model

  3. حدد علامة التبويب "Artifacts" لعرض جميع ملفات النموذج التي تتحاذى مع مخطط النموذج MLflow (conda.yaml، MLmodel، model.pkl).

    model-schema

  4. حدد MLmodel لمشاهدة ملف MLmodel الذي تم إنشاؤه بواسطة التشغيل.

    MLmodel-schema

تنظيف الموارد

إذا كنت لا تخطط لاستخدام المقاييس والبيانات الاصطناعية التي سُجلت في مساحة عملك، فلن تتوفر إمكانية حذفها بشكل فردي في الوقت الحالي. بدلاً من ذلك، احذف مجموعة الموارد التي تحتوي على حساب التخزين ومساحة العمل، حتى لا تتحمل أي رسوم:

  1. من مدخل Microsoft Azure، حدد Resource groups من أقصى الجانب الأيمن.

    الحذف في مدخل Microsoft Azure

  2. من القائمة، حدد مجموعة الموارد التي أنشأتها.

  3. حدد Delete resource group.

  4. أدخل اسم مجموعة الموارد. ثم حدد حذف.

مثال دفاتر الملاحظات

يوضح MLflow مع دفاتر التعلم الآلي من Microsoft Azure المفاهيم المقدمة في هذه المقالة وتوسيعها. راجع أيضاً المجتمع الظاهري المستند إلى المستودع AzureML-Examples.

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