Nasazení existujících úloh pipeline do dávkových koncových bodů

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

Koncové body služby Batch umožňují nasadit součásti kanálu a poskytují pohodlný způsob zprovoznění kanálů ve službě Azure Machine Learning. Koncové body služby Batch přijímají pipelinové komponenty pro nasazení. Pokud už ale máte úlohu kanálu, která se úspěšně spustí, Azure Machine Learning může tuto úlohu přijmout jako vstup do vašeho dávkového koncového bodu a automaticky pro vás vytvořit komponentu kanálu. V tomto článku se dozvíte, jak použít stávající pipeline úlohu jako vstup pro dávkové nasazení.

Naučíte se:

  • Vytvořte a spusťte úlohu pipeline, kterou chcete nasadit.
  • Vytvořte dávkové nasazení z existující úlohy
  • Testujte nasazení

O tomto příkladu

V tomto příkladu nasadíme pipeline skládající se z jednoduché příkazové úlohy, která vypíše "hello world!". Místo registrace komponenty potrubí před nasazením označujeme existující úlohu potrubí k použití pro nasazení. Azure Machine Learning pak automaticky vytvoří komponentu zpracovatelského kanálu a nasadí ji jako nasazení komponenty dávkového zpracovatelského kanálu koncového bodu.

Příklad v tomto článku vychází z ukázek kódu obsažených v úložišti azureml-examples . Pokud chcete příkazy spustit místně, aniž byste museli kopírovat nebo vkládat YAML a další soubory, naklonujte úložiště pomocí následujících příkazů a přejděte do složky pro váš kódovací jazyk:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Soubory pro tento příklad jsou v:

cd endpoints/batch/deploy-pipelines/hello-batch

Požadavky

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.

  • Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Správa pracovních prostorů Služby Azure Machine Learning.

  • Následující oprávnění v pracovním prostoru Azure Machine Learning:

    • Pro vytvoření nebo správu dávkových koncových bodů a nasazení použijte roli vlastníka, přispěvatele nebo vlastní roli, která má oprávnění Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.
    • Pro vytváření nasazení v Azure Resource Manageru ve skupině prostředků pracovního prostoru použijte roli Vlastník, Přispěvatel nebo Vlastní role, která má Microsoft.Resources/deployments/write oprávnění ve skupině prostředků, kde je pracovní prostor nasazený.
  • Azure Machine Learning CLI nebo sada Azure Machine Learning SDK pro Python:

    Spuštěním následujícího příkazu nainstalujte Azure CLI a mlrozšíření pro Azure Machine Learning:

    az extension add -n ml
    

    Nasazení komponent kanálu pro dávkové koncové body vyžadují rozšíření ml pro Azure CLI ve verzi 2.7 nebo novější (aktuální verze: 2.37.0). az extension update --name ml Pomocí příkazu získejte nejnovější verzi.


Připojení k pracovnímu prostoru

Pracovní prostor je prostředek nejvyšší úrovně pro Azure Machine Learning. Poskytuje centralizované místo pro práci se všemi artefakty, které vytvoříte při použití služby Azure Machine Learning. V této části se připojíte k pracovnímu prostoru, kde provádíte úkony související s nasazením.

V následujícím příkazu zadejte ID předplatného, název pracovního prostoru, název skupiny prostředků a umístění:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Spusťte úlohu potrubí, kterou chcete nasadit.

V této části začneme spuštěním úlohy pipeline:

Následující pipeline-job.yml soubor obsahuje konfiguraci pro pipeline úlohu:

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

Vytvořte úlohu pro pipeline:

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

Vytvořte dávkový koncový bod

Než nasadíme úlohu pipeliny, musíme nasadit dávkový koncový bod pro hostování tohoto nasazení.

  1. Zadejte název koncového bodu. Název dávkového koncového bodu musí být v každé oblasti jedinečný, protože se tento název používá k vytvoření URI volání. Pokud chcete zajistit jedinečnost, připojte k názvu zadanému v následujícím kódu všechny koncové znaky.

    ENDPOINT_NAME="hello-batch"
    
  2. Konfigurace koncového bodu:

    Soubor endpoint.yml obsahuje konfiguraci koncového bodu.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. Vytvořte koncový bod:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Zadejte dotaz na identifikátor URI koncového bodu:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Nasaďte úlohu pipeline

Abychom mohli nasadit komponentu pipeline, musíme vytvořit dávkové nasazení z existující úlohy.

  1. Musíme azure Machine Learning sdělit název úlohy, kterou chceme nasadit. V našem případě je tato úloha uvedena v následující proměnné:

    echo $JOB_NAME
    
  2. Nakonfigurujte nasazení.

    Soubor deployment-from-job.yml obsahuje konfiguraci nasazení. Všimněte si, že klíč job_definition používáme místo component k označení, že je toto nasazení vytvořeno z úlohy kanálu:

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    Návod

    Tato konfigurace předpokládá, že máte výpočetní cluster s názvem batch-cluster. Tuto hodnotu můžete nahradit názvem clusteru.

  3. Vytvořte nasazení:

    Spuštěním následujícího kódu vytvořte dávkové nasazení v rámci koncového bodu dávky a nastavte ho jako výchozí nasazení.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Návod

    Všimněte si použití --set job_definition=azureml:$JOB_NAME. Vzhledem k tomu, že názvy úloh jsou jedinečné, příkaz --set se zde použije ke změně názvu úlohy při jejím spuštění v pracovním prostoru.

  4. Vaše implementace je připraveno k použití.

Testujte nasazení

Jakmile se nasazení vytvoří, je připravené přijímat pracovní úlohy. Výchozí nasazení můžete vyvolat následujícím způsobem:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

Sledovat můžete průběh aplikace a streamovat protokoly pomocí:

az ml job stream -n $JOB_NAME

Uvolnění prostředků

Jakmile budete hotovi, odstraňte přidružené prostředky z pracovního prostoru:

Spuštěním následujícího kódu odstraňte koncový bod dávky a jeho základní nasazení. --yes slouží k potvrzení odstranění.

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

Další kroky