قم بتسجيل وعرض المقاييس وملفات السجل الإصدار 1

ينطبق على:Python SDK azureml v1

قم بتسجيل المعلومات في الوقت الحقيقي باستخدام كل من حزمة تسجيل Python الافتراضية ووظائف التعلم الآلي من Microsoft Azure Python SDK الخاصة. يمكنك التسجيل محليًا وإرسال السجلات إلى مساحة العمل الخاصة بك في البوابة الإلكترونية.

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

  • سجل تشغيل المقاييس
  • جلسات تدريب تفاعلية
  • قم بإرسال مهام التدريب باستخدام ScriptRunConfig
  • إعدادات Python الأصلية logging
  • تسجيل دخول من مصادر إضافية

تلميح

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

أنواع البيانات

يمكنك تسجيل أنواع بيانات متعددة بما في ذلك القيم العددية، والقوائم، والجداول، والصور، والأدلة والمزيد. لمزيد من المعلومات، وأمثلة التعليمات البرمجية لـ Python أنواع بيانات مختلفة، قم بمراجعة صفحة تشغيل مرجع الفئة.

تسجيل المقاييس الخاصة بالتشغيل

قم باستخدام الطرق التالية في واجهات برمجة تطبيقات التسجيل للتأثير على تصورات المقاييس. قم بملاحظة حدود الخدمة لهذه المقاييس المسجلة.

قيمة مسجلة مثال على التعليمات البرمجية قم بالتنسيق في المدخل
سجل مصفوفة من القيم الرقمية run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) مخطط خط متغير واحد
سجل قيمة رقمية واحدة بنفس اسم المقياس المستخدم بشكل متكرر (مثل من داخل تكرار حلقي) for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 مخطط خطي متغير واحد
قم بتسجيل صف يحتوي على عمودين عدديين بشكل متكرر run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) مخطط خطي ذو متغيرين
سجل الجدول مع عمودين عدديين run.log_table(name='Sine Wave', value=sines) مخطط خطي ذو متغيرين
صورة السجل run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') استخدم هذا الأسلوب لتسجيل ملف صورة استخدم هذه الطريقة لتسجيل ملف صورة أو مخطط matplotlib للتشغيل.و رسم matplotlib للتشغيل. سوف تكون هذه الصور مرئية وقابلة للمقارنة في سجل التشغيل

التسجيل مع MLflow

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

قم بالتأكد من تثبيت حزمتي mlflow و azureml-mlflow pip إلى مساحة العمل الخاصة بك.

pip install mlflow
pip install azureml-mlflow

قم بتعيين عنوان URI لتتبع MLflow للإشارة إلى الواجهة الخلفية التعلم الآلي من Microsoft Azure لضمان تسجيل المقاييس والتحف في مساحة العمل الخاصة بك.

from azureml.core import Workspace
import mlflow
from mlflow.tracking import MlflowClient

ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

mlflow.create_experiment("mlflow-experiment")
mlflow.set_experiment("mlflow-experiment")
mlflow_run = mlflow.start_run()
قيمة مسجلة مثال على التعليمات البرمجية ملاحظات
قم بتسجيل قيمة رقمية (int أو حُر) mlflow.log_metric('my_metric', 1)
قم بتسجيل قيمة منطقية mlflow.log_metric('my_metric', 0) 0 = صحيح، 1 = خطأ
سجل سلسلة mlflow.log_text('foo', 'my_string') تم تسجيله كقطعة أثرية
سجل المقاييس غير المتداخلة أو عناصر صورة PIL mlflow.log_image(img, 'figure.png')
سجل matlotlib أو ملف صورة mlflow.log_figure(fig, "figure.png")

قم بعرض مقاييس التشغيل عبر SDK

يمكنك أن تقوم بعرض مقاييس نموذج مدرب باستخدام run.get_metrics().

from azureml.core import Run
run = Run.get_context()
run.log('metric-name', metric_value)

metrics = run.get_metrics()
# metrics is of type Dict[str, List[float]] mapping metric names
# to a list of the values for that metric in the given run.

metrics.get('metric-name')
# list of metrics in the order they were recorded

يمكنك أيضًا الوصول إلى معلومات التشغيل باستخدام MLflow من خلال بيانات كائن التشغيل وخصائص المعلومات. قم بمراجعة وثائق عنصر MLflow.entities.Run للحصول على مزيد من المعلومات.

