Azure 上的 AI 工作負載作業
當您建置 AI 工作負載並將其轉換為生產環境時,您的作業小組必須完全具備支持這些工作負載的能力,就像任何其他生產工作負載一樣。 因為您的營運小組對於 AI 技術的經驗可能有限,因此在流程初期,必須訓練這些技術,並將 AI 工作負載整合到其工作流程中。 在開發 AI 工作負載的早期將作業和數據小組整合在一起,以增進每個小組流程的相互瞭解。 此早期共同作業非常重要,因為這兩個小組必須密切合作,才能有效地支援 AI 工作負載。 數據小組相依於作業小組,以提供可靠的健康情況訊號和可採取動作的警示。 營運小組依賴數據小組來協助診斷潛在問題,並根據作業標準解決實際問題。 此合作關係有助於確保順暢且有效率的系統效能。
本指南提供如何開發操作機制和做法的建議,以改善 AI 工作負載的支援。 它強調作業和數據小組之間的有效率共同作業。
建議
以下是本文所提供的建議摘要。
建議 | 描述 |
---|---|
監視工作負載的所有層面。 | 雖然許多一般監視和可觀察性考慮也適用於 AI 工作負載,但您需要處理的特定考慮,以確保整個工作負載隨時都受到適當監視。 若要建立監視和可觀察性策略,您可能需要跨不同小組工作,以取得正確的專業知識,並涵蓋所有相關模式和計量。 ▪ 擴充可觀察性平臺 |
將安全部署做法套用至您的 AI 工作負載。 | 採取步驟,確保機密生產數據的最高安全性層級,並將部署方法與零停機時間需求保持一致。 視需要使用適當的工具,並強調不要重塑已經存在的工具和程式。 通常,您將能夠使用已建立的服務來達到高效率,同時啟用安全部署。 ▪ 在您的安全部署實務中包含 AI 工作負載元件 |
接受測試和自動化的DevOps做法。 | 在生產環境中建置、部署及操作 AI 工作負載時,套用 DevOps 做法。 您的工作負載應該允許使用實際使用者輸入在生產環境中進行可觀察性和測試。 只有在強式 DevOps 程式和簡化的自動化允許快速部署、錯誤修正和 A/B 測試時,才能以安全的方式提供這項功能。 ▪ 在生產環境中支持測試 ▪ 盡可能自動化作業作法 ▪ 採用DevOps做法 |
記錄進度。 | 從一開始就建置良好的文件習慣,以允許擷取策略決策、變更歷程記錄,以及工作負載所使用的數據重要資訊。 ▪ 採用良好的檔做法 |
擴充可觀察性平臺
為了達到卓越營運,強固的可觀察性至關重要。 當您的組織採用 AI 技術時,請務必增強可檢視性平臺,以協助確保工作負載健康情況的全面監視。 AI 新手組織可能在其營運小組內缺乏巨量數據、數據科學和 DataOps 專業知識。 因此,訓練操作最佳做法是改善可檢視性平臺的重要第一步。 因此,作業和數據小組應該共同作業,以判斷要擷取和分析的正確監視和計量模式。
若要評估模型的健康情況,需要其特定品質計量的完整概觀。 品質度量通常包括模型新鮮度、輸出正確性和回應延遲等計量。 不過,您應該與數據科學家和工程師共同作業,以建立定義工作負載品質的特定計量。 AI 工作負載的非決定性本質使得對品質的監視變得特別重要,因為這些量測在部署后隨時可能會意外變更。 可觀察性的建議包括:
請與數據科學家和工程師合作,以判斷品質計量。
建置或擴充儀錶板,以評估工作負載的整體健康情況。 此方法應包含元件可用性計量和品質計量。
實作設計完善的可用性和品質警示,讓作業小組能夠了解並採取動作。
編纂標準作業程式,以定義作業小組如何回應品質警示,例如與數據小組合作調查和補救潛在的故障。
請密切關注使用率計量,因為執行 AI 工作負載的成本可能很高。 如果工作負載小組未關閉、相應減少或解除分配資源,當資源不在使用中時,成本可能會快速成長。 作業可藉由監視使用率,協助確保成本保留在預期的參數內。
在您的安全部署實務中包含 AI 工作負載元件
AI 工作負載取決於生產數據,這些數據通常包含敏感性資訊。 因此,請務必在這些工作負載周圍維持最高層級的安全性。 為了協助保護您的數據,請擴充安全 部署做法 ,以包含與工作負載 AI 元件相關的所有程式代碼。 如果您的工作負載有零停機時間需求,請據以設計 AI 元件的部署方法。
若要推斷端點,請根據您的部署模型,使用藍色-綠色或 Canary 部署搭配或不使用流量鏡像。
針對索引服務,請使用具有別名更新的並存部署模型來減少流量。
針對協調流程程序代碼,請使用功能旗標或藍綠色部署。
視您的應用程式、數據平臺和特定網路拓撲而定,您可能需要使用閘道解決方案,例如 Azure 應用程式閘道 或 Azure Front Door。
工具
Azure 機器學習 支援以原生方式使用內建流量分割的藍綠部署。
不要重新發明輪子
由於在線推斷端點基本上是微服務,因此它們會以自己的數據和程式代碼作為完全獨立的工作負載元件,在工作流程中提供特定函式。 基於這個理由,請將在線推斷端點視為具有其生命週期的其他重要微服務。 您可以個別更新在線推斷端點。 不過,與其他較大型工作負載中的微服務一樣,它們必須順暢地一起運作。 因此,您應該在部署更新時設定整合測試的優先順序。 請確定您的部署不會對其他服務造成負面影響,例如模型服務與協調器。 或者,批次推斷端點通常會與作業處理計算緊密結合,並包含在數據管線中。 在這些情況下,將它們視為較大型解決方案的一部分,而不是微服務。
在生產環境中支持測試
作業小組可能不會設計或執行 AI 工作負載測試。 不過,他們必須透過監視、警示和調查來支援 AI 工作負載測試,因為生產環境中需要測試。 由於 AI 不具決定性性質,因此在生產環境中進行測試是必要的,以協助確保工作負載在一段時間內如預期般執行。 作業小組應與工作負載小組密切合作,以有效率地擷取和診斷異常測試結果,並根據作業標準進行診斷。 為了確保作業可以支持測試,而且工作負載小組可以執行測試,這兩個小組都必須配合其程式,才能一起運作。 非生產環境中的測試活動訓練有助於讓小組熟悉作業順序。
盡可能自動化作業作法
將所有工作負載相關的作業作法自動化,包括監視、警示和測試程式。 自動化是讓程式保持可重複、有效率且一致的主要策略。 當您設計自動化策略時,需要人為監督活動,例如正確診斷模型不一致和其他質量訊號。 這特別適用於初始版本。 與維護模型相關的程式對於作業小組而言是新的,因此目前階段品質訊號回應不當的風險較高。 隨著工作負載的成熟,您可能能夠使用自動化來識別具有設計良好品質網關的誤報,但達到該點可能是一個漫長而複雜的程式。
可能的話,請重複使用現有的自動化工具,為您的 AI 工作負載執行新的自動化工作。 例如,如果您已經使用 Azure Pipelines 或 GitHub 工作流程,請繼續使用它們來部署協調流程程式代碼,而不是使用不同的工具。 不過,請避免過度工程,只使用一個自動化工具。 如果某些工作或作業不適合您選擇的工具,請選擇更適當的工具,而不是建置可增加不必要的複雜度自定義解決方案。
注意
若要完全支援工作負載,需要許多交集角色和技術。 數據、基礎結構、安全性和作業小組在一定程度上都相依於自動化。 使用最少的可能工具並將其標準化,以協助讓自動化策略保持可管理且更容易訓練。
採用DevOps做法
在工作負載開發初期,標準化在開發程式中使用 DevOps做法 。 針對沙盒環境以外的所有環境,嚴格定義和強制執行的標準應控管整個開發生命週期。 嚴格禁止任何手動部署活動,以強制執行這些標準。 所有部署,無論是更新、修補程式或新的資源部署,都必須透過符合 安全部署做法的持續整合和持續部署管線來完成。 良好的 DevOps 衛生做法應包括:
版本控制: 盡可能對所有程式代碼資產使用版本控制。 版本控制是 DevOps 和良好變更管理做法的基石,對於順暢的共同作業至關重要。 將版本控制套用至連結庫套件,包括 SDK 和容器映像。 在軟體開發生命週期 (SDLC) 中使用特定版本的連結庫套件時保持一致。 不同版本的連結庫,例如 XGBoost 或 scikit-learn,在各種開發環境中可能會導致工作負載行為的變化。 模型版本設定也是如此。 請確定模型版本在 SDLC 之間保持一致,如此一來,您就不會在生產階段前環境中測試一個版本的模型,並在生產環境中發行不同的版本。
簡單版本命名配置: 使用簡單的版本命名配置來協助確保您一律使用指定資產的最新核准版本。 AI 特定資產可能包括:
- 筆記本程序代碼。
- Orchestrator 程式代碼。
- 數據處理作業程序代碼。
- 機器學習作業程序代碼。
- 模型本身。
您可以運作的工具: 某些工具非常適合用於實驗,但並非針對作業化而設計。 這項限制可能會使得難以或不可能將它們整合到您的作業自動化中。 例如,筆記本是實驗和探勘數據分析工作的絕佳工具,但它們不是生產管線開發工作的好工具。 當您完成實驗時,請將邏輯從這些工具提取出來,並將其放入 Python 套件中,以供作業程式碼使用。
採用良好的檔做法
良好的文件習慣對於所有類型的工作負載都很重要。 AI 工作負載的複雜性讓這些習慣更加重要。 請確定您有工作負載小組專屬的存放庫,其中檔會安全地儲存並受版本控制。 如同其他工作負載,您應該記錄標準資訊。 此標準資訊包含工作負載、安全性設定、網路設計和設定指南中使用的所有工具。 請考慮記錄下列 AI 特定工作負載資訊:
模型定型和基礎數據索引管理資訊: 文件數據源、數據源擁有者、重新整理頻率和偏差消除程式,以建立如何定型模型以及如何處理地面數據。
定型程式的歷程記錄: 詳述您如何藉由記錄您選擇特定超參數、溫度、權數和其他參數的原因,來詳細說明您到達目前核准的設定。 包含您測試的其他設定,以及您在訓練過程中觀察到的行為變更。 這項資訊有助於防止重複失敗或沒有效率的設定。
功能存放區信息: 記錄哪些功能具有最佳預測能力,以及您如何做出該判斷。
數據科學家工作站設定: 徹底記載工作站設定,以簡化數據科學家的上線程式。 指定使用 conda 環境所需的必要連結庫和相依性。
數據轉換資訊: 在數據轉換發生時,從頭到尾記錄整個程式。 記錄數據在擷取時的顯示方式,以及如何在轉換之後呈現。
工具
利用透過MLFlow和 機器學習自動設定和歷程記錄擷取。