Vytváření úloh a vstupních dat pro dávkové koncové body

Dávkové koncové body je možné použít k provádění dlouhých dávkových operací nad velkými objemy dat. Taková data lze umístit na různá místa. Některé typy dávkových koncových bodů můžou také přijímat literály jako vstupy. V tomto kurzu se podíváme na to, jak můžete tyto vstupy zadat a jaké různé typy nebo umístění jsou podporované.

Před vyvoláním koncového bodu

Pokud chcete úspěšně vyvolat dávkový koncový bod a vytvořit úlohy, ujistěte se, že máte následující:

  • Máte oprávnění ke spuštění dávkového nasazení koncového bodu. Ke spuštění nasazení je možné použít role AzureML Datoví vědci, přispěvatele a vlastníka. U vlastních definic rolí se v koncových bodech dávky čte autorizace, abyste věděli, jaká konkrétní oprávnění jsou potřebná.

  • Máte platný token ID Microsoft Entra představující objekt zabezpečení pro vyvolání koncového bodu. Tento objekt zabezpečení může být instanční objekt uživatele nebo instanční objekt. V každém případě se po vyvolání koncového bodu vytvoří úloha dávkového nasazení pod identitou přidruženou k tokenu. Pro účely testování můžete pro vyvolání použít vlastní přihlašovací údaje, jak je uvedeno níže.

    Pomocí Azure CLI se přihlaste pomocí interaktivního ověřování kódu nebo kódu zařízení:

    az login
    

    Další informace o ověřování pomocí více typů přihlašovacích údajů pro čtení autorizace v dávkových koncových bodech.

  • Výpočetní cluster , ve kterém je koncový bod nasazený, má přístup ke čtení vstupních dat.

    Tip

    Pokud jako vstup dat používáte úložiště dat bez přihlašovacích údajů nebo externí účet úložiště Azure, ujistěte se, že nakonfigurujete výpočetní clustery pro přístup k datům. Spravovaná identita výpočetního clusteru se používá pro připojení účtu úložiště. Identita úlohy (invoker) se stále používá ke čtení podkladových dat, což vám umožní dosáhnout podrobného řízení přístupu.

Základy vytváření úloh

Pokud chcete vytvořit úlohu z dávkového koncového bodu, musíte ji vyvolat. Volání je možné provést pomocí Azure CLI, sady Azure Machine Učení SDK pro Python nebo volání rozhraní REST API. Následující příklady ukazují základy vyvolání dávkového koncového bodu, který přijímá jednu vstupní složku dat ke zpracování. Příklady s různými vstupy a výstupy najdete v tématu Vysvětlení vstupů a výstupů.

invoke Použijte operaci v rámci dávkových koncových bodů:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

Vyvolání konkrétního nasazení

Koncové body služby Batch můžou hostovat více nasazení ve stejném koncovém bodu. Výchozí koncový bod se použije, pokud uživatel nezadá jinak. Nasazení, které se používá, můžete změnit následujícím způsobem:

Použijte argument --deployment-name nebo -d zadejte název nasazení:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --deployment-name $DEPLOYMENT_NAME \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

Konfigurace vlastností úlohy

Některé vlastnosti vytvořené úlohy můžete nakonfigurovat při vyvolání.

Poznámka:

Konfigurace vlastností úlohy je k dispozici pouze v dávkových koncových bodech s nasazeními součástí kanálu v tuto chvíli.

Konfigurace názvu experimentu

Pomocí argumentu --experiment-name zadejte název experimentu:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
                            --experiment-name "my-batch-job-experiment" \
                            --input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data

Principy vstupů a výstupů

Koncové body služby Batch poskytují odolné rozhraní API, které uživatelé můžou použít k vytváření dávkových úloh. Pomocí stejného rozhraní můžete zadat vstupy a výstupy, které vaše nasazení očekává. Pomocí vstupů předejte všechny informace, které koncový bod potřebuje k provedení úlohy.

Diagram znázorňující, jak se vstupy a výstupy používají v dávkových koncových bodech

