Freigeben über


Trainieren eines Modells mithilfe eines benutzerdefinierten Docker-Images

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 die SDK v2-Referenz.

In diesem Artikel wird beschrieben, wie Sie ein benutzerdefiniertes Docker-Image verwenden, um Modelle mit Azure Machine Learning zu trainieren. Beispielskripts zeigen, wie Bilder klassifiziert werden, indem sie ein komplexes neurales Netzwerk erstellen.

Azure Machine Learning bietet ein standardmäßig verwendetes Docker-Basisimage. Sie können auch Azure Machine Learning-Umgebungen verwenden, um ein anderes Basisimage anzugeben, z. B. ein verwaltetes Azure Machine Learning-Basisimage oder Ein eigenes benutzerdefiniertes Image. Mit benutzerdefinierten Basisimages können Sie Abhängigkeiten umfassend verwalten und die Komponentenversionen beim Ausführen von Trainingsaufträgen genauer steuern.

Voraussetzungen

Um den Beispielcode auszuführen, muss Ihre Konfiguration eine der folgenden Umgebungen enthalten:

Einrichten eines Trainingsexperiments

Die erste Aufgabe besteht darin, Ihr Schulungsexperiment einzurichten, indem Sie einen Machine Learning-Arbeitsbereich initialisieren, Ihre Umgebung definieren und ein Berechnungsziel konfigurieren.

Initialisieren eines Arbeitsbereichs

Der Azure Machine Learning-Arbeitsbereich ist die Ressource der obersten Ebene für den Dienst. Es gibt Ihnen einen zentralen Ort, an dem Sie mit allen Artefakten arbeiten können, die Sie erstellen. Im Python SDK können Sie auf die Arbeitsbereichsartefakte zugreifen, indem Sie ein Workspace-Objekt erstellen.

Erstellen Sie nach Bedarf ein Workspace Objekt aus der config.json Datei, die Sie als Voraussetzung erstellt haben.

from azureml.core import Workspace

ws = Workspace.from_config()

Definieren der Umgebung

Erstellen Sie ein Environment-Objekt.

from azureml.core import Environment

fastai_env = Environment("fastai2")

Das Basisimage im folgenden Code unterstützt die Bibliothek „fast.ai“, die Funktionen für verteiltes Deep Learning ermöglicht. Weitere Informationen finden Sie im Docker Hub-Repository für „fast.ai“.

Wenn Sie Ihr benutzerdefiniertes Docker-Image verwenden, ist Ihre Python-Umgebung möglicherweise bereits ordnungsgemäß eingerichtet. Legen Sie in diesem Fall das Flag user_managed_dependencies auf True fest, um die integrierte Python-Umgebung Ihres benutzerdefinierten Images zu verwenden. Standardmäßig erstellt Azure Machine Learning eine Conda-Umgebung mit den von Ihnen angegebenen Abhängigkeiten. Der Dienst führt das Skript in dieser Umgebung aus, statt die im Basisimage ggf. installierten Python-Bibliotheken zu verwenden.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Wichtig

Azure Machine Learning unterstützt nur Docker-Images, die die folgende Software enthalten:

  • Ubuntu 18.04 oder höher
  • Conda 4.7.# oder höher
  • Python 3.7 oder höher
  • Eine POSIX-kompatible Shell, die unter /bin/sh verfügbar ist, ist in jedem Containerimage erforderlich, das für schulungen verwendet wird.

Weitere Informationen zum Erstellen und Verwalten von Azure Machine Learning-Umgebungen finden Sie unter Erstellen und Verwenden von Softwareumgebungen in Azure Machine Learning.

Erstellen oder Anfügen eines Computeziels

Sie müssen zum Trainieren des Modells ein Computeziel erstellen. In diesem Tutorial erstellen Sie AmlCompute als Trainingscomputeressource.

Das Erstellen von AmlCompute dauert einige Minuten. Wenn sich die AmlCompute-Ressource bereits in Ihrem Arbeitsbereich befindet, überspringt der Code den Erstellungsprozess.

Wie bei anderen Azure-Diensten gelten für bestimmte Ressourcen (z. B. AmlCompute) in Verbindung mit Azure Machine Learning Service Grenzwerte. Weitere Informationen finden Sie unter Standardgrenzen und wie man höhere Kontingente anfordert.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute
print(compute_target.get_status().serialize())

Wichtig

Verwenden Sie CPU-SKUs für jede Image-Erstellung auf dem Rechner.

Konfigurieren Sie Ihren Trainingsjob

Verwenden Sie für dieses Tutorial das auf GitHub verfügbare Trainingsskript train.py. In der Praxis können Sie jedes benutzerdefinierte Trainingsskript verwenden und so, wie es ist, mit Azure Machine Learning ausführen.

Erstellen Sie eine ScriptRunConfig-Ressource, um Ihren Auftrag zur Ausführung auf der gewünschten Berechnungsressource zu konfigurieren.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Reichen Sie Ihren Trainingsjob ein

Wenn Sie eine Trainingsausführung mithilfe eines ScriptRunConfig-Objekts übermitteln, gibt die submit-Methode ein Objekt vom Typ ScriptRun zurück. Das zurückgegebene ScriptRun-Objekt ermöglicht den programmgesteuerten Zugriff auf Informationen zur Trainingsausführung.

from azureml.core import Experiment

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

Warnung

Zum Ausführen von Trainingsskripts wird von Azure Machine Learning das gesamte Quellverzeichnis kopiert. Sind vertrauliche Daten vorhanden, die nicht hochgeladen werden sollen, verwenden Sie für diese eine IGNORE-Datei, oder legen Sie sie nicht im Quellverzeichnis ab. Greifen Sie stattdessen über einen Datenspeicher auf Ihre Daten zu.