MLOps工作流在磚

本文描述了如何使用MLOps磚Lakehouse平台優化的性能和長期效率機器學習(ML)係統。Beplay体育安卓版本它包括一般建議MLOps架構,描述了一個廣義工作流使用磚Lakehouse的平台,您可以使用作為一個模型你毫升開發到生產的過程。Beplay体育安卓版本

MLOps是什麼?

MLOps是一組流程和自動化步驟來管理代碼、數據和模型。它結合了DevOps, DataOps ModelOps。

MLOps lakehouse

毫升等資產代碼、數據和模型開發的階段,從早期發展階段,沒有嚴格的訪問限製和不嚴格的測試,通過一個中間測試階段,嚴格控製的最後一個生產階段。磚Lakehouse平台允許您管理這些資產在一個平Beplay体育安卓版本台統一的訪問控製。您可以開發數據應用和ML的應用程序在同一平台,減少風險和延遲與移動數據有關。Beplay体育安卓版本

一般建議MLOps

本節包含了一些一般性的建議MLOps磚上的更多信息的鏈接。

為每個階段創建一個單獨的環境

一個執行環境的地方或使用代碼創建模型和數據。每個執行環境包括計算實例,運行時和庫,自動工作。

磚建議創建單獨的環境毫升代碼和模型發展的不同階段與明確的階段之間的轉換。本文中描述工作流遵循這一過程,使用階段的常見的名字:

其他配置也可以用來滿足您的組織的特定需求。

訪問控製和版本控製

訪問控製和版本都是關鍵的組件的任何軟件操作過程。磚建議如下:

  • 使用Git版本控製。管道和代碼應該存儲在Git版本控製。階段之間移動毫升邏輯可以解釋為移動代碼的開發分支,staging分支,發布分支。使用磚回購與你的Git提供者集成和同步筆記本與磚工作區和源代碼。磚還提供了額外的工具Git集成和版本控製;看到開發工具和指導

  • 在Lakehouse架構使用增量表中存儲數據。數據應該存儲在一個Lakehouse架構雲在你的帳戶。原始數據和功能表應該存儲三角洲表與訪問控製來決定誰可以閱讀和修改。

  • 與MLflow管理模型和模型開發。您可以使用MLflow跟蹤模型開發過程和保存代碼快照、模型參數、指標、和其他元數據。使用模型注冊版本管理模型和部署狀態。模型注冊中心提供人則和一個API,這樣你就可以與CD係統集成,並處理訪問控製模型

部署代碼,而不是模型

在大多數情況下,磚建議在ML開發過程中,你推廣代碼,而不是模型,從一個環境到另一個。移動項目資產這種方式確保毫升開發過程中的所有代碼經過相同的代碼審查和集成測試流程。它還確保生產版本的模型訓練在生產代碼。更詳細討論的選擇和權衡,明白了模型部署模式

發展階段

發展階段的重點是實驗。數據科學家開發的特性和模型優化模型的性能和運行實驗。開發過程的輸出是毫升管道代碼,包括特性計算、模型訓練、推理和監控。

MLOps發展階段圖

編號的步驟對應於圖中所示的數字。

1。數據源

數據科學家在dev工作環境經常有生產數據的隻讀訪問。在某些情況下,以滿足數據治理需求,開發環境可能隻訪問一個鏡子或修訂版本的生產數據。數據科學家也有讀寫訪問到一個單獨的開發存儲環境開發和試驗新功能和其他數據表。

2。探索性數據分析(EDA)

數據科學家在交互式探索和分析數據,迭代過程使用筆記本,可視化磚的SQL

這個特別的過程一般不管道的一部分,將被部署在其他執行環境。

3所示。代碼

毫升係統所有的代碼存儲在一個代碼庫。數據科學家創建新的或更新的管道在開發分支的Git項目。可以開發的代碼的內部或外部使用磚與磚同步的工作空間磚回購

4所示。更新功能表

模型開發管道讀取原始數據表和現有的功能表,和寫入表中特色商店。這個管道包括兩個任務:

  • 數據準備。檢查數據質量問題。

  • 創建或更新功能表。數據科學家開發或更新代碼創建功能。這些管道可以從功能存儲和讀取其他Lakehouse表和寫入功能開發存儲環境中的表。數據科學家然後使用這些開發功能表來創建原型模型。當代碼是晉升為生產,這些變化更新生產特性表。

    功能從其他毫升管道管道可以分別管理,特別是如果他們是由不同的團隊。

5。火車模型

數據科學家開發模型訓練和其他管道在隻讀生產數據或非生產數據。管道可以在開發或使用功能表prod環境。

