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 afbeeldingen van huisdieren te classificeren door een convolutionele neurale 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 betere controle houden over onderdeelversies bij het uitvoeren van trainingstaken.

Vereisten

Voer de code uit op een van deze omgevingen:

  • Azure Machine Learning-rekenproces (geen downloads of installatie nodig):
    • Voltooi de zelfstudie Resources maken om aan de slag te gaan om een toegewezen notebookserver te maken die vooraf is geladen met de SDK en de voorbeeldopslagplaats.
  • Uw eigen Jupyter Notebook-server:

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 geeft u een centrale plek om te werken met alle artefacten die u maakt. In de Python SDK hebt u toegang tot de werkruimteartefacten door een Workspace object te maken.

Maak een Workspace object op basis 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, waarmee gedistribueerde deep learning-mogelijkheden mogelijk zijn. Zie de fast.ai Docker Hub-opslagplaats voor meer informatie.

Wanneer u uw aangepaste Docker-installatiekopieën gebruikt, is uw Python-omgeving mogelijk al goed ingesteld. Stel in dat geval de vlag in op True het gebruik van de user_managed_dependencies ingebouwde Python-omgeving van uw aangepaste installatiekopie. 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 dit 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 wilt 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 biedt alleen ondersteuning voor 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ën die worden 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 een paar minuten duurt. 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 hoe u een hoger quotum aanvraagt 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

Cpu-SKU's gebruiken voor elke installatiekopieën die zijn gebaseerd op rekenkracht.

Uw trainingstaak configureren

Gebruik voor deze zelfstudie het trainingsscript train.py op GitHub. In de praktijk kunt u elk aangepast trainingsscript gebruiken 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 indienen

Wanneer u een training verzendt 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 volledige bronmap te kopiëren. Als u gevoelige gegevens hebt die u niet wilt uploaden, gebruikt u een .ignore-bestand of neemt u het niet op in de bronmap. Open in plaats daarvan 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: