Een model trainen met behulp van een aangepaste Docker-installatiekopieën

VAN TOEPASSING OP:Python SDK azureml v1

In dit artikel leert u hoe u een aangepaste Docker-installatiekopieën gebruikt wanneer u modellen traint met Azure Machine Learning. U gebruikt de voorbeeldscripts in dit artikel om huisdierafbeeldingen te classificeren door een convolutioneel neuraal netwerk te maken.

Azure Machine Learning biedt een standaard docker-basisinstallatiekopieën. U kunt ook Azure Machine Learning-omgevingen gebruiken om een andere basisinstallatiekopieën op te geven, zoals een van de onderhouden Azure Machine Learning-basisinstallatiekopieën of uw eigen aangepaste installatiekopieën. Met aangepaste basisinstallatiekopieën kunt u uw afhankelijkheden nauwkeurig beheren en meer controle houden over onderdeelversies bij het uitvoeren van trainingstaken.

Vereisten

Voer de code uit op een van deze omgevingen:

Een trainingsexperiment instellen

In deze sectie stelt u uw trainingsexperiment in door een werkruimte te initialiseren, uw omgeving te definiëren en een rekendoel te configureren.

Een werkruimte initialiseren

De Azure Machine Learning-werkruimte is de resource op het hoogste niveau voor de service. Het biedt u een centrale plek om te werken met alle artefacten die u maakt. In de Python SDK hebt u toegang tot de werkruimte-artefacten door een Workspace -object te maken.

Maak een Workspace object van het bestand config.json dat u als vereiste hebt gemaakt.

from azureml.core import Workspace

ws = Workspace.from_config()

Uw omgeving definiëren

Maak een Environment -object.

from azureml.core import Environment

fastai_env = Environment("fastai2")

De opgegeven basisinstallatiekopieën in de volgende code ondersteunen de fast.ai-bibliotheek, die gedistribueerde deep learning-mogelijkheden mogelijk maakt. Zie de fast.ai Docker Hub opslagplaats voor meer informatie.

Wanneer u uw aangepaste Docker-installatiekopieën gebruikt, hebt u uw Python-omgeving mogelijk al correct ingesteld. In dat geval stelt u de vlag in op om True de user_managed_dependencies ingebouwde Python-omgeving van uw aangepaste installatiekopie te gebruiken. Azure Machine Learning bouwt standaard een Conda-omgeving met afhankelijkheden die u hebt opgegeven. De service voert het script uit in die omgeving in plaats van python-bibliotheken te gebruiken die u op de basisinstallatiekopieën hebt geïnstalleerd.

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

Een privécontainerregister gebruiken (optioneel)

Als u een installatiekopieën wilt gebruiken uit een privécontainerregister dat zich niet in uw werkruimte bevindt, gebruikt docker.base_image_registry u om het adres van de opslagplaats en een gebruikersnaam en wachtwoord op te geven:

# Set the container registry information.
fastai_env.docker.base_image_registry.address = "myregistry.azurecr.io"
fastai_env.docker.base_image_registry.username = "username"
fastai_env.docker.base_image_registry.password = "password"

Een aangepast Dockerfile gebruiken (optioneel)

Het is ook mogelijk om een aangepast Dockerfile te gebruiken. Gebruik deze methode als u niet-Python-pakketten als afhankelijkheden moet installeren. Vergeet niet om de basisinstallatiekopieën in te stellen op None.

# Specify Docker steps as a string. 
dockerfile = r"""
FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210615.v1
RUN echo "Hello from custom container!"
"""

# Set the base image to None, because the image is defined by Dockerfile.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = dockerfile

# Alternatively, load the string from a file.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = "./Dockerfile"

Belangrijk

Azure Machine Learning ondersteunt alleen Docker-installatiekopieën die de volgende software bieden:

  • Ubuntu 18.04 of hoger.
  • Conda 4.7.# of hoger.
  • Python 3.7+.
  • Een POSIX-compatibele shell die beschikbaar is op /bin/sh is vereist in elke containerinstallatiekopie die wordt gebruikt voor training.

Zie Softwareomgevingen maken en gebruiken voor meer informatie over het maken en beheren van Azure Machine Learning-omgevingen.

Een rekendoel maken of koppelen

U moet een rekendoel maken voor het trainen van uw model. In deze zelfstudie maakt AmlCompute u als uw trainingsresource voor rekenkracht.

Het maken van AmlCompute duurt enkele minuten. Als de AmlCompute resource zich al in uw werkruimte bevindt, slaat deze code het aanmaakproces over.

Net als bij andere Azure-services gelden er limieten voor bepaalde resources (bijvoorbeeld AmlCompute) die zijn gekoppeld aan de Azure Machine Learning-service. Zie Standaardlimieten en een hoger quotum aanvragen voor meer informatie.

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

Belangrijk

Gebruik CPU-SKU's voor elke build van installatiekopieën op rekenkracht.

Uw trainingstaak configureren

Gebruik voor deze zelfstudie het trainingsscript train.py op GitHub. In de praktijk kunt u elk aangepast trainingsscript uitvoeren en uitvoeren met Azure Machine Learning.

Maak een ScriptRunConfig resource om uw taak te configureren voor uitvoering op het gewenste rekendoel.

from azureml.core import ScriptRunConfig

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

Uw trainingstaak verzenden

Wanneer u een training uitvoert met behulp van een ScriptRunConfig -object, retourneert de submit methode een -object van het type ScriptRun. Het geretourneerde ScriptRun object geeft u programmatische toegang tot informatie over de trainingsuitvoering.

from azureml.core import Experiment

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

Waarschuwing

Azure Machine Learning voert trainingsscripts uit door de hele bronmap te kopiëren. Als u gevoelige gegevens hebt die u niet wilt uploaden, gebruikt u een .ignore-bestand of neemt u dit niet op in de bronmap. In plaats daarvan kunt u toegang krijgen tot uw gegevens met behulp van een gegevensarchief.

Volgende stappen

In dit artikel hebt u een model getraind met behulp van een aangepaste Docker-installatiekopieën. Zie deze andere artikelen voor meer informatie over Azure Machine Learning: