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.
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í.
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
Vytvořte vstup nebo požadavek:
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 doYAML
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.
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.
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.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.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 doYAML
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.
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"
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 doYAML
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
.
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.
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.Spusťte nasazení: