تتبع طرازات ML باستخدام MLflow و Azure التعلم الآلي
في هذه المقالة، تعرف على كيفية تمكين عنوان URI لتتبع MLflow وواجهة برمجة تطبيقات التسجيل، والمعروفة مجتمعة باسم تتبع MLflow، لتوصيل Azure التعلم الآلي كواجهة خلفية لتجارب MLflow.
تلميح
للحصول على تجربة أكثر انسيابية، راجع كيفية تتبع التجارب باستخدام MLflow SDK أو Azure التعلم الآلي CLI (الإصدار 2) (المعاينة)
تشمل الإمكانات المدعومة ما يلي:
تعقب مقاييس التجربة والقطع الأثرية وسجلها في مساحة عمل Azure التعلم الآلي. إذا كنت تستخدم بالفعل MLflow Tracking لتجاربك، فإن مساحة العمل توفر موقعا مركزيا وآمنا وقابلا للتطوير لتخزين مقاييس التدريب ونماذجه.
أرسل وظائف التدريب باستخدام مشاريع MLflow مع دعم الواجهة الخلفية (المعاينة) التعلم الآلي Azure. يمكنك إرسال المهام محليا باستخدام Azure التعلم الآلي تتبع أو ترحيل عمليات التشغيل إلى السحابة مثل عبر Azure التعلم الآلي Compute.
تتبع النماذج وإدارتها في سجل نماذج MLflow وAzure التعلم الآلي.
Myflowهي مكتبة مفتوحة المصدر لإدارة دورة حياة تجارب التعلم الآلي. يعد MLflow Tracking أحد مكونات MLflow التي تسجل وتتعقب مقاييس تشغيل التدريب ونماذج القطع الأثرية الخاصة بك ، بغض النظر عن بيئة تجربتك - محليا على جهاز الكمبيوتر الخاص بك أو على هدف حساب عن بعد أو جهاز ظاهري أو مجموعة Azure Databricks.
راجع MLflow وAzure التعلم الآلي للحصول على عمليات تكامل وظائف MLflow وAzure التعلم الآلي إضافية.
يوضح الرسم التخطيطي التالي أنه باستخدام MLflow Tracking، يمكنك تتبع مقاييس تشغيل تجربة ما وتخزين البيانات الاصطناعية الخاصة بالنموذج في مساحة عمل التعلم الآلي من Microsoft Azure.

