Condividi tramite


Aggiornare un servizio Web distribuito (v1)

SI APPLICA A:Estensione per Machine Learning dell'interfaccia della riga di comando di Azure v1Python SDK azureml v1

L'articolo contiene informazioni su come aggiornare un servizio Web distribuito con Azure Machine Learning.

Prerequisiti

  • Questo articolo presuppone che sia già stato distribuito un servizio Web con Azure Machine Learning. Per informazioni su come distribuire un servizio Web, seguire questa procedura.

  • I frammenti di codice in questo articolo presuppongono che la variabile ws sia già stata inizializzata nell'area di lavoro usando il costruttore Workflow() o caricando una configurazione salvata con Workspace.from_config(). Il frammento di codice seguente illustra come usare il costruttore:

    SI APPLICA A: Python SDK azureml v1

    from azureml.core import Workspace
    ws = Workspace(subscription_id="mysubscriptionid",
                   resource_group="myresourcegroup",
                   workspace_name="myworkspace")
    

Importante

Alcuni comandi dell'interfaccia della riga di comando (CLI) di Azure in questo articolo usano l'estensione azure-cli-ml, o v1, per Azure Machine Learning. L'assistenza per l'estensione v1 terminerà il 30 settembre 2025. Sarà possibile installare e usare l'estensione v1 fino a tale data.

Consigliamo di passare all'estensione ml, o v2, prima del 30 settembre 2025. Per altre informazioni sull'estensione v2, consultare Estensione dell'interfaccia della riga di comando di Azure ML e Python SDK v2.

Aggiornare un servizio Web

Per aggiornare un servizio Web, usare il metodo update. È possibile aggiornare il servizio Web per usare un nuovo modello, un nuovo script di immissione o nuove dipendenze che possono essere specificate nella configurazione di un'inferenza. Per altre informazioni, vedere la documentazione per Webservice.update.

Vedere Metodo di aggiornamento del servizio Azure Kubernetes.

Vedere Metodo di aggiornamento del servizio ACI.

Importante

Quando si crea una nuova versione di un modello, è necessario aggiornare manualmente ogni servizio che deve usarla.

Non è possibile usare l'SDK per aggiornare un servizio Web pubblicato dalla finestra di progettazione di Azure Machine Learning.

Importante

Il servizio Azure Kubernetes usa il driver Blobfuse FlexVolume per le versioni <=1.16 e il driver CSI BLOB per le versioni >=1.17.

Pertanto, è importante eseguire nuovamente la distribuzione del servizio Web o aggiornarlo dopo un aggiornamento del cluster per eseguire la distribuzione al metodo blobfuse corretto per la versione del cluster.

Nota

Quando un'operazione è già in corso, qualsiasi nuova operazione nello stesso servizio Web causerà un errore di conflitto 409. Ad esempio, se l'operazione di creazione o aggiornamento del servizio Web è in corso e si attiva una nuova operazione di eliminazione, verrà generato un errore.

Uso dell'SDK

Il codice seguente illustra come usare l'SDK per aggiornare il modello, l'ambiente e lo script di immissione per un servizio Web:

SI APPLICA A: Python SDK azureml v1

from azureml.core import Environment
from azureml.core.webservice import Webservice
from azureml.core.model import Model, InferenceConfig

# Register new model.
new_model = Model.register(model_path="outputs/sklearn_mnist_model.pkl",
                           model_name="sklearn_mnist",
                           tags={"key": "0.1"},
                           description="test",
                           workspace=ws)

# Use version 3 of the environment.
deploy_env = Environment.get(workspace=ws,name="myenv",version="3")
inference_config = InferenceConfig(entry_script="score.py",
                                   environment=deploy_env)

service_name = 'myservice'
# Retrieve existing service.
service = Webservice(name=service_name, workspace=ws)



# Update to new model(s).
service.update(models=[new_model], inference_config=inference_config)
service.wait_for_deployment(show_output=True)
print(service.state)
print(service.get_logs())

Uso dell'interfaccia della riga di comando

È anche possibile aggiornare un servizio Web usando l'interfaccia della riga di comando di ML. L'esempio seguente illustra come registrare un nuovo modello e quindi aggiornare un servizio Web per l'uso del nuovo modello:

SI APPLICA A: Estensione ML dell'interfaccia della riga di comando di Azure v1

az ml model register -n sklearn_mnist  --asset-path outputs/sklearn_mnist_model.pkl  --experiment-name myexperiment --output-metadata-file modelinfo.json
az ml service update -n myservice --model-metadata-file modelinfo.json

Suggerimento

In questo esempio viene usato un documento JSON per passare le informazioni del modello dal comando di registrazione al comando di aggiornamento.

Per aggiornare il servizio in modo che usi un nuovo script di immissione o un nuovo ambiente, creare un file di configurazione dell'inferenza e specificarlo con il parametro ic.

Per altre informazioni, vedere la documentazione relativa all'aggiornamento del servizio az ml.

Passaggi successivi