تعقب تجارب التعلم الآلي ونماذجه من خلال MLflow

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

التعقب هو عملية حفظ المعلومات ذات الصلة حول التجارب التي تقوم بتشغيلها. تختلف المعلومات المحفوظة (بيانات التعريف) استنادا إلى مشروعك، ويمكن أن تتضمن:

  • رمز
  • تفاصيل البيئة (مثل إصدار نظام التشغيل، حزم Python)
  • بيانات الإدخال
  • تكوينات المعلمات
  • النماذج
  • مقاييس تقييم
  • مرئيات التقييم (مثل مصفوفات الإرباك ومخططات الأهمية)
  • نتائج التقييم (بما في ذلك بعض تنبؤات التقييم)

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

إشعار

إذا كنت ترغب في تعقب التجارب التي يتم تشغيلها على Azure Databricks، فشاهد تعقب تجارب التعلم الآلي من Azure Databricks باستخدام MLflow وAzure التعلم الآلي. للتعرف على تعقب التجارب التي يتم تشغيلها على Azure Synapse Analytics، راجع تعقب تجارب التعلم الآلي من Azure Synapse Analytics باستخدام MLflow وAzure التعلم الآلي.

فوائد تتبع التجارب

نوصي بشدة بأن يتتبع ممارسو التعلم الآلي التجارب، سواء كنت تتدرب على الوظائف في Azure التعلم الآلي أو تتدرب بشكل تفاعلي في دفاتر الملاحظات. يسمح لك تعقب التجربة ب:

  • نظم جميع تجارب التعلم الآلي في مكان واحد. يمكنك بعد ذلك البحث عن التجارب وتصفيتها والتنقل لأسفل للاطلاع على تفاصيل حول التجارب التي قمت بتشغيلها من قبل.
  • مقارنة التجارب وتحليل النتائج وتصحيح تدريب النموذج مع القليل من العمل الإضافي.
  • إعادة إنتاج التجارب أو إعادة تشغيلها للتحقق من صحة النتائج.
  • قم بتحسين التعاون، حيث يمكنك معرفة ما يفعله زملاء الفريق الآخرون، ومشاركة نتائج التجربة، والوصول إلى بيانات التجربة برمجيا.

لماذا تستخدم MLflow لتتبع التجارب؟

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

لمزيد من المعلومات حول جميع وظائف MLflow وAzure التعلم الآلي المدعومة، راجع MLflow وAzure التعلم الآلي.

القيود

قد لا تتوفر بعض الأساليب المتوفرة في MLflow API عند الاتصال ب Azure التعلم الآلي. للحصول على تفاصيل حول العمليات المدعومة وغير المدعومة، راجع مصفوفة الدعم للاستعلام عن عمليات التشغيل والتجارب.

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

  • قم بتثبيت حزمة 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 المعلومات في التجارب والأعمال (تسمى عمليات التشغيل الوظائف في Azure التعلم الآلي). بشكل افتراضي، يتم تسجيل عمليات التشغيل إلى تجربة تسمى Default يتم إنشاؤها تلقائيا لك. يمكنك تكوين التجربة حيث يحدث التعقب.

للتدريب التفاعلي، كما هو الحال في دفتر ملاحظات Jupyter، استخدم الأمر mlflow.set_experiment()MLflow . على سبيل المثال، تقوم القصاصة البرمجية التالية بتكوين تجربة:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

تكوين التشغيل

يتعقب Azure التعلم الآلي أي مهمة تدريب في ما يسميه MLflow تشغيلا. استخدم عمليات التشغيل لالتقاط جميع المعالجات التي تقوم بها وظيفتك.

عندما تعمل بشكل تفاعلي، يبدأ MLflow في تعقب روتين التدريب بمجرد محاولة تسجيل المعلومات التي تتطلب تشغيلا نشطا. على سبيل المثال، يبدأ تعقب MLflow عند تسجيل مقياس أو معلمة أو بدء دورة تدريب، ويتم تمكين وظيفة التسجيل التلقائي ل Mlflow. ومع ذلك، من المفيد عادة بدء التشغيل بشكل صريح، خاصة إذا كنت تريد تسجيل الوقت الإجمالي للتجربة في حقل المدة. لبدء التشغيل بشكل صريح، استخدم mlflow.start_run().

سواء قمت ببدء التشغيل يدويا أم لا، تحتاج في النهاية إلى إيقاف التشغيل، بحيث يعرف MLflow أن تشغيل تجربتك قد تم ويمكنه وضع علامة على حالة التشغيل على أنها مكتملة. لإيقاف تشغيل، استخدم mlflow.end_run().

نوصي بشدة ببدء التشغيل يدويا، بحيث لا تنسى إنهائها عند العمل في دفاتر الملاحظات.

  • لبدء تشغيل يدويا وإنهاءه عند الانتهاء من العمل في دفتر الملاحظات:

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • من المفيد عادة استخدام نموذج مدير السياق لمساعدتك على تذكر إنهاء التشغيل:

    with mlflow.start_run() as run:
        # Your code
    
  • عند بدء تشغيل جديد باستخدام mlflow.start_run()، قد يكون من المفيد تحديد المعلمة run_name ، والتي تترجم لاحقا إلى اسم التشغيل في واجهة مستخدم Azure التعلم الآلي وتساعدك على تحديد التشغيل بشكل أسرع:

    with mlflow.start_run(run_name="hello-world-example") as run:
        # Your code
    

تمكين التسجيل التلقائي ل MLflow

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

لتمكين التسجيل التلقائي، قم بإدراج التعليمات البرمجية التالية قبل التعليمات البرمجية للتدريب:

mlflow.autolog()

عرض المقاييس والبيانات الاصطناعية في مساحة عملك

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

لعرض المقاييس والبيانات الاصطناعية في الاستوديو:

  1. انتقل إلى Azure التعلم الآلي studio.

  2. انتقل إلى مساحة العمل الخاصة بك.

  3. ابحث عن التجربة بالاسم في مساحة العمل الخاصة بك.

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

  5. بمجرد إنشاء طريقة العرض التي تريدها، احفظها لاستخدامها في المستقبل وشاركها مع زملائك في الفريق، باستخدام ارتباط مباشر.

    لقطة شاشة لعرض المقاييس.

للوصول إلى المقاييس والمعلمات والبيانات الاصطناعية أو الاستعلام بها برمجيا عبر MLflow SDK، استخدم mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

تلميح

بالنسبة للمقاييس، سيرجع المثال السابق التعليمات البرمجية فقط القيمة الأخيرة لمقياس معين. إذا كنت تريد استرداد كافة قيم مقياس معين، فاستخدم mlflow.get_metric_history الأسلوب . لمزيد من المعلومات حول استرداد قيم المقياس، راجع الحصول على المعلمات والمقاييس من التشغيل.

لتنزيل البيانات الاصطناعية التي قمت بتسجيلها، مثل الملفات والنماذج، استخدم mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

لمزيد من المعلومات حول كيفية استرداد أو مقارنة المعلومات من التجارب وتشغيلها في Azure التعلم الآلي، باستخدام MLflow، راجع الاستعلام عن التجارب وتشغيلها باستخدام MLflow.