Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
SI APPLICA A :
Estensione ML dell'interfaccia della riga di comando di Azure v1
azureml dell'SDK di Pyhtonv1
Importante
Questo articolo fornisce informazioni sull'uso di Azure Machine Learning SDK v1. SDK v1 è deprecato a partire dal 31 marzo 2025. Il supporto per questo terminerà il 30 giugno 2026. È possibile installare e usare l'SDK v1 fino a tale data. I flussi di lavoro esistenti che usano SDK v1 continueranno a funzionare dopo la data di fine del supporto. Tuttavia, potrebbero essere esposti a rischi per la sicurezza o a modifiche di rilievo nel caso di cambiamenti dell'architettura del prodotto.
È consigliabile passare all'SDK v2 prima del 30 giugno 2026. Per altre informazioni su SDK v2, vedere Che cos'è l'interfaccia della riga di comando di Azure Machine Learning e Python SDK v2? e il Riferimento SDK v2.
Questo articolo illustra come profilare un machine learning per modellare per determinare la quantità di CPU e memoria da allocare per il modello durante la distribuzione come servizio Web.
Importante
Questo articolo si applica all'interfaccia della riga di comando (CLI) v1 e all'SDK v1. Questa tecnica di profilatura non è disponibile per la versione 2 dell'interfaccia della riga di comando o dell'SDK.
Importante
Alcuni comandi dell'interfaccia della riga di comando di Azure citati in questo articolo utilizzano l'estensione azure-cli-ml, o v1, per Azure Machine Learning. Il supporto per l'interfaccia della riga di comando v1 è terminato il 30 settembre 2025. Microsoft non fornirà più supporto tecnico o aggiornamenti per questo servizio. I flussi di lavoro esistenti che usano l'interfaccia della riga di comando v1 continueranno a funzionare dopo la data di fine del supporto. Tuttavia, potrebbero essere esposti a rischi per la sicurezza o a modifiche di rilievo nel caso di cambiamenti dell'architettura del prodotto.
È consigliabile passare all'estensione ml, o v2, il prima possibile. Per altre informazioni sull'estensione v2, vedere Estensione dell'interfaccia della riga di comando di Azure Machine Learning e Python SDK v2.
Prerequisiti
Questo articolo presuppone il training e la registrazione di un modello con Azure Machine Learning. Vedere l'esercitazione di esempio qui per un esempio di training e registrazione di un modello scikit-learn con Azure Machine Learning.
Limitazioni
- La profilatura non funziona quando il Registro dei Contenitori di Azure (ACR) per l'area di lavoro si trova dietro una rete virtuale.
Eseguire il profiler
Dopo aver registrato il modello e preparato gli altri componenti necessari per la distribuzione, è possibile determinare la CPU e la memoria necessarie per il servizio distribuito. La profilatura testa il servizio che esegue il modello e restituisce informazioni quali l'utilizzo della CPU, l'utilizzo della memoria e la latenza di risposta. Inoltre fornisce una raccomandazione per la CPU e la memoria in base all'utilizzo delle risorse.
Per profilare il modello, è necessario:
- Un modello registrato.
- Una configurazione dell'inferenza in base alla definizione dell'ambiente di inferenza e allo script di immissione.
- Un set di dati tabulari a colonna singola, in cui ogni riga contiene una stringa che rappresenta i dati della richiesta di esempio.
Importante
Azure Machine Learning supporta solo la profilatura dei servizi che prevedono che i dati della richiesta siano una stringa, ad esempio: json serializzato in formato stringa, testo, immagine serializzata di stringhe e così via. Il contenuto di ogni riga del set di dati (stringa) viene inserito nel corpo della richiesta HTTP e inviato al servizio incapsulando il modello per l'assegnazione dei punteggi.
Importante
È supportata solo la profilatura fino a 2 CPU nell'area ChinaEast2 e USGovArizona.
Di seguito è riportato un esempio di come creare un set di dati di input per profilare un servizio che prevede che i dati delle richieste in ingresso contengano json serializzati. In questo caso, è stato creato un set di dati basato su 100 istanze dello stesso contenuto dei dati della richiesta. Negli scenari reali è consigliabile usare set di dati di dimensioni maggiori contenenti vari input, soprattutto se l'utilizzo/comportamento delle risorse del modello dipende dall'input.
SI APPLICA A:
Azure Machine Learning SDK v1 per Python
import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions
input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()
# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
datastore_path, separator='\n',
infer_column_types=True,
header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
name='sample_request_data',
create_new_version=True)
Dopo aver creato il set di dati contenente i dati della richiesta di esempio, creare una configurazione di inferenza. La configurazione dell'inferenza si basa sul score.py e sulla definizione dell'ambiente. L'esempio seguente illustra come creare la configurazione di inferenza ed eseguire la profilatura:
from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset
model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
'unique_name',
[model],
inference_config,
input_dataset=input_dataset)
profile.wait_for_completion(True)
# see the result
details = profile.get_details()
SI APPLICA A:
Estensione ml dell’interfaccia della riga di comando (CLI) di Azure v1
Il comando seguente illustra come profilare un modello usando l'interfaccia della riga di comando (CLI):
az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>
Suggerimento
Per rendere persistenti le informazioni restituite dalla profilatura, usare tag o proprietà per il modello. L'uso di tag o proprietà archivia i dati con il modello nel registro dei modelli. Gli esempi seguenti illustrano l'aggiunta di un nuovo tag contenente le informazioni requestedCpu e requestedMemoryInGb:
model.add_tags({'requestedCpu': details['requestedCpu'],
'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5
Passaggi successivi
- Risolvere una distribuzione non riuscita
- Eseguire la distribuzione nel servizio Azure Kubernetes
- Creare applicazioni client per utilizzare i servizi Web
- Aggiornare un servizio Web
- Come distribuire un modello utilizzando un'immagine Docker personalizzata
- Utilizzare TLS per proteggere un servizio Web tramite Azure Machine Learning
- Monitorare i modelli di Azure Machine Learning con Application Insights
- Raccogliere i dati per i modelli nell'ambiente di produzione
- Creare trigger e avvisi di eventi per le distribuzioni dei modelli