Bereitstellen eines Flows für einen Onlineendpunkt für Rückschlüsse in Echtzeit mit der CLI
In diesem Artikel erfahren Sie, wie Sie Ihren Flow für einen verwalteten Onlineendpunkt oder einen Kubernetes-Onlineendpunkt für die Verwendung in Echtzeitrückschlüssen mit der Azure Machine Learning CLI v2 bereitstellen.
Stellen Sie zunächst sicher, dass Sie Ihren Flow ordnungsgemäß getestet haben und davon überzeugt sind, dass er für die Bereitstellung in der Produktion bereit ist. Weitere Informationen zum Testen Ihres Flows finden Sie unter Testen Ihres Flows. Nach dem Testen Ihres Flows erfahren Sie, wie Sie einen verwalteten Onlineendpunkt und die Bereitstellung erstellen und wie Sie den Endpunkt für Echtzeitrückschlüsse verwenden.
- In diesem Artikel wird beschrieben, wie Sie die CLI-Umgebung verwenden.
- Das Python SDK wird in diesem Artikel nicht behandelt. Sehen Sie sich stattdessen das GitHub-Beispielnotebook an. Um das Python SDK verwenden zu können, benötigen Sie das Python SDK v2 für Azure Machine Learning. Weitere Informationen finden Sie unter Installieren des Python SDK v2 für Azure Machine Learning.
Wichtig
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Die Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Voraussetzungen
- Die Azure CLI und die Azure Machine Learning-Erweiterung für die Azure CLI. Weitere Informationen finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2).
- Ein Azure Machine Learning-Arbeitsbereich. Wenn keiner vorliegt, führen Sie die Schritte unter Schnellstart: Erstellen von Arbeitsbereichsressourcen aus, um einen Arbeitsbereich zu erstellen.
- Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihrem Benutzerkonto die Rolle „Besitzer“ oder „Mitwirkender“ für den Azure Machine Learning-Arbeitsbereich bzw. eine benutzerdefinierte Rolle zugewiesen werden, die „Microsoft.MachineLearningServices/workspaces/onlineEndpoints/“ zulässt. Wenn Sie Studio zum Erstellen/Verwalten von Online-Endpunkten/Einsätzen verwenden, benötigen Sie eine zusätzliche Berechtigung „Microsoft.Resources/deployments/write“ vom Eigentümer der Ressourcengruppe. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.
Hinweis
Verwaltete Onlineendpunkte unterstützten nur verwaltete virtuelle Netzwerke. Wenn sich Ihr Arbeitsbereich in einem benutzerdefinierten VNet befindet, können Sie den Kubernetes-Onlineendpunkt bereitstellen oder auf anderen Plattformen wie Docker bereitstellen.
Kontingentzuordnung für virtuelle Computer für die Bereitstellung
Für verwaltete Onlineendpunkte reserviert Azure Machine Learning 20 % Ihrer Computeressourcen für die Durchführung von Upgrades. Wenn Sie also eine bestimmte Anzahl von Instanzen in einer Bereitstellung anfordern, müssen Sie über ein Kontingent für ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU
verfügen, um zu verhindern, dass Sie einen Fehler erhalten. Wenn Sie beispielsweise zehn Instanzen einer Standard_DS3_v2-VM (mit vier Kernen) in einer Bereitstellung anfordern, sollten ein Kontingent für 48 Kerne (zwölf Instanzen mit jeweils vier Kernen) verfügbar sein. Informationen zum Anzeigen Ihres Verbrauchs und zum Anfordern von Kontingenterhöhungen finden Sie unter Anzeigen Ihres Verbrauchs und Ihrer Kontingente im Azure-Portal.
Vorbereiten des Flows für die Bereitstellung
Jeder Flow verfügt über einen Ordner, der Codes/Prompts, Definitionen und andere Artefakte des Flows enthält. Wenn Sie Ihren Flow mit der Benutzeroberfläche entwickelt haben, können Sie den Flowordner von der Seite mit den Flowdetails herunterladen. Wenn Sie Ihren Flow mit der CLI oder dem SDK entwickelt haben, sollte der Flowordner bereits vorhanden sein.
In diesem Artikel wird der Beispielflow „basic-chat“ als Beispiel für die Bereitstellung für einen verwalteten Azure Machine Learning-Onlineendpunkt verwendet.
Wichtig
Wenn Sie in Ihrem Flow additional_includes
verwendet haben, müssen Sie zuerst pf flow build --source <path-to-flow> --output <output-path> --format docker
verwenden, um eine aufgelöste Version des Flowordners abzurufen.
Festlegen des Standardarbeitsbereichs
Verwenden Sie die folgenden Befehle, um den Standardarbeitsbereich und die Ressourcengruppe für die CLI festzulegen.
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Registrieren des Flows als Modell (optional)
In der Onlinebereitstellung können Sie entweder auf ein registriertes Modell verweisen oder den Modellpfad (in den die Modelldateien hochgeladen werden sollen) inline angeben. Es wird empfohlen, das Modell zu registrieren und den Modellnamen und die Version in der Bereitstellungsdefinition anzugeben. Verwenden Sie das Format model:<model_name>:<version>
.
Nachfolgend ein Beispiel für eine Modelldefinition für einen Chatablauf.
Hinweis
Wenn Ihr Ablauf kein Chat-Ablauf ist, müssen Sie diese properties
nicht hinzufügen.
$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
Verwenden Sie az ml model create --file model.yaml
, um das Modell in Ihrem Arbeitsbereich zu registrieren.
Definieren des Endpunkts
Um einen Endpunkt zu definieren, müssen Sie folgendes angeben:
- Endpunktname: Der Name des Endpunkts. Er muss in der Azure-Region eindeutig sein. Weitere Informationen zu den Benennungsregeln finden Sie unter Endpunktgrenzwerte.
- Authentifizierungsmodus: Die Authentifizierungsmethode für den Endpunkt. Wählen Sie zwischen schlüsselbasierter Authentifizierung und tokenbasierter Azure Machine Learning-Authentifizierung. Ein Schlüssel läuft nicht ab, ein Token dagegen schon. Weitere Informationen zur Authentifizierung finden Sie unter Authentifizieren bei einem Onlineendpunkt. Optional können Sie eine Beschreibung und Tags zu Ihrem Endpunkt hinzufügen.
- Optional können Sie eine Beschreibung und Tags zu Ihrem Endpunkt hinzufügen.
- Wenn Sie eine Bereitstellung in einem Kubernetes-Cluster (AKS-Cluster oder Arc-fähiger Cluster) durchführen möchten, der an Ihren Arbeitsbereich angefügt ist, können Sie den Flow als Kubernetes-Onlineendpunkt bereitstellen.
Es folgt ein Beispiel für eine Endpunktdefinition, bei der standardmäßig die vom System zugewiesene Identität verwendet wird.
$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
Schlüssel | BESCHREIBUNG |
---|---|
$schema |
(Optional) Das YAML-Schema. Sie können das Schema aus dem vorherigen Codeschnipsel in einem Browser anzeigen, um sich alle verfügbaren Optionen in der YAML-Datei anzusehen. |
name |
Der Name des Endpunkts. |
auth_mode |
Verwenden Sie key für schlüsselbasierte Authentifizierung. Verwenden Sie aml_token für die tokenbasierte Azure Machine Learning-Authentifizierung. Verwenden Sie den Befehl az ml online-endpoint get-credentials , um das neueste Token abzurufen. |
property: enforce_access_to_default_secret_stores (Vorschau) |
- Standardmäßig verwendet der Endpunkt die vom System zugewiesene Identität. Diese Eigenschaft funktioniert nur für die vom System zugewiesene Identität. - Diese Eigenschaft bedeutet, dass, wenn Sie über die Berechtigung zum Lesen von Verbindungsgeheimnissen verfügen, der vom Endpunktsystem zugewiesenen Identität automatisch die Azure Machine Learning Workspace Connection Secrets Reader-Rolle des Workspace zugewiesen wird, damit der Endpunkt bei der Durchführung von Inferencing korrekt auf Verbindungen zugreifen kann. - Standardmäßig ist diese Eigenschaft `deaktiviert`. |
Wenn Sie einen Kubernetes-Onlineendpunkt erstellen, müssen Sie die folgenden zusätzlichen Attribute angeben:
Schlüssel | Beschreibung |
---|---|
compute |
Das Kubernetes-Computeziel, in dem der Endpunkt bereitgestellt werden soll. |
Weitere Konfigurationen des Endpunkts finden Sie unter Schema für verwaltete Onlineendpunkte.
Wichtig
Wenn Ihr Flow auf Microsoft Entra ID basierte Authentifizierungsverbindungen verwendet, unabhängig davon, ob Sie die systemseitig zugewiesene Identität oder die benutzerseitig zugewiesene Identität verwenden, müssen Sie der verwalteten Identität immer die entsprechenden Rollen der zugehörigen Ressourcen erteilen, damit sie API-Aufrufe an diese Ressource tätigen kann. Wenn Ihre Azure OpenAI-Verbindung beispielsweise die auf Microsoft Entra ID basierte Authentifizierung verwendet, müssen Sie der verwalteten Identität Ihres Endpunkts die Rolle „Cognitive Services OpenAI-Benutzer“ oder „Cognitive Services OpenAI-Mitwirkender“ der entsprechenden Azure OpenAI-Ressourcen erteilen.
Verwenden einer benutzerseitig zugewiesenen Identität
Wenn Sie einen Onlineendpunkt erstellen, wird standardmäßig automatisch eine systemseitig zugewiesene verwaltete Identität für Sie generiert. Sie können auch eine vorhandene benutzerseitig zugewiesene verwaltete Identität für den Endpunkt angeben.
Wenn Sie eine benutzerseitig zugewiesene Identität verwenden möchten, können Sie die folgenden zusätzlichen Attribute in endpoint.yaml
angeben:
identity:
type: user_assigned
user_assigned_identities:
- resource_id: user_identity_ARM_id_place_holder
Außerdem müssen Sie Client ID
der benutzerseitig zugewiesenen Identität wie folgt unter environment_variables
in deployment.yaml
angeben. Sie finden Client ID
in Overview
der verwalteten Identität im Azure-Portal.
environment_variables:
AZURE_CLIENT_ID: <client_id_of_your_user_assigned_identity>
Wichtig
Sie müssen der benutzerseitig zugewiesenen Identität die folgenden Berechtigungen erteilen, bevor Sie den Endpunkt erstellen, damit sie zur Durchführung von Rückschlüssen auf die Azure-Ressourcen zugreifen kann. Erfahren Sie mehr darüber , wie Sie Ihrer Endpunktidentität Berechtigungen erteilen.
`Scope` | Role | Zweck |
---|---|---|
Azure Machine Learning-Arbeitsbereich | Azure Machine Learning Workspace Connection Secrets Reader Rolle oder eine angepasste Rolle mit „Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action“ | Rufen Sie Arbeitsbereichsverbindungen ab. |
Containerregistrierung für Arbeitsbereich | ACR-Pullvorgang | Pullen von Containerimage |
Standardspeicher für Arbeitsbereich | Leser von Speicherblobdaten | Laden des Modells aus dem Speicher |
(Optional:) Azure Machine Learning-Arbeitsbereich | Arbeitsbereichsmetriken-Writer | Wenn Sie nach der Bereitstellung des Endpunkts Metriken des Endpunkts wie CPU, GPU, Datenträger oder Arbeitsspeicherauslastung überwachen möchten, müssen Sie der Identität diese Berechtigung zuweisen. |
Definieren der Bereitstellung
Eine Einrichtung ist ein Satz von Ressourcen, die für das Hosting des Modells erforderlich sind, das die eigentliche Inferenz durchführt.
Nachfolgend sehen Sie ein Beispiel für die Bereitstellungsdefinition, in dem sich der model
Abschnitt auf das registrierte Flussmodell bezieht. Sie können auch den Flussmodellpfad in der Zeile angeben.
$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"]'
attribute | Beschreibung |
---|---|
Name | Der Name der Bereitstellung |
Endpunktname | Der Name des Endpunkts, unter dem die Bereitstellung erstellt werden soll. |
Modell | Das für die Bereitstellung zu verwendende Modell. Dieser Wert kann entweder ein Verweis auf ein vorhandenes versioniertes Modell im Arbeitsbereich oder eine Inline-Modellspezifikation sein. |
Environment | Die Umgebung zum Hosten des Modells und des Codes. Sie enthält folgende Elemente: - image - inference_config : wird verwendet, um einen Bereitstellungscontainer für Onlinebereitstellungen zu erstellen, einschließlich liveness route , readiness_route und scoring_route . |
Instanztyp | Die VM-Größe, die für die Bereitstellung verwendet werden soll. Eine Liste der unterstützten Größen finden Sie unter SKU-Liste für verwaltete Onlineendpunkte. |
Anzahl von Instanzen | Die Anzahl der Instanzen, die für die Bereitstellung verwendet werden sollen. Richten Sie den Wert nach der zu erwartenden Workload. Für Hochverfügbarkeit empfiehlt es sich, den Wert mindestens auf 3 festzulegen. Wir reservieren zusätzliche 20 % für die Durchführung von Upgrades. Weitere Informationen finden Sie unter Grenzwerte für Onlineendpunkte. |
Umgebungsvariablen | Die folgenden Umgebungsvariablen müssen für Endpunkte festgelegt werden, die über einen Flow bereitgestellt werden: – (erforderlich) PRT_CONFIG_OVERRIDE : Zum Pullen von Verbindungen aus dem Arbeitsbereich – (optional) PROMPTFLOW_RESPONSE_INCLUDED_FIELDS: : Wenn die Antwort mehrere Felder enthält, werden bei Verwendung dieser Umgebungsvariablen die Felder gefiltert, die in der Antwort verfügbar gemacht werden sollen. Wenn beispielsweise zwei Flowausgaben („answer“ und „context“) vorhanden sind und nur „answer“ in der Endpunktantwort enthalten sein soll, können Sie diese Umgebungsvariable auf „["answer"]“ festlegen. |
Wichtig
Wenn Ihr Flowordner über eine requirements.txt
Datei verfügt, die die zum Ausführen des Flows erforderlichen Abhängigkeiten enthält, müssen Sie die Schritte zum Bereitstellen mit einer benutzerdefinierten Umgebung ausführen, um die benutzerdefinierte Umgebung einschließlich der Abhängigkeiten zu erstellen.
Wenn Sie eine Kubernetes-Onlinebereitstellung erstellen, müssen Sie die folgenden zusätzlichen Attribute angeben:
attribute | BESCHREIBUNG |
---|---|
Typ | Der Typ der Bereitstellung. Legen Sie den Wert auf kubernetes fest. |
Instanztyp | Der Instanztyp, den Sie in Ihrem Kubernetes-Cluster für die Bereitstellung erstellt haben, stellt die Computeressource „request“ oder „limit“ der Bereitstellung dar. Ausführlichere Informationen finden Sie unter Erstellen und Verwalten von Instanztypen für eine effiziente Nutzung von Computeressourcen. |
Bereitstellen Ihres Onlineendpunkts in Azure
Führen Sie den folgenden Code aus, um den Endpunkt in der Cloud zu erstellen:
az ml online-endpoint create --file endpoint.yml
Führen Sie den folgenden Code aus, um die Bereitstellung mit dem Namen blue
unter dem Endpunkt zu erstellen:
az ml online-deployment create --file blue-deployment.yml --all-traffic
Hinweis
Diese Einrichtung kann mehr als 15 Minuten dauern.
Tipp
Wenn Sie es vorziehen, Ihre CLI-Konsole nicht zu blockieren, können Sie das Flag --no-wait
an den Befehl anhängen. Dadurch wird jedoch die interaktive Anzeige des Bereitstellungsstatus nicht mehr angezeigt.
Wichtig
Das Flag --all-traffic
im obigen az ml online-deployment create
ordnet 100 % des Endpunktdatenverkehrs der neu erstellten blauen Bereitstellung zu. Obwohl dies für Entwicklungs- und Testzwecke hilfreich ist, sollten Sie für die Produktion den Datenverkehr zur neuen Bereitstellung über einen expliziten Befehl öffnen. Beispiel: az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
.
Überprüfen des Status des Endpunkts und der Bereitstellung
Führen Sie zum Überprüfen des Endpunktstatus den folgenden Code aus:
az ml online-endpoint show -n basic-chat-endpoint
Führen Sie zum Überprüfen des Bereitstellungsstatus den folgenden Code aus:
az ml online-deployment get-logs --name blue --endpoint basic-chat-endpoint
Aufrufen des Endpunkts zum Bewerten von Daten mit Ihrem Modell
Sie können eine „sample-request.json“-Datei wie die folgende erstellen:
{
"question": "What is Azure Machine Learning?",
"chat_history": []
}
az ml online-endpoint invoke --name basic-chat-endpoint --request-file sample-request.json
Sie können sie auch mit einem HTTP-Client aufrufen, z. B. mit 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": []}'
Sie können Ihren Endpunktschlüssel und Ihre Endpunkt-URI aus dem Azure Machine Learning-Arbeitsbereich in Endpunkte>Verbrauch>Basis-Verbrauchsinfo erhalten.
Erweiterte Konfigurationen
Einsatz mit verschiedenen Verbindungen aus der Ablaufentwicklung
Möglicherweise möchten Sie die Verbindungen des Flows während der Bereitstellung außer Kraft setzen.
Wenn Ihre flow.dag.yaml-Datei zum Beispiel eine Verbindung mit dem Namen my_connection
verwendet, können Sie diese überschreiben, indem Sie Umgebungsvariablen in der Deployment-Yaml-Datei wie folgt hinzufügen:
Option 1: Verbindungsname außer Kraft setzen
environment_variables:
my_connection: <override_connection_name>
Wenn Sie ein bestimmtes Feld der Verbindung überschreiben möchten, können Sie dazu Umgebungsvariablen mit dem Benennungsmuster <connection_name>_<field_name>
hinzufügen. Wenn Ihr Flow beispielsweise eine Verbindung namens my_connection
mit einem Konfigurationsschlüssel namens chat_deployment_name
verwendet, versucht das bereitstellende Back-End standardmäßig, chat_deployment_name
aus der Umgebungsvariablen „MY_CONNECTION_CHAT_DEPLOYMENT_NAME“ abzurufen. Wenn die Umgebungsvariable nicht festgelegt ist, wird der ursprüngliche Wert aus der Flowdefinition verwendet.
Option 2: Überschreiben durch Verweis auf Asset
environment_variables:
my_connection: ${{azureml://connections/<override_connection_name>}}
Hinweis
Sie können sich nur innerhalb desselben Arbeitsbereichs auf eine Verbindung beziehen.
Bereitstellung mit einer benutzerdefinierten Umgebung
In diesem Abschnitt wird gezeigt, wie Sie einen Docker-Build-Kontext verwenden, um die Umgebung für Ihre Bereitstellung festzulegen. Dabei wird vorausgesetzt, dass Sie Kenntnisse über Docker und Azure Machine Learning-Umgebungen haben.
Erstellen Sie in Ihrer lokalen Umgebung einen Ordner mit dem Namen
image_build_with_reqirements
, der folgende Dateien enthält:|--image_build_with_reqirements | |--requirements.txt | |--Dockerfile
Der
requirements.txt
sollte vom Flow-Ordner geerbt werden, der zur Verfolgung der Abhängigkeiten des Flows verwendet wurde.Der Inhalt von
Dockerfile
ist wie folgt:FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest COPY ./requirements.txt . RUN pip install -r requirements.txt
Ersetzen Sie den Abschnitt environment in der Datei deployment definition yaml durch den folgenden Inhalt:
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
Verwenden des FastAPI-Bereitstellungsmoduls (Vorschau)
Standardmäßig verwendet der Eingabeaufforderungsflow FLASK-Portionsmodul. Ab Der Version 1.10.0 des Eingabeaufforderungsfluss-SDK wird das fastAPI-basierte Bereitstellungsmodul unterstützt. Sie können fastapi
-Dienstmodul verwenden, indem Sie eine Umgebungsvariable PROMPTFLOW_SERVING_ENGINE
angeben.
environment_variables:
PROMPTFLOW_SERVING_ENGINE=fastapi
Konfigurieren der Parallelität für die Bereitstellung
Bei der Bereitstellung des Flows in der Onlinebereitstellung gibt es zwei Umgebungsvariablen, die Sie für Parallelität konfigurieren: PROMPTFLOW_WORKER_NUM
und PROMPTFLOW_WORKER_THREADS
. Darüber hinaus müssen Sie auch den Parameter max_concurrent_requests_per_instance
festlegen.
Im Anschluss sehen Sie ein Beispiel für die Konfiguration in der Datei deployment.yaml
:
request_settings:
max_concurrent_requests_per_instance: 10
environment_variables:
PROMPTFLOW_WORKER_NUM: 4
PROMPTFLOW_WORKER_THREADS: 1
PROMPTFLOW_WORKER_NUM: Dieser Parameter bestimmt die Anzahl der Worker (Prozesse), die in einem Container gestartet werden. Der Standardwert entspricht der Anzahl der CPU-Kerne, und der Höchstwert ist das Doppelte der CPU-Kerne.
PROMPTFLOW_WORKER_THREADS: Dieser Parameter bestimmt die Anzahl der Threads, die in einem Worker gestartet werden. Der Standardwert ist 1.
Hinweis
Stellen Sie beim Festlegen von
PROMPTFLOW_WORKER_THREADS
auf einen höheren Wert als 1 sicher, dass der Flowcode threadsicher ist.max_concurrent_requests_per_instance: Die maximale Anzahl gleichzeitiger Anforderungen pro Instanz, die für die Bereitstellung zulässig sind. Der Standardwert ist 10.
Der vorgeschlagene Wert für
max_concurrent_requests_per_instance
hängt von der Anforderungszeit ab:- Wenn die Anforderungszeit mehr als 200 ms beträgt, legen Sie
max_concurrent_requests_per_instance
aufPROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS
fest. - Wenn die Anforderungszeit maximal 200 ms beträgt, legen Sie
max_concurrent_requests_per_instance
auf(1.5-2) * PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS
fest. Dies kann den Gesamtdurchsatz verbessern, da einige Anforderungen auf der Serverseite in die Warteschlange gestellt werden können. - Wenn Sie regionsübergreifende Anforderungen senden, können Sie den Schwellenwert von 200 ms in 1 s ändern.
- Wenn die Anforderungszeit mehr als 200 ms beträgt, legen Sie
Bei der Optimierung der obigen Parameter müssen Sie die folgenden Metriken überwachen, um eine optimale Leistung und Stabilität zu gewährleisten:
- CPU-/Speicherauslastung der Instanz in dieser Bereitstellung
- Von „200“ abweichende Antworten (4xx, 5xx)
- Wenn Sie eine Antwort vom Typ „429“ erhalten, bedeutet dies in der Regel, dass Sie die Parallelitätseinstellungen gemäß dem obigen Leitfaden erneut optimieren oder die Bereitstellung skalieren müssen.
- Azure OpenAI-Drosselungsstatus
Überwachen von Endpunkten
Sammeln allgemeiner Metriken
Erfassen von Ablaufverfolgungsdaten und Systemmetriken während der Ableitungszeit
Sie können auch Ablaufverfolgungsdaten und bereitstellungsspezifische Bereitstellungsmetriken (Tokenverbrauch, Ablaufwartezeit usw.) während der Rückschlusszeit auf arbeitsbereichsverknüpfte Application Insights sammeln, indem Sie eine Eigenschaft app_insights_enabled: true
in der Yaml-Bereitstellungsdatei hinzufügen. Erfahren Sie mehr über Ablaufverfolgung und Metriken der Bereitstellung von Eingabeaufforderungen.
Die Spezifischen Metriken und Ablaufverfolgung der Aufforderung können für andere Application Insights angegeben werden, die nicht mit dem verknüpften Arbeitsbereich verknüpft sind. Sie können eine Umgebungsvariable in der Yaml-Bereitstellungsdatei wie folgt angeben. Die Verbindungszeichenfolge Ihrer Application Insights-Ressource finden Sie auf der Seite „Übersicht“ im Azure-Portal.
environment_variables:
APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
Hinweis
Wenn Sie nur app_insights_enabled: true
festlegen, ihr Arbeitsbereich jedoch nicht über eine verknüpfte Application Insights verfügt, schlägt Ihre Bereitstellung nicht fehl, es werden jedoch keine Daten gesammelt.
Wenn Sie sowohl app_insights_enabled: true
als auch die oben genannte Umgebungsvariable gleichzeitig angeben, werden die Ablaufverfolgungsdaten und Metriken an die arbeitsbereichsgebundenen Application Insights gesendet. Wenn Sie also eine andere Application Insights-Ressource angeben möchten, müssen Sie die Umgebungsvariable nur beibehalten.
Häufige Fehler
Problem beim Timeout der Upstream-Anforderung beim Verbrauch des Endpunkts
Dieser Fehler wird in der Regel durch Timeout verursacht. Standardmäßig ist request_timeout_ms
auf 5000 festgelegt. Sie können maximal 5 Minuten (also 300.000 ms) angeben. Im folgenden Beispiel wird gezeigt, wie Sie das Anforderungstimeout in der Yaml-Bereitstellungsdatei angeben. Weitere Informationen zum Bereitstellungsschema finden Sie hier.
request_settings:
request_timeout_ms: 300000
Hinweis
Ein Timeout von 300.000 ms funktioniert nur für verwaltete Onlinebereitstellungen über prompt flow. Sie müssen sicherstellen, dass Sie Ihrem Modell wie unten gezeigt Eigenschaften hinzugefügt haben (entweder per Inline-Modellspezifikation im YAML-Bereitstellungscode oder per eigenständiger Modellspezifikation im YAML-Code). Damit geben Sie an, dass es sich um eine Bereitstellung über prompt flow handelt.
properties:
# indicate a deployment from prompt flow
azureml.promptflow.source_flow_id: <value>
Nächste Schritte
- Informationen zum Schema für verwaltete Onlineendpunkte und Schema für verwaltete Onlinebereitstellungen
- Erfahren Sie mehr darüber, wie man den Endpunkt in UI testet und den Endpunkt überwacht.
- Informationen zur Problembehandlung bei verwalteten Onlineendpunkten
- Problembehandlung bei Bereitstellungen des Eingabeaufforderungsflusses
- Wenn Sie Ihren Flow verbessert haben und die verbesserte Version mit einer sicheren Rolloutstrategie bereitstellen möchten, finden Sie weitere Informationen unter Sicherer Rollout für Onlineendpunkte.
- Erfahren Sie mehr über die Bereitstellung von Flüssen auf anderen Plattformen, z. B. einen lokalen Entwicklungsdienst, Docker-Container, Azure APP-Dienst usw.