بعد اكتمال التشغيل، يمكنك استرداده باستخدام MlFlowClient ().

from mlflow.tracking import MlflowClient

# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
finished_mlflow_run = MlflowClient().get_run(mlflow_run.info.run_id)

بإمكانك عرض المقاييس والمعلمات والعلامات للتشغيل في حقل البيانات لكائن التشغيل.

metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params

إشعار

يعرض قاموس المقاييس الموجود أسفل mlflow.entities.Run.data.metricsفقط أحدث قيمة مسجلة لاسم مقياس معين. على سبيل المثال، إذا قمت بتسجيل، بالترتيب، 1، ثم 2، ثم 3، ثم 4 إلى مقياس يسمى sample_metric، فإن 4 فقط موجود في قاموس المقاييس الخاص بـsample_metric.

لتسجيل جميع المقاييس لاسم مقياس معين، يمكنك استخدامMlFlowClient.get_metric_history().

قم بعرض مقاييس التشغيل في واجهة مستخدم الاستوديو

يمكنك استعراض سجلات التشغيل المكتملة، بما في ذلك المقاييس المسجلة، في استوديو التعلم الآلي من Microsoft Azure.

انتقل إلى علامة التبويب التجارب لعرض جميع عمليات التشغيل في مساحة العمل عبر التجارب، حدد علامة التبويب جميع عمليات التشغيل يمكنك التنقل لأسفل على عمليات التشغيل لتجارب معينة عن طريق تطبيق عامل تصفية التجربة في شريط القوائم العلوي.

بالنسبة إلى طريقة عرض التجربة الفردية، حدد علامة التبويب كل التجارب في لوحة معلومات تشغيل التجربة، يمكنك مشاهدة المقاييس والسجلات المتعقبة لكل تشغيل.

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

قم بعرض وتحميل ملفات السجل للتشغيل

تعد ملفات السجل موردا أساسيا لتصحيح أخطاء أحمال عمل Azure التعلم الآلي. بعد إرسال وظيفة تدريبية، انتقل إلى جولة محددة لعرض سجلاتها ومخرجاتها:

  1. انتقل إلى علامة التبويب تجارب.
  2. قم بتحديد runID لتشغيل معين.
  3. حدد المخرجات والسجلات الموجود في أعلى الصفحة.
  4. قم بتحديد تنزيل الكل لتنزيل جميع سجلاتك في مجلد مضغوط.
  5. يمكنك أيضا تنزيل ملفات سجل فردية عن طريق اختيار ملف السجل وتحديد تنزيل

Screenshot of Output and logs section of a run.

مجلد سجل مستخدم

يتضمن هذا المجلد على معلومات حول السجلات التي أنشأها المستخدم. هذا المجلد مفتوح بشكل افتراضي، ويتم تحديد سجل std_log.txt. std_log.txt هو المكان الذي تظهر فيه سجلات التعليمات البرمجية (على سبيل المثال، عِبارات الطباعة). يحتوي هذا الملف على stdout تسجيل وstderr سجلات من برنامج التحكم النصي وبرنامج التدريب النصي، واحد لكل عملية. في معظم الحالات، ستقوم بمراقبة السجلات هنا.

مجلد سجلات النظام

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

مُجلدات أخرى

بالنسبة للتدريب على الوظائف على مجموعات الحوسبة المتعددة، توجد سجلات لكل IP عقدة. بنية كل عقدة هي نفس وظائف العقدة المفردة. يوجد مجلد سجلات آخر للتنفيذ الكلي وسجلات stderr و stdout.

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

جلسة تسجيل تفاعلية

تُستخدم جلسات التسجيل التفاعلي عادةً في بيئات أجهزة الكمبيوتر الدفتري. يبدأ الأسلوب Experiment.بداية_logging() جلسة تسجيل تفاعلية. تتم إضافة أي مقاييس تم تسجيلها أثناء الجلسة إلى سجل التشغيل في التجربة. يقوم الأسلوب run.complete() بإنهاء جلسات العمل ووضع علامة على التشغيل كمكتمل.

السجلات الخاصة بـ ScriptRun

