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 budete mít škálovatelný koncový bod HTTPS/REST, který můžete použít k odvozování v reálném čase.
Online koncové body jsou koncové body, které se používají k odvozování v reálném čase. Existují dva typy online koncových bodů: spravované online koncové body a online koncové body Kubernetes. Další informace o koncových bodech a rozdílech mezi spravovanými online koncovými body a online koncovými body Kubernetes najdete v tématu Co jsou koncové body služby Azure Machine Learning?
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 starají o obsluhu, škálování, zabezpečení a monitorování vašich modelů a osvobodí vás od režijních nákladů na nastavení a správu základní infrastruktury.
Hlavní příklad v tomto dokumentu 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.
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor Služby Azure Machine Learning nebo vlastní roli, která povoluje Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Pokud k vytváření a správě online koncových bodů/nasazení používáte studio, budete potřebovat další 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ímu prostoru Azure Machine Learning.
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Pracovní prostor služby Azure Machine Learning. Pokud ho nemáte, vytvořte ho pomocí kroků v rychlém startu : Vytvoření článku o prostředcích pracovního prostoru.
K instalaci sady Python SDK v2 použijte následující příkaz:
pip install azure-ai-ml azure-identity
Pokud chcete aktualizovat existující instalaci sady SDK na nejnovější verzi, použijte následující příkaz:
Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor Služby Azure Machine Learning nebo vlastní roli, která povoluje Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
Pracovní prostor Azure Machine Learning a výpočetní instance. Pokud tyto prostředky nemáte a chcete je vytvořit, postupujte podle kroků v článku Rychlý start: Vytvoření prostředků pracovního prostoru.
Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor Služby Azure Machine Learning nebo vlastní roli, která povoluje Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
Poznámka:
I když se v těchto krocích používá rozšíření Azure CLI a rozhraní příkazového řádku pro strojové učení, nejedná se o hlavní zaměření. Používají se více jako nástroje, předávání šablon do Azure a kontrola stavu nasazení šablon.
Než budete postupovat podle kroků v tomto článku, ujistěte se, že máte následující požadavky:
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
Řízení přístupu na základě role v Azure (Azure RBAC) slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musí mít váš uživatelský účet přiřazenou roli vlastníka nebo přispěvatele pro pracovní prostor Služby Azure Machine Learning nebo vlastní roli, která povoluje Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Další informace najdete v tématu Správa přístupu k pracovnímu prostoru Azure Machine Learning.
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ů u některých skladových položek virtuálních počítačů. Pokud například v nasazení požadujete 10 instancí, musíte mít kvótu pro 12 pro každý počet jader skladové položky virtuálního počítače. Chyba při zohlednění dodatečných výpočetních prostředků způsobí chybu. Existují některé skladové položky virtuálních počítačů, které jsou z rezervace navíc vyloučené. 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.
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ě příkladů (azureml-examples). Potom spuštěním následujícího kódu přejděte do adresáře úložiště cli/ :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Tip
Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu dokončení operace.
Příkazy v tomto kurzu jsou v souborech deploy-local-endpoint.sh a deploy-managed-online-endpoint.sh v cli adresáři a konfigurační soubory YAML jsou v endpoints/online/managed/sample/ podadresáři.
Poznámka:
Konfigurační soubory YAML pro online koncové body Kubernetes jsou v endpoints/online/kubernetes/ podadresáři.
Klonování úložiště příkladů
Pokud chcete spustit trénovací příklady, nejprve naklonujte úložiště příkladů (azureml-examples) a změňte ho do azureml-examples/sdk/python/endpoints/online/managed adresáře:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Tip
Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu dokončení operace.
Připojení k pracovnímu prostoru Azure Machine Learning
Pracovní prostor je prostředek nejvyšší úrovně pro Azure Machine Learning, který 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, ve kterém budete provádět úlohy nasazení. Pokud si to chcete projít, otevřete online-endpoints-simple-deployment.ipynb poznámkový blok.
Import požadovaných knihoven:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Poznámka:
Pokud používáte online koncový bod Kubernetes, naimportujte ho KubernetesOnlineEndpoint a KubernetesOnlineDeployment třídu z azure.ai.ml.entities knihovny.
Nakonfigurujte podrobnosti pracovního prostoru a získejte popisovač pracovního prostoru:
Pokud se chcete připojit k pracovnímu prostoru, potřebujete parametry identifikátoru – předplatné, skupinu prostředků a název pracovního prostoru. Tyto podrobnosti v této azure.ai.ml části MLClient použijete k získání popisovače požadovaného pracovního prostoru Azure Machine Learning. V tomto příkladu se používá výchozí ověřování Azure.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Pokud máte na místním počítači nainstalovaný Git, můžete podle pokynů naklonovat úložiště příkladů. Jinak postupujte podle pokynů ke stažení souborů z úložiště příkladů.
Klonování úložiště příkladů
Pokud chcete postupovat podle tohoto článku, nejprve naklonujte úložiště příkladů (azureml-examples) a pak přejděte do azureml-examples/cli/endpoints/online/model-1 adresáře.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Tip
Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu dokončení operace.
Stažení souborů z úložiště příkladů
Pokud jste naklonovali úložiště příkladů, váš místní počítač už má kopie souborů pro tento příklad a můžete přejít k další části. Pokud jste úložiště nenaklonovali, můžete si ho stáhnout do místního počítače.
Přejděte na <> tlačítko Kód na stránce a pak na kartě Místní vyberte Stáhnout ZIP.
Vyhledejte složku /cli/endpoints/online/model-1/model a soubor /cli/endpoints/online/model-1/onlinescoring/score.py.
Nastavení proměnných prostředí
Nastavte následující proměnné prostředí, které se používají v příkladech v tomto článku. Nahraďte hodnoty ID předplatného Azure, oblast Azure, ve které se nachází váš pracovní prostor, skupinu prostředků, která obsahuje pracovní prostor, a název pracovního prostoru:
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
Několik příkladů šablon vyžaduje nahrání souborů do úložiště objektů blob v Azure pro váš pracovní prostor. Následující kroky se dotazují na pracovní prostor a ukládají tyto informace do proměnných prostředí použitých v příkladech:
Pokud chcete postupovat podle tohoto článku, nejprve naklonujte úložiště příkladů (azureml-examples). Potom spuštěním následujícího kódu přejděte do adresáře příkladů:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Tip
Slouží --depth 1 ke klonování pouze nejnovějšího potvrzení do úložiště, což zkracuje dobu dokončení operace.
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.
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 Omezení koncových bodů.
V případě Linuxu spusťte tento příkaz:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Konfigurace koncového bodu
Následující fragment kódu ukazuje koncové body,online/managed/sample/endpoint.yml soubor:
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 referenčních informacích k YAML online koncového bodu. Informace o limitech souvisejících se spravovanými koncovými body najdete v omezeních pro online koncové body.
Key
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žívá se aad_token pro ověřování založené na tokenech Microsoft Entra (Preview). Další informace o ověřování najdete v tématu Ověřování klientů pro online koncové body.
Konfigurace koncového bodu
Nejprve definujte název online koncového bodu a pak nakonfigurujte koncový bod.
Název vašeho koncového bodu musí být v oblasti Azure jedinečný. Další informace o pravidlech pojmenování najdete v tématu Omezení koncových bodů.
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Předchozí kód používá key pro ověřování založené na klíči. Pokud chcete použít ověřování založené na tokenech služby Azure Machine Learning, použijte aml_token. Chcete-li použít ověřování založené na tokenech Microsoft Entra (Preview), použijte aad_token. Další informace o ověřování najdete v tématu Ověřování klientů pro online koncové body.
Konfigurace koncového bodu
Když nasadíte do Azure ze studia, vytvoříte koncový bod a nasazení, které do něj přidáte. V tuto chvíli se zobrazí výzva k zadání názvů koncového bodu a nasazení.
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 Omezení koncových bodů.
Nasazení je sada prostředků vyžadovaných pro hostování modelu, který provádí skutečné odvozování. V tomto příkladu nasadíte model scikit-learn, který provádí regresi, a použijete bodovací skript score.py ke spuštění modelu na daném vstupním požadavku.
Další informace o klíčových atributech nasazení najdete v tématu Online nasazení.
Konfigurace nasazení
Konfigurace nasazení používá umístění modelu, který chcete nasadit.
Soubor blue-deployment.yml určuje následující atributy nasazení:
model – určuje vložené vlastnosti modelu pomocí objektu path (kam se mají nahrát soubory). Rozhraní příkazového řádku automaticky nahraje soubory modelu a zaregistruje model s automaticky vygenerovaným názvem.
environment – pomocí vložených definic, které zahrnují, odkud se mají nahrát soubory, rozhraní příkazového řádku soubor automaticky nahraje conda.yaml a zaregistruje prostředí. Později k sestavení prostředí použije image nasazení základní image (v tomto příkladu) mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latesta conda_file závislosti se nainstalují nad základní image.
code_configuration – během nasazení se místní soubory, jako je zdroj Pythonu pro model bodování, nahrají z vývojového prostředí.
Použití koncových bodů Kubernetes místo spravovaných online koncových bodů jako cílového výpočetního objektu:
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.
Použijte YAML koncového bodu k cílení Na Kubernetes místo YAML spravovaného koncového bodu. 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 použitelnými 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:
Model – určuje vložené vlastnosti modelu pomocí objektu path (kam se mají nahrát soubory). Sada SDK automaticky nahraje soubory modelu a zaregistruje model s automaticky vygenerovaným názvem.
Environment – pomocí vložených definic, které zahrnují, odkud se mají nahrát soubory, sada SDK soubor automaticky nahraje conda.yaml a zaregistruje prostředí. Později k sestavení prostředí použije image nasazení základní image (v tomto příkladu) mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latesta conda_file závislosti se nainstalují nad základní image.
CodeConfiguration – během nasazení se místní soubory, jako je zdroj Pythonu pro model bodování, nahrají z vývojového prostředí.
Když nasadíte do Azure, vytvoříte koncový bod a nasazení, které do něj přidáte. V tuto chvíli se zobrazí výzva k zadání názvů koncového bodu a nasazení.
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 a provede skutečné bodování a předpověď. V tomto souboru run() score.py funkce extrahuje data ze vstupu JSON, zavolá metodu modelu predict() scikit-learn a vrátí výsledek předpovědi.
Místní nasazení a ladění pomocí místního koncového bodu
Důrazně doporučujeme , abyste koncový bod testovali 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í, zatímco studio Azure Machine Learning a šablona ARM ne.
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 pro místní koncový bod přeskočit tento krok a přímo vytvořit nasazení (další krok), který pak vytvoří požadovaná metadata. Místní nasazení modelů je užitečné pro účely vývoje a testování.
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 identifikátor URI bodování. Pokud chcete získat identifikátor URI bodování, spusťte az ml online-endpoint show --local -n $ENDPOINT_NAMEpříkaz . Ve vrácených datech vyhledejte scoring_uri atribut.
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 .
Pokud chcete použít klienta REST (například curl), musíte mít identifikátor URI bodování. Pokud chcete získat identifikátor URI bodování, spusťte následující kód. Ve vrácených datech vyhledejte scoring_uri atribut.
Studio nepodporuje místní koncové body. Postup místního testování koncového bodu najdete na kartách Azure CLI nebo Pythonu.
Šablona nepodporuje místní koncové body. Postup místního testování koncového bodu najdete na kartách Azure CLI nebo Pythonu.
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é budete používat 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. Registrace prostředků vám umožní je opakovaně používat bez nutnosti je nahrávat při každém vytváření nasazení, což zvyšuje reprodukovatelnost a sledovatelnost.
Poznámka:
Na rozdíl od nasazení do Azure místní nasazení nepodporuje používání registrovaných modelů a prostředí. Místní nasazení místo toho 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 a environment do samostatných model souborů YAML a používat příkazy az ml model create a az ml environment create. Další informace o těchtopříkazch az ml model create -haz ml environment create -h
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Zaregistrujte prostředí:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Registrace modelu je logická entita v pracovním prostoru, která může obsahovat jeden soubor modelu nebo adresář více souborů. Osvědčeným postupem pro produkční prostředí je registrace modelu a prostředí. Před vytvořením koncového bodu a nasazení v tomto článku byste měli zaregistrovat složku modelu, která tento model obsahuje.
Pokud chcete ukázkový model zaregistrovat, postupujte takto:
V levém navigačním panelu vyberte stránku Modely .
Vyberte Zaregistrovat a pak zvolte Z místních souborů.
Jako typ modelu vyberte Nezadaný typ.
Vyberte Procházet a zvolte Procházet složku.
\azureml-examples\cli\endpoints\online\model-1\model Vyberte složku z místní kopie úložiště, kterou jste naklonovali nebo stáhli dříve. Po zobrazení výzvy vyberte Nahrát a počkejte na dokončení nahrávání.
Po dokončení nahrávání složky vyberte Další .
Zadejte popisný název modelu. Kroky v tomto článku předpokládají, že model má název model-1.
V levém navigačním panelu vyberte stránku Prostředí .
Vyberte Vytvořit.
Na stránce Nastavení zadejte název, například my-env pro prostředí.
V případě možnosti Vybrat zdroj prostředí zvolte Použít existující image Dockeru s volitelným zdrojem conda.
Výběrem možnosti Další přejděte na stránku Přizpůsobit.
Zkopírujte obsah \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml souboru z místní kopie úložiště, které jste naklonovali nebo stáhli dříve.
Vložte obsah do textového pole.
Vyberte Další , dokud se nedostanete na stránku Revize.
vyberte Vytvořit.
Další informace o vytvoření prostředí v sadě Studio najdete v tématu Vytvoření prostředí.
Pokud chcete model zaregistrovat pomocí šablony, musíte nejprve nahrát soubor modelu do úložiště objektů blob Azure. Následující příklad používá az storage blob upload-batch příkaz k nahrání souboru do výchozího úložiště pro váš pracovní prostor:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Po nahrání souboru pomocí šablony vytvořte registraci modelu. V následujícím příkladu modelUri obsahuje parametr cestu k modelu:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Součástí prostředí je soubor conda, který určuje závislosti modelu potřebné k hostování modelu. Následující příklad ukazuje, jak číst obsah souboru conda do proměnných prostředí:
Následující příklad ukazuje použití šablony k registraci prostředí. Obsah souboru conda z předchozího kroku se předá šabloně pomocí parametru condaFile :
V definici nasazení použijte registrované prostředky (model a prostředí). Následující fragment kódu ukazuje endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml soubor se všemi požadovanými vstupy ke konfiguraci nasazení:
Když nasadíte ze studia, vytvoříte koncový bod a nasazení, které do něj přidáte. V tuto chvíli se zobrazí výzva k zadání názvů koncového bodu a nasazení.
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 typu Standard_DS3_v2 pro obecné účely a image mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestDockeru bez GPU . U výpočetních prostředků GPU zvolte skladovou položku typu výpočetního prostředí GPU a image Dockeru GPU.
Pokud chcete používat Kubernetes místo spravovaných koncových bodů jako cílové výpočetní objekty, přečtěte si téma Úvod do cílového výpočetního prostředí Kubernetes.
V konfiguraci nasazení můžete zadat typy instancí PROCESORu nebo GPU a image pro místní nasazení i nasazení do Azure.
Dříve jste nakonfigurovali nasazení, které používalo instanci typu Standard_DS3_v2 pro obecné účely a image mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestDockeru bez GPU . U výpočetních prostředků GPU zvolte skladovou položku typu výpočetního prostředí GPU a image Dockeru GPU.
Pokud chcete používat Kubernetes místo spravovaných koncových bodů jako cílové výpočetní objekty, přečtěte si téma Úvod do cílového výpočetního prostředí Kubernetes.
Při použití studia k nasazení do Azure se zobrazí výzva k zadání výpočetních vlastností (typ instance a počet instancí) a prostředí, které se mají použít pro vaše nasazení.
Předchozí registrace prostředí určuje image mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 Dockeru bez GPU předáním hodnoty environment-version.json šabloně pomocí parametru dockerImage . Pro výpočetní prostředky GPU zadejte do šablony hodnotu image Dockeru GPU (pomocí parametru dockerImage ) a zadejte skladovou online-endpoint-deployment.json položku typu výpočetního typu GPU šabloně (pomocí parametru skuName ).
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
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.
Tip
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í.
Důležité
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í. I když je to užitečné pro účely vývoje a testování, v produkčním prostředí můžete chtít směrovat provoz do nového nasazení prostřednictvím explicitního příkazu. Například az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Vytvořte koncový bod:
Pomocí dříve definovaného endpoint a dříve vytvořeného MLClient koncového bodu teď můžete vytvořit koncový bod v pracovním prostoru. Tento příkaz spustí vytvoření koncového bodu a během vytváření koncového bodu vrátí potvrzovací odpověď.
blue_deployment_with_registered_assets Pomocí toho, co jste definovali dříve a MLClient dříve jste vytvořili, teď můžete vytvořit nasazení v pracovním prostoru. Tento příkaz spustí vytvoření nasazení a během vytváření nasazení vrátí potvrzovací odpověď.
Pokud nechcete blokovat konzolu Pythonu, můžete k parametrům přidat příznak no_wait=True . Tato možnost ale zastaví interaktivní zobrazení stavu nasazení.
Vytvoření spravovaného online koncového bodu a nasazení
Pomocí studia můžete vytvořit spravovaný online koncový bod přímo v prohlížeči. Při vytváření spravovaného online koncového bodu v sadě Studio musíte definovat počáteční nasazení. Nemůžete vytvořit prázdný spravovaný online koncový bod.
Jedním ze způsobů, jak vytvořit spravovaný online koncový bod v sadě Studio, je stránka Modely . Tato metoda také poskytuje snadný způsob, jak přidat model do existujícího spravovaného online nasazení. Nasazení modelu, model-1 který jste zaregistrovali dříve v části Registrace modelu a prostředí :
Vyberte Další, dokud se nedostanete na stránku Nasazení. V této části přepněte diagnostiku Application Insights na Povoleno, abyste mohli později zobrazit grafy aktivit koncového bodu v sadě Studio a analyzovat metriky a protokoly pomocí Application Insights.
Výběrem možnosti Další přejděte na stránku Kód + prostředí. Tady vyberte následující možnosti:
Vyberte bodovací skript pro odvozování: Projděte a vyberte \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py soubor z úložiště, které jste naklonovali nebo stáhli dříve.
Vyberte oddíl prostředí : Vyberte vlastní prostředí a pak vyberte prostředí my-env:1 , které jste vytvořili dříve.
Vyberte Další a přijměte výchozí hodnoty, dokud se nezobrazí výzva k vytvoření nasazení.
Zkontrolujte nastavení nasazení a vyberte tlačítko Vytvořit .
Případně můžete vytvořit spravovaný online koncový bod ze stránky Koncové body v sadě Studio.
V levém navigačním panelu vyberte stránku Koncové body .
Vyberte + Vytvořit.
Tato akce otevře okno pro výběr modelu a zadání podrobností o koncovém bodu a nasazení. Zadejte nastavení pro koncový bod a nasazení, jak je popsáno výše, a pak vytvořte nasazení.
Pomocí metody vypíšete všechny koncové body v pracovním prostoru ve formátu list tabulky:
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
Metoda vrátí seznam (iterátor) ManagedOnlineEndpoint entit.
Další informace získáte zadáním dalších parametrů. Výstupem je například seznam koncových bodů, jako je tabulka:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Zobrazení spravovaných online koncových bodů
Všechny spravované online koncové body můžete zobrazit na stránce Koncové body . Přejděte na stránku Podrobností koncového bodu a vyhledejte důležité informace, včetně identifikátoru URI koncového bodu, stavu, testovacích nástrojů, monitorování aktivit, protokolů nasazení a ukázkového kódu consumption:
V levém navigačním panelu vyberte Koncové body. Tady můžete zobrazit seznam všech koncových bodů v pracovním prostoru.
(Volitelné) Vytvořte filtr pro typ výpočetních prostředků, aby se zobrazily jenom spravované typy výpočetních prostředků.
Výběrem názvu koncového bodu zobrazíte stránku podrobností koncového bodu.
Tip
Šablony jsou sice užitečné pro nasazení prostředků, ale nejde je použít k vypsání, zobrazení nebo vyvolání prostředků. K provedení těchto operací použijte Azure CLI, Python SDK nebo studio. Následující kód používá Azure CLI.
show Pomocí příkazu zobrazíte informace v koncovém provisioning_state bodu a nasazení:
az ml online-endpoint show -n $ENDPOINT_NAME
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 odvozování 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.
Výstup protokolu můžete zobrazit pomocí get_logs metody:
Ve výchozím nastavení se protokoly načítají z kontejneru odvozování serveru. Pokud chcete zobrazit protokoly z kontejneru inicializátoru úložiště, přidejte možnost container_type="storage-initializer" . Další informace o protokolech nasazení najdete v tématu Získání protokolů kontejneru.
Pokud chcete zobrazit výstup protokolu, vyberte na stránce koncového bodu kartu Protokoly . Pokud máte ve svém koncovém bodu více nasazení, pomocí rozevíracího seznamu vyberte nasazení, jehož protokol chcete zobrazit.
Ve výchozím nastavení se protokoly načítají ze serveru odvozování. Pokud chcete zobrazit protokoly z kontejneru inicializátoru úložiště, použijte Azure CLI nebo Python SDK (podrobnosti najdete na jednotlivých kartách). Protokoly z kontejneru inicializátoru úložiště poskytují informace o tom, jestli se data kódu a modelu úspěšně stáhla do kontejneru. Další informace o protokolech nasazení najdete v tématu Získání protokolů kontejneru.
Tip
Šablony jsou sice užitečné pro nasazení prostředků, ale nejde je použít k vypsání, zobrazení nebo vyvolání prostředků. K provedení těchto operací použijte Azure CLI, Python SDK nebo studio. Následující kód používá Azure CLI.
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 odvozování 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.
Vyvolání koncového bodu pro určení skóre dat pomocí modelu
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
Získejte klíč použitý k ověření koncového bodu:
Tip
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)
K určení skóre dat použijte 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, show že používáte a get-credentials příkazy k získání přihlašovacích údajů pro ověření. Všimněte si také, že příznak používáte --query k filtrování pouze potřebných atributů. Další informace o příznaku najdete v tématu Dotazování výstupu --querypříkazu Azure CLI.
Pokud chcete zobrazit protokoly vyvolání, spusťte get-logs to znovu.
Pomocí dříve vytvořeného MLClient popisovače přejděte ke koncovému bodu. Koncový bod se pak dá vyvolat pomocí invoke příkazu s následujícími parametry:
endpoint_name – Název koncového bodu
request_file - Soubor s daty žádosti
deployment_name – Název konkrétního nasazení pro testování v koncovém bodu
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Pomocí karty Test na stránce podrobností koncového bodu otestujte spravované online nasazení. Zadejte ukázkový vstup a prohlédněte si výsledky.
Na stránce podrobností koncového bodu vyberte kartu Test.
V rozevíracím seznamu vyberte nasazení, které chcete otestovat.
Šablony jsou sice užitečné pro nasazení prostředků, ale nejde je použít k vypsání, zobrazení nebo vyvolání prostředků. K provedení těchto operací použijte Azure CLI, Python SDK nebo studio. Následující kód používá Azure CLI.
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 cli/endpoints/online/model-1/sample-request.json
Pokud chcete aktualizovat kód, model nebo prostředí, aktualizujte soubor YAML a spusťte az ml online-endpoint update příkaz.
Poznámka:
Pokud aktualizujete počet instancí (pro škálování nasazení) spolu s dalšími nastaveními modelu (jako je kód, model nebo prostředí) v jednom update příkazu, provede se nejprve operace škálování, pak se použijí další aktualizace. Tyto operace je vhodné provádět samostatně v produkčním prostředí.
Vysvětlení toho, jak update funguje:
Otevřete soubor online/model-1/onlinescoring/score.py.
Změňte poslední řádek init() funkce: Za logging.info("Init complete"), přidat logging.info("Updated successfully").
Uložte soubor.
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
Poznámka:
Aktualizace pomocí YAML je deklarativní. To znamená, že změny v YAML se projeví v podkladových prostředcích Azure 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.
Tip
Pomocí příkazu ROZHRANÍ příkazového řádku můžete přepsat atributy v YAML nebo nastavit konkrétní atributy bez jejich předání do souboru YAML.update--set Použití --set pro jednotlivé atributy je zvláště cenné ve scénářích vývoje a testování. Pokud například chcete vertikálně navýšit kapacitu instance_count hodnoty pro první nasazení, můžete použít --set instance_count=2 příznak. Protože se ale YAML neaktualizuje, tato technika nepodporuje GitOps.
Zadání souboru YAML není povinné. Pokud například chcete otestovat jiné nastavení souběžnosti pro dané 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. Tím se zachová veškerá existující konfigurace, ale aktualizuje se jenom zadané parametry.
Protože jste upravili init() funkci, která se spustí při vytvoření nebo aktualizaci koncového bodu, Updated successfully zpráva bude 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 .
Pokud chcete aktualizovat kód, model nebo prostředí, aktualizujte konfiguraci a spuštěním MLClientonline_deployments.begin_create_or_update metody vytvořte nebo aktualizujte nasazení.
Poznámka:
Pokud aktualizujete počet instancí (pro škálování nasazení) spolu s dalšími nastaveními modelu (jako je kód, model nebo prostředí) v jedné begin_create_or_update metodě, provede se nejprve operace škálování, pak se použijí další aktualizace. Tyto operace je vhodné provádět samostatně v produkčním prostředí.
Vysvětlení toho, jak begin_create_or_update funguje:
Otevřete soubor online/model-1/onlinescoring/score.py.
Změňte poslední řádek init() funkce: Za logging.info("Init complete"), přidat logging.info("Updated successfully").
Protože jste upravili init() funkci, která se spustí při vytvoření nebo aktualizaci koncového bodu, Updated successfully zpráva bude v protokolech. Načtěte protokoly spuštěním příkazu:
Metoda begin_create_or_update také funguje s místními nasazeními. Použijte stejnou metodu s příznakem local=True .
Studio v současné době umožňuje provádět aktualizace pouze pro počet instancí nasazení. Pomocí následujících pokynů můžete vertikálně navýšit nebo snížit kapacitu jednotlivých nasazení úpravou počtu instancí:
Otevřete stránku podrobností koncového bodu a vyhledejte kartu pro nasazení, které chcete aktualizovat.
Vyberte ikonu pro úpravy (ikonu tužky) vedle názvu nasazení.
Aktualizujte počet instancí přidružených k nasazení. Pro typ škálování nasazení si můžete vybrat mezi výchozím nebo cílovým využitím .
Pokud vyberete Možnost Výchozí, zadáte také číselnou hodnotu pro počet instancí.
Pokud vyberete Cílové využití, můžete zadat hodnoty, které se mají použít pro parametry při automatickém škálování nasazení.
Výběrem možnosti Aktualizovat dokončíte aktualizaci počtu instancí pro vaše nasazení.
V současné době není možné aktualizovat nasazení pomocí šablony ARM.
Poznámka:
Příkladem místní kumulativní aktualizace je aktualizace nasazení v této části.
U spravovaného online koncového bodu se nasazení aktualizuje na novou konfiguraci s 20% uzly najednou. To znamená, že pokud má nasazení 10 uzlů, aktualizují se současně 2 uzly.
V případě online koncového bodu Kubernetes vytvoří systém iterativní vytvoření nové instance nasazení s novou konfigurací a odstraní starou instanci.
V případě produkčního využití byste měli zvážit 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 Postup automatického š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, proveďte kroky popsané 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 používání protokolování najdete v tématu Monitorování online koncových bodů.