Modellpaket för distribution (förhandsversion)
När du har tränat en maskininlärningsmodell måste du distribuera den så att andra kan använda dess förutsägelser. Att distribuera en modell kräver dock mer än bara vikterna eller modellens artefakter. Modellpaket ä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. Du kan flytta paket mellan arbetsytor och även utanför Azure Machine Learning.
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.
Vad är ett modellpaket?
Bästa praxis innan du distribuerar en modell är att alla beroenden som modellen kräver för att köras måste samlas in och matchas så att du kan distribuera modellen med en reproducerbar och robust metod.
En modells beroenden är vanligtvis:
- Basavbildning eller miljö där modellen körs.
- Lista över Python-paket och beroenden som modellen är beroende av för att fungera korrekt.
- Extra tillgångar som din modell kan behöva för att generera slutsatsdragning. Dessa tillgångar kan innehålla etikettens kartor och förbearbetningsparametrar.
- Programvara som krävs för att slutsatsdragningsservern ska kunna hantera begäranden. till exempel flaskserver eller TensorFlow-server.
- Slutsatsdragningsrutin (om det behövs).
Alla dessa element måste samlas in för att sedan distribueras i den betjänande infrastrukturen. Den resulterande tillgången som genereras när du har samlat in alla beroenden kallas för ett modellpaket.
Fördelar med paketeringsmodeller
Paketeringsmodeller före distribution har följande fördelar:
- Reproducerbarhet: Alla beroenden samlas in vid paketeringstiden i stället för distributionstiden. När beroendena har lösts kan du distribuera paketet så många gånger som det behövs samtidigt som du garanterar att beroenden redan har lösts.
- Snabbare konfliktlösning: Azure Machine Learning identifierar eventuella felkonfigurationer relaterade till beroendena, till exempel ett Python-paket som saknas, samtidigt som modellen paketerars. Du behöver inte distribuera modellen för att identifiera sådana problem.
- Enklare integrering med slutsatsdragningsservern: Eftersom den slutsatsdragningsserver som du använder kan behöva specifika programvarukonfigurationer (till exempel Torch Serve-paketet) kan sådan programvara generera konflikter med modellens beroenden. Modellpaket i Azure Machine Learning matar in de beroenden som krävs av slutsatsdragningsservern för att hjälpa dig att identifiera konflikter innan du distribuerar en modell.
- Portabilitet: Du kan flytta Azure Machine Learning-modellpaket från en arbetsyta till en annan med hjälp av register. Du kan också generera paket som kan distribueras utanför Azure Machine Learning.
- MLflow-stöd med privata nätverk: För MLflow-modeller kräver Azure Machine Learning en Internetanslutning för att kunna installera nödvändiga Python-paket dynamiskt för att modellerna ska kunna köras. Genom att paketera MLflow-modeller löses dessa Python-paket under modellpaketeringsåtgärden, så att MLflow-modellpaketet inte kräver att en Internetanslutning distribueras.
Dricks
Paketering av en MLflow-modell före distribution rekommenderas starkt och krävs även för slutpunkter som inte har utgående nätverksanslutning. En MLflow-modell anger dess beroenden i själva modellen, vilket kräver dynamisk installation av paket. När en MLflow-modell paketeras utförs den här dynamiska installationen vid paketeringstid i stället för distributionstid.
Distribution av modellpaket
Du kan ange modellpaket som indata till onlineslutpunkter. Användning av modellpaket hjälper till att effektivisera dina MLOps-arbetsflöden genom att minska risken för fel vid distributionen, eftersom alla beroenden skulle ha samlats in under paketeringsåtgärden. Du kan också konfigurera modellpaketet för att generera docker-avbildningar som du kan distribuera var som helst utanför Azure Machine Learning, antingen lokalt eller i molnet.
Paket före distribution
Det enklaste sättet att distribuera med ett modellpaket är genom att ange till Azure Machine Learning för att distribuera ett modellpaket innan du kör distributionen. När du använder Azure CLI, Azure Machine Learning SDK eller Azure Machine Learning-studio för att skapa en distribution i en onlineslutpunkt kan du ange användning av modellpaketering på följande sätt:
--with-package
Använd flaggan när du skapar en distribution:
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning paketera modellen först och kör sedan distributionen.
Kommentar
Om du använder paket, om du anger en basmiljö med conda
eller pip
beroenden, behöver du inte inkludera beroenden för slutsatsdragningsservern (azureml-inference-server-http
). I stället läggs dessa beroenden till automatiskt åt dig.
Distribuera en paketerad modell
Du kan distribuera en modell som har paketerats direkt till en onlineslutpunkt. Den här metoden säkerställer reproducerbarhet för resultat och det är en bra idé. Se Paketera och distribuera modeller till onlineslutpunkter.
Om du vill distribuera paketet utanför Azure Machine Learning läser du Paketera och distribuera modeller utanför Azure Machine Learning.