Dela via


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:

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.

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

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. 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.

  3. 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
    
  4. 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
    
  5. Starta modellpaketåtgärden:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. 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:

  1. Välj ett namn för en slutpunkt som värd för distributionen av paketet och skapa det:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. 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.

  3. Starta distributionen:

    az ml online-deployment create -f deployment.yml
    
  4. 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]
        ]
    }
    
  5. Skicka begäran till slutpunkten

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Gå vidare