Delen via


MLflow-modellen implementeren in batchimplementaties in Azure Machine Learning

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel wordt beschreven hoe u MLflow-modellen implementeert in Azure Machine Learning voor batchdeductie met behulp van batcheindpunten. Wanneer u MLflow-modellen implementeert op batch-eindpunten, voert Azure Machine Learning de volgende taken uit:

  • Biedt een MLflow-basisinstallatiekopieën of een gecureerde omgeving die de vereiste afhankelijkheden bevat om een Machine Learning-batchtaak uit te voeren.
  • Hiermee maakt u een batchtaakpijplijn met een scorescript dat kan worden gebruikt om gegevens te verwerken met behulp van parallelle uitvoering.

Zie Overwegingen voor het implementeren naar batchdeductie voor meer informatie over de ondersteunde invoerbestandstypen en details over hoe het MLflow-model werkt.

Vereisten

  • 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. Zie Azure Machine Learning-werkruimten beheren om een werkruimte te maken.

  • Zorg ervoor dat u de volgende machtigingen hebt in de Machine Learning-werkruimte:

    • Batch-eindpunten en -implementaties maken of beheren: gebruik een eigenaar, inzender of aangepaste rol die dit toestaat Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.
    • Azure Resource Manager-implementaties maken in de werkruimteresourcegroep: gebruik een eigenaar, inzender of aangepaste rol waarmee de resourcegroep waarin de werkruimte is geïmplementeerd, is toegestaan Microsoft.Resources/deployments/write .
  • Installeer de volgende software om te werken met Machine Learning:

    Voer de volgende opdracht uit om de Azure CLI en de ml extensie voor Azure Machine Learning te installeren:

    az extension add -n ml
    

    Implementaties van pijplijnonderdelen voor Batch-eindpunten worden geïntroduceerd in versie 2.7 van de ml extensie voor de Azure CLI. Gebruik de az extension update --name ml opdracht om de nieuwste versie op te halen.


Verbinding maken met uw werkruimte

De werkruimte is de resource op het hoogste niveau voor Machine Learning. Het biedt een centrale plek om te werken met alle artefacten die u maakt wanneer u Machine Learning gebruikt. In deze sectie maakt u verbinding met de werkruimte waar u uw implementatietaken uitvoert.

Voer in de volgende opdracht de waarden in voor uw abonnements-id, werkruimte, locatie en resourcegroep:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Het voorbeeld verkennen

In het voorbeeld in dit artikel ziet u hoe u een MLflow-model implementeert in een batch-eindpunt om batchvoorspellingen uit te voeren. Het MLflow-model is gebaseerd op de UCI Heart Disease Data Set. De database bevat 76 kenmerken, maar in het voorbeeld wordt slechts een subset van 14 gebruikt. Het model probeert de aanwezigheid van hart- en vaatziekten bij een patiënt te voorspellen met een geheel getal tussen 0 (geen aanwezigheid) en 1 (aanwezigheid).

Het model wordt getraind met behulp van een XGBBoost classificatie. Alle vereiste voorverwerking wordt verpakt als een scikit-learn pijplijn, waardoor het model een end-to-end-pijplijn is die van onbewerkte gegevens naar voorspellingen gaat.

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

De bestanden voor dit voorbeeld bevinden zich in de volgende map:

cd endpoints/batch/deploy-models/heart-classifier-mlflow

Volgen in Jupyter Notebooks

U kunt dit voorbeeld volgen met behulp van een openbare Jupyter Notebook. Open in de gekloonde opslagplaats het notebook mlflow-for-batch-tabular.ipynb .

Het MLflow-model implementeren

In deze sectie implementeert u een MLflow-model naar een batch-eindpunt, zodat u batchdeductie kunt uitvoeren op nieuwe gegevens. Voordat u verdergaat met de implementatie, moet u ervoor zorgen dat uw model is geregistreerd en dat er een beschikbaar rekencluster in de werkruimte is.

Het model registreren

Batch-eindpunten kunnen alleen geregistreerde modellen implementeren. In dit artikel gebruikt u een lokale kopie van het model in de opslagplaats. Als gevolg hiervan hoeft u het model alleen in het register in de werkruimte te publiceren.

