مراقبة البيانات وجمعها من نقاط نهاية خدمة ويب ML
ينطبق على:Python SDK azureml v1
في هذه المقالة، ستتعرَّف على كيفية جمع البيانات من النماذج الموزعة في نقاط تقديم خدمة الويب في Azure Kubernetes Service (AKS) أو مثيلات Azure Container (ACI). استخدم Azure Application Insights لجمع البيانات التالية من نقطة التقديم:
- بيانات الإخراج
- الاستجابات
- معدلات الطلب وأوقات الاستجابة ومعدلات الفشل
- معدلات التبعية وأوقات الاستجابة ومعدلات الفشل
- استثناءات
توضح مفكرة enable-app-insights-in-production-service.ipynb المفاهيم الواردة في هذه المقالة.
تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر Jupyter لاستكشاف هذه الخدمة.
هام
تعتمد المعلومات الواردة في هذه المقالة على مثيل Azure Application Insights الذي تم إنشاؤه باستخدام مساحة العمل الخاصة بك. إذا قمت بحذف مثيل Application Insights هذا، فلا توجد طريقة لإعادة إنشائه بخلاف حذف مساحة العمل وإعادة إنشائها.
تلميح
إذا كنت تستخدم نقاط النهاية عبر الإنترنت بدلًا من ذلك، فاستخدم المعلومات الموجودة في مقالة مراقبة نقاط النهاية عبر الإنترنت بدلًا من ذلك.
المتطلبات الأساسية
اشتراك Azure - جرب الإصدار المجاني أو المدفوع من التعلم الآلي Azure Machine Learning.
تم تثبيت مساحة العمل التعلم الآلي Azure Machine Learning، ودليل محلي يحتوي على البرامج النصية الخاصة بك، وAzure Machine Learning SDK لـ Python. لمعرفة المزيد، راجع الكيفية لتكوين بيئة التطوير.
تدريب نموذج التعلم الآلي. لمعرفة المزيد، راجع البرنامج التعليمي نموذج تصنيف صور التدريب لبرنامج تعليمي.
تكوين التسجيل باستخدام Python SDK
في هذا القسم، ستتعلم كيفية تمكين تسجيل Application Insight باستخدام Python SDK.
تحديث الخدمة الموزعة
استخدم الخطوات المتابعة التالية لتحديث خدمة ويب موجودة:
حدد الخدمة في مساحة العمل الخاصة بك. قيمة
ws
هي اسم مساحة العمل الخاصة بكfrom azureml.core.webservice import Webservice aks_service= Webservice(ws, "my-service-name")
تحديث خدمتك وتمكين Azure Application Insights
aks_service.update(enable_app_insights=True)
تسجيل تتبعات مخصصة لخدمتك
هام
لا تسجل Azure Application Insights إلا البيانات الأساسية التي تصل إلى 64 كيلوبايت. إذا تم الوصول إلى هذا الحد، فقد ترى أخطاء مثل نفاد الذاكرة، أو قد لا يتم تسجيل أي معلومات. إذا كانت البيانات التي تريد تسجيلها أكبر من 64 كيلوبايت، فيجب عليك بدلاً من ذلك تخزينها في تخزين البيانات الثنائية الكبيرة باستخدام المعلومات الموجودة في جمع البيانات للنماذج في الإنتاج.
بالنسبة للمواقف الأكثر تعقيداً، مثل تعقب النموذج ضمن توزيع AKS، نوصي باستخدام مكتبة تابعة لجهة خارجية مثل OpenCensus.
لتسجيل عمليات التتبع المخصصة، اتبع عملية التوزيع القياسية لـ AKS أو ACI في مستند كيفية التوزيع والمكان. ثم استخدم الخطوات المتابعة:
قم بتحديث ملف التسجيل عن طريق إضافة بكشوف الطباعة لإرسال البيانات إلى Application Insights أثناء الاستدلال. لمزيد من المعلومات المعقدة، مثل بيانات الطلب والاستجابة، استخدم بنية JSON.
يسجل المثال التالي
score.py
ملفاً عند تكوين النموذج والإدخال والإخراج أثناء الاستدلال ووقت حدوث أي أخطاء.import pickle import json import numpy from sklearn.externals import joblib from sklearn.linear_model import Ridge from azureml.core.model import Model import time def init(): global model #Print statement for appinsights custom traces: print ("model initialized" + time.strftime("%H:%M:%S")) # note here "sklearn_regression_model.pkl" is the name of the model registered under the workspace # this call should return the path to the model.pkl file on the local disk. model_path = Model.get_model_path(model_name = 'sklearn_regression_model.pkl') # deserialize the model file back into a sklearn model model = joblib.load(model_path) # note you can pass in multiple rows for scoring def run(raw_data): try: data = json.loads(raw_data)['data'] data = numpy.array(data) result = model.predict(data) # Log the input and output data to appinsights: info = { "input": raw_data, "output": result.tolist() } print(json.dumps(info)) # you can return any datatype as long as it is JSON-serializable return result.tolist() except Exception as e: error = str(e) print (error + time.strftime("%H:%M:%S")) return error
قم بتحديث تكوين الخدمة، وتأكد من تمكين Application Insights.
config = Webservice.deploy_configuration(enable_app_insights=True)
قم ببناء صورة ووزعها على AKS أو ACI. لمزيد من المعلومات، راجع كيفية التوزيع والمكان.
تعطيل التعقب في Python
لتعطيل Azure Application Insights، استخدم التعليمات البرمجية التالية:
## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)
قم بتكوين التسجيل باستخدام التعلم الآلي Azure Machine Learning
يمكنك أيضاً تمكين Azure Application Insights من التعلم الآلي Azure Machine Learning. عندما تكون جاهزاً لتوزيع النموذج الخاص بك كخدمة ويب، استخدم الخطوات التالية لتمكين Application Insights:
سجّل الدخول إلى الأستوديو على https://ml.azure.com.
انتقل إلى Models وحدد النموذج الذي تريد نشره.
حدد +Deploy.
قم بتعبئة نموذج Deploy model.
قم بتوسيع القائمة Advanced.
حدد Enable Application Insights diagnostics and data collection.
عرض القياسات والسجلات
سجلات الاستعلام للنماذج الموزعة
سجلات نقاط النهاية على الإنترنت هي بيانات العملاء. يمكنك استخدام الوظيفة get_logs()
لاسترداد السجلات من خدمة ويب تم توزيعها مسبقاً. قد تحتوي السجلات على معلومات مفصلة حول أي أخطاء حدثت أثناء التوزيع.
from azureml.core import Workspace
from azureml.core.webservice import Webservice
ws = Workspace.from_config()
# load existing web service
service = Webservice(name="service-name", workspace=ws)
logs = service.get_logs()
إذا كان لديك عدة مستأجرين، فقد تحتاج إلى إضافة تعليمة برمجية للمصادقة التالية قبلws = Workspace.from_config()
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")
عرض السجلات في الأستوديو
يخزن التعلم الآلي Azure Application Insights سجلات الخدمة في نفس مجموعة الموارد مثل مساحة عمل Azure Machine Learning. استخدم الخطوات المتابعة لعرض بياناتك باستخدام الأستوديو:
انتقل إلى مساحة عمل التعلم الآلي Azure Machine Learning في الأستوديو.
حدد نقاط النهاية.
حدد الخدمة الموزعة.
حدد رابط Application Insights url.
في Application Insights، من علامة التبويب Overview أو قسم Monitoring، حدد Logs.
لعرض المعلومات التي تم تسجيلها من ملف Score.py، انظر إلى جدول traces. يبحث طلب البحث متابعة عن السجلات التي تم فيها تسجيل قيمة الإدخال:
traces | where customDimensions contains "input" | limit 10
لمزيد من المعلومات حول كيفية استخدام Azure Application Insights، راجع ما المقصود بـ Application Insights؟.
بيانات التعريف لخدمة الويب وبيانات الاستجابة
هام
لا تسجل Azure Application Insights إلا البيانات الأساسية التي تصل إلى 64 كيلوبايت. إذا تم الوصول إلى هذا الحد، فقد ترى أخطاء مثل نفاد الذاكرة، أو قد لا يتم تسجيل أي معلومات.
لتسجيل معلومات طلب خدمة الويب، أضف عبارات print
إلى ملف Score.py الخاص بك. ينتج عن كل عبارة print
إدخال واحد في جدول تتبع Application Insights أسفل الرسالةSTDOUT
. يخزن Application Insights مخرجات العبارة print
في customDimensions
وفي جدول التتبع Contents
. تنتج طباعة سلاسل JSON بنية بيانات هرمية في إخراج التتبع ضمنContents
.
تصدير البيانات للاحتفاظ بها ومعالجتها
هام
لا يدعم Azure Application Insights إلا عمليات التصدير إلى تخزين عناصر البيانات الثنائية الكبيرة. لمزيد من المعلومات حول حدود هذا التنفيذ، راجع تصدير التتبع عن بُعد من App Insights.
استخدم التصدير المستمر في Application Insights لتصدير البيانات إلى حساب تخزين الكائن الثنائي كبير الحجم حيث يمكنك تحديد إعدادات الاستبقاء. يقوم Application Insights بتصدير البيانات بتنسيق JSON.
الخطوات التالية
في هذه المقالة، تعلمت كيفية تمكين التسجيل وعرض السجلات لنقاط تقديم خدمة الويب. جرب هذه المقالات للخطوات التالية:
MLOps: إدارة النماذج وتوزيعها ومراقبتها باستخدام التعلم الآلي Azure Machine Learning لمعرفة المزيد حول الاستفادة من البيانات التي تم جمعها من النماذج في الإنتاج. يمكن أن تساعد هذه البيانات في تحسين عملية التعلم الآلي باستمرار.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