← M09 MLOps 與部署 M09 MLOps 與部署

M09.01|MLOps 概覽:從實驗到產品的橋樑

訓練出一個好模型只是起點 — 讓它在真實世界穩定運作才是挑戰的開始

L2-系統部署-機器學習系統維運 L2-AI技術應用-模型生命週期管理
MLOps 機器學習 DevOps ML生命週期 模型部署 持續學習 資料漂移 監控維運
📋

本講學習重點

MLOps 跟 DevOps 最大的差別是什麼?
為什麼訓練好的模型上線後會變差?
ML 生命週期有哪些關鍵階段?
什麼是資料漂移和概念漂移?
小公司需要完整的 MLOps 嗎?

MLOps = ML + DevOps,但多了資料管理、模型衰退、特徵工程等 ML 特有問題

模型衰退原因:資料分布改變(資料漂移)、現實概念改變(概念漂移)

ML 生命週期:資料收集→特徵工程→訓練→評估→部署→監控→重新訓練

資料漂移指輸入特徵分布改變;概念漂移指輸入與輸出關係改變

規模越大 MLOps 越重要;小團隊可從輕量工具開始(MLflow + Git)

傳統軟體只需管程式碼;ML 還需管資料版本、模型版本、實驗紀錄

Hidden Technical Debt in ML Systems:Google 2015 年提出的 ML 技術負債概念

📌 MLOps 是讓機器學習模型從實驗室走向生產環境、並持續健康運作的工程實踐。它比 DevOps 複雜,因為 ML 系統除了程式碼,還需要管理資料、模型版本與上線後的持續監控。
MLOps 概覽:從實驗到產品的橋樑

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

MLOps 就是把「機器學習模型」像「軟體產品」一樣管理的一整套工程實踐 — 從資料準備、模型訓練、上線部署,到上線後的持續監控與更新,確保模型在真實世界裡長期穩定運作,而不是訓練完就扔在角落慢慢腐爛。


白話解說

為什麼訓練出好模型還不夠?

很多人學完機器學習之後,以為工作流程就是:準備資料、訓練模型、評估準確率,然後大功告成。但這只是故事的開頭。

想像你花了三個月訓練一個信用評分模型,準確率高達 92%,你興奮地把它上線了。六個月後,業務主管打電話來問:「為什麼最近核准率跌了這麼多,是模型出問題了嗎?」你打開系統一看,模型還在跑,但它的預測品質已經悄悄下滑。

問題出在哪裡?這段時間,外部環境可能發生了很多變化:利率上升讓民眾消費習慣改變、新的詐騙手法出現、甚至只是季節性的消費波動。模型訓練時的世界和現在的世界,已經不一樣了。這就是為什麼「訓練好模型」只是起點,讓它持續健康運作才是真正的挑戰。

MLOps 是什麼?從 DevOps 說起

DevOps 你可能聽過——它是把軟體開發(Dev)和維運(Ops)整合在一起的工程文化,核心目標是讓程式碼能快速、安全地從開發環境推上生產環境,並透過自動化測試、CI/CD 流水線來確保品質。

MLOps 借用了 DevOps 的精神,但加入了機器學習特有的複雜性:

傳統軟體系統:你管的是「程式碼」。程式碼版本管理用 Git,測試用 pytest,部署用 CI/CD。只要程式碼沒變,系統行為就可預測。

機器學習系統:你要同時管「程式碼」、「資料」、「模型參數」三個會變動的東西。即使程式碼完全沒改,只要訓練資料的分布悄悄改變了,模型的行為就會不一樣。這讓 ML 系統的維運難度高出許多。

2015 年,Google 發表了一篇著名論文「Hidden Technical Debt in Machine Learning Systems」,提出 ML 系統中隱藏的技術負債問題:在一個完整的 ML 系統裡,真正的模型訓練程式碼只佔很小一部分,周圍包圍著大量的資料管道、特徵提取、監控、設定管理等支援系統。忽略這些周邊系統,就會積累難以維護的技術負債。

ML 生命週期的七個階段

一個完整的機器學習專案生命週期,遠比「訓練→部署」複雜:

第一階段:問題定義。要先把業務問題轉化成 ML 問題。「提升顧客留存率」不是 ML 問題,「預測未來 30 天內流失機率超過 70% 的顧客名單」才是。這步驟常被跳過,導致後面訓練方向完全跑偏。

第二階段:資料收集與整理。從各種資料來源收集原始資料,清洗遺漏值、處理異常值、理解資料分布。這個階段通常佔整個專案 60-70% 的時間,卻最容易被低估。