Notitie

Als het model dat u implementeert al is geregistreerd, kunt u doorgaan naar de sectie Rekencluster maken.

Registreer het model door de volgende opdracht uit te voeren:

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

Een rekencluster maken

U moet ervoor zorgen dat de batchimplementaties kunnen worden uitgevoerd op een bepaalde beschikbare infrastructuur (compute). Batch-implementaties kunnen worden uitgevoerd op elke Machine Learning-berekening die al bestaat in de werkruimte. Meerdere batchimplementaties kunnen dezelfde rekeninfrastructuur delen.

In dit artikel werkt u aan een Machine Learning-rekencluster met de naam cpu-cluster. In het volgende voorbeeld wordt gecontroleerd of er een berekening bestaat in de werkruimte of een nieuwe berekening wordt gemaakt.

Een rekencluster maken:

az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5

Batch-eindpunt maken

Als u een eindpunt wilt maken, hebt u een naam en beschrijving nodig. De eindpuntnaam wordt weergegeven in de URI die is gekoppeld aan uw eindpunt, dus deze moet uniek zijn binnen een Azure-regio. Er kan bijvoorbeeld slechts één batcheindpunt zijn met de naam mybatchendpoint in de regio WestUS2.

  1. Plaats de naam van het eindpunt in een variabele om later eenvoudig na te verwijzen:

    Voer de volgende opdracht uit:

    ENDPOINT_NAME="heart-classifier"
    
  2. Maak het eindpunt:

    1. Als u een nieuw eindpunt wilt maken, maakt u een YAML configuratie zoals de volgende code:

      endpoint.yml

      $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
      name: heart-classifier-batch
      description: A heart condition classifier for batch inference
      auth_mode: aad_token
      
    2. Maak het eindpunt met de volgende opdracht:

      az ml batch-endpoint create -n $ENDPOINT_NAME -f endpoint.yml
      

Batchimplementatie maken

Voor MLflow-modellen hoeft u geen omgeving of scorescript aan te geven wanneer u de implementatie maakt. Het omgevings- of scorescript wordt automatisch voor u gemaakt. U kunt echter de omgeving of het scorescript opgeven als u wilt aanpassen hoe de implementatie deductie uitvoert.

  1. Als u een nieuwe implementatie wilt maken onder het gemaakte eindpunt, maakt u een YAML configuratie, zoals wordt weergegeven in de volgende code. U kunt het YAML-schema voor het volledige batcheindpunt controleren op extra eigenschappen.

    implementatie eenvoudig/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-mlflow
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  2. Maak de implementatie met de volgende opdracht:

    az ml batch-deployment create --file deployment-simple/deployment.yml --endpoint-name $ENDPOINT_NAME --set-default
    

Belangrijk

Configureer de timeout waarde in uw implementatie op basis van hoe lang het duurt voordat uw model deductie uitvoert op één batch. Hoe groter de batchgrootte, hoe langer de timeout waarde. Houd er rekening mee dat de mini_batch_size waarde het aantal bestanden in een batch aangeeft en niet het aantal steekproeven. Wanneer u met tabelgegevens werkt, kan elk bestand meerdere rijen bevatten, waardoor de tijd die het duurt voordat het batcheindpunt elk bestand verwerkt, toeneemt. Gebruik in dergelijke gevallen hoge timeout waarden om time-outfouten te voorkomen.

Het eindpunt aanroepen

Hoewel u een specifieke implementatie binnen een eindpunt kunt aanroepen, is het gebruikelijk om het eindpunt zelf aan te roepen en het eindpunt te laten bepalen welke implementatie moet worden gebruikt. Dit type implementatie heet de standaardimplementatie. Met deze methode kunt u de standaardimplementatie wijzigen, waarmee u het model voor de implementatie kunt wijzigen zonder het contract te wijzigen met de gebruiker die het eindpunt aanroept.

Gebruik de volgende instructie om de standaardimplementatie bij te werken:

DEPLOYMENT_NAME="classifier-xgboost-mlflow"
az ml batch-endpoint update --name $ENDPOINT_NAME --set defaults.deployment_name=$DEPLOYMENT_NAME

