Flow Run Management in Azure#
Voraussetzungen - Um von diesem Tutorial zu profitieren, benötigen Sie
Ein Azure-Konto mit einem aktiven Abonnement - Konto kostenlos erstellen
Ein Azure ML-Arbeitsbereich - Arbeitsbereich konfigurieren
Eine Python-Umgebung
Installiertes Prompt Flow SDK
Lernziele - Am Ende dieses Tutorials sollten Sie in der Lage sein
einen Lauf mit Remote-Daten zu erstellen
einen Lauf zu erstellen, der die Eingaben anderer Läufe referenziert
Läufe über run.yaml zu verwalten
einen Lauf mit Überschreibung der Verbindung zu erstellen
Motivationen - Diese Anleitung führt Sie durch die Fähigkeiten der Cloud-Run-Verwaltung.
0. Abhängige Pakete installieren#
%pip install -r ../../requirements.txt
1. Verbindung zum Azure Machine Learning-Arbeitsbereich herstellen#
Der Arbeitsbereich ist die übergeordnete Ressource für Azure Machine Learning und bietet einen zentralen Ort, um mit allen Artefakten zu arbeiten, die Sie bei der Verwendung von Azure Machine Learning erstellen. In diesem Abschnitt stellen wir eine Verbindung zu dem Arbeitsbereich her, in dem der Auftrag ausgeführt wird.
1.1 Die erforderlichen Bibliotheken importieren#
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.ai.ml.entities import Data
from azure.core.exceptions import ResourceNotFoundError
from promptflow.azure import PFClient
from promptflow.entities import Run
1.2 Anmeldeinformationen konfigurieren#
Wir verwenden DefaultAzureCredential, um Zugriff auf den Arbeitsbereich zu erhalten. DefaultAzureCredential sollte in der Lage sein, die meisten Szenarien zur Authentifizierung mit dem Azure SDK zu bewältigen.
Referenz für weitere verfügbare Anmeldeinformationen, falls dies nicht für Sie funktioniert: Beispiel für die Anmeldeinformationskonfiguration, Referenzdokumentation zu azure-identity.
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
credential = InteractiveBrowserCredential()
1.3 Ein Handle für den Arbeitsbereich erhalten#
Wir verwenden eine Konfigurationsdatei, um eine Verbindung zu einem Arbeitsbereich herzustellen. Der Azure ML-Arbeitsbereich sollte mit einem Computercluster konfiguriert sein. Sehen Sie sich dieses Notebook zur Konfiguration eines Arbeitsbereichs an
# Get a handle to workspace
pf = PFClient.from_config(credential=credential)
1.4 Notwendige Verbindungen erstellen#
Verbindungen helfen bei der sicheren Speicherung und Verwaltung von geheimen Schlüsseln oder anderen sensiblen Anmeldeinformationen, die für die Interaktion mit LLMs und anderen externen Tools wie Azure Content Safety erforderlich sind.
In diesem Notebook verwenden wir den Flow web-classification, der die Verbindung open_ai_connection intern verwendet. Wir müssen die Verbindung einrichten, wenn wir sie noch nicht hinzugefügt haben.
Bereiten Sie Ihre Azure OpenAI-Ressource gemäß dieser Anleitung vor und besorgen Sie sich Ihren api_key, falls Sie noch keinen haben.
Bitte gehen Sie zum Arbeitsbereich-Portal, klicken Sie auf Prompt Flow -> Verbindungen -> Erstellen und folgen Sie dann der Anleitung, um Ihre eigenen Verbindungen zu erstellen. Mehr erfahren Sie unter Verbindungen.
2. Lauf mit Remote-Daten erstellen#
Anstatt sich auf lokale Dateien zu verlassen, kann es Situationen geben, in denen Sie Daten wiederverwenden möchten, die bereits in Ihrem Arbeitsbereich verfügbar sind, wenn Sie einen Flow übermitteln. Die folgenden Codezellen zeigen, wie Sie einen Flow-Lauf mit Remote-Daten erstellen.
2.1 Remote-Daten erstellen oder aktualisieren#
data_name, data_version = "flow_run_test_data", "1"
try:
data = pf.ml_client.data.get(name=data_name, version=data_version)
except ResourceNotFoundError:
data = Data(
name=data_name,
version=data_version,
path=f"../../flows/standard/web-classification/data.jsonl",
type="uri_file",
)
data = pf.ml_client.data.create_or_update(data)
2.2 Remote-Daten-ID vorbereiten#
data_id = f"azureml:{data.name}:{data.version}"
print(data_id)
2.3 Flow-Lauf mit Remote-Daten erstellen#
Sie können den Instanztyp oder die Leerlaufzeit der Laufzeit ändern oder sie zurücksetzen, um einen sauberen Zustand zu erhalten. Die folgende Codezelle zeigt, wie das geht.
# create run
run = Run(
# local flow file
flow="../../flows/standard/web-classification",
# remote data
data=data_id,
# to customize runtime instance type and compute instance, you can provide them in resources
# resources={
# "instance_type": "STANDARD_DS11_V2",
# "compute": "my_compute_instance"
# }
# to customize identity, you can provide them in identity
# identity={
# "type": "managed",
# }
)
base_run = pf.runs.create_or_update(run=run)
2.4 Den Flow-Lauf streamen, um sicherzustellen, dass er erfolgreich ausgeführt wird#
pf.runs.stream(base_run)
3. Erstellen eines Flow-Laufs, der die Eingaben eines vorhandenen Laufs verwendet#
Beim Ausführen eines Flows mit einem vorhandenen Lauf können Sie entweder dessen Eingaben oder Ausgaben in der Spaltenzuordnung referenzieren. Die folgende Codezelle zeigt, wie die Eingaben eines Laufs in der Spaltenzuordnung referenziert werden.
run = Run(
# local flow file
flow="../../flows/standard/web-classification",
# run name
run=run,
column_mapping={
# reference another run's input data columns
"url": "${run.inputs.url}",
"answer": "${run.inputs.answer}",
"evidence": "${run.inputs.evidence}",
},
)
base_run = pf.runs.create_or_update(
run=run,
)
pf.runs.stream(base_run)
4. Erstellen eines Flow-Laufs mit Überschreibung der Verbindung#
Manchmal möchten Sie die Verbindung oder den Bereitstellungsnamen innerhalb eines Flows beim Übermitteln ändern. Die Überschreibung der Verbindung bietet eine einfache Möglichkeit, dies zu tun, ohne die ursprüngliche flow.dag.yaml zu ändern. In der folgenden Codezelle übermitteln wir den Flow web-classification und überschreiben seine Verbindung open_ai_connection mit azure_open_ai_connection. Stellen Sie sicher, dass die Verbindung azure_open_ai_connection in Ihrem Arbeitsbereich vorhanden ist.
run = Run(
# local flow file
flow="../../flows/standard/web-classification",
data="../../flows/standard/web-classification/data.jsonl",
# override connection for node classify_with_llm & summarize_text_content
connections={
"classify_with_llm": {"connection": "azure_open_ai_connection"},
"summarize_text_content": {"connection": "azure_open_ai_connection"},
},
)
base_run = pf.runs.create_or_update(
run=run,
)
pf.runs.stream(base_run)