這個管道包括兩個任務:

  • 培訓和調優。模型訓練過程從功能存儲讀取特性和銀-或金牌Lakehouse表,日誌模型參數,指標和工件MLflow跟蹤服務器。

    當培訓和hyperparameter調整完成後,數據科學家保存最後的模型工件跟蹤服務器。這記錄之間的聯係的模型,其輸入數據,並用於生成的代碼。

    當這個培訓管道在登台和生產運行,毫升工程師(或他們的CI / CD代碼)可以加載模型通過使用URI(或路徑),然後把模型到模型中注冊表管理和測試。

  • 評估。通過測試了數據質量評估模型。這些測試的結果被記錄到MLflow跟蹤服務器。

    如果您的組織的治理需求包括額外的信息模型,您可以保存使用MLflow跟蹤。典型的工件是純文本描述和模型解釋像那些由世鵬科技電子或石灰。

6。提交代碼

開發代碼後featurization、培訓、推理和其他管道、科學家或ML工程師提交的數據開發分支變化到源代碼控製。

分段階段

這個階段的重點是測試毫升管道代碼以確保它是準備生產。所有的ML管道代碼測試在這個階段,包括培訓以及featurization管道代碼模型,推理代碼,等等。

毫升工程師創建一個CI管道來實現單元測試和集成測試運行在這個階段。分段過程的輸出是一個觸發器的發布分支CI / CD係統開始生產階段。

MLOps分期階段圖

編號的步驟對應於圖中所示的數字。

交付準備環境可以有自己的存儲區域進行測試和ML管道特性表。這個存儲通常是暫時的,隻保留直到測試完成。開發環境也可能需要訪問這個數據存儲用於調試目的。

1。合並請求

部署過程開始當一個毫升工程師創建一個請求合並到staging分支(通常是“主要”分支)在源代碼控製。合並請求觸發一個持續集成(CI)的過程。

2。單元測試

CI過程自動構建源代碼和觸發單元測試。如果測試失敗,合並請求被拒絕。單元測試不與數據或其他服務。

3所示。集成測試(CI)

然後CI過程運行集成測試。集成測試運行所有管道(包括featurization、模型訓練、推理和監控),確保它們正常工作在一起。交付準備環境應該盡可能密切與生產環境一致是合理的。

為了減少運行集成測試所需的時間,模型訓練步驟可以忠誠的測試和速度之間權衡。例如,您可能使用一小部分數據或運行少訓練迭代。根據模型的用途,你可以選擇做全麵的負載測試。

分段分支上的集成測試通過後,可以促進生產的代碼。

4所示。合並分段分支

如果測試通過,代碼可以被合並到staging分支。如果測試失敗,CI / CD係統應通知用戶和帖子結果合並(拉)請求。

你可以安排定期舉辦部門集成測試。這是一個好主意如果分支是由不同的用戶經常更新的。

5。創建一個發布分支

當代碼已經準備好部署到生產、ML工程師創建一個發布分支,觸發CI / CD係統更新生產工作。

生產階段

毫升工程師自己的生產環境,毫升管道在哪裏部署。這些管道計算新的特性值,訓練和測試新的模型版本,發布預測下遊表或應用程序,並監控整個過程,以避免性能下降和不穩定。

數據科學家通常不具備寫或計算訪問生產環境。然而,重要的是,他們的可見性測試結果,日誌、模型構件,和生產管道狀態,允許他們在生產中識別和診斷問題。

MLOps生產階段圖

編號的步驟對應於圖中所示的數字。

1。更新功能表

隨著新的生產數據可用,這個管道吸入並更新生產特性存儲表。這個管道可以運行批處理或流媒體工作,可以安排,觸發,或連續運行。

2。火車模型

火車上的生產版本的模型完整的生產數據和與MLflow模型注冊中心注冊它。這個管道可以觸發代碼更改或自動化的培訓工作。

這個管道包括兩個任務:

  • 培訓和調優。在開發階段,autologging保存的記錄培訓過程MLflow跟蹤服務器。這包括模型指標、參數、標簽和模型本身。

    在開發期間,許多算法和hyperparameters數據科學家可能測試。生產培訓代碼,通常隻考慮表現選項。限製調優以這種方式節省時間,可以減少方差在自動調優再培訓。

  • 評估。模型質量評價測試了生產數據。這些測試的結果被記錄到MLflow跟蹤服務器。這個步驟使用指定的評價指標數據的科學家發展階段。這些指標可以包括自定義代碼。

模型訓練完成後,注冊的模型工件MLflow模型注冊用於生產環境。初始模型注冊階段是“沒有”。