Koncové body služby Batch podporují dva typy vstupů:

  • Vstupy dat, což jsou ukazatele na konkrétní umístění úložiště nebo prostředek azure machine Učení.
  • Literální vstupy, což jsou literální hodnoty (například čísla nebo řetězce), které chcete předat úloze.

Počet a typ vstupů a výstupů závisí na typu dávkového nasazení. Nasazení modelu vždy vyžadují jeden vstup dat a vytvoří jeden výstup dat. Vstupy literálů nejsou podporovány. Nasazení součástí kanálu ale poskytují obecnější konstruktor sestavení koncových bodů a umožňují zadat libovolný počet vstupů (dat a literálů) a výstupů.

Následující tabulka shrnuje vstupy a výstupy pro dávkové nasazení:

Typ nasazení Číslo vstupu Podporované typy vstupu Číslo výstupu Podporované typy výstupu
Nasazení modelu 0 Vstupy dat 0 Výstupy dat
Nasazení součásti kanálu [0..N] Datové vstupy a literální vstupy [0..N] Výstupy dat

Tip

Vstupy a výstupy jsou vždy pojmenovány. Tyto názvy slouží jako klíče k jejich identifikaci a předání skutečné hodnoty během vyvolání. Pro nasazení modelu, protože vždy vyžadují jeden vstup a výstup, název se při vyvolání ignoruje. Název, který nejlépe popisuje váš případ použití, například "sales_estimation".

Vstupy dat

Vstupy dat odkazují na vstupy, které odkazují na umístění, kde jsou data umístěna. Vzhledem k tomu, že dávkové koncové body obvykle spotřebovávají velké objemy dat, nemůžete vstupní data předávat jako součást žádosti o vyvolání. Místo toho zadáte umístění, kam má koncový bod dávky přejít, aby vyhledaly data. Vstupní data se připojují a streamují do cílového výpočetního prostředí, aby se zlepšil výkon.

Koncové body služby Batch podporují čtení souborů umístěných v následujících možnostech úložiště:

  • Azure Machine Učení datových prostředků, včetně složek (uri_folder) a souborů (uri_file).
  • Azure Machine Učení Data Stores, včetně Azure Blob Storage, Azure Data Lake Storage Gen1 a Azure Data Lake Storage Gen2.
  • Účty Azure Storage, včetně Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 a Azure Blob Storage.
  • Místní datové složky/soubory (Azure Machine Učení CLI nebo Azure Machine Učení SDK pro Python) Tato operace ale vede k nahrání místních dat do výchozího úložiště dat azure Učení úložiště dat pracovního prostoru, na kterém pracujete.

Důležité

Oznámení o vyřazení: Datové sady typu FileDataset (V1) jsou zastaralé a v budoucnu se vyřadí z provozu. Stávající dávkové koncové body, které spoléhají na tuto funkci, budou dál fungovat, ale dávkové koncové body vytvořené pomocí GA CLIv2 (2.4.0 a novější) nebo rozhraní REST API GA (2022-05-01 a novější) nebudou podporovat datovou sadu V1.

Vstupy literálů

Literální vstupy odkazují na vstupy, které lze reprezentovat a přeložit při vyvolání, jako jsou řetězce, čísla a logické hodnoty. Jako součást nasazení komponenty kanálu se obvykle používají literální vstupy k předávání parametrů do koncového bodu. Koncové body služby Batch podporují následující typy literálů:

  • string
  • boolean
  • float
  • integer

Vstupy literálů jsou podporovány pouze v nasazeních součástí kanálu. Informace o tom, jak je zadat, najdete v tématu Vytváření úloh se vstupy literálů.

Výstupy dat

Výstupy dat odkazují na umístění, kam se mají umístit výsledky dávkové úlohy. Výstupy jsou identifikovány názvem a Azure Machine Učení automaticky přiřadí jedinečnou cestu ke každému pojmenovaného výstupu. V případě potřeby však můžete zadat jinou cestu.

Důležité

Koncové body Služby Batch podporují pouze zápis výstupů v úložištích dat Azure Blob Storage. Pokud potřebujete zapisovat do účtu úložiště s povolenými hierarchickými obory názvů (označovanými také jako Azure Datalake Gen2 nebo ADLS Gen2), všimněte si, že takovou službu úložiště můžete zaregistrovat jako úložiště dat Azure Blob Storage, protože tyto služby jsou plně kompatibilní. Tímto způsobem můžete zapisovat výstupy z dávkových koncových bodů do ADLS Gen2.

