Scikit-learn-modellen op schaal trainen met Azure Machine Learning (SDK v1)
VAN TOEPASSING OP: Python SDK azureml v1
In dit artikel leert u hoe u uw scikit-learn-trainingsscripts uitvoert met Azure Machine Learning.
De voorbeeldscripts in dit artikel worden gebruikt om irisbloemafbeeldingen te classificeren om een machine learning-model te bouwen op basis van de irisgegevensset van scikit-learn.
Of u nu een scikit-learn-model voor machine learning traint of een bestaand model naar de cloud brengt, u kunt Azure Machine Learning gebruiken om opensource-trainingstaken uit te schalen met behulp van elastische cloud-rekenresources. U kunt modellen op productieniveau bouwen, implementeren, versien en bewaken met Azure Machine Learning.
Vereisten
U kunt deze code uitvoeren in een Azure Machine Learning-rekenproces of uw eigen Jupyter Notebook:
Azure Machine Learning-rekeninstantie
- Voltooi de quickstart: Aan de slag met Azure Machine Learning om een rekenproces te maken. Elk rekenproces bevat een toegewezen notebookserver die vooraf is geladen met de SDK en de voorbeeldopslagplaats voor notebooks.
- Selecteer het notitiebloktabblad in de Azure Machine Learning-studio. Ga in de trainingsmap met voorbeelden naar een voltooid en uitgebreid notebook door naar deze map te navigeren: how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn folder.
- U kunt de vooraf ingevulde code in de voorbeeldtrainingsmap gebruiken om deze zelfstudie te voltooien.
Maak een Jupyter Notebook-server en voer de code uit in de volgende secties.
Het experiment instellen
In deze sectie wordt het trainingsexperiment ingesteld door de vereiste Python-pakketten te laden, een werkruimte te initialiseren, de trainingsomgeving te definiëren en het trainingsscript voor te bereiden.
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 werkruimteartefacten door een workspace
object te maken.
Maak een werkruimteobject op basis van het config.json
bestand dat is gemaakt in de sectie Vereisten.
from azureml.core import Workspace
ws = Workspace.from_config()
Scripts voorbereiden
In deze zelfstudie wordt het trainingsscript train_iris.py al voor u verstrekt. In de praktijk moet u elk aangepast trainingsscript kunnen gebruiken en uitvoeren met Azure Machine Learning zonder dat u uw code hoeft te wijzigen.
Notitie
- Het opgegeven trainingsscript laat zien hoe u enkele metrische gegevens kunt registreren bij uw Azure Machine Learning-uitvoering met behulp van het
Run
object in het script. - Het opgegeven trainingsscript maakt gebruik van voorbeeldgegevens van de
iris = datasets.load_iris()
functie. Als u uw eigen gegevens wilt gebruiken en openen, raadpleegt u hoe u traint met gegevenssets om gegevens beschikbaar te maken tijdens de training.
Uw omgeving definiëren
Als u de Azure Machine Learning-omgeving wilt definiëren waarmee de afhankelijkheden van uw trainingsscript worden ingekapseld, kunt u een aangepaste omgeving definiëren of een beheerde Azure Machine Learning-omgeving gebruiken.
Een gecureerde omgeving gebruiken
Optioneel biedt Azure Machine Learning vooraf samengestelde, gecureerde omgevingen als u uw eigen omgeving niet wilt definiëren.
Als u een gecureerde omgeving wilt gebruiken, kunt u in plaats daarvan de volgende opdracht uitvoeren:
from azureml.core import Environment
sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')
Een aangepaste omgeving maken
U kunt ook uw eigen aangepaste omgeving maken. Definieer uw conda-afhankelijkheden in een YAML-bestand; in dit voorbeeld heeft het bestand de naam conda_dependencies.yml
.
dependencies:
- python=3.7
- scikit-learn
- numpy
- pip:
- azureml-defaults
Maak een Azure Machine Learning-omgeving op basis van deze Conda-omgevingsspecificatie. De omgeving wordt tijdens runtime verpakt in een Docker-container.
from azureml.core import Environment
sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')
Zie Software-omgevingen maken en gebruiken in Azure Machine Learning voor meer informatie over het maken en gebruiken van omgevingen.
Uw trainingsuitvoering configureren en verzenden
Een ScriptRunConfig maken
Maak een ScriptRunConfig-object om de configuratiegegevens van uw trainingstaak op te geven, inclusief het trainingsscript, de omgeving die u wilt gebruiken en het rekendoel om uit te voeren.
Argumenten voor uw trainingsscript worden doorgegeven via de opdrachtregel, indien opgegeven in de arguments
parameter.
Met de volgende code wordt een ScriptRunConfig-object geconfigureerd voor het verzenden van uw taak voor uitvoering op uw lokale computer.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory='.',
script='train_iris.py',
arguments=['--kernel', 'linear', '--penalty', 1.0],
environment=sklearn_env)
Als u in plaats daarvan uw taak wilt uitvoeren op een extern cluster, kunt u het gewenste rekendoel opgeven voor de compute_target
parameter ScriptRunConfig.
from azureml.core import ScriptRunConfig
compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
script='train_iris.py',
arguments=['--kernel', 'linear', '--penalty', 1.0],
compute_target=compute_target,
environment=sklearn_env)
Uw uitvoering verzenden
from azureml.core import Experiment
run = Experiment(ws,'Tutorial-TrainIRIS').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 Azure Machine Learning-gegevensset.
Wat gebeurt er tijdens de uitvoering van de uitvoering
Terwijl de uitvoering wordt uitgevoerd, worden de volgende fasen doorlopen:
Voorbereiden: Er wordt een Docker-installatiekopieën gemaakt op basis van de gedefinieerde omgeving. De installatiekopieën worden geüpload naar het containerregister van de werkruimte en in de cache opgeslagen voor latere uitvoeringen. Logboeken worden ook gestreamd naar de uitvoeringsgeschiedenis en kunnen worden bekeken om de voortgang te controleren. Als in plaats daarvan een gecureerde omgeving is opgegeven, wordt de back-up van de gecureerde omgeving in de cache gebruikt.
Schalen: Het cluster probeert omhoog te schalen als voor het Batch AI-cluster meer knooppunten nodig zijn om de uitvoering uit te voeren dan momenteel beschikbaar is.
Wordt uitgevoerd: Alle scripts in de scriptmap worden geüpload naar het rekendoel, gegevensarchieven worden gekoppeld of gekopieerd en de
script
scripts worden uitgevoerd. Uitvoer van stdout en de map ./logs worden gestreamd naar de uitvoeringsgeschiedenis en kunnen worden gebruikt om de uitvoering te bewaken.Naverwerking: de map ./outputs van de uitvoering wordt gekopieerd naar de uitvoeringsgeschiedenis.
Het model opslaan en registreren
Nadat u het model hebt getraind, kunt u het opslaan en registreren bij uw werkruimte. Met modelregistratie kunt u uw modellen opslaan en versien in uw werkruimte om modelbeheer en implementatie te vereenvoudigen.
Voeg de volgende code toe aan uw trainingsscript, train_iris.py, om het model op te slaan.
import joblib
joblib.dump(svm_model_linear, 'model.joblib')
Registreer het model bij uw werkruimte met de volgende code. Door de parameters model_framework
op te geven, model_framework_version
en resource_configuration
er is geen codemodelimplementatie beschikbaar. Met implementatie van model zonder code kunt u uw model rechtstreeks implementeren als een webservice vanuit het geregistreerde model en het ResourceConfiguration
object definieert de rekenresource voor de webservice.
from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration
model = run.register_model(model_name='sklearn-iris',
model_path='outputs/model.joblib',
model_framework=Model.Framework.SCIKITLEARN,
model_framework_version='0.19.1',
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))
Implementatie
Het model dat u zojuist hebt geregistreerd, kan op dezelfde manier worden geïmplementeerd als elk ander geregistreerd model in Azure Machine Learning. De instructies voor de implementatie bevatten een sectie over het registreren van modellen, maar u kunt direct doorgaan naar [het maken van een compute targethow-to-deploy-and-where.md#choose-a-compute-target) voor implementatie, omdat u al een geregistreerd model hebt.
(Preview) Implementatie van model zonder code
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
In plaats van de traditionele implementatieroute kunt u ook de functie voor implementatie zonder code (preview) gebruiken voor scikit-learn. Implementatie van model zonder code wordt ondersteund voor alle ingebouwde scikit-learn-modeltypen. Door uw model te registreren zoals hierboven wordt weergegeven met de model_framework
, model_framework_version
en resource_configuration
parameters, kunt u gewoon de deploy()
statische functie gebruiken om uw model te implementeren.
web_service = Model.deploy(ws, "scikit-learn-service", [model])
Notitie
Deze afhankelijkheden zijn opgenomen in de vooraf gemaakte scikit-learn-deductiecontainer.
- azureml-defaults
- inference-schema[numpy-support]
- scikit-learn
- numpy
In de volledige procedures wordt de implementatie in Azure Machine Learning uitgebreider behandeld.
Volgende stappen
In dit artikel hebt u een scikit-learn-model getraind en geregistreerd en geleerd over implementatieopties. Zie deze andere artikelen voor meer informatie over Azure Machine Learning.