Delen via


Modellen buiten Azure Machine Learning verpakken en implementeren (preview)

U kunt modellen buiten Azure Machine Learning implementeren voor onlinebediening door modelpakketten (preview) te maken. Met Azure Machine Learning kunt u een modelpakket maken waarmee alle afhankelijkheden worden verzameld die vereist zijn voor het implementeren van een machine learning-model op een serviceplatform. U kunt een modelpakket verplaatsen tussen werkruimten en zelfs buiten Azure Machine Learning. Zie Modelpakketten voor implementatie (preview) voor meer informatie over modelpakketten.

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 verpakt en implementeert in een Azure-app Service.

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 Werkruimten beheren om er een te maken.

    Notitie

    Werkruimten waarvoor Private Link is ingeschakeld, bieden geen ondersteuning voor verpakkingsmodellen voor implementatie buiten Azure Machine Learning.

  • 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.

Uw systeem voorbereiden

Volg deze stappen om uw systeem voor te bereiden.

  1. 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 dit artikel wordt het voorbeeld gebruikt in de mapeindpunten /online/deploy-with-packages/mlflow-model.

  2. 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>
    
  3. Voor pakketten moet het model worden geregistreerd in uw werkruimte of in een Azure Machine Learning-register. In dit voorbeeld is er 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 stap overslaan als het model dat u probeert te implementeren al is geregistreerd.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Een modelpakket implementeren in de Azure-app-service

In deze sectie verpakt u het eerder geregistreerde MLflow-model en implementeert u het in de Azure-app Service.

  1. Voor het implementeren van een model buiten Azure Machine Learning moet u een pakketspecificatie maken. Als u een pakket wilt maken dat volledig is losgekoppeld van Azure Machine Learning, geeft u de copy modus op in de modelconfiguratie. De copy modus vertelt het pakket dat de artefacten in het pakket moeten worden gekopieerd. De volgende code laat zien hoe u de kopieermodus voor de modelconfiguratie opgeeft:

    Maak een YAML-pakketspecificatie:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Tip

    Wanneer u de modelconfiguratie opgeeft die wordt gebruikt copy voor de moduseigenschap , garandeert u dat alle modelartefacten worden gekopieerd in de gegenereerde Docker-installatiekopieën in plaats van te worden gedownload uit het Azure Machine Learning-modelregister, waardoor echte draagbaarheid buiten Azure Machine Learning mogelijk is. Zie Een pakketspecificatie maken voor een volledige specificatie over alle opties bij het maken van pakketten.

  2. Start de pakketbewerking.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Het resultaat van de pakketbewerking is een omgeving in Azure Machine Learning. Het voordeel van deze omgeving is dat elke omgeving een bijbehorende Docker-installatiekopieën heeft die u in een externe implementatie kunt gebruiken. Installatiekopieën worden gehost in Azure Container Registry. In de volgende stappen ziet u hoe u de naam van de gegenereerde installatiekopieën krijgt:

    1. Ga naar de Azure Machine Learning Studio.

    2. Selecteer de sectie Omgevingen .

    3. Selecteer het tabblad Aangepaste omgevingen .

    4. Zoek de omgeving met de naam heart-classifier-mlflow-package, de naam van het pakket dat u zojuist hebt gemaakt.

    5. Kopieer de waarde die zich in het veld Azure Container Registry bevindt .

    Een schermopname van de sectie waarin de naam van de Azure Container Registry-installatiekopieën wordt weergegeven in Azure Machine Learning-studio.

  4. Implementeer dit pakket nu in een App Service.

    1. Ga naar Azure Portal en maak een nieuwe App Service-resource.

    2. Selecteer in de wizard Maken het abonnement en de resourcegroep die u gebruikt.

    3. Geef in de sectie Instantiedetails een naam op voor de app.

    4. Voor Publiceren selecteert u Docker-container.

    5. Selecteer Linux voor besturingssysteem.

      Een schermopname van het configureren van de app-service voor het implementeren van de gegenereerde Docker-containerinstallatiekopieën.

    6. Configureer de rest van de pagina indien nodig en selecteer Volgende.

    7. Ga naar het tabblad Docker .

    8. Selecteer voor Opties één container.

    9. Selecteer Azure Container Registry voor De bron van de installatiekopieën.

    10. Configureer de azure-containerregisteropties als volgt:

      1. Selecteer voor Registry het Azure Container Registry dat is gekoppeld aan de Azure Machine Learning-werkruimte.

      2. Selecteer voor Afbeelding de afbeelding die u in stap 3(e) van deze zelfstudie hebt gevonden.

      3. Selecteer voor Tag de meest recente.

      Een schermopname van de sectie Docker van de wizard, waar de docker-installatiekopieën die aan het pakket zijn gekoppeld, worden aangegeven.

    11. Configureer de rest van de wizard indien nodig.

    12. Selecteer Maken. Het model wordt nu geïmplementeerd in de App Service die u hebt gemaakt.

    13. De manier waarop u voorspellingen aanroept en opkrijgt, is afhankelijk van de deductieserver die u hebt gebruikt. In dit voorbeeld hebt u de Azure Machine Learning-deductieserver gebruikt, waarmee voorspellingen worden gemaakt onder de route /score. Zie de details van het pakket azureml-inference-server-http voor meer informatie over de invoerindelingen en -functies.

    14. Bereid de nettolading van de aanvraag voor. De indeling voor een MLflow-model dat is geïmplementeerd met azure Machine Learning-deductieserver is als volgt:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Test de modelimplementatie om te zien of het werkt.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Volgende stap