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:
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:
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:
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:
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/2
till 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.