CLI ile gerçek zamanlı çıkarım için çevrimiçi uç noktaya akış dağıtma

Uyarı

Microsoft Foundry ve Azure Machine Learning'daki istem akışı 20 Nisan 2027'de kullanımdan kaldırılacaktır. Prompt flow artık yeni geliştirmelerde önerilmemektedir. Mevcut prompt akışı uygulamalarını ve dağıtımlarını 20 Nisan 2027'den önce Microsoft Agent Framework'e geçirin.

Prompt flow kapsayıcı imajları, güvenlik ve paket güncellemeleri dahil, artık güncelleme almıyor. Bu, promptflow-runtime, promptflow-runtime-stable ve promptflow-python dahil olmak üzere Prompt flow çalışma zamanı görüntüleri için geçerlidir.

20 Nisan 2027'den sonra, Microsoft Foundry ve Azure Machine Learning’deki web tabanlı yazma deneyimi, VS Code uzantıları ve ilgili Prompt flow kapsayıcı görüntüleri dahil olmak üzere Prompt flow artık desteklenmeyecek veya kullanılamayacaktır.

Uygulamanız istem akışı dağıtımlarına veya çalışma zamanı görüntülerine bağımlıysa, bu iş yüklerini kullanımdan kaldırma tarihinden önce Microsoft Agent Framework gibi desteklenen alternatiflere taşımayı planlayın. Geçiş yönergeleri için, Prompt flow geçiş kılavuzuna ve geçiş kod örneklerine bakın.

Bu makalede, Azure Machine Learning v2 CLI kullanarak akışınızı gerçek zamanlı çıkarımda kullanmak üzere yönetilen bir çevrimiçi uç noktaya veya Kubernetes çevrimiçi uç noktasına dağıtmayı öğreneceksiniz.

Başlamadan önce akışınızı düzgün bir şekilde test ettiğinizden ve üretime dağıtılmaya hazır olduğundan emin olduğunuzdan emin olun. Akışınızı test etme hakkında daha fazla bilgi edinmek için bkz. Akışınızı test etme. Akışınızı test ettikten sonra yönetilen çevrimiçi uç nokta ve dağıtım oluşturmayı ve gerçek zamanlı çıkarım için uç noktayı kullanmayı öğrenirsiniz.

  • Bu makalede CLI deneyiminin nasıl kullanılacağı açıklanır.
  • Python SDK'sı bu makalede ele alınmıyor. Bunun yerine örnek GitHub not defterine bakın. Python SDK'sını kullanmak için Azure Machine Learning için Python SDK v2'niz olmalıdır. Daha fazla bilgi edinmek için bkz. Azure Machine Learning için Python SDK v2'yi yükleme.

Önemli

Bu makalede işaretlenen (önizleme) öğeler şu anda genel önizleme aşamasındadır. Önizleme sürümü bir hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmeyebilir veya kısıtlı özelliklere sahip olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Uygun Kullanım Koşulları.

Önkoşullar

  • Azure CLI ve Azure CLI için Azure Machine Learning uzantısı. Daha fazla bilgi için bkz. CLI'yi (v2) yükleme, ayarlama ve kullanma.
  • Azure Machine Learning çalışma alanı. Yoksa, bir tane oluşturmak için "Hızlı Başlangıç" makalesindeki "Çalışma alanı kaynakları oluşturma" adımlarını kullanın.
  • Azure rol tabanlı erişim denetimleri (Azure RBAC), Azure Machine Learning'daki işlemlere erişim vermek için kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza, Azure Machine Learning çalışma alanına sahip veya katkıda bulunan rol ya da "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/" izin veren özel bir rol atanmış olmalıdır. Çevrimiçi uç noktalar ve dağıtımlar oluşturmak ve yönetmek için Studio’yu kullanıyorsanız, kaynak grubunun sahibinden ek olarak "Microsoft.Resources/deployments/write" iznine ihtiyacınız vardır. Daha fazla bilgi için bkz. Azure Machine Learning çalışma alanına erişimi yönetme.

Not

Yönetilen çevrimiçi uç nokta yalnızca yönetilen sanal ağı destekler. Çalışma alanınız özel sanal ağdaysa Kubernetes çevrimiçi uç noktasına veya Docker gibi diğer platformlara dağıtabilirsiniz.

Dağıtım süreçleri için sanal makine kotası tahsisi

Yönetilen çevrimiçi uç noktalar için Azure Machine Learning, yükseltmeleri gerçekleştirmek için işlem kaynaklarınızdan 20% ayırır. Bu nedenle, bir dağıtımda belirli sayıda örnek isterseniz, hata almamak için ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU kullanılabilir bir kotanız olmalıdır. Örneğin, bir dağıtımda bir Standard_DS3_v2 VM'nin 10 örneğini (dört çekirdekle birlikte gelir) isterseniz, 48 çekirdek (12 örnek dört çekirdek) için kotanız olmalıdır. Kullanım ve istek kotası artışlarınızı görüntülemek için bkz. Azure portalında kullanımınızı ve kotalarınızı görüntüleme.

Akışı dağıtıma hazırla

Her akışın kodlar, istemler, tanım ve akışın diğer yapıtlarını içeren bir klasörü vardır. Akışınızı kullanıcı arabirimini kullanarak geliştirirseniz akış klasörünü akış ayrıntıları sayfasından indirebilirsiniz. Akışınızı CLI veya SDK kullanarak geliştirirseniz akış klasörünüz zaten vardır.

Bu makalede yönetilen Azure Machine Learning çevrimiçi uç noktaya dağıtımı örneklemek için "basic-chat" adlı örnek akış kullanılır.

Önemli

Akışınızda additional_includes kullanıyorsanız, önce akış klasörünün çözümlenmiş sürümünü almak için pf flow build --source <path-to-flow> --output <output-path> --format docker kullanın.

Varsayılan çalışma alanını ayarlama

CLI için varsayılan çalışma alanını ve kaynak grubunu ayarlamak için aşağıdaki komutları kullanın.

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Akışı model olarak kaydetme (isteğe bağlı)

Çevrimiçi dağıtımda, kayıtlı bir modele başvurabilir veya model yolunu (model dosyalarının karşıya yüklendiği yer) satır içi olarak belirtebilirsiniz. Modeli kaydedin ve dağıtım tanımında model adını ve sürümünü belirtin. formunu model:<model_name>:<version>kullanın.

Aşağıdaki örnekte sohbet akışı için model tanımı gösterilmektedir.

Not

Akışınız bir sohbet akışı değilse, bunları propertieseklemeniz gerekmez.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: basic-chat-model
path: ../../../../examples/flows/chat/basic-chat
description: register basic chat flow folder as a custom model
properties:
  # In AuzreML studio UI, endpoint detail UI Test tab needs this property to know it's from prompt flow
  azureml.promptflow.source_flow_id: basic-chat
  
  # Following are properties only for chat flow 
  # endpoint detail UI Test tab needs this property to know it's a chat flow
  azureml.promptflow.mode: chat
  # endpoint detail UI Test tab needs this property to know which is the input column for chat flow
  azureml.promptflow.chat_input: question
  # endpoint detail UI Test tab needs this property to know which is the output column for chat flow
  azureml.promptflow.chat_output: answer

Modeli çalışma alanınıza kaydetmek için kullanın az ml model create --file model.yaml .

Uç noktayı tanımlama

Uç nokta tanımlamak için aşağıdaki değerleri belirtin:

  • Uç nokta adı: Uç noktanın adı. Azure bölgesinde benzersiz olmalıdır. Adlandırma kuralları hakkında daha fazla bilgi için bkz. uç nokta sınırları.
  • Kimlik doğrulama modu: Uç nokta için kimlik doğrulama yöntemi. Anahtar tabanlı kimlik doğrulaması ile belirteç tabanlı kimlik doğrulaması Azure Machine Learning arasında seçim yapın. Anahtarın süresi dolmaz, ancak belirtecin süresi dolmaz. Kimlik doğrulaması hakkında daha fazla bilgi için bkz. Çevrimiçi uç noktada kimlik doğrulaması yapma. İsteğe bağlı olarak uç noktanıza bir açıklama ve etiketler ekleyin.
  • İsteğe bağlı olarak uç noktanıza bir açıklama ve etiketler ekleyin.
  • Çalışma alanınıza eklediğiniz bir Kubernetes kümesine (AKS veya Arc özellikli küme) dağıtmak istiyorsanız, akışı Bir Kubernetes çevrimiçi uç noktası olarak dağıtabilirsiniz.

Aşağıdaki örnekte, varsayılan olarak sistem tarafından atanan kimliği kullanan bir uç nokta tanımı gösterilmektedir.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: basic-chat-endpoint
auth_mode: key
properties:
# this property only works for system-assigned identity.
# if the deploy user has access to connection secrets, 
# the endpoint system-assigned identity will be auto-assigned connection secrets reader role as well
  enforce_access_to_default_secret_stores: enabled
Anahtar Açıklama
$schema (İsteğe bağlı) YAML şeması. YAML dosyasındaki tüm kullanılabilir seçenekleri görmek için, şemayı bir tarayıcıdaki önceki kod parçacığında görüntüleyebilirsiniz.
name Uç noktanın adı.
auth_mode Anahtar tabanlı kimlik doğrulaması için kullanın key . Azure Machine Learning belirteç tabanlı kimlik doğrulaması için aml_token kullanın. En son belirteci almak için az ml online-endpoint get-credentials komutunu kullanın.
property: enforce_access_to_default_secret_stores (önizleme) - Varsayılan olarak uç nokta sistem tarafından atanan kimliği kullanır. Bu özellik yalnızca sistem tarafından atanan kimlik için çalışır.
- Bu özellik, bağlantı sırlarını okuma iznine sahipseniz, uç nokta sistem tarafından atanan kimliğe, Azure Machine Learning Çalışma Alanı'nın Bağlantı Gizli Dizileri Okuyucusu rolü otomatik olarak atanır. Bu sayede, uç nokta çıkarım yaparken bağlantılara doğru şekilde erişebilir.
- Varsayılan olarak bu özellik 'devre dışı' şeklindedir.

Bir Kubernetes çevrimiçi uç noktası oluşturursanız aşağıdaki öznitelikleri belirtmeniz gerekir:

Anahtar Açıklama
compute Uç noktanın dağıtılacağı Kubernetes işlem hedefi.

Uç noktanın daha fazla yapılandırması için bkz. yönetilen çevrimiçi uç nokta şeması.

Önemli

Akışınız Microsoft Entra ID tabanlı kimlik doğrulama bağlantıları kullanıyorsa, sistem tarafından atanan kimliği veya kullanıcı tarafından atanan kimliği kullanmanız fark etmez, yönetilen kimliğe her zaman ilgili kaynakların uygun rollerini vermeniz gerekir; böylece bu kaynağa API çağrıları yapabilir. Örneğin, Azure OpenAI bağlantınız Microsoft Entra ID tabanlı kimlik doğrulaması kullanıyorsa, ilgili Azure OpenAI kaynaklarının uç nokta yönetilen kimliğine Cognitive Services OpenAI Kullanıcısı veya Bilişsel Hizmetler OpenAI Katkıda Bulunanı rolü vermeniz gerekir.

Kullanıcı tarafından atanan kimliği kullanma

Varsayılan olarak, çevrimiçi bir uç nokta oluşturduğunuzda sistem sizin için otomatik olarak sistem tarafından atanan bir yönetilen kimlik oluşturur. Uç nokta için kullanıcı tarafından atanan mevcut bir yönetilen kimlik de belirtebilirsiniz.

Kullanıcı tarafından atanan bir kimliği kullanmak için endpoint.yaml dosyasında aşağıdaki öznitelikleri belirtin:

identity:
  type: user_assigned
  user_assigned_identities:
    - resource_id: user_identity_ARM_id_place_holder

Ayrıca, aşağıdaki örnekte gösterildiği gibi, deployment.yaml dosyasında environment_variables altında kullanıcı tarafından atanan kimliğin Client ID değerini belirtin. Azure portalında yönetilen kimliğin Overview bölümünde Client ID öğesini bulabilirsiniz.

environment_variables:
  AZURE_CLIENT_ID: <client_id_of_your_user_assigned_identity>

Önemli

Çıkarım gerçekleştirmek üzere Azure kaynaklarına erişebilmesi için uç noktayı oluşturmadan önce kullanıcı tarafından atanan kimliğe aşağıdaki izinleri vermeniz gerekir. Daha fazla bilgi için bkz. uç nokta kimliğinize nasıl izin verileceği.

Kapsam Rolü Neden gereklidir?
Azure Machine Learning Çalışma Alanı Azure Machine Learning Çalışma Alanı Bağlantı Gizli Dizileri Okuyucusu rolü OR "Microsoft. MachineLearningServices/workspaces/connections/listsecrets/action" Çalışma alanı bağlantılarını alma
İş alanı konteyner kayıt deposu ACR çekme Konteyner görüntüsünü çek
Çalışma alanı varsayılan depolama alanı Depolama Blobu Veri Okuyucusu Modeli depolama alanından yükleme
(İsteğe bağlı) Azure Machine Learning Çalışma Alanı Çalışma alanı ölçümleri yazıcısı Uç noktayı dağıttıktan sonra, CPU/GPU/disk/bellek kullanımı gibi uç noktayla ilgili metrikleri izlemek istiyorsanız bu izni kimliğe vermeniz gerekir.

Dağıtımı tanımla

Dağıtım, gerçek çıkarım yapan modeli barındırmak için gereken bir kaynak kümesidir.

Aşağıdaki örnekte bir dağıtım tanımı gösterilmektedir. bölümü model kayıtlı akış modeline başvurur. Akış modeli yolunu da satır içinde belirtebilirsiniz.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: basic-chat-endpoint
model: azureml:basic-chat-model:1
  # You can also specify model files path inline
  # path: examples/flows/chat/basic-chat
environment: 
  image: mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
  # inference config is used to build a serving container for online deployments
  inference_config:
    liveness_route:
      path: /health
      port: 8080
    readiness_route:
      path: /health
      port: 8080
    scoring_route:
      path: /score
      port: 8080
instance_type: Standard_E16s_v3
instance_count: 1
environment_variables:
  # for pulling connections from workspace
  PRT_CONFIG_OVERRIDE: deployment.subscription_id=<subscription_id>,deployment.resource_group=<resource_group>,deployment.workspace_name=<workspace_name>,deployment.endpoint_name=<endpoint_name>,deployment.deployment_name=<deployment_name>

  # (Optional) When there are multiple fields in the response, using this env variable will filter the fields to expose in the response.
  # For example, if there are 2 flow outputs: "answer", "context", and I only want to have "answer" in the endpoint response, I can set this env variable to '["answer"]'.
  # If you don't set this environment, by default all flow outputs will be included in the endpoint response.
  # PROMPTFLOW_RESPONSE_INCLUDED_FIELDS: '["category", "evidence"]'
Öznitelik Açıklama
Adı Dağıtımın adı.
Uç nokta adı Dağıtımın oluşturulacağı uç noktanın adı.
Modeli Dağıtım için kullanılacak model. Bu değer, çalışma alanında mevcut bir sürüme sahip modelin referansı veya yerleşik model tanımı olabilir.
Ortam Modeli ve kodu barındıracak ortam. Şu içeriği içerir:
- image
- inference_config: , liveness routeve readiness_route gibi scoring_routeçevrimiçi dağıtımlar için bir sunum kapsayıcısı oluşturmak için kullanılır.
Örnek türü Dağıtım için kullanılacak VM boyutu. Desteklenen boyutların listesi için bkz. Yönetilen çevrimiçi uç noktalar SKU listesi.
Örnek sayısı Dağıtım için kullanılacak sunucu örneği sayısı. Değeri beklediğiniz iş yüküne dayandırın. Yüksek kullanılabilirlik için değerini en az 3olarak ayarlayın. Hizmet, yükseltmeleri gerçekleştirmek için fazladan 20% ayırır. Daha fazla bilgi için bkz. Çevrimiçi uç noktaların sınırları.
Ortam değişkenleri Bir akıştan dağıtılan uç noktalar için aşağıdaki ortam değişkenlerini ayarlayın:
- (gerekli) PRT_CONFIG_OVERRIDE: çalışma alanından bağlantı çekmek için
- (isteğe bağlı) PROMPTFLOW_RESPONSE_INCLUDED_FIELDS:: Yanıtta birden çok alan olduğunda, bu env değişkenini kullanarak alanları yanıtta kullanıma sunma amacıyla filtreler.
Örneğin, iki akış çıkışı varsa: "answer", "context" ve yalnızca uç nokta yanıtında "answer" olmasını istiyorsanız, bu env değişkenini '["answer"]' olarak ayarlayabilirsiniz.

Önemli

Akış klasörünüzde akışı yürütmek için gereken bağımlılıkları içeren bir requirements.txt dosya varsa, bağımlılıklar dahil olmak üzere özel ortamı oluşturmak için özel bir ortamla dağıtma adımlarını izleyin.

Bir Kubernetes çevrimiçi dağıtımı oluşturursanız aşağıdaki öznitelikleri belirtin:

Öznitelik Açıklama
Türü Dağıtımın türü. değerini olarak kubernetesayarlayın.
Örnek türü Dağıtım için kullanılacak Kubernetes kümenizde oluşturduğunuz örnek türü. Dağıtımın istek ve limit hesaplama kaynaklarını temsil eder. Daha fazla ayrıntı için bkz. Örnek türünü oluşturma ve yönetme.

Çevrimiçi uç noktanızı Azure'a dağıtın

Uç noktayı bulutta oluşturmak için aşağıdaki kodu çalıştırın:

az ml online-endpoint create --file endpoint.yml

Uç noktanın altında adlı blue dağıtımı oluşturmak için aşağıdaki kodu çalıştırın:

az ml online-deployment create --file blue-deployment.yml --all-traffic

Not

Bu dağıtım 15 dakikadan uzun sürebilir.

Ipucu

CLI konsolunuzu engellememeyi tercih ediyorsanız, komuta --no-wait bayrağını ekleyin. Ancak, bu bayrak dağıtım durumunun etkileşimli görünümünü durdurur.

Önemli

Önceki az ml online-deployment create komutundaki --all-traffic bayrağı, uç nokta trafiğinin %100'ünü yeni oluşturulan blue dağıtımına yönlendirir. Bu ayırma, geliştirme ve test amacıyla yararlı olsa da, üretim için yeni dağıtıma yönelik trafiği açık bir komutla açmak isteyebilirsiniz. Örneğin, az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Uç noktanın ve dağıtımın durumunu denetleme

Uç noktanın durumunu denetlemek için aşağıdaki kodu çalıştırın:

az ml online-endpoint show -n basic-chat-endpoint

Dağıtımın durumunu denetlemek için aşağıdaki kodu çalıştırın:

az ml online-deployment get-logs --name blue --endpoint basic-chat-endpoint

Modelinizi kullanarak verileri puanlamak için uç noktayı çağırın

sample-request.json Dosya oluşturma:

{
  "question": "What is Azure Machine Learning?",
  "chat_history":  []
}
az ml online-endpoint invoke --name basic-chat-endpoint --request-file sample-request.json

Uç noktayı, gibi curlbir HTTP istemcisi kullanarak da çağırabilirsiniz:

ENDPOINT_KEY=<your-endpoint-key>
ENDPOINT_URI=<your-endpoint-uri>

curl --request POST "$ENDPOINT_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data '{"question": "What is Azure Machine Learning?", "chat_history":  []}'

Azure Machine Learning çalışma alanındaki Endpoints>Kullan>Temel kullanım bilgileri bölümünden uç nokta anahtarınızı ve uç nokta URI'nizi alın.

Gelişmiş yapılandırmalar

Akış geliştirmeden farklı bağlantılarla dağıtma

Dağıtım sırasında akış bağlantılarını değiştirmek isteyebilirsiniz.

Örneğin, flow.dag.yaml dosyanız adlı my_connectionbir bağlantı kullanıyorsa, dağıtım yaml'sinin ortam değişkenlerini aşağıdaki gibi ekleyerek geçersiz kılabilirsiniz:

1. Seçenek: bağlantı adını geçersiz kılma

environment_variables:
  my_connection: <override_connection_name>

