管理和最佳化 Azure Machine Learning 成本
本文將示範在定型機器學習模型並部署到 Azure Machine Learning 時,如何管理及最佳化成本。
使用下列秘訣可協助您管理和最佳化計算資源成本。
- 使用 Azure Machine Learning 計算叢集
- 設定您的訓練叢集以進行自動調整
- 設定受控線上端點以進行自動調整
- 在您的訂用帳戶和工作區上設定配額
- 在您的定型工作上設定終止原則
- 使用低優先順序的虛擬機器 (VM)
- 將計算執行個體排定為自動關閉並啟動
- 使用 Azure 保留的 VM 執行個體
- 並行訓練
- 設定資料保留和刪除原則
- 將資源部署到相同區域
- 刪除失敗的部署
如需有關規劃和監視成本的相關資訊,請參閱 Azure Machine Learning 的成本管理規劃。
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 在此提供的這個預覽版本並無服務等級協定。 不建議將預覽版本用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
使用 Azure Machine Learning 計算叢集
資料不斷變化,您需要快速且簡化的模型訓練和重新訓練,以維持準確的模型。 不過,持續訓練會產生成本,尤其是 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 叢集:
- Azure 入口網站
- AmlCompute SDK 類別
- AmlCompute CLI
- REST API。
設定受控線上端點以進行自動調整
自動調整會自動執行正確的資源量,以處理應用程式的負載。 受控線上端點透過與 Azure 監視器自動調整功能的整合,支援自動調整。 如需詳細資訊,請參閱即時推斷的線上端點和部署。
Azure 監視器自動調整支援一組豐富的規則:
- 計量型調整,例如 CPU 使用率 >70%
- 排程型調整,例如調整尖峰上班時間的規則
- 兩者的組合
如需詳細資訊,請參閱自動調整線上端點 (英文)。
設定資源的配額
AmlCompute 具有配額 (或限制) 設定。 此配額依據 VM 系列,例如 Dv2 系列或 NCv3 系列。 配額會因每個訂用帳戶的區域而異。 訂用帳戶從小型預設值開始。 使用此設定來控制訂用帳戶中可供啟動的 AmlCompute 資源數量。 如需詳細資訊,請參閱 Azure Machine Learning Compute。
此外,您也可以針對訂用帳戶內的每個工作區,設定各 VM 系列的工作區層級配額。 此方法可讓您更細微地控制每個工作區可能產生的成本,並限制特定 VM 系列。 如需詳細資訊,請參閱工作區層級配額。
若要在工作區層級設定配額:
開啟 Azure 入口網站,然後選取訂用帳戶中的任何工作區。
在工作區功能表中,選取 [支援 + 疑難排解]>[使用量 + 配額]。
選取 [檢視配額] 以檢視 Azure Machine Learning 工作室中的配額。
您可以從此頁面找到您的訂用帳戶和區域,以設定配額。
由於此設定會影響多個工作區,因此您需要訂用帳戶範圍的權限才能設定配額。
設定作業終止原則
在某些情況下,您應該設定訓練執行來限制其持續時間,或將其提早終止。 例如,當您使用 Azure Machine Learning 的內建超參數微調或自動化機器學習時。
以下是您可以使用的幾個選項:
- 定義您 RunConfiguration 中名為
max_run_duration_seconds
的參數,以控制執行可在所選計算 (本機或遠端雲端計算) 上延伸的最長持續時間。 - 針對超參數微調,請從 Bandit 原則、中位數停止原則或截斷選取原則定義提早終止原則。 若要進一步控制超參數的掃描,請使用
max_total_runs
或max_duration_minutes
之類的參數。 如需詳細資訊,請參閱指定提前終止原則。 - 針對自動化機器學習,請使用
enable_early_stopping
旗標來設定類似的終止原則。 您也可以使用iteration_timeout_minutes
和experiment_timeout_minutes
等屬性來控制作業或整個實驗的持續時間上限。 如需詳細資訊,請參閱結束準則。
使用低優先順序的虛擬機器
Azure 可讓您在虛擬機器擴展集、Batch 和機器學習服務之間,使用多餘的未使用容量來作為低優先順序 VM。 這些配置可預先預先搶佔,但相較於專用 VM,其價格較低。 一般來說,我們建議您針對 Batch 工作負載使用低優先順序 VM。 如果中斷可透過針對批次推斷重新提交,或透過針對使用檢查點的深度學習定型重新啟動來復原,您也應使用低優先順序 VM。
低優先順序 VM 的單一配額與專用配額值不同,其以 VM 系列為基礎。 如需有關 AmlCompute 配額的詳細資訊,請參閱管理及增加配額。
低優先順序 VM 不適用於計算執行個體,因為其需要支援互動式筆記本體驗。
排定計算執行個體
當您建立計算執行個體時,VM 會保持開啟狀態,以供您的工作使用。
使用保留執行個體
另一種節省計算資源成本的方法是 Azure 保留 VM 執行個體。 此供應項目可讓您承諾一年或三年期的使用量。 這些折扣範圍最高可達隨用隨付價格的 72%,並會直接套用至您的每月 Azure 帳單。
Azure Machine Learning Compute 原本就支援保留執行個體。 如果您購買一年或三年期的保留執行個體,我們會針對您的 Azure Machine Learning 受控計算自動套用折扣。
並行訓練
將成本和效能最佳化的其中一個主要方法,是藉助 Azure Machine Learning 中的平行元件來並行處理工作負載。 平行元件可讓您使用許多較小的節點,以平行方式執行工作,如此可讓您以水平方向進行調整。 但是平行處理會產生額外負荷。 需視工作負載和可以達成的平行處理程度而定,此方法可能是個選項。 如需詳細資訊,請參閱 ParallelComponent 類別。
設定資料保留和刪除原則
每次執行管線時,每個步驟上都會產生中繼資料集。 經過一段時間後,這些中繼資料集就會佔用您儲存體帳戶中的空間。 請考慮設定在整個資料生命週期中管理資料的原則,以封存和刪除您的資料集。 如需更多資訊,請參閱藉由自動管理資料生命週期將成本最佳化。
將資源部署到相同區域
位於不同區域的計算可能會遇到網路延遲,而且資料傳輸成本會增加。 Azure 網路成本是從 Azure 資料中心的輸出頻寬所產生。 若要降低網路成本,請在該區域中部署您的所有資源。 在與資料相同的區域中佈建 Azure Machine Learning 工作區和相依資源,有助於降低成本並提升效能。
針對使用 Azure ExpressRoute 等服務的混合式雲端案例,將所有資源移至 Azure 來最佳化網路成本和延遲,可能更符合成本效益。
刪除失敗的部署
受控線上端點會使用 VM 進行部署。 如果您已提交建立線上部署的要求且失敗,在建立計算時,要求可能已通過該階段。 在此情況下,失敗的部署會產生費用。 當您完成失敗的偵錯或調查時,請刪除失敗的部署以節省成本。