Zjistěte, jak získat přístup k prostředkům Azure z hodnoticího skriptu pomocí online koncového bodu a spravované identity přiřazené systémem nebo spravované identity přiřazené uživatelem.
Spravované koncové body i koncové body Kubernetes umožňují službě Azure Machine Learning spravovat zatížení zřizování výpočetního prostředku a nasazení modelu strojového učení. Váš model obvykle potřebuje přístup k prostředkům Azure, jako je Azure Container Registry nebo úložiště objektů blob pro odvozování. se spravovanou identitou můžete k těmto prostředkům přistupovat bez nutnosti spravovat přihlašovací údaje ve vašem kódu. Přečtěte si další informace o spravovaných identitách.
Pokud chcete používat Azure Machine Learning, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Skupina prostředků Azure, ve které vy (nebo instanční objekt, který používáte), musí mít přístup správce uživatelských přístupů a přispěvatel. Takovou skupinu prostředků máte, pokud jste nakonfigurovali rozšíření ML podle předchozího článku.
Pracovní prostor služby Azure Machine Learning. Pokud jste nakonfigurovali rozšíření ML podle předchozího článku, už máte pracovní prostor.
Trénovaný model strojového učení připravený k bodování a nasazení Pokud sledujete společně s ukázkou, je k dispozici model.
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 gitworkspace=<Azure Machine Learning workspace name> group=<resource group>
Pokud chcete postupovat podle ukázky, naklonujte úložiště ukázek a pak změňte adresář na cli.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Pokud chcete používat Azure Machine Learning, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Skupina prostředků Azure, ve které vy (nebo instanční objekt, který používáte), potřebujete mít přístup správce uživatelských přístupů a přispěvatel. Takovou skupinu prostředků máte, pokud jste nakonfigurovali rozšíření ML podle předchozího článku.
Pracovní prostor služby Azure Machine Learning. Pokud jste nakonfigurovali rozšíření ML podle výše uvedeného článku, máte pracovní prostor.
Trénovaný model strojového učení připravený k bodování a nasazení Pokud sledujete společně s ukázkou, je k dispozici model.
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 gitworkspace=<Azure Machine Learning workspace name> group=<resource group>
Pokud chcete postupovat podle ukázky, naklonujte úložiště ukázek a pak změňte adresář na cli.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Pokud chcete používat Azure Machine Learning, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Nainstalujte a nakonfigurujte sadu Azure Machine Learning Python SDK (v2). Další informace najdete v tématu Instalace a nastavení sady SDK (v2).
Skupina prostředků Azure, ve které vy (nebo instanční objekt, který používáte), potřebujete mít přístup správce uživatelských přístupů a přispěvatel. Takovou skupinu prostředků máte, pokud jste nakonfigurovali rozšíření ML podle předchozího článku.
Pracovní prostor služby Azure Machine Learning. Pokud jste nakonfigurovali rozšíření ML podle předchozího článku, už máte pracovní prostor.
Trénovaný model strojového učení připravený k bodování a nasazení Pokud sledujete společně s ukázkou, je k dispozici model.
Naklonujte úložiště ukázek a pak změňte adresář.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/sdk/endpoints/online/managed/managed-identities
Pokud chcete postupovat podle tohoto poznámkového bloku, přejděte k doprovodným ukázkovým poznámkovému bloku v adresáři sdk/endpoints/online/managed/managed-identityies .
V tomto příkladu jsou vyžadovány další balíčky Pythonu:
Pokud chcete používat Azure Machine Learning, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Oprávnění k vytvoření role pro vaše předplatné nebo prostředky Azure, ke kterým přistupuje identita přiřazená uživatelem.
Nainstalujte a nakonfigurujte sadu Azure Machine Learning Python SDK (v2). Další informace najdete v tématu Instalace a nastavení sady SDK (v2).
Skupina prostředků Azure, ve které vy (nebo instanční objekt, který používáte), potřebujete mít přístup správce uživatelských přístupů a přispěvatel. Takovou skupinu prostředků máte, pokud jste nakonfigurovali rozšíření ML podle předchozího článku.
Pracovní prostor služby Azure Machine Learning. Pokud jste nakonfigurovali rozšíření ML podle předchozího článku, už máte pracovní prostor.
Trénovaný model strojového učení připravený k bodování a nasazení Pokud sledujete společně s ukázkou, je k dispozici model.
Naklonujte úložiště ukázek.
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/sdk/endpoints/online/managed/managed-identities
Pokud chcete postupovat podle tohoto poznámkového bloku, přejděte k doprovodným ukázkovým poznámkovému bloku v adresáři sdk/endpoints/online/managed/managed-identityies .
V tomto příkladu jsou vyžadovány další balíčky Pythonu:
Identita koncového bodu je neměnná. Během vytváření koncového bodu ho můžete přidružit k identitě přiřazené systémem (výchozí) nebo k identitě přiřazené uživatelem. Identitu po vytvoření koncového bodu nemůžete změnit.
Pokud je vaše úložiště ARC a objektů blob nakonfigurované jako privátní, to znamená za virtuální sítí, měl by být přístup z koncového bodu Kubernetes přes privátní propojení bez ohledu na to, jestli je váš pracovní prostor veřejný nebo privátní. Další podrobnosti o nastavení privátního propojení najdete v tématu Postup zabezpečení virtuální sítě pracovního prostoru.
Konfigurace proměnných pro nasazení
Nakonfigurujte názvy proměnných pro pracovní prostor, umístění pracovního prostoru a koncový bod, který chcete vytvořit pro použití s vaším nasazením.
Dále určete, co chcete pojmenovat účet úložiště objektů blob, kontejner objektů blob a soubor. Tyto názvy proměnných jsou zde definovány a v další části jsou odkazované az storage account createaz storage container create na příkazy.
Následující kód tyto hodnoty exportuje jako proměnné prostředí:
Po exportu těchto proměnných vytvořte textový soubor místně. Po nasazení koncového bodu skript bodování přistupuje k tomuto textovému souboru pomocí spravované identity přiřazené systémem, která se vygeneruje při vytváření koncového bodu.
Rozhodněte se o názvu koncového bodu, pracovního prostoru a umístění pracovního prostoru a pak ji vyexportujte jako proměnnou prostředí:
Dále určete, co chcete pojmenovat účet úložiště objektů blob, kontejner objektů blob a soubor. Tyto názvy proměnných jsou zde definovány a v další části jsou odkazované az storage account createaz storage container create na příkazy.
Po exportu těchto proměnných vytvořte textový soubor místně. Po nasazení koncového bodu skript bodování přistupuje k tomuto textovému souboru pomocí spravované identity přiřazené uživatelem, která se používá v koncovém bodu.
Rozhodněte se o názvu vaší identity uživatele a exportujte ji jako proměnnou prostředí:
export UAI_NAME="<USER_ASSIGNED_IDENTITY_NAME>"
Přiřaďte hodnoty pro proměnné související s pracovním prostorem a nasazením:
Dále určete, co chcete pojmenovat účet úložiště objektů blob, kontejner objektů blob a soubor. Tyto názvy proměnných jsou zde definovány a jsou uvedeny v účtu úložiště a vytváření kontejneru kódem StorageManagementClient a ContainerClient.
Po přiřazení těchto proměnných vytvořte textový soubor místně. Po nasazení koncového bodu skript bodování přistupuje k tomuto textovému souboru pomocí spravované identity přiřazené systémem, která se vygeneruje při vytváření koncového bodu.
Teď získejte popisovač pracovního prostoru a načtěte jeho umístění:
from azure.ai.ml import MLClient
from azure.identity import AzureCliCredential
from azure.ai.ml.entities import (
ManagedOnlineDeployment,
ManagedOnlineEndpoint,
Model,
CodeConfiguration,
Environment,
)
credential = AzureCliCredential()
ml_client = MLClient(credential, subscription_id, resource_group, workspace_name)
workspace_location = ml_client.workspaces.get(workspace_name).location
Tuto hodnotu použijte k vytvoření účtu úložiště.
Přiřaďte hodnoty pro proměnné související s pracovním prostorem a nasazením:
Dále určete, co chcete pojmenovat účet úložiště objektů blob, kontejner objektů blob a soubor. Tyto názvy proměnných jsou zde definovány a jsou uvedeny v účtu úložiště a vytváření kontejneru kódem StorageManagementClient a ContainerClient.
Po přiřazení těchto proměnných vytvořte textový soubor místně. Po nasazení koncového bodu skript bodování přistupuje k tomuto textovému souboru pomocí spravované identity přiřazené uživatelem, která se vygeneruje při vytváření koncového bodu.
Rozhodněte se o názvu vaší identity uživatele:
uai_name = "<USER_ASSIGNED_IDENTITY_NAME>"
Teď získejte popisovač pracovního prostoru a načtěte jeho umístění:
from azure.ai.ml import MLClient
from azure.identity import AzureCliCredential
from azure.ai.ml.entities import (
ManagedOnlineDeployment,
ManagedOnlineEndpoint,
Model,
CodeConfiguration,
Environment,
)
credential = AzureCliCredential()
ml_client = MLClient(credential, subscription_id, resource_group, workspace_name)
workspace_location = ml_client.workspaces.get(workspace_name).location
Pokud chcete nasadit online koncový bod pomocí rozhraní příkazového řádku, musíte definovat konfiguraci v souboru YAML. Další informace o schématu YAML najdete v referenčním dokumentu YAML o online koncovém bodu.
Soubory YAML v následujících příkladech slouží k vytváření online koncových bodů.
Následující příklad YAML se nachází na koncových bodech, online, managed/managed-identities/1-sai-create-endpoint. Soubor,
Definuje název, kterým chcete odkazovat na koncový bod. my-sai-endpoint
Určuje typ autorizace, který se má použít pro přístup ke koncovému bodu. auth-mode: key
Pokud chcete nasadit online koncový bod pomocí rozhraní příkazového řádku, musíte definovat konfiguraci v souboru YAML. Další informace o schématu YAML najdete v referenčním dokumentu YAML o online koncovém bodu.
Soubory YAML v následujících příkladech slouží k vytváření online koncových bodů.
Následující příklad YAML se nachází v koncových bodech, online, managed/managed-identities/1-uai-create-endpoint. Soubor,
Definuje název, kterým chcete odkazovat na koncový bod. my-uai-endpoint
Určuje typ autorizace, který se má použít pro přístup ke koncovému bodu. auth-mode: key
Označuje typ identity, který se má použít. type: user_assigned
K nasazení online koncového bodu pomocí sady Python SDK (v2) je možné použít objekty k definování následující konfigurace. Alternativně lze soubory YAML načíst pomocí .load metody.
Následující objekt koncového bodu Pythonu:
Přiřadí název, kterým chcete odkazovat na koncový bod proměnné endpoint_name.
Určuje typ autorizace, který se má použít pro přístup ke koncovému bodu auth-mode="key".
K nasazení online koncového bodu pomocí sady Python SDK (v2) je možné použít objekty k definování následující konfigurace. Alternativně lze soubory YAML načíst pomocí .load metody.
Pro identitu přiřazenou uživatelem definujete konfiguraci koncového bodu po vytvoření spravované identity přiřazené uživatelem.
Tento objekt nasazení:
Určuje, že typ nasazení, které chcete vytvořit, je prostřednictvím ManagedOnlineDeployment třídy.
Označuje, že koncový bod má přidružené nasazení s názvem blue.
Konfiguruje podrobnosti o nasazení, jako je například nameinstance_count
Definuje více objektů vložených a přidruží je k nasazení pro Model,CodeConfiguration a Environment.
Zahrnuje proměnné prostředí potřebné pro přístup k úložišti spravovanou identitou přiřazenou uživatelem.
Přidá zástupnou proměnnou prostředí pro UAI_CLIENT_ID, která se přidá po vytvoření jedné a před skutečně nasazením této konfigurace.
deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=Model(path="../../model-1/model/"),
code_configuration=CodeConfiguration(
code="../../model-1/onlinescoring/", scoring_script="score_managedidentity.py"
),
environment=Environment(
conda_file="../../model-1/environment/conda-managedidentity.yml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
),
instance_type="Standard_DS3_v2",
instance_count=1,
environment_variables={
"STORAGE_ACCOUNT_NAME": storage_account_name,
"STORAGE_CONTAINER_NAME": storage_container_name,
"FILE_NAME": file_name,
# We will update this after creating an identity
"UAI_CLIENT_ID": "uai_client_id_place_holder",
},
)
Vytvoření spravované identity
Pokud chcete získat přístup k prostředkům Azure, vytvořte spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem pro váš online koncový bod.
V tomto příkladu vytvořte účet úložiště objektů blob a kontejner objektů blob a potom nahrajte dříve vytvořený textový soubor do kontejneru objektů blob. Udělíte online koncovému bodu a spravované identitě přístup k tomuto účtu úložiště a kontejneru objektů blob.
Pak nahrajte objekt blob do kontejneru pomocí :ContainerClient
with open(file_name, "rb") as f:
container_client.upload_blob(name=file_name, data=f.read())
Vytvoření online koncového bodu
Následující kód vytvoří online koncový bod bez zadání nasazení.
Upozorňující
Identita koncového bodu je neměnná. Během vytváření koncového bodu ho můžete přidružit k identitě přiřazené systémem (výchozí) nebo k identitě přiřazené uživatelem. Identitu po vytvoření koncového bodu nemůžete změnit.
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/managed-identities/1-uai-create-endpoint.yml --set identity.user_assigned_identities[0].resource_id=$uai_id
Pomocí následujícího příkazu zkontrolujte stav koncového bodu.
Online koncové body vyžadují oprávnění služby Azure Container Registry k vyžádání obsahu, oprávnění AcrPull k registru kontejneru a oprávnění čtenáře dat objektů blob služby Storage k výchozímu úložišti dat pracovního prostoru.
Můžete povolit online koncovému bodu přístup k vašemu úložišti prostřednictvím spravované identity přiřazené systémem nebo udělit oprávnění spravované identitě přiřazené uživatelem pro přístup k účtu úložiště vytvořenému v předchozí části.
Načtěte spravovanou identitu přiřazenou systémem, která byla vytvořena pro váš koncový bod.
system_identity=`az ml online-endpoint show --name $ENDPOINT_NAME --query "identity.principal_id" -o tsv`
Odtud můžete udělit spravované identitě přiřazené systémem oprávnění pro přístup k úložišti.
az role assignment create --assignee-object-id $system_identity --assignee-principal-type ServicePrincipal --role "Storage Blob Data Reader" --scope $storage_id
Načtěte ID klienta spravované identity přiřazené uživatelem.
uai_clientid=`az identity list --query "[?name=='$UAI_NAME'].clientId" -o tsv`
uai_principalid=`az identity list --query "[?name=='$UAI_NAME'].principalId" -o tsv`
Načtěte ID spravované identity přiřazené uživatelem.
uai_id=`az identity list --query "[?name=='$UAI_NAME'].id" -o tsv`
Získejte registr kontejneru přidružený k pracovnímu prostoru.
container_registry=`az ml workspace show --name $WORKSPACE --query container_registry -o tsv`
Načtěte výchozí úložiště pracovního prostoru.
storage_account=`az ml workspace show --name $WORKSPACE --query storage_account -o tsv`
az role assignment create --assignee-object-id $uai_principalid --assignee-principal-type ServicePrincipal --role "Storage Blob Data Reader" --scope $storage_id
az role assignment create --assignee-object-id $uai_principalid --assignee-principal-type ServicePrincipal --role "AcrPull" --scope $container_registry
Udělte oprávnění výchozího úložiště pracovního prostoru spravované identitě přiřazené uživatelem.
az role assignment create --assignee-object-id $uai_principalid --assignee-principal-type ServicePrincipal --role "Storage Blob Data Reader" --scope $storage_account
Nejprve vytvořte AuthorizationManagementClient definici rolí seznamu:
from azure.mgmt.authorization import AuthorizationManagementClient
from azure.mgmt.authorization.v2018_01_01_preview.models import RoleDefinition
import uuid
role_definition_client = AuthorizationManagementClient(
credential=credential,
subscription_id=subscription_id,
api_version="2018-01-01-preview",
)
Dále přiřaďte ke koncovému bodu roli Čtenář dat objektů blob služby Storage. Definice role se načte podle názvu a předá spolu s ID objektu zabezpečení koncového bodu. Role se použije v oboru účtu úložiště vytvořeného výše a umožní koncovému bodu číst soubor.
role_name = "Storage Blob Data Reader"
scope = storage_account.id
role_defs = role_definition_client.role_definitions.list(scope=scope)
role_def = next((r for r in role_defs if r.role_name == role_name))
role_assignment_client.role_assignments.create(
scope=scope,
role_assignment_name=str(uuid.uuid4()),
parameters=RoleAssignmentCreateParameters(
role_definition_id=role_def.id, principal_id=system_principal_id
),
)
Nejprve vytvořte AuthorizationManagementClient definici rolí seznamu:
from azure.mgmt.authorization import AuthorizationManagementClient
from azure.mgmt.authorization.v2018_01_01_preview.models import RoleDefinition
import uuid
role_definition_client = AuthorizationManagementClient(
credential=credential,
subscription_id=subscription_id,
api_version="2018-01-01-preview",
)
Pak získejte ID objektu zabezpečení a ID klienta spravované identity přiřazené uživatelem. K přiřazení rolí potřebujete pouze ID objektu zabezpečení. ID klienta však použijete k vyplnění UAI_CLIENT_ID zástupné proměnné prostředí před vytvořením nasazení.
Dále přiřaďte ke koncovému bodu roli Čtenář dat objektů blob služby Storage. Definice role se načte podle názvu a předá spolu s ID objektu zabezpečení koncového bodu. Role se použije v oboru účtu úložiště vytvořeného výše, aby koncový bod mohl soubor číst.
role_name = "Storage Blob Data Reader"
scope = storage_account.id
role_defs = role_definition_client.role_definitions.list(scope=scope)
role_def = next((r for r in role_defs if r.role_name == role_name))
role_assignment_client.role_assignments.create(
scope=scope,
role_assignment_name=str(uuid.uuid4()),
parameters=RoleAssignmentCreateParameters(
role_definition_id=role_def.id,
principal_id=uai_principal_id,
principal_type="ServicePrincipal",
),
)
Pro další dvě oprávnění potřebujete pracovní prostor a objekty registru kontejneru:
Dále přiřaďte roli AcrPull identitě přiřazené uživatelem. Tato role umožňuje načíst image ze služby Azure Container Registry. Obor se použije na úrovni registru kontejneru přidruženého k pracovnímu prostoru.
role_name = "AcrPull"
scope = container_registry
role_defs = role_definition_client.role_definitions.list(scope=scope)
role_def = next((r for r in role_defs if r.role_name == role_name))
role_assignment_client.role_assignments.create(
scope=scope,
role_assignment_name=str(uuid.uuid4()),
parameters=RoleAssignmentCreateParameters(
role_definition_id=role_def.id,
principal_id=uai_principal_id,
principal_type="ServicePrincipal",
),
)
Nakonec přiřaďte roli Čtenář dat objektů blob služby Storage ke koncovému bodu v oboru účtu úložiště pracovního prostoru. Toto přiřazení role umožňuje koncovému bodu číst objekty blob v účtu úložiště pracovního prostoru i nově vytvořený účet úložiště.
Role má stejný název a možnosti jako první přiřazená role výše, ale používá se v jiném oboru a má jiné ID.
role_name = "Storage Blob Data Reader"
scope = workspace.storage_account
role_defs = role_definition_client.role_definitions.list(scope=scope)
role_def = next((r for r in role_defs if r.role_name == role_name))
role_assignment_client.role_assignments.create(
scope=scope,
role_assignment_name=str(uuid.uuid4()),
parameters=RoleAssignmentCreateParameters(
role_definition_id=role_def.id,
principal_id=uai_principal_id,
principal_type="ServicePrincipal",
),
)
Bodovací skript pro přístup k prostředku Azure
V následujícím skriptu se dozvíte, jak používat token identity pro přístup k prostředkům Azure, v tomto scénáři účet úložiště vytvořený v předchozích částech.
import os
import logging
import json
import numpy
import joblib
import requests
from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobClient
def access_blob_storage_sdk():
credential = ManagedIdentityCredential(client_id=os.getenv("UAI_CLIENT_ID"))
storage_account = os.getenv("STORAGE_ACCOUNT_NAME")
storage_container = os.getenv("STORAGE_CONTAINER_NAME")
file_name = os.getenv("FILE_NAME")
blob_client = BlobClient(
account_url=f"https://{storage_account}.blob.core.windows.net/",
container_name=storage_container,
blob_name=file_name,
credential=credential,
)
blob_contents = blob_client.download_blob().content_as_text()
logging.info(f"Blob contains: {blob_contents}")
def get_token_rest():
"""
Retrieve an access token via REST.
"""
access_token = None
msi_endpoint = os.environ.get("MSI_ENDPOINT", None)
msi_secret = os.environ.get("MSI_SECRET", None)
# If UAI_CLIENT_ID is provided then assume that endpoint was created with user assigned identity,
# # otherwise system assigned identity deployment.
client_id = os.environ.get("UAI_CLIENT_ID", None)
if client_id is not None:
token_url = (
msi_endpoint + f"?clientid={client_id}&resource=https://storage.azure.com/"
)
else:
token_url = msi_endpoint + f"?resource=https://storage.azure.com/"
logging.info("Trying to get identity token...")
headers = {"secret": msi_secret, "Metadata": "true"}
resp = requests.get(token_url, headers=headers)
resp.raise_for_status()
access_token = resp.json()["access_token"]
logging.info("Retrieved token successfully.")
return access_token
def access_blob_storage_rest():
"""
Access a blob via REST.
"""
logging.info("Trying to access blob storage...")
storage_account = os.environ.get("STORAGE_ACCOUNT_NAME")
storage_container = os.environ.get("STORAGE_CONTAINER_NAME")
file_name = os.environ.get("FILE_NAME")
logging.info(
f"storage_account: {storage_account}, container: {storage_container}, filename: {file_name}"
)
token = get_token_rest()
blob_url = f"https://{storage_account}.blob.core.windows.net/{storage_container}/{file_name}?api-version=2019-04-01"
auth_headers = {
"Authorization": f"Bearer {token}",
"x-ms-blob-type": "BlockBlob",
"x-ms-version": "2019-02-02",
}
resp = requests.get(blob_url, headers=auth_headers)
resp.raise_for_status()
logging.info(f"Blob contains: {resp.text}")
def init():
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)
# For multiple models, it points to the folder containing all deployed models (./azureml-models)
# 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("Model loaded")
# Access Azure resource (Blob storage) using system assigned identity token
access_blob_storage_rest()
access_blob_storage_sdk()
logging.info("Init complete")
# note you can pass in multiple rows for scoring
def run(raw_data):
logging.info("Request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
Toto nasazení může trvat přibližně 8 až 14 minut v závislosti na tom, jestli se podkladové prostředí nebo image sestavují poprvé. Další nasazení používající stejné prostředí budou rychlejší.
az ml online-deployment create --endpoint-name $ENDPOINT_NAME --all-traffic --name blue --file endpoints/online/managed/managed-identities/2-sai-deployment.yml --set environment_variables.STORAGE_ACCOUNT_NAME=$STORAGE_ACCOUNT_NAME environment_variables.STORAGE_CONTAINER_NAME=$STORAGE_CONTAINER_NAME environment_variables.FILE_NAME=$FILE_NAME
Poznámka:
Hodnota argumentu --name může přepsat name klíč uvnitř souboru YAML.
Zkontrolujte stav nasazení.
az ml online-deployment show --endpoint-name $ENDPOINT_NAME --name blue
Pokud chcete výše uvedený dotaz upřesnit tak, aby vracel jenom konkrétní data, přečtěte si téma Dotazování výstupu příkazu Azure CLI.
Poznámka:
Inicializační metoda ve skriptu bodování načte soubor z vašeho účtu úložiště pomocí tokenu spravované identity přiřazeného systémem.
Pokud chcete zkontrolovat výstup inicializační metody, projděte si protokol nasazení s následujícím kódem.
# Check deployment logs to confirm blob storage file contents read operation success.
az ml online-deployment get-logs --endpoint-name $ENDPOINT_NAME --name blue
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/managed-identities/1-uai-create-endpoint.yml --set identity.user_assigned_identities[0].resource_id=$uai_id
Poznámka:
Hodnota argumentu --name může přepsat name klíč uvnitř souboru YAML.
Po spuštění příkazu můžete zkontrolovat stav nasazení.
az ml online-endpoint show --name $ENDPOINT_NAME
Pokud chcete výše uvedený dotaz upřesnit tak, aby vracel jenom konkrétní data, přečtěte si téma Dotazování výstupu příkazu Azure CLI.
# Check deployment logs to confirm blob storage file contents read operation success.
az ml online-deployment get-logs --endpoint-name $ENDPOINT_NAME --name blue
Poznámka:
Inicializační metoda ve skriptu bodování načte soubor z vašeho účtu úložiště pomocí tokenu spravované identity přiřazeného uživatelem.
Pokud chcete zkontrolovat výstup inicializační metody, projděte si protokol nasazení s následujícím kódem.
# Check deployment logs to confirm blob storage file contents read operation success.
az ml online-deployment get-logs --endpoint-name $ENDPOINT_NAME --name blue
Po dokončení nasazení se model, prostředí a koncový bod zaregistrují do vašeho pracovního prostoru Azure Machine Learning.
Testování koncového bodu
Po nasazení online koncového bodu otestujte a potvrďte její operaci pomocí požadavku. Podrobnosti odvozování se liší od modelu po model. V tomto průvodci vypadají parametry dotazu JSON takto:
Pokud nechcete dál používat nasazený online koncový bod a úložiště, odstraňte je, abyste snížili náklady. Když koncový bod odstraníte, odstraní se také všechna jeho přidružená nasazení.