Het batch-eindpunt is nu klaar voor gebruik.

De implementatie testen

Als u uw eindpunt wilt testen, gebruikt u een voorbeeld van niet-gelabelde gegevens in deze opslagplaats die kunnen worden gebruikt met het model. Batch-eindpunten kunnen alleen gegevens verwerken die zich in de cloud bevinden en toegankelijk zijn vanuit de Machine Learning-werkruimte. In dit voorbeeld uploadt u het voorbeeld naar een Machine Learning-gegevensarchief. U maakt een gegevensasset die kan worden gebruikt om het eindpunt aan te roepen voor scoren. Houd er rekening mee dat batcheindpunten gegevens accepteren die op verschillende locaties kunnen worden geplaatst.

  1. Maak eerst de gegevensasset. De gegevensasset bestaat uit een map met meerdere CSV-bestanden die we parallel willen verwerken met behulp van batch-eindpunten. U kunt deze stap overslaan, omdat uw gegevens al zijn geregistreerd als gegevensasset of u een ander invoertype wilt gebruiken.

    1. Maak een definitie van een gegevensasset in YAML:

      heart-dataset-unlabeled.yml

      $schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
      name: heart-dataset-unlabeled
      description: An unlabeled dataset for heart classification.
      type: uri_folder
      path: data
      
    2. Maak de gegevensasset:

      az ml data create -f heart-dataset-unlabeled.yml
      
  2. Nadat u de gegevens hebt geüpload, roept u het eindpunt aan.

    Tip

    In de volgende opdrachten ziet u dat de implementatienaam niet wordt aangegeven in de invoke bewerking. Het eindpunt stuurt de taak automatisch door naar de standaardimplementatie omdat het eindpunt slechts één implementatie heeft. U kunt een specifieke implementatie instellen door het argument/de parameter deployment_nameaan te geven.

    Voer de volgende opdracht uit:

    JOB_NAME = $(az ml batch-endpoint invoke --name $ENDPOINT_NAME --input azureml:heart-dataset-unlabeled@latest --query name -o tsv)
    

    Notitie

    Het hulpprogramma jq is mogelijk niet geïnstalleerd bij elke installatie. Zie Jq downloaden voor installatie-instructies.

  3. Er wordt een batchtaak gestart zodra de opdracht wordt geretourneerd. U kunt de status van de taak controleren totdat deze is voltooid:

    Voer de volgende opdracht uit:

    az ml job show -n $JOB_NAME --web
    

Uitvoer analyseren

Uitvoervoorspellingen worden gegenereerd in het predictions.csv-bestand , zoals aangegeven in de implementatieconfiguratie. De taak genereert een uitvoer met de naam score, waar dit bestand wordt geplaatst. Er wordt slechts één bestand per batchtaak gegenereerd.

Het bestand is als volgt gestructureerd:

  • Eén rij per gegevenspunt dat naar het model wordt verzonden. Voor tabelgegevens bevat het bestand predictions.csv één rij voor elke rij die aanwezig is in elk verwerkt bestand. Voor andere gegevenstypen (afbeeldingen, audio, tekst) is er één rij per verwerkt bestand.

  • De volgende kolommen bevinden zich in het bestand (in de opgegeven volgorde):

    • row (optioneel): De bijbehorende rijindex in het invoergegevensbestand. Deze kolom is alleen van toepassing als de invoergegevens tabellair zijn. Voorspellingen worden geretourneerd in dezelfde volgorde als in het invoerbestand. U kunt afhankelijk zijn van het rijnummer dat overeenkomt met de bijbehorende voorspelling.

    • prediction: De voorspelling die is gekoppeld aan de invoergegevens. Deze waarde wordt 'as-is' geretourneerd, omdat deze is opgegeven door de functie van predict(). het model.

    • file_name: De naam van de bestandsnaam waarin de gegevens worden gelezen. Gebruik dit veld in tabelvorm om te bepalen welke voorspelling bij elke invoergegevens hoort.

U kunt de resultaten van de taak downloaden met behulp van de taaknaam.

Gebruik de volgende opdracht om de voorspellingen te downloaden:

az ml job download --name $JOB_NAME --output-name score --download-path ./

Nadat u het bestand hebt gedownload, kunt u het bestand openen met het bewerkingsprogramma van uw voorkeur. In het volgende voorbeeld worden de voorspellingen geladen met behulp van een Pandas dataframe.

import pandas as pd

score = pd.read_csv(
    "named-outputs/score/predictions.csv", names=["row", "prediction", "file"]
)

In de uitvoer wordt een tabel weergegeven:

Rij Voorspelling Bestand
0 0 heart-unlabeled-0.csv
1 1 heart-unlabeled-0.csv
2 0 heart-unlabeled-0.csv
... ... ...
307 0 heart-unlabeled-3.csv

Tip

U ziet dat de invoergegevens in dit voorbeeld tabelgegevens bevatten in CSV-indeling. Er zijn vier verschillende invoerbestanden: heart-unlabeled-0.csv, heart-unlabeled-1.csv, heart-unlabeled-2.csv en heart-unlabeled-3.csv.

Overwegingen voor batchdeductie bekijken

Machine Learning ondersteunt de implementatie van MLflow-modellen voor batcheindpunten zonder een scorescript aan te geven. Deze benadering is een handige manier om modellen te implementeren waarvoor grote hoeveelheden gegevens moeten worden verwerkt die vergelijkbaar zijn met batchverwerking. Machine Learning gebruikt informatie in de MLflow-modelspecificatie om het deductieproces in te delen.

De verdeling van werk aan werknemers verkennen

Batch-eindpunten distribueren werk op bestandsniveau voor gestructureerde en ongestructureerde gegevens. Als gevolg hiervan worden alleen URI-bestanden en URI-mappen ondersteund voor deze functie. Elke werkrol verwerkt batches Mini batch size bestanden tegelijk. Voor tabellaire gegevens houden batcheindpunten geen rekening met het aantal rijen in elk bestand bij het distribueren van het werk.

Waarschuwing

Geneste mapstructuren worden niet verkend tijdens deductie. Als u uw gegevens partitioneren met behulp van mappen, moet u de structuur platmaken voordat u verdergaat.

Batch-implementaties roepen de predict functie van het MLflow-model eenmaal per bestand aan. Voor CSV-bestanden met meerdere rijen kan deze actie een geheugenbelasting in de onderliggende rekenkracht opleggen. Het gedrag kan de tijd die nodig is voor het model verhogen om één bestand te scoren, met name voor dure modellen zoals grote taalmodellen. Als u meerdere uitzonderingen met onvoldoende geheugen of time-outvermeldingen in logboeken tegenkomt, kunt u overwegen om de gegevens in kleinere bestanden met minder rijen te splitsen of batchverwerking op rijniveau in het scorescript van het model te implementeren.

Ondersteuning voor bestandstypen controleren

De volgende gegevenstypen worden ondersteund voor batchdeductie bij het implementeren van MLflow-modellen zonder een omgeving of scorescript. Als u een ander bestandstype wilt verwerken of een andere deductie wilt uitvoeren, kunt u de implementatie maken door de implementatie van het MLflow-model aan te passen met een scorescript.

Bestandsextensie Type geretourneerd als modelinvoer Handtekeningvereiste
.csv, , .parquet.pqt pd.DataFrame ColSpec. Als deze niet is opgegeven, wordt het typen van kolommen niet afgedwongen.
.png, , .jpg.jpeg, .tiff, , , .bmp.gif np.ndarray TensorSpec. De invoer wordt aangepast aan de vorm van tensors, indien beschikbaar. Als er geen handtekening beschikbaar is, worden de tensors van het type np.uint8 afgeleid. Zie Overwegingen voor MLflow-modellen die afbeeldingen verwerken voor meer informatie.

Waarschuwing

Niet-ondersteund bestand dat mogelijk aanwezig is in de invoergegevens, zorgt ervoor dat de taak mislukt. In dergelijke gevallen ziet u een fout die lijkt op ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.avro'. Bestandstype 'avro' wordt niet ondersteund.

Meer informatie over het afdwingen van handtekeningen voor MLflow-modellen

