以組織規模管理 Azure Machine Learning 的預算、成本和配額

當您管理從 Azure Machine Learning 產生的計算成本時,在許多工作負載、許多小組與使用者的組織級別,需要進行許多管理與最佳化的挑戰。

在本文中,我們提供最佳做法以將成本最佳化、管理預算,並與 Azure Machine Learning 共用配額。 這反映了小組在 Microsoft 內部執行機器學習以及與我們的客戶合作得到的經驗和教訓。 您將學習如何:

最佳化計算以符合工作負載需求

當您開始新的機器學習服務專案時,可能需要執行探索工作,才可清楚了解計算需求。 本節提供您如何判斷並選擇正確的虛擬機器 (VM) SKU 之建議,像是用於定型、推斷,或作為工作站工作等。

判斷定型的計算大小

定型工作負載的硬體需求,可能會因專案不同而有所差異。 為了符合這些需求,Azure Machine Learning 計算會提供各種類型的 VM:

  • 一般用途:CPU 與記憶體比例達到平衡。
  • 記憶體最佳化:高記憶體與 CPU 比例。
  • 計算最佳化:高 CPU 與記憶體比例。
  • 高效能計算:為各種實際的 HPC 工作負載,提供先進的效能、可擴縮性和成本效益。
  • GPU 的執行個體:特製化的虛擬機器,其目標是大量的圖表轉譯與影片編輯,以及搭配深度學習的模型定型與推斷 (ND)。

您可能還不知道您的計算需求。 在此情節中,建議您從下列其中一個符合成本效益的預設選項開始。 這些選項適用於輕量測試與定型工作負載。

型別 虛擬機器大小 規格
CPU Standard_DS3_v2 4 核心、14 GB RAM、28 GB 的儲存體
GPU Standard_NC6 6 核心、56 GB RAM、380-GB 儲存體、NVIDIA Tesla K80 GPU

若要取得符合您情節的最佳 VM 大小,可能會包含試用與錯誤。 以下是幾個要考量的層面。

  • 如果您需要 CPU:
    • 如果您要針對大型資料集進行定型,請使用記憶體最佳化的 VM。
    • 如果您正在執行即時推斷,或其他延遲敏感性工作,請使用計算最佳化的 VM。
    • 請使用具有更多核心與 RAM 的 VM,以便加速定型時間。
  • 如果您需要 GPU,請參閱 GPU 優化 VM 大小 ,以取得選取 VM 的相關資訊。
    • 如果您正在執行分散式定型,請使用具有多個 GPU 的 VM 大小。
    • 如果您正在多個節點上執行散發式定型,請使用具有 NVLink 連線的 GPU。

當您選取最適合您工作負載的 VM 類型與 SKU 時,請評估可比較的 VM SKU,以便在 CPU 與 GPU 的效能與價格之間做出取捨。 從成本管理的檢視方塊來看,工作可能會在多個 SKU 上執行得相當順利。

特定 GPU,例如 NC 系列 (且特別是 NC_Promo SKU),和其他 GPU 有類似的功能,例如:低延遲與平行管理多個計算工作負載的能力。 相比其他一些 GPU,它們提供折扣價格。 若是貼心地選取 VM SKU 至工作負載,最終可能會大幅節省成本。

針對使用率重要性的提醒,是為註冊更多數量的 GPU,且該 GPU 不一定是以更快的結果執行。 反之,請確定已充分使用 GPU。 例如,請再次檢查 NVIDIA CUDA 的需求。 雖然可能需要高效能的 GPU 執行,但您的作業可能不會與其具相依性。

判斷推斷的計算大小

推斷情節的計算需求,與定型情節有所不同。 可用的選項會根據您的情節是否要求批次的離線推斷,或是否要求即時連線推斷,而有所不同。