第三階段:特徵工程。把原始資料轉換成模型能理解的數值特徵。這是 ML 工程師最需要領域知識的地方——例如「過去 30 天的購買頻率」可能比「過去 30 天的購買金額」更能預測流失,但這需要對業務的深入理解。

第四階段:模型訓練與實驗。嘗試不同的演算法、超參數設定,記錄每次實驗的結果。這個階段需要系統性的實驗管理,而不是用 Excel 表格手動記錄。

第五階段:模型評估與驗證。不只看準確率,還要檢查公平性、穩健性、在不同子群體上的表現。通過評估後,才能進入部署。

第六階段:模型部署。把訓練好的模型包裝成可供外部呼叫的服務。包括 A/B 測試、藍綠部署、金絲雀發布等策略。

第七階段:監控與再訓練。上線後持續監控模型的預測品質,偵測資料漂移,並在必要時觸發重新訓練。這是讓模型長期健康的關鍵,也是最容易被忽略的階段。

資料漂移與概念漂移:模型最常死於這兩件事

資料漂移(Data Drift):輸入特徵的統計分布改變了。例如,你的推薦系統訓練時,用戶平均年齡是 28 歲。六個月後平台來了大量 45 歲以上的新用戶,但模型還在用 28 歲的行為模式做推薦,效果自然變差。資料漂移可以用統計方法自動偵測,例如比較輸入特徵的分布是否顯著偏移。

概念漂移(Concept Drift):輸入和輸出的關係本身改變了。例如,在 COVID 之前訓練的需求預測模型,學到「春節前後需求會上升」的規律。疫情期間這個規律完全失效,因為「節假日」與「需求」的關係根本變了。概念漂移比資料漂移更難偵測,通常需要持續追蹤模型的預測準確率才能發現。

MLOps 的成熟度模型

Google 提出了 MLOps 成熟度的三個層次,可以用來評估自己的團隊現在在哪個階段:

Level 0(手動流程):所有步驟都是手動的——手動訓練、手動評估、手動部署。沒有 pipeline,沒有版本追蹤,每次「重新訓練」都是重新跑一遍 Jupyter Notebook。很多公司的第一個 ML 專案都在這個層次。

Level 1(ML pipeline 自動化):訓練流程自動化,有實驗追蹤,有模型登錄。當新資料到來時,可以自動觸發重新訓練。但 CI/CD 還沒整合,部署還是手動。

Level 2(CI/CD pipeline 自動化):訓練、評估、部署全都自動化。程式碼修改能自動觸發整個流水線,新模型通過測試後自動部署。這是大型 ML 團隊的目標狀態。


應用場景

場景 主要挑戰 需要的 MLOps 功能 注意事項
電商推薦系統 用戶行為隨季節劇烈變化 自動資料漂移偵測、定期重訓 聖誕節前後要特別監控
信用評分模型 經濟環境改變導致概念漂移 模型性能追蹤、審計日誌 金融法規要求模型可解釋性
醫療影像診斷 不同設備、不同醫院的影像品質差異 資料版本管理、嚴格的驗證流程 模型更新需臨床驗證
詐騙偵測 詐騙手法持續演化,標籤延遲到達 線上學習、快速重訓機制 誤報率和漏報率的取捨
工廠設備預測維護 感測器資料品質不穩定 資料品質監控、缺值處理 訓練資料可能缺乏故障樣本
自然語言處理客服 新產品上市帶來新詞彙和問題類型 人工標注流程整合、主動學習 需要快速的人工標注能力
廣告點擊率預測 每天數億筆新資料、需即時更新 串流訓練、A/B 測試框架 模型更新頻率可能每小時一次

常見誤區

誤區 1:「模型訓練好、準確率高,上線就沒問題了」

這是最普遍也最危險的誤解。模型訓練時的「準確率」是在歷史資料上測量的,它告訴你的是「這個模型能從過去的資料中學到多少規律」,而不是「這個模型在未來的真實環境中表現如何」。

真實世界是動態的。用戶習慣會改變,市場環境會演化,甚至連資料收集的方式也可能悄悄改變(例如 App 改版後,某個用戶行為的定義不一樣了)。如果沒有上線後的持續監控,你根本不知道模型什麼時候開始「衰老」。

更麻煩的是,模型衰退通常不是突然發生的,而是緩慢漸進的,所以業務人員也不容易察覺,等到發現問題往往已經造成一段時間的損失。這就是為什麼 MLOps 強調監控的重要性——不是在訓練時監控,而是在上線後持續監控。

誤區 2:「MLOps 就是把 DevOps 工具套用在 ML 上」

有些工程師的第一反應是「我已經會 DevOps 了,MLOps 不就是一樣的東西嗎?」這個想法部分正確,但忽略了 ML 系統特有的複雜性。

傳統軟體的行為完全由程式碼決定:只要程式碼版本相同,在任何環境執行都會得到相同結果。但機器學習系統的行為由「程式碼 + 訓練資料 + 模型參數」共同決定。你可以用完全一樣的訓練程式碼,但因為訓練資料的時間範圍不同,訓練出完全不同的模型。這意味著光做程式碼版本控制是不夠的,你還需要資料版本控制、模型版本控制、實驗追蹤。

此外,ML 系統的「測試」也比傳統軟體複雜。你不只要測程式有沒有跑壞,還要測模型的公平性、在邊緣案例上的行為、對抗樣本的穩健性。這些都需要 ML 特有的工具和方法。

誤區 3:「小公司/小團隊不需要 MLOps,那是 Google 在玩的」

這個誤解讓很多中小型團隊在 ML 的泥沼裡掙扎許久。MLOps 的核心原則——版本控制、可重現性、監控——不是大公司的專利,而是任何 ML 團隊的基本衛生習慣。

當然,初期不需要全套的工具鏈。但至少應該做到:用 Git 管理程式碼、用 DVC 或 MLflow 追蹤實驗結果、記錄每個部署的模型版本和訓練資料版本。這些基本實踐的成本不高,但能在「六個月後被問到:這個模型是用什麼資料訓練的?」時保住你的理智。

從 Level 0 到 Level 1 的進化,不需要昂貴的雲端平台,只需要改變工作習慣。等到團隊規模夠大、模型數量夠多的時候,再考慮更完整的 MLOps 平台也不遲。


小練習

練習 1:找出你身邊的 ML 系統風險

想想你的工作或生活中接觸過的一個 AI/ML 系統(例如推薦系統、客服機器人、預測工具)。嘗試回答以下問題:

  • 這個系統的輸入資料(特徵)會隨時間改變嗎?怎麼改變?
  • 如果模型預測品質下降,你(或公司)會怎麼知道?有沒有監控機制?
  • 這個模型多久重新訓練一次?由什麼事件觸發?

練習 2:MLOps 成熟度自評

假設你的團隊已經有一個 ML 模型在生產環境中運作,根據以下清單評估你們目前的 MLOps 成熟度:

Level 0 特徵(手動)

  • 訓練流程主要靠 Jupyter Notebook 手動執行
  • 沒有系統性的實驗追蹤(靠 Excel 或記憶)
  • 沒有模型版本管理(不知道線上跑的是哪個版本)
  • 上線後沒有自動監控

Level 1 特徵(部分自動化)

  • 訓練流程有 pipeline 腳本,可一鍵執行
  • 使用 MLflow/W&B 等工具追蹤實驗
  • 有模型登錄(Model Registry),知道每個版本的資訊
  • 有基本的上線監控(至少監控預測量和延遲)
查看答案 **練習 1 參考分析框架** 以「電商推薦系統」為例: **輸入資料會怎麼改變?** - 用戶行為特徵:點擊率、購買頻率會隨促銷活動大幅波動 - 商品特徵:新商品上架、舊商品下架會造成特徵空間變化 - 季節性:節慶期間行為模式完全不同 → 這些都是典型的**資料漂移**場景 **如何知道品質下降?** - 被動方式(不好):業績下滑後才發現,已造成損失 - 主動方式(好):每天計算推薦點擊率、購買轉換率,當指標跌破閾值自動告警 - 更好的方式:用統計測試(如 KS test)監控輸入特徵分布,在效果下滑前就發現漂移 **重訓頻率**: - 電商推薦通常每天或每週重訓 - 觸發條件可以是:定期排程、偵測到顯著漂移、線上效果指標下滑 --- **練習 2 評分說明** - 勾選 0-1 個 Level 0 特徵、且都有 Level 1 特徵:恭喜,你們已在 Level 1 - 勾選 2-4 個 Level 0 特徵:你們在 Level 0,最優先要解決的是「實驗追蹤」和「模型版本管理」 - 建議下一步行動: 1. 先從 MLflow Tracking 開始,一週內可以上手 2. 為線上模型加上最基本的監控(每日預測量、錯誤率) 3. 把訓練流程從 Notebook 改寫成 Python 腳本,加到 Git 版本控制

關鍵字自我檢核

✅ MLOps定義 ✅ ML生命週期 ✅ DevOps vs MLOps ✅ 模型衰退 ✅ 資料漂移 data drift ✅ 持續訓練 continuous training ✅ 特徵工程 feature engineering ✅ 模型監控 model monitoring ✅ 實驗追蹤 experiment tracking ✅ 生產環境 production ✅ 技術負債 technical debt ✅ 可重現性 reproducibility