Batch-implementatietaken dwingen de gegevenstypen van de invoer af tijdens het lezen van de gegevens met behulp van de beschikbare MLflow-modelhandtekening. Als gevolg hiervan voldoet uw gegevensinvoer aan de typen die zijn aangegeven in de modelhandtekening. Als de gegevens niet kunnen worden geparseerd zoals verwacht, mislukt de taak met een fout die vergelijkbaar is met ERROR:azureml:Error processing input file: '/mnt/batch/tasks/.../a-given-file.csv'. Uitzondering: ongeldige letterlijke waarde voor int() met grondtal 10: 'value'.

Tip

Handtekeningen in MLflow-modellen zijn optioneel, maar ze worden sterk aangemoedigd. Ze bieden een handige manier voor vroege detectie van problemen met gegevenscompatibiliteit. Zie Modellen vastleggen met een aangepaste handtekening, omgeving of voorbeelden voor meer informatie over het vastleggen van modellen met handtekeningen.

U kunt de modelhandtekening van uw model inspecteren door het MLmodel bestand te openen dat is gekoppeld aan uw MLflow-model. Zie Handtekeningen in MLflow voor meer informatie over de werking van handtekeningen in MLflow.

Ondersteuning voor smaak onderzoeken

Batch-implementaties ondersteunen het implementeren van MLflow-modellen met alleen een pyfunc smaak. Zie Modelimplementatie aanpassen met scorescript om een andere smaak te implementeren.

Modelimplementatie aanpassen met scorescript

MLflow-modellen kunnen worden geïmplementeerd op batch-eindpunten zonder een scorescript in de implementatiedefinitie aan te geven. U kunt er echter voor kiezen om dit bestand (ook wel het batchstuurprogramma genoemd) aan te geven om deductie-uitvoering aan te passen.

Doorgaans selecteert u deze werkstroom voor de volgende scenario's:

  • Procesbestandstypen worden niet ondersteund door batchimplementaties van MLflow-implementaties.
  • Pas aan hoe het model wordt uitgevoerd, zoals het gebruik van een specifieke smaak om het te laden met de mlflow.<flavor>.load() functie.
  • Voltooi pre- of postverwerking in uw scoreroutine, wanneer dit niet is voltooid door het model zelf.
  • Pas de presentatie van het model aan dat niet goed wordt weergegeven met tabelgegevens, zoals een tensorgrafiek die een afbeelding vertegenwoordigt.
  • Sta toe dat het model gegevens in segmenten kan lezen omdat het bestand niet tegelijk kan verwerken vanwege geheugenbeperkingen.

Belangrijk

Als u een scorescript wilt aangeven voor een implementatie van een MLflow-model, moet u de omgeving opgeven waarin de implementatie wordt uitgevoerd.

Het scorescript gebruiken