針對即時推斷情節,請考量下列建議:

  • 在您的模型上使用分析功能,並搭配 Azure Machine Learning,以判斷在將模型部署為 Web 服務時,您需要為模型配置多少 CPU 與記憶體。
  • 如果您正在執行即時推斷,但不需要高可用性時,請部署至 Azure 容器執行個體 (且沒有任何的 SKU 選取項目)。
  • 如果您正在執行即時推斷,但需要高可用性,請部署至 Azure Kubernetes Service
    • 如果您正在使用傳統的機器學習模型,並收到 < 10 個查詢/秒,請從 CPU SKU 開始。 F 系列的 SKU 通常可以良好執行。
    • 如果您正在使用深度學習模型,並收到 > 10 個查詢/秒,請嘗試使用與Triton 搭配的 NVIDIA GPU SKU (NCasT4_v3 通常可以良好執行)。

針對批次推斷情節,請考量下列建議:

  • 當您使用 Azure Machine Learning 準銷售案源進行批次推斷時,請遵循決定定型的計算大小中的指導,選擇您的初始 VM 大小。
  • 依照級別水平調整,以最佳化成本與效能。 最佳化成本與效能的其中一個主要方法,即是藉助 Azure Machine Learning 中的平行執行步驟來平行處理工作負載。 此準銷售案源可讓您使用許多較小的節點,並以平行方式執行工作,這也可讓您水平調整級別。 但是平行處理會產生額外負荷。 平行執行步驟是否可作為選項,需視工作負載和可以達成的平行處理程度而定。

判斷計算執行個體的大小

針對互動式開發,建議使用 Azure Machine Learning 的計算執行個體。 計算執行個體 (CI) 供應項目,會提供繫結至單一使用者的單一節點計算,並可作為雲端工作站使用。

某些組織不允許在區域工作站上使用生產資料、對工作站環境有強硬限制,或限制在公司 IT 環境中安裝套件和相依性。 計算執行個體可做為克服限制的工作站。 它提供具有生產資料存取的安全環境,並在預先安裝的資料科學熱門套件與工具上,執行圖片。

當執行計算執行個體時,會向使用者收取 VM 計算、Standard Load Balancer (包含 lb/輸出規則與處理資料)、OS 磁磁碟 (進階 SSD 受控 P10 磁碟)、暫存磁片碟 (暫存磁碟類型取決於所選的 VM 大小),以及公用 IP 位址的費用。 為了節省成本,我們建議使用者考慮:

  • 啟動並停止未使用的計算執行個體。
  • 在計算執行個體上使用您的資料範例,並將其擴增至計算叢集,以使用您的完整資料集
  • 在開發或測試時,請在計算執行個體上以 區域計算目標模式提交實驗作業,或當您以完整級別提交作業時,請切換至共用計算容量。 例如,許多時期、完整的資料集,以及超參數搜尋等。

如果您停止計算執行個體,則會停止計費 VM 計算時數、暫存磁碟,以及 Standard Load Balancer 資料處理成本。 請注意,即使已停止計算執行個體,使用者仍要支付作業系統磁碟,以及包含 lb/輸出規則的 Standard Load Balancer 費用。 任何儲存在 OS 磁碟上的資料,都會透過停止與重新啟動來保存。

藉由監視計算使用量,調整選擇的 VM 大小

您可以透過 Azure 監視器,檢視 Azure Machine Learning 計算使用量與使用率的資訊。 您可以檢視模型部署與註冊的詳細資料、配額詳細資料 (如作用中與閒置節點)、執行的詳細資料 (如已取消和已完成執行),以及 GPU 和 CPU 使用率的計算使用率。

根據監視詳細資料中的深入解析,您可以更妥善地規劃或調整整個小組的資源使用量。 舉例來說,如果您注意到過去一週有許多閒置節點,您可以與對應的工作區擁有者一起更新計算叢集設定,以避免這種額外成本。 分析使用量模式的權益,能有助於預測成本與改善預算。

您可以直接從 Azure 入口網站存取這些計量。 移至您的 Azure Machine Learning 工作區,然後在左側面板的 [監視] 區段下選取 [計量]。 然後,您可以選取您希望檢視內容的詳細資料,例如計量、匯總與時間週期。 如需詳細資訊,請參閱監視 Azure Machine Learning 文件頁面。

適用于 Azure Machine Learning 的 Azure 監視器計量圖表

當您開發時,請切換區域、單一節點,以及多節點雲端計算

整個機器學習生命週期都有不同的計算與工具需求。 Azure Machine Learning 可以透過 SDK 與 CLI 介面,並從幾乎任何偏好的工作站設定來操作介面,以符合這些需求。

