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.
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í.
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
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žítazureml:/<datasset_name>@latest
jako způsob, jak zadat vstup.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 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.
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.
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/data
heart-disease-uci-unlabeled
v účtu úložiště objektů blob. Před přechodem se ujistěte, že jste to udělali.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.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 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.
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=$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 doYAML
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
.
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.
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ř.Spusťte nasazení: