Udostępnij za pośrednictwem


Wdrażanie przepływu w punkcie końcowym online na potrzeby wnioskowania w czasie rzeczywistym przy użyciu interfejsu wiersza polecenia

W tym artykule dowiesz się, jak wdrożyć przepływ w zarządzanym punkcie końcowym online lub punkcie końcowym online platformy Kubernetes do użycia w wnioskowaniu w czasie rzeczywistym za pomocą interfejsu wiersza polecenia usługi Azure Machine Learning w wersji 2.

Przed rozpoczęciem upewnij się, że przepływ został prawidłowo przetestowany i upewnij się, że jest gotowy do wdrożenia w środowisku produkcyjnym. Aby dowiedzieć się więcej na temat testowania przepływu, zobacz Testowanie przepływu. Po przetestowaniu przepływu dowiesz się, jak utworzyć zarządzany punkt końcowy online i wdrożenie oraz jak używać punktu końcowego do wnioskowania w czasie rzeczywistym.

  • W tym artykule opisano sposób korzystania ze środowiska interfejsu wiersza polecenia.
  • Zestaw SDK języka Python nie został omówiony w tym artykule. Zamiast tego zobacz przykładowy notes usługi GitHub. Aby korzystać z zestawu SDK języka Python, musisz mieć zestaw PYTHON SDK w wersji 2 dla usługi Azure Machine Learning. Aby dowiedzieć się więcej, zobacz Instalowanie zestawu PYTHON SDK w wersji 2 dla usługi Azure Machine Learning.

Ważne

Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Wymagania wstępne

  • Interfejs wiersza polecenia platformy Azure i rozszerzenie usługi Azure Machine Learning do interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).
  • Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć.
  • Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, twoje konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/". Jeśli używasz programu Studio do tworzenia/zarządzania punktami końcowymi/wdrożeniami online, musisz mieć dodatkowe uprawnienie "Microsoft.Resources/deployments/write" od właściciela grupy zasobów. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.

Uwaga

Zarządzany punkt końcowy online obsługuje tylko zarządzaną sieć wirtualną. Jeśli obszar roboczy znajduje się w niestandardowej sieci wirtualnej, możesz wdrożyć w punkcie końcowym online platformy Kubernetes lub wdrożyć go na innych platformach, takich jak Platforma Docker.

Alokacja przydziału maszyny wirtualnej na potrzeby wdrożenia

W przypadku zarządzanych punktów końcowych online usługa Azure Machine Learning rezerwuje 20% zasobów obliczeniowych na potrzeby przeprowadzania uaktualnień. W związku z tym, jeśli zażądasz określonej liczby wystąpień we wdrożeniu, musisz mieć limit przydziału ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU , aby uniknąć wystąpienia błędu. Jeśli na przykład zażądasz 10 wystąpień maszyny wirtualnej Standard_DS3_v2 (która jest dostarczana z czterema rdzeniami) we wdrożeniu, musisz mieć limit przydziału dla 48 rdzeni (12 wystąpień z czterema rdzeniami). Aby wyświetlić wzrost użycia i limitu przydziału żądań, zobacz Wyświetlanie użycia i limitów przydziału w witrynie Azure Portal.

Przygotowanie przepływu do wdrożenia

Każdy przepływ będzie miał folder zawierający kody/monity, definicję i inne artefakty przepływu. Jeśli przepływ został opracowany za pomocą interfejsu użytkownika, możesz pobrać folder przepływu ze strony szczegółów przepływu. Jeśli przepływ został opracowany za pomocą interfejsu wiersza polecenia lub zestawu SDK, powinien już znajdować się folder przepływu.

W tym artykule użyto przykładowego przepływu "basic-chat" jako przykładu do wdrożenia w zarządzanym punkcie końcowym online usługi Azure Machine Learning.

Ważne

Jeśli korzystasz z additional_includes przepływu, musisz najpierw użyć pf flow build --source <path-to-flow> --output <output-path> --format docker polecenia , aby uzyskać rozpoznaną wersję folderu przepływu.

Ustawianie domyślnego obszaru roboczego

Użyj następujących poleceń, aby ustawić domyślny obszar roboczy i grupę zasobów dla interfejsu wiersza polecenia.

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

Rejestrowanie przepływu jako modelu (opcjonalnie)

We wdrożeniu online można odwołać się do zarejestrowanego modelu lub określić ścieżkę modelu (gdzie przekazać pliki modelu) w tekście. Zaleca się zarejestrowanie modelu i określenie nazwy i wersji modelu w definicji wdrożenia. Użyj formularza model:<model_name>:<version>.

Poniżej przedstawiono przykład definicji modelu dla przepływu czatu.

Uwaga

Jeśli przepływ nie jest przepływem czatu, nie musisz dodawać tych propertieselementów.

$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

Użyj az ml model create --file model.yaml polecenia , aby zarejestrować model w obszarze roboczym.

Definiowanie punktu końcowego

Aby zdefiniować punkt końcowy, należy określić:

  • Nazwa punktu końcowego: nazwa punktu końcowego. Musi być unikatowa w regionie świadczenia usługi Azure. Aby uzyskać więcej informacji na temat reguł nazewnictwa, zobacz Limity punktów końcowych.
  • Tryb uwierzytelniania: metoda uwierzytelniania dla punktu końcowego. Wybierz uwierzytelnianie oparte na kluczach i uwierzytelnianie oparte na tokenach usługi Azure Machine Learning. Klucz nie wygasa, ale token wygasa. Aby uzyskać więcej informacji na temat uwierzytelniania, zobacz Uwierzytelnianie w punkcie końcowym online. Opcjonalnie możesz dodać opis i tagi do punktu końcowego.
  • Opcjonalnie możesz dodać opis i tagi do punktu końcowego.
  • Jeśli chcesz wdrożyć go w klastrze Kubernetes (klastrze z obsługą usługi AKS lub arc), który jest dołączany do obszaru roboczego, możesz wdrożyć przepływ jako punkt końcowy online rozwiązania Kubernetes.

Poniżej znajduje się przykład definicji punktu końcowego, który domyślnie używa tożsamości przypisanej przez system.

$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
Key opis
$schema (Opcjonalnie) Schemat YAML. Aby wyświetlić wszystkie dostępne opcje w pliku YAML, możesz wyświetlić schemat w poprzednim fragmencie kodu w przeglądarce.
name Nazwa punktu końcowego.
auth_mode Służy key do uwierzytelniania opartego na kluczach. Służy aml_token do uwierzytelniania opartego na tokenach usługi Azure Machine Learning. Aby uzyskać najnowszy token, użyj az ml online-endpoint get-credentials polecenia .
property: enforce_access_to_default_secret_stores (wersja zapoznawcza) — Domyślnie punkt końcowy będzie używać tożsamości system-asigned. Ta właściwość działa tylko dla tożsamości przypisanej przez system.
— Ta właściwość oznacza, że jeśli masz uprawnienie czytelnika wpisów tajnych połączenia, tożsamość przypisana przez system punktu końcowego będzie automatycznie przypisywana przez czytelnika wpisów tajnych połączenia obszaru roboczego usługi Azure Machine Learning, aby punkt końcowy mógł prawidłowo uzyskiwać dostęp do połączeń podczas wnioskowania.
- Domyślnie ta właściwość jest "wyłączona".

Jeśli tworzysz punkt końcowy online platformy Kubernetes, musisz określić następujące dodatkowe atrybuty:

Key opis
compute Docelowy obiekt obliczeniowy platformy Kubernetes w celu wdrożenia punktu końcowego.

Aby uzyskać więcej konfiguracji punktu końcowego, zobacz Zarządzany schemat punktu końcowego online.

Ważne

Jeśli przepływ używa połączeń uwierzytelniania opartych na identyfikatorze Entra firmy Microsoft, niezależnie od tego, czy używasz tożsamości przypisanej przez system, czy tożsamości przypisanej przez użytkownika, zawsze musisz przyznać tożsamości zarządzanej odpowiednie role odpowiednich zasobów, aby można było wykonywać wywołania interfejsu API do tego zasobu. Jeśli na przykład połączenie usługi Azure OpenAI korzysta z uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft, musisz udzielić tożsamości zarządzanej punktu końcowego użytkownikowi openAI usług Cognitive Services lub roli współautora usługi Cognitive Services OpenAI odpowiednich zasobów usługi Azure OpenAI.

Korzystanie z tożsamości przypisanej przez użytkownika

Domyślnie podczas tworzenia punktu końcowego online tożsamość zarządzana przypisana przez system jest automatycznie generowana. Możesz również określić istniejącą tożsamość zarządzaną przypisaną przez użytkownika dla punktu końcowego.

Jeśli chcesz użyć tożsamości przypisanej przez użytkownika, możesz określić następujące dodatkowe atrybuty w pliku endpoint.yaml:

identity:
  type: user_assigned
  user_assigned_identities:
    - resource_id: user_identity_ARM_id_place_holder

Oprócz tego należy również określić Client ID tożsamość przypisaną przez użytkownika w environment_variables deployment.yaml następujący sposób. Element w tożsamości zarządzanej można znaleźć Client ID w Overview witrynie Azure Portal.

environment_variables:
  AZURE_CLIENT_ID: <client_id_of_your_user_assigned_identity>

Ważne

Przed utworzeniem punktu końcowego należy przyznać następujące uprawnienia tożsamości przypisanej przez użytkownika, aby umożliwić dostęp do zasobów platformy Azure w celu przeprowadzenia wnioskowania. Dowiedz się więcej na temat udzielania uprawnień tożsamości punktu końcowego.

Scope Rola Dlaczego jest to potrzebne
Obszar roboczy usługi Azure Machine Learning Rola czytelnika wpisów tajnych połączenia z obszarem roboczym usługi Azure Machine Learning LUB niestandardowa rola z „Microsoft.Machine Edukacja Services/workspaces/connections/listsecrets/action" Pobieranie połączeń obszaru roboczego
Rejestr kontenerów obszaru roboczego Ściąganie ACR Ściąganie obrazu kontenera
Domyślny magazyn obszaru roboczego Czytelnik danych obiektu blob usługi Storage Ładowanie modelu z magazynu
(Opcjonalnie) Obszar roboczy usługi Azure Machine Learning Składnik zapisywania metryk obszaru roboczego Po wdrożeniu punktu końcowego, jeśli chcesz monitorować metryki związane z punktem końcowym, takie jak użycie procesora CPU / procesora GPU / dysku / pamięci, musisz nadać tej tożsamości uprawnienie.

Definiowanie wdrożenia

Wdrożenie to zestaw zasobów wymaganych do hostowania modelu, który wykonuje rzeczywiste wnioskowanie.

Poniżej przedstawiono przykład definicji wdrożenia, w którym model sekcja odwołuje się do zarejestrowanego modelu przepływu. Możesz również określić ścieżkę modelu przepływu w wierszu.

$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:

  # "compute" mode is the default mode, if you want to deploy to serving mode, you need to set this env variable to "serving"
  PROMPTFLOW_RUN_MODE: serving

  # 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"]'