如果要節省成本並有效率地工作,建議您:

  • 使用 Git 在區域複製您的實驗程式碼基礎映像,並使用 Azure Machine Learning SDK 或 CLI 提交工作至雲端計算。
  • 如果您的資料集非常大,請考慮在區域工作站上管理您的資料範例,同時保留雲端儲存空間上的完整資料集。
  • 將您的實驗程式碼基礎映像參數化,讓您可以設定作業,並執行不同的時期數目,或是不同大小的資料集。
  • 請勿將您資料集的資料夾路徑硬編碼。 然後,您可以輕鬆地在不同的資料集中,以及在本機與雲端執行內容中,重複使用相同的程式碼基礎映像。
  • 當您開發或測試時,或是當您以完整級別提交工作,並轉換成共用計算叢集容量時,請在區域計算目標模式中啟動您的實驗作業啟動程序。
  • 如果您有非常大的資料集,請在您的區域或計算執行個體工作站上使用資料樣本,並在 Azure Machine Learning 中縮放雲端計算比例,以使用您的完整資料集。
  • 如果您的作業需要很長的執行時間,請考慮將您的程式碼基礎映像最佳化,以執行散發式定型,並允許水平縮放。
  • 設計用於節點彈性的散發式定型工作負載,已允許彈性使用單一節點與多節點計算,並簡化可先佔使用的計算。

使用 Azure Machine Learning 準銷售案源合併計算型別

當您協調機器學習工作流程時,您可以定義具有多個步驟的準銷售案源。 準銷售案源中的每個步驟都可以在自己的計算型別上執行。 這可讓您最佳化效能與成本,並可在機器學習服務生命週期中,滿足不同的計算需求。

推動小組預算的最佳使用

雖然預算配置決策可能不在個別小組的控制範圍內,但小組通常可以使用其配置的預算,滿足其最佳需求。 藉由謹慎衡量作業優先順序與效能和成本,小組可以達成更高的叢集使用率、降低整體成本,並從相同的預算內,使用較大量的計算時數。 這會讓小組的生產力提高。

最佳化共用計算資源的成本

最佳化共用計算資源的成本關鍵,即是確保這些資源已使用於其完整容量。 以下是一些最佳化共用資源成本的秘訣:

  • 當您使用計算執行個體時,唯有當您有執行程式碼時,才可將其開啟。 如果未使用時,請將其關閉。
  • 當您使用計算叢集時,請將最小的節點計數設定為 0,並根據您預算限制式的評估數字,設計最大的節點計數。 使用 Azure 價格計算機,計算所選 VM SKU 中的單一 VM 節點完整使用率成本。 若是無人使用,所有的計算節點會自動縮小。 它只會擴大為與您預算相符的節點數目。 您可以設定自動調整規模,以縮小所有計算節點。
  • 在定型模型時監視您的資源使用率,例如 CPU 使用率與 GPU 使用率等。 如果未完全使用資源,請修改您的程式碼,以更妥善地使用資源,或縮小成較小或較便宜的 VM 大小。
  • 評估您是否可以為您的小組建立共用的計算資源,並避免因叢集縮放比例作業而導致計算效率不佳。
  • 根據使用計量,最佳化計算叢集自動調整超時原則。
  • 使用工作區配額,控制個別工作區可存取的計算資源數量。

建立多個 VM SKU 的叢集,引入排程優先順序

小組必須在配額和預算限制下執行作業,以確保能及時執行重要作業,並以最佳的方式使用預算。

若要支援最佳的計算使用率,建議小組建立各種大小的叢集,並具有低優先順序專用的 VM 優先權。 低優先順序計算會利用 Azure 中剩餘的容量,並因此隨附折扣費率。 就缺點而言,如果有較高的優先順序介入時,可能會優先佔用這些機器。

若是使用不同大小與優先順序的叢集,可能會引進排程優先權的概念。 例如,當實驗性和生產作業競爭相同的 NC GPU 配額時,生產作業可能對執行實驗作業有偏好。 在此情況,請在專門的計算叢集上執行生產作業,並在低優先順序計算叢集上執行實驗性工作。 如果配額不足時,將會優先佔用實驗性工作,以先執行生產作業。

在 VM 優先順序旁,請考慮在各個 VM SKU 上執行作業。 和 V100 GPU 相比,在 P40 GPU 的 VM 執行個體上執行可能需要更長的作業時間。 不過,由於 V100 的 VM 執行個體可能已被佔用,或已完全使用配額,因此在 P40 上完成的時間,可能仍會比作業輸送量檢視方塊更快。 您也可以從成本管理檢視方塊來看,考慮以較低效能且較便宜的 VM 執行個體執行工作。

在定型未收斂時提早終止執行

當您在持續實驗,以求改善模型基準時,您可能會執行各種不同的實驗流程執行,且每個設定皆稍有不同。 如果是單次執行,您可能會調整輸入資料集。 如果是另一次執行,您可能會進行超參數變更。 並非所有變更都可以像其他變更一樣有效。 您提早偵測到變更對模型定型的品質沒有預期的影響。 如果要偵測定型是否未收斂,請在執行期間監視定型進度。 例如,在每個定型 epoch 之後,記錄效能計量。 請考慮提早終止作業,以便釋出資源與預算,並執行其他試用。

規劃、管理及共用預算、成本和配額

當組織的機器學習使用案例與小組數量皆有成長時,它需要從 IT 和財務增加作業成熟度,並在個別機器學習小組之間協調,以確保有效率的作業。 公司級別的容量與配額管理,對解決計算資源不足與克服管理額外負荷來說相當重要。

本節討論在企業規模中規劃、管理和共用預算、成本與配額的最佳做法。 它是以學習為基礎,可管理 Microsoft 內部機器學習的許多 GPU 定型資源。

了解 Azure Machine Learning 的資源支出

以系統管理員的身分,規劃計算需求最大的挑戰之一,就是開始新的規劃計算,且沒有歷程記錄資訊作為基準預估。 在實際的情況下,大部分的專案都是從小型預算開始,作為第一個步驟。

若要了解預算的進展,知道 Azure Machine Learning 成本的來源非常重要:

  • Azure Machine Learning 僅會計算使用的計算基礎結構費用,而不會增加計算成本的額外費用。
  • 當 Azure Machine Learning 工作區建立時,其他一些資源也會建立,以啟用 Azure Machine Learning:Key Vault、Application Insights、Azure 儲存體和 Azure Container Registry。 這些資源會使用於 Azure Machine Learning 中,而您將支付這些資源的費用。
  • 受控計算有相關聯的成本,例如:定型叢集、計算執行個體和受控推斷端點等。 藉由這些受控計算資源,可將下列基礎結構成本納入考量:虛擬機器、虛擬網路、負載平衡器、頻寬與儲存體。

追蹤消費模式,並使用標記達到更好的報告

系統管理員通常想要能夠追蹤 Azure Machine Learning 中不同資源的成本。 標記是此問題的自然解決方案,並與 Azure 和其他許多雲端服務提供者所使用的一般方法一致。 透過標籤支援,您現在可以在計算層級看到成本明細,因此可讓您存取更細微的檢視,以協助改善成本監視、改善的報告和更高的透明度。

標記可讓您在工作區上放置自訂標籤,並從 Azure Resource Manager 範本計算 (,並Azure Machine Learning 工作室) 根據這些標籤進一步篩選 Azure 成本管理中的這些資源,以觀察支出模式。 這項功能最適合用於內部退款案例。 此外,標記對於擷取與計算相關聯的中繼資料或詳細資料很有用,例如專案、小組、特定計費程式碼等等。這讓標記對於測量您在不同資源上花費的費用非常有説明,因此,更深入地深入瞭解您的成本,以及跨小組或專案花費模式。

另外還有系統插入的標記放在計算上,可讓您依 [計算類型] 標籤在 [成本分析] 頁面中篩選,以查看總支出的計算明細,並判斷計算資源類別可能會對大部分的成本產生影響。 這特別適用于深入瞭解訓練與推斷成本模式。

依計算類型篩選的成本分析檢視螢幕擷取畫面。

依原則管理並限制計算使用量

當您管理具有許多工作負載的 Azure 環境時,要保留資源支出的總覽可能會相當困難。 Azure 原則可以跨 Azure 環境限制特定使用模式,並協助控制與管理資源支出。

在 Azure Machine Learning 的特定情況下,建議您將原則設定為僅允許使用特定的 VM SKU。 原則有助於防止和控制所選的昂貴 VM。 原則也可以用來強制使用低優先順序 VM SKU。

根據業務優先順序來配置並管理配額

Azure 可讓您在訂用帳戶和 Azure Machine Learning 工作區等級上設定配額配置的限制。 限制誰可以透過 Azure 角色型存取控制 (RBAC) 來管理配額,可有助於確保資源使用率和成本可預測性。

在您的訂用帳戶中,GPU 配額的可用性可能很少。 如果要確保跨工作負載的高配額使用率,建議您監視是否最好使用配額,並在工作負載之間指派配額。

Microsoft 會評估企業優先的容量需求,定期決定在跨機器學習小組中,是否已最佳化使用並配置 GPU 配額。

預先認可容量

如果您對來年或未來幾年所使用的計算量有很大的估計值,您可以用折扣價格,購買 Azure 保留的 VM 執行個體。 有一年期或三年期的購買條款。 由於 Azure 保留的 VM 執行個體已打折扣,和隨用隨付的價格相比,為您節省下可觀的成本。

Azure Machine Learning 支援保留的計算執行個體。 折扣會自動套用至 Azure Machine Learning 的受控計算。

管理資料保留

每次執行機器學習準銷售案源時,可以在每個準銷售案源步驟產生中繼資料集,以快取並重複使用資料。 如果將資料成長視為這些機器學習準銷售案源的輸出,可能會成為執行許多機器學習服務實驗組織的難題。

資料科學家通常不會花時間來清除產生的中繼資料集。 經過一段時間,所產生的資料量將會加總起來。 Azure 儲存體隨附增強資料生命週期管理的功能。 使用 Azure Blob 儲存體生命週期管理時,您可以設定一般原則,將未使用的資料移至低儲存層,並節省成本。

基礎結構成本最佳化考量

網路

Azure 網路成本是從 Azure 資料中心的輸出頻寬所產生。 Azure 資料中心的所有輸入資料都是免費。 降低網路成本的關鍵,是盡可能將所有資源部署在相同的資料中心區域中。 如果您可以將 Azure Machine Learning 工作區和計算部署在具有資料的相同區域中,即可享有較低的成本與更高的效能。

您可能想要在內部部署網路與 Azure 網路之間有私人連線,以擁有混合式雲端環境。 ExpressRoute 可讓您進行這項作業,但在考量 ExpressRoute 的高成本之下,從混合式雲端設定移出,並將所有資源移至 Azure 雲端可能會更符合成本效益。

Azure Container Registry

針對 Azure Container Registry,成本最佳化的判斷因素包含:

  • 從容器登錄將 Docker 映像下載到 Azure Machine Learning 所需的輸送量
  • 企業安全性功能的需求,例如 Azure Private Link

針對需要高輸送量或企業安全性的生產情節,建議使用 Azure Container Registry 的進階版 SKU。

針對輸送量與安全性相對不重要的開發/測試情節,建議您採用標準版 SKU 或進階版 SKU。

Azure Container Registry 的基本 SKU 不建議使用於 Azure Machine Learning。 由於其低輸送量與低內含儲存體,會快速超過 Azure Machine Learning 相對大小 (1 + GB) 的 Docker 映像,因此不建議您這麼做。

選擇 Azure 區域時,請考慮計算類別的可用性

當您為計算挑選區域時,請記住要計算配額的可用性。 常見和較大型的區域 (例如美國東部、美國西部和西歐),和具有較嚴格容量限制的其他區域相比,通常會有較高的預設配額值,且大多數的 CPU 和 GPU 具有更高可用性。

深入了解

使用雲端採用架構,跨業務單位、環境或專案追蹤成本

後續步驟

若要深入瞭解如何組織並設定 Azure Machine Learning 環境,請參閱組織並設定 Azure Machine Learning 環境

若要了解使用 Azure Machine Learning 的 Machine Learning DevOps 最佳做法,請參閱 Machine Learning DevOps 指南