ML web hizmet uç noktalarından verileri izleme ve toplama
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
Bu makalede, Azure Kubernetes Service (AKS) veya Azure Container Instances (ACI) içinde web hizmeti uç noktalarına dağıtılan modellerden veri toplamayı öğreneceksiniz. Bir uç noktadan aşağıdaki verileri toplamak için Azure Uygulaması lication Insights'ı kullanın:
- Çıktı verileri
- Yanıtlar
- İstek oranları, yanıt süreleri ve hata oranları
- Bağımlılık oranları, yanıt süreleri ve hata oranları
- Özel durumlar
Enable-app-insights-in-production-service.ipynb not defteri bu makaledeki kavramları gösterir.
Not defterlerini çalıştırmayı öğrenmek için bkz. Hizmeti keşfetmek için Jupyter not defterlerini kullanma.
Önemli
Bu makaledeki bilgiler, çalışma alanınızla oluşturulan Azure Uygulaması lication Insights örneğine dayanır. Bu Application Insights örneğini sildiyseniz, çalışma alanını silip yeniden oluşturmak dışında yeniden oluşturmanın bir yolu yoktur.
İpucu
Bunun yerine çevrimiçi uç noktaları kullanıyorsanız, bunun yerine Çevrimiçi uç noktaları izleme makalesindeki bilgileri kullanın.
Önkoşullar
Azure aboneliği - Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
Azure Machine Learning çalışma alanı, betiklerinizi içeren yerel bir dizin ve Python için Azure Machine Learning SDK'sı yüklüdür. Daha fazla bilgi edinmek için bkz . Geliştirme ortamını yapılandırma.
Eğitilmiş bir makine öğrenmesi modeli. Daha fazla bilgi edinmek için Görüntü sınıflandırma modelini eğitma öğreticisine bakın.
Python SDK'sı ile günlüğe kaydetmeyi yapılandırma
Bu bölümde, Python SDK'sını kullanarak Application Insight günlüğünü etkinleştirmeyi öğreneceksiniz.
Dağıtılan hizmeti güncelleştirme
Mevcut bir web hizmetini güncelleştirmek için aşağıdaki adımları kullanın:
Çalışma alanınızdaki hizmeti tanımlayın. değeri
ws
, çalışma alanınızın adıdırfrom azureml.core.webservice import Webservice aks_service= Webservice(ws, "my-service-name")
Hizmetinizi güncelleştirme ve Azure Uygulaması lication Insights'ı etkinleştirme
aks_service.update(enable_app_insights=True)
Hizmetinizde özel izlemeleri günlüğe kaydetme
Önemli
Azure Uygulaması lication Insights yalnızca 64 kb'a kadar olan yükleri günlüğe kaydeder. Bu sınıra ulaşılırsa, yetersiz bellek gibi hatalar görebilirsiniz veya hiçbir bilgi günlüğe kaydedilemeyebilir. Günlüğe kaydetmek istediğiniz veriler 64 kb daha büyükse, üretimdeki modeller için Veri Toplama bölümünde yer alan bilgileri kullanarak blob depolama alanında depolamanız gerekir.
AKS dağıtımında model izleme gibi daha karmaşık durumlar için OpenCensus gibi bir üçüncü taraf kitaplığı kullanmanızı öneririz.
Özel izlemeleri günlüğe kaydetmek için, Nasıl dağıtılır ve nerede belgesinde AKS veya ACI için standart dağıtım işlemini izleyin. Ardından aşağıdaki adımları kullanın:
Çıkarım sırasında Application Insights'a veri göndermek için yazdırma deyimleri ekleyerek puanlama dosyasını güncelleştirin. İstek verileri ve yanıt gibi daha karmaşık bilgiler için bir JSON yapısı kullanın.
Aşağıdaki örnek
score.py
dosya modelin ne zaman başlatıldığını, çıkarım sırasında giriş ve çıkışı ve hataların oluştuğu zamanı günlüğe kaydeder.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
Hizmet yapılandırmasını güncelleştirin ve Application Insights'ı etkinleştirdiğinizden emin olun.
config = Webservice.deploy_configuration(enable_app_insights=True)
Bir görüntü oluşturun ve AKS veya ACI üzerinde dağıtın. Daha fazla bilgi için bkz . Nasıl dağıtılır ve nereye dağıtılır.
Python'da izlemeyi devre dışı bırakma
Azure Uygulaması lication Insights'ı devre dışı bırakmak için aşağıdaki kodu kullanın:
## replace <service_name> with the name of the web service
<service_name>.update(enable_app_insights=False)
Azure Machine Learning stüdyosu ile günlüğe kaydetmeyi yapılandırma
ayrıca Azure Machine Learning stüdyosu'dan Azure Uygulaması Lication Insights'i etkinleştirebilirsiniz. Modelinizi web hizmeti olarak dağıtmaya hazır olduğunuzda Application Insights'ı etkinleştirmek için aşağıdaki adımları kullanın:
adresinden stüdyoda https://ml.azure.comoturum açın.
Modeller'e gidin ve dağıtmak istediğiniz modeli seçin.
+Dağıt'ı seçin.
Modeli dağıtma formunu doldurun.
Gelişmiş menüsünü genişletin.
Application Insights tanılamasını ve veri toplamayı etkinleştir'i seçin.
Ölçümleri ve günlükleri görüntüleme
Dağıtılan modeller için sorgu günlükleri
Çevrimiçi uç noktaların günlükleri müşteri verileridir. daha önce dağıtılan get_logs()
bir web hizmetinden günlükleri almak için işlevini kullanabilirsiniz. Günlükler, dağıtım sırasında oluşan hatalar hakkında ayrıntılı bilgiler içerebilir.
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()
Birden çok Kiracınız varsa, önce aşağıdaki kimlik doğrulama kodunu eklemeniz gerekebilir ws = Workspace.from_config()
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="the tenant_id in which your workspace resides")
Günlükleri stüdyoda görüntüleme
Azure Uygulaması lication Insights, hizmet günlüklerinizi Azure Machine Learning çalışma alanıyla aynı kaynak grubunda depolar. Studio kullanarak verilerinizi görüntülemek için aşağıdaki adımları kullanın:
Uç Noktaları seçin.
Dağıtılan hizmeti seçin.
Application Insights URL bağlantısını seçin.
Application Insights'ta, Genel Bakış sekmesinden veya İzleme bölümünde Günlükler'i seçin.
score.py dosyasından günlüğe kaydedilen bilgileri görüntülemek için izlemeler tablosuna bakın. Aşağıdaki sorgu, giriş değerinin günlüğe kaydedildiği günlükleri arar:
traces | where customDimensions contains "input" | limit 10
Azure Uygulaması lication Insights'ı kullanma hakkında daha fazla bilgi için bkz. Application Insights nedir?.
Web hizmeti meta verileri ve yanıt verileri
Önemli
Azure Uygulaması lication Insights yalnızca 64 kb'a kadar olan yükleri günlüğe kaydeder. Bu sınıra ulaşılırsa bellek yetersiz gibi hatalar görebilirsiniz veya hiçbir bilgi günlüğe kaydedilemeyebilir.
Web hizmeti isteği bilgilerini günlüğe kaydetmek için score.py dosyanıza deyimler ekleyin print
. Her print
deyim, iletisinin STDOUT
altındaki Application Insights izleme tablosunda bir girdiyle sonuçlar. Application Insights, deyim çıkışlarını izleme tablosunda ve içinde Contents
depolar.print
customDimensions
JSON dizelerini yazdırma, altındaki Contents
izleme çıkışında hiyerarşik bir veri yapısı oluşturur.
Bekletme ve işleme için verileri dışarı aktarma
Önemli
Azure Uygulaması lication Insights yalnızca blob depolamaya dışarı aktarmayı destekler. Bu uygulamanın sınırları hakkında daha fazla bilgi için bkz . App Insights'tan telemetriyi dışarı aktarma.
Verileri saklama ayarlarını tanımlayabileceğiniz bir blob depolama hesabına aktarmak için Application Insights'ın sürekli dışarı aktarmasını kullanın. Application Insights, verileri JSON biçiminde dışarı aktarır.
Sonraki adımlar
Bu makalede, web hizmeti uç noktaları için günlüğe kaydetmeyi ve günlükleri görüntülemeyi öğrendiniz. Sonraki adımlar için şu makaleleri deneyin:
MLOps: Üretimdeki modellerden toplanan verilerden yararlanma hakkında daha fazla bilgi edinmek için Azure Machine Learning ile modelleri yönetin, dağıtın ve izleyin. Bu tür veriler makine öğrenmesi sürecinizi sürekli geliştirmeye yardımcı olabilir.