使用線上端點部署和評分機器學習模型
本文內容
適用於: Azure CLI ml 延伸模組 v2 (目前) Python SDK azure-ai-ml v2 (目前)
在本文中,您將瞭解如何將模型部署至線上端點,以用於即時推斷。 首先,您將在本機電腦上部署模型,以針對任何錯誤執行偵錯。 接著,您將在 Azure 中部署及測試模型、檢視部署記錄,以及監視服務等級協定 (SLA)。 在本文結束時,您會擁有可用於即時推斷的可調整 HTTPS/REST 端點。
線上端點是用於即時推斷的端點。 線上端點有兩種類型:受控線上端點 和 Kubernetes 線上端點 。 若要進一步瞭解端點,以及受控線上端點與 Kubernetes 線上端點之間的差異,請參閱什麼是 Azure Machine Learning 端點?
受控線上端點可協助您以周全的方式部署機器學習模型。 受控線上端點會以可調整且完全受控的方式,在 Azure 中使用強大的 CPU 和 GPU 機器。 受控線上端點負責服務、調整、保護和監視您的模型,讓您免除設定和管理基礎結構的額外負荷。
本文件中的主要範例使用受控線上端點進行部署。 若要改為使用 Kubernetes,請參閱本文件中的附註與受控線上端點討論。
必要條件
適用於: Azure CLI ml 延伸模組 v2 (目前)
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您必須為使用者帳戶指派 Azure Machine Learning 工作區的擁有者 或參與者 角色,或允許 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
的自訂角色。 如果使用工作室來建立/管理線上端點/部署,則必須向資源群組擁有者要求額外的權限「Microsoft.Resources/deployments/write」。 如需詳細資訊,請參閱管理對 Azure Machine Learning 工作區的存取 。
(選擇性) 如要執行本機部署,您必須在本機電腦上安裝 Docker 引擎 。 強烈建議您使用 此選項,以更輕鬆地執行問題偵錯。
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。 試用免費或付費版本的 Azure Machine Learning 。
Azure Machine Learning 工作區和計算執行個體。 如果沒有這些資源且想加以建立,請使用快速入門:建立工作區資源 一文中的步驟。
Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您必須為使用者帳戶指派 Azure Machine Learning 工作區的擁有者 或參與者 角色,或允許 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
的自訂角色。 如需詳細資訊,請參閱管理對 Azure Machine Learning 工作區的存取 。
注意
雖然這些步驟會使用 Azure CLI 和適用於機器學習的 CLI 擴充功能,但這些項目不是主要焦點。 這些項目更多是作為公用程式,將範本傳遞至 Azure,並檢查範本部署狀態。
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您必須為使用者帳戶指派 Azure Machine Learning 工作區的擁有者 或參與者 角色,或允許 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
的自訂角色。 如需詳細資訊,請參閱管理對 Azure Machine Learning 工作區的存取 。
確保已為部署分配足夠的虛擬機器 (VM) 配額。 Azure Machine Learning 會保留 20% 的計算資源,以在部分 VM SKU 上執行升級。 例如,如果您在部署中要求 10 個執行個體,則必須為 VM SKU 的每個核心數量預留 12 個配額。 若無法預留額外計算資源,便會發生錯誤。 部分 VM SKU 不必額外保留配額。 如需配額配置的詳細資訊,請參閱部署的虛擬機器配額配置 。
另一方面,您可以在一定時間內使用 Azure Machine Learning 提供的共用配額集區。 Azure Machine Learning 提供共用配額集區,供不同區域的使用者根據可用性,在有限時間內存取配額並執行測試。
當使用工作室將 Llama-2、Phi、Nemotron、Mistral、Dolly 和 Deci-DeciLM 模型從模型目錄部署到受控線上端點時,您可暫時存取 Azure Machine Learning 共用配額集區,以便進行測試。 如需共用配額集區的詳細資訊,請參閱 Azure Machine Learning 共用配額 。
準備您的系統
設定環境變數
如果您尚未設定 Azure CLI 的預設值,請儲存您的預設設定。 如要避免多次傳遞訂閱、工作區和資源群組的值,請執行下列程式碼:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
複製範例存放庫
如要遵循本文,請先複製範例存放庫 (azureml-examples) 。 然後,執行下列程式碼以移至存放庫的 cli/
目錄:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
提示
使用 --depth 1
僅複製存放庫的最新認可,如此可縮短完成作業的時間。
本教學課程中的命令位於 cli
目錄的檔案 deploy-local-endpoint.sh
和 deploy-managed-online-endpoint.sh
中,而 YAML 設定檔則位於 endpoints/online/managed/sample/
子目錄中。
注意
Kubernetes 線上端點的 YAML 組態檔位於 endpoints/online/kubernetes/
子目錄中。
複製範例存放庫
若要執行訓練範例,請先複製範例存放庫 (azureml-examples) 並變更至 azureml-examples/sdk/python/endpoints/online/managed
目錄:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
提示
使用 --depth 1
僅複製存放庫的最新認可,如此可縮短完成作業的時間。
本文中的資訊是以 online-endpoints-simple-deployment.ipynb 筆記本為基礎。 其包含與本文相同的內容,雖然程式碼的順序稍有不同。
連線至 Azure Machine Learning 工作區
工作區 是 Azure Machine Learning 的最上層資源,其提供一個集中位置來處理您在使用 Azure Machine Learning 時建立的所有成品。 在本節中,您會連線至要執行部署工作的工作區。 若要跟著做,請開啟您的 online-endpoints-simple-deployment.ipynb
筆記本。
匯入必要的程式庫:
# 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
注意
如果您使用 Kubernetes 線上端點,請從 azure.ai.ml.entities
程式庫匯入 KubernetesOnlineEndpoint
和 KubernetesOnlineDeployment
類別。
設定工作區詳細資料,並取得工作區的控制代碼:
若要連線到工作區,則需要識別碼參數,包含訂用帳戶、資源群組和工作區名稱。 您將使用來自 azure.ai.ml
之 MLClient
中的詳細資料,以掌握所需的 Azure Machine Learning 工作區。 此範例會使用預設的 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
)
如果您已在本機電腦上安裝 Git,便可遵循指示複製範例存放庫。 否則,請遵循指示從範例存放庫中下載檔案。
複製範例存放庫
若要跟著本文進行,請先複製範例存放庫 (azureml-examples) (英文),然後變更至 azureml-examples/cli/endpoints/online/model-1
目錄。
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
提示
使用 --depth 1
僅複製存放庫的最新認可,如此可縮短完成作業的時間。
從範例存放庫下載檔案
如果您已複製範例存放庫,則本機電腦已經有此範例的檔案複本,因此您可以跳至下一節。 如果您未複製存放庫,則可以將其下載至本機電腦。
移至 https://github.com/Azure/azureml-examples/ 。
移至頁面上的 [<> 程式碼] 按鈕,然後從 [本機] 索引標籤選取 [下載 ZIP] 。
找到資料夾 /cli/endpoints/online/model-1/model
和檔案 /cli/endpoints/online/model-1/onlinescoring/score.py
。
設定環境變數
設定下列環境變數,因為本文的範例會使用這些變數。 將值取代為您的 Azure 訂用帳戶標識碼、工作區所在的 Azure 區域、包含工作區的資源群組,以及工作區名稱:
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"
有幾個範本範例會要求您將檔案上傳至工作區的 Azure Blob 存放區。 下列步驟會查詢工作區,並將此資訊儲存在範例所使用的環境變數中:
取得存取權杖:
TOKEN=$(az account get-access-token --query accessToken -o tsv)
設定 REST API 版本:
API_VERSION="2022-05-01"
取得儲存體資訊:
# Get values for storage account
response=$(curl --location --request GET "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices/workspaces/$WORKSPACE/datastores?api-version=$API_VERSION&isDefault=true" \
--header "Authorization: Bearer $TOKEN")
AZUREML_DEFAULT_DATASTORE=$(echo $response | jq -r '.value[0].name')
AZUREML_DEFAULT_CONTAINER=$(echo $response | jq -r '.value[0].properties.containerName')
export AZURE_STORAGE_ACCOUNT=$(echo $response | jq -r '.value[0].properties.accountName')
複製範例存放庫
如要遵循本文,請先複製範例存放庫 (azureml-examples) 。 然後,執行下列程式碼以移至範例目錄:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
提示
使用 --depth 1
僅複製存放庫的最新認可,如此可縮短完成作業的時間。
定義端點
若要定義線上端點,請指定 [端點名稱] 和 [驗證模式] 。 如需受控線上端點的詳細資訊,請參閱線上端點 。
設定端點名稱
若要設定端點名稱,請執行下列命令。 將 YOUR_ENDPOINT_NAME
替換為 Azure 區域中的唯一名稱。 如需命名規則的詳細資訊,請參閱端點限制 。
針對 Linux,請執行此命令:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
下列程式碼片段顯示 endpoints/online/managed/sample/endpoint.yml 檔案:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
下表說明端點 YAML 格式的參考。 若要了解如何指定這些屬性,請參閱線上端點 YAML 參考 。 如需有關受控端點相關限制的資訊,請參閱線上端點的限制 。
關鍵
描述
$schema
(選擇性) YAML 結構描述。 若要查看 YAML 檔案中的所有可用選項,您可以在瀏覽器內檢視上述程式碼片段中的結構描述。
name
端點的名稱。
auth_mode
使用 key
進行金鑰式驗證。 使用 aml_token
進行 Azure Machine Learning 權杖型驗證。 使用 aad_token
進行Microsoft Entra 權杖型驗證 (預覽)。 如需驗證的詳細資訊,請參閱驗證線上端點的用戶端 。
首先定義線上端點的名稱,接著設定端點。
端點名稱在 Azure 區域中必須是唯一的。 如需命名規則的詳細資訊,請參閱端點限制 。
# 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"
)
先前的程式碼以 key
進行金鑰式驗證。 若要使用 Azure Machine Learning 權杖型驗證,則請使用 aml_token
。 若要使用 Microsoft Entra 權杖型驗證 (預覽),請使用 aad_token
。 如需驗證的詳細資訊,請參閱驗證線上端點的用戶端 。
從工作室部署至 Azure 時,您會建立端點以及要新增至該端點的部署。 屆時,系統會提示您提供端點和部署的名稱。
定義部署
部署是託管執行實際推斷模型所需的一組資源。 在此範例中,您將部署可執行迴歸得 SciKit-Learn 模型,並使用評分指令碼 score.py 根據指定的輸入要求執行此模型。
若要深入瞭解部署的主要屬性,請參閱線上部署 。
部署設定會使用您想要部署之模型所在的位置。
下列程式碼片段顯示 endpoints/online/managed/sample/blue-deployment.yml 檔案,以及所有要設定部署所需的輸入:
blue-deployment.yml
$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-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
blue-deployment.yml 檔案會指定下列部署屬性:
model
- 使用 path
(上傳檔案來源) 來指定內嵌模型屬性。 CLI 會自動上傳模型檔案,並以自動產生的名稱登錄模型。
environment
- 使用包含上傳檔案來源的內嵌定義,而 CLI 會自動上傳 conda.yaml
檔案並登錄環境。 接著,若要建置環境,部署會使用 image
(在本範例中為 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
) 作為基礎映像,且將 conda_file
相依項目安裝於基礎映像之上。
code_configuration
- 在部署期間,會從開發環境上傳本機檔案,例如評分模型的 Python 來源。
如需關於 YAML 結構描述的詳細資訊,請參閱線上端點 YAML 參考 。
注意
若要以 Kubernetes 端點而非受控線上端點做為計算目標,則必須:
使用 Azure Machine Learning 工作室 建立 Kubernetes 叢集做為計算目標,並將其連結至 Azure Machine Learning 工作區。
使用端點 YAML ,將目標設為 Kubernetes 而非受控端點 YAML。 您必須編輯 YAML,以將 compute
的值變更為已登錄的計算目標名稱。 您可使用此 deployment.yaml ,其具有適用於 Kubernetes 部署的額外屬性。
本文中針對受控線上端點所使用的所有命令,皆適用於 Kubernetes 端點,但下列功能並不適用於 Kubernetes 端點:
若要設定部署:
model = Model(path="../model-1/model/sklearn_regression_model.pkl")
env = Environment(
conda_file="../model-1/environment/conda.yaml",
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
Model
- 使用 path
(上傳檔案來源) 來指定內嵌模型屬性。 SDK 會自動上傳模型檔案,並以自動產生的名稱登錄模型。
Environment
- 使用包含上傳檔案來源的內嵌定義,而 SDK 會自動上傳 conda.yaml
檔案並登錄環境。 接著,若要建置環境,部署會使用 image
(在本範例中為 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
) 作為基礎映像,且將 conda_file
相依項目安裝於基礎映像之上。
CodeConfiguration
- 在部署期間,會從開發環境上傳本機檔案,例如評分模型的 Python 來源。
如需線上部署定義的詳細資訊,請參閱 OnlineDeployment 類別 。
在部署至 Azure 時,您會建立端點以及要新增至該端點的部署。 屆時,系統會提示您提供端點和部署的名稱。
瞭解評分指令碼
提示
適用於線上端點的評分指令碼格式,與先前版本的 CLI 和 Python SDK 中使用的格式相同。
code_configuration.scoring_script
中指定的評分指令碼必須具有 init()
函式與 run()
函式。
評分指令碼必須具有 init()
函式與 run()
函式。
評分指令碼必須具有 init()
函式與 run()
函式。
評分指令碼必須具有 init()
函式與 run()
函式。 本文將使用 score.py file 。
使用範本進行部署時,您必須先將評分檔案上傳至 Azure Blob 存放區,然後加以註冊:
下列程式碼會使用 Azure CLI 命令 az storage blob upload-batch
來上傳評分檔案:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
下列程式碼會使用範本來登錄程式碼:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
此範例使用 score.py file :score.py
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()
初始化或啟動容器時,會呼叫 init()
函式。 初始化作業通常會在建立或更新部署後立即執行。 init
函式可用來撰寫全域初始化作業的邏輯,例如在記憶體中快取模型 (如同此 score.py 檔案中所示)。
每次叫用端點時都會呼叫 run()
函式,由此函式執行實際的評分和預測。 在此 score.py 檔案中,run()
函式會從 JSON 輸入擷取資料、呼叫 SciKit-Learn 學習模型的 predict()
方法,然後傳回預測結果。
使用本機端點在本機執行部署和偵錯
我們強烈建議 您先在本機藉由驗證和偵錯程式碼與設定以測試執行端點,再將端點部署至 Azure。 Azure CLI 和 Python SDK 支援本機端點和部署,Azure Machine Learning 工作室和 ARM 範本則不支援。
若要在本機部署,就必須安裝和執行 Docker 引擎 。 Docker 引擎通常會在電腦啟動時啟動。 若未啟動,您可針對 Docker 引擎進行疑難排解 。
如需首先本機偵錯線上端點,再部署至 Azure 的詳細資訊,請參閱線上端點偵錯 。
在本機部署模型
先建立端點。 (選擇性) 針對本機端點,您可以跳過此步驟,並直接在下一個步驟中建立部署,這會接著建立必要的中繼資料。 在本機部署模型適用於開發和測試用途。
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
ml_client.online_endpoints.begin_create_or_update(endpoint, local=True)
工作室不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
範本不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
現在,請在端點下方建立名為 blue
的部署。
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
--local
旗標會指示 CLI 在 Docker 環境中部署端點。
ml_client.online_deployments.begin_create_or_update(
deployment=blue_deployment, local=True
)
local=True
旗標會引導 SDK 在 Docker 環境中部署端點。
工作室不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
範本不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
確認本機部署成功
檢查部署狀態,查看是否已部署模型,且未發生錯誤:
az ml online-endpoint show -n $ENDPOINT_NAME --local
輸出應如下列 JSON 所示: provisioning_state
是 Succeeded
。
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
ml_client.online_endpoints.get(name=endpoint_name, local=True)
該方法會傳回ManagedOnlineEndpoint
實體 。 provisioning_state
是 Succeeded
。
ManagedOnlineEndpoint({'public_network_access': None, 'provisioning_state': 'Succeeded', 'scoring_uri': 'http://localhost:49158/score', 'swagger_uri': None, 'name': 'endpt-10061534497697', 'description': 'this is a sample endpoint', 'tags': {}, 'properties': {}, 'id': None, 'Resource__source_path': None, 'base_path': '/path/to/your/working/directory', 'creation_context': None, 'serialize': <msrest.serialization.Serializer object at 0x7ffb781bccd0>, 'auth_mode': 'key', 'location': 'local', 'identity': None, 'traffic': {}, 'mirror_traffic': {}, 'kind': None})
工作室不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
範本不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
下表包含 provisioning_state
的可能值:
值
Description
建立中
正在建立資源。
更新中
正在更新資源。
刪除中
正在刪除資源。
已成功
建立/更新作業成功。
失敗
建立/更新/刪除作業失敗。
使用您的模型叫用本機端點以評分資料
使用 invoke
命令並傳遞儲存在 JSON 檔案中的查詢參數,以叫用端點為模型評分:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
若您想要使用 REST 用戶端 (例如 curl),您必須具有評分 URI。 如要取得評分 URI,請執行 az ml online-endpoint show --local -n $ENDPOINT_NAME
。 在傳回的資料中,尋找 scoring_uri
屬性。
使用 invoke
命令並傳遞儲存在 JSON 檔案中的查詢參數,以叫用端點為模型評分。
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
request_file="../model-1/sample-request.json",
local=True,
)
若您想要使用 REST 用戶端 (例如 curl),您必須具有評分 URI。 若要取得評分 URI,請執行下列程式碼。 在傳回的資料中,尋找 scoring_uri
屬性。
endpoint = ml_client.online_endpoints.get(endpoint_name, local=True)
scoring_uri = endpoint.scoring_uri
工作室不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
範本不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
檢閱記錄以取得叫用作業的輸出
在範例 score.py 檔案中,run()
方法會將某些輸出記錄至主控台。
您可以使用 get-logs
命令來檢視此輸出:
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
您可以使用 get_logs
方法來檢視此輸出:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, local=True, lines=50
)
工作室不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
範本不支援本機端點。 如需在本機測試端點的步驟,請參閱 [Azure CLI] 或 [Python] 索引標籤。
將線上端點部署至 Azure
接下來,將線上端點部署至 Azure。 就最佳生產做法而言,我們建議您登錄將在部署中使用的模型和環境。
登錄模型和環境
我們建議先登錄模型和環境再部署至 Azure,以便在部署期間指定已登錄的名稱與版本。 透過登錄資產,您便能重複使用資產,不必於每次建立部署時再度上傳,藉此提升重現性和可追蹤性。
注意
與部署至 Azure 不同,本機部署不支援使用已登錄的模型與環境。 本機部署僅支援使用本機模型檔案,以及具有本機檔案的環境。
若要部署至 Azure,您可以使用本機或已登錄的資產 (模型與環境)。 在本文中,此節將利用已註冊的資產部署至 Azure,但您也能選擇使用本機資產。 如需有關可上傳本機檔案,以進行本機部署的部署設定範例,請參閱設定部署 。
若要登錄模型和環境,請使用 model: azureml:my-model:1
或 environment: azureml:my-env:1
格式。
註冊時,您可將 model
和 environment
的 YAML 定義擷取至個別的 YAML 檔案,並使用 az ml model create
與 az ml environment create
命令。 如要深入瞭解這些命令,請執行 az ml model create -h
和 az ml environment create -h
。
為模型建立 YAML 定義:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: my-model
path: ../../model-1/model/
註冊模型:
az ml model create -n my-model -v 1 -f ./model.yaml
為環境建立 YAML 定義:
$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
登錄環境:
az ml environment create -n my-env -v 1 -f ./environment.yaml
如需將模型註冊為資產的詳細資訊,請參閱使用 CLI 在 Machine Learning 中將模型註冊為資產 (部分機器翻譯)。 如需建立環境的詳細資訊,請參閱使用 CLI & SDK 管理 Azure Machine Learning 環境 (v2) (部分機器翻譯)。
註冊模型
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)
登錄環境:
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)
若要深入瞭解如何將模型登錄為資產,以在部署期間指定已登錄的名稱與版本,請參閱使用 SDK 在 Machine Learning 中將模型登錄為資產 。
如需建立環境的詳細資訊,請參閱使用 CLI 和 SDK (v2) 管理 Azure Machine Learning 環境 。
註冊模型
模型註冊是工作區中可能包含單一模型檔案的邏輯實體,或是多個檔案的目錄。 就生產最佳做法而言,您應註冊模型和環境。 在本文中,建立端點和部署前必須登錄包含模型的模型資料夾 。
若要註冊範例模型,請遵循下列步驟:
移至 Azure Machine Learning Studio 。
在左側導覽列,選取 [模型] 頁面。
選取 [註冊] ,然後選擇 [從本機檔案] 。
針對 [模型類型] 選取 [未指定類型] 。
選取 [瀏覽] ,然後選擇 [瀏覽資料夾] 。
從您稍早所複製或所下載存放庫的本機複本中選取 \azureml-examples\cli\endpoints\online\model-1\model
資料夾。 出現提示時,選取 [上傳] ,然後等候上傳完成。
資料夾上傳完成後,選取 [下一步] 。
為模型輸入易記名稱 。 本文中的步驟假設模型名為 model-1
。
選取 [下一步] ,然後選取 [註冊] 以完成註冊。
如需使用已註冊模型的詳細資訊,請參閱註冊和使用模型 。
建立並登錄環境
在左側瀏覽列,選取 [環境] 頁面。
選取 建立 。
在 [設定] 頁面上為環境提供名稱,如 my-env
。
針對 [選取環境來源] 選擇 [搭配選用 Conda 來源使用現有的 Docker 映射] 。
選取 [下一步] 以前往 [自訂] 頁面。
從稍早所複製或下載之存放庫的本機複本中,複製 \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml
檔案的內容。
將內容貼到文字輸入框中。
選取 [下一步] ,直到到達 [檢閱] 頁面為止。
選取 [建立] 。
若想深入瞭解如何在工作室建立環境,請參閱建立環境 。
若要使用範本來註冊模型,您必須先將模型檔案上傳至 Azure Blob 存放區。 下列範例會使用 az storage blob upload-batch
命令將檔案上傳至工作區的預設儲存體:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
上傳檔案後,使用範本來建立模型註冊。 在下列範例中,modelUri
參數包含模型的路徑:
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"
環境的其中一部分是 conda 檔案,此檔案會指定要裝載模型所需的模型相依性。 下列範例示範如何將 conda 檔案的內容讀到環境變數內:
CONDA_FILE=$(cat cli/endpoints/online/model-1/environment/conda.yaml)
下列範例示範如何使用範本來註冊環境。 來自上一個步驟的 conda 檔案內容會透過 condaFile
參數傳遞至範本:
ENV_VERSION=$RANDOM
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/environment-version.json \
--parameters \
workspaceName=$WORKSPACE \
environmentAssetName=sklearn-env \
environmentAssetVersion=$ENV_VERSION \
dockerImage=mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210727.v1 \
condaFile="$CONDA_FILE"
您的部署設定會使用要部署之已登錄模型和環境。
在部署定義中使用已登錄的資產 (模型和環境)。 下列程式碼片段會顯示 endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
檔案,其中會包含所有設定部署所需的輸入:
blue-deployment-with-registered-assets.yml
$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
若要設定部署,請使用已登錄的模型和環境:
model = "azureml:my-model:1"
env = "azureml:my-env:1"
blue_deployment_with_registered_assets = ManagedOnlineDeployment(
name="blue",
endpoint_name=endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="../model-1/onlinescoring", scoring_script="score.py"
),
instance_type="Standard_DS3_v2",
instance_count=1,
)
從工作室進行部署,您會建立端點以及要新增至該端點的部署。 屆時,系統會提示您提供端點和部署的名稱。
使用不同的 CPU 和 GPU 執行個體類型和映像
您可以在部署定義中,向本機部署和針對 Azure 的部署指定 CPU 或 GPU 執行個體類型和映像。
您在 blue-deployment-with-registered-assets.yml 檔案中的部署定義使用了一般用途類型 Standard_DS3_v2
執行個體和非 GPU Docker 映像 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
。 針對 GPU 計算,請選擇 GPU 計算類型 SKU 和 GPU Docker 映像。
如需支援的一般用途和 GPU 執行個體類型,請參閱支援受控線上端點的 VM SKU 。 如需 Azure Machine Learning CPU 和 GPU 基礎映像的清單,請參閱Azure Machine Learning 基礎映像 (英文)。
您可以在部署設定中,向本機部署與針對 Azure 的部署指定 CPU 或 GPU 執行個體類型與映像。
稍早,您已設定了部署,且其使用一般用途類型 Standard_DS3_v2
執行個體和非 GPU Docker 映像 mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
。 針對 GPU 計算,請選擇 GPU 計算類型 SKU 和 GPU Docker 映像。
如需支援的一般用途和 GPU 執行個體類型,請參閱支援受控線上端點的 VM SKU 。 如需 Azure Machine Learning CPU 和 GPU 基礎映像的清單,請參閱Azure Machine Learning 基礎映像 (英文)。
上述環境註冊會藉由使用 dockerImage
參數將值傳遞至 environment-version.json
範本,來指定非 GPU Docker 映像 mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04
。 若要進行 GPU 計算,請將 GPU Docker 映像的值提供給範本 (使用 dockerImage
參數),並將 GPU 計算類型 SKU 提供給 online-endpoint-deployment.json
範本 (使用 skuName
參數)。
如需支援的一般用途和 GPU 執行個體類型,請參閱支援受控線上端點的 VM SKU 。 如需 Azure Machine Learning CPU 和 GPU 基礎映像的清單,請參閱Azure Machine Learning 基礎映像 (英文)。
接下來,將線上端點部署至 Azure。
部署至 Azure
在 Azure 雲端建立端點。
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
在端點下建立名為 blue
的部署。
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
建立部署可能需要最多約 15 分鐘的時間,視基礎環境或映像是否為第一次建置而定。 後續若使用相同環境進行部署,將會更快完成。
提示
若您不想封鎖 CLI 主控台,可將旗標 --no-wait
新增至命令。 不過,此選項會停止以互動方式顯示部署狀態。
重要
用於建立部署之程式碼 az ml online-deployment create
中的 --all-traffic
旗標,會將 100% 的端點流量配置到新建立的藍色部署。 雖然這對開發和測試用途很實用,但在生產環境中,您可能會想要透過明確命令來路由傳送新部署的流量。 例如: az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
。
建立端點:
透過稍早定義的 endpoint
和稍早建立的 MLClient
,您現在可以在工作區中建立端點。 此命令會啟動端點建立,並在端點建立繼續時傳回確認回應。
ml_client.online_endpoints.begin_create_or_update(endpoint)
建立部署:
透過稍早定義的 blue_deployment_with_registered_assets
和稍早建立的 MLClient
,您現在可以在工作區中建立部署。 此命令會啟動部署建立,並在部署建立繼續時傳回確認回應。
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
提示
若您不想封鎖 Python 主控台,則可將旗標 no_wait=True
新增至參數。 不過,此選項會停止以互動方式顯示部署狀態。
# blue deployment takes 100 traffic
endpoint.traffic = {"blue": 100}
ml_client.online_endpoints.begin_create_or_update(endpoint)
建立受控線上端點和部署
使用工作室直接在瀏覽器中建立受控線上端點。 在工作室建立受控線上端點時,您必須定義初始部署。 您無法建立空的受控線上端點。
在工作室中建立受控線上端點的其中一種方式是從 [模型] 頁面。 此方法也提供將模型新增至現有受控線上部署的簡單方法。 若要部署先前在登錄模型與環境 一節中所登錄,且名為 model-1
的模型,您必須:
移至 Azure Machine Learning Studio 。
在左側導覽列,選取 [模型] 頁面。
選取名為 model-1
的模型,方法是核取模型名稱旁的圓圈。
選取 [部署] >[即時端點] 。
此動作會開啟一個視窗,您可以在其中指定端點的詳細資料。
輸入 [端點名稱] ,且其必須在 Azure 區域中是唯一的。 如需命名規則的詳細資訊,請參閱端點限制 。
針對計算類型,保留預設的選取項目 [受控] 。
針對驗證類型,保留預設的選取項目 [金鑰型驗證] 。 如需驗證的詳細資訊,請參閱驗證線上端點的用戶端 。
選取 [下一步] ,直到到達 [部署] 頁面。 在這裡,將 [Application Insights 診斷] 切換為 [已啟用],以便稍後能在工作室中檢視端點活動圖表,並使用 Application Insights 分析計量和記錄。
選取 [下一步] 以前往 [程式碼 + 環境] 頁面。 在這裡,選取下列選項:
[選取用於推斷的評分指令碼] :從稍早複製或下載的存放庫中瀏覽並選取 \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py
檔案。
[選取環境] 區段:選取 [自訂環境] ,接著選取先前所建立的 my-env:1 環境。
選取 [下一步] ,接受預設值,直到系統提示您建立部署為止。
檢閱部署設定,然後選取 [建立] 按鈕。
或者,您也可以從工作室中的 [端點] 頁面建立受控線上端點。
移至 Azure Machine Learning Studio 。
在左側導覽列,選取 [端點] 頁面。
選取 + 建立 。
此動作會開啟視窗,供您選取模型,並指定端點和部署的詳細資料。 根據先前所述,輸入端點和部署的設定,並選取 [建立] 來建立部署。
使用範本以建立線上端點:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint.json \
--parameters \
workspaceName=$WORKSPACE \
onlineEndpointName=$ENDPOINT_NAME \
identityType=SystemAssigned \
authMode=AMLToken \
location=$LOCATION
建立端點後,將模型部署至端點:
resourceScope="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.MachineLearningServices"
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/online-endpoint-deployment.json \
--parameters \
workspaceName=$WORKSPACE \
location=$LOCATION \
onlineEndpointName=$ENDPOINT_NAME \
onlineDeploymentName=blue \
codeId="$resourceScope/workspaces/$WORKSPACE/codes/score-sklearn/versions/1" \
scoringScript=score.py \
environmentId="$resourceScope/workspaces/$WORKSPACE/environments/sklearn-env/versions/$ENV_VERSION" \
model="$resourceScope/workspaces/$WORKSPACE/models/sklearn/versions/1" \
endpointComputeType=Managed \
skuName=Standard_F2s_v2 \
skuCapacity=1
若要針對部署中的錯誤進行偵錯,請參閱疑難排解線上端點部署 。
檢查端點的狀態
使用 show
命令,在 provisioning_state
中顯示端點與部署的資訊:
az ml online-endpoint show -n $ENDPOINT_NAME
使用 list
命令,以資料表格式列出工作區中的所有端點:
az ml online-endpoint list --output table
檢查端點狀態,查看是否已部署模型,且未發生錯誤:
ml_client.online_endpoints.get(name=endpoint_name)
使用 list
方法,以資料表格式列出工作區中的所有端點:
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
此方法會傳回 ManagedOnlineEndpoint
實體的清單 (迭代器)。
您可以藉由指定更多參數 來取得其他資訊。 例如,輸出類似資料表的端點清單:
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}")
檢視受控線上端點
您可以在 [端點] 頁面中檢視所有受控線上端點。 移至端點的 [詳細資料] 頁面來尋找重要資訊,包括端點 URI、狀態、測試工具、活動監視器、部署記錄和樣本取用程式碼:
在左側導覽列,選取 [端點] 。 在這裡,您可以查看工作區中所有端點的清單。
(選用) 在 [計算類型] 上建立 [篩選條件] ,以只顯示 [受控] 計算類型。
選取端點名稱以檢視端點的 [詳細資料] 頁面。
提示
雖然範本對於資源的部署很有用,但範本無法用來列出、顯示或叫用資源。 使用 Azure CLI、Python SDK 或工作室來執行這些作業。 下列程式碼使用 Azure CLI。
使用 show
命令,在 provisioning_state
中顯示端點與部署的資訊:
az ml online-endpoint show -n $ENDPOINT_NAME
使用 list
命令,以資料表格式列出工作區中的所有端點:
az ml online-endpoint list --output table
檢查線上部署的狀態
檢查記錄查看是否已部署模型,且未發生錯誤。
若要查看容器的記錄輸出,請使用下列 CLI 命令:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
根據預設,系統會從推斷伺服器容器中提取記錄。 若要查看儲存體初始設定式容器中的記錄,請新增 --container storage-initializer
旗標。 如需部署記錄的詳細資訊,請參閱取得容器記錄 。
您可以使用 get_logs
方法來檢視記錄輸出:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
根據預設,系統會從推斷伺服器容器中提取記錄。 若要查看儲存體初始設定式容器中的記錄,請新增 container_type="storage-initializer"
選項。 如需部署記錄的詳細資訊,請參閱取得容器記錄 。
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50, container_type="storage-initializer"
)
若要檢視記錄輸出,請在端點頁面中選取 [記錄] 索引標籤。 如果您在端點中有多個部署,請使用下拉式清單來選取您想要查看其記錄的部署。
根據預設,系統會從推斷伺服器中提取記錄。 若要查看儲存體初始設定式容器中的記錄,請使用 Azure CLI 或 Python SDK (請查看各個索引標籤以取得詳細資訊)。 儲存體初始設定式容器中的記錄會提供是否已成功將程式碼和模型資料下載至容器的資訊。 如需部署記錄的詳細資訊,請參閱取得容器記錄 。
提示
雖然範本對於資源的部署很有用,但範本無法用來列出、顯示或叫用資源。 使用 Azure CLI、Python SDK 或工作室來執行這些作業。 下列程式碼使用 Azure CLI。
若要查看容器的記錄輸出,請使用下列 CLI 命令:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
根據預設,系統會從推斷伺服器容器中提取記錄。 若要查看儲存體初始設定式容器中的記錄,請新增 --container storage-initializer
旗標。 如需部署記錄的詳細資訊,請參閱取得容器記錄 。
使用模型叫用端點以評分資料
使用 invoke
命令或您所選的 REST 用戶端,來叫用端點並為部分資料評分:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
取得用來驗證端點的金鑰:
提示
您可以將 Microsoft Entra 安全性主體指派給允許 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
和 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
的自訂角色,藉以控制哪些主體可取得驗證金鑰。 如需管理工作區授權的詳細資訊,請參閱管理 Azure Machine Learning 的存取權 。
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
使用 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
請注意,您須使用 show
和 get-credentials
命令來取得驗證認證。 另請注意,您使用的是 --query
旗標,只會篩選出所需的屬性。 如要深入瞭解 --query
旗標,請參閱查詢 Azure CLI 命令輸出 。
如要查看叫用記錄,請再次執行 get-logs
。
使用稍早建立的 MLClient
,取得端點的控制代碼。 接著可以使用 invoke
命令,搭配下列參數來叫用端點:
endpoint_name
- 端點的名稱
request_file
- 具有要求資料的檔案
deployment_name
- 在端點中測試的特定部署名稱
使用 json 檔案傳送範例要求。
# 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",
)
使用端點詳細資料頁面中的 [測試] 索引標籤,以測試受控線上部署。 輸入樣本輸入並檢視結果。
在端點的詳細資料頁面中選取 [測試] 索引標籤。
使用下拉式清單選取您要測試的部署。
輸入樣本輸入 。
選取 [測試]。
提示
雖然範本對於資源的部署很有用,但範本無法用來列出、顯示或叫用資源。 使用 Azure CLI、Python SDK 或工作室來執行這些作業。 下列程式碼使用 Azure CLI。
使用 invoke
命令或您所選的 REST 用戶端,來叫用端點並為部分資料評分:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
(選擇性) 更新部署
若您想要更新程式碼、模型或環境,請更新 YAML 檔案,然後執行 az ml online-endpoint update
命令。
注意
若您在單一 update
命令中更新執行個體計數 (以縮放部署) 以及其他模型設定 (例如程式碼、模型或環境),系統會先執行縮放作業,然後再套用其他更新。 在生產環境中,最好是個別執行這些作業。
瞭解 update
如何運作:
開啟 online/model-1/onlinescoring/score.py 檔案。
變更 init()
函式的最後一行:在 logging.info("Init complete")
後方新增 logging.info("Updated successfully")
。
儲存檔案。
執行此命令:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
注意
使用 YAML 進行更新為宣告式。 也就是說,YAML 中的變更會反映在基礎 Azure Resource Manager 資源 (端點和部署)。 宣告式方法可輔助 GitOps :所有 的端點與部署變更 (甚至是 instance_count
)皆會經過 YAML。
提示
您可以搭配使用泛型更新參數 (例如 --set
參數) 與 CLI update
命令,來覆寫 YAML 中的屬性,或 設定特定屬性,而不需要在 YAML 檔案中傳遞這些屬性。 在開發和測試案例中,針對單一屬性使用 --set
特別有用。 例如,若要擴大第一個部署的 instance_count
值,您可以使用 --set instance_count=2
旗標。 不過,由於 YAML 並未更新,此技巧無法輔助 GitOps 。
不一定要指定 YAML 檔案。 例如,如果您要針對指定的部署測試不同的並行設定,則可以嘗試使用 az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4
之類的命令。 這麼做會保留所有現有設定,只更新指定的參數。
由於您已修改 init()
函式 (會在建立或更新端點時執行),因此訊息 Updated successfully
會出現在記錄中。 藉由執行下列動作來擷取記錄:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
此 update
命令亦適用於本機部署。 使用相同的 az ml online-deployment update
命令搭配 --local
旗標。
如果您想要更新程式碼、模型或環境,請更新設定,然後執行 MLClient
的 online_deployments.begin_create_or_update
方法以建立或更新部署 。
注意
若您在單一 begin_create_or_update
方法中更新執行個體計數 (以縮放部署) 以及其他模型設定 (例如程式碼、模型或環境),系統會先執行縮放作業,然後再套用其他更新。 在生產環境中,最好是個別執行這些作業。
瞭解 begin_create_or_update
如何運作:
開啟 online/model-1/onlinescoring/score.py 檔案。
變更 init()
函式的最後一行:在 logging.info("Init complete")
後方新增 logging.info("Updated successfully")
。
儲存檔案。
請執行 方法:
ml_client.online_deployments.begin_create_or_update(blue_deployment_with_registered_assets)
由於您已修改 init()
函式 (會在建立或更新端點時執行),因此訊息 Updated successfully
會出現在記錄中。 藉由執行下列動作來擷取記錄:
ml_client.online_deployments.get_logs(
name="blue", endpoint_name=endpoint_name, lines=50
)
begin_create_or_update
方法亦適用於本機部署。 使用相同的方法搭配 local=True
旗標。
工作室目前可讓您只對部署的執行個體計數進行更新。 根據下列指示,調整執行個體的數目來擴大或縮小個別部署:
開啟端點的 [詳細資料] 頁面,並尋找所要更新部署的卡片。
選取部署名稱旁的編輯圖示 (鉛筆圖示)。
更新與部署相關聯的執行個體計數。 針對 [部署縮放類型],您可以選擇 [預設] 或 [目標使用率] 。
如果您選取 [預設] ,則也可以為 [執行個體計數] 指定數值。
如果您選取 [目標使用率] ,則可以指定要在自動縮放部署時用於參數的值。
選取 [更新] 以完成部署的執行個體計數更新。
注意
本節中的部署更新是就地輪流更新的範例。
針對受控線上端點,部署一次會將 20% 的節點更新為新的設定。 也就是說,若部署有 10 個節點,則一次只會更新 2 個節點。
針對 Kubernetes 線上端點,系統會使用新的設定逐一建立新部署執行個體,並刪除舊的部署執行個體。
針對生產環境的使用方式,您應考慮藍綠部署 ,其為更新 Web 服務提供了更安全的替代方案。
自動調整會自動執行正確的資源量,以處理應用程式的負載。 受控線上端點透過與 Azure 監視器自動調整功能的整合,支援自動調整。 如要設定自動調整,請參閱如何自動調整線上端點 。
(選擇性) 使用 Azure 監視器監視 SLA
如要根據您的 SLA 來檢視計量和設定警示,請完成監視線上端點 中所述的步驟。
(選擇性) 與記錄分析整合
CLI 的 get-logs
命令或 SDK 的 get_logs
方法只會從自動選取的執行個體提供過去數百行的記錄。 不過,記錄分析會提供一種方式來永久儲存和分析記錄。 如需使用記錄功能的詳細資訊,請參閱監視線上端點 。
刪除端點和部署
刪除端點及其所有基礎部署:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
刪除端點及其所有基礎部署:
ml_client.online_endpoints.begin_delete(name=endpoint_name)
刪除端點及其所有基礎部署:
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
相關內容