مراقبة البيانات وجمعها من نقاط نهاية خدمة ويب 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 هذا، فلا توجد طريقة لإعادة إنشائه بخلاف حذف مساحة العمل وإعادة إنشائها.

تلميح

إذا كنت تستخدم نقاط النهاية عبر الإنترنت بدلًا من ذلك، فاستخدم المعلومات الموجودة في مقالة مراقبة نقاط النهاية عبر الإنترنت بدلًا من ذلك.

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

تكوين التسجيل باستخدام Python SDK

في هذا القسم، ستتعلم كيفية تمكين تسجيل Application Insight باستخدام Python SDK.

تحديث الخدمة الموزعة

استخدم الخطوات المتابعة التالية لتحديث خدمة ويب موجودة:

  1. حدد الخدمة في مساحة العمل الخاصة بك. قيمة wsهي اسم مساحة العمل الخاصة بك

    from azureml.core.webservice import Webservice
    aks_service= Webservice(ws, "my-service-name")
    
  2. تحديث خدمتك وتمكين Azure Application Insights

    aks_service.update(enable_app_insights=True)
    

تسجيل تتبعات مخصصة لخدمتك

هام

لا تسجل Azure Application Insights إلا البيانات الأساسية التي تصل إلى 64 كيلوبايت. إذا تم الوصول إلى هذا الحد، فقد ترى أخطاء مثل نفاد الذاكرة، أو قد لا يتم تسجيل أي معلومات. إذا كانت البيانات التي تريد تسجيلها أكبر من 64 كيلوبايت، فيجب عليك بدلاً من ذلك تخزينها في تخزين البيانات الثنائية الكبيرة باستخدام المعلومات الموجودة في جمع البيانات للنماذج في الإنتاج.

بالنسبة للمواقف الأكثر تعقيداً، مثل تعقب النموذج ضمن توزيع AKS، نوصي باستخدام مكتبة تابعة لجهة خارجية مثل OpenCensus.

لتسجيل عمليات التتبع المخصصة، اتبع عملية التوزيع القياسية لـ AKS أو ACI في مستند كيفية التوزيع والمكان. ثم استخدم الخطوات المتابعة:

  1. قم بتحديث ملف التسجيل عن طريق إضافة بكشوف الطباعة لإرسال البيانات إلى 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
    
  2. قم بتحديث تكوين الخدمة، وتأكد من تمكين Application Insights.

    config = Webservice.deploy_configuration(enable_app_insights=True)
    
  3. قم ببناء صورة ووزعها على 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:

  1. سجّل الدخول إلى الأستوديو على https://ml.azure.com.

  2. انتقل إلى Models وحدد النموذج الذي تريد نشره.

  3. حدد +Deploy.

  4. قم بتعبئة نموذج Deploy model.

  5. قم بتوسيع القائمة Advanced.

    نشر نموذج

  6. حدد Enable Application Insights diagnostics and data collection.

    تمكين App 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 Application Insights سجلات الخدمة في نفس مجموعة الموارد مثل مساحة عمل Azure Machine Learning. استخدم الخطوات المتابعة لعرض بياناتك باستخدام الأستوديو:

  1. انتقل إلى مساحة عمل التعلم الآلي Azure Machine Learning في الأستوديو.

  2. حدد نقاط النهاية.

  3. حدد الخدمة الموزعة.

  4. حدد رابط Application Insights url.

    تحديد موقع ويب Application Insights

  5. في Application Insights، من علامة التبويب Overview أو قسم Monitoring، حدد Logs.

    علامة تبويب نظرة عامة على المراقبة

  6. لعرض المعلومات التي تم تسجيلها من ملف 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.

Continuous export

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

في هذه المقالة، تعلمت كيفية تمكين التسجيل وعرض السجلات لنقاط تقديم خدمة الويب. جرب هذه المقالات للخطوات التالية: