& مقاييس عرض السجل وملفات السجل
سجل المعلومات في الوقت الفعلي باستخدام كل من حزمة تسجيل Python الافتراضية ووظائف Azure التعلم الآلي الخاصة ب Python SDK. يمكنك تسجيل الدخول محليا وإرسال السجلات إلى مساحة العمل الخاصة بك في البوابة الإلكترونية.
يمكن أن تساعدك السجلات في تشخيص الأخطاء والتحذيرات، أو تتبع مقاييس الأداء مثل المعلمات وأداء النموذج. في هذه المقالة، تعرف على كيفية تمكين تسجيل الدخول في السيناريوهات التالية:
- مقاييس تشغيل السجل
- دورات تدريبية تفاعلية
- تقديم وظائف التدريب باستخدام ScriptRunConfig
- إعدادات بايثون الأصلية
logging - تسجيل الدخول من مصادر إضافية
تلميح
توضح لك هذه المقالة كيفية مراقبة عملية التدريب النموذجي. إذا كنت مهتما بمراقبة استخدام الموارد والأحداث من تعلم Azure Machine، مثل الحصص النسبية أو عمليات تشغيل التدريب المكتملة أو عمليات نشر النماذج المكتملة، فراجع مراقبة 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 |
مخطط خطي أحادي المتغير |
| تسجيل صف مع 2 أعمدة رقمية بشكل متكرر | run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) |
مخطط خطي ثنائي المتغيرات |
| جدول سجل يحتوي على 2 عمود رقمي | run.log_table(name='Sine Wave', value=sines) |
مخطط خطي ثنائي المتغيرات |
| صورة السجل | run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') |
استخدم هذه الطريقة لتسجيل ملف صورة أو مؤامرة matplotlib إلى التشغيل. ستكون هذه الصور مرئية وقابلة للمقارنة في سجل التشغيل |
تسجيل الدخول باستخدام MLflow
نوصي بتسجيل النماذج والمقاييس والتحف الخاصة بك باستخدام MLflow لأنه مصدر مفتوح ويدعم الوضع المحلي لقابلية النقل السحابي. توضح أمثلة الجدول والتعليمات البرمجية التالية كيفية استخدام MLflow لتسجيل المقاييس والقطع الأثرية من عمليات التدريب الخاصة بك. تعرف على المزيد حول طرق تسجيل MLflow وأنماط التصميم.
تأكد من تثبيت mlflow الحزم والنقاط azureml-mlflow على مساحة العمل الخاصة بك.
pip install mlflow
pip install azureml-mlflow
قم بتعيين عنوان URI لتتبع MLflow للإشارة إلى الواجهة الخلفية التعلم الآلي 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 أو float) | mlflow.log_metric('my_metric', 1) |
|
| تسجيل قيمة منطقية | mlflow.log_metric('my_metric', 0) |
0 = صحيح، 1 = خطأ |
| تسجيل سلسلة | mlflow.log_text('foo', 'my_string') |
تم تسجيله كقطعة أثرية |
| تسجيل المقاييس numpy أو كائنات صورة 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().
عرض مقاييس التشغيل في واجهة مستخدم الاستوديو
يمكنك استعراض سجلات التشغيل المكتملة، بما في ذلك المقاييس المسجلة، في استوديو Azure التعلم الآلي.
انتقل إلى علامة التبويب التجارب . لعرض جميع عمليات التشغيل في مساحة العمل عبر التجارب، حدد علامة التبويب كل عمليات التشغيل . يمكنك التنقل لأسفل على عمليات التشغيل لتجارب محددة من خلال تطبيق فلتر التجربة في شريط القوائم العلوي.
بالنسبة إلى طريقة عرض التجربة الفردية، حدد علامة التبويب جميع التجارب . في لوحة معلومات تشغيل التجربة، يمكنك الاطلاع على المقاييس والسجلات المتعقبة لكل عملية تشغيل.
يمكنك أيضا تحرير جدول قائمة التشغيل لتحديد عمليات تشغيل متعددة وعرض إما القيمة الأخيرة أو الدنيا أو القصوى المسجلة لعمليات التشغيل الخاصة بك. يمكنك تخصيص مخططاتك لمقارنة قيم المقاييس المسجلة والتجميعها عبر عمليات تشغيل متعددة. يمكنك رسم مقاييس متعددة على المحور y للمخطط وتخصيص المحور x لرسم المقاييس المسجلة.
عرض ملفات السجل وتنزيلها للتشغيل
تعد ملفات السجل موردا أساسيا لتصحيح أخطاء أحمال عمل Azure ML. بعد إرسال مهمة تدريبية، انتقل إلى تشغيل معين لعرض سجلاته ومخرجاته:
- انتقل إلى علامة التبويب التجارب .
- حدد runID لتشغيل معين.
- حدد المخرجات والسجلات في أعلى الصفحة.
- حدد تنزيل الكل لتنزيل جميع سجلاتك في مجلد مضغوط.
- يمكنك أيضا تنزيل ملفات السجل الفردية عن طريق اختيار ملف السجل وتحديد تنزيل
مجلد user_logs
يحتوي هذا المجلد على معلومات حول السجلات التي أنشأها المستخدم. يتم فتح هذا المجلد بشكل افتراضي، ويتم تحديد سجل std_log.txt . std_log.txt هو المكان الذي تظهر فيه سجلات التعليمات البرمجية (على سبيل المثال، طباعة الكشوفات). يحتوي هذا الملف على stdout سجل وسجلات من البرنامج النصي للتحكم والبرنامج stderr النصي للتدريب، واحد لكل عملية. في معظم الحالات ، ستراقب السجلات هنا.
مجلد system_logs
يحتوي هذا المجلد على السجلات التي تم إنشاؤها بواسطة Azure التعلم الآلي وسيتم إغلاقه افتراضيا. يتم تجميع السجلات التي تم إنشاؤها بواسطة النظام في مجلدات مختلفة، استنادا إلى مرحلة المهمة في وقت التشغيل.
مجلدات أخرى
بالنسبة للتدريب على الوظائف على مجموعات الحوسبة المتعددة، توجد سجلات لكل عنوان IP للعقدة. هيكل كل عقدة هو نفسه وظائف العقدة الواحدة. هناك مجلد سجلات آخر للتنفيذ العام وسجلات stderr و stdout.
يقوم Azure التعلم الآلي بتسجيل المعلومات من مصادر مختلفة أثناء التدريب، مثل AutoML أو حاوية Docker التي تقوم بتشغيل مهمة التدريب. العديد من هذه السجلات غير موثقة. إذا واجهت مشكلات واتصلت بدعم Microsoft، فقد يتمكن من استخدام هذه السجلات أثناء استكشاف الأخطاء وإصلاحها.
جلسة تسجيل تفاعلية
عادة ما تستخدم جلسات التسجيل التفاعلية في بيئات دفاتر الملاحظات. يبدأ الأسلوب Experiment.start_logging() جلسة تسجيل تفاعلية. تتم إضافة أي مقاييس تم تسجيلها أثناء الجلسة إلى سجل التشغيل في التجربة. الأسلوب run.complete() ينهي جلسات العمل ويضع علامة على التشغيل على أنه مكتمل.
سجلات ScriptRun
في هذا القسم، تتعلم كيفية إضافة تعليمات برمجية لتسجيل الدخول داخل عمليات التشغيل التي تم إنشاؤها عند تكوينها باستخدام ScriptRunConfig. يمكنك استخدام فئة ScriptRunConfig لتغليف البرامج النصية والبيئات لعمليات التشغيل القابلة للتكرار. يمكنك أيضا استخدام هذا الخيار لعرض أداة Jupyter Notebooks مرئية للمراقبة.
يقوم هذا المثال بإجراء مسح معلمة فوق قيم ألفا ويلتقط النتائج باستخدام طريقة التشغيل.log() .
إنشاء برنامج نصي للتدريب يتضمن منطق التسجيل ،
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))إرسال البرنامج
train.pyالنصي لتشغيله في بيئة يديرها المستخدم. يتم إرسال مجلد البرنامج النصي بأكمله للتدريب.from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory='./', 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)
تسجيل بايثون الأصلي
قد تحتوي بعض السجلات في SDK على خطأ يرشدك إلى تعيين مستوى التسجيل إلى تصحيح. لتعيين مستوى التسجيل، أضف التعليمة البرمجية التالية إلى البرنامج النصي.
import logging
logging.basicConfig(level=logging.DEBUG)
مصادر تسجيل أخرى
يمكن ل Azure التعلم الآلي أيضا تسجيل المعلومات من مصادر أخرى أثناء التدريب، مثل عمليات تشغيل التعلم الآلي التلقائية، أو حاويات Docker التي تقوم بتشغيل الوظائف. لا يتم توثيق هذه السجلات، ولكن إذا واجهت مشكلات واتصلت بدعم Microsoft، فقد يتمكن من استخدام هذه السجلات أثناء استكشاف الأخطاء وإصلاحها.
للحصول على معلومات حول تسجيل المقاييس في Azure التعلم الآلي مصمم، راجع كيفية تسجيل المقاييس في المصمم
أمثلة على دفاتر الملاحظات
توضح دفاتر الملاحظات التالية المفاهيم الواردة في هذه المقالة:
- how-to-use-azureml/training/train-on-local
- how-to-use-azureml/track-and-monitor-experiments/logging-api
تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر ملاحظات Jupyter لاستكشاف هذه الخدمة.
الخطوات التالية
راجع هذه المقالات لمعرفة المزيد حول كيفية استخدام Azure التعلم الآلي:
- اطلع على مثال حول كيفية تسجيل أفضل نموذج ونشره في البرنامج التعليمي، تدريب نموذج تصنيف صور باستخدام Azure التعلم الآلي.