如何將 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
必要條件
AutoML 訓練的機器學習模型。 如需詳細資訊,請參閱教學課程:在 Azure Machine Learning 工作室中使用無程式碼自動化機器學習定型分類模型 或教學課程:使用自動化機器學習來預測需求 。
從 Azure Machine Learning 工作室進行部署且不需要程式碼
從自動化 ML 頁面部署 AutoML 訓練的模型無需使用到程式碼。 也就是說,您不需要準備評分指令碼和環境,這兩者都會自動產生。
前往工作室中的自動化 ML 頁面
選取實驗並執行
選擇 [模型] 索引標籤
選取您要部署的模型
一旦您選取模型之後,[部署] 按鈕就會亮起並提供下拉式功能表
選取 [部署到即時端點] 選項
系統會產生部署所需的模型和環境。
完成精靈以將模型部署至線上端點
從工作室或命令列手動部署
如果您想要進一步控制部署,您可以下載訓練成品並進行部署。
若要下載部署所需的元件:
前往您的自動化 ML 實驗,並在 Machine Learning 工作區中執行
選擇 [模型] 索引標籤
選取您要使用的模型。 當您選取模型後,[下載] 按鈕就會啟用
選取 [下載]
您將會收到 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 延伸模組第 2 版 (目前)
若要從 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
檔案中,變更下列路徑的索引鍵值:
路徑
變更為
model:path
您下載的 model.pkl
檔案路徑。
code_configuration:code:path
您用來放置評分檔案的目錄。
code_configuration:scoring_script
Python 評分檔案 (scoring_file_<VERSION>.py
) 的名稱。
environment:conda_file
所下載的 conda 環境檔案 (conda_env_<VERSION>.yml
) 的 URL。
從命令列執行:
適用於: Azure CLI ML 延伸模組第 2 版 (目前)
az ml online-endpoint create -f automl_endpoint.yml
az ml online-deployment create -f automl_deployment.yml
在您建立部署之後,您可以依照使用您的模型叫用端點來評分資料 所述,對其進行評分。
適用於 :Python SDK azure-ai-ml v2 (目前)
如果您尚未安裝第 2 版 Python SDK,請使用下列命令進行安裝:
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 環境檔案 (conda_env_<VERSION>.yml
) 的 URL。
建立部署:
使用稍早建立的 MLClient
,我們現在會在工作區中建立部署。 此命令會啟動部署建立,並在部署建立繼續時傳回確認回應。
ml_client.begin_create_or_update(blue_deployment)
建立部署之後,您可以依照使用範例資料測試端點 中所述進行評分。
您可以使用第 2 版 Python SDK 將機器學習模型部署至受控連線端點中 ,深入瞭解如何使用 SDK 部署至受控線上端點。
下一步