Werken met geregistreerde modellen in Azure Machine Learning
VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
In dit artikel leert u hoe u modellen in Azure Machine Learning kunt registreren en ermee kunt werken met behulp van:
- De Azure Machine Learning-studio gebruikersinterface.
- De Azure Machine Learning V2 CLI.
- De Python Azure Machine Learning V2 SDK.
U leert het volgende:
- Maak geregistreerde modellen in het modelregister op basis van lokale bestanden, gegevensarchieven of taakuitvoer.
- Werk met verschillende typen modellen, zoals aangepaste, MLflow en Triton.
- Modellen gebruiken als invoer of uitvoer in trainingstaken.
- De levenscyclus van modelassets beheren.
Modelregistratie
Met modelregistratie kunt u uw modellen opslaan en versien in uw werkruimte in de Azure-cloud. Het modelregister helpt u bij het organiseren en bijhouden van uw getrainde modellen. U kunt modellen registreren als assets in Azure Machine Learning met behulp van de Azure CLI, de Python SDK of de gebruikersinterface van Machine Learning Studio.
Ondersteunde paden
Als u een model wilt registreren, moet u een pad opgeven dat verwijst naar de gegevens- of taaklocatie. In de volgende tabel ziet u de verschillende gegevenslocaties die Azure Machine Learning ondersteunt en de syntaxis voor de path
parameter:
Locatie | Syntaxis |
---|---|
Lokale computer | <model-folder>/<model-filename> |
Azure Machine Learning-gegevensarchief | azureml://datastores/<datastore-name>/paths/<path_on_datastore> |
Azure Machine Learning-taak | azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> |
MLflow-taak | runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> |
Modelasset in een Machine Learning-werkruimte | azureml:<model-name>:<version> |
Modelasset in een Machine Learning-register | azureml://registries/<registry-name>/models/<model-name>/versions/<version> |
Ondersteunde modi
Wanneer u modellen gebruikt voor invoer of uitvoer, kunt u een van de volgende modi opgeven. U kunt bijvoorbeeld opgeven of het model alleen-lezen moet worden gekoppeld of gedownload naar het rekendoel.
ro_mount
: Koppel de gegevens aan het rekendoel als alleen-lezen.rw_mount
: Lees-schrijven koppelt de gegevens.download
: Download de gegevens naar het rekendoel.upload
: Upload de gegevens van het rekendoel.direct
: Geef de URI door als een tekenreeks.
In de volgende tabel ziet u de beschikbare modusopties voor verschillende invoer en uitvoer van het modeltype.
Type | upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|
custom bestandsinvoer |
|||||
custom mapinvoer |
✓ | ✓ | ✓ | ||
mlflow invoer |
✓ | ✓ | |||
custom bestandsuitvoer |
✓ | ✓ | ✓ | ||
custom mapuitvoer |
✓ | ✓ | ✓ | ||
mlflow uitvoer |
✓ | ✓ | ✓ |
Vereisten
- Een Azure-abonnement met een gratis of betaalde versie van Azure Machine Learning. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- Een Azure Machine Learning-werkruimte.
Als u de codevoorbeelden in dit artikel wilt uitvoeren en wilt werken met de Azure Machine Learning V2 CLI of Python Azure Machine Learning V2 SDK, hebt u ook het volgende nodig:
Azure CLI versie 2.38.0 of hoger geïnstalleerd.
V2 van de
ml
extensie die is geïnstalleerd door de volgende opdracht uit te voeren. Zie De CLI (v2) installeren, instellen en gebruiken voor meer informatie.az extension add -n ml
Notitie
V2 biedt volledige compatibiliteit met eerdere versies. U kunt nog steeds modelassets van de v1 SDK of CLI gebruiken. Aan alle modellen die zijn geregistreerd bij de v1 CLI of SDK, wordt het type custom
toegewezen.
Een model registreren met behulp van de gebruikersinterface van Studio
Een model registreren met behulp van de gebruikersinterface van Azure Machine Learning-studio:
Selecteer Modellen in de linkernavigatiebalk in uw werkruimte in de studio.
Selecteer Registreren op de pagina Modellijst en selecteer een van de volgende locaties in de vervolgkeuzelijst:
- Vanuit lokale bestanden
- Uitvoer van een taak
- Uit gegevensarchief
- Vanuit lokale bestanden (op basis van framework)
Op het eerste scherm Model registreren:
- Navigeer naar het lokale bestand, het gegevensarchief of de taakuitvoer voor uw model.
- Selecteer het type invoermodel: MLflow, Triton of Niet-opgegeven type.
Geef in het scherm Modelinstellingen een naam en andere optionele instellingen op voor uw geregistreerde model en selecteer Volgende.
Controleer de configuratie op het scherm Controleren en selecteer Registreren.
Een model registreren met behulp van de Azure CLI of Python SDK
De volgende codefragmenten hebben betrekking op het registreren van een model als een asset in Azure Machine Learning met behulp van de Azure CLI of Python SDK. Deze codefragmenten gebruiken custom
en mlflow
modeltypen.
custom
type verwijst naar een modelbestand of map die is getraind met een aangepaste standaard die momenteel niet door Azure Machine Learning wordt ondersteund.mlflow
type verwijst naar een model dat is getraind met MLflow. Getrainde MLflow-modellen bevinden zich in een map die het MLmodel-bestand , het modelbestand , het conda-afhankelijkhedenbestand en het requirements.txt-bestand bevat.
Tip
U kunt de Python-versies van de volgende voorbeelden volgen door het notebook model.ipynb uit te voeren in de opslagplaats azureml-examples .
Verbinding maken met uw werkruimte
De werkruimte is de resource op het hoogste niveau voor Azure Machine Learning en biedt een gecentraliseerde werkplek met alle artefacten die u maakt in Azure Machine Learning. In deze sectie maakt u verbinding met uw Azure Machine Learning-werkruimte om het geregistreerde model te maken.
Meld u aan bij Azure door de prompts uit te voeren
az login
en te volgen.Vervang , en
<workspace-name>
<resource-group>
<location>
tijdelijke aanduidingen in de volgende opdrachten door<subscription-id>
de waarden voor uw omgeving.az account set --subscription <subscription-id> az configure --defaults workspace=<workspace-name> group=<resource-group> location=<location>
Het geregistreerde model maken
U kunt een geregistreerd model maken op basis van een model dat:
- Bevindt zich op uw lokale computer.
- Bevindt zich in een Azure Machine Learning-gegevensarchief.
- Uitvoer van een Azure Machine Learning-taak.
Lokaal bestand of lokale map
Maak een YAML-bestandsnaam<>.yml. Geef in het bestand een naam op voor uw geregistreerde model, een pad naar het lokale modelbestand en een beschrijving. Voorbeeld:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: local-file-example path: mlflow-model/model.pkl description: Model created from local file.
Voer de volgende opdracht uit met de naam van uw YAML-bestand:
az ml model create -f <file-name>.yml
Zie het MODEL YAML voor een volledig voorbeeld.
Gegevensarchief
U kunt een model maken op basis van een cloudpad met behulp van een van de ondersteunde URI-indelingen.
In het volgende voorbeeld wordt het verkorte azureml
schema gebruikt voor het verwijzen naar een pad in het gegevensarchief met behulp van de syntaxis azureml://datastores/<datastore-name>/paths/<path_on_datastore>
.
az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt
Zie de CLI-verwijzing voor een volledig voorbeeld.
Taakuitvoer
Als uw modelgegevens afkomstig zijn van een taakuitvoer, hebt u twee opties voor het opgeven van het modelpad. U kunt de MLflow-URI-indeling runs:
of de azureml://jobs
URI-indeling gebruiken.
Notitie
Het gereserveerde trefwoord artefacten vertegenwoordigt uitvoer van de standaardlocatie van het artefact.
MLflow-uitvoeringen: URI-indeling
Deze optie is geoptimaliseerd voor MLflow-gebruikers, die waarschijnlijk al bekend zijn met de MLflow
runs:
URI-indeling. Met deze optie maakt u een model op basis van artefacten op de standaardlocatie voor artefacten, waar alle door MLflow geregistreerde modellen en artefacten zich bevinden. Deze optie brengt ook een herkomst tot stand tussen een geregistreerd model en de uitvoering van het model is afkomstig.Formatteren:
runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
Voorbeeld:
az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
azureml://jobs URI-indeling
Met de
azureml://jobs
optie verwijzings-URI kunt u een model registreren bij artefacten in een van de uitvoerpaden van de taak. Deze indeling is afgestemd op deazureml://datastores
verwijzings-URI-indeling en ondersteunt ook verwijzingen naar artefacten van benoemde uitvoer anders dan de standaardlocatie van het artefact.Als u uw model niet rechtstreeks in het trainingsscript hebt geregistreerd met behulp van MLflow, kunt u deze optie gebruiken om een herkomst tot stand te brengen tussen een geregistreerd model en de taak waaruit het is getraind.
Formatteren:
azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>
- Standaardlocatie van artefact:
azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/
. Deze locatie is gelijk aan MLflowruns:/<run-id>/<model>
. - Benoemde uitvoermap:
azureml://jobs/<run-id>/outputs/<named-output-folder>
- Specifiek bestand in de benoemde uitvoermap:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
- Specifiek mappad in de benoemde uitvoermap:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>
Voorbeeld:
Sla een model op uit een benoemde uitvoermap:
az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
Zie de CLI-verwijzing voor een volledig voorbeeld.
- Standaardlocatie van artefact:
Modellen gebruiken voor training
Met de v2 Azure CLI en Python SDK kunt u modellen ook gebruiken als invoer of uitvoer in trainingstaken.
Een model gebruiken als invoer in een trainingstaak
Maak een YAML-bestand met taakspecificatie, <bestandsnaam.yml.> Geef in de
inputs
sectie van de taak het volgende op:- Het model
type
, dat kan zijnmlflow_model
,custom_model
oftriton_model
. - Het
path
model bevindt zich op de locatie waar het model zich bevindt. Dit kan een van de paden zijn die worden vermeld in de opmerking van het volgende voorbeeld.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for models: # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> command: | ls ${{inputs.my_model}} inputs: my_model: type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax path: ../../assets/model/mlflow-model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
- Het model
Voer de volgende opdracht uit, waarbij u de YAML-bestandsnaam vervangt.
az ml job create -f <file-name>.yml
Zie de GitHub-opslagplaats van het model voor een volledig voorbeeld.
Een model schrijven als uitvoer voor een taak
Uw taak kan een model naar uw cloudopslag schrijven met behulp van uitvoer.
Maak een YAML-bestand <>met een taakspecificatie.yml. Vul de
outputs
sectie met het type en het pad van het uitvoermodel.$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for Model: # Local path: mlflow-model/model.pkl # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> code: src command: >- python hello-model-as-output.py --input_model ${{inputs.input_model}} --custom_model_output ${{outputs.output_folder}} inputs: input_model: type: mlflow_model # mlflow_model,custom_model, triton_model path: ../../assets/model/mlflow-model outputs: output_folder: type: custom_model # mlflow_model,custom_model, triton_model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
Een taak maken met behulp van de CLI:
az ml job create --file <file-name>.yml
Zie de GitHub-opslagplaats van het model voor een volledig voorbeeld.
Modellen beheren
Met de Azure CLI en Python SDK kunt u ook de levenscyclus van uw Azure Machine Learning-modelassets beheren.
List
Geef alle modellen in uw werkruimte weer:
az ml model list
Geef alle modelversies onder een bepaalde naam weer:
az ml model list --name run-model-example
Weergeven
De details van een specifiek model ophalen:
az ml model show --name run-model-example --version 1
Bijwerken
Veranderlijke eigenschappen van een specifiek model bijwerken:
Belangrijk
Alleen voor modellen description
en tags
kunnen ze worden bijgewerkt. Alle andere eigenschappen zijn onveranderbaar en als u ze wilt wijzigen, moet u een nieuwe versie van het model maken.
az ml model update --name run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"
Archiveren
Als u een model archivert, wordt het verborgen voor lijstquery's, zoals az ml model list
standaard. U kunt blijven verwijzen naar en een gearchiveerd model gebruiken in uw werkstromen.
U kunt alle versies of alleen specifieke versies van een model archiveren. Als u geen versie opgeeft, worden alle versies van het model gearchiveerd. Als u een nieuwe modelversie maakt onder een gearchiveerde modelcontainer, wordt de nieuwe versie ook automatisch ingesteld als gearchiveerd.
Alle versies van een model archiveren:
az ml model archive --name run-model-example
Een specifieke modelversie archiveren:
az ml model archive --name run-model-example --version 1