Condividi tramite


Distribuire pacchetti di modelli in endpoint (anteprima)

La creazione del pacchetto di un modello è una funzionalità di Azure Machine Learning che consente di raccogliere tutte le dipendenze necessarie per distribuire un modello di Machine Learning in una piattaforma di gestione. La creazione di pacchetti prima della distribuzione dei modelli consente una distribuzione solida e affidabile e un flusso di lavoro MLOps più efficiente. È possibile spostare i pacchetti nelle aree di lavoro e persino al di fuori di Azure Machine Learning. Altre informazioni sui pacchetti modello (anteprima)

Importante

Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti 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.

Questo articolo illustra come creare un pacchetto di un modello e distribuirlo in un endpoint online in Azure Machine Learning.

Prerequisiti

Prima di seguire la procedura descritta in questo articolo, assicurarsi di disporre dei prerequisiti seguenti:

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning.

  • Un'area di lavoro di Azure Machine Learning. Se non sono disponibili, è possibile seguire la procedura descritta nell'articolo Come gestire le aree di lavoro per crearne uno.

  • I controlli degli accessi in base al ruolo di Azure vengono usati per concedere l'accesso alle operazioni in Azure Machine Learning. Per eseguire la procedura descritta in questo articolo, all'account utente deve essere assegnato il ruolo di Proprietario o Collaboratore per l'area di lavoro di Azure Machine Learning o a un ruolo personalizzato. Per altre informazioni, vedere Gestire l'accesso a un'area di lavoro di Azure Machine Learning.

Informazioni su questo esempio

In questo esempio viene creato un pacchetto di un modello di tipo personalizzato e distribuito in un endpoint online per l'inferenza online.

L'esempio contenuto in questo articolo si basa sugli esempi di codice contenuti nel repository azureml-examples. Per eseguire i comandi in locale senza dover copiare o incollare il file YAML e altri file, innanzitutto clonare il repository quindi cambiare le directory nella cartella:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Questa sezione usa l'esempio nella cartella endpoint/online/deploy-packages/custom-model.

Connettersi all'area di lavoro

Connettersi all'area di lavoro di Azure Machine Learning in cui si lavorerà.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Creare un pacchetto del modello

È possibile creare pacchetti di modelli in modo esplicito per consentire di controllare come viene eseguita l'operazione di creazione del pacchetto. È possibile creare pacchetti di modelli specificando:

  • Modello di cui creare il pacchetto: ogni pacchetto di modello può contenere solo un singolo modello. Azure Machine Learning non supporta la creazione di pacchetti di più modelli nello stesso pacchetto di modello.
  • Ambiente di base: gli ambienti vengono usati per indicare l'immagine di base e nei pacchetti Python devono essere dipendenze del modello. Per i modelli MLflow, Azure Machine Learning genera automaticamente l'ambiente di base. Per i modelli personalizzati, è necessario specificarlo.
  • La tecnologia di gestione: lo stack di inferenza usato per eseguire il modello.

Suggerimento

Se il modello è MLflow, non è necessario creare manualmente il pacchetto del modello. È possibile creare automaticamente un pacchetto prima della distribuzione. Vedere Distribuire modelli MLflow negli endpoint online.

  1. I pacchetti di modelli richiedono la registrazione del modello nell'area di lavoro o in un registro di Azure Machine Learning. In questo esempio è già disponibile una copia locale del modello nel repository, quindi è sufficiente pubblicare il modello nel Registro di sistema nell'area di lavoro. È possibile ignorare questa sezione se il modello che si sta tentando di distribuire è già registrato.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Il modello richiede che i pacchetti seguenti vengano eseguiti e che siano stati specificati in un file conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Nota

    Si noti che solo i requisiti del modello sono indicati in conda YAML. Qualsiasi pacchetto necessario per il server di inferenza verrà incluso dall'operazione del pacchetto.

    Suggerimento

    Se il modello richiede pacchetti ospitati in feed privati, è possibile configurare il pacchetto per includerli. Leggere Creare un pacchetto di un modello con dipendenze nei feed Python privati.

  3. Creare un ambiente di base contenente i requisiti del modello e un'immagine di base. Nell'ambiente di base sono indicate solo le dipendenze richieste dal modello. Per i modelli MLflow, l'ambiente di base è facoltativo, nel qual caso Azure Machine Learning lo genera automaticamente.

    Creare una definizione di ambiente di base:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Quindi creare l'ambiente nel modo seguente:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Creare una specifica del pacchetto:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Avviare l'operazione di creazione del pacchetto del modello:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Il risultato dell'operazione di creazione del pacchetto è un ambiente.

Distribuire il pacchetto del modello

I pacchetti di modelli possono essere distribuiti direttamente negli endpoint online in Azure Machine Learning. Seguire questa procedura per distribuire un pacchetto in un endpoint online:

  1. Selezionare un nome per un endpoint per ospitare la distribuzione del pacchetto e crearlo:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Creare la distribuzione usando il pacchetto . Si noti come environment è configurato con il pacchetto creato.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Suggerimento

    Si noti che non si specifica il modello o lo script di assegnazione dei punteggi in questo esempio in quanto questi fanno parte del pacchetto.

  3. Avviare la distribuzione:

    az ml online-deployment create -f deployment.yml
    
  4. A questo punto la distribuzione è pronta per essere usata. È possibile testare il funzionamento creando un file di richiesta di esempio:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Inviare la richiesta all'endpoint

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Passaggio successivo