Atrybut Opis
Nazwa/nazwisko Nazwa wdrożenia.
Nazwa punktu końcowego Nazwa punktu końcowego do utworzenia wdrożenia w obszarze.
Model Model do użycia na potrzeby wdrożenia. Ta wartość może być odwołaniem do istniejącego modelu w wersji w obszarze roboczym lub specyfikacji wbudowanego modelu.
Środowisko Środowisko do hostowania modelu i kodu. Zawiera on następujące elementy:
- image
- inference_config: służy do tworzenia kontenera obsługującego na potrzeby wdrożeń online, w tym liveness route, readiness_routei scoring_route .
Typ wystąpienia Rozmiar maszyny wirtualnej do użycia na potrzeby wdrożenia. Aby uzyskać listę obsługiwanych rozmiarów, zobacz Lista jednostek SKU zarządzanych punktów końcowych online.
Liczba wystąpień Liczba wystąpień do użycia na potrzeby wdrożenia. W oparciu o oczekiwaną wartość obciążenia. W przypadku wysokiej dostępności zalecamy ustawienie wartości na wartość co najmniej 3. Firma Microsoft zastrzega sobie dodatkowe 20% na potrzeby przeprowadzania uaktualnień. Aby uzyskać więcej informacji, zobacz limity punktów końcowych online.
Zmienne środowiskowe Następujące zmienne środowiskowe należy ustawić dla punktów końcowych wdrożonych z przepływu:
- (wymagane) PROMPTFLOW_RUN_MODE: serving: określ tryb obsługi
- (wymagane) PRT_CONFIG_OVERRIDE: na potrzeby ściągania połączeń z obszaru roboczego
- (opcjonalnie) PROMPTFLOW_RESPONSE_INCLUDED_FIELDS:: Jeśli w odpowiedzi znajduje się wiele pól, użycie tej zmiennej env spowoduje filtrowanie pól w celu uwidocznienia w odpowiedzi.
Jeśli na przykład istnieją dwa dane wyjściowe przepływu: "answer", "context" i jeśli chcesz tylko mieć "odpowiedź" w odpowiedzi punktu końcowego, możesz ustawić tę zmienną env na "["answer"]".

Ważne

Jeśli folder przepływu zawiera requirements.txt plik zawierający zależności wymagane do wykonania przepływu, należy wykonać wdrożenie za pomocą niestandardowych kroków środowiska, aby skompilować środowisko niestandardowe, w tym zależności.

Jeśli tworzysz wdrożenie online platformy Kubernetes, musisz określić następujące dodatkowe atrybuty:

Atrybut opis
Type Typ wdrożenia. Ustaw wartość na kubernetes.
Typ wystąpienia Typ wystąpienia utworzony w klastrze kubernetes do użycia na potrzeby wdrożenia reprezentuje zasób obliczeniowy żądania/limitu wdrożenia. Aby uzyskać więcej szczegółów, zobacz Tworzenie typu wystąpienia i zarządzanie nim.

Wdrażanie punktu końcowego online na platformie Azure

Aby utworzyć punkt końcowy w chmurze, uruchom następujący kod:

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

Aby utworzyć wdrożenie o nazwie blue w punkcie końcowym, uruchom następujący kod:

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

Uwaga

To wdrożenie może potrwać ponad 15 minut.

Napiwek

Jeśli nie chcesz blokować konsoli interfejsu wiersza polecenia, możesz dodać flagę --no-wait do polecenia . Spowoduje to jednak zatrzymanie interaktywnego wyświetlania stanu wdrożenia.

Ważne

Flaga --all-traffic w powyższym az ml online-deployment create obiekcie przydziela 100% ruchu punktu końcowego do nowo utworzonego niebieskiego wdrożenia. Chociaż jest to przydatne w celach programistycznych i testowych, w środowisku produkcyjnym warto otworzyć ruch do nowego wdrożenia za pomocą jawnego polecenia. Na przykład az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Sprawdzanie stanu punktu końcowego i wdrożenia

Aby sprawdzić stan punktu końcowego, uruchom następujący kod:

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

Aby sprawdzić stan wdrożenia, uruchom następujący kod:

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

Wywoływanie punktu końcowego w celu oceny danych przy użyciu modelu

Możesz utworzyć plik sample-request.json w następujący sposób:

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

Można go również wywołać za pomocą klienta HTTP, na przykład za pomocą narzędzia curl:

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":  []}'

Klucz punktu końcowego i identyfikator URI punktu końcowego można uzyskać z obszaru roboczego usługi Azure Machine Learning w obszarze Punkty końcoweUużyj>>podstawowe informacje o użyciu.

Konfiguracje zaawansowane

Wdrażanie przy użyciu różnych połączeń z programowania przepływów

Podczas wdrażania warto zastąpić połączenia przepływu.

Jeśli na przykład plik flow.dag.yaml używa połączenia o nazwie my_connection, możesz go zastąpić, dodając zmienne środowiskowe pliku yaml wdrożenia w następujący sposób:

Opcja 1. Zastępowanie nazwy połączenia

environment_variables:
  my_connection: <override_connection_name>

Jeśli chcesz zastąpić określone pole połączenia, możesz zastąpić, dodając zmienne środowiskowe ze wzorcem <connection_name>_<field_name>nazewnictwa . Jeśli na przykład przepływ używa połączenia o nazwie my_connection z kluczem konfiguracji o nazwie chat_deployment_name, zaplecze obsługujące podejmie próbę pobrania chat_deployment_name ze zmiennej środowiskowej "MY_CONNECTION_CHAT_DEPLOYMENT_NAME" domyślnie. Jeśli zmienna środowiskowa nie jest ustawiona, użyje oryginalnej wartości z definicji przepływu.

Opcja 2: przesłonięcia przez odwołanie do elementu zawartości

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

Uwaga

Możesz odwołać się tylko do połączenia w tym samym obszarze roboczym.

Wdrażanie przy użyciu środowiska niestandardowego

W tej sekcji pokazano, jak używać kontekstu kompilacji platformy Docker do określania środowiska wdrożenia, przy założeniu, że masz wiedzę na temat środowisk Docker i Azure Machine Learning.

  1. W środowisku lokalnym utwórz folder o nazwie image_build_with_reqirements zawierający następujące pliki:

    |--image_build_with_reqirements
    |  |--requirements.txt
    |  |--Dockerfile
    
    • Element requirements.txt powinien być dziedziczony z folderu przepływu, który został użyty do śledzenia zależności przepływu.

    • Zawartość jest następująca Dockerfile :

      FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
      COPY ./requirements.txt .
      RUN pip install -r requirements.txt
      
  2. Zastąp sekcję środowiska w pliku yaml definicji wdrożenia następującą zawartością:

    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
    

Korzystanie z aparatu obsługującego interfejs FastAPI (wersja zapoznawcza)

Domyślnie obsługa przepływu monitu korzysta z aparatu obsługi platformy FLASK. Począwszy od zestawu SDK przepływu monitu w wersji 1.10.0, obsługiwany jest aparat obsługi oparty na interfejsie FastAPI. Aparat obsługi można użyć fastapi , określając zmienną środowiskową PROMPTFLOW_SERVING_ENGINE.

environment_variables:
  PROMPTFLOW_SERVING_ENGINE=fastapi

Konfigurowanie współbieżności na potrzeby wdrożenia

Podczas wdrażania przepływu we wdrożeniu online istnieją dwie zmienne środowiskowe, które można skonfigurować pod kątem współbieżności: PROMPTFLOW_WORKER_NUM i PROMPTFLOW_WORKER_THREADS. Oprócz tego należy również ustawić max_concurrent_requests_per_instance parametr .

Poniżej przedstawiono przykład sposobu konfigurowania deployment.yaml w pliku.

request_settings:
  max_concurrent_requests_per_instance: 10
environment_variables:
  PROMPTFLOW_WORKER_NUM: 4
  PROMPTFLOW_WORKER_THREADS: 1
  • PROMPTFLOW_WORKER_NUM: ten parametr określa liczbę procesów roboczych, które zostaną uruchomione w jednym kontenerze. Wartość domyślna jest równa liczbie rdzeni procesora CPU, a maksymalna wartość jest dwukrotnie większa niż liczba rdzeni procesora CPU.

  • PROMPTFLOW_WORKER_THREADS: ten parametr określa liczbę wątków, które zostaną uruchomione w jednym procesu roboczego. Domyślna wartość wynosi 1.

    Uwaga

    W przypadku ustawienia PROMPTFLOW_WORKER_THREADS wartości większej niż 1 upewnij się, że kod przepływu jest bezpieczny wątkowo.

  • max_concurrent_requests_per_instance: maksymalna liczba współbieżnych żądań na wystąpienie dozwolone dla wdrożenia. Wartość domyślna to 10.

    Sugerowana wartość parametru max_concurrent_requests_per_instance zależy od czasu żądania:

    • Jeśli czas żądania jest większy niż 200 ms, ustaw wartość max_concurrent_requests_per_instance PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS.
    • Jeśli czas żądania jest krótszy lub równy 200 ms, ustaw wartość max_concurrent_requests_per_instance (1.5-2) * PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS. Może to zwiększyć łączną przepływność, zezwalając na kolejkowanie niektórych żądań po stronie serwera.
    • Jeśli wysyłasz żądania między regionami, możesz zmienić próg z 200 ms na 1 s.

Podczas dostrajania powyższych parametrów należy monitorować następujące metryki, aby zapewnić optymalną wydajność i stabilność:

  • Użycie procesora CPU/pamięci wystąpienia dla tego wdrożenia
  • Odpowiedzi inne niż 200 (4xx, 5xx)
    • Jeśli otrzymasz odpowiedź 429, zazwyczaj oznacza to, że należy ponownie dostroić ustawienia współbieżności zgodnie z powyższym przewodnikiem lub przeskalować wdrożenie.
  • Stan ograniczania usługi Azure OpenAI

Monitorowanie punktów końcowych

Zbieranie ogólnych metryk

Możesz wyświetlić ogólne metryki wdrożenia online (numery żądań, opóźnienie żądań, bajty sieciowe, procesor CPU/procesor GPU/dysk/pamięć itp.).

Zbieranie danych śledzenia i metryk systemowych podczas wnioskowania

Możesz również zbierać dane śledzenia i metryki specyficzne dla wdrożenia przepływu monitu (użycie tokenu, opóźnienie przepływu itp.) podczas wnioskowania do obszaru roboczego połączonego z usługą Application Insights, dodając właściwość app_insights_enabled: true w pliku yaml wdrożenia. Dowiedz się więcej o śledzeniu i metrykach wdrażania przepływu monitów.

Metryki i ślady dotyczące przepływu monitu można określić do innych usług Application Insights innych niż połączony obszar roboczy. Zmienną środowiskową można określić w pliku yaml wdrożenia w następujący sposób. Parametry połączenia usługi Application Insights można znaleźć na stronie Przegląd w witrynie Azure Portal.

environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Uwaga

Jeśli ustawisz app_insights_enabled: true tylko obszar roboczy, ale nie masz połączonej usługi Application Insights, wdrożenie nie zakończy się niepowodzeniem, ale nie będą zbierane żadne dane. Jeśli jednocześnie określisz zarówno zmienną środowiskową, jak app_insights_enabled: true i powyższą, dane śledzenia i metryki zostaną wysłane do połączonego obszaru roboczego usługi Application Insights. W związku z tym, jeśli chcesz określić inną usługę Application Insights, musisz zachować zmienną środowiskową.

Typowe błędy

Problem z przekroczeniem limitu czasu żądania nadrzędnego podczas korzystania z punktu końcowego

Taki błąd jest zwykle spowodowany przekroczeniem limitu czasu. Domyślnie wartość to request_timeout_ms 5000. Można określić maksymalnie 5 minut, czyli 300 000 ms. Poniżej przedstawiono przykład pokazujący sposób określania limitu czasu żądania w pliku yaml wdrożenia. Dowiedz się więcej o schemacie wdrażania tutaj.

request_settings:
  request_timeout_ms: 300000

Uwaga

Limit czasu 300 000 ms działa tylko dla wdrożeń online z monitu. Aby wskazać, że jest to wdrożenie z przepływu monitów, musisz upewnić się, że dodano właściwości dla modelu zgodnie z poniższym opisem (specyfikacją modelu wbudowanego w pliku yaml wdrożenia lub specyfikacją autonomicznego modelu).

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

Następne kroki