簡介

如同之前炒作起來的 DevOps 就是讓開發兼作維運,不管你近來是啥職位,你就給我通通都要會的伎倆,目標在讓公司降低成本,加速開發以及迭代的速度,其核心在於整體流程

開發 -> 自動化測試 -> 自動化整合 -> 自動化部署 -> 回到開發

經由以上迭代的過程,將工作切小,快速把功能放到使用使用者面前,快速檢討,重新下一次的開發,也利用大量自動化的工具,減少開發人員與維運人員的溝通 (其作法就是強迫大家都要會)

同理,MLOps 也是一樣,目標就是要讓功能 (AKA: ML 模型) 能夠自動化快速的發佈到使用者面前,好加速開發以及改進,與 DevOps 較為不同的是,在做 ML 模型時,還會牽扯到資料,所以他的 Pipeline 會切分的更多一點

Data -> Model -> Deployment Model -> Data

再訓練模型時,資料來源可能又來自於使用者,其迭代循環就可能變得更複雜 (要把資料收回來)

架構

MLOps

Data

在資料這塊,需要自動化整合來源資料到資料工程師做 Data Engineering 的部分,其方法大概就是用一些 ETL 和統一的介面讓資料工程師方便快速可以取得想要取得的資料,最後會產出一份 AI 工程師需要的資料集,回到自動化的核心,我們也需要自動化驗證資料的對錯,這邊就可以用一些資料校驗的工具,在工程師產出資料集前後幫忙做過濾以及校驗,這邊也會需要方便讓 AI 工程師獲取,以及需要打一些版本,讓所有的 Model 可以被重現 (重新 Training)

Model

AI 工程師在確認要用哪些演算法後,透過資料工程師給予的資料集,就可以做出 ML Model ,但是在校驗這個模型是否堪用時還需要做 Verify 看他的準確度,以及一些 Edge case 有沒有符合預期,這邊也會希望是自動化 (把程式推上去後自動完成) ,然後再打版號時,除了本身演算法的程式碼以外,還有訓練的資料,好讓之後可以重現

Ops

在產出模型以後,希望會以自動化的方式,將該模型做成服務 (Backend) 來提供給使用者,這邊也會希望是自動化的,可以使用某些現有的工具,例如:Triton 去自動產生後端服務,最後如果使用者會產出資料也希望可以將其資料收回,讓資料科學家在未來可以使用,並且提供給未來的模型。而且為了讓模型的好壞可以被 AI 工程師觀察到 Model 的 Monitor ,也是很重要,可以打一些 Sample 回去讓 AI 工程師觀察,除此之外,效能的部分也可以透過 Request 來回的時間以及一些硬體的 Monitor 來觀察到