Aracılığıyla paylaş


Akış dağıtımı için izlemeyi etkinleştirme ve geri bildirim toplama (önizleme)

Not

Bu özellik şu anda genel önizlemededir. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Üretimde Bir Üretici Yapay Zeka UYGULAMASı dağıtan APP geliştiricileri, anlayışlarını artırmayı ve performansı iyileştirmeyi amaçlır. Her istek, toplanan ölçümler ve kullanıcı geri bildirimleri için verileri izleme kritik roller oynar.

Bu makalede akış dağıtımınızın çıkarım zamanında izlemeyi etkinleştirmeyi, toplanan ölçümleri toplamayı ve kullanıcı geri bildirimini öğreneceksiniz.

Önkoşullar

  • Azure CLI ve Azure Machine Learning'in Azure CLI uzantısı. Daha fazla bilgi için bkz . CLI'yi (v2) yükleme, ayarlama ve kullanma.
  • Azure Machine Learning çalışma alanı. Yoksa, oluşturmak için Hızlı Başlangıç: Çalışma alanı kaynakları oluşturma makalesindeki adımları kullanın.
  • Uygulama Analizler. Genellikle bir makine öğrenmesi çalışma alanında varsayılan bağlantılı Uygulama Analizler vardır. Yeni bir tane kullanmak istiyorsanız, bir Uygulama Analizler kaynağı oluşturabilirsiniz.
  • İstem akışında akış oluşturmayı ve test etmeyi öğrenin.
  • Yönetilen çevrimiçi uç noktalar hakkında temel bilgilere sahip olmanız gerekir. Yönetilen çevrimiçi uç noktalar Azure'daki güçlü CPU ve GPU makineleriyle, temel dağıtım altyapısını ayarlama ve yönetme ek yükünden sizi kurtaran ölçeklenebilir, tam olarak yönetilen bir şekilde çalışır. Yönetilen çevrimiçi uç noktalar hakkında daha fazla bilgi için bkz . Gerçek zamanlı çıkarım için çevrimiçi uç noktalar ve dağıtımlar.
  • Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için sahip veya katkıda bulunan rolü ya da "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/" izin veren özel bir rol atanmalıdır. Çevrimiçi uç noktaları/dağıtımları oluşturmak/yönetmek için studio kullanıyorsanız, kaynak grubu sahibinden başka bir "Microsoft.Resources/deployments/write" iznine sahip olmanız gerekir. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.

Gerçek zamanlı çıkarım için akış dağıtma

Akışınızı esnek akış veya DAG akışı olarak düzgün bir şekilde test ettikten sonra akışı üretim ortamına dağıtabilirsiniz. Bu makalede, örnek olarak Azure Machine Learning tarafından yönetilen çevrimiçi uç noktalara bir akış dağıtmayı kullanacağız. Esnek akışlar için yerine dosyasını flow.dag.yamlhazırlamanız flow.flex.yaml gerekir.

Docker kapsayıcısı, Kubernetes kümesi vb. gibi diğer platformlara da dağıtım yapabilirsiniz.

Not

İzleme ve geri bildirim toplama API'sini desteklemek için akışı dağıtmak için en son istem akış temel görüntüsünü kullanmanız gerekir.

Dağıtımınız için izleme özelliğini etkinleştirme ve sistem ölçümlerini toplama

Dağıtmak için studio kullanıcı arabirimi kullanıyorsanız, dağıtım sihirbazındaki Gelişmiş ayarlar -> Dağıtım adımı bölümünde Uygulama Analizler tanılamasını açabilirsiniz. Bu şekilde izleme verileri ve sistem ölçümleri çalışma alanına bağlı Uygulama Analizler toplanır.

SDK veya CLI kullanıyorsanız dağıtım yaml dosyasına çalışma alanına bağlı Uygulama Analizler veri toplayacak bir özellik app_insights_enabled: true ekleyebilirsiniz. Dağıtım yaml dosyasındaki bir ortam değişkeni APPLICATIONINSIGHTS_CONNECTION_STRING tarafından aşağıdaki gibi diğer Uygulama Analizler da belirtebilirsiniz. Uygulama Analizler bağlantı dizesi Azure portalındaki Genel Bakış sayfasında bulabilirsiniz.