Bağlantının belirli bir alanını geçersiz kılmak istiyorsanız, adlandırma düzenine <connection_name>_<field_name>sahip ortam değişkenleri ekleyerek geçersiz kılabilirsiniz. Örneğin, akışınız my_connection adlı bir bağlantı ve chat_deployment_name adlı bir yapılandırma anahtarı kullanıyorsa, hizmet veren arka uç varsayılan olarak chat_deployment_name öğesini 'MY_CONNECTION_CHAT_DEPLOYMENT_NAME' ortam değişkeninden almaya çalışır. Ortam değişkeni ayarlanmadıysa akış tanımındaki özgün değeri kullanır.

Seçenek 2: varlığa referans vererek geçersiz kılma

environment_variables:
  my_connection: ${{azureml://connections/<override_connection_name>}}

Not

Yalnızca aynı çalışma alanı içindeki bir bağlantıya başvurabilirsiniz.

Özel bir ortamla dağıtma

Bu bölümde Docker ve Azure Machine Learning ortamları hakkında bilginiz olduğu varsayılarak dağıtımınız için ortamı belirtmek üzere Docker derleme bağlamının nasıl kullanılacağı gösterilmektedir.

  1. Yerel ortamınızda, aşağıdaki dosyaları içeren adlı image_build_with_reqirements bir klasör oluşturun:

    |--image_build_with_reqirements
    |  |--requirements.txt
    |  |--Dockerfile
    
    • requirements.txt Akış klasöründen devralınan dosya, akışın bağımlılıklarını izler.

    • Dockerfile ile içeriği aşağıdaki örneğe benzer:

      FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
      COPY ./requirements.txt .
      RUN pip install -r requirements.txt
      
  2. DAĞıTıM tanımı YAML dosyasındaki ortam bölümünü aşağıdaki içerikle değiştirin:

    environment: 
      build:
        path: image_build_with_reqirements
        dockerfile_path: Dockerfile
      # deploy prompt flow is BYOC, so we need to specify the inference config
      inference_config:
        liveness_route:
          path: /health
          port: 8080
        readiness_route:
          path: /health
          port: 8080
        scoring_route:
          path: /score
          port: 8080
    

FastAPI sunum altyapısını kullanma (önizleme)

Varsayılan olarak, prompt flow sunucusu FLASK altyapısını kullanır. İstem akışı SDK'sı sürüm 1.10.0'dan başlayarak, FastAPI tabanlı sunum altyapısı desteklenir. fastapisunum motorunu, PROMPTFLOW_SERVING_ENGINEbir ortam değişkenini belirterek kullanabilirsiniz.

environment_variables:
  PROMPTFLOW_SERVING_ENGINE=fastapi

Dağıtım için eşzamanlılığı yapılandırma

Akışınızı çevrimiçi dağıtıma dağıttığınızda eşzamanlılık için iki ortam değişkeni yapılandırın: PROMPTFLOW_WORKER_NUM ve PROMPTFLOW_WORKER_THREADS. max_concurrent_requests_per_instance parametresini de ayarlamanız gerekir.

Aşağıdaki örnek, bu ayarların deployment.yaml dosyasında nasıl yapılandırılacağını gösterir.

request_settings:
  max_concurrent_requests_per_instance: 10
environment_variables:
  PROMPTFLOW_WORKER_NUM: 4
  PROMPTFLOW_WORKER_THREADS: 1
  • PROMPTFLOW_WORKER_NUM: Bu parametre, bir kapsayıcıda başlayan çalışan sayısını (işlem) ayarlar. Varsayılan değer CPU çekirdeği sayısına eşittir ve maksimum değer CPU çekirdeği sayısının iki katıdır.

  • PROMPTFLOW_WORKER_THREADS: Bu parametre, bir çalışanda başlayan iş parçacığı sayısını ayarlar. Varsayılan değer 1'dir.

    Not

    PROMPTFLOW_WORKER_THREADS öğesini 1'den büyük bir değere ayarladığınızda, akış kodunuzun iş parçacığı güvenli olduğundan emin olun.

  • max_concurrent_requests_per_instance: Dağıtım için izin verilen örnek başına en fazla eşzamanlı istek sayısı. Varsayılan değer 10'dur.

    için max_concurrent_requests_per_instance önerilen değer, istek sürenize bağlıdır:

    • İstek süreniz 200 ms'den uzunsa max_concurrent_requests_per_instance'u PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS olarak ayarlayın.
    • İstek süreniz 200 ms veya daha az olduğunda, max_concurrent_requests_per_instance öğesini (1.5-2) * PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS olarak ayarlayın. Bu ayar, bazı isteklerin sunucu tarafında kuyruğa alınabilmesini sağlayarak toplam aktarım hızını iyileştirebilir.
    • Bölgeler arası istekler gönderiyorsanız eşiği 200 ms'den 1 sn'ye değiştirebilirsiniz.

Bu parametreleri ayarlarken en iyi performansı ve kararlılığı sağlamak için aşağıdaki ölçümleri izleyin:

  • Bu dağıtım için örnek CPU ve bellek kullanımı
  • 200 dışı yanıtlar (4xx, 5xx)
    • 429 yanıtı alırsanız, bu durum kodu genellikle önceki kılavuzu izleyerek eşzamanlılık ayarlarınızı yeniden hazırlamanız veya dağıtımınızı ölçeklendirmeniz gerektiğini gösterir.
  • Azure OpenAI hız sınırlama durumu

Uç noktaları izleme

Genel ölçümleri toplama

Çevrimiçi dağıtımın genel ölçümlerini (istek numaraları, istek gecikme süresi, ağ baytları, CPU/GPU/Disk/Bellek kullanımı ve daha fazlası) görüntüleyebilirsiniz.

Çıkarım zamanında izleme verilerini ve sistem ölçümlerini toplama

Dağıtım YAML dosyasına app_insights_enabled: true özelliğini ekleyerek, çıkarım sırasında izleme verilerini ve istem akışı dağıtımına özgü ölçümleri (belirteç tüketimi, akış gecikmesi ve daha fazlası) çalışma alanına bağlı Application Insights'ta toplayabilirsiniz. Daha fazla bilgi için bkz. prompt flow dağıtımının izleme ve ölçümleri.

İstem akışına özgü ölçümler belirtebilir ve çalışma alanı bağlantılı ölçüm yerine diğer Application Insights'a izleyebilirsiniz. Dağıtım yaml dosyasında aşağıdaki gibi bir ortam değişkeni belirtebilirsiniz. Azure portalındaki Genel Bakış sayfasında, sizin Application Insights bağlantı dizginizi bulabilirsiniz.

environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Not

Yalnızca app_insights_enabled: true öğesini ayarlarsanız, ancak çalışma alanınızda bağlantılı bir Application Insights yoksa, dağıtımınız başarısız olmaz ancak hiç veri toplanmaz. app_insights_enabled: true ile önceki ortam değişkeninin her ikisini de aynı anda belirtirseniz, izleme verileri ve ölçümler çalışma alanına bağlı olan Application Insights'a gönderilir. Farklı bir Application Insights belirtmek için yalnızca ortam değişkenini koruyun.

Yaygın hatalar

Uç nokta tüketilirken üst akış isteği zaman aşımı sorunu

Bu hata genellikle zaman aşımı nedeniyle oluşur. Varsayılan olarak request_timeout_ms , değer 5.000 milisaniyedir. 300.000 milisaniye olan 5 dakikaya kadar ayarlayabilirsiniz. Aşağıdaki örnek, dağıtım YAML dosyasında istek zaman aşımının nasıl belirtileceğini gösterir. Dağıtım şeması hakkında daha fazla bilgi için bkz. Yönetilen çevrimiçi dağıtım şeması.

request_settings:
  request_timeout_ms: 300000

Önemli

300.000 ms zaman aşımı yalnızca istem akışından yönetilen çevrimiçi dağıtımlar için çalışır. İstem dışı akışla yönetilen çevrimiçi uç nokta için en fazla zaman aşımı 180 saniyedir.

Bu dağıtımın istem akışından geldiğini belirtmek için modelinizin özelliklerini aşağıdaki gibi ekleyin (dağıtım YAML'sinde satır içi model belirtimi veya tek başına model belirtimi YAML).

properties:
  # indicate a deployment from prompt flow
  azureml.promptflow.source_flow_id: <value>

Sonraki adımlar