什麼是 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 更在乎以下要點
- DataSet Sources
資料的來源通常很多元,也有可能是集中儲存的大型 Datalake 無論是在哪裡都需要考量如何自動化獲取這些資料來源,而並非手動批次處理,當然我也遇過可能一個月才需要更新一次 DataSet 的情況就需要 Case-by-case 討論。
- Training Model 版本控管、演算法程式版本控管
基本上版本控管已經是不可或缺的一部分,MLOps 除了程式控管以外還必須考量參數配置,唯有最佳化的參數才能調教出最好的 Model,而每一次的版本 Release 紀錄也是很重要的一環。
- Training Model History
Training Model 的歷程也是很重要的一環,常常聽到 Data science 反應過去曾經 train 過某一版的 Model 效果很好,但因為沒有留下當時的 Model 和參數紀錄,即使有 train 好的 model 但也無法再重現當時 training 的設定。
- Training Model Costs
記得過去有一位前輩跟我談到 Machine Learning 是一個很花錢的技術,不是金融或電信業等夠有錢的公司根本無法負擔 training 要支付的龐大成本,但是 Cloud 的出現讓 Machine Learning 的成本大幅降低,所以幾乎在這個時代要進行 ML/AL 一定都少不了使用雲端平台,而成本這件事情也隨著 pay-as-you-go 的概念將錢花在刀口上。
- Model 執行環境的一致性
說到要跑程式,當然免不了環境一致性啊,尤其是 Training Model 如果遇到環境問題導致 Inference 不理想可是很嚴重的問題,所以 Model 的環境幾乎都是採用 Container 來跑,除了便利性以外更能確保環境一致。
- Model 的回溯性
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 用於反推。
- 平行訓練 Model 的工作流程
Training Model 的 Scale-out,當你的 ML 團隊逐漸擴大後,在同時間 training 多組 Model 的情況就會變多,最好在設計 MLOps 初期就把這件事情考量好,降低需要調整的幅度與風險。
- Model Blue/Green deployment
程式要 Blue/Green,Model 當然也要能 Blue/Green 啊!一次更換的風險實在太大,即使 Test Data 再齊全也比不上 Production 環境那髒到不行的資料,如果能 Blue/Green 先分配新舊 Model 權重 (e.g. 10%/90%) 慢慢更換會是風險最低的方式。
- Inference 的時機
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 因為應用情境與產業可能都會有一些不同,但核心概念大多相同,都是讓時間與金錢花在刀口上。