自動調整線上端點

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

自動調整會自動執行正確的資源量,以處理應用程式的負載。 線上端點透過與 Azure 監視器自動調整功能的整合,支援自動調整。

Azure 監視器自動調整支援一組豐富的規則。 您可設定以計量為基礎的調整 (例如:CPU 使用率 > 70%)、以排程為基礎的調整 (例如:尖峰上班時間的調整規則) 或上述兩者的組合。 如需詳細資訊,請參閱Microsoft Azure 自動調整概觀

Diagram for autoscale adding/removing instance as needed

現在,您可以使用 Azure CLI、REST、ARM 或以瀏覽器為基礎的 Azure 入口網站來管理自動調整。 其他 Azure Machine Learning SDK (例如 Python SDK) 將會在一段時間後新增支援。

必要條件

定義自動調整設定檔

如要對端點啟用自動調整,您必須先定義自動調整設定檔。 此設定檔會定義預設、最小和最大擴展集容量。 下列範例會將預設和最小容量設定為兩個 VM 執行個體,而最大容量則設為五個:

適用於:Azure CLI ml 延伸模組 v2 (目前)

下列程式碼片段會設定端點和部署名稱:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

接下來,取得部署和端點的 Azure Resource Manager 識別碼:

# ARM id of the deployment
DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
# ARM id of the deployment. todo: change to --query "id"
ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
# set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
AUTOSCALE_SETTINGS_NAME=autoscale-$ENDPOINT_NAME-$DEPLOYMENT_NAME-`echo $RANDOM`

下列程式碼片段會建立自動調整設定檔:

az monitor autoscale create \
  --name $AUTOSCALE_SETTINGS_NAME \
  --resource $DEPLOYMENT_RESOURCE_ID \
  --min-count 2 --max-count 5 --count 2

注意

如需詳細資訊,請參閱自動調整的參考頁面

建立規則以使用計量來擴增

常見的擴增規則是當平均 CPU 負載很高時,會增加 VM 執行個體的數目。 下列範例會在 CPU 平均負載 70% 超過五分鐘時,配置兩個以上的節點 (不超過最大值):

適用於:Azure CLI ml 延伸模組 v2 (目前)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

規則是 my-scale-settings 設定檔的一部分 (autoscale-name 符合設定檔的 name)。 其 condition 引數的值表示「VM 執行個體之間的平均 CPU 耗用量超過 70% 五分鐘」時,應觸發此規則。滿足該條件時,系統會多配置兩個 VM 執行個體。

注意

如需 CLI 語法的詳細資訊,請參閱 az monitor autoscale

使用計量來建立縮減規則

當負載較輕時,規則中的調整可以減少 VM 執行個體的數目。 下列範例會在 CPU 負載有 5 分鐘時間小於 30% 時,將單一節點釋放至最小值 2:

適用於:Azure CLI ml 延伸模組 v2 (目前)

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

根據端點計量建立調整規則

先前的規則已套用至部署。 現在要新增套用至端點的規則。 在此範例中,若要求延遲平均值大於 70 毫秒達 5 分鐘,則系統會配置另一個節點。

適用於:Azure CLI ml 延伸模組 v2 (目前)

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

根據排程建立調整規則

您也可以建立只在特定日期或時間套用的規則。 在此範例中,將節點計數在週末設定為 2。

適用於:Azure CLI ml 延伸模組 v2 (目前)

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

刪除資源

若您不打算使用部署,請將其刪除:

適用於:Azure CLI ml 延伸模組 v2 (目前)

# delete the autoscaling profile
az monitor autoscale delete -n "$AUTOSCALE_SETTINGS_NAME"

# delete the endpoint
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait

下一步

如要深入瞭解 Azure 監視器的自動調整,請參閱下列文章: