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.
GILT FÜR:
Python-SDK azure-ai-ml v2 (aktuell)
In diesem Artikel erfahren Sie, wie Sie eine Azure Machine Learning-Pipeline mit dem Azure Machine Learning Python SDK v2 erstellen, um eine Imageklassifizierungsaufgabe abzuschließen. Diese Pipeline enthält drei Schritte: Vorbereiten von Daten, Trainieren eines Bildklassifizierungsmodells und Bewertung des Modells. Machine Learning-Pipelines optimieren Ihren Workflow mit Geschwindigkeit, Portabilität und Wiederverwendung, sodass Sie sich auf maschinelles Lernen statt auf Infrastruktur und Automatisierung konzentrieren können.
Die Beispielpipeline trainiert ein kleines keras konvolutionales neurales Netzwerk, um Bilder im Fashion MNIST-Dataset zu klassifizieren. Die Pipeline sieht wie folgt aus:
In diesem Artikel führen Sie die folgenden Aufgaben aus:
- Vorbereiten von Eingabedaten für den Pipelineauftrag
- Erstellen von drei Komponenten zum Vorbereiten von Daten, Trainieren eines Modells und Bewertung des Modells
- Erstellen einer Pipeline aus den Komponenten
- Zugriff auf einen Arbeitsbereich, der über Compute verfügt
- Reichen Sie den Pipelineauftrag ein
- Überprüfen der Ausgabe der Komponenten und des trainierten neuronalen Netzes
- (Optional) Registrieren der Komponente für weitere Wiederverwendung und Freigabe innerhalb des Arbeitsbereichs
Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning noch heute aus.
Voraussetzungen
- Ein Azure Machine Learning-Arbeitsbereich. Wenn Sie keins haben, schließen Sie bitte das Tutorial zum Erstellen von Ressourcen ab.
- Eine Python-Umgebung mit installiertem Azure Machine Learning Python SDK v2. Installationsanweisungen finden Sie unter "Erste Schritte". Diese Umgebung dient zum Definieren und Steuern Ihrer Azure Machine Learning-Ressourcen und sie ist von der Umgebung getrennt, die zur Laufzeit für das Training verwendet wird.
- Ein Klon des Beispiel-Repositorys.
Um die Schulungsbeispiele auszuführen, klonen Sie zuerst das Beispielrepository, und navigieren Sie zum sdk Verzeichnis:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk
Starten einer interaktiven Python-Sitzung
In diesem Artikel wird das Azure Machine Learning Python SDK zum Erstellen und Steuern einer Azure Machine Learning-Pipeline verwendet. In diesem Artikel wird davon ausgegangen, dass Sie die Codeausschnitte interaktiv in einer Python REPL-Umgebung oder in einem Jupyter-Notizbuch ausführen.
Dieser Artikel basiert auf dem image_classification_keras_minist_convnet.ipynb-Notizbuch im sdk/python/jobs/pipelines/2e_image_classification_keras_minist_convnet Verzeichnis des Azure Machine Learning-Beispielrepositorys .
Importieren der erforderlichen Bibliotheken
Importieren Sie alle Azure Machine Learning-Bibliotheken, die Sie für diesen Artikel benötigen:
# import required libraries
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.ai.ml import MLClient
from azure.ai.ml.dsl import pipeline
from azure.ai.ml import load_componentAufbereiten von Eingabedaten für Ihren Pipelineauftrag
Sie müssen die Eingabedaten für die Bildklassifizierungspipeline vorbereiten.
Fashion MNIST ist ein Dataset von Modebildern, die in 10 Klassen unterteilt sind. Jedes Bild ist ein Graustufenbild von 28 x 28. Es gibt 60.000 Schulungsbilder und 10.000 Testbilder.
import urllib3
import shutil
import gzip
import os
from pathlib import Path
from azure.ai.ml import Input
base_url = "https://azureopendatastorage.blob.core.windows.net/mnist/"
base_dir = Path("mnist")
if not base_dir.exists():
base_dir.mkdir(parents=True)
c = urllib3.PoolManager()
for target_file in [
"train-images-idx3-ubyte.gz",
"train-labels-idx1-ubyte.gz",
"t10k-images-idx3-ubyte.gz",
"t10k-labels-idx1-ubyte.gz",
]:
if (base_dir / target_file[:-3]).exists():
continue
with c.request("GET", base_url + target_file, preload_content=False) as resp, open(
base_dir / target_file, "wb"
) as out_file:
shutil.copyfileobj(resp, out_file)
resp.release_conn()
with gzip.open(base_dir / target_file, "rb") as f_in, open(
base_dir / target_file[:-3], "wb"
) as f_out:
shutil.copyfileobj(f_in, f_out)
os.unlink(base_dir / target_file)
mnist_ds = Input(path=base_dir.as_posix())
Durch Definieren eines Input-Objekts erstellen Sie einen Verweis auf den Speicherort der Datenquelle. Die Daten verbleiben an ihrem Speicherort, sodass keine zusätzlichen Speicherkosten anfallen.
Erstellen von Komponenten zum Erstellen der Pipeline
Die Bildklassifizierungsaufgabe kann in drei Schritte unterteilt werden: Vorbereiten von Daten, Trainieren des Modells und Bewertung des Modells.
Eine Azure Machine Learning-Komponente ist ein eigenständiger Code, der einen Schritt in einer Machine Learning-Pipeline abgeschlossen. In diesem Artikel erstellen Sie drei Komponenten für die Imageklassifizierungsaufgabe:
- Vorbereiten von Daten für Schulungen und Tests
- Trainieren eines neuralen Netzwerks zur Bildklassifizierung mithilfe von Schulungsdaten
- Bewertung des Modells mithilfe von Testdaten
Für jede Komponente führen Sie die folgenden Schritte aus:
- Vorbereiten des Python-Skripts, das die Ausführungslogik enthält
- Definieren der Schnittstelle der Komponente
- Fügen Sie weitere Metadaten der Komponente hinzu, einschließlich der Laufzeitumgebung und des Befehls zum Ausführen der Komponente.
In den nächsten Abschnitten wird gezeigt, wie Sie die Komponenten auf zwei Arten erstellen. Für die ersten beiden Komponenten verwenden Sie eine Python-Funktion. Für die dritte Komponente verwenden Sie die YAML-Definition.
Erstellen der Datenvorbereitungskomponente
Die erste Komponente in dieser Pipeline konvertiert die komprimierten Datendateien von fashion_ds in zwei .csv-Dateien, eine für die Schulung und die andere für die Bewertung. Sie verwenden eine Python-Funktion, um diese Komponente zu definieren.
Wenn Sie dem Beispiel im Azure Machine Learning-Beispiel-Repository folgen, sind die Quelldateien bereits im prep Ordner verfügbar. Dieser Ordner enthält zwei Dateien zum Erstellen der Komponente: prep_component.py, die die Komponente definiert, und conda.yaml, die die Laufzeitumgebung der Komponente definiert.
Definieren einer Komponente mithilfe einer Python-Funktion
Mithilfe der command_component() Funktion als Dekorateur können Sie ganz einfach die Schnittstelle der Komponente, deren Metadaten und den Code definieren, der von einer Python-Funktion ausgeführt werden soll. Jede dekorierte Python-Funktion wird in eine einzelne statische Spezifikation (YAML) transformiert, die der Pipelinedienst verarbeiten kann.
# Converts MNIST-formatted files at the passed-in input path to training data output path and test data output path
import os
from pathlib import Path
from mldesigner import command_component, Input, Output
@command_component(
name="prep_data",
version="1",
display_name="Prep Data",
description="Convert data to CSV file, and split to training and test data",
environment=dict(
conda_file=Path(__file__).parent / "conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
),
)
def prepare_data_component(
input_data: Input(type="uri_folder"),
training_data: Output(type="uri_folder"),
test_data: Output(type="uri_folder"),
):
convert(
os.path.join(input_data, "train-images-idx3-ubyte"),
os.path.join(input_data, "train-labels-idx1-ubyte"),
os.path.join(training_data, "mnist_train.csv"),
60000,
)
convert(
os.path.join(input_data, "t10k-images-idx3-ubyte"),
os.path.join(input_data, "t10k-labels-idx1-ubyte"),
os.path.join(test_data, "mnist_test.csv"),
10000,
)
def convert(imgf, labelf, outf, n):
f = open(imgf, "rb")
l = open(labelf, "rb")
o = open(outf, "w")
f.read(16)
l.read(8)
images = []
for i in range(n):
image = [ord(l.read(1))]
for j in range(28 * 28):
image.append(ord(f.read(1)))
images.append(image)
for image in images:
o.write(",".join(str(pix) for pix in image) + "\n")
f.close()
o.close()
l.close()
Der vorangehende Code definiert eine Komponente mit Anzeigenamen Prep Data mithilfe des @command_component Dekorators:
nameist der eindeutige Bezeichner der Komponente.versionist die aktuelle Version der Komponente. Eine Komponente kann über mehrere Versionen verfügendisplay_nameist ein freundlicher Anzeigename der Komponente für die Benutzeroberfläche.descriptionbeschreibt die Aufgabe, die die Komponente abschließen kannenvironmentGibt die Laufzeitumgebung für die Komponente mithilfe einer Conda.yaml-Datei an.Die
conda.yamlDatei enthält alle Pakete, die für die Komponente verwendet werden:name: imagekeras_prep_conda_env channels: - defaults dependencies: - python=3.7.11 - pip=20.0 - pip: - mldesigner==0.1.0b4Die
prepare_data_componentFunktion definiert eine Eingabe fürinput_dataund zwei Ausgaben fürtraining_dataundtest_data-
input_dataist der Eingabedatenpfad -
training_dataundtest_datasind Ausgabedatenpfade für Schulungsdaten und Testdaten
-
Die Komponente konvertiert die Daten aus
input_datain einetraining_data.csv-Datei für Schulungsdaten und in einetest_data.csv-Datei für Testdaten.
In der Studio-Benutzeroberfläche wird eine Komponente angezeigt als:
- Ein Block in einem Pipelinediagramm
-
input_data,training_dataundtest_datasind Ports der Komponente, die eine Verbindung mit anderen Komponenten für das Datenstreaming herstellen
Sie haben nun alle Quelldateien für die Prep Data Komponente vorbereitet.
Erstellen der Modellschulungskomponente
In diesem Abschnitt erstellen Sie eine Komponente zum Trainieren des Bildklassifizierungsmodells mithilfe einer Python-Funktion, wie sie mit der Prep Data Komponente getan haben.
Da die Schulungslogik komplexer ist, fügen Sie den Schulungscode in eine separate Python-Datei ein.
Die Quelldateien für diese Komponente befinden sich im train Ordner im Azure Machine Learning-Beispiel-Repository. Dieser Ordner enthält drei Dateien zum Erstellen der Komponente:
-
train.pyenthält die Logik zum Trainieren des Modells. -
train_component.pydefiniert die Schnittstelle der Komponente und importiert die Funktion austrain.py -
conda.yamldefiniert die Laufzeitumgebung der Komponente.
Abrufen eines Skripts, das die Logik enthält
Die train.py Datei enthält eine normale Python-Funktion, die die Logik zum Trainieren eines neuralen Keras-Netzwerks für die Bildklassifizierung durchführt. Den Code finden Sie in der train.py-Datei auf GitHub.
Definieren der Komponente mithilfe einer Python-Funktion
Nachdem Sie die Schulungsfunktion definiert haben, können Sie im Azure Machine Learning SDK v2 Ihre @command_component Funktion als Komponente für die Verwendung in Azure Machine Learning-Pipelines umhüllen.
import os
from pathlib import Path
from mldesigner import command_component, Input, Output
@command_component(
name="train_image_classification_keras",
version="1",
display_name="Train Image Classification Keras",
description="train image classification with keras",
environment=dict(
conda_file=Path(__file__).parent / "conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
),
)
def keras_train_component(
input_data: Input(type="uri_folder"),
output_model: Output(type="uri_folder"),
epochs=10,
):
# avoid dependency issue, execution logic is in train() func in train.py file
from train import train
train(input_data, output_model, epochs)
Der vorangehende Code definiert eine Komponente mit dem Anzeigenamen Train Image Classification Keras mithilfe von @command_component.
Die keras_train_component Funktion definiert Folgendes:
- Eine Eingabe,
input_datafür Quellschulungsdaten - Eine Eingabe, die die Anzahl der Epochen angibt,
epochsdie während des Trainings verwendet werden sollen - Eine Ausgabe,
output_modeldie den Ausgabepfad für die Modelldatei angibt
Der Standardwert von epochs ist 10. Die Logik dieser Komponente stammt aus der train() Funktion in train.py.
Die Trainingsmodellkomponente verfügt über eine komplexere Konfiguration als die Komponente zur Datenvorbereitung.
conda.yaml sieht wie folgt aus:
name: imagekeras_train_conda_env
channels:
- defaults
dependencies:
- python=3.8
- pip=20.2
- pip:
- mldesigner==0.1.0b12
- azureml-mlflow==1.50.0
- tensorflow==2.7.0
- numpy==1.21.4
- scikit-learn==1.0.1
- pandas==1.3.4
- matplotlib==3.2.2
- protobuf==3.20.0
Sie haben nun alle Quelldateien für die Train Image Classification Keras Komponente vorbereitet.
Erstellen der Modellbewertungskomponente
In diesem Abschnitt erstellen Sie eine Komponente, um das trainierte Modell mithilfe von YAML-Spezifikation und Skript zu bewerten.
Wenn Sie dem Beispiel im Azure Machine Learning-Beispiel-Repository folgen, sind die Quelldateien bereits im score Ordner verfügbar. Dieser Ordner enthält drei Dateien zum Erstellen der Komponente:
-
score.pyenthält den Quellcode der Komponente. -
score.yamldefiniert die Schnittstelle und andere Details der Komponente. -
conda.yamldefiniert die Laufzeitumgebung der Komponente.
Abrufen eines Skripts, das die Logik enthält
Die score.py Datei enthält eine normale Python-Funktion, die die Modellbewertungslogik ausführt:
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.utils import to_categorical
from keras.callbacks import Callback
from keras.models import load_model
import argparse
from pathlib import Path
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import mlflow
def get_file(f):
f = Path(f)
if f.is_file():
return f
else:
files = list(f.iterdir())
if len(files) == 1:
return files[0]
else:
raise Exception("********This path contains more than one file*******")
def parse_args():
# setup argparse
parser = argparse.ArgumentParser()
# add arguments
parser.add_argument(
"--input_data", type=str, help="path containing data for scoring"
)
parser.add_argument(
"--input_model", type=str, default="./", help="input path for model"
)
parser.add_argument(
"--output_result", type=str, default="./", help="output path for model"
)
# parse args
args = parser.parse_args()
# return args
return args
def score(input_data, input_model, output_result):
test_file = get_file(input_data)
data_test = pd.read_csv(test_file, header=None)
img_rows, img_cols = 28, 28
input_shape = (img_rows, img_cols, 1)
# Read test data
X_test = np.array(data_test.iloc[:, 1:])
y_test = to_categorical(np.array(data_test.iloc[:, 0]))
X_test = (
X_test.reshape(X_test.shape[0], img_rows, img_cols, 1).astype("float32") / 255
)
# Load model
files = [f for f in os.listdir(input_model) if f.endswith(".h5")]
model = load_model(input_model + "/" + files[0])
# Log metrics of the model
eval = model.evaluate(X_test, y_test, verbose=0)
mlflow.log_metric("Final test loss", eval[0])
print("Test loss:", eval[0])
mlflow.log_metric("Final test accuracy", eval[1])
print("Test accuracy:", eval[1])
# Score model using test data
y_predict = model.predict(X_test)
y_result = np.argmax(y_predict, axis=1)
# Output result
np.savetxt(output_result + "/predict_result.csv", y_result, delimiter=",")
def main(args):
score(args.input_data, args.input_model, args.output_result)
# run script
if __name__ == "__main__":
# parse args
args = parse_args()
# call main function
main(args)
Der Code in score.py verwendet drei Befehlszeilenargumente: input_data, , input_modelund output_result. Das Programm bewertet das Eingabemodell mithilfe von Eingabedaten und gibt dann das Ergebnis aus.
Definieren der Komponente mithilfe von YAML
In diesem Abschnitt erfahren Sie, wie Sie eine Komponentenspezifikation im gültigen YAML-Komponentenspezifikationsformat erstellen. Diese Datei gibt folgende Informationen an:
- Metadaten: Name, Anzeigename, Version, Typ usw.
- Schnittstelle: Eingaben und Ausgaben
- Befehl, Code und Umgebung: Der Befehl, code und die Umgebung, mit dem die Komponente ausgeführt wird
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command
name: score_image_classification_keras
display_name: Score Image Classification Keras
inputs:
input_data:
type: uri_folder
input_model:
type: uri_folder
outputs:
output_result:
type: uri_folder
code: ./
command: python score.py --input_data ${{inputs.input_data}} --input_model ${{inputs.input_model}} --output_result ${{outputs.output_result}}
environment:
conda_file: ./conda.yaml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
-
nameist der eindeutige Bezeichner der Komponente. Der Anzeigename istScore Image Classification Keras - Diese Komponente verfügt über zwei Eingaben und eine Ausgabe.
- Der Quellcodepfad wird im
codeAbschnitt definiert. Wenn die Komponente in der Cloud ausgeführt wird, werden alle Dateien aus diesem Pfad als Momentaufnahme der Komponente hochgeladen. - Der
commandAbschnitt gibt den Befehl an, der ausgeführt werden soll, wenn die Komponente ausgeführt wird. - Der
environmentAbschnitt enthält ein Docker-Image und eine Conda-YAML-Datei. Die Quelldatei befindet sich im Beispiel-Repository.
Sie verfügen jetzt über alle Quelldateien für die Modellbewertungskomponente.
Laden der Komponenten zum Erstellen einer Pipeline
Sie können die Datenvorbereitungskomponente und die Modellschulungskomponente importieren, die von Python-Funktionen definiert werden, genau wie normale Python-Funktionen.
Der folgende Code importiert die prepare_data_component() Dateien und keras_train_component() Funktionen aus der prep_component.py Datei im prep Ordner bzw. die train_component Datei im train Ordner.
%load_ext autoreload
%autoreload 2
# load component function from component python file
from prep.prep_component import prepare_data_component
from train.train_component import keras_train_component
# print hint of components
help(prepare_data_component)
help(keras_train_component)
Sie können die load_component() Funktion verwenden, um die Scorekomponente zu laden, die von YAML definiert wird.
# load component function from yaml
keras_score_component = load_component(source="./score/score.yaml")Laden registrierter Komponenten aus dem Arbeitsbereich
Hinweis
Um registrierte Komponenten aus Ihrem Arbeitsbereich zu laden, müssen Sie zuerst Ihre Arbeitsbereichsverbindung konfigurieren, wie im Abschnitt "Zugriff auf Ihren Arbeitsbereich abrufen" beschrieben. Das ml_client Objekt ist für die folgenden Vorgänge erforderlich.
Wenn Sie Komponenten haben, die bereits in Ihrem Arbeitsbereich registriert sind, können Sie sie direkt mit der ml_client.components.get() Methode laden. Dieser Ansatz ist nützlich, wenn Sie Komponenten wiederverwenden möchten, die zuvor von Ihnen registriert oder von anderen Teammitgliedern freigegeben wurden.
# Load a registered component by name and version
registered_component = ml_client.components.get(
name="my_registered_component",
version="1.0.0"
)
# Load the latest version of a registered component
latest_component = ml_client.components.get(
name="my_registered_component"
)
Sie können alle verfügbaren Komponenten in Ihrem Arbeitsbereich auflisten, um die benötigten Komponenten zu finden:
# List all components in the workspace
components = ml_client.components.list()
for component in components:
print(f"Name: {component.name}, Version: {component.version}")
Nach dem Laden können Sie registrierte Komponenten in Ihrer Pipeline genau wie Komponenten verwenden, die aus lokalen Dateien oder Python-Funktionen geladen wurden.
Erstellen Ihrer Pipeline
Sie haben alle Komponenten und Eingabedaten erstellt und geladen, um die Pipeline zu erstellen. Sie können sie jetzt zu einer Pipeline zusammenstellen.
Hinweis
Um serverlose Berechnung zu verwenden, fügen Sie from azure.ai.ml.entities import ResourceConfiguration am Anfang der Datei hinzu.
Ersetzen Sie dann Folgendes:
-
default_compute=cpu_compute_targetmitdefault_compute="serverless" -
train_node.compute = gpu_compute_targetmittrain_node.resources = ResourceConfiguration(instance_type="Standard_NC6s_v3", instance_count=2)
# define a pipeline containing 3 nodes: Prepare data node, train node, and score node
@pipeline(
default_compute=cpu_compute_target,
)
def image_classification_keras_minist_convnet(pipeline_input_data):
"""E2E image classification pipeline with keras using python sdk."""
prepare_data_node = prepare_data_component(input_data=pipeline_input_data)
train_node = keras_train_component(
input_data=prepare_data_node.outputs.training_data
)
train_node.compute = gpu_compute_target
score_node = keras_score_component(
input_data=prepare_data_node.outputs.test_data,
input_model=train_node.outputs.output_model,
)
# create a pipeline
pipeline_job = image_classification_keras_minist_convnet(pipeline_input_data=mnist_ds)
Die Pipeline verfügt über eine Standardcompute cpu_compute_target. Wenn Sie keine Berechnung für einen bestimmten Knoten angeben, wird dieser Knoten auf der Standardberechnung ausgeführt.
Die Pipeline verfügt über eine Eingabe auf Pipelineebene, pipeline_input_data. Sie können einer Pipelineneingabe einen Wert zuweisen, wenn Sie einen Pipelineauftrag einreichen.
Die Pipeline enthält drei Knoten: prepare_data_node, train_node, und score_node:
- Der
input_datadesprepare_data_nodeverwendet den Wert vonpipeline_input_data - Die
input_datavontrain_nodeist dietraining_dataAusgabe vonprepare_data_node - Das
input_datavonscore_nodeist dietest_dataAusgabe vonprepare_data_node, und dasinput_modelist dieoutput_modelvontrain_node - Da
train_nodeein CNN-Modell trainiert, können Siegpu_compute_targetals Compute festlegen, um die Trainingsleistung zu verbessern.
Senden Ihres Pipelineauftrags
Nachdem Sie die Pipeline erstellt haben, können Sie den Auftrag an Ihren Arbeitsbereich übermitteln. Um einen Auftrag einzureichen, müssen Sie zuerst eine Verbindung mit einem Arbeitsbereich herstellen.
Erteilen von Zugriff auf Ihren Arbeitsbereich
Konfigurieren von Anmeldeinformationen
Sie verwenden DefaultAzureCredential, um Zugriff auf den Arbeitsbereich zu erhalten.
DefaultAzureCredential sollte die meisten Azure SDK-Authentifizierungsszenarien abdecken können.
Wenn DefaultAzureCredential nicht für Sie funktioniert, sehen Sie sich dieses Beispiel zur Konfiguration von Anmeldeinformationen und das Identitätspaket an.
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()Zugriff auf ein Handles zu einem Arbeitsbereich, der über Compute verfügt
Erstellen Sie ein MLClient Objekt zum Verwalten von Azure Machine Learning-Diensten. Wenn Sie serverlose Berechnung verwenden, müssen Sie diese Berechnungen nicht erstellen.
# Get a handle to workspace
ml_client = MLClient.from_config(credential=credential)
# Retrieve an already attached Azure Machine Learning Compute.
cpu_compute_target = "cpu-cluster"
print(ml_client.compute.get(cpu_compute_target))
gpu_compute_target = "gpu-cluster"
print(ml_client.compute.get(gpu_compute_target))
Wichtig
Dieser Codeausschnitt erwartet, dass die JSON-Datei der Arbeitsbereichskonfiguration im aktuellen Verzeichnis oder im übergeordneten Verzeichnis gespeichert wird. Weitere Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter Erstellen von Arbeitsbereichressourcen. Weitere Informationen zum Speichern der Konfiguration in einer Datei finden Sie unter Erstellen einer Arbeitsbereichskonfigurationsdatei.
Übermitteln des Pipelineauftrags an den Arbeitsbereich
Nachdem Sie nun über einen Handle für Ihren Arbeitsbereich verfügen, können Sie Ihren Pipelineauftrag übermitteln:
pipeline_job = ml_client.jobs.create_or_update(
pipeline_job, experiment_name="pipeline_samples"
)
pipeline_job
Der vorangehende Code sendet diesen Pipelineauftrag für die Bildklassifizierung an ein Experiment mit dem Namen pipeline_samples. Es erstellt automatisch das Experiment, wenn es nicht vorhanden ist.
pipeline_input_data verwendet fashion_ds.
Der Aufruf zum Übermitteln des Experiments wird schnell abgeschlossen und erzeugt eine ähnliche Ausgabe wie die folgende:
| Experiment | Name | type | Der Status | Detailseite |
|---|---|---|---|---|
pipeline_samples |
sharp_pipe_4gvqx6h1fb | Rohrleitung | Wird vorbereitet | Link zu Azure Machine Learning Studio |
Sie können den Pipelinevorgang überwachen, indem Sie auf den Link klicken. Oder Sie können warten, bis sie abgeschlossen ist, indem Sie diesen Code ausführen:
# wait until the job completes
ml_client.jobs.stream(pipeline_job.name)
Wichtig
Der erste Pipelinelauf dauert etwa 15 Minuten. Alle Abhängigkeiten werden heruntergeladen, ein Docker-Image wird erstellt, und die Python-Umgebung wird bereitgestellt und erstellt. Das erneute Ausführen der Pipeline nimmt weniger Zeit in Anspruch, da diese Ressourcen wiederverwendet werden, statt neu erstellt zu werden. Die Gesamtlaufzeit für die Pipeline hängt jedoch von der Arbeitsauslastung Ihrer Skripts und den Prozessen ab, die in den einzelnen Pipelineschritten ausgeführt werden.
Überprüfen von Ausgaben und Debuggen der Pipeline auf der Benutzeroberfläche
Sie können die Seite Link to Azure Machine Learning studio auswählen, die die Auftragsdetails Ihrer Pipeline enthält. Du siehst das Pipelinediagramm.
Sie können die Protokolle und Ausgaben jeder Komponente überprüfen, indem Sie mit der rechten Maustaste auf die Komponente klicken oder die Komponente auswählen, um den Detailbereich zu öffnen. Weitere Informationen zum Debuggen Der Pipeline auf der Benutzeroberfläche finden Sie unter Verwenden von Azure Machine Learning Studio zum Debuggen von Pipelinefehlern.
(Optional) Registrieren von Komponenten in den Arbeitsbereich
In den vorherigen Abschnitten haben Sie eine Pipeline mit drei Komponenten erstellt, um eine Imageklassifizierungsaufgabe abzuschließen. Sie können Komponenten auch für Ihren Arbeitsbereich registrieren, damit sie innerhalb des Arbeitsbereichs freigegeben und wiederverwendet werden können. Das folgende Beispiel zeigt, wie die Datenvorbereitungskomponente registriert wird:
try:
# try get back the component
prep = ml_client.components.get(name="prep_data", version="1")
except:
# if not exists, register component using following code
prep = ml_client.components.create_or_update(prepare_data_component)
# list all components registered in workspace
for c in ml_client.components.list():
print(c)
Sie können ml_client.components.get() verwenden, um eine registrierte Komponente nach Name und Version abzurufen. Sie können ml_client.components.create_or_update() verwenden, um eine Komponente zu registrieren, die zuvor aus einer Python-Funktion oder YAML geladen wurde.
Nächste Schritte
- Weitere Beispiele zum Erstellen von Pipelines mithilfe des Machine Learning SDK finden Sie im Beispielrepository
- Informationen zur Verwendung der Studio-Benutzeroberfläche zum Übermitteln und Debuggen einer Pipeline finden Sie unter Erstellen und Ausführen von Machine Learning-Pipelines mithilfe von Komponenten im Azure Machine Learning Studio
- Informationen zur Verwendung der Azure Machine Learning CLI zum Erstellen von Komponenten und Pipelines finden Sie unter Erstellen und Ausführen von Machine Learning-Pipelines mithilfe von Komponenten mit der Azure Machine Learning CLI
- Informationen zur Einführung von Pipelines in die Produktion unter Verwendung von Batchendpunkten finden Sie unter Bereitstellen von Pipelines mit Batchendpunkten