Azure Machine Learning 是受控雲端服務,可用來定型、部署及管理機器學習模型。 定型和部署模型有各種不同的選擇和組態,包括計算 SKU 和組態。 您可以將機器學習模型部署到 Machine Learning 計算或其他 Azure 服務,例如 Azure Kubernetes Service (AKS)。
本文提供在您使用 Machine Learning 定型、部署及管理機器學習模型時做出明智決策的架構建議。 本指南是以 Azure Well-Architected Framework 支柱為基礎。
這很重要
如何使用本指南
每個區段都有一個設計檢查清單,其中呈現需要關注的架構領域,以及針對技術範疇量身訂做的設計策略。
此外,也包含可協助具體化這些策略的技術功能 建議 。 建議並不代表Machine Learning及其相依性可用之所有組態的完整清單。 相反地,他們會列出主要建議,並將其對應至設計觀點。 使用建議來建置概念證明,或將現有的環境優化。
基礎架構 基準 OpenAI 端對端聊天參考架構 示範許多重要建議。
技術範圍
此檢閱著重於這些 Azure 資源的相互關聯決策:
- 機器學習
- Machine Learning 計算叢集
- Machine Learning 計算實例
檢閱不涉及連線的資源,例如資料存儲或 Azure Key Vault。
可靠性
可靠性支柱的目的是要藉由 建立足夠的復原能力和從失敗中快速復原的能力,來提供持續的功能。
可靠性設計原則 提供適用於個別元件、系統流程和整個系統的高階設計策略。
設計檢查清單
根據 可靠性的設計檢閱檢查清單 ,開始您的設計策略,並判斷其與業務需求的相關性。 擴充策略,以視需要包含更多方法。
復原:將模型部署到支援可用性區域的環境,例如 AKS。 藉由確保部署分散到可用區域,您可確保即使在資料中心故障時,部署仍然可用。 如需增強的可靠性與可用性,請考慮多區域部署拓撲。
復原能力:請確定您有足夠的計算來進行定型和推斷。 透過資源規劃,確定您的計算 SKU 和調整設定符合工作負載的需求。
復原能力:將用於探勘工作的機器學習工作區與用於生產環境的工作區隔離。
復原:使用受控在線端點進行推斷時,請使用藍綠部署等發行策略,將停機時間降到最低,並降低與部署新版本相關聯的風險。
商務需求:根據可靠性需求,選取使用計算叢集、計算實例和外部化推斷主機,並將服務等級協定 (SLA) 視為因素。
復原:確定您在定型大型模型時具有自我修復功能,例如Machine Learning所支援的檢查點功能。
復原:請確定您已定義復原策略。 機器學習不具備自動故障切換能力。 因此,您必須設計包含工作區及其所有相依性的策略,例如 Key Vault、Azure 記憶體和 Azure Container Registry。
建議
建議 | 優點 |
---|---|
多區域模型部署:如需增強的可靠性與可用性,請儘可能考慮多區域部署環境。 | 多區域部署可確保即使某個區域發生中斷,您的 Machine Learning 工作負載仍會繼續執行。 多區域部署可改善跨區域的負載分佈,並可能提升位於不同地理區域之使用者的效能。 如需詳細資訊,請參閱商務持續性和災害復原的容錯移轉。 |
模型訓練的韌性:使用 Machine Learning 支援的檢查點功能,包括適用於 PyTorch 的 Azure 容器、TensorFlow Estimator 類別,或 Run object 和支援模型檢查點的 FileDataset 類別。 | 模型檢查點會在定型期間定期儲存機器學習模型的狀態,以便在發生中斷、故障或終止時能夠進行還原。 如需詳細資訊,請參閱 使用星雲提升檢查點速度並降低成本。 |
使用專用虛擬機層於計算叢集:於計算叢集中使用專用虛擬機層進行批次推斷,以確保您的批次作業不會被中斷。 | 低優先順序的虛擬機價格較低,但可能被中斷。 使用專用虛擬機層的叢集不會被搶先佔用。 |
安全
安全性支柱的目的是保障工作負載的機密性、完整性和可用性。
安全性設計原則提供高階設計策略,可藉由將方法套用至機器學習技術設計,以達成這些目標。
設計檢查清單
根據 安全設計檢閱檢查清單 啟動您的設計策略,找出弱點和控制措施,以改善安全姿態。 擴充策略,以視需要包含更多方法。
可用性:藉由限制對虛擬網路內資源的工作區存取,以減少Machine Learning工作區的攻擊面。
機密性:藉由實作網路隔離來防範Machine Learning工作區的數據外洩。 請確定已明確核准所有外部資源的存取權,且不允許存取所有其他外部資源。
完整性:實作訪問控制,以根據最低許可權原則驗證和授權外部資源的Machine Learning工作區。
完整性:藉由根據特定使用案例或項目設定工作區,實作Machine Learning工作區的使用案例隔離。 此方法遵循最低許可權原則,方法是確保只有需要存取使用案例或專案的數據和實驗資產的個人才能存取工作區。
完整性:規範基礎模型的存取。 請確定只有核准的登錄可以存取模型登錄中的模型。
完整性:規範已核准容器登錄的存取。 確定 Machine Learning 計算只能存取已核准的登錄。
完整性:規範可在 Machine Learning 計算上執行的 Python 套件。 規範 Python 套件可確保只會執行受信任的套件。
完整性:要求在機器學習計算環境中用於訓練的程式代碼進行簽署。 需要程式代碼簽署可確保執行的程式代碼來自受信任的來源,而且尚未遭到竄改。
機密性:遵循角色型訪問控制(RBAC)對 Machine Learning 工作區和相關資源(例如工作區記憶體帳戶)的最低許可權原則,以確保個人只有其角色的必要許可權,從而將潛在的安全性風險降至最低。
完整性:實作待用數據和傳輸中數據的加密,以建立信任和驗證的存取權。
建議
建議 | 優點 |
---|---|
安全性基準:若要增強Machine Learning服務的安全性與合規性,請 套用適用於Machine Learning的 Azure 安全性基準。 | 安全性基準針對重要安全性層面提供量身打造的指引,例如網路安全性、身分識別管理、數據保護和特殊許可權存取。 為了獲得最佳安全性,請使用適用於雲端的 Defender Microsoft 來監視這些層面。 |
受控虛擬網路隔離:設定 Machine Learning 的 受控虛擬網路隔離 。 當您啟用受控虛擬網路隔離時,會為工作區建立受控虛擬網路。 您為工作區建立的受控計算資源會自動使用此受控虛擬網路。 如果您無法實作受控虛擬網路隔離,則必須遵循 網路拓撲建議,將計算資源區隔到一個專用子網,遠離解決方案中其餘資源,包括工作區資源的私用端點。 | 受控虛擬網路隔離可藉由將工作區與其他網路隔離,以增強安全性,降低未經授權的存取風險。 在組織內另一個網路發生缺口的案例中,Machine Learning 工作區的隔離網路仍然不受影響,可保護您的機器學習工作負載。 |
Machine Learning 網路隔離:設定 Machine Learning 工作區 的私人端點 ,並透過該私人端點連線到工作區。 | 機器學習網路隔離可藉由確保工作區的存取安全且受到控制,來增強安全性。 設定工作區的私人端點之後,您就可以將工作區的存取限制為只透過私人IP位址進行。 |
只允許核准的輸出存取:在Machine Learning工作區上設定 輸出模式 受控輸出存取,以 Allow only approved outbound 將數據外流的風險降到最低。 針對您需要存取的資源,設定私人端點、服務標籤或完整功能變數名稱 (FQDN)。 |
此設定可將數據外泄的風險降到最低,以改善數據安全性。 啟用此設定后,取得系統存取權的惡意執行者無法將數據傳送至未核准的外部目的地。 |
相依服務的虛擬網路隔離:使用私人端點設定相依服務,例如記憶體、Key Vault 和 Container Registry,並停用公用存取。 | 網路隔離可藉由將 Azure 平臺即服務 (PaaS) 解決方案的存取限制為僅限私人 IP 位址,來增強安全性。 |
受控識別: 使用受控識別在 Machine Learning與其他服務之間進行驗證。 | 受控識別可藉由排除儲存認證並手動管理和輪替服務主體的需求來改善安全性。 |
停用本機驗證:停用Machine Learning計算叢集和實例的 本機驗證 。 | 停用本機驗證會增加 Machine Learning 計算的安全性,並提供身分識別和資源認證的集中控制和管理。 |
停用公用 SSH 埠:將 設定 remoteLoginPortPublicAccess 為 Disabled ,確定 Machine Learning 計算叢集上的公用安全殼層 (SSH) 埠已關閉。 如果您使用不同的計算,請套用類似的設定。 |
停用 SSH 存取有助於防止未經授權的人員取得存取權,並可能對系統造成傷害,並保護您免受暴力密碼破解攻擊。 |
請勿布建 Machine Learning 計算的公用 IP 位址:在布建 Machine Learning 計算叢集或計算實例時,將 enableNodePublicIp 設定為 false 。 如果您使用不同的計算,請套用類似的設定。 |
避免布建公用IP位址,藉由限制未經授權存取計算實例或叢集的可能性來增強安全性。 |
取得最新的作系統映像: 重新建立計算實例以取得最新的作系統映像。 | 使用最新的映像可確保您維護一致、穩定且安全的環境,包括確保您擁有最新的安全性修補程式。 |
嚴格的 Machine Learning 工作區訪問控制:使用 Microsoft Entra ID 群組來管理工作區存取 ,並遵守 RBAC 的最低許可權原則。 | 嚴格的工作區訪問控制可藉由確保個人只有其角色的必要許可權,來增強安全性。 例如,數據科學家可能有權執行實驗,但無法修改安全性設定,將潛在的安全性風險降至最低。 |
限制模型目錄部署: 將模型部署限制為特定登錄。 | 將模型目錄的部署限制為特定登錄,可確保您只將模型部署到核准的登錄。 這種方法有助於規範開放原始碼基礎模型的存取。 |
加密待用數據:請考慮 搭配機器學習使用客戶自控密鑰。 | 加密待用數據可藉由使用您直接管理的密鑰來加密敏感數據,藉此增強數據安全性。 如果您有管理自己加密密鑰的法規需求,請使用此功能來符合該需求。 |
將數據外泄的風險降至最低: 實作數據外洩防護。 例如,建立服務端點原則來篩選輸出虛擬網路流量,並只允許數據外流至特定的 Azure 記憶體帳戶。 | 藉由限制輸入和輸出需求,將數據外泄的風險降到最低。 |
顧問
以下是適用於 Machine Learning 的 Advisor 安全性最佳做法建議的一些範例:
- 工作區應使用客戶管理的金鑰 (CMK) 加密。
- 工作區應該使用 Azure Private Link。
- 工作區應停用公用網路存取。
- 計算應該位於虛擬網路中。
- 應重新建立計算實例,以取得最新的軟體更新。
Azure 原則
以下是 適用於 Machine Learning 安全性的內建 Azure 原則定義 範例:
- 為指定的 Machine Learning 計算資源設定允許的登錄庫。
- 為特定的機器學習計算資源設定允許的 Python 套件。
- Machine Learning 工作區應停用公用網路存取。
- 應該重新建立機器學習計算實例,以取得最新的軟體更新。
- 機器學習計算應該位於虛擬網路中。
- 機器學習計算應停用本機驗證方法。
- 機器學習工作區應使用 CMK 加密。
- Machine Learning 工作區應該使用 Private Link。
- Machine Learning 工作區應該使用使用者指派的受控識別。
- 在執行針對指定機器學習計算資源的作業之前,需要呼叫核准端點。
- 需要程式碼簽署,用於計算的訓練程式碼。
- 將模型部署限制為特定登錄。
成本優化
成本優化著重於偵測支出模式、將投資放在重要領域,以及在其他領域進行優化,以符合組織預算,同時滿足商務需求。
閱讀 成本優化設計原則 ,以瞭解達成這些目標的方法,以及與其環境中定型和部署模型相關的技術設計選擇所需的取捨。
設計檢查清單
根據 設計檢閱檢查清單和成本優化 的指引來開始你的設計策略,並微調設計,確保工作負載與配置給工作負載的預算相符。 您的設計應該使用正確的 Azure 功能、監視投資,以及尋找經過一段時間優化的機會。
使用優化:選擇適當的資源,以確保它們符合您的工作負載需求。 例如,在選擇 CPU 或 GPU、各種 SKU,或低優先順序與一般優先順序的 VM 時進行選擇。
使用優化:確保未使用的計算資源會在閑置時相應減少或關閉,以減少浪費。
使用優化:套用原則並設定配額,以符合設計的上限和下限。
使用方式優化:測試平行處理定型工作負載,以判斷是否可以在成本較低的 SKU 上符合定型需求。
速率優化:如果您在接下來的一到三年內有良好的使用量估計,請購買 Azure 保留的虛擬機實例。
監視和優化:在定型模型時監視您的資源使用量,例如CPU和 GPU 使用量。 如果資源未完全使用,請修改您的程序代碼,以更妥善地使用資源,或相應減少為較小或更便宜的 VM 大小。
建議
建議 | 優點 |
---|---|
優化計算資源:根據您的工作負載需求優化計算資源。 選擇最適合您工作負載的 SKU:
|
選取正確的計算非常重要,因為它直接影響到執行工作負載的成本。 選擇 GPU 或高效能 SKU 而沒有適當使用量可能會導致浪費費用,而選擇低效能計算資源可能會導致過長的訓練時間和性能問題。 |
優化計算調整: 設定計算叢集以進行自動調整 ,以確保您只使用您需要的內容。 針對定型叢集,將節點數目下限設定為 0,並將節點閑置的時間量設定為適當的時間。 為了減少反覆的實驗,請縮短時間以節省成本。 如需多次試驗,請分配較長的時間,以避免在每次變更後因系統擴展或縮減而產生的費用。 |
設定計算叢集的自動調整,以便在使用量較低時縮減其規模。 將定型叢集的節點數目下限設定為 0,以在不使用時縮減為 0。 |
設定訓練終止原則:設定提早終止原則,以限制訓練運行時間或提早終止。 | 設定終止規則可以幫助您儘早停止效能不佳的執行,以節省成本。 |
針對批次工作負載使用低優先順序虛擬機:請考慮針對不區分時間且可復原中斷的 批次工作負載使用低優先順序虛擬機 。 | 低優先順序的虛擬機可讓大量計算能力用於低成本。 他們會利用 Azure 中的剩餘容量。 |
啟用計算實例的閑置關機:如果已知使用時間,請 啟用計算實例的閑置關機 ,或 排程啟動和停止時間 。 | 根據預設,計算實例可供您使用,累加成本。 設定計算實例在閒置時關閉,或設定運行時間表,在不使用時節省成本。 |
平行化訓練工作負載:請考慮 平行化訓練工作負載。 使用 Machine Learning 中的平行元件協助測試執行它們。 | 平行工作負載可以在多個較小的實例上執行,這可能會節省成本。 |
Azure 保留的 VM 實例:如果您在接下來的一到三年內有良好的使用量估計,請購買 Azure 保留的 VM 實例。 當您有良好的使用量估計值時,請利用服務的保留容量選項。 | 購買 Azure 保留的 VM 執行個體,以預先支付虛擬機的使用費用並提供即用即付定價的折扣。 折扣會自動套用至符合保留的虛擬機使用量。 |
卓越營運
卓越營運主要著重於 開發實務、可觀察性和發佈管理。
營運卓越設計原則 提供高階設計策略,以達成工作負載作業需求的目標。
設計檢查清單
根據 Operational Excellence 的設計檢查清單,開始您的設計策略,用來定義與機器學習相關的可觀察性、測試和部署流程。
開發標準:利用 Machine Learning 模型目錄和登錄來儲存、版本和共用機器學習資產。
自動化以提高效率:遵循良好的 機器學習作業 (MLOps) 做法。 可能的話,請建置端對端自動化管線,以進行數據準備、定型和評分程式。 在開發階段,使用腳本而非筆記本來訓練模型,因為腳本更容易整合到自動化管線中。
放心部署:針對 Machine Learning 工作區、計算叢集、計算實例和其他部署環境實作基礎結構即程式代碼 (IaC)。
可觀察性:監視已部署模型的效能,包括數據漂移。
可檢視性:如果您的模型部署至在線端點, 請啟用Application Insights 來 監視在線端點和部署。 監控訓練基礎結構,以確保您符合基本需求。
簡單性:在可用時,使用針對 Machine Learning 優化的策劃環境。
建議
建議 | 優點 |
---|---|
將 Machine Learning 工作區實例最小化:盡可能減少工作區數目,以減少維護。 | 限制工作區數目可減少維護工作和作業成本。 針對安全性等需求,您可能需要多個不同的工作區。 盡可能將工作區數目降至最低。 |
利用模型目錄和登錄:利用 Machine Learning 模型目錄和登錄來儲存、版本和共用機器學習資產。 使用 Machine Learning 模型目錄來協助您實作模型的 A/B 測試和部署。 |
使用機器學習模型註冊庫來儲存和版本控制您的機器學習模型,以追蹤變更並保持與用於訓練的作業和數據集的譜系關係。 使用 Machine Learning 模型目錄,您的數據科學小組可以探索、評估及微調預先定型的基礎機器學習模型。 將版本化的模型儲存在機器學習模型註冊表中,以支援部署策略,例如 A/B 釋出、金絲雀釋出和回滾。 |
監視模型效能: 監視已部署模型的效能,並 偵測數據集上的數據漂移。 | 監視已部署的模型可確保您的模型符合效能需求。 監視數據漂移可協助您偵測輸入數據中的變更,進而降低模型的效能。 管理數據漂移可協助您確保模型在一段時間內提供精確的結果。 |
監視基礎結構:如果您的模型部署至在線端點, 請啟用Application Insights 來 監視在線端點和部署。 監控訓練基礎結構,以確保您符合基本需求。 請確定您正在收集機器學習的資源記錄。 |
監視端點可讓您清楚看到指標,例如請求延遲和每分鐘請求數。 您可以比較效能與基準,並使用這項資訊來據以變更計算資源。 接近配額限制時,監控網路位元組等計量可能會發出警示,從而防止限速。 同樣地,監視您的訓練環境會為您提供變更訓練環境的資訊。 使用該資訊來決定擴展或縮減,選擇使用不同的高性能 SKU,或者在 CPU 和 GPU 之間做出選擇。 |
精選模型訓練環境:使用針對機器學習優化的精選環境,可用時使用。 |
策展環境 是Machine Learning提供的預先建立環境,可加速部署時間並減少部署和定型延遲。 使用策展環境可改善定型和部署成功率,並避免不必要的映像組建。 精心設計的環境,例如 適用於 PyTorch 的 Azure 容器,也可以針對機器學習上的大型模型訓練進行優化。 |
效能效率
效能效率是指即使負載增加,也能通過管理容量來維護用戶體驗。 此策略包括調整資源、識別和優化潛在的瓶頸,以及優化尖峰效能。
效能效率設計原則提供針對預期使用量達成這些容量目標的高階設計策略。
設計檢查清單
根據機器學習工作負載的關鍵效能指標制定基準,然後基於效能效率的設計審查檢查清單開始您的設計策略。
效能目標:判斷模型可接受的定型時間和重新定型頻率。 設定定型時間的明確目標,以及測試,可協助您判斷符合定型時間目標所需的計算資源、CPU 與 GPU 和 CPU SKU。
效能目標:定義已部署模型的可接受的效能目標,包括響應時間、每秒要求數、錯誤率和運行時間。 效能目標可作為已部署模型效率的基準檢驗。 目標可協助您進行 CPU 與 GPU 判斷、CPU SKU 選擇,以及調整需求。
符合容量需求:選擇適合模型定型的計算資源。
符合容量需求:為模型部署選擇正確的計算資源。
符合容量需求:選擇具有自動調整功能的部署環境,以在需求變動時新增和移除容量。
達到並維持效能:持續 監視已部署模型的效能、檢閱結果,以及採取適當的動作。
達到並維持效能:持續監視已部署模型基礎結構的效能、檢閱結果,以及採取適當的動作。 監控訓練設施,以確保訓練時間需求得到滿足。
建議
建議 | 優點 |
---|---|
選擇適當的計算服務來訓練模型:如果您需要自動縮放,請考慮使用機器學習計算叢集而非計算實例來訓練模型。 根據訓練需求優化計算資源。 首先選擇 CPU 和 GPU。 預設使用 CPU,但請考慮在深度學習、影像或視訊處理或大量數據等工作負載中使用 GPU。 接下來,選擇最適合您任務需求的映像 SKU。 使用測試來選擇計算選項,以在決定基準時優化成本與訓練時間的平衡。 |
選擇正確的運算非常重要,因為它直接影響訓練時間。 選擇正確的 SKU 和 CPU 與 GPU 可確保您的模型定型符合您的需求和效能目標。 選擇過度使用的低效能 SKU 可能會導致長時間的訓練時間和效能問題。 計算叢集可藉由擴展支援水平調整的工作負載來改善效能。 此方法提供彈性來處理具有不同需求的工作負載,並可讓您視需要新增或移除機器。 |
模型部署環境調整:使用部署環境的自動調整功能。 針對 AKS 部署環境,請使用叢集自動調整程式進行調整以符合需求。 針對線上端點,透過與 Azure Monitor 自動調整功能整合,自動調整規模。 | 自動調整會調整已部署模型的實例數目,以符合需求。 |
監視模型效能: 監視已部署模型的效能。 | 追蹤生產環境中模型的效能,會警示您遇到潛在問題,例如數據漂移、預測漂移、數據品質,以及特徵屬性漂移。 監視數據漂移可協助您偵測輸入數據中的變更,進而降低模型的效能。 管理數據漂移可協助您確保模型在一段時間內提供精確的結果。 |
監視基礎結構: 監視在線端點 ,並與監視器整合,以追蹤和監視適當的計量和記錄。 建立在線部署時啟用 Application Insights 。 監視定型基礎結構,並在定型模型時檢閱資源使用量,例如記憶體和 CPU 或 GPU 使用量,以確保您符合基準需求。 |
監視端點可讓您清楚看到指標,例如請求延遲和每分鐘請求數。 您可以比較效能與基準,並使用這項資訊來據以變更計算資源。 接近配額限制時,監控網路位元組等計量可能會發出警示,從而防止限速。 同樣地,監視您的訓練環境會為您提供變更訓練環境的資訊。 使用該資訊來決定擴展或縮減,選擇使用不同的高性能 SKU,或者在 CPU 和 GPU 之間做出選擇。 |
Azure 原則
Azure 提供一組與 Machine Learning 及其相依性相關的大量內建原則。 您可以透過 Azure 原則稽核上述一些建議。 請考慮下列與安全性相關的原則:
- 所指定 Machine Learning 計算允許的登錄。
- 為特定的機器學習計算資源設定允許的 Python 套件。
- 機器學習計算應該位於虛擬網路中。
- 機器學習計算應停用本機驗證方法。
- Machine Learning 工作區應停用公用網路存取。
- 應該重新建立機器學習計算實例,以取得最新的軟體更新。
- 機器學習工作區應使用客戶管理的金鑰進行加密。
- Machine Learning 工作區應該使用私人連結。
- Machine Learning 工作區應該使用使用者指派的受控識別。
- 在執行針對指定機器學習計算資源的作業之前,需要呼叫核准端點。
- 需要程式碼簽署,用於計算的訓練程式碼。
- 將模型部署限制為特定登錄。
請考慮下列與成本優化相關的原則:
請考慮下列與卓越營運相關的原則:
如需全面治理,請檢閱 適用於Machine Learning的 Azure 原則內建定義。
顧問建議
Advisor 是個人化的雲端顧問,可協助您遵循最佳做法來優化 Azure 部署。 Advisor 建議可協助您改善 Machine Learning 的可靠性、安全性、成本效益、效能和營運卓越。
請考慮下列 建議程式 的安全性建議:
- 工作區應使用客戶管理的金鑰 (CMK) 加密。
- 工作區應當使用私密連結。
- 工作區應停用公用網路存取。
- 計算應該位於虛擬網路中。
- 應重新建立計算實例,以取得最新的軟體更新。
請考慮下列 顧問 建議以追求卓越營運:
- 應該啟用Machine Learning工作區中的資源記錄。
後續步驟
請將這些文章視為展示本文所重點建議的文章資源。
- 使用 基準 OpenAI 端對端聊天參考架構 作為如何將這些建議套用至工作負載的範例。
- 使用 Machine Learning 產品檔來建置實作專業知識。