Vytváření úloh s datovými vstupy

Následující příklady ukazují, jak vytvářet úlohy, brát datové vstupy z datových prostředků, úložišť dat a účtů azure Storage.

Vstupní data z datového assetu

Azure Machine Učení datové prostředky (dříve označované jako datové sady) se podporují jako vstupy pro úlohy. Pomocí následujícího postupu spusťte úlohu dávkového koncového bodu pomocí dat uložených v registrovaném datovém prostředku ve službě Azure Machine Učení:

Upozorňující

Datové prostředky typu Table (MLTable) se v současné době nepodporují.

  1. Nejprve vytvořte datový asset. Tento datový prostředek se skládá ze složky s několika soubory CSV, které budete zpracovávat paralelně pomocí dávkových koncových bodů. Tento krok můžete přeskočit, pokud jsou vaše data už zaregistrovaná jako datový prostředek.

    Vytvoření definice datového assetu v 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: heart-classifier-mlflow/data
    

    Pak vytvořte datový asset:

    az ml data create -f heart-dataset-unlabeled.yml
    
  2. Vytvořte vstup nebo požadavek:

    DATASET_ID=$(az ml data show -n heart-dataset-unlabeled --label latest | jq -r .id)
    

    Poznámka:

    ID datových assetů by vypadalo takto /subscriptions/<subscription>/resourcegroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/data/<data-asset>/versions/<version>. Můžete také použít azureml:/<datasset_name>@latest jako způsob, jak zadat vstup.

  3. Spusťte koncový bod:

    Pomocí argumentu --set zadejte vstup:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$DATASET_ID
    

    U koncového bodu, který obsluhuje nasazení modelu, můžete pomocí --input argumentu zadat vstup dat, protože nasazení modelu vždy vyžaduje pouze jeden vstup dat.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $DATASET_ID
    

    --set Argument má tendenci vytvářet dlouhé příkazy, pokud je zadáno více vstupů. V takových případech umístěte vstupy do YAML souboru a použijte --file k určení vstupů, které potřebujete pro vyvolání koncového bodu.

    inputs.yml

    inputs:
      heart_dataset: azureml:/<datasset_name>@latest
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

Vstupní data z úložišť dat

Data ze služby Azure Machine Učení registrovaných úložišť dat můžou být přímo odkazována úlohami dávkových nasazení. V tomto příkladu nejprve nahrajete některá data do výchozího úložiště dat v pracovním prostoru Azure Machine Učení a pak na něm spustíte dávkové nasazení. Pomocí těchto kroků spusťte úlohu dávkového koncového bodu pomocí dat uložených v úložišti dat.

  1. Přístup k výchozímu úložišti dat v pracovním prostoru Azure Machine Učení Pokud jsou vaše data v jiném úložišti, můžete místo toho použít toto úložiště. Výchozí úložiště dat nemusíte používat.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    Poznámka:

    ID úložišť dat by vypadalo takto /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>.

    Tip

    Výchozí úložiště dat objektů blob v pracovním prostoru se nazývá workspaceblobstore. Tento krok můžete přeskočit, pokud už znáte ID prostředku výchozího úložiště dat ve vašem pracovním prostoru.

  2. Do úložiště dat je potřeba nahrát nějaká ukázková data. Tento příklad předpokládá, že jste už nahráli ukázková data zahrnutá do úložiště ve složce ve složce sdk/python/endpoints/batch/deploy-models/heart-classifier-mlflow/dataheart-disease-uci-unlabeled v účtu úložiště objektů blob. Před přechodem se ujistěte, že jste to udělali.

  3. Vytvořte vstup nebo požadavek:

    Cestu k souboru umístěte do následující proměnné:

    DATA_PATH="heart-disease-uci-unlabeled"
    INPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    Poznámka:

    Podívejte se, jak je cesta paths připojena k ID prostředku úložiště dat, což znamená, že následující cesta je cesta uvnitř.

    Tip

    Můžete také použít azureml://datastores/<data-store>/paths/<data-path> jako způsob, jak zadat vstup.

  4. Spusťte koncový bod:

    Pomocí argumentu --set zadejte vstup:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_PATH
    

    U koncového bodu, který obsluhuje nasazení modelu, můžete pomocí --input argumentu zadat vstup dat, protože nasazení modelu vždy vyžaduje pouze jeden vstup dat.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_PATH --input-type uri_folder
    

    --set Argument má tendenci vytvářet dlouhé příkazy, pokud je zadáno více vstupů. V takových případech umístěte vstupy do YAML souboru a použijte --file k určení vstupů, které potřebujete pro vyvolání koncového bodu.

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: azureml://datastores/<data-store>/paths/<data-path>
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Pokud jsou data souborem, použijte uri_file místo toho jako typ.

