Freigeben über


Trainieren von Scikit-Learn-Modellen im Maßstab mit Azure Machine Learning (SDK v1)

GILT FÜR:Azure Machine Learning SDK v1 für Python

Wichtig

Dieser Artikel enthält Informationen zur Verwendung des Azure Machine Learning SDK v1. SDK v1 ist ab dem 31. März 2025 veraltet. Der Support für sie endet am 30. Juni 2026. Sie können SDK v1 bis zu diesem Datum installieren und verwenden. Ihre vorhandenen Workflows mit SDK v1 funktionieren weiterhin nach dem Enddatum des Supports. Sie können jedoch Sicherheitsrisiken oder Breaking Changes im Falle von Architekturänderungen im Produkt ausgesetzt sein.

Es wird empfohlen, vor dem 30. Juni 2026 zum SDK v2 zu wechseln. Weitere Informationen zu SDK v2 finden Sie unter Was ist Azure Machine Learning CLI und Python SDK v2? und der SDK v2 Referenz.

In diesem Artikel erfahren Sie, wie Sie Ihre Scikit-Learn-Schulungsskripts mit Azure Machine Learning ausführen.

Mit den Beispielskripts in diesem Artikel werden Irisbilder zum Erstellen eines Machine Learning-Modells auf der Grundlage des Iris-Datasets von Scikit-learn klassifiziert.

Ganz gleich, ob Sie ein Machine Learning Scikit-Learn-Modell von Grund auf trainieren oder ein vorhandenes Modell in die Cloud integrieren, sie können Azure Machine Learning verwenden, um Open-Source-Schulungsaufträge mithilfe von elastischen Cloud-Computeressourcen zu skalieren. Sie können Modelle auf Produktionsniveau mit Azure Machine Learning erstellen, bereitstellen, verwenden und überwachen.

Voraussetzungen

Sie können diesen Code entweder in einer Azure Machine Learning Computeinstanz oder in Ihrem eigenen Jupyter Notebook ausführen:

  • Azure Machine Learning Computeinstanz

    • Schließen Sie das Quickstart: Erste Schritte mit Azure Machine Learning ab, um eine Computeinstanz zu erstellen. Jede Compute-Instanz enthält einen dedizierten Notebook-Server, der vorab mit dem SDK und dem Notebook-Beispielrepository geladen wurde.
    • Wählen Sie im Azure Machine Learning studio die Registerkarte "Notizbuch" aus. Im Beispieltrainingsordner finden Sie im folgenden Ordner ein fertiges und erweitertes Notebook: how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn.
    • Sie können den vorab aufgefüllten Code im Beispieltrainingsordner verwenden, um dieses Tutorial durchzugehen.
  • Erstellen Sie einen Jupyter Notebook Server, und führen Sie den Code in den folgenden Abschnitten aus.

Einrichten des Experiments

In diesem Abschnitt wird das Schulungsexperiment eingerichtet, indem die erforderlichen Python Pakete geladen, ein Arbeitsbereich initialisiert, die Schulungsumgebung definiert und das Schulungsskript vorbereitet wird.

Initialisieren eines Arbeitsbereichs

Der arbeitsbereich Azure Machine Learning ist die Ressource der obersten Ebene für den Dienst. Er stellt den zentralen Ort für die Arbeit mit allen erstellten Artefakten dar. Im Python SDK können Sie auf die Arbeitsbereichsartefakte zugreifen, indem Sie ein workspace-Objekt erstellen.

Erstellen Sie ein Arbeitsbereichsobjekt aus der Datei config.json, die im Abschnitt „Voraussetzungen“ erstellt wurde.

from azureml.core import Workspace

ws = Workspace.from_config()

Vorbereiten von Skripts

In diesem Lernprogramm wird das skript training train_iris.py bereits für Sie bereitgestellt. In der Praxis sollten Sie alle benutzerdefinierten Schulungsskripts übernehmen und mit Azure Machine Learning ausführen können, ohne ihren Code ändern zu müssen.

Hinweis

  • Das bereitgestellte Schulungsskript zeigt, wie Sie einige Metriken während eines Azure Machine Learning-Laufs mit dem Run-Objekt innerhalb des Skripts protokollieren.
  • Das bereitgestellte Trainingsskript verwendet Beispieldaten aus der iris = datasets.load_iris()-Funktion. Informationen zum Verwenden und Zugreifen auf Ihre eigenen Daten finden Sie im Artikel zum Trainieren mit Datasets. Sie erfahren, wie Sie Daten während des Trainings verfügbar machen.

Definieren der Umgebung

Um die Azure Machine Learning Environment zu definieren, die die Abhängigkeiten Ihres Schulungsskripts kapselt, können Sie entweder eine benutzerdefinierte Umgebung festlegen oder eine der kuratierten Azure Machine Learning-Umgebungen verwenden.

Verwenden einer zusammengestellten Umgebung

Optional stellt Azure Machine Learning vordefinierte, curated Environments bereit, wenn Sie ihre eigene Umgebung nicht definieren möchten.

Wenn Sie eine zusammengestellte Umgebung verwenden möchten, können Sie stattdessen den folgenden Befehl ausführen:

from azureml.core import Environment

sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')

Erstellen einer benutzerdefinierten Umgebung

Sie können auch eine eigene benutzerdefinierte Umgebung erstellen. Definieren Sie Ihre Conda-Abhängigkeiten in einer YAML-Datei. In diesem Beispiel hat die Datei den Namen conda_dependencies.yml.

dependencies:
  - python=3.10
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

Erstellen Sie eine Azure Machine Learning Umgebung aus dieser Conda-Umgebungsspezifikation. Die Umgebung wird zur Laufzeit in einen Docker-Container gepackt.