Gebruik de volgende stappen om een MLflow-model te implementeren met een aangepast scorescript:

  1. Identificeer de map waarin uw MLflow-model is geplaatst.

    1. Blader in de Azure Machine Learning-portal naar Modellen.

    2. Selecteer het model dat u wilt implementeren en selecteer vervolgens het tabblad Artefacten .

    3. Noteer de weergegeven map. Deze map is aangegeven toen het model werd geregistreerd.

      Schermopname van de map waarin de modelartefacten zijn geplaatst.

  2. Maak een scorescript. U ziet hoe de vorige mapnaam model is opgenomen in de init() functie.

    deployment-custom/code/batch_driver.py

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license.
    
    import os
    import glob
    import mlflow
    import pandas as pd
    import logging
    
    
    def init():
        global model
        global model_input_types
        global model_output_names
    
        # AZUREML_MODEL_DIR is an environment variable created during deployment
        # It is the path to the model folder
        # Please provide your model's folder name if there's one
        model_path = glob.glob(os.environ["AZUREML_MODEL_DIR"] + "/*/")[0]
    
        # Load the model, it's input types and output names
        model = mlflow.pyfunc.load(model_path)
        if model.metadata and model.metadata.signature:
            if model.metadata.signature.inputs:
                model_input_types = dict(
                    zip(
                        model.metadata.signature.inputs.input_names(),
                        model.metadata.signature.inputs.pandas_types(),
                    )
                )
            if model.metadata.signature.outputs:
                if model.metadata.signature.outputs.has_input_names():
                    model_output_names = model.metadata.signature.outputs.input_names()
                elif len(model.metadata.signature.outputs.input_names()) == 1:
                    model_output_names = ["prediction"]
        else:
            logging.warning(
                "Model doesn't contain a signature. Input data types won't be enforced."
            )
    
    
    def run(mini_batch):
        print(f"run method start: {__file__}, run({len(mini_batch)} files)")
    
        data = pd.concat(
            map(
                lambda fp: pd.read_csv(fp).assign(filename=os.path.basename(fp)), mini_batch
            )
        )
    
        if model_input_types:
            data = data.astype(model_input_types)
    
        # Predict over the input data, minus the column filename which is not part of the model.
        pred = model.predict(data.drop("filename", axis=1))
    
        if pred is not pd.DataFrame:
            if not model_output_names:
                model_output_names = ["pred_col" + str(i) for i in range(pred.shape[1])]
            pred = pd.DataFrame(pred, columns=model_output_names)
    
        return pd.concat([data, pred], axis=1)
    
  3. Maak een omgeving waarin het scorescript kan worden uitgevoerd. Omdat het model in dit voorbeeld MLflow is, worden de conda-vereisten ook opgegeven in het modelpakket. Zie de MLmodel-indeling voor meer informatie over MLflow-modellen en de opgenomen bestanden.

    In deze stap bouwt u de omgeving met behulp van de conda-afhankelijkheden van het bestand. U moet ook het azureml-core pakket opnemen dat vereist is voor Batch-implementaties.

    Tip

    Als uw model al is geregistreerd in het modelregister, kunt u het conda.yml bestand dat is gekoppeld aan uw model downloaden en kopiëren. Het bestand is beschikbaar in Azure Machine Learning-studio onder Modellen>selecteren uw model in de lijst>Artefacten. Selecteer het conda.yml bestand in de hoofdmap en selecteer de inhoud ervan downloaden of kopiëren.

    Belangrijk

    In dit voorbeeld wordt een Conda-omgeving gebruikt die is opgegeven bij /heart-classifier-mlflow/environment/conda.yaml. Dit bestand is gemaakt door het oorspronkelijke MLflow conda-afhankelijkhedenbestand te combineren en het azureml-core pakket toe te voegen. U kunt het conda.yml bestand niet rechtstreeks vanuit het model gebruiken.

    De omgevingsdefinitie is opgenomen in de implementatiedefinitie zelf als een anonieme omgeving. U ziet de volgende regels in de implementatie:

    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    
  4. De implementatie configureren:

    Als u een nieuwe implementatie wilt maken onder het gemaakte eindpunt, maakt u een YAML configuratie, zoals wordt weergegeven in het volgende codefragment. U kunt het YAML-schema voor het volledige batcheindpunt controleren op extra eigenschappen.

    implementatie-aangepast/deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
    endpoint_name: heart-classifier-batch
    name: classifier-xgboost-custom
    description: A heart condition classifier based on XGBoost
    type: model
    model: azureml:heart-classifier-mlflow@latest
    environment:
      name: batch-mlflow-xgboost
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
      conda_file: environment/conda.yaml
    code_configuration:
      code: code
      scoring_script: batch_driver.py
    compute: azureml:batch-cluster
    resources:
      instance_count: 2
    settings:
      max_concurrency_per_instance: 2
      mini_batch_size: 2
      output_action: append_row
      output_file_name: predictions.csv
      retry_settings:
        max_retries: 3
        timeout: 300
      error_threshold: -1
      logging_level: info
    
  5. De implementatie maken:

    Voer de volgende code uit:

    az ml batch-deployment create --file deployment-custom/deployment.yml --endpoint-name $ENDPOINT_NAME
    

Het batch-eindpunt is nu klaar voor gebruik.

Resources opschonen

Nadat u de oefening hebt voltooid, verwijdert u resources die niet meer nodig zijn.

Voer de volgende code uit om het batch-eindpunt en alle onderliggende implementaties te verwijderen:

az ml batch-endpoint delete --name $ENDPOINT_NAME --yes

Met deze opdracht worden batchscoretaken niet verwijderd.