Bygg scikit – lär dig modeller i stor skala med Azure Machine LearningBuild scikit-learn models at scale with Azure Machine Learning

gäller för:  Ja Basic Edition  Ja Enterprise Edition                               (Uppgradera till Enterprise Edition) APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

I den här artikeln får du lära dig hur du kör dina scikit-utbildnings skript med Azure Machine Learning.In this article, learn how to run your scikit-learn training scripts with Azure Machine Learning.

Exempel skripten i den här artikeln används för att klassificera Iris blomma-bilder för att bygga en maskin inlärnings modell baserad på scikit- data uppsättningen.The example scripts in this article are used to classify iris flower images to build a machine learning model based on scikit-learn's iris dataset.

Oavsett om du tränar en Machine Learning-scikit – lär dig modell från grunden eller om du använder en befintlig modell i molnet, kan du använda Azure Machine Learning för att skala ut utbildnings jobb med öppen källkod med elastiska moln beräknings resurser.Whether you're training a machine learning scikit-learn model from the ground-up or you're bringing an existing model into the cloud, you can use Azure Machine Learning to scale out open-source training jobs using elastic cloud compute resources. Du kan bygga, distribuera, hantera och övervaka modeller av produktions klass med Azure Machine Learning.You can build, deploy, version, and monitor production-grade models with Azure Machine Learning.

FörutsättningarPrerequisites

Kör den här koden i någon av följande miljöer:Run this code on either of these environments:

Konfigurera experimentetSet up the experiment

I det här avsnittet anges övnings experimentet genom att läsa in de nödvändiga python-paketen, initiera en arbets yta, skapa ett experiment och ladda upp utbildnings data och utbildnings skript.This section sets up the training experiment by loading the required python packages, initializing a workspace, creating an experiment, and uploading the training data and training scripts.

Initiera en arbets ytaInitialize a workspace

Azure Machine Learning-arbetsytan är resursen på den översta nivån för tjänsten.The Azure Machine Learning workspace is the top-level resource for the service. Det ger dig en central plats för att arbeta med alla artefakter som du skapar.It provides you with a centralized place to work with all the artifacts you create. I python SDK har du åtkomst till arbets ytans artefakter genom att skapa ett workspace objekt.In the Python SDK, you can access the workspace artifacts by creating a workspace object.

Skapa ett objekt för arbets ytan från config.json filen som skapats i avsnittet krav.Create a workspace object from the config.json file created in the prerequisites section.

from azureml.core import Workspace

ws = Workspace.from_config()

Förbereda skriptPrepare scripts

I den här självstudien är utbildnings skriptet train_iris. py redan tillgängligt för dig.In this tutorial, the training script train_iris.py is already provided for you here. I praktiken bör du kunna ta med ett anpassat tränings skript som är och köra det med Azure ML utan att behöva ändra koden.In practice, you should be able to take any custom training script as is and run it with Azure ML without having to modify your code.

Obs!Notes:

  • Det tillhandahållna utbildnings skriptet visar hur du loggar vissa mått i Azure ML-körningen med hjälp av Run objektet i skriptet.The provided training script shows how to log some metrics to your Azure ML run using the Run object within the script.
  • Det tillhandahållna utbildnings skriptet använder exempel data från iris = datasets.load_iris() funktionen.The provided training script uses example data from the iris = datasets.load_iris() function. För dina egna data kan du behöva använda steg som att Ladda upp data uppsättning och skript för att göra data tillgängliga under utbildningen.For your own data, you may need to use steps such as Upload dataset and scripts to make data available during training.

Definiera din miljö.Define your Environment.

Skapa en anpassad miljö.Create a custom environment.

Redigera din Conda-miljö (sklearn-ENV. yml).Author your conda environment (sklearn-env.yml). Om du vill skriva Conda-miljön från en bärbar dator kan du lägga till linjen %%writefile sklearn-env.yml överst i cellen.To write the conda environment from a notebook, you can add the line %%writefile sklearn-env.yml at the top of the cell.

name: sklearn-training-env
dependencies:
  - python=3.6.2
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

Skapa en Azure ML-miljö från den här Conda-miljö specifikationen.Create an Azure ML environment from this Conda environment specification. Miljön kommer att paketeras i en Docker-behållare vid körning.The Environment will be packaged into a docker container at runtime.

from azureml.core import Environment

myenv = Environment.from_conda_specification(name = "myenv", file_path = "sklearn-env.yml")
myenv.docker.enabled = True

Använda en granskad miljöUse a curated environment

Azure ML tillhandahåller färdiga, granskade behållar miljöer om du inte vill skapa en egen avbildning.Azure ML provides prebuilt, curated container environments if you don't want to build your own image. Mer information finns här.For more info, see here. Om du vill använda en granskad miljö kan du köra följande kommando i stället:If you want to use a curated environment, you can run the following command instead:

env = Environment.get(workspace=ws, name="AzureML-Tutorial")

Skapa en ScriptRunConfigCreate a ScriptRunConfig

Den här ScriptRunConfig skickar jobbet för körning på det lokala beräknings målet.This ScriptRunConfig will submit your job for execution on the local compute target.

from azureml.core import ScriptRunConfig

sklearnconfig = ScriptRunConfig(source_directory='.', script='train_iris.py')
sklearnconfig.run_config.environment = myenv

Om du vill skicka ett fjärran slutet kluster kan du ändra run_config. Target till önskat beräknings mål.If you want to submit against a remote cluster, you can change run_config.target to the desired compute target.

