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

Koncové body služby Batch umožňují provádět dlouhé dávkové operace nad velkými objemy dat. Data se můžou nacházet na různých místech, například v různých oblastech. Některé typy dávkových koncových bodů mohou také přijímat literály jako vstupy.

Tento článek popisuje, jak zadat vstupy parametrů pro dávkové koncové body a vytvořit úlohy nasazení. Tento proces podporuje práci s různými typy dat. Příklady najdete v tématu Vysvětlení vstupů a výstupů.

Požadavky

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

  • Dávkové koncové body a nasazení. Pokud tyto prostředky nemáte, přečtěte si téma Nasazení modelů pro bodování v dávkových koncových bodech a vytvoření nasazení.

  • 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. Informace o definicích vlastních rolí najdete v tématu Autorizace v dávkových koncových bodech a zkontrolujte konkrétní požadovaná oprávnění.

  • 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. Po vyvolání koncového bodu azure Machine Learning vytvoří úlohu dávkového nasazení pod identitou přidruženou k tokenu. Pro vyvolání můžete použít vlastní přihlašovací údaje, jak je popsáno v následujících postupech.

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

    az login
    

    Další informace o tom, jak spustit dávkové úlohy nasazení pomocí různých typů přihlašovacích údajů, najdete v tématu Postup spouštění úloh pomocí různých typů přihlašovacích údajů.

  • 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ž umožňuje dosáhnout podrobného řízení přístupu.

Základy vytváření úloh

Pokud chcete vytvořit úlohu z dávkového koncového bodu, vyvoláte koncový bod. Volání je možné provést pomocí Azure CLI, sady Azure Machine Learning 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. Použije se výchozí koncový bod, pokud uživatel neurčí jinak. Nasazení můžete změnit tak, aby používalo následující postupy.

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:

Možnost konfigurovat vlastnosti úlohy je aktuálně k dispozici pouze v dávkových koncových bodech s nasazeními součástí kanálu.

Konfigurace názvu experimentu

Ke konfiguraci názvu experimentu použijte následující postupy.

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

Vysvětlení 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. Stejné rozhraní lze použít k určení vstupů a výstupů, 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: Ukazatele na konkrétní umístění úložiště nebo prostředek služby Azure Machine Learning.
  • Vstupy literálů: Hodnoty literálů, jako jsou čí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í Počet vstupů Podporované vstupní typy Počet výstupů 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. Názvy slouží jako klíče k identifikaci dat a předání skutečné hodnoty během vyvolání. Vzhledem k tomu, že nasazení modelu vždy vyžadují jeden vstup a výstup, název se během vyvolání ignoruje. Můžete přiřadit název, který nejlépe popisuje váš případ použití, například "sales_estimation".

Prozkoumání datových vstupů

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ě:

  • Datové prostředky služby Azure Machine Learning, včetně složek (uri_folder) a souborů (uri_file).
  • Úložiště dat Azure Machine Learning, 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 Learning CLI nebo Azure Machine Learning SDK pro Python) Tato operace ale vede k nahrání místních dat do výchozího úložiště dat Azure Machine Learning 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 i nadále fungovat. Koncové body služby Batch vytvořené pomocí GA CLIv2 (2.4.0 a novější) nebo ga REST API (2022-05-01 a novější) nepodporují datovou sadu V1.

Prozkoumání vstupů 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ů.

Prozkoumání výstupů dat

Výstupy dat odkazují na umístění, kam se mají umístit výsledky dávkové úlohy. Každý výstup má identifikovatelný název a Azure Machine Learning automaticky přiřadí každému pojmenovaného výstupu jedinečnou cestu. Podle potřeby 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), můžete službu úložiště zaregistrovat jako úložiště dat Azure Blob Storage, protože 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.

Použití vstupních dat z datového assetu

Datové prostředky Azure Machine Learning (dříve označované jako datové sady) se podporují jako vstupy pro úlohy. Pomocí těchto kroků spusťte dávkovou úlohu koncového bodu pomocí dat uložených v registrovaném datovém assetu ve službě Azure Machine Learning.

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é zpracováváte 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)
    
  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 pomocí argumentu --file určete vstupy, které potřebujete pro vyvolání koncového bodu.

    inputs.yml

    inputs:
      heart_dataset: azureml:/<datasset_name>@latest
    

    Spusťte následující příkaz:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

Použití vstupních dat z úložišť dat

Pomocí dávkových úloh nasazení můžete přímo odkazovat na data z registrovaných úložišť dat služby Azure Machine Learning. V tomto příkladu nejprve nahrajete některá data do výchozího úložiště dat v pracovním prostoru Azure Machine Learning 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 Learning 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')
    

    ID úložiště dat vypadá 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 má název 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. Nahrajte do úložiště dat 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/data heart-disease-uci-unlabeled v účtu Blob Storage. Než budete pokračovat, nezapomeňte tento krok dokončit.

  3. Vytvořte vstup nebo požadavek:

    Umístěte cestu k souboru do INPUT_PATH proměnné:

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

    Všimněte si, jak paths se proměnná pro cestu připojí k ID prostředku úložiště dat. Tento formát označuje, že následující hodnota je cesta.

    Tip

    Můžete také použít formát azureml://datastores/<data-store>/paths/<data-path> k zadání vstupu.

  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 pomocí argumentu --file určete vstupy, 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>
    

    Spusťte následující příkaz:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

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

Použití vstupních dat z účtů azure Storage

Dávkové koncové body služby Azure Machine Learning 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ího postupu spusťte úlohu dávkového koncového bodu s daty uloženými v účtu úložiště.

Další informace o další požadované konfiguraci pro čtení dat z účtů úložiště najdete v tématu Konfigurace výpočetních clusterů pro přístup k datům.

  1. Vytvořte vstup nebo požadavek:

    Nastavte proměnnou INPUT_DATA :

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

    Pokud jsou data souborem, nastavte proměnnou následujícím formátem:

    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
    

    Argument --set 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 pomocí argumentu --file určete vstupy, 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
    

    Spusťte následující příkaz:

    az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
    

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

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

Spusťte následující příkaz:

az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml

K určení hodnoty můžete použít --set také argument. Tento přístup ale obvykle vytváří 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. Výstup uložte pomocí výchozího úložiště dat v pracovním prostoru Azure Machine Learning. V pracovním prostoru můžete použít jakékoli jiné úložiště dat, pokud se jedná o účet Blob Storage.

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

    ID úložiště dat vypadá takto /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>.

  2. Vytvoření výstupu dat:

    Nastavte proměnnou OUTPUT_PATH :

    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:

    Všimněte si, jak paths se proměnná pro cestu připojí k ID prostředku úložiště dat. Tento formát označuje, že následující hodnota je cesta.

  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