Dela via


Ange modell som ska distribueras för användning i onlineslutpunkten

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

I den här artikeln får du lära dig om de olika sätten att ange modeller som du vill använda i onlinedistributioner. När du distribuerar en modell till en Azure Machine Learning-slutpunkt online måste du ange modellen på något av två sätt:

  • Ange sökvägen till modellens plats på den lokala datorn
  • Ange en referens till en versionsmodell som redan är registrerad på din arbetsyta.

Hur du anger din modell för en onlineslutpunkts distribution beror på var modellen lagras. När du har skapat distributionen i Azure Machine Learning pekar miljövariabeln AZUREML_MODEL_DIR på lagringsplatsen i Azure där din modell lagras.

Distribution för modeller som lagras lokalt

Det här avsnittet använder det här exemplet på en lokal mappstruktur för att visa hur du kan ange modeller för användning i en onlinedistribution:

En skärmbild som visar en lokal mappstruktur som innehåller flera modeller.

Distribution för en enda lokal modell

Om du vill använda en enda modell som du har på din lokala dator i en distribution anger du path till i YAML-konfigurationsfilen för model distributionen. Följande kod är ett exempel på distributionens YAML med den lokala sökvägen /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 

När du har skapat distributionen till en onlineslutpunkt i Azure Machine Learning pekar miljövariabeln AZUREML_MODEL_DIR på lagringsplatsen i Azure där din modell lagras. Nu innehåller till exempel /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 modellen sample_m1.pkl.

I ditt bedömningsskript (score.py) kan du läsa in din modell (i det här exemplet sample_m1.pkl) i skriptets init() funktion:

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

Distribution för flera lokala modeller

Även om Azure CLI, Python SDK och andra klientverktyg gör att du bara kan ange en modell per distribution i distributionsdefinitionen kan du fortfarande använda flera modeller i en distribution genom att registrera en modellmapp som innehåller alla modeller som filer eller underkataloger. Mer information om hur du registrerar dina tillgångar, till exempel modeller, så att du kan ange deras registrerade namn och versioner under distributionen finns i Registrera din modell och miljö.

I exempelstrukturen för lokala mappar ser du att det finns flera modeller i models mappen. Om du vill använda dessa modeller anger du sökvägen till mappen i yaml-distributionen models på följande sätt:

$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 

När du har skapat distributionen pekar miljövariabeln AZUREML_MODEL_DIR på lagringsplatsen i Azure där dina modeller lagras. Nu innehåller till exempel /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 modellerna och filstrukturen.

I det här exemplet ser innehållet i AZUREML_MODEL_DIR mappen ut så här:

En skärmbild som visar mappstrukturen för lagringsplatsen för flera modeller.

I ditt bedömningsskript (score.py) kan du läsa in dina modeller i init() funktionen. Följande kod läser in sample_m1.pkl modellen:

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) 

Ett exempel på hur du distribuerar flera modeller till en distribution finns i Distribuera flera modeller till en distribution (CLI-exempel) och Distribuera flera modeller till en distribution (SDK-exempel).

Dricks

Om du har fler än 1 500 filer att registrera kan du överväga att komprimera filerna eller underkatalogerna som .tar.gz när du registrerar modellerna. Om du vill använda modellerna kan du packa upp filerna eller underkatalogerna i funktionen för init() bedömningsskriptet. När du registrerar modellerna kan du också ange azureml.unpack egenskapen till True, för att automatiskt packa upp filerna eller underkatalogerna. I båda fallen sker upppackning av filerna en gång i initieringsfasen.

Distribution för modeller som är registrerade på din arbetsyta

Du kan använda registrerade modeller i distributionsdefinitionen genom att referera till deras namn i din distributions-YAML. Följande YAML-konfiguration för distribution anger till exempel det registrerade model namnet som 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 

I det här exemplet bör du tänka på att local-multimodel:3 innehåller följande modellartefakter, som kan visas från fliken Modeller i Azure Machine Learning-studio:

En skärmbild av en mappstruktur som visar modellartefakter för en registrerad modell.

När du har skapat distributionen pekar miljövariabeln AZUREML_MODEL_DIR på lagringsplatsen i Azure där dina modeller lagras. Innehåller /var/azureml-app/azureml-models/local-multimodel/3 till exempel modellerna och filstrukturen. AZUREML_MODEL_DIR pekar på mappen som innehåller roten för modellartefakterna. Baserat på det här exemplet ser innehållet i AZUREML_MODEL_DIR mappen ut så här:

En skärmbild av mappstrukturen som visar flera modeller.

I ditt bedömningsskript (score.py) kan du läsa in dina modeller i init() funktionen. Läs till exempel in diabetes.sav modellen:

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

Distribution för modeller som är tillgängliga i modellkatalogen

För alla modeller i modellkatalogen, förutom modeller som finns i Azure OpenAI-samlingen, kan du använda modell-ID:t som visas på modellens kort för distribution. Modell-ID:t är av formatet azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Ett modell-ID för Meta Llama 3-8 B Instruct-modellen är azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2till exempel . Vissa modellkort innehåller exempel på notebook-filer som visar hur du använder modell-ID:t för distributionen.

Distribution för modeller som är tillgängliga i organisationens register

Varje modell i en organisations register har ett modell-ID för formuläret azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Du kan också välja att använda miljöer som är registrerade i samma register.