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:
- 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 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 config.json-bestand dat u hebt gemaakt als een vereiste.
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:
- Metrische gegevens voor uitvoering bijhouden tijdens de training.
- Implementeer een model met behulp van een aangepaste Docker-installatiekopieën.