Delen via


Model opgeven dat moet worden geïmplementeerd voor gebruik in een online-eindpunt

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel leert u over de verschillende manieren om modellen op te geven die u wilt gebruiken in online implementaties. Wanneer u een model implementeert in een online-eindpunt van Azure Machine Learning, moet u het model op twee manieren opgeven:

  • Geef het pad op naar de locatie van het model op uw lokale computer
  • Geef een verwijzing op naar een versiemodel dat al is geregistreerd in uw werkruimte.

Hoe u uw model opgeeft voor de implementatie van een online-eindpunt, is afhankelijk van waar het model is opgeslagen. Nadat u uw implementatie hebt gemaakt, verwijst de omgevingsvariabele AZUREML_MODEL_DIR in Azure naar de opslaglocatie in Azure waar uw model is opgeslagen.

Implementatie voor modellen die lokaal zijn opgeslagen

In deze sectie wordt dit voorbeeld van een lokale mapstructuur gebruikt om te laten zien hoe u modellen kunt opgeven voor gebruik in een onlineimplementatie:

Een schermopname van een lokale mapstructuur met meerdere modellen.

Implementatie voor één lokaal model

Als u één model wilt gebruiken dat u op uw lokale computer in een implementatie hebt, geeft u de path waarde op in het model YAML-configuratiebestand van uw implementatie. De volgende code is een voorbeeld van de YAML-implementatie met het lokale pad /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 

Nadat u in Azure Machine Learning uw implementatie hebt gemaakt naar een online-eindpunt, verwijst de omgevingsvariabele AZUREML_MODEL_DIR naar de opslaglocatie in Azure waar uw model wordt opgeslagen. Bevat nu bijvoorbeeld /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 het model sample_m1.pkl.

Binnen uw scorescript (score.py) kunt u uw model laden (in dit voorbeeld sample_m1.pkl) in de functie van init() het script:

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

Implementatie voor verschillende lokale modellen

Hoewel u met de Azure CLI, Python SDK en andere clienthulpprogramma's slechts één model per implementatie kunt opgeven in de implementatiedefinitie, kunt u nog steeds meerdere modellen in een implementatie gebruiken door een modelmap te registreren die alle modellen als bestanden of submappen bevat. Zie Uw model en omgeving registreren voor meer informatie over het registreren van uw assets, zoals modellen, zodat u hun geregistreerde namen en versies tijdens de implementatie kunt opgeven.

In de voorbeeldstructuur van de lokale map ziet u dat er verschillende modellen in de models map staan. Als u deze modellen wilt gebruiken, geeft u in uw YAML-implementatie het pad naar de models map als volgt op:

$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 

Nadat u de implementatie hebt gemaakt, verwijst de omgevingsvariabele AZUREML_MODEL_DIR naar de opslaglocatie in Azure waar uw modellen worden opgeslagen. Bevat nu bijvoorbeeld /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 de modellen en de bestandsstructuur.

In dit voorbeeld ziet de inhoud van de AZUREML_MODEL_DIR map er als volgt uit:

Een schermopname van de mapstructuur van de opslaglocatie voor meerdere modellen.

Binnen uw scorescript (score.py) kunt u uw modellen laden in de init() functie. Met de volgende code wordt het sample_m1.pkl model geladen:

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) 

Zie Meerdere modellen implementeren in één implementatie (CLI-voorbeeld) en Meerdere modellen implementeren in één implementatie (SDK-voorbeeld) voor een voorbeeld van het implementeren van meerdere modellen in één implementatie.

Tip

Als u meer dan 1500 bestanden wilt registreren, kunt u overwegen de bestanden of submappen te comprimeren als .tar.gz bij het registreren van de modellen. Als u de modellen wilt gebruiken, kunt u de bestanden of submappen uitpakken in de init() functie van het scorescript. Als u de modellen registreert, kunt u de azureml.unpack eigenschap Trueook instellen op , zodat de bestanden of submappen automatisch worden uitgepakt. In beide gevallen gebeurt het uitpakken van de bestanden eenmaal in de initialisatiefase.

Implementatie voor modellen die zijn geregistreerd in uw werkruimte

U kunt geregistreerde modellen in uw implementatiedefinitie gebruiken door te verwijzen naar hun namen in uw YAML-implementatie. Met de volgende YAML-implementatieconfiguratie wordt bijvoorbeeld de geregistreerde model naam opgegeven als 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 

Houd voor dit voorbeeld rekening met local-multimodel:3 de volgende modelartefacten, die kunnen worden weergegeven op het tabblad Modellen in de Azure Machine Learning-studio:

Een schermopname van een mapstructuur met de modelartefacten van een geregistreerd model.

Nadat u de implementatie hebt gemaakt, verwijst de omgevingsvariabele AZUREML_MODEL_DIR naar de opslaglocatie in Azure waar uw modellen worden opgeslagen. Bevat bijvoorbeeld /var/azureml-app/azureml-models/local-multimodel/3 de modellen en de bestandsstructuur. AZUREML_MODEL_DIR verwijst naar de map met de hoofdmap van de modelartefacten. Op basis van dit voorbeeld ziet de inhoud van de AZUREML_MODEL_DIR map er als volgt uit:

Een schermopname van de mapstructuur met meerdere modellen.

Binnen uw scorescript (score.py) kunt u uw modellen laden in de init() functie. Laad bijvoorbeeld het diabetes.sav model:

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

Implementatie voor modellen die beschikbaar zijn in de modelcatalogus

Voor elk model in de modelcatalogus, met uitzondering van modellen die zich in de Azure OpenAI-verzameling bevinden, kunt u de model-id gebruiken die wordt weergegeven in de kaart van het model voor implementatie. Model-id's zijn van de vorm azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Een model-id voor het Meta Llama 3-8 B Instruct-model is azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2bijvoorbeeld . Sommige modelkaarten bevatten voorbeeldnotebooks die laten zien hoe u de model-id voor de implementatie gebruikt.

Implementatie voor modellen die beschikbaar zijn in het register van uw organisatie

Elk model in het register van een organisatie heeft een model-id van het formulier azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. U kunt er ook voor kiezen om omgevingen te gebruiken die zijn geregistreerd in hetzelfde register.