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:
- 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:
- Maak een werkruimteconfiguratiebestand.
- Installeer de Azure Machine Learning SDK.
- Maak een Azure-containerregister of een ander Docker-register dat beschikbaar is op internet.
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:
- Metrische uitvoeringsgegevens bijhouden tijdens de training.
- Implementeer een model met behulp van een aangepaste Docker-installatiekopieën.