في هذا القسم، ستتعلم كيفية إضافة رمز تسجيل داخل عمليات التشغيل التي تم إنشاؤها عند تكوينها باستخدام ScriptRunConfig. يمكنك استخدام فئة ScriptRunConfig لتغليف البرامج النصية والبيئات للتشغيلات القابلة للتكرار. يمكنك أيضًا استخدام هذا الخيار لإظهار عنصر واجهة مستخدم Jupyter Notebooks المرئي للمراقبة.

يقوم هذا المثال بإجراء مسح للمعامل فوق قيم ألفا ويلتقط النتائج باستخدام أسلوب run.log().

  1. قم بإنشاء برنامج نصي للتدريب يتضمن منطق التسجيل، train.py.

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license.
    
    from sklearn.datasets import load_diabetes
    from sklearn.linear_model import Ridge
    from sklearn.metrics import mean_squared_error
    from sklearn.model_selection import train_test_split
    from azureml.core.run import Run
    import os
    import numpy as np
    import mylib
    # sklearn.externals.joblib is removed in 0.23
    try:
        from sklearn.externals import joblib
    except ImportError:
        import joblib
    
    os.makedirs('./outputs', exist_ok=True)
    
    X, y = load_diabetes(return_X_y=True)
    
    run = Run.get_context()
    
    X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                        test_size=0.2,
                                                        random_state=0)
    data = {"train": {"X": X_train, "y": y_train},
            "test": {"X": X_test, "y": y_test}}
    
    # list of numbers from 0.0 to 1.0 with a 0.05 interval
    alphas = mylib.get_alphas()
    
    for alpha in alphas:
        # Use Ridge algorithm to create a regression model
        reg = Ridge(alpha=alpha)
        reg.fit(data["train"]["X"], data["train"]["y"])
    
        preds = reg.predict(data["test"]["X"])
        mse = mean_squared_error(preds, data["test"]["y"])
        run.log('alpha', alpha)
        run.log('mse', mse)
    
        model_file_name = 'ridge_{0:.2f}.pkl'.format(alpha)
        # save model in the outputs folder so it automatically get uploaded
        with open(model_file_name, "wb") as file:
            joblib.dump(value=reg, filename=os.path.join('./outputs/',
                                                         model_file_name))
    
        print('alpha is {0:.2f}, and mse is {1:0.2f}'.format(alpha, mse))
    
  2. قم بإرسال train.pyالبرنامج النصي ليتم تشغيله في بيئة يديرها المستخدم. يتم إرسال مجلد البرنامج النصي بأكمله للتدريب.

    from azureml.core import ScriptRunConfig
    
    src = ScriptRunConfig(source_directory='./scripts', script='train.py', environment=user_managed_env)
    run = exp.submit(src)

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

    run = exp.submit(src, show_output=True)
    

    يمكنك أيضا استخدام نفس المعلمة في wait_for_completion الوظيفة على التشغيل الناتج.

    run.wait_for_completion(show_output=True)
    

تسجيل Python الأصلي

قد تحتوي بعض السجلات في SDK على خطأ يرشدك إلى تعيين مستوى التسجيل على DEBUG. لتعيين مستوى التسجيل، قم بإضافة التعليمات البرمجية التالية إلى البرنامج النصي الخاص بك.

import logging
logging.basicConfig(level=logging.DEBUG)

مصادر تسجيل أخرى

يمكن أن يقوم التعلم الآلي من Microsoft Azure أيضًا بتسجيل المعلومات من مصادر أخرى أثناء التدريب، مثل عمليات التشغيل الآلي للتعلم الآلي أو حاويات Docker التي تقوم بتشغيل المهام. لم يتم توثيق هذه السجلات، ولكن إذا واجهتك مشكلات واتصلت بدعم Microsoft، فقد يتمكنون من استخدام هذه السجلات أثناء استكشاف الأخطاء وإصلاحها.

للحصول على معلومات حول مقاييس التسجيل في مصمم التعلم الآلي من Microsoft Azure، قم بمراجعة كيفية تسجيل المقاييس في المصمم

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

توضح المذكرات المذكورة أدناه المفاهيم الواردة في هذه المقالة:

تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر Jupyter لاستكشاف هذه الخدمة.

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

قم بمراجعة هذه المقالات لمعرفة المزيد حول كيفية استخدام التعلم الآلي من Microsoft Azure: