什麼是MLOps?

张蒙蒙 2024-08-15 12:44 18次浏览 0 条评论 taohigo.com

簡介

MLOps (machine learning operations)是用來幫助機器學習有關人員更加高效的開發以及維護機器學習生產線。

我個人的理解有點像是服務機器學習的devOps。

機器學習的生產線大概有三步,

  1. machine learning design, 算法的設計以及實驗
  2. development, 開發
  3. operations, 運維

這三者環環相扣,最好能夠形成一個反饋系統,也就是說運維的輸出能夠反哺到第一步的算法設計。這樣一來,整個系統就會健康地運轉起來,更多的數據意味著模型的進一步優化。

為什麼會有這個崗位,為什麼需要他?

要搞清楚這個問題,首先得看現在的機器學習項目本身有哪些需求,也可以理解成best practices。(甚至可以理解成綱領。。。)

機器學習項目是可以共同合作的

機器學習項目不是一個黑盒子,隻管進出。相反,從數據提取,到模型開發,甚至到最後的監控,這些環節都要求是透明的,牽一發動全身是能夠量化的。

機器學習模型是可以復現的

相對於傳統的軟件開發,做好瞭代碼的版本管理,基本就可以實現復現。

機器學習模型的復現要求會更高一些,除瞭代碼的版本管理,數據也需要做版本管理,甚至是整個infra的平臺也需要做版本管理。

簡而言之,給我一個infra平臺的版本號,給我一波數據的版本號,給我一個代碼的版本號,我就能夠重新復現模型。

機器學習是可持續的

這個概念就是之前提到的,模型訓練不是一次性的事情,隨著場景的增加,對模型的要求會越多越多。所以這時候就需要保證機器學習這個pipeline是可持續的,喂進去新的數據,我能夠重新訓練得到新的模型。

機器學習是可以測試和監控的

這一點和傳統的軟件開發很像,隻不過對於機器學習來說,他觀察的指標相對於傳統軟件開發會更多一點,比如說模型預測的各種指標,期待的表現等等。

明確瞭上面幾點需求,我們就會發現現在的機器學習從業人員或者infra團隊很難滿足這些。

一般來說算法工程師會主要鉆研於模型的設計,他的最大目標可能是提升模型的精度,

傳統的infra團隊他又不太瞭解機器學習,很難有針對性地服務機器學習項目。

這樣一來,也就有瞭這個交叉的領域,MLOps,專門針對Machine Learning的Operations。

MLOps能帶來什麼好處呢?

  1. 支持scale up,數據變多不再變得可怕,人員變多不再變得可怕,項目變多不再變得可怕
  2. 減小風險,減小瞭由於人工操作所帶來的很多的風險,因為自動化意味高效和穩定
  3. 各司其職(這個是我自己的體會),算法工程師就隻需要關註算法模型的提升,數據工程師就隻需要關心數據的分析和獲取,infra/IT就專註去搭建工具。中間很多的交叉活統統交給MLOps去搞。

MLOps具體要幹哪些活呢?

回答這個問題,其實也就是對應上面聊過的需求,而提出的解決方案。

為瞭實現上面這些best practices,需要具體從哪幾個方面入手?

  1. 搭建可以共享的infra平臺,比如說數據的管理,代碼庫的管理,docker的管理
  2. 代碼,數據,模型做版本管理,做到每一個commit都有跡可循,每一個模型都有相應的metadata
  3. 搭建機器學習pipeline,可以跑end to end的模型訓練,(而不是人人都有一套祖傳的pipeline)
  4. 搭建測試和監控環境,確保模型是在預期的表現

那麼從何做起呢?

既然已經知道瞭MLOps是多麼多麼的好,從道理上感覺也說得過去,那麼應該怎麼開始呢?

說句實話,我現在還沒太多的發言權。

這個問題有點難。

這裡面臨的難點是,

  1. 團隊人員結構的改變,每個人員責任的變化
  2. 改變用戶本身的使用習慣
  3. 技術方面,相關的機器學習平臺各種各樣,但是也不是套一套就能解決所有的問題,哪些用開源軟件,哪些需要自定義,哪些需要去買license
  4. 前期的坑很多,搞瞭半年不一定能立馬見效,然後可能就沒機會瞭(就像機器學習模型本身是就應該慢慢迭代增量,這個機器學習平臺也是如此,隻有經過慢慢地迭代調整,才能找到最合適團隊,最合適商業的方案。)

我個人的理解是,確認好大方向,就是剛才提到的那幾點best practices,然後結合團隊現在的痛點,慢慢往裡面助力。

比如說之前大傢沒做數據的版本管理,然後發現無法復現模型,那麼你就可以整一套數據的版本管理,模型的版本管理,來解決這個痛點。

又比如說之前大傢沒有模型的監控,出瞭問題,過瞭幾天才知道,你就可以設計實現相應的監控平臺來幫助。

總結

總而言之,這個MLOps的Best practices讓我感到興奮,感覺這就是一個項目應該有的樣子。

在接下去的日子,我希望多記錄自己在這個方面的實戰體會和感悟,也歡迎各種大傢來交流。

下一期我就準備介紹下我所瞭解的MLOps的社區,幫助新的從業人員能夠快速地進入這個領域。

Reference

MLOps – Machine Learning Operations https://valohai.com/mlops/

How to approach machine learning operations: https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/innovate/best-practices/how-to-approach-mlops

MLOps Principles https://ml-ops.org/content/mlops-principles#iterative-incremental-process-in-mlops

MLOps Explained https://www.arrikto.com/mlops-explained/