from azureml.core import Environment

sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')

Weitere Informationen zum Erstellen und Verwenden von Umgebungen finden Sie unter Create and use software environments in Azure Machine Learning.

Konfigurieren und Übermitteln Ihrer Trainingsausführung

Erstellen eines ScriptRunConfig-Elements

Erstellen Sie ein ScriptRunConfig-Objekt, um die Konfigurationsdetails Ihres Trainingsauftrags anzugeben, einschließlich Ihres Trainingsskripts, der zu verwendenden Umgebung und des Computeziels für die Ausführung. Alle Argumente des Trainingsskripts werden über die Befehlszeile übergeben, wenn sie im Parameter arguments angegeben sind.

Mit dem folgenden Code wird ein ScriptRunConfig-Objekt zum Übermitteln Ihres Auftrags zur Ausführung an Ihren lokalen Computer konfiguriert.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      environment=sklearn_env)

Falls Sie Ihren Auftrag stattdessen in einem Remotecluster ausführen möchten, können Sie das gewünschte Computeziel für den Parameter compute_target von ScriptRunConfig angeben.

from azureml.core import ScriptRunConfig

compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      compute_target=compute_target,
                      environment=sklearn_env)

Übermitteln Ihrer Ausführung

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)

Warnung

Azure Machine Learning führt Schulungsskripts aus, indem das gesamte Quellverzeichnis kopiert wird. Sind vertrauliche Daten vorhanden, die nicht hochgeladen werden sollen, verwenden Sie die IGNORE-Datei, oder platzieren Sie sie nicht im Quellverzeichnis. Greifen Sie stattdessen mithilfe eines Azure Machine Learning dataset auf Ihre Daten zu.

Was passiert während der Ausführung

Die Ausführung durchläuft die folgenden Phasen:

  • Vorbereitung: Ein Docker-Image wird entsprechend der definierten Umgebung erstellt. Das Image wird in die Containerregistrierung des Arbeitsbereichs hochgeladen und für spätere Ausführungen zwischengespeichert. Darüber hinaus werden Protokolle in den Ausführungsverlauf gestreamt, mit deren Hilfe der Status überwacht werden kann. Wenn stattdessen eine zusammengestellte Umgebung angegeben wird, wird das zwischengespeicherte Image verwendet, das diese zusammengestellte Umgebung unterstützt.

  • Skalierung: Der Cluster versucht ein Hochskalieren, wenn der Batch KI-Cluster mehr Knoten zur Ausführung benötigt, als derzeit verfügbar sind.

  • Wird ausgeführt: Alle Skripts im Skriptordner werden auf das Computeziel hochgeladen, Datenspeicher werden bereitgestellt oder kopiert, und script wird ausgeführt. Ausgaben aus „stdout“ und dem Ordner ./logs werden in den Ausführungsverlauf gestreamt und können zur Überwachung der Ausführung verwendet werden.

  • Nachbearbeitung: Der Ordner ./outputs der Ausführung wird in den Ausführungsverlauf kopiert.

Speichern und Registrieren des Modells

Sobald Sie das Modell trainiert haben, können Sie es in Ihrem Arbeitsbereich speichern und registrieren. Die Modellregistrierung bietet die Möglichkeit, Ihre Modelle in Ihrem Arbeitsbereich zu speichern und zu versionieren, um die Modellverwaltung und -bereitstellung zu vereinfachen.

Fügen Sie Ihrem Trainingsskript train_iris.py den folgenden Code hinzu, um das Modell zu speichern.

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

Registrieren Sie das Modell mit dem folgenden Code in Ihrem Arbeitsbereich. Durch die Angabe der Parameter model_framework, model_framework_version und resource_configuration wird die Implementierung von Modellen ohne Code verfügbar. Mit der Modellimplementierung ohne Code können Sie Ihr Modell direkt als Webdienst aus dem registrierten Modell bereitstellen, und das Objekt ResourceConfiguration definiert die Computeressource für den Webdienst.

from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration

model = run.register_model(model_name='sklearn-iris', 
                           model_path='outputs/model.joblib',
                           model_framework=Model.Framework.SCIKITLEARN,
                           model_framework_version='1.5.2',
                           resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))

Bereitstellung

Das soeben registrierte Modell kann genau wie jedes andere registrierte Modell in Azure Machine Learning bereitgestellt werden. Die Schrittanleitung zur Bereitstellung enthält einen Abschnitt zur Registrierung von Modellen, aber Sie können direkt zu Erstellen eines Computeziels für die Bereitstellung springen, da Sie bereits über ein registriertes Modell verfügen.

(Vorschau) Modellimplementierung ohne Code

Wichtig

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese 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.

Anstelle der traditionellen Bereitstellungsroute können Sie auch die Bereitstellung ohne Code (Vorschau) für SciKit-learn verwenden. Die Modellimplementierung ohne Code wird für alle integrierten Scikit-learn-Modelltypen unterstützt. Indem Sie Ihr Modell wie oben gezeigt mit den Parametern model_framework, model_framework_version und resource_configuration registrieren, können Sie einfach die statische Funktion deploy() verwenden, um Ihr Modell bereitzustellen.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

Hinweis

Diese Abhängigkeiten sind im vordefinieren Scikit-learn-Container für Rückschlüsse enthalten.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

Der vollständige how-to umfasst die Bereitstellung in Azure Machine Learning tiefer.

Nächste Schritte

In diesem Artikel haben Sie ein sciKit-learn-Modell trainiert und registriert und sich über Bereitstellungsoptionen informiert. Weitere Informationen zu Azure Machine Learning finden Sie in diesen anderen Artikeln.