# below is the property in deployment yaml
# app_insights_enabled: true

# you can also use the environment variable
environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Not

Yalnızca ayarlarsanız app_insights_enabled: true ancak çalışma alanınızda bağlı bir Uygulama Analizler yoksa dağıtımınız başarısız olmaz, ancak toplanan veri olmaz.

Hem hem de app_insights_enabled: true yukarıdaki ortam değişkenini aynı anda belirtirseniz, izleme verileri ve ölçümler çalışma alanına bağlı Uygulama Analizler gönderilir. Bu nedenle, farklı bir Uygulama Analizler belirtmek istiyorsanız, yalnızca ortam değişkenini tutmanız gerekir.

Diğer platformlara dağıtıyorsanız, uygulama Analizler speicifed izleme verilerini ve ölçümlerini toplamak için ortam değişkenini APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string> de kullanabilirsiniz.

Uygulama Analizler'nde izleme verilerini görüntüleme

İzlemeler belirli olayları veya yürütme sırasında bir uygulamanın durumunu kaydeder. İşlev çağrıları, değişken değerleri, sistem olayları ve daha fazlası hakkındaki verileri içerebilir. İzlemeler, bir uygulamanın bileşenlerini ayrı girişlere ve çıkışlara ayırmaya yardımcı olur. Bu, uygulamada hata ayıklama ve anlama açısından çok önemlidir. Daha fazla bilgi edinmek için bkz . İzlemeler üzerinde OpenTelemetry izlemeleri. İzleme verileri OpenTelemetry belirtimini izler.

Belirtilen Uygulama Analizler ayrıntılı izlemeyi görüntüleyebilirsiniz. Aşağıdaki ekran görüntüsünde birden çok düğüm içeren dağıtılmış bir akış olayı örneği gösterilmektedir. Uygulama Analizler - Araştır ->> İşlem araması bölümünde her düğümü seçerek ayrıntılı izlemesini görüntüleyebilirsiniz.

Bağımlılık türü olayları, dağıtımlarınızdan gelen çağrıları kaydeder. Bu olayın adı akış klasörünün adıdır. Uygulama Analizler'nde İşlem arama ve tanılama hakkında daha fazla bilgi edinin.

Uygulama içgörülerinde verileri izleme ekran görüntüsü.

Uygulama Analizler sistem ölçümlerini görüntüleme

Ölçüm Adı Tür Boyutlar Açıklama
token_consumption counter -Akışı
-Düğüm
- llm_engine
- token_type: prompt_tokens: LLM API giriş belirteçleri; completion_tokens: LLM API yanıt belirteçleri; total_tokens = prompt_tokens + completion tokens
OpenAI belirteci tüketim ölçümleri
flow_latency Histogram akış, response_code, akış, response_type istek yürütme maliyeti, response_type tam/firstbyte/lastbyte olup olmadığı anlamına gelir
flow_request counter akış, response_code, özel durum, akış akış isteği sayısı
node_latency Histogram akış, düğüm, run_status düğüm yürütme maliyeti
node_request counter akış, düğüm, özel durum, run_status düğüm yürütme sayısı
rpc_latency Histogram akış, düğüm, api_call rpc maliyeti
rpc_request counter akış, düğüm, api_call, özel durum rpc sayısı
flow_streaming_response_duration Histogram akış ilk bayt göndermeden son bayt göndermeye kadar akış yanıtı gönderme maliyeti

Çalışma alanı varsayılan Uygulama Analizler Azure portalındaki çalışma alanına genel bakış sayfanızda bulabilirsiniz.

Uygulama Analizler açın ve sol gezinti bölmesinden Kullanım ve tahmini maliyetler'i seçin. Özel ölçümler (Önizleme) seçeneğini belirleyin ve Boyutlarla seçeneğini belirleyin ve değişikliği kaydedin.

Çok boyutlu ölçümleri etkinleştirme seçeneğinin ekran görüntüsü.

Sol gezinti bölmesinde Ölçümler sekmesini seçin. Ölçüm Ad Alanı'ndan istem akışı standart ölçümlerini seçin; Ölçüm açılan listesinden ölçümleri farklı toplama yöntemleriyle inceleyebilirsiniz.

