Komponenten erstellen
Mit Komponenten können Sie wiederverwendbare Skripts erstellen, die problemlos von allen Benutzern innerhalb desselben Azure Machine Learning-Arbeitsbereichs genutzt werden können. Sie können auch Komponenten verwenden, um eine Azure Machine Learning-Pipeline zu erstellen.
Verwenden einer Komponente
Es gibt zwei Hauptgründe, warum Sie Komponenten verwenden sollten:
- Um eine Pipeline zu erstellen.
- Um sofort einsatzbereiten Code zu teilen.
Erstellen Sie Komponenten, wenn Sie experimentellen Code für wiederholbare Produktionsworkflows vorbereiten.
Innerhalb von Azure Machine Learning können Sie eine Komponente erstellen, um Code (in Ihrer bevorzugten Sprache) im Arbeitsbereich zu speichern. Idealerweise entwerfen Sie eine Komponente, die eine spezifische Aktion ausführt, welche in Ihrem Machine Learning-Workflow relevant ist.
Eine Komponente kann z. B. aus einem Python-Skript bestehen, das Ihre Daten normalisiert, ein Machine Learning-Modell trainiert oder ein Modell auswertet.
Komponenten können problemlos für andere Azure Machine Learning-Benutzer freigegeben werden, die Komponenten in ihren eigenen Azure Machine Learning-Pipelines wiederverwenden können.
Erstellen einer Komponente
Eine Komponente besteht aus drei Teilen:
- Metadaten: Enthält den Namen, die Version usw. der Komponente.
- Schnittstelle: Enthält die erwarteten Eingabeparameter (z. B. ein Dataset oder Hyperparameter) und die erwartete Ausgabe (z. B. Metriken und Artefakte).
- Befehl, Code und Umgebung: Gibt an, wie der Code ausgeführt wird.
Zum Erstellen einer Komponente benötigen Sie zwei Dateien:
- Ein Skript, das den Workflow enthält, den Sie ausführen möchten.
- Eine YAML-Datei zum Definieren der Metadaten, der Schnittstelle und des Befehls, des Codes und der Umgebung der Komponente.
Sie können die YAML-Datei erstellen oder die command_component()-Funktion als Decorator verwenden, um die YAML-Datei zu erstellen.
Tipp
Diese Einheit konzentriert sich auf die Definition einer Komponente in YAML. Alternativ erfahren Sie, wie Sie Mithilfe von command_component()Komponenten erstellen.
Beispielsweise verfügen Sie über ein Python-Skript prep.py, das die Daten vorbereitet, indem fehlende Werte entfernt und die Daten normalisiert werden:
# import libraries
import argparse
import pandas as pd
import numpy as np
from pathlib import Path
from sklearn.preprocessing import MinMaxScaler
# setup arg parser
parser = argparse.ArgumentParser()
# add arguments
parser.add_argument("--input_data", dest='input_data',
type=str)
parser.add_argument("--output_data", dest='output_data',
type=str)
# parse args
args = parser.parse_args()
# read the data
df = pd.read_csv(args.input_data)
# remove missing values
df = df.dropna()
# normalize the data
scaler = MinMaxScaler()
num_cols = ['feature1','feature2','feature3','feature4']
df[num_cols] = scaler.fit_transform(df[num_cols])
# save the data as a csv
output_df = df.to_csv(
(Path(args.output_data) / "prepped-data.csv"),
index = False
)
Um eine Komponente für das prep.py Skript zu erstellen, definieren Sie eine YAML-Datei mit dem Namen prep.yml:
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: prep_data
display_name: Prepare training data
version: 1
type: command
inputs:
input_data:
type: uri_file
outputs:
output_data:
type: uri_file
code: ./src
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
command: >-
python prep.py
--input_data ${{inputs.input_data}}
--output_data ${{outputs.output_data}}
Beachten Sie, dass die YAML-Datei auf das Skript prep.py verweist, das im Ordner src gespeichert ist. Sie können die Komponente mit dem folgenden Code laden:
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
Wenn Sie die Komponente geladen haben, können Sie sie in einer Pipeline verwenden oder die Komponente registrieren.
Registrieren einer Komponente
Um eine lokale Komponente in einer Pipeline zu verwenden, behalten Sie das Skript und die YAML-Definition zusammen. Um die Komponente für andere Arbeitsbereichsbenutzer zugänglich zu machen, registrieren Sie sie im Azure Machine Learning Arbeitsbereich.
Sie können eine Komponente mit dem folgenden Code registrieren:
prep = ml_client.components.create_or_update(loaded_component_prep)