Eseguire il training di modelli con l'SDK di Python (v1) di Azure Machine Learning
Si applica a: Python SDK azureml v1
Informazioni su come collegare risorse di calcolo di Azure all'area di lavoro di Azure Machine Learning con SDK v1. Quindi è possibile usare queste risorse come training e inferenza di destinazioni di calcolo nelle attività di apprendimento automatico.
In questo articolo di scoprirà come configurare l'area di lavoro per usare queste risorse di calcolo:
- Il computer locale
- Macchine virtuali remote
- Pool di Apache Spark (con tecnologia Azure Synapse Analytics)
- Azure HDInsight
- Azure Batch
- Azure Databricks: usato come destinazione di calcolo per il training solo nelle pipeline di apprendimento automatico
- Azure Data Lake Analytics.
- Azure Container Instance
- Azure Machine Learning Kubernetes
Per usare le destinazioni di calcolo gestite da Azure Machine Learning, vedere:
- Istanza di calcolo di Azure Machine Learning
- Cluster di calcolo di Azure Machine Learning
- Cluster del servizio Azure Kubernetes
Importante
Gli elementi in questo articolo contrassegnati come "anteprima" sono attualmente in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Prerequisiti
Un'area di lavoro di Azure Machine Learning. Per altre informazioni, vedere Creare risorse dell'area di lavoro.
L'estensione dell'interfaccia della riga di comando di Azure per il servizio Machine Learning, Azure Machine Learning Python SDK, o l'estensione Azure Machine Learning Visual Studio Code.
Limiti
Non creare più collegamenti simultanei allo stesso ambiente di calcolo dall'area di lavoro. Ad esempio, collegare un cluster di servizio Azure Kubernetes a un'area di lavoro usando due nomi diversi. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Se si vuole ricollegare una destinazione di calcolo, ad esempio per cambiare TLS o un'altra impostazione di configurazione del cluster, è necessario per prima cosa rimuovere il collegamento esistente.
Che cos'è una destinazione di calcolo?
Con Azure Machine Learning è possibile eseguire il training del modello in varie risorse o diversi ambienti, collettivamente definiti destinazioni di calcolo. Una destinazione di calcolo può essere un computer locale o una risorsa cloud, come un ambiente di calcolo di Azure Machine Learning, Azure HDInsight o una macchina virtuale remota. È possibile anche usare destinazioni di calcolo per la distribuzione del modello, come descritto in "Dove e come distribuire i modelli".
Computer locale
Quando si usa il computer locale per il training, non è necessario creare una destinazione di calcolo. Basta inviare l'esecuzione del training dal computer locale.
Quando si usa il computer locale per l'inferenza, è necessario avere Docker installato. Per eseguire la distribuzione, usare LocalWebservice.deploy_configuration() per definire la porta che il servizio Web userà. Quindi usare il processo di distribuzione standard come descritto in Distribuire modelli con Azure Machine Learning.
Macchine virtuali remote
Azure Machine Learning supporta anche il collegamento di una macchina virtuale di Azure. La macchina virtuale deve essere una Azure Data Science Virtual Machine (DSVM). La macchina virtuale offre una scelta dettagliata di strumenti e framework per l'intero ciclo di vita dello sviluppo dell'apprendimento automatico. Per altre informazioni su come usare una Data Science Virtual Machine, consultare Configurare un ambiente di sviluppo per Azure Machine Learning.
Suggerimento
Anziché una macchina virtuale remota, è consigliabile usare l'istanza di ambiente di calcolo di Azure Machine Learning. Si tratta di una soluzione di calcolo completamente gestita e basata sul cloud, specifica di Azure Machine Learning. Per altre informazioni, vedere Creare e gestire un'istanza di ambiente di calcolo di Azure Machine Learning.
Creazione: Azure Machine Learning non può creare un VM remota. È necessario, invece, creare la VM e quindi collegarlo all'area di lavoro di Azure Machine Learning. Per informazioni sulla creazione di DSVM, vedere Effettuare il provisioning della Data Science Virtual Machine per Linux (Ubuntu).
Avviso
Azure Machine Learning supporta solo macchine virtuali che eseguono Ubuntu. Quando si crea una macchina virtuale o se ne sceglie una esistente, è necessario selezionare una macchina virtuale che usa Ubuntu.
Azure Machine Learning richiede anche che la macchina virtuale disponga di un indirizzo IP pubblico.
Allegare: collegare la DSVM all'area di lavoro usando Studio di Azure Machine Learning.
Avviso
Non creare più collegamenti simultanei alla stessa DSVM dall'area di lavoro. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Configurare: creare una configurazione di esecuzione per la destinazione di calcolo Data Science Virtual Machine. Docker e conda vengono usati per creare e configurare l'ambiente di training nella Data Science Virtual Machine.
from azureml.core import ScriptRunConfig from azureml.core.environment import Environment from azureml.core.conda_dependencies import CondaDependencies # Create environment myenv = Environment(name="myenv") # Specify the conda dependencies myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn']) # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image: # myenv.docker.enabled = True # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv)
Suggerimento
Per rimuovere una VM dall'area di lavoro, usare il metodo RemoteCompute.detach().
Azure Machine Learning non elimina automaticamente la macchina virtuale. La macchina virtuale deve essere eliminata manualmente usando il portale di Azure, l'interfaccia della riga di comando o l'SDK per la macchina virtuale di Azure.
Pool di Apache Spark
L'integrazione di Azure Synapse Analytics con Azure Machine Learning (anteprima) consente di collegare un pool Apache Spark supportato da Azure Synapse per l'esplorazione e la preparazione interattive dei dati. Grazie a questa integrazione è possibile avere un ambiente di calcolo dedicato per il data wrangling in modo scalabile. Per altre informazioni, vedere Come collegare pool di Apache Spark basati su Azure Synapse Analytics.
Azure HDInsight
Azure HDInsight è una piattaforma comune per l'analisi dei Big Data. La piattaforma include Apache Spark, che può essere usato per il training del modello.
Creare: Azure Machine Learning non può creare un cluster HDInsight. È necessario, invece, creare il cluster e quindi collegarlo all'area di lavoro di Azure Machine Learning. Per altre informazioni, vedere Creare un cluster Spark in HDInsight.
Avviso
Azure Machine Learning richiede che il cluster HDInsight disponga di un indirizzo IP pubblico.
Quando si crea il cluster, è necessario specificare un nome utente e una password SSH. Prendere nota di questi valori, perché saranno necessari quando si usa HDInsight come destinazione di calcolo.
Dopo aver creato il cluster, collegarlo al nome host <clustername>-ssh.azurehdinsight.net, dove <clustername> è il nome fornito per il cluster.
Allegare: collegare il cluster HDInsight all'area di lavoro usando Studio di Azure Machine Learning.
Avviso
Non creare più collegamenti simultanei allo stesso cluster HDInsight dall'area di lavoro. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Configurare: creare una configurazione di esecuzione per la destinazione di calcolo HDI.
from azureml.core.runconfig import RunConfiguration from azureml.core.conda_dependencies import CondaDependencies # use pyspark framework run_hdi = RunConfiguration(framework="pyspark") # Set compute target to the HDI cluster run_hdi.target = hdi_compute.name # specify CondaDependencies object to ask system installing numpy cd = CondaDependencies() cd.add_conda_package('numpy') run_hdi.environment.python.conda_dependencies = cd
Suggerimento
Per rimuovere un cluster HDInsight dall'area di lavoro, usare il metodo HDInsightCompute.detach().
Azure Machine Learning non elimina automaticamente il cluster HDInsight. Il cluster deve essere eliminato manualmente usando il portale di Azure, l'interfaccia della riga di comando o l'SDK per Azure HDInsight.
Azure Batch
Azure Batch viene usato per eseguire in modo efficiente applicazioni parallele e HPC (High Performance Computing) su larga scala nel cloud. AzureBatchStep può essere usato in una pipeline di Azure Machine Learning per inviare processi a un pool di computer di Azure Batch.
Per collegare Azure Batch come destinazione di calcolo è necessario usare Azure Machine Learning SDK e specificare le informazioni seguenti:
- Nome dell'ambiente di calcolo di Azure Batch: un nome descrittivo da usare per l'ambiente di calcolo nell'area di lavoro
- Nome account Azure Batch: il nome dell'account Azure Batch
- Gruppo di risorse: il gruppo di risorse che contiene l'account Azure Batch.
Il codice seguente illustra come collegare Azure Batch come destinazione di calcolo:
from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException
# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'
# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>" # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"
try:
# check if the compute is already attached
batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
print('Attaching Batch compute...')
provisioning_config = BatchCompute.attach_configuration(
resource_group=batch_resource_group, account_name=batch_account_name)
batch_compute = ComputeTarget.attach(
ws, batch_compute_name, provisioning_config)
batch_compute.wait_for_completion()
print("Provisioning state:{}".format(batch_compute.provisioning_state))
print("Provisioning errors:{}".format(batch_compute.provisioning_errors))
print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))
Avviso
Non creare più collegamenti simultanei alla stessa istanza di Azure Batch dall'area di lavoro. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Azure Databricks
Azure Databricks è un ambiente basato su Apache Spark nel cloud di Azure. Può essere usata come destinazione di calcolo con una pipeline di Azure Machine Learning.
Importante
Azure Machine Learning non può creare una destinazione di calcolo di Azure Databricks. È invece necessario creare un'area di lavoro di Azure Databricks e quindi collegarla all'area di lavoro di Azure Machine Learning. Per creare una risorsa dell'area di lavoro, vedere il documento Eseguire un processo Spark in Azure Databricks.
Per collegare un'area di lavoro di Azure Databricks da una sottoscrizione di Azure diversa, all'utente (o al suo account Microsoft Entra) deve essere concesso il ruolo Collaboratore nell'area di lavoro di Azure Databricks. Controllare l'accesso nel portale di Azure.
Per collegare Azure Databricks come destinazione di calcolo, fornire le informazioni seguenti:
- Nome ambiente di calcolo Databricks: il nome da assegnare a questa risorsa di calcolo.
- Nome area di lavoro di Databricks: il nome dell'area di lavoro di Azure Databricks.
- Token di accesso a Databricks: il token di accesso usato per eseguire l'autenticazione ad Azure Databricks. Per generare un token di accesso vedere il documento Authentication (Autenticazione).
Il codice seguente illustra come connettere Azure Databricks come destinazione di calcolo con l'SDK di Azure Machine Learning:
import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException
databricks_compute_name = os.environ.get(
"AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
"AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
"AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
"AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")
try:
databricks_compute = ComputeTarget(
workspace=ws, name=databricks_compute_name)
print('Compute target already exists')
except ComputeTargetException:
print('compute not found')
print('databricks_compute_name {}'.format(databricks_compute_name))
print('databricks_workspace_name {}'.format(databricks_workspace_name))
print('databricks_access_token {}'.format(databricks_access_token))
# Create attach config
attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
workspace_name=databricks_workspace_name,
access_token=databricks_access_token)
databricks_compute = ComputeTarget.attach(
ws,
databricks_compute_name,
attach_config
)
databricks_compute.wait_for_completion(True)
Per un esempio più dettagliato, vedere un notebook di esempio in GitHub.
Avviso
Non creare più collegamenti simultanei alla stessa istanza di Azure Databricks dall'area di lavoro. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Azure Data Lake Analytics.
Azure Data Lake Analytics è una piattaforma di analisi dei Big Data nel cloud di Azure. Può essere usata come destinazione di calcolo con una pipeline di Azure Machine Learning.
Creare un account di Azure Data Lake Analytics prima di usarla. Per creare questa risorsa vedere il documento Introduzione ad Azure Data Lake Analytics con il portale di Azure.
Per connettere Data Lake Analytics come destinazione di calcolo è necessario usare Azure Machine Learning SDK e specificare le informazioni seguenti:
- Nome del calcolo: il nome da assegnare a questa risorsa di calcolo.
- Gruppo di risorse: il gruppo di risorse che contiene l'account Data Lake Analytics.
- Nome account: il nome dell'account Data Lake Analytics.
Il codice seguente illustra in che modo connettere Data Lake Analytics come destinazione di calcolo:
import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException
adla_compute_name = os.environ.get(
"AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
"AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
"AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")
try:
adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
print('Compute target already exists')
except ComputeTargetException:
print('compute not found')
print('adla_compute_name {}'.format(adla_compute_name))
print('adla_resource_id {}'.format(adla_resource_group))
print('adla_account_name {}'.format(adla_account_name))
# create attach config
attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
account_name=adla_account_name)
# Attach ADLA
adla_compute = ComputeTarget.attach(
ws,
adla_compute_name,
attach_config
)
adla_compute.wait_for_completion(True)
Per un esempio più dettagliato, vedere un notebook di esempio in GitHub.
Avviso
Non creare più collegamenti simultanei alla stessa istanza ADLA dall'area di lavoro. Ogni nuovo collegamento interromperà i collegamenti precedenti esistenti.
Suggerimento
Le pipeline di Azure Machine Learning possono funzionare solo con i dati archiviati nell'archivio dati predefinito dell'account Data Lake Analytics. Se i dati sui quali è necessario lavorare sono in un archivio non predefinito, è possibile usare DataTransferStep
per copiare i dati prima del training.
Azure Container Instance
Istanze di Azure Container vengono create in modo dinamico quando si distribuisce un modello. Non è possibile creare o collegare Istanze di Azure Container all'area di lavoro in altro modo. Per altre informazioni, vedere Distribuire un modello in Istanze di Azure Container.
Kubernetes
Azure Machine Learning fornisce la possibilità di collegare i propri cluster Kubernetes per training e inferenza. Vedere Configurare un cluster Kubernetes per Azure Machine Learning.
Per rimuovere un cluster Kubernetes dall'area di lavoro, usare il metodo seguente:
compute_target.detach()
Avviso
La rimozione di un cluster non elimina il cluster. Per eliminare un cluster del servizio Azure Kubernetes, vedere Usare l'interfaccia della riga di comando di Azure con il servizio Azure Kubernetes. Per eliminare un cluster Kubernetes abilitato per Azure Arc, vedere Avvio rapido di Azure Arc.
Esempi di notebook
Consultare questi notebook per esempi di training con varie destinazioni di calcolo:
Per informazioni su come eseguire i notebook, vedere l'articolo Esplorare Azure Machine Learning con notebook Jupyter.
Passaggi successivi
- Usare la risorsa di calcolo per configurare e inviare un'esecuzione di training.
- L'Esercitazione: Eseguire il training di un modello e distribuirlo usa una destinazione di calcolo gestita per il training di un modello.
- Consultare le informazioni su come ottimizzare in modo efficiente gli iperparametri per creare modelli migliori.
- Dopo aver creato un modello con training, consultare le informazioni su come e dove distribuire i modelli.
- Usare Azure Machine Learning con le reti virtuali di Azure