Dela via


Träna en modell med hjälp av en anpassad Docker-avbildning

GÄLLER FÖR:Azure Machine Learning SDK v1 för Python

Viktigt!

Den här artikeln innehåller information om hur du använder Azure Machine Learning SDK v1. SDK v1 är inaktuell från och med den 31 mars 2025. Stödet för det upphör den 30 juni 2026. Du kan installera och använda SDK v1 fram till det datumet. Dina befintliga arbetsflöden med SDK v1 fortsätter att fungera efter supportdatumet. De kan dock utsättas för säkerhetsrisker eller förändringar som bryter kompatibiliteten vid arkitektoniska förändringar i produkten.

Vi rekommenderar att du övergår till SDK v2 före den 30 juni 2026. Mer information om SDK v2 finns i Vad är Azure Machine Learning CLI och Python SDK v2? och SDK v2-referensen.

Den här artikeln beskriver hur du använder en anpassad Docker-avbildning för att träna modeller med Azure Machine Learning. Exempelskript visar hur du klassificerar bilder genom att skapa ett konvolutionellt neuralt nätverk.

Azure Machine Learning tillhandahåller en standardbasavbildning för Docker. Du kan också använda Azure Machine Learning-miljöer för att ange en annan basavbildning, till exempel en underhållen Azure Machine Learning-basavbildning eller en egen anpassad avbildning. Med anpassade basavbildningar kan du hantera dina beroenden noggrant och ha bättre kontroll över komponentversioner när du kör träningsjobb.

Förutsättningar

Om du vill köra exempelkoden måste konfigurationen innehålla någon av följande miljöer:

  • Azure Machine Learning-beräkningsinstans med en separat notebook-server som är förinstallerad med Machine Learning SDK och exempelarkivet.

    Den här konfigurationen kräver inga nedladdningar eller annan installation. Information om hur du förbereder den här miljön finns i Skapa resurser för att komma igång.

  • Jupyter Notebook-server. Följande resurser innehåller instruktioner som hjälper dig att förbereda den här miljön:

Konfigurera ett träningsexperiment

Den första uppgiften är att konfigurera ditt träningsexperiment genom att initiera en Machine Learning-arbetsyta, definiera din miljö och konfigurera ett beräkningsmål.

Initiera en arbetsyta

Azure Machine Learning-arbetsytan är den översta resursen för tjänsten. Det ger dig en central plats där du kan arbeta med alla artefakter som du skapar. I Python SDK kan du komma åt arbetsytans artefakter genom att skapa ett Workspace objekt.

Efter behov skapar du ett Workspace objekt från den config.json fil som du skapade som en förutsättning.

from azureml.core import Workspace

ws = Workspace.from_config()

Definiera din miljö

Skapa ett Environment objekt.

from azureml.core import Environment

fastai_env = Environment("fastai2")

Den angivna basavbildningen i följande kod stöder fast.ai-biblioteket, vilket möjliggör distribuerade djupinlärningsfunktioner. Mer information finns i fast.ai Docker Hub-lagringsplats.

När du använder din anpassade Docker-avbildning kanske du redan har konfigurerat Python-miljön korrekt. I så fall anger du user_managed_dependencies flaggan till True för att använda den anpassade avbildningens inbyggda Python-miljö. Som standard skapar Azure Machine Learning en Conda-miljö med beroenden som du har angett. Tjänsten kör skriptet i den miljön i stället för att använda python-bibliotek som du har installerat på basavbildningen.

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

Viktigt!

Azure Machine Learning stöder endast Docker-avbildningar som tillhandahåller följande programvara:

  • Ubuntu 18.04 eller senare
  • Conda 4.7.# eller senare
  • Python 3.7+
  • Ett POSIX-kompatibelt gränssnitt som är tillgängligt på /bin/sh krävs i alla containeravbildningar som används för träning

Mer information om hur du skapar och hanterar Azure Machine Learning-miljöer finns i Skapa och använda programvarumiljöer.

Skapa eller koppla ett beräkningsmål

Du måste skapa ett beräkningsmål för att träna din modell. I den här självstudien skapar du AmlCompute som din träningsberäkningsresurs.

Skapandet av AmlCompute tar några minuter. Om resursen AmlCompute redan finns på din arbetsyta hoppar den här koden över skapandeprocessen.

Precis som med andra Azure-tjänster finns det gränser för vissa resurser (till exempel AmlCompute) som är associerade med Azure Machine Learning-tjänsten. Mer information finns i Standardgränser och hur du begär en högre kvot.

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())

Viktigt!

Använd CPU-SKU:er för alla avbildningar som bygger på beräkning.

Konfigurera ditt träningsjobb

I den här självstudien använder du träningsskriptet train.pyGitHub. I praktiken kan du använda valfritt anpassat träningsskript och köra det, som det är, med Azure Machine Learning.

Skapa en ScriptRunConfig resurs för att konfigurera din uppgift för att köras på det önskade beräkningstargetet.

from azureml.core import ScriptRunConfig

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

Skicka in ditt träningsjobb

När du använder ett ScriptRunConfig objekt för att skicka en träningskörning, returnerar submit metoden ett objekt av typen ScriptRun. Det returnerade ScriptRun objektet ger dig programmatisk åtkomst till information om träningskörningen.

from azureml.core import Experiment

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

Varning

Azure Machine Learning kör träningsskript genom att kopiera hela källkatalogen. Om du har känsliga data som du inte vill ladda upp använder du en .ignore-fil eller tar inte med den i källkatalogen. I stället kan du komma åt dina data med hjälp av ett datalager.