Sdílet prostřednictvím


Nasazení a určení skóre modelu strojového učení pomocí online koncového bodu

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

V tomto článku se naučíte nasadit model do online koncového bodu pro použití při odvozování v reálném čase. Začnete tím, že na místním počítači nasadíte model, abyste mohli ladit případné chyby. Pak model nasadíte a otestujete v Azure, zobrazíte protokoly nasazení a budete monitorovat smlouvu o úrovni služeb (SLA). Na konci tohoto článku máte škálovatelný koncový bod HTTPS/REST, který můžete použít k odvozování v reálném čase.

Online koncové body jsou takové, které se používají pro inference v reálném čase. Existují dva typy online koncových bodů: spravované online koncové body a online koncové body Kubernetes. Další informace o rozdílech najdete v tématu Spravované online koncové body vs. Online koncové body Kubernetes.

Spravované online koncové body pomáhají s nasazováním modelů strojového učení na klíč. Spravované online koncové body pracují s výkonnými procesory a GPU v Azure škálovatelným a plně spravovaným způsobem. Spravované online koncové body se stará o obsluhu, škálování, zabezpečení a monitorování vašich modelů. Tato pomoc vám uvolní režii při nastavování a správě základní infrastruktury.

Hlavní příklad v tomto článku používá spravované online koncové body pro nasazení. Pokud chcete místo toho používat Kubernetes, podívejte se na poznámky v tomto dokumentu, které jsou vložené do diskuze o spravovaném online koncovém bodu.

Požadavky

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

  • Řízení přístupu na základě role v Azure (Azure RBAC) se používá k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, váš uživatelský účet musí mít přiřazenou roli Vlastník nebo Přispěvatel pro pracovní prostor Azure Machine Learning, nebo musí existovat vlastní role, která Microsoft.MachineLearningServices/workspaces/onlineEndpoints/* umožňuje. Pokud k vytváření a správě online koncových bodů nebo nasazení používáte Azure Machine Learning Studio, potřebujete dodatečné oprávnění Microsoft.Resources/deployments/write od vlastníka skupiny prostředků. Další informace najdete v tématu Správa přístupu k pracovním prostorům Azure Machine Learning.

  • (Volitelné) Pokud chcete nasadit místně, musíte do místního počítače nainstalovat Modul Dockeru . Důrazně doporučujeme tuto možnost, která usnadňuje odstraňování problémů.

  • Ujistěte se, že máte přidělenou dostatečnou kvótu virtuálního počítače pro nasazení. Azure Machine Learning si vyhrazuje 20% výpočetních prostředků pro provádění upgradů na některých verzích virtuálních počítačů. Pokud například v nasazení požadujete 10 instancí, musíte mít kvótu 12 pro každý počet jader pro verzi virtuálního počítače. Chyba při zohlednění dodatečných výpočetních prostředků způsobí chybu. Některé verze virtuálních počítačů jsou vyjmuty z dodatečné kvóty. Další informace o přidělení kvóty najdete v tématu Přidělení kvóty virtuálních počítačů pro nasazení.

  • Případně můžete použít kvótu ze sdíleného fondu kvót služby Azure Machine Learning po omezenou dobu. Azure Machine Learning poskytuje fond sdílených kvót, ze kterého mají uživatelé v různých oblastech přístup k kvótě, aby mohli provádět testování po omezenou dobu v závislosti na dostupnosti. Když pomocí studia nasadíte modely Llama-2, Phi, Nemotron, Mistral, Dolly a Deci-Deci-DeciLM z katalogu modelů do spravovaného online koncového bodu, Azure Machine Learning vám umožní získat přístup k fondu sdílených kvót na krátkou dobu, abyste mohli provést testování. Další informace o sdíleném fondu kvót najdete v tématu Sdílená kvóta služby Azure Machine Learning.

Příprava systému

Nastavení proměnných prostředí

Pokud jste ještě nenastavili výchozí hodnoty pro Azure CLI, uložte výchozí nastavení. Pokud se chcete vyhnout předávání hodnot pro vaše předplatné, pracovní prostor a skupinu prostředků několikrát, spusťte tento kód:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Klonování úložiště příkladů

Pokud chcete postupovat podle tohoto článku, nejprve naklonujte úložiště azureml-examples a pak přejděte do adresáře azureml-examples/cli úložiště:

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

Pomocí --depth 1 klonujte pouze nejnovější commit do úložiště, což zkracuje dobu potřebnou k dokončení operace.

Příkazy v tomto kurzu jsou umístěny v souborech deploy-local-endpoint.sh a deploy-managed-online-endpoint.sh v adresáři CLI. Konfigurační soubory YAML jsou v endpoints/online/managed/sample/ podadresáři.

Poznámka:

Konfigurační soubory YAML pro online koncové body v Kubernetes se nacházejí v podadresáři endpoints/online/kubernetes/.

Definování koncového bodu

Pokud chcete definovat online koncový bod, zadejte název koncového bodu a režim ověřování. Další informace o spravovaných online koncových bodech najdete v tématu Online koncové body.

Nastavení názvu koncového bodu

Pokud chcete nastavit název koncového bodu, spusťte následující příkaz. Nahraďte <YOUR_ENDPOINT_NAME> jedinečným názvem v oblasti Azure. Další informace o pravidlech pojmenování najdete v tématu Limity koncových bodů.

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Konfigurace koncového bodu

Následující úryvek ukazuje soubor endpoints/online/managed/sample/endpoint.yml:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

Referenční informace pro formát YAML koncového bodu jsou popsány v následující tabulce. Informace o tom, jak tyto atributy zadat, najdete v online referenční příručce pro koncový bod YAML. Informace o omezeních souvisejících se spravovanými koncovými body najdete v tématu Online koncové body služby Azure Machine Learning a dávkové koncové body.

Klíč Popis
$schema (Volitelné) Schéma YAML. Pokud chcete zobrazit všechny dostupné možnosti v souboru YAML, můžete schéma zobrazit v předchozím fragmentu kódu v prohlížeči.
name Název koncového bodu
auth_mode Používá se key pro ověřování založené na klíčích.
Používá se aml_token pro ověřování na základě tokenů služby Azure Machine Learning.
Použijte aad_token pro ověřování založené na tokenech Microsoft Entra (náhled).
Další informace o ověřování najdete v tématu Ověřování klientů pro online koncové body.

Definování nasazení

Nasazení je sada prostředků vyžadovaných pro hostování modelu, který provádí skutečné inferování. V tomto příkladu scikit-learn nasadíte model, který regresi provede, a použijete bodovací skript score.py ke spuštění modelu na konkrétním vstupním požadavku.

Další informace o klíčových atributech nasazení najdete v tématu Online nasazení.

Nakonfigurujte nasazení

Konfigurace nasazení používá umístění modelu, který chcete nasadit.

Následující úryvek ukazuje soubor endpoints/online/managed/sample/blue-deployment.yml s veškerými potřebnými vstupy pro konfiguraci nasazení.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

Soubor blue-deployment.yml určuje následující atributy nasazení:

  • model: Určuje vlastnosti modelu přímo pomocí parametru path (odkud se mají nahrát soubory). Rozhraní příkazového řádku automaticky nahraje soubory modelu a zaregistruje model s automaticky vygenerovaným názvem.
  • environment: Používá vložené definice, které zahrnují, odkud se mají nahrávat soubory. Rozhraní příkazového řádku automaticky nahraje soubor conda.yaml a zaregistruje prostředí. Později pro sestavení prostředí nasazení použije parametr image pro základní obraz. V tomto příkladu je to mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. conda_file Závislosti se instalují nad základní image.
  • code_configuration: Nahraje místní soubory, jako je zdroj Pythonu pro model bodování, z vývojového prostředí během nasazování.

Další informace o schématu YAML najdete v online referenčních informacích ke koncovému bodu YAML.

Poznámka:

Použití koncových bodů Kubernetes místo spravovaných online koncových bodů jako cílového výpočetního objektu:

  1. Vytvořte a připojte cluster Kubernetes jako cílový výpočetní objekt k pracovnímu prostoru Azure Machine Learning pomocí studio Azure Machine Learning.
  2. Použijte YAML koncového bodu k nastavení cílení na Kubernetes místo YAML koncového bodu spravovaného. Pokud chcete změnit hodnotu na název zaregistrovaného cílového výpočetního compute objektu, musíte upravit YAML. Můžete použít tento soubor deployment.yaml s dalšími vlastnostmi, které platí pro nasazení Kubernetes.

Všechny příkazy, které se používají v tomto článku pro spravované online koncové body, platí také pro koncové body Kubernetes, s výjimkou následujících funkcí, které se nevztahují na koncové body Kubernetes:

Vysvětlení hodnoticího skriptu

Formát bodovacího skriptu pro online koncové body je stejný formát, který se používá v předchozí verzi rozhraní příkazového řádku a v sadě Python SDK.

Bodovací skript zadaný v code_configuration.scoring_script musí mít init() funkci a run() funkci.

Tento příklad používá soubor score.py z úložiště, které jste naklonovali nebo stáhli dříve:

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

Funkce init() se volá při inicializaci nebo spuštění kontejneru. Inicializace se obvykle vyskytuje krátce po vytvoření nebo aktualizaci nasazení. Funkce init je místo pro zápis logiky pro operace globální inicializace, jako je ukládání modelu do mezipaměti v paměti (jak je znázorněno v tomto souboru score.py ).

Funkce run() se volá při každém vyvolání koncového bodu. Provádí skutečné bodování a předpovědi. V tomto funkce extrahuje data ze vstupu JSON, zavolá metodu modelu run() scikit-learn a vrátí výsledek předpovědi.

Provádějte nasazení a ladění lokálně pomocí místního koncového bodu

Důrazně doporučujeme otestovat spuštění koncového bodu místně, abyste před nasazením do Azure ověřili a ladili kód a konfiguraci. Azure CLI a Python SDK podporují místní koncové body a nasazení, ale azure Machine Learning Studio a šablony ARM ne.

Pokud chcete nasadit místně, musí být nainstalován a spuštěn Docker Engine. Modul Dockeru se obvykle spustí při spuštění počítače. Pokud ne, můžete řešit potíže s Docker Enginem.

Balíček Pythonu pro odvozování serveru HTTP pro Azure Machine Learning můžete použít k místnímu ladění hodnoticího skriptu bez Modulu Dockeru. Ladění pomocí serveru odvozování vám pomůže ladit bodovací skript před nasazením do místních koncových bodů, abyste mohli ladit bez ovlivnění konfigurací kontejneru nasazení.

Další informace o místním ladění online koncových bodů před nasazením do Azure najdete v tématu Online ladění koncových bodů.

Místní nasazení modelu

Nejprve vytvořte koncový bod. Volitelně můžete tento krok přeskočit pro místní koncový bod. Nasazení můžete vytvořit přímo (další krok), který pak vytvoří požadovaná metadata. Místní nasazení modelů je užitečné pro účely vývoje a testování.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

Teď vytvořte nasazení pojmenované blue pod koncovým bodem.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

Příznak --local nasměruje rozhraní příkazového řádku k nasazení koncového bodu v prostředí Dockeru.

Návod

K místnímu testování a ladění koncových bodů použijte Visual Studio Code. Další informace naleznete v tématu Ladění online koncových bodů na místním počítači v aplikaci Visual Studio Code.

Ověření úspěšného místního nasazení

Zkontrolujte stav nasazení a zjistěte, jestli se model nasadil bez chyby:

az ml online-endpoint show -n $ENDPOINT_NAME --local

Výstup by se měl podobat následujícímu formátu JSON. Parametr provisioning_state je Succeeded.

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

Následující tabulka obsahuje možné hodnoty pro provisioning_state:

Hodnota Popis
Creating Prostředek se vytváří.
Updating Prostředek se aktualizuje.
Deleting Prostředek se odstraňuje.
Succeeded Operace vytvoření nebo aktualizace byla úspěšná.
Failed Operace vytvoření, aktualizace nebo odstranění selhala.

Zavolejte místní koncový bod pro ohodnocení dat pomocí vašeho modelu

Pomocí příkazu a předáním parametrů dotazu uložených v souboru JSON vyvolejte koncový bod pro určení skóre modelu invoke :

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

Pokud chcete použít klienta REST (například curl), musíte mít scoring URI. Pokud chcete získat identifikátor URI bodování, spusťte az ml online-endpoint show --local -n $ENDPOINT_NAME. Ve vrácených datech vyhledejte scoring_uri atribut.

Zkontrolujte protokoly pro výstup z operace vyvolání.

V příkladu score.py souboru run() metoda zaznamená výstup do konzoly.

Tento výstup můžete zobrazit pomocí get-logs příkazu:

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Nasazení online koncového bodu do Azure

Dále nasaďte online koncový bod do Azure. Jako osvědčený postup pro produkční prostředí doporučujeme zaregistrovat model a prostředí, které používáte ve svém nasazení.

Registrace modelu a prostředí

Před nasazením do Azure doporučujeme zaregistrovat model a prostředí, abyste mohli během nasazení zadat jejich registrované názvy a verze. Po registraci zdrojů je můžete znovu použít, aniž byste je museli nahrávat při každém nasazení. Tento postup zvyšuje reprodukovatelnost a sledovatelnost.

Na rozdíl od nasazení do Azure místní nasazení nepodporuje používání registrovaných modelů a prostředí. Místo toho místní nasazení používá soubory místního modelu a používá prostředí pouze s místními soubory.

Pro nasazení do Azure můžete použít místní nebo registrované prostředky (modely a prostředí). V této části článku nasazení do Azure používá registrované prostředky, ale místo toho máte možnost používat místní prostředky. Příklad konfigurace nasazení, která nahrává místní soubory, které se mají použít pro místní nasazení, najdete v tématu Konfigurace nasazení.

K registraci modelu a prostředí použijte formulář model: azureml:my-model:1 nebo environment: azureml:my-env:1.

Pro registraci můžete extrahovat definice YAML prvků model a environment do samostatných souborů YAML ve složce koncových bodů/online/spravované/ukázkové a použít příkazy az ml model create a az ml environment create. Další informace o těchto příkazech získáte spuštěním az ml model create -h a az ml environment create -h.

  1. Vytvořte definici YAML pro model. Pojmenujte soubor model.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. Zaregistrujte model:

    az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
    
  3. Vytvořte definici YAML pro prostředí. Pojmenujte soubor environment.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. Zaregistrujte prostředí:

    az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
    

Další informace o registraci modelu jako prostředku najdete v tématu Registrace modelu pomocí Azure CLI nebo sady Python SDK. Další informace o vytvoření prostředí najdete v tématu Vytvoření vlastního prostředí.

Důležité

Když pro nasazení definujete vlastní prostředí, ujistěte se, že azureml-inference-server-http je balíček součástí souboru conda. Tento balíček je nezbytný pro správné fungování serveru odvozování. Pokud neznáte způsob vytvoření vlastního prostředí, použijte jedno z našich kurátorovaných prostředí, například minimal-py-inference (pro vlastní modely, které nepoužívají mlflow) nebo mlflow-py-inference (pro modely, které používají mlflow). Tato kurátorovaná prostředí najdete na kartě Prostředí vaší instance nástroje Azure Machine Learning Studio.

Konfigurujte nasazení, které používá registrovaná aktiva

Konfigurace nasazení používá registrovaný model, který chcete nasadit, a registrované prostředí.

V definici nasazení použijte registrované prostředky (model a prostředí). Následující úryvek zobrazuje soubor endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml se všemi požadovanými vstupy pro konfiguraci nasazení:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

Použijte různé typy instancí procesoru a GPU a různé obrazy.

V definici nasazení můžete určit typy instancí PROCESORu nebo GPU a image pro místní nasazení i nasazení do Azure.

Definice nasazení v souboru blue-deployment-with-registered-assets.yml používala instanci obecného typu Standard_DS3_v2 a Docker image bez GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. U výpočtů GPU zvolte verzi výpočetního typu GPU a Docker obraz pro GPU.

Podporované typy instancí pro všeobecné účely a GPU najdete v seznamu SKU spravovaných online koncových bodů. Seznam základních imagí procesoru a GPU ve službě Azure Machine Learning najdete v základních imagích služby Azure Machine Learning.

Poznámka:

Informace o použití Kubernetes místo spravovaných koncových bodů jako cílového výpočetního objektu najdete v tématu Úvod do cílového výpočetního prostředí Kubernetes.

Dále nasaďte online koncový bod do Azure.

Nasazení do Azure

  1. Vytvořte koncový bod v cloudu Azure:

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Vytvořte nasazení pojmenované blue pod koncovým bodem:

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    Vytvoření nasazení může trvat až 15 minut v závislosti na tom, jestli se podkladové prostředí nebo image sestavují poprvé. Následná nasazení, která používají stejné prostředí, se zpracovávají rychleji.

    Pokud nechcete blokovat konzolu rozhraní příkazového řádku, můžete k příkazu přidat příznak --no-wait . Tato možnost ale zastaví interaktivní zobrazení stavu nasazení.

    Příznak --all-traffic v kódu az ml online-deployment create , který se používá k vytvoření nasazení, přidělí 100 % provozu koncového bodu nově vytvořenému modrému nasazení. Použití tohoto příznaku je užitečné pro účely vývoje a testování, ale pro produkční prostředí můžete chtít směrovat provoz do nového nasazení prostřednictvím explicitního příkazu. Například použijte az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Chcete-li ladit chyby ve vašem nasazení, viz Řešení potíží s online nasazením koncových bodů.

Kontrola stavu online koncového bodu

  1. Použijte příkaz show k zobrazení informací v koncovém bodu provisioning_state a nasazení:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Pomocí příkazu vypište všechny koncové body v pracovním prostoru ve formátu list tabulky:

    az ml online-endpoint list --output table
    

Kontrola stavu online nasazení

V protokolech zkontrolujte, jestli se model nasadil bez chyby.

Pokud chcete zobrazit výstup protokolu z kontejneru, použijte následující příkaz rozhraní příkazového řádku:

az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME

Ve výchozím nastavení se protokoly načítají z kontejneru inferenčního serveru. Pokud chcete zobrazit protokoly z kontejneru inicializátoru úložiště, přidejte --container storage-initializer příznak. Další informace o protokolech nasazení najdete v tématu Získání protokolů kontejneru.

Vyvolejte koncový bod k ohodnocení dat pomocí vašeho modelu.

  1. invoke K vyvolání koncového bodu a určení skóre některých dat použijte příkaz nebo klienta REST podle vašeho výběru:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Získejte klíč použitý k ověření koncového bodu:

    Můžete určit, které objekty zabezpečení Microsoft Entra mohou získat ověřovací klíč tím, že je přiřadíte k vlastní roli, která umožňuje Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action a Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Další informace o správě autorizace pro pracovní prostory najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Data ohodnoťte pomocí curl.

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    Všimněte si, že k získání přihlašovacích údajů pro ověřování používáte show příkazy a get-credentials příkazy. Všimněte si také, že používáte --query příznak k filtrování pouze potřebných atributů. Pro více informací o příznaku --query, podívejte se na Příkaz Azure CLI pro zobrazení výstupu.

  4. Pokud chcete zobrazit protokoly vyvolání, spusťte get-logs to znovu.

(Volitelné) Aktualizace nasazení

Pokud chcete aktualizovat kód, model nebo prostředí, aktualizujte soubor YAML. Pak spusťte az ml online-endpoint update příkaz.

Pokud aktualizujete počet instancí (pro škálování nasazení) spolu s dalšími nastaveními modelu (například kód, model nebo prostředí) v jednom update příkazu, provede se nejprve operace škálování. Další aktualizace se použijí. Tyto operace je vhodné provádět samostatně v produkčním prostředí.

Vysvětlení toho, jak update funguje:

  1. Otevřete soubor online/model-1/onlinescoring/score.py.

  2. Změňte poslední řádek init() funkce: Za logging.info("Init complete") přidejte logging.info("Updated successfully").

  3. Uložte soubor.

  4. Spusťte tento příkaz:

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    Aktualizace pomocí YAML je deklarativní. To znamená, že změny v YAML se projeví v podkladových prostředcích Resource Manageru (koncových bodech a nasazeních). Deklarativní přístup usnadňuje GitOps: Všechny změny koncových bodů a nasazení (dokonce instance_count) procházejí YAML.

    Můžete použít obecné parametry aktualizace, například parametr --set, s příkazem CLI update, abyste přepsali atributy ve vašem YAML nebo nastavili specifické atributy, aniž byste je předali v souboru YAML. Použití --set pro jednotlivé atributy je zvláště cenné ve scénářích vývoje a testování. Pokud například chcete zvýšit hodnotu instance_count pro první nasazení, můžete použít přepínač --set instance_count=2. Protože se ale YAML neaktualizuje, tato technika nepodporuje GitOps.

    Zadání souboru YAML není povinné. Pokud například chcete otestovat různá nastavení souběžnosti pro konkrétní nasazení, můžete zkusit něco podobného az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Tento přístup zachová veškerou existující konfiguraci, ale aktualizuje pouze zadané parametry.

  5. Protože jste upravili init() funkci, která se spustí při vytvoření nebo aktualizaci koncového bodu, zobrazí se zpráva Updated successfully v protokolech. Načtěte protokoly spuštěním příkazu:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Příkaz update také funguje s místními nasazeními. Použijte stejný az ml online-deployment update příkaz s příznakem --local .

Poznámka:

Aktualizace nasazení v této části je příkladem postupné aktualizace na místě.

  • U spravovaného online koncového bodu se nasazení aktualizuje na novou konfiguraci s 20% uzlů najednou. To znamená, že pokud má nasazení 10 uzlů, aktualizují se současně 2 uzly.
  • V případě online koncového bodu Kubernetes systém postupně vytvoří novou nasazovací instanci s novou konfigurací a odstraní původní starou instanci.
  • U produkčního využití zvažte modré-zelené nasazení, které nabízí bezpečnější alternativu k aktualizaci webové služby.

(Volitelné) Konfigurace automatického škálování

Automatické škálování automaticky spustí správné množství prostředků ke zvládnutí zatížení u vaší aplikace. Spravované online koncové body podporují automatické škálování prostřednictvím integrace s funkcí automatického škálování služby Azure Monitor. Informace o konfiguraci automatického škálování najdete v tématu Automatické škálování online koncových bodů.

(Volitelné) Monitorování smlouvy SLA pomocí služby Azure Monitor

Pokud chcete zobrazit metriky a nastavit upozornění na základě vaší smlouvy SLA, postupujte podle kroků popsaných v online koncových bodech monitorování.

(Volitelné) Integrace s Log Analytics

Příkaz get-logs pro rozhraní příkazového řádku nebo metodu get_logs sady SDK poskytuje pouze posledních několik stovek řádků protokolů z automaticky vybrané instance. Log Analytics ale poskytuje způsob, jak trvale ukládat a analyzovat protokoly. Další informace o tom, jak používat protokolování, najdete v tématu Použití protokolů.

Odstranění koncového bodu a nasazení

Pomocí následujícího příkazu odstraňte koncový bod a všechna jeho základní nasazení:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait