مراقبة البيانات وتجميعها من نقاط نهاية خدمة الويب ML
في هذه المقالة، ستتعرف على كيفية تجميع البيانات من النماذج التي تم نشرها إلى نقاط نهاية خدمة الويب في خدمة Azure Kubernetes (AKS) أو مثيلات حاوية Azure (ACI). استخدم تطبيق Azure Insights لجمع البيانات التالية من نقطة نهاية:
- بيانات الإخراج
- الاستجابات
- معدلات الطلب وأوقات الاستجابة ومعدلات الفشل
- معدلات الإعالة وأوقات الاستجابة ومعدلات الفشل
- استثناءات
يوضح دفتر ملاحظات enable-app-in-inproduction-service.ipynb المفاهيم الواردة في هذه المقالة.
تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر ملاحظات Jupyter لاستكشاف هذه الخدمة.
هام
تعتمد المعلومات الواردة في هذه المقالة على تطبيق Azure Insights مثيل تم إنشاؤه باستخدام مساحة العمل الخاصة بك. إذا قمت بحذف هذا التطبيق Insights المثال، فلا توجد طريقة لإعادة إنشائه بخلاف حذف مساحة العمل وإعادة إنشائها.
المتطلبات الأساسية
اشتراك Azure - جرب الإصدار المجاني أو المدفوع من Azure التعلم الآلي.
مساحة عمل Azure التعلم الآلي ودليل محلي يحتوي على البرامج النصية الخاصة بك و Azure التعلم الآلي SDK ل Python مثبتة. لمعرفة المزيد، راجع كيفية تكوين بيئة تطوير.
نموذج مدرب للتعلم الآلي. لمعرفة المزيد، راجع البرنامج التعليمي لنموذج تصنيف صور القطار .
تكوين التسجيل باستخدام Python SDK
في هذا القسم، ستتعرف على كيفية تمكين تسجيل "إحصاءات التطبيق" باستخدام حزمة تطوير البرامج (SDK) الخاصة ب Python.
تحديث خدمة تم نشرها
اتبع الخطوات التالية لتحديث خدمة ويب موجودة:
حدد الخدمة في مساحة العمل الخاصة بك. القيمة هي
wsاسم مساحة العمل الخاصة بكfrom azureml.core.webservice import Webservice aks_service= Webservice(ws, "my-service-name")قم بتحديث خدمتك وتمكين تطبيق Azure Insights
aks_service.update(enable_app_insights=True)
تسجيل عمليات التتبع المخصصة في خدمتك
هام
يقوم تطبيق Azure Insights فقط بتسجيل الحمولات التي تصل إلى 64 كيلو بايت. إذا تم الوصول إلى هذا الحد، فقد ترى أخطاء مثل نفاد الذاكرة، أو قد لا يتم تسجيل أي معلومات. إذا كانت البيانات التي تريد تسجيلها أكبر من 64 كيلوبايت، فيجب عليك بدلا من ذلك تخزينها في وحدة تخزين blob باستخدام المعلومات الموجودة في تجميع البيانات للطرز قيد الإنتاج.
بالنسبة للمواقف الأكثر تعقيدا ، مثل تتبع النموذج داخل نشر AKS ، نوصي باستخدام مكتبة تابعة لجهة خارجية مثل OpenCensus.
لتسجيل عمليات التتبع المخصصة، اتبع عملية النشر القياسية ل AKS أو ACI في مستند كيفية النشر ومكانه . ثم اتبع الخطوات التالية:
قم بتحديث ملف تسجيل النقاط عن طريق إضافة عبارات طباعة لإرسال البيانات إلى التطبيق 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قم بتحديث تكوين الخدمة، وتأكد من تمكين Insights التطبيق.
config = Webservice.deploy_configuration(enable_app_insights=True)قم ببناء صورة ونشرها على AKS أو ACI. لمزيد من المعلومات، راجع كيفية النشر وأين.
تعطيل التتبع في بايثون
لتعطيل تطبيق Azure Insights، استخدم التعليمة البرمجية التالية:
## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)
تكوين التسجيل باستخدام استوديو Azure التعلم الآلي
يمكنك أيضا تمكين تطبيق Azure Insights من استوديو Azure التعلم الآلي. عندما تكون مستعدا لنشر النموذج الخاص بك كخدمة ويب، اتبع الخطوات التالية لتمكين Insights التطبيق:
سجل الدخول إلى الاستوديو على .https://ml.azure.com
انتقل إلى الطرز وحدد الطراز الذي تريد نشره.
حدد +نشر.
تعبئة نموذج نشر .
قم بتوسيع القائمة خيارات متقدمة .

حدد تمكين تشخيصات Insights التطبيقات وجمع البيانات.

عرض القياسات والسجلات
سجلات الاستعلام للنماذج المنشورة
سجلات نقاط النهاية في الوقت الحقيقي هي بيانات العملاء. يمكنك استخدام 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 Insights بتخزين سجلات الخدمة الخاصة بك في نفس مجموعة الموارد مثل مساحة عمل Azure التعلم الآلي. اتبع الخطوات التالية لعرض بياناتك باستخدام الاستوديو:
انتقل إلى مساحة عمل Azure التعلم الآلي في الاستوديو.
حدد "Endpoints".
حدد الخدمة التي تم نشرها.
حدد رابط عنوان URL Insights التطبيق.
في Insights التطبيق، من علامة التبويب نظرة عامة أو قسم المراقبة، حدد السجلات.
لعرض المعلومات المسجلة من ملف score.py، انظر إلى جدول التتبعات . يبحث الاستعلام التالي عن السجلات التي تم تسجيل قيمة الإدخال فيها:
traces | where customDimensions contains "input" | limit 10
لمزيد من المعلومات حول كيفية استخدام تطبيق Azure Insights، راجع ما هي Insights التطبيق؟.
البيانات الوصفية لخدمة الويب وبيانات الاستجابة
هام
يقوم تطبيق Azure Insights فقط بتسجيل الحمولات التي تصل إلى 64 كيلو بايت. إذا تم الوصول إلى هذا الحد ، فقد ترى أخطاء مثل نفاد الذاكرة ، أو قد لا يتم تسجيل أي معلومات.
لتسجيل معلومات طلب خدمة الويب، أضف print عبارات إلى ملف score.py. ينتج عن كل print عبارة إدخال واحد في جدول تتبع Insights التطبيق أسفل الرسالة STDOUT. يقوم Insights التطبيق بتخزين print مخرجات البيان في customDimensions جدول التتبع وفيهContents. تنتج طباعة سلاسل JSON بنية بيانات هرمية في مخرجات التتبع ضمن Contents.
تصدير البيانات للاحتفاظ بها ومعالجتها
هام
Insights تطبيق Azure يدعم فقط عمليات التصدير إلى تخزين blob. لمزيد من المعلومات حول حدود هذا التنفيذ، راجع تصدير القياس عن بعد من App Insights.
استخدم التصدير المستمر ل Application Insights لتصدير البيانات إلى حساب تخزين blob حيث يمكنك تحديد إعدادات الاستبقاء. يقوم Insights التطبيق بتصدير البيانات بتنسيق JSON.
الخطوات التالية
في هذه المقالة، تعلمت كيفية تمكين تسجيل وعرض السجلات لنقاط نهاية خدمة ويب. جرب هذه المقالات لمعرفة الخطوات التالية:
MLOps: يمكنك إدارة النماذج ونشرها ومراقبتها باستخدام Azure التعلم الآلي لمعرفة المزيد حول الاستفادة من البيانات التي تم جمعها من النماذج قيد الإنتاج. يمكن أن تساعد هذه البيانات في تحسين عملية التعلم الآلي باستمرار.