Vstupní data z účtů azure Storage

Koncové body služby Azure Machine Učení Batch můžou číst data z cloudových umístění v účtech azure Storage, a to jak ve veřejném, tak privátním. Pomocí následujících kroků spusťte úlohu dávkového koncového bodu pomocí dat uložených v účtu úložiště:

Poznámka:

V části konfigurace výpočetních clusterů pro přístup k datům se dozvíte další informace o další konfiguraci potřebné k úspěšnému čtení dat z přístupů k úložišti.

  1. Vytvořte vstup nebo požadavek:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    Pokud se jedná o soubor:

    INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
    
  2. Spusťte koncový bod:

    Pomocí argumentu --set zadejte vstup:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_DATA
    

    U koncového bodu, který obsluhuje nasazení modelu, můžete pomocí --input argumentu zadat vstup dat, protože nasazení modelu vždy vyžaduje pouze jeden vstup dat.

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_DATA --input-type uri_folder
    

    --set Argument má tendenci vytvářet dlouhé příkazy, pokud je zadáno více vstupů. V takových případech umístěte vstupy do YAML souboru a použijte --file k určení vstupů, které potřebujete pro vyvolání koncového bodu.

    inputs.yml

    inputs:
      heart_dataset:
        type: uri_folder
        path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
    
    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

    Pokud jsou data souborem, použijte uri_file místo toho jako typ.

Vytváření úloh s literálními vstupy

Nasazení komponent kanálu můžou přijímat literální vstupy. Následující příklad ukazuje, jak zadat vstup s názvem score_mode, typu string, s hodnotou append:

Vstupy umístěte do YAML souboru a použijte --file k určení vstupů, které potřebujete pro vyvolání koncového bodu.

inputs.yml

inputs:
  score_mode:
    type: string
    default: append
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml

K určení hodnoty můžete použít také argument --set . Má však tendenci vytvářet dlouhé příkazy, pokud je zadáno více vstupů:

az ml batch-endpoint invoke --name $ENDPOINT_NAME \
    --set inputs.score_mode.type="string" inputs.score_mode.default="append"

Vytváření úloh s výstupy dat

Následující příklad ukazuje, jak změnit umístění, kde je umístěn výstup s názvem score . Pro úplnost tyto příklady také nakonfigurují vstup s názvem heart_dataset.

  1. K uložení výstupů použijte výchozí úložiště dat v pracovním prostoru Azure Machine Učení. V pracovním prostoru můžete použít jakékoli jiné úložiště dat, pokud se jedná o účet úložiště objektů blob.

    DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
    

    Poznámka:

    ID úložišť dat by vypadalo takto /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>.

  2. Vytvoření výstupu dat:

    DATA_PATH="batch-jobs/my-unique-path"
    OUTPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
    

    Pro úplnost vytvořte také vstup dat:

    INPUT_PATH="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
    

    Poznámka:

    Podívejte se, jak je cesta paths připojena k ID prostředku úložiště dat, což znamená, že následující cesta je cesta uvnitř.

  3. Spusťte nasazení:

    Pomocí argumentu --set zadejte vstup:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME \
        --set inputs.heart_dataset.path=$INPUT_PATH \
        --set outputs.score.path=$OUTPUT_PATH
    

Další kroky