Condividi tramite


Specificare il modello da distribuire per l'uso nell'endpoint online

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

In questo articolo vengono illustrati i diversi modi per specificare i modelli da usare nelle distribuzioni online. Quando si distribuisce un modello in un endpoint online di Azure Machine Learning, è necessario specificare il modello in uno dei due modi seguenti:

  • Specificare il percorso del modello nel computer locale
  • Fornire un riferimento a un modello con versione già registrato nell'area di lavoro.

Il modo in cui si specifica il modello per la distribuzione di un endpoint online dipende dalla posizione in cui è archiviato il modello. In Azure Machine Learning, dopo aver creato la distribuzione, la variabile di ambiente AZUREML_MODEL_DIR punta alla posizione di archiviazione in Azure in cui è archiviato il modello.

Distribuzione per i modelli archiviati in locale

Questa sezione usa questo esempio di una struttura di cartelle locali per illustrare in che modo è possibile specificare i modelli da usare in una distribuzione online:

Screenshot che mostra una struttura di cartelle locali contenente più modelli.

Distribuzione per un singolo modello locale

Per usare un singolo modello presente nel computer locale in una distribuzione, specificare path per model nel file di configurazione dello YAML di distribuzione. Il codice seguente è un esempio della distribuzione YAML con il percorso locale /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

In Azure Machine Learning, dopo aver creato la distribuzione in un endpoint locale, la variabile di ambiente AZUREML_MODEL_DIR punta alla posizione di archiviazione in Azure in cui è archiviato il modello. Ad esempio, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 ora contiene il modello sample_m1.pkl.

All'interno dello script di assegnazione dei punteggi (score.py), è possibile caricare il modello (in questo esempio sample_m1.pkl) nella funzione init() dello script:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

Distribuzione per diversi modelli locali

Anche se l'interfaccia della riga di comando di Azure, Python SDK, e altri strumenti client consentono di specificare un solo modello per distribuzione nella definizione di distribuzione, è comunque possibile usare diversi modelli in una distribuzione registrando una cartella contenente tutti i modelli come file o sottodirectory. Per altre informazioni sulla registrazione degli asset, ad esempio i modelli, in modo da poter specificare i nomi e le versioni registrati durante la distribuzione, vedere Registrare il modello e l'ambiente.

Nella struttura di cartelle locali di esempio si noterà che nella cartella sono presenti vari modelli nella cartella models. Per usare questi modelli, nello YAML di distribuzione specificare il percorso della cartella models come indicato di seguito:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Dopo aver creato la distribuzione, la variabile di ambiente AZUREML_MODEL_DIR punta alla posizione di archiviazione in Azure in cui sono archiviati i modelli. Ad esempio, ora /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 contiene i modelli e la struttura di file.

In questo esempio, il contenuto della cartella AZUREML_MODEL_DIR è simile al seguente:

Screenshot che mostra la struttura di cartelle del percorso di archiviazione per più modelli.

All'interno dello script di assegnazione dei punteggi (score.py) è possibile caricare i modelli nella funzione init(). Il codice seguente carica il modello sample_m1.pkl:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

Per un esempio di come distribuire vari modelli in un'unica distribuzione, vedere Distribuire diversi modelli in un'unica distribuzione (esempio dell'interfaccia della riga di comando) e Distribuire diversi modelli in un'unica distribuzione (esempio dell'SDK).

Suggerimento

Se sono presenti più di 1500 file da registrare, è consigliabile comprimere i file o le sottodirectory con il formato .tar.gz durante la registrazione dei modelli. Per utilizzare i modelli, è possibile decomprimere i file o le sottodirectory nella funzione init() dello script di assegnazione dei punteggi. In alternativa, quando si registrano i modelli, impostare la proprietà azureml.unpack su True, per decomprimere automaticamente i file o le sottodirectory. In entrambi i casi, la decompressione dei file avviene quando si è nella fase di inizializzazione.

Distribuzione per i modelli registrati nell'area di lavoro

È possibile usare i modelli registrati nella definizione di distribuzione facendo riferimento ai relativi nomi nel file YAML di distribuzione. Ad esempio, la configurazione YAML di distribuzione seguente specifica il nome registrato model come azureml:local-multimodel:3:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Per questo esempio, si consideri che local-multimodel:3 contiene i seguenti artefatti del modello, che è possibile visualizzare dalla scheda Modelli in Studio di Azure Machine Learning:

Screenshot di una struttura di cartelle che mostra gli artefatti di un modello registrato.

Dopo aver creato la distribuzione, la variabile di ambiente AZUREML_MODEL_DIR punta alla posizione di archiviazione in Azure in cui sono archiviati i modelli. Ad esempio, /var/azureml-app/azureml-models/local-multimodel/3 contiene i modelli e la struttura di file. AZUREML_MODEL_DIR punta alla cartella contenente la radice degli artefatti del modello. In base a questo esempio, il contenuto della cartella AZUREML_MODEL_DIR è simile al seguente:

Screenshot della struttura di cartelle che mostra più modelli.

All'interno dello script di assegnazione dei punteggi (score.py) è possibile caricare i modelli nella funzione init(). Ad esempio, caricare il modello diabetes.sav:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

Distribuzione per i modelli disponibili nel catalogo modelli

Per qualsiasi modello nel catalogo modelli, ad eccezione dei modelli inclusi nella raccolta del Servizio OpenAI di Azure, è possibile usare l'ID modello visualizzato nella scheda del modello per la distribuzione. Gli ID modello sono del formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Ad esempio, un ID modello per il modello Meta Llama 3-8 B Instruct è azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2. Alcune schede del modello includono notebook di esempio che illustrano come usare l'ID modello per la distribuzione.

Distribuzione per i modelli disponibili nel registro di sistema dell'organizzazione

Ogni modello nel registro di sistema di un'organizzazione ha un ID modello del formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. È anche possibile scegliere di usare gli ambienti registrati nello stesso registro di sistema.