تلميح
المعلومات الواردة في هذه الوثيقة هي في المقام الأول لعلماء البيانات والمطورين الذين يرغبون في مراقبة عملية التدريب النموذجي. إذا كنت مسؤولا مهتما بمراقبة استخدام الموارد والأحداث من Azure التعلم الآلي، مثل الحصص النسبية أو عمليات تشغيل التدريب المكتملة أو عمليات نشر النماذج المكتملة، فراجع مراقبة Azure التعلم الآلي.
ملاحظة
يمكنك استخدام عميل MLflow Skinny وهو عبارة عن حزمة MLflow خفيفة الوزن بدون SQL التخزين أو الخادم أو واجهة المستخدم أو تبعيات علوم البيانات. يوصى بذلك للمستخدمين الذين يحتاجون في المقام الأول إلى إمكانات التتبع والتسجيل دون استيراد المجموعة الكاملة من ميزات MLflow بما في ذلك عمليات النشر.
المتطلبات الأساسية
- ثبّت حزمة
azureml-mlflow.- تجلب
azureml-coreهذه الحزمة تلقائيا حزمة تطوير البرامج Azure التعلم الآلي Python SDK، والتي توفر إمكانية الاتصال ل MLflow للوصول إلى مساحة العمل الخاصة بك.
- تجلب
- إنشاء مساحة عمل Azure التعلم الآلي.
تتبع الركض المحلي
يتيح لك MLflow Tracking باستخدام Azure التعلم الآلي تخزين المقاييس المسجلة وعمليات تشغيل القطع الأثرية التي تم تنفيذها على جهازك المحلي في مساحة عمل Azure التعلم الآلي.
إعداد بيئة التتبع
لتعقب تشغيل محلي، تحتاج إلى توجيه جهازك المحلي إلى Azure التعلم الآلي MLflow Tracking URI.
قم باستيراد mlflow الفئات والفئات للوصول إلى عنوان URI لتتبع MLflow وتكوين Workspace مساحة العمل الخاصة بك.
في التعليمة البرمجية التالية، تقوم الطريقة get_mlflow_tracking_uri() بتعيين عنوان URI تعقب فريد إلى مساحة العمل، wsوتوجيه set_tracking_uri() عنوان URI لتتبع MLflow إلى هذا العنوان.
import mlflow
from azureml.core import Workspace
ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
تعيين اسم التجربة
يتم تسجيل جميع عمليات تشغيل MLflow إلى التجربة النشطة، والتي يمكن تعيينها باستخدام MLflow SDK أو Azure CLI.
قم بتعيين اسم تجربة MLflow باستخدام set_experiment() الأمر.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(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 Tracking باستخدام Azure التعلم الآلي تخزين المقاييس المسجلة والتحف من جهاز التحكم عن بعد الخاص بك إلى مساحة عمل Azure التعلم الآلي. أي تشغيل باستخدام رمز تتبع MLflow فيه سيكون له مقاييس مسجلة تلقائيا في مساحة العمل.
أولا ، يجب عليك إنشاء src دليل فرعي وإنشاء ملف يحتوي على رمز التدريب الخاص بك في ملف train.py في الدليل الفرعي src . ستذهب جميع رموز التدريب الخاصة بك إلى src الدليل الفرعي ، بما في ذلك train.py.
تم أخذ التعليمات البرمجية للتدريب من مثال MLflow هذا في الريبو التعلم الآلي 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()
تحميل البرنامج النصي للتدريب لإرسال تجربة.
script_dir = "src"
training_script = 'train.py'
with open("{}/{}".format(script_dir,training_script), 'r') as f:
print(f.read())
في البرنامج النصي، قم بتكوين بيئة تشغيل الحوسبة والتدريب مع الفصل 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 في مساحة العمل الخاصة بك. لعرضها في أي وقت، انتقل إلى مساحة العمل الخاصة بك وابحث عن التجربة بالاسم في مساحة العمل الخاصة بك في Azure التعلم الآلي studio. أو قم بتشغيل الرمز أدناه.
استرداد مقياس التشغيل باستخدام MLflow get_run().
from mlflow.entities import ViewType
from mlflow.tracking import MlflowClient
# Retrieve run ID for the last run experiement
current_experiment=mlflow.get_experiment_by_name(experiment_name)
runs = mlflow.search_runs(experiment_ids=current_experiment.experiment_id, run_view_type=ViewType.ALL)
run_id = runs.tail(1)["run_id"].tolist()[0]
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
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)
استرداد القطع الأثرية باستخدام MLFLow
لعرض القطع الأثرية لتشغيل، يمكنك استخدام MlFlowClient.list_artifacts()
client.list_artifacts(run_id)
لتنزيل قطعة أثرية إلى الدليل الحالي، يمكنك استخدام MLFlowClient.download_artifacts()
client.download_artifacts(run_id, "helloworld.txt", ".")
المقارنة والاستعلام
قارن بين كافة عمليات تشغيل MLflow في مساحة عمل 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)
التسجيل التلقائي
باستخدام Azure التعلم الآلي وMLFlow، يمكن للمستخدمين تسجيل المقاييس ومعلمات النموذج ونماذج القطع الأثرية تلقائيا عند تدريب نموذج. يتم دعم مجموعة متنوعة من مكتبات التعلم الآلي الشائعة .
لتمكين التسجيل التلقائي ، أدخل التعليمة البرمجية التالية قبل رمز التدريب:
mlflow.autolog()
تعرف على المزيد حول التسجيل التلقائي باستخدام MLflow.
إدارة النماذج
قم بتسجيل النماذج الخاصة بك وتعقبها باستخدام سجل نماذج 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")اعرض النموذج المسجل في مساحة العمل الخاصة بك باستخدام استوديو Azure التعلم الآلي.
في المثال التالي ، النموذج المسجل ،
my-modelيحتوي على بيانات تعريف تتبع MLflow موسومة.
حدد علامة التبويب القطع الأثرية لرؤية كافة ملفات النماذج التي تتوافق مع مخطط نموذج MLflow (conda.yaml، MLmodel، model.pkl).

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

تنظيف الموارد
إذا كنت لا تخطط لاستخدام المقاييس والقطع الأثرية المسجلة في مساحة العمل، فلن تتوفر حاليا إمكانية حذفها بشكل فردي. بدلا من ذلك، احذف مجموعة الموارد التي تحتوي على حساب التخزين ومساحة العمل، حتى لا تتحمل أي رسوم:
ومن مدخل Microsoft Azure، حدد Resource groups من أقصى الجانب الأيمن.

من القائمة، حدد مجموعة الموارد التي أنشأتها.
حدد Delete resource group.
أدخل اسم مجموعة الموارد. ثم حدد «Delete».
أمثلة على دفاتر الملاحظات
يوضح MLflow مع دفاتر ملاحظات Azure ML المفاهيم المعروضة في هذه المقالة ويتوسع فيها. راجع أيضا المستودع المستند إلى المجتمع، AzureML-Examples.
الخطوات التالية
- نشر النماذج باستخدام MLflow.
- راقب نماذج الإنتاج الخاصة بك لانحراف البيانات.
- يعمل Track Azure Databricks مع MLflow.
- إدارة النماذج الخاصة بك.