使用線上端點部署和評分機器學習模型
本文內容
適用於: Azure CLI ml 延伸模組 v2 (目前) Python SDK azure-ai-ml v2 (目前)
在本文中,您將瞭解如何將模型部署至在線端點,以用於即時推斷。 您一開始會在本機計算機上部署模型,以偵錯任何錯誤。 然後,您會在 Azure 中部署及測試模型、檢視部署記錄,以及監視服務等級協定 (SLA)。 在本文結束時,您會擁有可用於即時推斷的可調整 HTTPS/REST 端點。
線上端點是用於即時推斷的端點。 線上端點有兩種類型:受控線上端點 和 Kubernetes 線上端點 。 如需受控在線端點與 Kubernetes 在線端點之間差異的詳細資訊,請參閱什麼是 Azure 機器學習 端點 ?
受控線上端點可協助您以周全的方式部署機器學習模型。 受控線上端點會以可調整且完全受控的方式,在 Azure 中使用強大的 CPU 和 GPU 機器。 受控線上端點負責服務、調整、保護和監視您的模型,讓您免除設定和管理基礎結構的額外負荷。
本文件中的主要範例使用受控線上端點進行部署。 若要改為使用 Kubernetes,請參閱本文件中的附註與受控線上端點討論。
必要條件
適用於: Azure CLI ml 延伸模組 v2 (目前)
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
Azure 角色型存取控制 (Azure RBAC) 可用來授與 Azure Machine Learning 作業的存取權。 若要執行本文中的步驟,您必須為使用者帳戶指派 Azure Machine Learning 工作區的擁有者 或參與者 角色,或允許 Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
的自訂角色。 如果您使用 Studio 來建立/管理在線端點/部署,您需要資源群組擁有者的額外許可權“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 機器學習 保留 20% 的計算資源,以在某些 VM SKU 上執行升級。 例如,如果您在部署中要求 10 個實例,則 VM SKU 的每個核心數目都必須有 12 個配額。 無法考慮額外的計算資源會導致錯誤。 有一些 VM SKU 可免除額外的配額保留。 如需配額配置的詳細資訊,請參閱 部署的 虛擬機配額配置。
或者,您可以使用 Azure 機器學習 共用配額集區的配額一段時間。 用戶可以從此集區存取配額,以在有限的時間內執行測試。 當您使用 Studio 將 Llama-2、Phi、Nemotron、Mistral、Dolly 和 Deci-DeciLM 模型從模型目錄部署到受控在線端點時,Azure 機器學習 可讓您短暫存取其共用配額集區,以便執行測試。 如需共用配額集區的詳細資訊,請參閱 Azure 機器學習 共用配額 。
準備您的系統
設定環境變數
如果您尚未設定 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
類別。
設定工作區詳細資料,並取得工作區的控制代碼:
若要連線到工作區,您需要標識元參數 - 訂用帳戶、資源群組和工作區名稱。 您可以使用 中的MLClient
azure.ai.ml
這些詳細數據,取得所需 Azure 機器學習 工作區的句柄。 此範例會使用預設的 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
。 如需驗證的詳細資訊,請參閱 驗證在線端點的 用戶端。
當您從 Studio 部署至 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 檔案 。
使用範本進行部署時,您必須先將評分檔案上傳至 Azure Blob 存放區,然後加以註冊:
下列程式代碼會使用 Azure CLI 命令 az storage blob upload-batch
來上傳評分檔案(s):
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 將模型註冊為 機器學習 中的資產。
如需建立環境的詳細資訊,請參閱使用 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
。
將內容貼到文字框中。
選取 [下一步 ],直到您進入 [檢閱] 頁面為止。
選取 [建立] 。
如需在 Studio 中建立環境的詳細資訊,請參閱 建立環境 。
若要使用範本來註冊模型,您必須先將模型檔案上傳至 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,
)
當您從 Studio 部署時,您將建立端點和要新增至該端點的部署。 屆時,系統會提示您提供端點和部署的名稱。
使用不同的 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 基礎映像 (英文)。
您可以在部署組態中指定CPU或 GPU 實例類型和映像,以進行本機部署和部署至 Azure。
稍早,您已設定使用一般用途類型 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
新增至命令。 不過,此選項將會停止部署狀態的互動式顯示。
重要
--all-traffic
用來建立部署的程式代碼az ml online-deployment create
旗標會配置 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 機器學習 工作區 的存取權。
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
相關內容