“為什麼87% 的資料科學專案沒辦法產品化?”在Transform 2019 of VentureBeat[1] 的一篇報導給予了這樣的宣告。這並不是一個小數字,這樣的數字來自於(1)團隊在執行的時候沒有正確的視野與方向(2)資料來自不同的格式、結構化和非結構化的資料。結構化的資料像是我們一般所熟悉的database裡面所儲存的資料。非結構化的資料如影音、文本和圖像可能保存在不同的地方,電腦用不同的方式理解這這些資料,並且這些資料具有不同的安全和隱私要求(3)系統需要大量的團隊合作,彼此對彼此要做的事情若是不熟悉,就要花去許多時間溝通。如何讓自己所在的團隊不要成為那些87%的專案,我們接下來就來看,透過技術可以怎麼切入。
MLOPs落地的三個關鍵:團隊、技術、流程。在ML專案當中,把模型從實驗階段推向產品化的過程,開發者在資料、模型、程式的管理與合作上都需要有更近一步的要求。近幾年的軟體開發常談到的持續交付,也同樣反映在ML專案上。一個成熟度高的ML產品在CI(持續整合)、CD(持續部署)、CT(持續訓練)上也有系統性的方式維護,讓合作的開發者能夠輕易地接手、維護該專案。
資料的收集可以說是整個專案最重要的步驟之一。(另一個步驟我會說是商業與ML問題的相映,但可以找另外一篇詳述。)
ML模型學習的對象就是我們提供給模型訓練的資料,處理資料的工作包括:
這些工作內容時常是Data engineer的工作範疇。當一個資料及被稱作是高品質的資料集,通常符合以下條件:
(1)內容格式一致:包含(a)檔案編碼(utf-8, 或其他)、(b)同一欄位使用語言統一(非中英夾雜)、(c)資料表裡面沒有空值,當沒有相對應的數值時,至少會有預設值。
(2)資料邏輯對應商業邏輯:(a)資料表裡面若有分類或是標籤,一率有相對應的號碼解釋對照文件可查閱、(b)若是不同地域性、不同國家,則須標示清楚時區、使用幣別、測量單位(例如公尺、英呎)。
(3)即時性:(a)資料表具有建立時間和更新時間、(b)資料的更新程度與公司提供的服務熱門程度、使用者使用網站所建立的資料量是相對應的、(c)收集資料的過程當中如果有偶發性事件,或是特殊事件,同時也必須反映在資料及的處理上。
當資料的品質越好,模型就越能反映出在這個資料相對的業務問題。在未來市場擴展的時候,也需要時常回頭看,資料是否因為數據局部性,而不足以反映整個市場的樣貌。開資料取樣則應該調整,針對不同用戶的人口資料收集與訓練。
剛談完資料,模型的部分除了大家時常談到的(1)演算法選擇之外,這部分還包含了(2)超參數(hyper-parameter)訓練、(3)模型測試、(4)模型評估、(5)模型註冊、(6)模型發佈、(7)模型監測。
將訓練好的模型整合到公司的業務產品的過程。包括 (1)資料前處理、(2)模型預測、(3)預測後資料處理、(4)效能監控和(5)效能日誌記錄 等。其中會使用到的程式碼需要分為訓練和預測這兩個開發週期,以助於確保資料的安全運行環境以及有效的測試週期。
如果對執行細節想要了解,前陣子我也整理了另一篇史丹佛cs329課程內容,談到根據資料驗證、版本控制、模型監測、標籤資料、CI/CD 測試、部署、模型壓縮、推理效能優化、隱私,這幾個主題可以使用的開發框架。
當我們對於MLOps有了一些了解,也知道有哪些工具可以協助我們從技術上實作的時候,也開始對專案的未來覺得更明朗了。在這過程當中其實應該讓ML專案盡量保持簡單,隨持回到初衷去思考:想傳遞的價值是什麼?是不是一定要使用這個架構、實作方式?如果這個功能沒辦法如期完成,或是第三方的產品不支援,可以用什麼方式去完成?
ML專案不是一夜魔法,當我們擁有技術的時候,就是讓自己的產品與使用者回饋可以快速收集資料、快速調整的時候。有了最簡單版本的模型之後,可以再加入更複雜的數據集、更複雜的使用者族群,甚至跨地域性、跨市場的實驗及部署。無論是再怎麽新穎或老舊的技術或是模型,大家的目標都是希望帶給客戶最好的體驗。
Reference
[1]. Why do 87% of data science projects never make it into production?
https://venturebeat.com/2019/07/19/why-do-87-of-data-science-projects-never-make-it-into-production/
[2]. How to Use MLOps for an Effective AI Strategy | Exploring the ML pipeline (CI/CD/CT)
https://www.kdnuggets.com/2021/01/mlops-effective-ai-strategy.html