Site icon Mr. 沙先生

什麼是 MLOps ? 以 Machine Learning 角度看 DevOps 潮流

什麼是 MLOps ? 簡單來說就是以 Machine Learning 為主的元素加上 DevOps 的概念讓整個 Machine Learning 生命週期有一個完整的 Pipeline 管理,如果說 DevOps 是為了解決 Developer 和 Operator 的問題,而 MLOps 就是為了解決資料科學家 (Data science) 和資料工程師 (Data engineer) 的問題

MLOps 與 DevOps 的差異 ? 這是我剛接觸 MLOps 時心中的疑問。

與其說是差異,不如說 MLOps 是 DevOps 的延伸,MLOps 本身也涵蓋了 DevOps 必須做到的版本控管 (Source Control)、持續整合 (Continuous integration)、持續交付(Continuous Delivery)、持續部署 (Continuous Deploy) 除此之外 MLOps 更多了資料集處理 (DataSet)、Machine Learning (Model training, Algorithms) 元素。

為何需要 MLOps ? 其實和 DevOps 的核心概念一樣,就是為了讓整個流程更為順暢、自動化,讓團隊之間可以更緊密的合作,但 MLOps 更在乎以下要點

資料的來源通常很多元,也有可能是集中儲存的大型 Datalake 無論是在哪裡都需要考量如何自動化獲取這些資料來源,而並非手動批次處理,當然我也遇過可能一個月才需要更新一次 DataSet 的情況就需要 Case-by-case 討論。

基本上版本控管已經是不可或缺的一部分,MLOps 除了程式控管以外還必須考量參數配置,唯有最佳化的參數才能調教出最好的 Model,而每一次的版本 Release 紀錄也是很重要的一環。

Training Model 的歷程也是很重要的一環,常常聽到 Data science 反應過去曾經 train 過某一版的 Model 效果很好,但因為沒有留下當時的 Model 和參數紀錄,即使有 train 好的 model 但也無法再重現當時 training 的設定。

記得過去有一位前輩跟我談到 Machine Learning 是一個很花錢的技術,不是金融或電信業等夠有錢的公司根本無法負擔 training 要支付的龐大成本,但是 Cloud 的出現讓 Machine Learning 的成本大幅降低,所以幾乎在這個時代要進行 ML/AL 一定都少不了使用雲端平台,而成本這件事情也隨著 pay-as-you-go 的概念將錢花在刀口上。

說到要跑程式,當然免不了環境一致性啊,尤其是 Training Model 如果遇到環境問題導致 Inference 不理想可是很嚴重的問題,所以 Model 的環境幾乎都是採用 Container 來跑,除了便利性以外更能確保環境一致。

Model 的回溯性其實和 Training Model History 有著密切的關係,MLOps 的設計有一個很大的重點是「Model 必須紀錄版號」舉例 face-model-v1.0.1 而 training job 最好也是以 face-model-v1.0.1-train 命名,為的是可以回推當時是在哪一個 training job 產生出來的,而 training job 也要紀錄使用的 DataSet, Algorithms, Config 用於反推。

Training Model 的 Scale-out,當你的 ML 團隊逐漸擴大後,在同時間 training 多組 Model 的情況就會變多,最好在設計 MLOps 初期就把這件事情考量好,降低需要調整的幅度與風險。

程式要 Blue/Green,Model 當然也要能 Blue/Green 啊!一次更換的風險實在太大,即使 Test Data 再齊全也比不上 Production 環境那髒到不行的資料,如果能 Blue/Green 先分配新舊 Model 權重 (e.g. 10%/90%) 慢慢更換會是風險最低的方式。

Inference 的時機通常關乎 Deployment 的方法,是 Real-time 或 Batch 都需要被定義清楚,而 Real-time 通常需要一個 HTTP Endpoint 常駐等待被 inference 所以成本也相對拉高。

誰適合導入 MLOps ? 當初期需求量不大時且 train model 只需要短短幾分鐘,其實沒有必要大費周章地建立一個 MLOps,跟 DevOps 的概念差不多,搞不好轉頭跟旁邊的 Data science 喬一下就搞定了,根本不用浪費時間跑 Pipeline,但是當你的 ML 團隊越來越龐大時,通常 3 位以上就可以開始考慮 MLOps 的建立,因為 3 位以上就有可能產生小團體了 XDD …

這篇其實是一個比較粗略的 MLOps 概念,每一個團隊 Build 出來的 MLOps Pipeline 因為應用情境與產業可能都會有一些不同,但核心概念大多相同,都是讓時間與金錢花在刀口上。

Exit mobile version