Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung
Die Entwicklung der Prompt Flow-Funktion endete am 20. April 2026. Das Feature wird am 20. April 2027 vollständig eingestellt. Am Rentenbeginn geht Prompt Flow in den schreibgeschützten Modus über. Ihre vorhandenen Abläufe werden bis zu diesem Datum weiterhin funktionieren.
Empfohlene Aktion: Migrieren Sie Ihre Prompt Flow-Workloads vor dem 20. April 2027 zum Microsoft Agent Framework.
In diesem Artikel erfahren Sie, wie Sie Ihren Workflow auf einem managed Onlineendpunkt oder einem Kubernetes-Onlineendpunkt für Inferenzen in Echtzeit mit Azure Machine Learning v2 CLI 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 Benutzeroberfläche der Befehlszeilenschnittstelle verwenden.
- Das Python SDK wird in diesem Artikel nicht behandelt. Sehen Sie sich stattdessen das GitHub Beispielnotizbuch an. Um das Python SDK zu verwenden, 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 Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
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 Sie noch keinen haben, führen Sie die Schritte im Artikel Schnellstart: Erstellen von Arbeitsbereichsressourcen aus, um Ressourcen zu erstellen.
- Azure rollenbasierte Zugriffssteuerungen (Azure RBAC) werden verwendet, um Den 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 zugewiesen sein, oder eine benutzerdefinierte Rolle, die den Zugriff auf "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/" erlaubt. Wenn Sie Studio zum Erstellen/Verwalten von Onlineendpunkten/Bereitstellungen verwenden, benötigen Sie eine weitere Berechtigung "Microsoft. Ressourcen/Bereitstellungen/Schreiben" vom Ressourcengruppenbesitzer. Weitere Informationen finden Sie unter Manage-Zugriff auf einen Azure Machine Learning Arbeitsbereich.
Hinweis
Verwaltete Onlineendpunkte unterstützten nur verwaltete virtuelle Netzwerke. Wenn sich Ihr Arbeitsbereich in einem benutzerdefinierten virtuellen Netzwerk befindet, können Sie ihn an einem Kubernetes-Onlineendpunkt 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 SKUverfü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 Ihrer Nutzung und zum Anfordern von Kontingenterhöhungen finden Sie unter Ihre Nutzung und Kontingente im Azure-Portal anzeigen.
Bereiten Sie den Flow für die Bereitstellung vor
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 Flow-Ordner von der Seite mit den Flow-Details herunterladen. Wenn Sie Ihren Flow mit der CLI oder dem SDK entwickelt haben, sollte der Flow-Ordner bereits vorhanden sein.
In diesem Artikel wird der Beispielfluss "basic-chat" als Beispiel für die Bereitstellung an den in Azure Machine Learning verwalteten 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 Darstellung eines Flow-Ordners 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>
Registriere den Flow 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 Flow kein Chatflow 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. Es 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 Azure Machine Learning tokenbasierter Authentifizierung aus. 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 Azure Machine Learning tokenbasierte 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 systemseitig 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 Verbindungsschlüsseln verfügen, die systemzugewiesene Identität des Endpunkts automatisch die Rolle "Azure Machine Learning Workspace Connection Secrets Reader" des Arbeitsbereichs erhält, sodass der Endpunkt bei der Schlussfolgerung ordnungsgemäß auf Verbindungen zugreifen kann. - Standardmäßig ist diese Eigenschaft `deaktiviert`. |
Wenn Sie einen Kubernetes-Onlineendpunkt erstellen, müssen Sie die folgenden Attribute angeben:
| Schlüssel | BESCHREIBUNG |
|---|---|
compute |
Das Kubernetes-Berechnungsziel, für den der Endpunkt bereitgestellt werden soll. |
Weitere Konfigurationen des Endpunkts finden Sie unter Schema für verwaltete Onlineendpunkte.
Wichtig
Wenn Ihr Flow Microsoft Entra ID-basierte Authentifizierungsverbindungen verwendet, müssen Sie, unabhängig davon, ob Sie eine vom System zugewiesene Identität oder eine vom Benutzer zugewiesene Identität verwenden, der verwalteten Identität stets die angemessenen Rollen der betreffenden Ressourcen zuweisen, damit sie API-Aufrufe an diese Ressource ausführen kann. Wenn Ihre Azure OpenAI-Verbindung beispielsweise die auf Microsoft Entra ID basierende Authentifizierung verwendet, müssen Sie die Rolle „Cognitive Services OpenAI-Benutzer“ oder „Cognitive Services OpenAI-Mitwirkender“ Ihrer endpunktverwalteten Identität zu den entsprechenden Azure OpenAI-Ressourcen zuweisen.
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 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 das Client ID der benutzerzugewiesenen Identität wie folgt unter environment_variables in deployment.yaml angeben. Sie finden die Client ID im Overview der verwalteten Identität im Azure-Portal.
environment_variables:
AZURE_CLIENT_ID: <client_id_of_your_user_assigned_identity>
Wichtig
Sie müssen die folgenden Berechtigungen für die vom Benutzer zugewiesene Identität bevor Sie den Endpunkt erstellen erteilen, damit sie auf die Azure Ressourcen zugreifen kann, um Inferenz durchzuführen. Erfahren Sie mehr darüber , wie Sie Ihrer Endpunktidentität Berechtigungen erteilen.
| Umfang | Rolle | Warum es benötigt wird |
|---|---|---|
| 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 | Herunterladen des Container-Images |
| Standardspeicher für Arbeitsbereich | Leser von Speicherblobdaten | Laden des Modells aus dem Speicher |
| Azure Machine Learning Arbeitsbereich (Optional) | Arbeitsbereichsmetriken-Generator | 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. |
Bereitstellung definieren
Eine Bereitstellung ist ein Satz von Ressourcen, die für das Hosting des Modells erforderlich sind, das die Inferenz tatsächlich 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. |
| Umgebung | 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. |
| Instanzenanzahl | Die Anzahl der Instanzen, die für die Bereitstellung verwendet werden sollen. Richten Sie den Wert nach der zu erwartenden Arbeitslast. 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 Abrufen von Verbindungen aus dem Arbeitsbereich - (optional) PROMPTFLOW_RESPONSE_INCLUDED_FIELDS:: Wenn die Antwort mehrere Felder enthält, werden bei Verwendung dieser Umgebungsvariable 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 Flow-Ordner eine requirements.txt Datei enthält, die die für die Ausführung des Flows notwendigen Abhängigkeiten enthält, müssen Sie die Schritte zum Bereitstellen mit benutzerdefinierter 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 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, repräsentiert die „Request“-/„Limit“-Computeressource der Bereitstellung. Ausführlichere Informationen finden Sie unter Erstellen und Verwalten von Instanztypen für eine effiziente Nutzung von Computeressourcen. |
Bereitstellen Ihres Onlineendpunkts zum 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
Die Bereitstellung könnte länger 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 deaktiviert.
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 im Produktionsumfeld den Datenverkehr zur neuen Bereitstellung mit einem 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 Ihren Endpunkt-URI aus dem Azure Machine Learning Arbeitsbereich in Endpoints>Consume>Basic consumption info abrufen.
Erweiterte Konfigurationen
Einsatz mit verschiedenen Verbindungen aus der Ablaufentwicklung
Möglicherweise möchten Sie die Verbindungen des Prozessablaufs während der Bereitstellung überschreiben.
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 dies tun, indem Sie Umgebungsvariablen, die dem Benennungsmuster <connection_name>_<field_name> folgen, hinzufügen. Wenn Ihr Flow beispielsweise eine Verbindung namens my_connection mit dem Konfigurationsschlüssel chat_deployment_name verwendet, versucht das bereitstellende Back-End standardmäßig, chat_deployment_name aus der Umgebungsvariable „MY_CONNECTION_CHAT_DEPLOYMENT_NAME“ abzurufen. Wenn die Umgebungsvariable nicht festgelegt ist, wird der ursprüngliche Wert aus der Flowdefinition verwendet.
Option 2: Überschreiben mittels Verweis auf Ressource
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 erläutert, wie Sie einen Docker-Buildkontext verwenden, um die Umgebung für Ihre Bereitstellung anzugeben, vorausgesetzt, Sie verfügen über Kenntnisse in Docker und Azure Machine Learning Umgebungen.
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 | |--DockerfileDer
requirements.txtsollte vom Flow-Ordner geerbt werden, der zur Verfolgung der Abhängigkeiten des Flows verwendet wurde.Der Inhalt von
Dockerfileähnelt dem folgenden Text: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 Prompt Flow die FLASK-Serving-Engine. Ab der Version 1.10.0 des Prompt Flow SDK wird der auf FastAPI basierende Servicemotor unterstützt. Sie können fastapi-Dienstmodul verwenden, indem Sie eine Umgebungsvariable PROMPTFLOW_SERVING_ENGINEangeben.
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_THREADSauf 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_instancehängt von der Anforderungszeit ab:- Wenn die Anforderungszeit mehr als 200 ms beträgt, legen Sie
max_concurrent_requests_per_instanceaufPROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADSfest. - Wenn Ihre Anforderungszeit weniger als oder gleich 200 ms ist, setzen Sie
max_concurrent_requests_per_instanceauf(1.5-2) * PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS. 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. Verstehen Sie den Tracing und die Metriken der Prompt-Flow-Bereitstellung besser.
Spezifische Metriken und Ablaufverfolgungen von Prompt Flow können für andere Application Insights als den verknüpften Arbeitsbereich angegeben werden. Sie können eine Umgebungsvariable in der Yaml-Bereitstellungsdatei wie folgt angeben. Sie finden die Verbindungszeichenfolge Ihrer Application Insights 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-Instanz verfügt, schlägt die Bereitstellung zwar nicht fehl, es erfolgt jedoch keine Datenerfassung.
Wenn Sie sowohl app_insights_enabled: true als auch die oben genannte Umgebungsvariable gleichzeitig anwenden, werden die Ablaufverfolgungsdaten und Metriken an den mit dem Arbeitsbereich verbundenen Application Insights-Dienst gesendet. Wenn Sie also eine andere Application Insights-Ressource angeben möchten, müssen Sie nur die Umgebungsvariable 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
Wichtig
Das Timeout von 300.000 ms funktioniert nur für verwaltete Onlinebereitstellungen über Prompt Flow. Der maximale Wert für einen nicht von Prompt Flow verwalteten Onlineendpunkt beträgt 180 Sekunden.
Sie müssen sicherstellen, dass Sie Ihrem Modell wie unten gezeigt Eigenschaften hinzufügen (entweder per Inline-Modellspezifikation im YAML-Bereitstellungscode oder per eigenständiger Modellspezifikation im YAML-Code), um anzugeben, dass es sich um eine Bereitstellung aus 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.
- Mehr erfahren über die Problembehandlung bei verwalteten Onlineendpunkten.
- Fehlerbehebung bei der Bereitstellung von Prompt-Flows
- 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 Bereitstellungsabläufe auf andere Plattformen, wie zum Beispiel einen lokalen Entwicklungsdienst, Docker-Container, Azure-App-Service usw.