Distribuera modellpaket till onlineslutpunkter (förhandsversion)
Modellpaketet är en funktion i Azure Machine Learning som gör att du kan samla in alla beroenden som krävs för att distribuera en maskininlärningsmodell till en serveringsplattform. Att skapa paket innan du distribuerar modeller ger robust och tillförlitlig distribution och ett effektivare MLOps-arbetsflöde. Paket kan flyttas mellan arbetsytor och även utanför Azure Machine Learning. Läs mer om modellpaket (förhandsversion)
Viktigt!
Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.
Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
I den här artikeln lär du dig att paketera en modell och distribuera den till en onlineslutpunkt i Azure Machine Learning.
Förutsättningar
Innan du följer stegen i den här artikeln kontrollerar du att du har följande förutsättningar:
En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Machine Learning.
En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i artikeln Så här hanterar du arbetsytorför att skapa en.
Rollbaserade åtkomstkontroller i Azure (Azure RBAC) används för att bevilja åtkomst till åtgärder i Azure Machine Learning. Om du vill utföra stegen i den här artikeln måste ditt användarkonto tilldelas rollen ägare eller deltagare för Azure Machine Learning-arbetsytan eller en anpassad roll. Mer information finns i Hantera åtkomst till en Azure Machine Learning-arbetsyta.
Om det här exemplet
I det här exemplet paketera du en modell av typen anpassad och distribuerar den till en onlineslutpunkt för onlineinferens.
Exemplet i den här artikeln baseras på kodexempel som finns på lagringsplatsen azureml-examples . Om du vill köra kommandona lokalt utan att behöva kopiera/klistra in YAML och andra filer klonar du först lagringsplatsen och ändrar sedan kataloger till mappen:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
I det här avsnittet används exemplet i mappens slutpunkter/online/deploy-packages/custom-model.
Anslut till din arbetsyta
Anslut till Azure Machine Learning-arbetsytan där du ska utföra ditt arbete.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Paketera modellen
Du kan skapa modellpaket explicit så att du kan styra hur paketeringsåtgärden utförs. Du kan skapa modellpaket genom att ange följande:
- Modell att paketera: Varje modellpaket kan bara innehålla en enda modell. Azure Machine Learning stöder inte paketering av flera modeller under samma modellpaket.
- Basmiljö: Miljöer används för att ange basavbildningen och i Python-paket är beroenden som din modell behöver. För MLflow-modeller genererar Azure Machine Learning automatiskt basmiljön. För anpassade modeller måste du ange det.
- Serveringsteknik: Den slutsatsdragningsstack som används för att köra modellen.
Dricks
Om din modell är MLflow behöver du inte skapa modellpaketet manuellt. Vi kan paketera automatiskt före distributionen. Se Distribuera MLflow-modeller till onlineslutpunkter.
Modellpaket kräver att modellen registreras på din arbetsyta eller i ett Azure Machine Learning-register. I det här exemplet har du redan en lokal kopia av modellen på lagringsplatsen, så du behöver bara publicera modellen till registret på arbetsytan. Du kan hoppa över det här avsnittet om den modell som du försöker distribuera redan är registrerad.
Vår modell kräver att följande paket körs och vi har angett dem i en conda-fil:
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
Kommentar
Observera att endast modellens krav anges i conda YAML. Alla paket som krävs för inferensservern inkluderas av paketåtgärden.
Dricks
Om din modell kräver paket som finns i privata feeds kan du konfigurera paketet så att det inkluderar dem. Läs Paketera en modell som har beroenden i privata Python-feeds.
Skapa en basmiljö som innehåller modellkraven och en basavbildning. Endast beroenden som krävs av din modell anges i basmiljön. För MLflow-modeller är basmiljön valfri, i vilket fall Azure Machine Learning automatiskt skapar den åt dig.
Skapa en grundläggande miljödefinition:
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.
Skapa sedan miljön på följande sätt:
az ml environment create -f environment/sklearn-regression-env.yml
Skapa en paketspecifikation:
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
Starta modellpaketåtgärden:
Resultatet av paketåtgärden är en miljö.
Distribuera modellpaketet
Modellpaket kan distribueras direkt till onlineslutpunkter i Azure Machine Learning. Följ dessa steg för att distribuera ett paket till en onlineslutpunkt:
Välj ett namn för en slutpunkt som värd för distributionen av paketet och skapa det:
Skapa distributionen med hjälp av paketet. Observera hur
environment
konfigureras med det paket som du har skapat.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
Dricks
Observera att du inte anger modellen eller bedömningsskriptet i det här exemplet. de är alla en del av paketet.
Starta distributionen:
Nu är distributionen redo att användas. Du kan testa hur det fungerar genom att skapa en exempelbegäransfil:
sample-request.json
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
Skicka begäran till slutpunkten