⁧⁩مراقبة البيانات وتجميعها من نقاط نهاية خدمة الويب ML⁧⁩

في هذه المقالة، ستتعرف على كيفية تجميع البيانات من النماذج التي تم نشرها إلى نقاط نهاية خدمة الويب في خدمة Azure Kubernetes (AKS) أو مثيلات حاوية Azure (ACI). استخدم تطبيق Azure Insights لجمع البيانات التالية من نقطة نهاية:

  • بيانات الإخراج
  • الاستجابات
  • معدلات الطلب وأوقات الاستجابة ومعدلات الفشل
  • معدلات الإعالة وأوقات الاستجابة ومعدلات الفشل
  • استثناءات

يوضح دفتر ملاحظات enable-app-in-inproduction-service.ipynb المفاهيم الواردة في هذه المقالة.

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

هام

تعتمد المعلومات الواردة في هذه المقالة على تطبيق Azure Insights مثيل تم إنشاؤه باستخدام مساحة العمل الخاصة بك. إذا قمت بحذف هذا التطبيق Insights المثال، فلا توجد طريقة لإعادة إنشائه بخلاف حذف مساحة العمل وإعادة إنشائها.

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

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

في هذا القسم، ستتعرف على كيفية تمكين تسجيل "إحصاءات التطبيق" باستخدام حزمة تطوير البرامج (SDK) الخاصة ب Python.

تحديث خدمة تم نشرها

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

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

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

    aks_service.update(enable_app_insights=True)
    

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

هام

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

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

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

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

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

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

  2. انتقل إلى الطرز وحدد الطراز الذي تريد نشره.

  3. حدد +نشر.

  4. تعبئة نموذج نشر .

  5. قم بتوسيع القائمة خيارات متقدمة .

    Deploy form

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

    Enable 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 Insights بتخزين سجلات الخدمة الخاصة بك في نفس مجموعة الموارد مثل مساحة عمل Azure التعلم الآلي. اتبع الخطوات التالية لعرض بياناتك باستخدام الاستوديو:

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

  2. حدد "Endpoints".

  3. حدد الخدمة التي تم نشرها.

  4. حدد رابط عنوان URL Insights التطبيق.

    Locate Application Insights url

  5. في Insights التطبيق، من علامة التبويب نظرة عامة أو قسم المراقبة، حدد السجلات.

    Overview tab of monitoring

  6. لعرض المعلومات المسجلة من ملف score.py، انظر إلى جدول التتبعات . يبحث الاستعلام التالي عن السجلات التي تم تسجيل قيمة الإدخال فيها:

    traces
    | where customDimensions contains "input"
    | limit 10
    

    trace data

لمزيد من المعلومات حول كيفية استخدام تطبيق 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.

Continuous export

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

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