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:Azure CLI ML-Erweiterung v2 (aktuell)
Python SDK azure-ai-ml v2 (aktuell)
Für die Entwicklung komplexer Pipelines für maschinelles Lernen werden üblicherweise Pipelinekomponenten verwendet. Sie können mehrere Schritte in einer Pipelinekomponente gruppieren, die Sie als einzelnen Schritt zum Ausführen von Aufgaben wie Datenvorverarbeitung oder Modelltraining verwenden.
In diesem Artikel erfahren Sie, wie Sie mehrere Schritte in Komponenten schachteln, mit denen Sie komplexer Azure Machine Learning-Pipelineaufträge erstellen. Sie können diese mehrstufigen Komponenten eigenständig entwickeln und testen. Dies erleichtert Ihnen die Freigabe Ihrer Arbeit und die Zusammenarbeit mit Teammitgliedern.
Durch Verwendung von mehrstufigen Pipelinekomponenten können Sie sich auf die Entwicklung von Teilaufgaben konzentrieren und diese ganz einfach in den gesamten Pipelineauftrag integrieren. Eine Pipelinekomponente verfügt über eine klar definierte Schnittstelle für Ein- und Ausgaben. Benutzer der mehrstufigen Pipelinekomponente müssen also die Implementierungsdetails der Komponente nicht kennen.
Sowohl Pipelinekomponenten als auch -aufträge enthalten Gruppen von Schritten oder Komponenten, doch das Definieren einer Pipelinekomponente unterscheidet sich folgendermaßen vom Definieren eines Pipelineauftrags:
- Pipelinekomponenten definieren nur die Schnittstellen von Ein- und Ausgaben. In einer Pipelinekomponente legen Sie die Ein- und Ausgabetypen explizit fest, weisen ihnen jedoch nicht direkt Werte zu.
- Pipelinekomponenten haben keine Laufzeiteinstellungen, Sie können also keine Compute- oder Datenknoten in der Pipelinekomponente hartcodieren. Stattdessen müssen Sie diese Knoten zu Eingaben auf Pipelineebene höherstufen und ihnen während der Laufzeit Werte zuweisen.
- Einstellungen auf Pipelineebene wie
default_datastore
unddefault_compute
sind auch Laufzeiteinstellungen, die nicht zu Definitionen von Pipelinekomponenten gehören.
Voraussetzungen
- Richten Sie einen Azure Machine Learning-Arbeitsbereich ein. Weitere Informationen finden Sie unter Erstellen eines Arbeitsbereichs.
- Machen Sie sich mit den Konzepten von Azure Machine Learning-Pipelines und -Komponenten sowie mit der Verwendung von Komponenten in Azure Machine Learning-Pipelines vertraut.
- Installieren Sie die Azure CLI und die Erweiterung
ml
. Weitere Informationen finden Sie unter Installieren, Einrichten und Verwenden der CLI (v2). Dieml
-Erweiterung wird automatisch installiert, wenn Sie den Befehlaz ml
zum ersten Mal ausführen. - Machen Sie sich damit vertraut, wie Sie Azure Machine Learning-Pipelines und -Komponenten mit der CLI v2 erstellen und ausführen.
Erstellen von Pipelineaufträgen mit Pipelinekomponenten
Sie können mehrere Schritte als Pipelinekomponente definieren und dann die mehrstufige Komponente wie jede andere Komponente verwenden, um einen Pipelineauftrag zu erstellen.
Definieren von Pipelinekomponenten
Sie können eine Pipelinekomponente mithilfe mehrerer Komponenten erstellen, ähnlich wie Sie Pipelineaufträge mit Komponenten erstellen.
Das folgende Beispiel stammt aus der Beispielpipeline pipeline_with_train_eval_pipeline_component im GitHub-Repository mit Azure Machine Learning-Beispielen.
Die Beispielkomponente definiert einen Pipelineauftrag mit drei Knoten. Die beiden Knoten im Beispielpipelineauftrag verwenden jeweils die lokal definierten Komponenten train
, score
und eval
. Im folgenden Code wird die Pipelinekomponente definiert:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
type: pipeline
name: train_pipeline_component
display_name: train_pipeline_component
description: Dummy train-score-eval pipeline component with local components
inputs:
training_data:
type: uri_folder # default/path is not supported for data type
test_data:
type: uri_folder # default/path is not supported for data type
training_max_epochs:
type: integer
training_learning_rate:
type: number
learning_rate_schedule:
type: string
default: 'time-based'
train_node_compute: # example to show how to promote compute as input
type: string
outputs:
trained_model:
type: uri_folder
evaluation_report:
type: uri_folder
jobs:
train_job:
type: command
component: ./train/train.yml
inputs:
training_data: ${{parent.inputs.training_data}}
max_epochs: ${{parent.inputs.training_max_epochs}}
learning_rate: ${{parent.inputs.training_learning_rate}}
learning_rate_schedule: ${{parent.inputs.learning_rate_schedule}}
outputs:
model_output: ${{parent.outputs.trained_model}}
compute: ${{parent.inputs.train_node_compute}}
score_job:
type: command
component: ./score/score.yml
inputs:
model_input: ${{parent.jobs.train_job.outputs.model_output}}
test_data: ${{parent.inputs.test_data}}
outputs:
score_output:
mode: upload
evaluate_job:
type: command
component: ./eval/eval.yml
inputs:
scoring_result: ${{parent.jobs.score_job.outputs.score_output}}
outputs:
eval_output: ${{parent.outputs.evaluation_report}}
Verwenden von Komponenten in Pipelines
Sie verweisen auf Pipelinekomponenten als untergeordnete Aufträge in einem Pipelineauftrag genauso wie auf andere Komponententypen. Sie können Laufzeiteinstellungen wie default_datastore
und default_compute
auf der Ebene des Pipelineauftrags vornehmen.
Sie müssen alle Parameter, die Sie während der Laufzeit ändern möchten, als Pipelineauftragseingaben höherstufen. Andernfalls sind diese in der Pipelinekomponente hartcodiert. Durch Höherstufen der Computedefinition auf eine Eingabe auf Pipelineebene werden heterogene Pipelines unterstützt, die unterschiedliche Computeziele in verschiedenen Schritten verwenden können.
Um den Pipelineauftrag zu übermitteln, bearbeiten Sie cpu-cluster
im Abschnitt default_compute
, bevor Sie den Befehl az ml job create -f pipeline.yml
ausführen.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
display_name: pipeline_with_pipeline_component
experiment_name: pipeline_with_pipeline_component
description: Select best model trained with different learning rate
type: pipeline
inputs:
pipeline_job_training_data:
type: uri_folder
path: ./data
pipeline_job_test_data:
type: uri_folder
path: ./data
pipeline_job_training_learning_rate1: 0.1
pipeline_job_training_learning_rate2: 0.01
compute_train_node: cpu-cluster
compute_compare_node: cpu-cluster
outputs:
pipeline_job_best_model:
mode: upload
pipeline_job_best_result:
mode: upload
settings:
default_datastore: azureml:workspaceblobstore
default_compute: azureml:cpu-cluster
continue_on_step_failure: false
jobs:
train_and_evaluate_model1:
type: pipeline
component: ./components/train_pipeline_component.yml
inputs:
training_data: ${{parent.inputs.pipeline_job_training_data}}
test_data: ${{parent.inputs.pipeline_job_test_data}}
training_max_epochs: 20
training_learning_rate: ${{parent.inputs.pipeline_job_training_learning_rate1}}
train_node_compute: ${{parent.inputs.compute_train_node}}
train_and_evaluate_model2:
type: pipeline
component: ./components/train_pipeline_component.yml
inputs:
training_data: ${{parent.inputs.pipeline_job_training_data}}
test_data: ${{parent.inputs.pipeline_job_test_data}}
training_max_epochs: 20
training_learning_rate: ${{parent.inputs.pipeline_job_training_learning_rate2}}
train_node_compute: ${{parent.inputs.compute_train_node}}
compare:
type: command
component: ./components/compare2/compare2.yml
compute: ${{parent.inputs.compute_compare_node}} # example to show how to promote compute as pipeline level inputs
inputs:
model1: ${{parent.jobs.train_and_evaluate_model1.outputs.trained_model}}
eval_result1: ${{parent.jobs.train_and_evaluate_model1.outputs.evaluation_report}}
model2: ${{parent.jobs.train_and_evaluate_model2.outputs.trained_model}}
eval_result2: ${{parent.jobs.train_and_evaluate_model2.outputs.evaluation_report}}
outputs:
best_model: ${{parent.outputs.pipeline_job_best_model}}
best_result: ${{parent.outputs.pipeline_job_best_result}}
Hinweis
Um Komponenten auftragsübergreifend im Arbeitsbereich freizugeben oder wiederzuverwenden, müssen Sie die Komponenten registrieren. Sie können Pipelinekomponenten mithilfe von az ml component create
registrieren.
Weitere Beispiele und Informationen zu Azure CLI-Pipelinekomponenten finden Sie im Repository mit Azure Machine Learning-Beispielen unter pipelines-with-components.