Dela via


Paketera och distribuera modeller utanför Azure Mašinsko učenje (förhandsversion)

Du kan distribuera modeller utanför Azure Mašinsko učenje för onlineservering genom att skapa modellpaket (förhandsversion). Med Azure Mašinsko učenje kan du skapa ett modellpaket som samlar in alla beroenden som krävs för att distribuera en maskininlärningsmodell till en serveringsplattform. Du kan flytta ett modellpaket mellan arbetsytor och även utanför Azure Mašinsko učenje. Mer information om modellpaket finns i Modellpaket för distribution (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 får du lära dig hur du paketar en modell och distribuerar den till en Azure App Service.

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 Mašinsko učenje.

  • En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i artikeln Så här hanterar du arbetsytor för att skapa en.

    Kommentar

    Privata länkaktiverade arbetsytor stöder inte paketeringsmodeller för distribution utanför Azure Mašinsko učenje.

  • 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 Mašinsko učenje-arbetsytan eller en anpassad roll. Mer information finns i Hantera åtkomst till en Azure Mašinsko učenje-arbetsyta.

Förbereda systemet

Följ de här stegen för att förbereda systemet.

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

    Den här artikeln använder exemplet i mappens slutpunkter/online/deploy-with-packages/mlflow-model.

  2. Anslut till Azure Mašinsko učenje-arbetsytan där du ska utföra ditt arbete.

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. Paket kräver att modellen registreras på din arbetsyta eller i ett Azure Mašinsko učenje-register. I det här exemplet finns det 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 steget om den modell som du försöker distribuera redan är registrerad.

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

Distribuera ett modellpaket till Azure App Service

I det här avsnittet paketar du den tidigare registrerade MLflow-modellen och distribuerar den till Azure App Service.

  1. Att distribuera en modell utanför Azure Mašinsko učenje kräver att du skapar en paketspecifikation. Om du vill skapa ett paket som är helt frånkopplat från Azure Mašinsko učenje anger du copy läget i modellkonfigurationen. Läget copy instruerar paketet att kopiera artefakterna i paketet. Följande kod visar hur du anger kopieringsläget för modellkonfigurationen:

    Skapa en YAML-paketspecifikation:

    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
    

    Dricks

    När du anger modellkonfigurationen med egenskapen copy mode garanterar du att alla modellartefakter kopieras i den genererade docker-avbildningen i stället för att laddas ned från Azure Mašinsko učenje-modellregistret, vilket ger verklig portabilitet utanför Azure Mašinsko učenje. En fullständig specifikation om alla alternativ när du skapar paket finns i Skapa en paketspecifikation.

  2. Starta paketåtgärden.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. Resultatet av paketåtgärden är en miljö i Azure Mašinsko učenje. Fördelen med att ha den här miljön är att varje miljö har en motsvarande docker-avbildning som du kan använda i en extern distribution. Avbildningar finns i Azure Container Registry. Följande steg visar hur du får namnet på den genererade avbildningen:

    1. Gå till Azure Mašinsko učenje Studio.

    2. Välj avsnittet Miljöer .

    3. Välj fliken Anpassade miljöer .

    4. Leta efter miljön med namnet heart-classifier-mlflow-package, som är namnet på det paket som du nyss skapade.

    5. Kopiera värdet som finns i azure-containerregistrets fält.

    En skärmbild som visar avsnittet där avbildningsnamnet för Azure-containerregistret visas i Azure Mašinsko učenje studio.

  4. Distribuera nu det här paketet i en App Service.

    1. Gå till Azure-portalen och skapa en ny App Service-resurs.

    2. I guiden skapa väljer du den prenumeration och resursgrupp som du använder.

    3. I avsnittet Instansinformation ger du appen ett namn.

    4. För Publicera väljer du Docker-container.

    5. För Operativsystem väljer du Linux.

      En skärmbild som visar hur du konfigurerar apptjänsten för att distribuera den genererade Docker-containeravbildningen.

    6. Konfigurera resten av sidan efter behov och välj Nästa.

    7. Gå till fliken Docker .

    8. För Alternativ väljer du Enskild container.

    9. Som Avbildningskälla väljer du Azure Container Registry.

    10. Konfigurera alternativen för Azure-containerregistret på följande sätt:

      1. För Register väljer du Azure Container Registry som är associerat med Azure Mašinsko učenje-arbetsytan.

      2. För Bild väljer du den bild som du hittade i steg 3(e) i den här självstudien.

      3. För Tagg väljer du senaste.

      En skärmbild som visar avsnittet Docker i guiden, där docker-avbildningen som är associerad med paketet anges.

    11. Konfigurera resten av guiden efter behov.

    12. Välj Skapa. Modellen distribueras nu i den App Service som du skapade.

    13. Hur du anropar och får förutsägelser beror på den slutsatsdragningsserver som du använde. I det här exemplet använde du Azure Mašinsko učenje inferensserver, som skapar förutsägelser under vägen /score. Mer information om indataformat och funktioner finns i information om paketet azureml-inference-server-http.

    14. Förbered nyttolasten för begäran. Formatet för en MLflow-modell som distribueras med Azure Mašinsko učenje inferensserver är följande:

      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. Testa modelldistributionen för att se om den fungerar.

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

Gå vidare