İstem akışı uç noktası ölçümlerinin ekran görüntüsü.

Geri bildirim toplama ve Uygulama Analizler gönderme

İstem akışı sunma, müşterinin geri bildirim toplamasına yardımcı olmak için yeni /feedback bir API sağlar, geri bildirim yükü herhangi bir json biçiminde veri olabilir, PF hizmeti yalnızca müşterinin geri bildirim verilerini bir izleme aralığına kaydetmesine yardımcı olur. Veriler, müşteri tarafından yapılandırılan izleme verme hedefine kaydedilir. Ayrıca OpenTelemetry standart izleme bağlamı yayma özelliğini de destekler ve istek üst bilgisindeki izleme bağlamı kümesine uygun olduğunu ve bunu istek üst yayılma bağlamı olarak kullandığını söyler. Geri Bildirim izlemesini sohbet isteği izlemesiyle ilişkilendirmek için dağıtılmış izleme işlevinden yararlanabilirsiniz.

Aşağıda, akış tarafından dağıtılan yönetilen uç nokta özellikli izlemenin puanlanması ve puanlama isteğinin aynı izleme aralığına geri bildirim gönderilmesini gösteren örnek kod verilmiştir. Akışın girişleri ve chat_hisotryve çıkışları questionanswervardır. Uç noktayı puanladıktan sonra bir geri bildirim toplar ve akışı dağıtırken belirtilen Uygulama Analizler göndeririz. Değeri doldurmanız api_key veya kodu kullanım örneğine göre değiştirmeniz gerekir.

import urllib.request
import json
import os
import ssl
from opentelemetry import trace, context
from opentelemetry.baggage.propagation import W3CBaggagePropagator
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.sdk.trace import TracerProvider

# Initialize your tracer
tracer = trace.get_tracer("my.genai.tracer")
trace.set_tracer_provider(TracerProvider())

# Request data goes here
# The example below assumes JSON formatting which may be updated
# depending on the format your endpoint expects.
# More information can be found here:
# https://docs.microsoft.com/azure/machine-learning/how-to-deploy-advanced-entry-script
data = {
    "question": "hello",
    "chat_history": []
}

body = str.encode(json.dumps(data))

url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/feedback'
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
api_key = ''
if not api_key:
    raise Exception("A key should be provided to invoke the endpoint")

# The azureml-model-deployment header will force the request to go to a specific deployment.
# Remove this header to have the request observe the endpoint traffic rules
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key), 'azureml-model-deployment': 'basic-chat-deployment' }

try:
    with tracer.start_as_current_span('genai-request') as span:

        ctx = context.get_current()
        TraceContextTextMapPropagator().inject(headers, ctx)
        print(headers)
        print(ctx)
        req = urllib.request.Request(url, body, headers)
        response = urllib.request.urlopen(req)

        result = response.read()
        print(result)

        # Now you can process the answer and collect feedback
        feedback = "thumbdown"  # Example feedback (modify as needed)

        # Make another request to save the feedback
        feedback_body = str.encode(json.dumps(feedback))
        feedback_req = urllib.request.Request(feedback_url, feedback_body, headers)
        urllib.request.urlopen(feedback_req)


except urllib.error.HTTPError as error:
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
    print(error.info())
    print(error.read().decode("utf8", 'ignore'))

İsteğin izlemesini ve geri bildirimi Uygulama Analizler görüntüleyebilirsiniz.

Uygulama Analizler bir isteğin geri bildirim ve izleme verilerinin ekran görüntüsü.

Gelişmiş kullanım: İzlemeyi özel OpenTelemetry toplayıcı hizmetine dışarı aktarma

Bazı durumlarda, "OTEL_EXPORTER_OTLP_ENDPOINT" ayarıyla etkinleştirilen izleme verilerini dağıtılan OTel toplayıcı hizmetinize dışarı aktarmak isteyebilirsiniz. Kendi yayılma alanı işleme mantığımızı ve kendi izleme kalıcı hedefinizi özelleştirmek istediğinizde bu dışarı aktarmayı kullanın.

Sonraki adımlar