Skicka in din körningSubmit your run

from azureml.core import Experiment

run = Experiment(ws,'train-sklearn').submit(config=sklearnconfig)
run.wait_for_completion(show_output=True)

Varning

Azure Machine Learning kör utbildnings skript genom att kopiera hela käll katalogen.Azure Machine Learning runs training scripts by copying the entire source directory. Om du har känsliga data som du inte vill överföra använder du en . IGNORE-fil eller inkluderar den inte i käll katalogen.If you have sensitive data that you don't want to upload, use a .ignore file or don't include it in the source directory . I stället kan du komma åt dina data med hjälp av ett data lager.Instead, access your data using a datastore.

Mer information om hur du anpassar din python-miljö finns i skapa och hantera miljöer för utbildning och distribution.For more information on customizing your Python environment, see Create and manage environments for training and deployment.

Vad händer under körningenWhat happens during run execution

När körningen körs går den igenom följande steg:As the run is executed, it goes through the following stages:

  • Förbereder: en Docker-avbildning skapas enligt TensorFlow-uppskattningen.Preparing: A docker image is created according to the TensorFlow estimator. Avbildningen överförs till arbets ytans behållar register och cachelagras för senare körningar.The image is uploaded to the workspace's container registry and cached for later runs. Loggarna strömmas också till körnings historiken och kan visas för att övervaka förloppet.Logs are also streamed to the run history and can be viewed to monitor progress.

  • Skalning: klustret försöker skala upp om det batch AI klustret kräver fler noder för att köra körning än vad som är tillgängligt.Scaling: The cluster attempts to scale up if the Batch AI cluster requires more nodes to execute the run than are currently available.

  • Körs: alla skript i mappen skript överförs till Compute-målet, data lager monteras eller kopieras och entry_script körs.Running: All scripts in the script folder are uploaded to the compute target, data stores are mounted or copied, and the entry_script is executed. Utdata från STDOUT och./logs-mappen strömmas till körnings historiken och kan användas för att övervaka körningen.Outputs from stdout and the ./logs folder are streamed to the run history and can be used to monitor the run.

  • Efter bearbetning: mappen./outputs i körningen kopieras till körnings historiken.Post-Processing: The ./outputs folder of the run is copied over to the run history.

Spara och registrera modellenSave and register the model

När du har tränat modellen kan du spara och registrera den på din arbets yta.Once you've trained the model, you can save and register it to your workspace. Med modell registreringen kan du lagra och version av dina modeller i din arbets yta för att förenkla modell hantering och distribution.Model registration lets you store and version your models in your workspace to simplify model management and deployment.

Lägg till följande kod i utbildnings skriptet train_iris. py för att spara modellen.Add the following code to your training script, train_iris.py, to save the model.

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

Registrera modellen på din arbets yta med följande kod.Register the model to your workspace with the following code. Genom att ange parametrarna model_framework , model_framework_version , och resource_configuration , blir modell distribution utan kod tillgängligt.By specifying the parameters model_framework, model_framework_version, and resource_configuration, no-code model deployment becomes available. Med modell distribution utan kod kan du distribuera din modell direkt som en webb tjänst från den registrerade modellen, och ResourceConfiguration objektet definierar beräknings resursen för webb tjänsten.No-code model deployment allows you to directly deploy your model as a web service from the registered model, and the ResourceConfiguration object defines the compute resource for the web service.

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

DistributionDeployment

Den modell som du precis har registrerat kan distribueras exakt på samma sätt som andra registrerade modeller i Azure Machine Learning, oavsett vilken uppskattning som du använde för utbildning.The model you just registered can be deployed the exact same way as any other registered model in Azure Machine Learning, regardless of which estimator you used for training. Distributions anvisningar innehåller ett avsnitt om att registrera modeller, men du kan hoppa direkt till att skapa ett beräknings mål för distribution, eftersom du redan har en registrerad modell.The deployment how-to contains a section on registering models, but you can skip directly to creating a compute target for deployment, since you already have a registered model.

Förhandsgranskningsvyn Distribution utan kod modell(Preview) No-code model deployment

I stället för den traditionella distributions vägen kan du också använda funktionen utan kod distribution (för hands version) för scikit-information.Instead of the traditional deployment route, you can also use the no-code deployment feature (preview) for scikit-learn. Distribution med ingen kod modell stöds för alla inbyggda scikit – lär dig modell typer.No-code model deployment is supported for all built-in scikit-learn model types. Genom att registrera din modell enligt vad som visas ovan med model_framework model_framework_version parametrarna,, och resource_configuration kan du bara använda den deploy() statiska funktionen för att distribuera modellen.By registering your model as shown above with the model_framework, model_framework_version, and resource_configuration parameters, you can simply use the deploy() static function to deploy your model.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

Obs! de här beroendena ingår i den förskapade scikit för att få en behållare.NOTE: These dependencies are included in the pre-built scikit-learn inference container.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

Den fullständiga instruktionen att distribuera i Azure Machine Learning större djup.The full how-to covers deployment in Azure Machine Learning in greater depth.

Nästa stegNext steps

I den här artikeln har du tränat och registrerat en scikit-modell och lärt dig om distributions alternativ.In this article, you trained and registered a scikit-learn model, and learned about deployment options. Mer information om Azure Machine Learning finns i de här artiklarna.See these other articles to learn more about Azure Machine Learning.