将機器學習(ML)實驗從筆記本電腦或資料科學實驗室進行到生産的過程并不是很多人都有過的經驗。資料科學家們經常肩負着這項艱巨的任務,因為他們了解機器學習算法,而且很可能是他們首先提出的。
這篇文章描述了如何開始一個成功的生産機器學習業務生命周期(MLOps),通過在生産服務中從一個有前景的ML實驗轉移到相同算法的最小可行性産品(MVP)。MVP在産品開發中很常見,因為它們可以幫助客戶快速獲得産品/服務,隻要有足夠的特性使其可行,并推動下一個基于使用回報的版本。在機器學習上下文中,MVPs幫助分離生産ML服務的關鍵需求,并幫助以最小的努力傳遞它。
我們描述的生産機器學習MVP的步驟是從過去幾年與資料科學家群組織的數百個用例和經驗中總結出來的。如下圖所示:
圖1:從開發人員實驗到生産ML的路徑
步驟1:确定您的用例:您想要做什麼?
這似乎是顯而易見的,但是第一步是了解您的業務應用程式的的最低需求是什麼,以及您的實驗和最低需求之間的差距。例如,如果您的實驗假設可用的特性比業務應用程式能夠提供的特性更多,那麼這種差距可能會影響生産。找到這種差距的最佳方法是定義支援您的業務應用程式的機器學習應用程式。
以下是一些你需要回答的問題:
• 從ML的角度來看,這個ML應用程式将幫助解決什麼業務問題?
• ML app需要預測什麼?它将接收什麼輸入?
• 是否有足夠的資料來訓練模型和度量有效性?這些資料是否幹淨、可通路等?用于實驗的資料可能是人工清理的。生産教育訓練資料也需要清理。
• 是否有初步的實驗(在開發人員/筆記本/筆記本電腦環境中)顯示出一種有前景的算法方法來傳遞必要的預測/品質?
• ML應用程式需要如何與業務應用程式(REST、Batch等)內建?
一旦這些問題得到了回答,您就可以大緻了解ML應用程式在MVP中需要什麼。這為步驟2和步驟3奠定了基礎。
步驟2:開列狀态清單:你有什麼?
一旦确定了用例,下一步是整合起始狀态,以便您可以将旅程映射到目的地。啟動狀态的典型特征包括以下來自所需ML應用程式的開發人員級原型的構件:
• 資料科學家環境中的一個軟體程式,如Jupyter筆記本、R開發人員環境、Matlab等。該代碼通常執行初始(有前景的)機器學習模型和實驗。
• 此代碼已認證一個或多個位于資料湖泊或資料庫等中的資料集運作。這些資料湖泊和資料庫是客戶正常資料中心基礎設施環境的一部分。這些資料集可能存在于筆記本電腦中,也可能需要移動到資料湖中。
• 在這些開發人員環境中運作了教育訓練代碼,有時還存在示例模型。
在許多方面,這種啟動狀态類似于其他(non-ML)域中的軟體原型。與其他軟體一樣,原型代碼可能沒有使用生産版本中所期望的所有連接配接器、規模因素和加強功能來編寫。例如,如果生産版本需要從雲對象存儲庫讀取資料,而您的實驗需要讀取存儲在筆記本電腦的資料,則需要将對象存儲連接配接器添加到生産管道代碼中。類似地,如果您的實驗代碼在出現錯誤時退出,這對于生産來說可能是不可接受的。
還有一些特定于機器學習的挑戰。例如:
• 這裡生成的模型可能需要導入來引導生産管道。
• 可能需要将特定于ML的檢測添加到代碼中,例如,報告ML統計資訊、生成特定于ML的警報、收集檢測(執行的統計數字)作長期分析等用。
步驟3:定義你的MVP産品
現在您已經準備好定義MVP:您将在生産中使用的第一個基本服務。為此,您需要确定第一個生産位置,即代碼運作的第一個位置。
• 這在很大程度上取決于您的環境。一個短期的選擇可能是您為其他應用程式(non-ML等)提供的資料中心基礎設施中。您可能還有一個長期的觀點,包括與軟體或雲和服務政策的其他方面的內建。
除了确定第一個位置外,你還需要處理以下事項:
• 通路資料湖等可以是通用的,除非組織(特别是企業)設定了應用于分析使用的特定資料通路限制。
• 必須安裝機器學習引擎(Spark、TensorFlow等)。如果使用容器,這可能是非常通用的。如果使用分析引擎,它可能具有很高的ML特性。需要找到并包含所有依賴項(您的管道運作需要通路哪些庫,等等)。
• 需要進行分析引擎和容器大小調整,以確定初始測試和調試的性能範圍是合理的。測試和調試将是疊代的。
• 需要定義更新過程。例如,如果您決定更新您的管道代碼,并且它需要以前沒有安裝的新庫,那麼您将需要考慮如何處理它。
步驟4:為生産準備代碼
現在,您需要考慮您的實驗(如果有的話)中的哪些代碼需要在生産中使用。如果您不打算在生産中重新教育訓練模型,那麼您需要考慮的代碼隻是用于推理。在這種情況下,一個簡單的解決方案可能是部署由供應商提供的預定義推理管道。
如果您計劃在生産環境中進行再教育訓練,或者有一個自定義需求,但是預建構的推理管道不能滿足這個需求,那麼您将需要為生産準備您的實驗代碼,或者建構任何您的實驗代碼中沒有的新的生産功能。作為其中一部分,你需要考慮以下幾點:
• 淬火生産(錯誤處理等)
• 子產品化以便重用
• 調用連接配接器,以便在步驟3中辨別的生産位置之間檢索和存儲資料。
• 您将把代碼儲存在哪裡(Git等)?
• 您應該添加什麼工具來確定您可以檢測和調試模型的生産問題?
步驟5:建構一個機器學習應用程式
既然已經準備好了所有代碼塊,現在就可以建構機器學習應用程式了。為什麼這與隻是建構管道不同?為了在生産中可靠地執行,還需要確定編排管道、管理和版本模型以及其他輸出等的機制也到位。這包括如何在生成新模型時更新管道,以及如何在改進了管道代碼後将新代碼投入生産。
如果您正在讓生産ML運作,您可以在運作時中配置ML應用程式,并将其連接配接到您在步驟1到4建立的代碼和其他構件中。圖2顯示顯示了一個由ParallelM在MCenter運作時生成的示例ML應用程式。
圖2:一個ML應用程式示例
步驟6:将機器學習應用程式部署到生産環境中
一旦有了機器學習應用程式,就可以部署了!要進行部署,您需要啟動ML應用程式(或其管道)并将它們連接配接到您的業務應用程式。例如,如果使用REST,您的ML應用程式将在啟動時建立一個REST端點,您的業務應用程式可以調用它進行任何預測(參見圖3)。
圖3:ML應用程式生成一個REST服務供業務應用程式使用
請注意,部署可以被認為是MVP的“完成”,但這絕不是您旅程的終點。一個成功的機器學習服務将運作數月或數年,在此期間需要管理、維護和監視。
根據您在步驟5中選擇的解決方案,部署可以是自動化的,也可以是手動的。MLOps運作時工具提供自動部署。如果您在運作ML應用程式時沒有這些工具,您可能需要編寫腳本和其他軟體來幫助您部署和管理管道。您可能還需要與您的IT組織合作來完成此任務。
步驟7:做得更好
回想一下,在步驟3中,您可能選擇了一個短期位置來運作生産ML MVP。在步驟5和步驟6中部署MVP之後,您可能需要進一步的步驟來檢查MVP的結果,并重新考慮關鍵的基礎設施決策。現在代碼/MVP至少在第一個基礎設施中測試和運作,您可以比較和對比不同的基礎設施,看看是否需要改進。
步驟8:持續優化
注意,步驟3 - 7在此機器學習應用程式服務的業務用例的生命周期内不斷重複。ML應用程式本身可以重新定義、傳回、傳輸到新的基礎設施,等等。您可以看到MVP是如何被使用的,您從您的業務中得到了什麼回報,并相應地進行改進。
MLOps還有什麼?
MLOps是在生産環境中部署和管理模型的綜合實踐。上面的步驟顯示了如何通過部署第一個模型開始使用MLOps。一旦您采取了上述步驟,您将在生産中至少有一個機器學習應用程式,然後您将需要在其生命周期中對其進行管理。然後,您可能需要考慮ML生命周期管理的其他方面,例如管理模型的治理,遵守您的業務的任何監管需求,制定kpi以評估ML模型為業務應用程式帶來的好處,等等。
我們希望這篇文章對你有用。
文章來源:由怡海軟體編譯