Modelpakketten voor implementatie (preview)
Nadat u een machine learning-model hebt getraind, moet u het implementeren zodat anderen de voorspellingen kunnen gebruiken. Het implementeren van een model vereist echter meer dan alleen de gewichten of de artefacten van het model. Modelpakketten zijn een mogelijkheid in Azure Machine Learning waarmee u alle afhankelijkheden kunt verzamelen die nodig zijn voor het implementeren van een machine learning-model naar een dienend platform. U kunt pakketten verplaatsen tussen werkruimten en zelfs buiten Azure Machine Learning.
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.
Wat is een modelpakket?
Als best practice voordat u een model implementeert, moeten alle afhankelijkheden die het model nodig heeft om te worden uitgevoerd, worden verzameld en opgelost, zodat u het model in een reproduceerbare en robuuste benadering kunt implementeren.
De afhankelijkheden van een model zijn doorgaans:
- Basisinstallatiekopieën of -omgeving waarin uw model wordt uitgevoerd.
- Lijst met Python-pakketten en afhankelijkheden waarvan het model afhankelijk is om goed te functioneren.
- Extra assets die uw model mogelijk nodig heeft om deductie te genereren. Deze assets kunnen de toewijzingen en voorverwerkingsparameters van labels bevatten.
- Software die vereist is voor de deductieserver om aanvragen te verwerken; Bijvoorbeeld flask-server of TensorFlow Serving.
- Deductieroutine (indien nodig).
Al deze elementen moeten worden verzameld om vervolgens te worden geïmplementeerd in de ondersteunende infrastructuur. De resulterende asset die wordt gegenereerd nadat u alle afhankelijkheden hebt verzameld, wordt een modelpakket genoemd.
Voordelen van verpakkingsmodellen
Het verpakken van modellen vóór de implementatie heeft de volgende voordelen:
- Reproduceerbaarheid: alle afhankelijkheden worden verzameld tijdens het verpakken, in plaats van de implementatietijd. Zodra afhankelijkheden zijn opgelost, kunt u het pakket zo vaak als nodig implementeren terwijl u garandeert dat afhankelijkheden al zijn opgelost.
- Snellere conflictoplossing: Azure Machine Learning detecteert eventuele onjuiste configuraties met betrekking tot de afhankelijkheden, zoals een ontbrekend Python-pakket, terwijl het model wordt verpakt. U hoeft het model niet te implementeren om dergelijke problemen te detecteren.
- Eenvoudigere integratie met de deductieserver: omdat de deductieserver die u gebruikt mogelijk specifieke softwareconfiguraties nodig heeft (bijvoorbeeld torch Serve-pakket), kan dergelijke software conflicten genereren met de afhankelijkheden van uw model. Modelpakketten in Azure Machine Learning injecteren de afhankelijkheden die door de deductieserver zijn vereist om conflicten te detecteren voordat u een model implementeert.
- Draagbaarheid: U kunt Azure Machine Learning-modelpakketten van de ene werkruimte naar de andere verplaatsen met behulp van registers. U kunt ook pakketten genereren die buiten Azure Machine Learning kunnen worden geïmplementeerd.
- MLflow-ondersteuning met privénetwerken: Voor MLflow-modellen vereist Azure Machine Learning een internetverbinding om de benodigde Python-pakketten dynamisch te kunnen installeren om de modellen uit te voeren. Door MLflow-modellen te verpakken, worden deze Python-pakketten opgelost tijdens de modelverpakkingsbewerking, zodat voor het MLflow-modelpakket geen internetverbinding hoeft te worden geïmplementeerd.
Tip
Het verpakken van een MLflow-model voordat de implementatie wordt aanbevolen en zelfs vereist voor eindpunten die geen uitgaande netwerkverbinding hebben. Een MLflow-model geeft de afhankelijkheden in het model zelf aan, waardoor dynamische installatie van pakketten vereist is. Wanneer een MLflow-model is verpakt, wordt deze dynamische installatie uitgevoerd tijdens het verpakken in plaats van de implementatietijd.
Implementatie van modelpakketten
U kunt modelpakketten opgeven als invoer voor online-eindpunten. Het gebruik van modelpakketten helpt bij het stroomlijnen van uw MLOps-werkstromen door de kans op fouten tijdens de implementatie te verminderen, omdat alle afhankelijkheden tijdens de verpakking zouden zijn verzameld. U kunt het modelpakket ook configureren om docker-installatiekopieën te genereren die u overal buiten Azure Machine Learning kunt implementeren, on-premises of in de cloud.
Pakket vóór implementatie
De eenvoudigste manier om te implementeren met behulp van een modelpakket is door op te geven aan Azure Machine Learning om een modelpakket te implementeren voordat de implementatie wordt uitgevoerd. Wanneer u de Azure CLI, Azure Machine Learning SDK of Azure Machine Learning-studio gebruikt om een implementatie te maken in een online-eindpunt, kunt u het gebruik van modelverpakkingen als volgt opgeven:
Gebruik de vlag bij het --with-package
maken van een implementatie:
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning verpakt het model eerst en voert vervolgens de implementatie uit.
Notitie
Als u pakketten gebruikt en u een basisomgeving met conda
of pip
afhankelijkheden aangeeft, hoeft u de afhankelijkheden van de deductieserver (azureml-inference-server-http
) niet op te nemen. In plaats daarvan worden deze afhankelijkheden automatisch voor u toegevoegd.
Een verpakt model implementeren
U kunt een model implementeren dat rechtstreeks is verpakt in een online-eindpunt. Deze procedure zorgt voor reproduceerbaarheid van resultaten en het is een best practice. Zie Modellen verpakken en implementeren in Online-eindpunten.
Als u het pakket buiten Azure Machine Learning wilt implementeren, raadpleegt u Modellen buiten Azure Machine Learning verpakken en implementeren.