Modelpakketten implementeren op online-eindpunten (preview)
Modelpakket is een mogelijkheid in Azure Machine Learning waarmee u alle afhankelijkheden kunt verzamelen die nodig zijn voor het implementeren van een machine learning-model op een dienend platform. Het maken van pakketten voordat u modellen implementeert, biedt robuuste en betrouwbare implementatie en een efficiëntere MLOps-werkstroom. Pakketten kunnen worden verplaatst tussen werkruimten en zelfs buiten Azure Machine Learning. Meer informatie over modelpakketten (preview)
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
In dit artikel leert u hoe u een model inpakt en implementeert op een online-eindpunt in Azure Machine Learning.
Vereisten
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:
Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint. Probeer de gratis of betaalde versie van Azure Machine Learning.
Een Azure Machine Learning-werkruimte. Als u nog geen werkruimte hebt, gebruikt u de stappen in het artikel Werkruimtenbeheren om er een te maken.
Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) wordt gebruikt om toegang te verlenen tot bewerkingen in Azure Machine Learning. Als u de stappen in dit artikel wilt uitvoeren, moet aan uw gebruikersaccount de rol eigenaar of inzender voor de Azure Machine Learning-werkruimte of een aangepaste rol worden toegewezen. Zie Toegang tot een Azure Machine Learning-werkruimte beheren voor meer informatie.
Over dit voorbeeld
In dit voorbeeld verpakt u een aangepast model van het type en implementeert u het op een online-eindpunt voor onlinedeductie.
Het voorbeeld in dit artikel is gebaseerd op codevoorbeelden in de opslagplaats azureml-examples . Als u de opdrachten lokaal wilt uitvoeren zonder YAML en andere bestanden te hoeven kopiëren/plakken, kloont u eerst de opslagplaats en wijzigt u vervolgens mappen in de map:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
In deze sectie wordt het voorbeeld gebruikt in de mapeindpunten /online/deploy-packages/custom-model.
Verbinding maken met uw werkruimte
Maak verbinding met de Azure Machine Learning-werkruimte waar u uw werk gaat doen.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Het model verpakken
U kunt modelpakketten expliciet maken, zodat u kunt bepalen hoe de verpakkingsbewerking wordt uitgevoerd. U kunt modelpakketten maken door het volgende op te geven:
- Model naar pakket: elk modelpakket kan slechts één model bevatten. Azure Machine Learning biedt geen ondersteuning voor het verpakken van meerdere modellen onder hetzelfde modelpakket.
- Basisomgeving: omgevingen worden gebruikt om de basisinstallatiekopieën aan te geven en in Python-pakketten afhankelijkheden die uw model nodig heeft. Voor MLflow-modellen genereert Azure Machine Learning automatisch de basisomgeving. Voor aangepaste modellen moet u deze opgeven.
- Ondersteunende technologie: De deductiestack die wordt gebruikt om het model uit te voeren.
Tip
Als uw model MLflow is, hoeft u het modelpakket niet handmatig te maken. We kunnen automatisch verpakken vóór de implementatie. Zie MLflow-modellen implementeren naar online-eindpunten.
Voor modelpakketten moet het model worden geregistreerd in uw werkruimte of in een Azure Machine Learning-register. In dit voorbeeld hebt u al een lokale kopie van het model in de opslagplaats, dus u hoeft het model alleen in het register in de werkruimte te publiceren. U kunt deze sectie overslaan als het model dat u probeert te implementeren al is geregistreerd.
Voor ons model moeten de volgende pakketten worden uitgevoerd en we hebben ze opgegeven in een Conda-bestand:
conda.yaml
name: model-env channels: - conda-forge dependencies: - python=3.9 - numpy=1.23.5 - pip=23.0.1 - scikit-learn=1.2.2 - scipy=1.10.1 - xgboost==1.3.3
Notitie
U ziet hoe alleen de vereisten van het model worden aangegeven in de Conda YAML. Elk pakket dat is vereist voor de deductieserver, wordt opgenomen door de pakketbewerking.
Tip
Als voor uw model pakketten zijn vereist die worden gehost in privéfeeds, kunt u uw pakket zo configureren dat ze worden opgenomen. Lees Een model met afhankelijkheden in privé-Python-feeds verpakken.
Maak een basisomgeving die de modelvereisten en een basisinstallatiekopieën bevat. Alleen afhankelijkheden die vereist zijn voor uw model, worden aangegeven in de basisomgeving. Voor MLflow-modellen is de basisomgeving optioneel. In dat geval wordt deze automatisch gegenereerd door Azure Machine Learning.
Maak een basisomgevingsdefinitie:
sklearn-regression-env.yml
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json name: sklearn-regression-env image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04 conda_file: conda.yaml description: An environment for models built with XGBoost and Scikit-learn.
Maak vervolgens de omgeving als volgt:
az ml environment create -f environment/sklearn-regression-env.yml
Maak een pakketspecificatie:
package-moe.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json base_environment_source: type: environment_asset resource_id: azureml:sklearn-regression-env:1 target_environment: sklearn-regression-online-pkg inferencing_server: type: azureml_online code_configuration: code: src scoring_script: score.py
Start de modelpakketbewerking:
Het resultaat van de pakketbewerking is een omgeving.
Het modelpakket implementeren
Modelpakketten kunnen rechtstreeks worden geïmplementeerd op online-eindpunten in Azure Machine Learning. Volg deze stappen om een pakket te implementeren op een online-eindpunt:
Kies een naam voor een eindpunt om de implementatie van het pakket te hosten en maak het:
Maak de implementatie met behulp van het pakket. U ziet hoe
environment
het is geconfigureerd met het pakket dat u hebt gemaakt.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: with-package endpoint_name: hello-packages environment: azureml:sklearn-regression-online-pkg@latest instance_type: Standard_DS3_v2 instance_count: 1
Tip
U ziet dat u in dit voorbeeld niet het model of scorescript opgeeft; ze maken allemaal deel uit van het pakket.
De implementatie starten:
Op dit moment is de implementatie gereed om te worden gebruikt. U kunt testen hoe het werkt door een voorbeeldaanvraagbestand te maken:
sample-request.json
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
De aanvraag verzenden naar het eindpunt