管理和最佳化 Azure Machine Learning 成本

了解如何在訓練機器學習模型並部署到 Azure Machine Learning 時,管理及最佳化成本。

使用下列秘訣可協助您管理和最佳化計算資源成本。

  • 設定您的訓練叢集以進行自動調整
  • 在您的訂用帳戶和工作區上設定配額
  • 在您的定型工作上設定終止原則
  • 使用低優先順序的虛擬機器 (VM)
  • 將計算執行個體排定為自動關閉並啟動
  • 使用 Azure 保留的 VM 執行個體
  • 在本機訓練
  • 並行訓練
  • 設定資料保留和刪除原則
  • 將資源部署到相同區域

如需有關規劃和監視成本的相關資訊,請參閱 Azure Machine Learning 的成本管理規劃指南。

重要

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

使用 Azure Machine Learning 計算叢集 (AmlCompute)

資料不斷變化,您需要快速且簡化的模型訓練和重新訓練,以維持準確的模型。 不過,持續訓練會產生成本,尤其是 GPU 上的深度學習模型。

Azure Machine Learning 使用者可以使用受控 Azure Machine Learning 計算叢集 (也稱為 AmlCompute)。 AmlCompute 支援各種 GPU 和 CPU 選項。 AmlCompute 會由 Azure Machine Learning 代表您的訂用帳戶在內部進行託管。 其提供相同的企業級安全性、合規性和 Azure IaaS 雲端規模的治理。

因為這些計算集區位於 Azure 的 IaaS 基礎結構內,所以您可以使用與其他基礎結構相同的安全性和合規性需求來部署、調整及管理訓練。 這些部署會在您的訂用帳戶中進行,並遵守您的治理規則。 深入了解 Azure Machine Learning 計算

設定可自動調整的訓練叢集

根據工作負載需求來自動調整叢集有助於降低成本,因此您可以只使用所需的部分。

AmlCompute 叢集的設計訴求是根據您的工作負載進行動態調整。 叢集可擴大到您設定的節點數目上限。 當每一項作業完成時,叢集會釋放節點,並調整為您設定的節點計數下限。

重要

若要避免在未執行作業時產生費用,請將節點數下限設定為 0。 這項設定可讓 Azure Machine Learning 將未使用的節點解除配置。 任何大於 0 的值都會保持執行該數量的節點,即使不使用節點也一樣。

您也可以設定節點在縮小之前的閒置時間。 依預設,縮小前的閒置時間會設定為 120 秒。

  • 如果您執行較少的反覆實驗,請縮短這段時間來節省成本。
  • 如果您執行高度反覆的開發/測試實驗,您可能需要增加該時間,如此您就不會在每次訓練指令碼或環境發生變更之後,為持續不斷的擴大和縮小支付費用。

您可以使用 AmlCompute SDK 類別AmlCompute CLIREST API,在 Azure 入口網站中針對不斷變更的工作負載需求設定 AmlCompute 叢集。

設定資源的配額

AmlCompute 具有配額 (或限制) 設定。 此配額取決於 VM 系列 (例如 Dv2 系列、NCv3 系列),而且會因為每個訂用帳戶的區域不同而有所差異。 訂用帳戶會從小的預設值開始讓您使用,但使用此設定來控制可在訂用帳戶中增加的 Amlcompute 資源數量。

也會針對訂用帳戶內的每個工作區,設定各 VM 系列的工作區層級配額。 這樣做可讓您更細微地控制每個工作區可能產生的成本,並限制特定的 VM 系列。

若要在工作區層級上設定配額,請從 Azure 入口網站開始。 選取訂用帳戶中的任何工作區,然後選取左窗格中的 [使用量 + 配額]。 然後選取 [設定配額] 索引標籤以檢視配額。 您需要訂用帳戶範圍的權限才能設定配額,因為這是影響多個工作區的設定。

設定作業自動終止原則

在某些情況下,您應該設定訓練執行來限制其持續時間,或將其提早終止。 例如,當您使用 Azure Machine Learning 的內建超參數微調或自動化機器學習時。

以下是您可以使用的幾個選項:

  • 定義您 RunConfiguration 中名為 max_run_duration_seconds 的參數,以控制執行可在所選計算 (本機或遠端雲端計算) 上延伸的最長持續時間。
  • 針對超參數微調,請從 Bandit 原則、中位數停止原則或截斷選取原則定義提早終止原則。 若要進一步控制超參數的掃描,請使用 max_total_runsmax_duration_minutes 之類的參數。
  • 針對自動化機器學習,請使用 enable_early_stopping 旗標來設定類似的終止原則。 也請使用 iteration_timeout_minutesexperiment_timeout_minutes 等屬性來控制作業或整個實驗的持續時間上限。

使用低優先順序 VM

Azure 可讓您在虛擬機器擴展集、Batch 和機器學習服務之間,使用多餘的未使用容量來作為低優先順序 VM。 這些配置可預先預先搶佔,但相較於專用 VM,其價格較低。 一般來說,我們建議您針對 Batch 工作負載使用低優先順序 VM。 如果中斷可透過重新提交 (針對 Batch 推斷) 或透過重新啟動 (針對使用檢查點的深度學習訓練) 來復原,您也應使用低優先順序 VM。

低優先順序 VM 的單一配額與專用配額值不同,其以 VM 系列為基礎。 深入了解 AmlCompute 配額

低優先順序 VM 不適用於計算執行個體,因為其需要支援互動式筆記本體驗。

排定計算執行個體

當您建立計算執行個體時,VM 會保持開啟狀態,以供您的工作使用。

  • 啟用閒置關機 (預覽),以節省 VM 在指定時段內閒置時的成本。
  • 或者設定排程來自動啟動和停止計算執行個體 (預覽),以在未規劃使用該執行個體時節省成本。

使用保留執行個體

另一種節省計算資源成本的方法是 Azure 保留 VM 執行個體。 此供應項目可讓您承諾一年或三年期的使用量。 這些折扣範圍最高可達隨用隨付價格的 72%,並會直接套用至您的每月 Azure 帳單。

Azure Machine Learning Compute 原本就支援保留執行個體。 如果您購買一年或三年期的保留執行個體,我們會針對您的 Azure Machine Learning 受控計算自動套用折扣。

並行訓練

將成本和效能最佳化的其中一個主要方法,是藉助 Azure Machine Learning 中的平行元件來並行處理工作負載。 平行元件可讓您使用許多較小的節點,以平行方式執行工作,因此可讓您以水平方向進行調整。 但是平行處理會產生額外負荷。 該選項是否適用,需視工作負載和可以達成的平行處理程度而定。 如需詳細資料,請遵循此連結以取得 ParallelComponent 文件。

設定資料保留與刪除原則

每次執行管線時,每個步驟上都會產生中繼資料集。 經過一段時間後,這些中繼資料集就會佔用您儲存體帳戶中的空間。 請考慮設定在整個資料生命週期中管理資料的原則,以封存和刪除您的資料集。 如需詳細資訊,請參閱藉由自動化 Azure Blob 儲存體存取層將成本最佳化

將資源部署到相同區域

位於不同區域的計算可能會遇到網路延遲,而且資料傳輸成本會增加。 Azure 網路成本是從 Azure 資料中心的輸出頻寬所產生。 若要降低網路成本,請在該區域中部署您的所有資源。 在與資料相同的區域中佈建 Azure Machine Learning 工作區和相依資源,有助於降低成本並提升效能。

針對使用 ExpressRoute 等服務的混合式雲端案例,將所有資源移至 Azure 來最佳化網路成本和延遲,可能更符合成本效益。

下一步