如何將 AutoML 模型部署到線上端點
本文內容
適用於: Azure CLI ml 延伸模組 v2 (目前) Python SDK azure-ai-ml v2 (目前)
在本文中,您將瞭解如何將 AutoML 訓練的機器學習模型部署到線上即時推斷端點。 自動化機器學習 (亦稱為自動化 ML 或 AutoML) 是將機器學習模型開發中耗時的反覆工作自動化的流程。 如需詳細資訊,請參閱 什麼是自動化機器學習 (AutoML)?
在下列各節中,您將瞭解如何使用下列方式將 AutoML 訓練機器學習模型部署到線上端點:
Azure Machine Learning Studio
Azure Machine Learning CLI v2
第 2 版 Azure Machine Learning Python SDK
必要條件
從 Azure Machine Learning 工作室進行部署且不需要程式碼
從自動化 ML 頁面部署 AutoML 訓練的模型無需使用到程式碼。 也就是說,您不需要準備評分指令碼和環境,因為兩者都會自動產生。
在 Azure Machine Learning 工作室中,前往 [自動化 ML ] 頁面。
選取您的實驗並執行。
選擇 [模型 + 子作業] 索引標籤 。
選取您想要部署的模型。
選取模型之後,下拉功能表會提供 [部署 ] 按鈕。
選取 [即時端點 ] 選項。
系統會產生部署所需的模型和環境。
從工作室或命令列手動部署
如果您想要更充分掌控部署,您可以下載訓練成品並加以部署。
若要下載元件,您需要部署:
前往您的自動化 ML 實驗,並在您的機器學習工作區中執行。
選擇 [模型 + 子作業] 索引標籤 。
選取您想要使用的模型。 選取模型之後,會啟用 [下載 ] 按鈕。
選擇 [下載] 。
您會收到包含下列項目的 .zip 檔案:
名為 conda_env_<VERSION>.yml 的 conda 環境規格檔案
名為 scoring_file_<VERSION>.py 的 Python 評分檔案
模型本身,位於名為 model.pkl 的 Python .pkl 檔案中
若要使用這些檔案進行部署,您可以使用工作室或 Azure CLI。
在 Azure Machine Learning 工作室中,前往 [模型 ] 頁面。
選取 [+ 註冊 >從本機檔案 ]。
註冊您從自動化 ML 執行下載的模型。
前往 [環境] 頁面,選取 [自訂環境 ],然後選取 [+ 建立 ],為您的部署建立環境。 使用下載的 conda yaml 來建立自訂環境。
選取模型,然後從 [部署 ] 下拉功能表中選取 [即時端點 ]。
完成精靈中的所有步驟,以建立線上端點和部署。
適用於: Azure CLI ml 延伸模組 v2 (目前)
若要從 CLI 建立部署,您需要具有 ML v2 擴充功能的 Azure CLI。 執行下列命令以確認:
az version
如果您收到錯誤訊息,或在回應中沒有看到 Extensions: ml
,請依照安裝和設定 CLI (v2) 中的步驟操作。
登入。
az login
如果您有多個 Azure 訂用帳戶的存取權,您可以設定作用中的訂用帳戶。
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
將預設資源群組和工作區設定為您想要建立部署的位置。
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
將評分檔案放在其所屬的目錄中
建立名為 src 的目錄。 儲存您下載的評分檔案。 此目錄會上傳至 Azure,並包含執行推斷所需的所有原始程式碼。 針對 AutoML 模型,只有單一評分檔案。
建立端點和部署 yaml 檔案
若要從命令行建立線上端點,請建立 endpoint.yml 和 deployment.yml 檔案。 下列程式碼取自 Azure Machine Learning 範例存放庫 ,會顯示擷取所有必要輸入的 endpoints/online/managed/sample/ 。
automl_endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
automl_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
您必須修改此檔案,以使用從 [AutoML 模型] 頁面下載的檔案。
建立檔案 automl_endpoint.yml 和 automl_deployment.yml 並貼上上述範例的內容。
變更端點的 name
值。 端點名稱在 Azure 區域中必須是唯一的。 端點的名稱必須以大小寫字母開頭,且只能包含 '-' 及英數字元。
在 automl_deployment.yml 檔案中,變更下列路徑的索引鍵值。
路徑
變更為
model:path
您下載的 model.pkl 檔案的路徑。
code_configuration:code:path
您用來放置評分檔案的目錄。
code_configuration:scoring_script
Python 評分檔案的名稱 (scoring_file_<VERSION>.py )。
environment:conda_file
下載的 conda 環境檔案的檔案 URL(conda_env_<VERSION>.yml )。
從命令列執行:
適用於: Azure CLI ml 延伸模組 v2 (目前)
az ml online-endpoint create -f automl_endpoint.yml
az ml online-deployment create -f automl_deployment.yml
在您建立部署之後,您可以依照使用您的模型叫用端點來評分資料 所述,對其進行評分。
適用於 :Python SDK azure-ai-ml v2 (目前)
如果您需要安裝 Python SDK v2,請使用下列命令進行安裝:
pip install azure-ai-ml azure-identity
如需詳細資訊,請參閱安裝適用於 Python 的第 2 版 Azure Machine Learning SDK 。
將評分檔案放在其所屬的目錄中
建立名為 src 的目錄。 儲存您下載的評分檔案。 此目錄會上傳至 Azure,並包含執行推斷所需的所有原始程式碼。 針對 AutoML 模型,只有單一評分檔案。
連線至 Azure Machine Learning 工作區
匯入必要的程式庫。
# 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
設定工作區詳細資料並取得工作區的控制代碼。
# 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
)
建立端點和部署
建立受控線上端點和部署。
設定線上端點。
提示
name
:端點的名稱。 其在 Azure 區域中必須是唯一的。 端點的名稱必須以大小寫字母開頭,且只能包含 '-' 及英數字元。 如需命名規則的詳細資訊,請參閱端點限制 。
auth_mode
:使用 key
進行金鑰式驗證。 使用 aml_token
進行 Azure Machine Learning 權杖型驗證。 key
不會過期,但 aml_token
會過期。 如需驗證的詳細資訊,請參閱向線上端點進行驗證 。
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
建立端點。
使用稍早建立的 MLClient
,在工作區中建立端點。 此命令會啟動端點建立。 它會在端點建立繼續時傳回確認回應。
ml_client.begin_create_or_update(endpoint)
設定線上部署。
部署是託管執行實際推斷模型所需的一組資源。 使用 ManagedOnlineDeployment
類別為端點建立部署。
model = Model(path="./src/model.pkl")
env = Environment(
conda_file="./src/conda_env_v_1_0_0.yml",
image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:latest",
)
blue_deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name=online_endpoint_name,
model=model,
environment=env,
code_configuration=CodeConfiguration(
code="./src", scoring_script="scoring_file_v_2_0_0.py"
),
instance_type="Standard_DS2_v2",
instance_count=1,
)
在此範例中,您從 AutoML 模型頁面下載的檔案位於 src 目錄中。 您可以修改程式碼中的參數,以符合您的情況。
參數
變更為
model:path
您下載的 model.pkl 檔案的路徑。
code_configuration:code:path
您用來放置評分檔案的目錄。
code_configuration:scoring_script
Python 評分檔案的名稱 (scoring_file_<VERSION>.py )。
environment:conda_file
下載的 conda 環境檔案的檔案 URL(conda_env_<VERSION>.yml )。
建立部署。
使用稍早建立的 MLClient
在工作區中建立部署。 此命令會開始建立部署。 它會在部署建立繼續進行時傳回確認回應。
ml_client.begin_create_or_update(blue_deployment)
建立部署之後,您可以依照使用範例資料測試端點 中所述進行評分。
若要深入瞭解如何使用 SDK 部署至受控線上端點,請參閱 使用線上端點部署和評分機器學習模型 。
相關內容