3所示。持續部署(CD)

CD過程需要新模型(模型注冊階段= None),測試他們(過渡到“階段=分期”),如果成功部署他們(促進他們”階段=生產”)。光盤可以使用來實現模型注冊中心人或者你自己的CD係統。

這個管道包括3個任務:

  • 合規檢查。這些測試負載模型從模型中注冊表,執行任何所需的合規檢查您的組織(例如,標簽或文檔)和批準或拒絕請求基於測試結果。合規檢查需要人類專家,這個自動化的步驟可以計算統計數據或可視化人工審核。不管結果如何,記錄結果的模型版本模型注冊標記和評論中使用元數據描述。

    您可以使用MLflow UI管理階段過渡和轉換請求手動或使用MLflow api和人自動化。如果模型通過合規檢查,然後轉換請求批準和模型是晉升為“舞台=”。如果模型失敗,請求被拒絕和過渡模型是模型中搬到舞台=存檔的注冊表。

  • 比較分段生產。為了防止性能下降,你應該比較模型的性能提升為暫存當前生產版本。比較指標和方法依賴於用例和可以包括金絲雀部署,A / B測試,或者其他方法。對比測試的結果應該保存到Lakehouse指標表。

    如果這是第一次部署還沒有生產版本,你可以比較臨時版本業務啟發式或其他閾值作為基準。

  • 請求模型過渡到生產。如果候選人模型通過比較測試,你可以請求轉換模型中注冊階段=生產。你可以使用MLflow UI手動或自動使用MLflow API和人。這也是一個好主意考慮需要人工批準在這一點上。這是最後一步之前發布的模型生產和集成到現有的業務流程。您可以包括人工審查核實合規檢查,性能比較和任何其他檢查很難自動化。

4所示。在線服務(REST api)

對於低延遲的用例,您可以使用MLflow部署模型的在線服務。選項包括磚模型的服務,雲提供者服務端點或自定義應用程序服務。

係統負載服務生產模型版本從模型中注冊表。對於每個請求,它從網上獲取功能特性存儲、成績數據,並返回預測。您可以使用服務日誌請求和預測係統,數據傳輸層,或模型。

5。推理:批處理或流

批處理或流推理工作的管道從功能存儲讀取最新數據,加載模型從生產模型版本注冊表,成績數據,並返回預測。批處理或流推理通常是最具成本效益的選擇更高的吞吐量,延遲高的用例。

批處理作業通常發布預測Lakehouse表、JDBC連接,或平麵文件。流工作通常發布預測Lakehouse表或消息隊列,如Apache卡夫卡。

6。監控

您應該監視的輸入數據和模型預測統計特性(如數據漂移和模型性能)和計算性能(如錯誤和吞吐量)。您可以創建警報基於這些指標或發布在儀表板。

無論部署模式,您可以登錄和預測模型的輸入查詢三角洲表。您可以創建工作漂移監測數據和模型,你可以使用磚SQL儀表板上顯示狀態和發送警報。數據科學家可以授予訪問日誌和度量在開發環境中對生產問題進行調查。

這個管道包括3個任務:

  • 數據攝取。這個管道讀取日誌從批處理、流媒體、或在線推理。

  • 檢查數據的準確性和漂移。管道計算指標的輸入數據,模型的預測,和基礎設施的性能。數據科學家指定數據和模型指標在開發期間,和ML工程師指定基礎設施指標。

  • 發布標準。管道寫入Lakehouse表進行分析和報告。您可以使用磚SQL來創建監視儀表板跟蹤模型的性能,並設置監控工作或儀表板工具指標超過指定閾值時發出通知。

7所示。觸發模型再培訓

您可以創建一個計劃工作與最新數據重新訓練模型,或者你可以建立一個監測觸發培訓當它檢測到漂移的數據或模型。如果模型監測指標顯示性能問題,數據科學家可能需要返回到開發環境和開發一個新的模型版本。

請注意

完全自動化的培訓很難得到正確的模型,因為它可能不是明顯的如何解決一個問題被監測模型。例如,模型觀測數據漂移造成的性能問題可能會被再培訓模型固定在更新數據,或者可能需要額外的(手動)功能開發工作來編碼一個新的信號數據。

  • 如果定期新數據是可用的,您可以創建一個安排的工作運行模型訓練代碼最新的可用數據。

  • 如果監控管道可以識別模型的性能問題和發送警報,你可以配置自動觸發再培訓。自動再培訓和重新部署以最少的人工幹預可以改善模型性能如果管道可以檢測情況,如輸入數據的分布的改變或退化模型的性能。