Skapa jobb och indata för batchslutpunkter
Med Batch-slutpunkter kan du utföra långa batchåtgärder över stora mängder data. Data kan finnas på olika platser, till exempel i spridningsregioner. Vissa typer av batchslutpunkter kan också ta emot literalparametrar som indata.
Den här artikeln beskriver hur du anger parameterindata för batchslutpunkter och skapar distributionsjobb. Processen stöder arbete med olika typer av data. Några exempel finns i Förstå indata och utdata.
Förutsättningar
Om du vill anropa en batchslutpunkt och skapa jobb kontrollerar du att du uppfyller följande krav:
En batchslutpunkt och distribution. Om du inte har dessa resurser kan du läsa Distribuera modeller för bedömning i batchslutpunkter för att skapa en distribution.
Behörigheter för att köra en batchslutpunktsdistribution. AzureML-roller för dataforskare, deltagare och ägare kan användas för att köra en distribution. Anpassade rolldefinitioner finns i Auktorisering på batchslutpunkter för att granska de specifika behörigheter som krävs.
En giltig Microsoft Entra-ID-token som representerar ett säkerhetsobjekt för att anropa slutpunkten. Det här huvudkontot kan vara användarens huvudnamn eller tjänstens huvudnamn. När du har anropat en slutpunkt skapar Azure Mašinsko učenje ett batchdistributionsjobb under den identitet som är associerad med token. Du kan använda dina egna autentiseringsuppgifter för anropet enligt beskrivningen i följande procedurer.
Använd Azure CLI för att logga in med interaktiv kod eller enhetskodautentisering :
az login
Mer information om hur du startar batchdistributionsjobb med hjälp av olika typer av autentiseringsuppgifter finns i Så här kör du jobb med olika typer av autentiseringsuppgifter.
Beräkningsklustret där slutpunkten distribueras har åtkomst till att läsa indata.
Dricks
Om du använder ett datalager utan autentiseringsuppgifter eller ett externt Azure Storage-konto som indata kontrollerar du att du konfigurerar beräkningskluster för dataåtkomst. Den hanterade identiteten för beräkningsklustret används för att montera lagringskontot. Jobbets identitet (anroparen) används fortfarande för att läsa underliggande data, vilket gör att du kan uppnå detaljerad åtkomstkontroll.
Skapa grunderna för jobb
Om du vill skapa ett jobb från en batchslutpunkt anropar du slutpunkten. Anrop kan göras med hjälp av Azure CLI, Azure Mašinsko učenje SDK för Python eller ett REST API-anrop. I följande exempel visas grunderna för anrop för en batchslutpunkt som tar emot en enda indatamapp för bearbetning. Exempel med olika indata och utdata finns i Förstå indata och utdata.
Använd åtgärden invoke
under batchslutpunkter:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
Anropa en specifik distribution
Batch-slutpunkter kan vara värdar för flera distributioner under samma slutpunkt. Standardslutpunkten används, såvida inte användaren anger något annat. Du kan ändra distributionen så att den används med följande procedurer.
Använd argumentet --deployment-name
eller -d
för att ange namnet på distributionen:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--deployment-name $DEPLOYMENT_NAME \
--input https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
Konfigurera jobbegenskaper
Du kan konfigurera några av egenskaperna i det skapade jobbet vid anropstillfället.
Kommentar
Möjligheten att konfigurera jobbegenskaper är för närvarande endast tillgänglig i batchslutpunkter med pipelinekomponentdistributioner.
Konfigurera experimentnamnet
Använd följande procedurer för att konfigurera experimentnamnet.
Använd argumentet --experiment-name
för att ange namnet på experimentet:
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
Förstå indata och utdata
Batch-slutpunkter tillhandahåller ett beständiga API som konsumenterna kan använda för att skapa batchjobb. Samma gränssnitt kan användas för att ange indata och utdata som distributionen förväntar sig. Använd indata för att skicka all information som slutpunkten behöver för att utföra jobbet.
Batch-slutpunkter stöder två typer av indata:
- Dataindata: Pekare till en specifik lagringsplats eller Azure Mašinsko učenje tillgång.
- Literala indata: Literala värden som tal eller strängar som du vill skicka till jobbet.
Antalet och typen av indata och utdata beror på typen av batchdistribution. Modelldistributioner kräver alltid en datainmatning och skapar ett datautdata. Literala indata stöds inte. Distributioner av pipelinekomponenter ger dock en mer allmän konstruktion för att skapa slutpunkter och gör att du kan ange valfritt antal indata (data och literal) och utdata.
I följande tabell sammanfattas indata och utdata för batchdistributioner:
Distributionstyp | Antal indata | Indatatyper som stöds | Antal utdata | Utdatatyper som stöds |
---|---|---|---|---|
Modelldistribution | 1 | Dataindata | 1 | Datautdata |
Distribution av pipelinekomponenter | [0..N] | Indata och literala indata | [0..N] | Datautdata |
Dricks
Indata och utdata namnges alltid. Namnen fungerar som nycklar för att identifiera data och skicka det faktiska värdet under anropet. Eftersom modelldistributioner alltid kräver en in- och utdata ignoreras namnet under anropet. Du kan tilldela det namn som bäst beskriver ditt användningsfall, till exempel "sales_estimation".
Utforska dataindata
Dataindata refererar till indata som pekar på en plats där data placeras. Eftersom batchslutpunkter vanligtvis förbrukar stora mängder data kan du inte skicka indata som en del av begäran om anrop. I stället anger du den plats där batchslutpunkten ska gå för att leta efter data. Indata monteras och strömmas på målberäkningen för att förbättra prestandan.
Batch-slutpunkter stöder läsning av filer som finns i följande lagringsalternativ:
- Azure Mašinsko učenje datatillgångar, inklusive Mapp (
uri_folder
) och Fil (uri_file
). - Azure Mašinsko učenje datalager, inklusive Azure Blob Storage, Azure Data Lake Storage Gen1 och Azure Data Lake Storage Gen2.
- Azure Storage-konton, inklusive Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 och Azure Blob Storage.
- Lokala datamappar/filer (Azure Mašinsko učenje CLI eller Azure Mašinsko učenje SDK för Python). Den åtgärden resulterar dock i att lokala data laddas upp till standard-Azure Mašinsko učenje Data Store för arbetsytan som du arbetar med.
Viktigt!
Utfasningsmeddelande: Datauppsättningar av typen FileDataset
(V1) är inaktuella och kommer att dras tillbaka i framtiden. Befintliga batchslutpunkter som förlitar sig på den här funktionen fortsätter att fungera. Batchslutpunkter som skapats med GA CLIv2 (2.4.0 och senare) eller GA REST API (2022-05-01 och senare) stöder inte V1-datauppsättning.
Utforska literalindata
Literala indata refererar till indata som kan representeras och matchas vid anrop, till exempel strängar, tal och booleska värden. Du använder vanligtvis literala indata för att skicka parametrar till slutpunkten som en del av en pipelinekomponentdistribution. Batch-slutpunkter stöder följande literaltyper:
string
boolean
float
integer
Literala indata stöds endast i pipelinekomponentdistributioner. Se Skapa jobb med literala indata för att lära dig hur du anger dem.
Utforska datautdata
Datautdata refererar till den plats där resultatet av ett batchjobb ska placeras. Varje utdata har ett identifierbart namn och Azure Mašinsko učenje tilldelar automatiskt en unik sökväg till varje namngiven utdata. Du kan ange en annan sökväg efter behov.
Viktigt!
Batch-slutpunkter har endast stöd för att skriva utdata i Azure Blob Storage-datalager. Om du behöver skriva till ett lagringskonto med hierarkiska namnområden aktiverade (kallas även Azure Datalake Gen2 eller ADLS Gen2) kan du registrera lagringstjänsten som ett Azure Blob Storage-datalager eftersom tjänsterna är helt kompatibla. På så sätt kan du skriva utdata från batchslutpunkter till ADLS Gen2.
Skapa jobb med dataindata
I följande exempel visas hur du skapar jobb, tar dataindata från datatillgångar, datalager och Azure Storage-konton.
Använda indata från datatillgång
Azure Mašinsko učenje datatillgångar (tidigare kallade datauppsättningar) stöds som indata för jobb. Följ de här stegen för att köra ett batchslutpunktsjobb med hjälp av data som lagras i en registrerad datatillgång i Azure Mašinsko učenje.
Varning
Datatillgångar av typen Tabell (MLTable
) stöds för närvarande inte.
Skapa först datatillgången. Den här datatillgången består av en mapp med flera CSV-filer som du bearbetar parallellt med hjälp av batchslutpunkter. Du kan hoppa över det här steget om dina data redan är registrerade som en datatillgång.
Skapa en datatillgångsdefinition i
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
Skapa sedan datatillgången:
az ml data create -f heart-dataset-unlabeled.yml
Skapa indata eller begäran:
Kör slutpunkten:
--set
Använd argumentet för att ange indata:az ml batch-endpoint invoke --name $ENDPOINT_NAME \ --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$DATASET_ID
För en slutpunkt som hanterar en modelldistribution kan du använda
--input
argumentet för att ange indata eftersom en modelldistribution alltid bara kräver en datainmatning.az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $DATASET_ID
Argumentet
--set
tenderar att generera långa kommandon när flera indata anges. I sådana fall placerar du dina indata i enYAML
fil och använder--file
argumentet för att ange de indata som du behöver för slutpunktsanropet.inputs.yml
inputs: heart_dataset: azureml:/<datasset_name>@latest
Kör följande kommando:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
Använda indata från datalager
Du kan direkt referera till data från Azure Mašinsko učenje registrerade datalager med batchdistributionsjobb. I det här exemplet laddar du först upp vissa data till standarddatalagret i Azure Mašinsko učenje-arbetsytan och kör sedan en batchdistribution på den. Följ de här stegen för att köra ett batchslutpunktsjobb med data som lagras i ett datalager.
Få åtkomst till standarddatalagret i Azure Mašinsko učenje-arbetsytan. Om dina data finns i ett annat lager kan du använda det arkivet i stället. Du behöver inte använda standarddatalagret.
DATASTORE_ID=$(az ml datastore show -n workspaceblobstore | jq -r '.id')
Datalager-ID:t ser ut som
/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.MachineLearningServices/workspaces/<workspace>/datastores/<data-store>
.Dricks
Standardlagringen av blobdata i en arbetsyta heter workspaceblobstore. Du kan hoppa över det här steget om du redan känner till resurs-ID:t för standarddatalagret på din arbetsyta.
Ladda upp exempeldata till datalagret.
Det här exemplet förutsätter att du redan har laddat upp exempeldata som ingår i lagringsplatsen i mappen
sdk/python/endpoints/batch/deploy-models/heart-classifier-mlflow/data
i mappenheart-disease-uci-unlabeled
i Blob Storage-kontot. Var noga med att slutföra det här steget innan du fortsätter.Skapa indata eller begäran:
Placera filsökvägen i variabeln
INPUT_PATH
:DATA_PATH="heart-disease-uci-unlabeled" INPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
Observera hur variabeln
paths
för sökvägen läggs till i resurs-ID:t för datalagret. Det här formatet anger att värdet som följer är en sökväg.Dricks
Du kan också använda formatet
azureml://datastores/<data-store>/paths/<data-path>
för att ange indata.Kör slutpunkten:
--set
Använd argumentet för att ange indata:az ml batch-endpoint invoke --name $ENDPOINT_NAME \ --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_PATH
För en slutpunkt som hanterar en modelldistribution kan du använda
--input
argumentet för att ange indata eftersom en modelldistribution alltid bara kräver en datainmatning.az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_PATH --input-type uri_folder
Argumentet
--set
tenderar att generera långa kommandon när flera indata anges. I sådana fall placerar du dina indata i enYAML
fil och använder--file
argumentet för att ange de indata som du behöver för slutpunktsanropet.inputs.yml
inputs: heart_dataset: type: uri_folder path: azureml://datastores/<data-store>/paths/<data-path>
Kör följande kommando:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
Om dina data är en fil använder du
uri_file
typen för indata i stället.
Använda indata från Azure Storage-konton
Azure Mašinsko učenje batchslutpunkter kan läsa data från molnplatser i Azure Storage-konton, både offentliga och privata. Använd följande steg för att köra ett batchslutpunktsjobb med data som lagras i ett lagringskonto.
Mer information om extra konfiguration som krävs för att läsa data från lagringskonton finns i Konfigurera beräkningskluster för dataåtkomst.
Skapa indata eller begäran:
Ange variabeln
INPUT_DATA
:INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
Om dina data är en fil anger du variabeln med följande format:
INPUT_DATA = "https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data/heart.csv"
Kör slutpunkten:
--set
Använd argumentet för att ange indata:az ml batch-endpoint invoke --name $ENDPOINT_NAME \ --set inputs.heart_dataset.type="uri_folder" inputs.heart_dataset.path=$INPUT_DATA
För en slutpunkt som hanterar en modelldistribution kan du använda
--input
argumentet för att ange indata eftersom en modelldistribution alltid bara kräver en datainmatning.az ml batch-endpoint invoke --name $ENDPOINT_NAME --input $INPUT_DATA --input-type uri_folder
Argumentet
--set
tenderar att generera långa kommandon när flera indata anges. I sådana fall placerar du dina indata i enYAML
fil och använder--file
argumentet för att ange de indata som du behöver för slutpunktsanropet.inputs.yml
inputs: heart_dataset: type: uri_folder path: https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data
Kör följande kommando:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
Om dina data är en fil använder du
uri_file
typen för indata i stället.
Skapa jobb med literala indata
Distributioner av pipelinekomponenter kan ta literala indata. I följande exempel visas hur du anger en indata med namnet score_mode
, av typen string
, med värdet append
:
Placera dina indata i en YAML
fil och använd --file
för att ange de indata som du behöver för slutpunktsanropet.
inputs.yml
inputs:
score_mode:
type: string
default: append
Kör följande kommando:
az ml batch-endpoint invoke --name $ENDPOINT_NAME --file inputs.yml
Du kan också använda --set
argumentet för att ange värdet. Den här metoden tenderar dock att generera långa kommandon när flera indata anges:
az ml batch-endpoint invoke --name $ENDPOINT_NAME \
--set inputs.score_mode.type="string" inputs.score_mode.default="append"
Skapa jobb med datautdata
I följande exempel visas hur du ändrar platsen där utdata med namnet score
placeras. För fullständighet konfigurerar de här exemplen även indata med namnet heart_dataset
.
Spara utdata med hjälp av standarddatalagret i Azure Mašinsko učenje-arbetsytan. Du kan använda alla andra datalager på din arbetsyta så länge det är ett Blob Storage-konto.
Skapa ett datautdata:
Ange variabeln
OUTPUT_PATH
:DATA_PATH="batch-jobs/my-unique-path" OUTPUT_PATH="$DATASTORE_ID/paths/$DATA_PATH"
Skapa även dataindata för fullständighet:
INPUT_PATH="https://azuremlexampledata.blob.core.windows.net/data/heart-disease-uci/data"
Kommentar
Observera hur variabeln
paths
för sökvägen läggs till i resurs-ID:t för datalagret. Det här formatet anger att värdet som följer är en sökväg.Kör distributionen: