
隨著大家對雲服務的越來越熟悉以及ML應用程序在市場上的愈來愈普及,使用者們也開始發問:“我設計的架構是在對的方向上嗎?”。本文參考2020 AWS re:invent大會中,關於ML專案架構最佳實踐的一場演講。從AWS well architect的框架下,學習用機器學習的視角來看:設計機器學習應用的架構時,所需要考量的幾個最佳實踐。內容將綜合講者的演講內容以及筆者過去的開發經驗。
演講介紹
2020年的AWS re:invent是全遠端的方式進行,從2020年11月30號到12月18號以及2021年1月12號到1月14號。今天的文章架構靈感是來自Mohsen Ansari所分享的Architectural best practices for machine learning applications。想看該演講的朋友可以到活動網站免費註冊,在議程的地方搜尋這一場演講。
演講資訊:
Session ID: ARC312
Level: 300
Speaker: Mohsen Ansari
Session Name: Architectural best practices for machine learning applications
摘要及個人想法
8步驟從資料、建模到產品化你的ML產品
- Data ingestion:數據提取。
- Data preparation:資料準備。
- Feature Engineering:特徵工程。
- Model training:模型訓練。
- Model monitoring/re-training:模型監測、重新訓練。
- Model Inference:推斷結果,根據手上有的證據、線索推論出的推斷結果。
- Model deployment:模型部署。
- Model evaluation & tuning:模型評估與調整。
如果你是資料科學家、資料工程師,可能對於這8個步驟再熟悉不過。假設今天公司的業務從現在的量級,往上增加10倍、100倍,在這些步驟上面有可能哪些部分會受影響?假設團隊要加新的人進來的話,你會怎麼確保團隊的分工呢?
假設你是在DevOps部門,這些步驟可能還有些不太熟悉,你可以先參考前一篇文章what’s MLOps?,了解一下MLOps跟一般軟體開發的DevOps不同處有哪些,然後回來這篇繼續想:今天你要跟資料部門一起負責MLOps的話,是否能夠把你熟悉的系統架構、安全性、可靠性等等,來跟機器學習的產品循環相呼應?
好,接下來然後我們一起來看看以下內容。
透過ML視角去看雲端服務架構設計
看過AWS well architect (暫譯:AWS雲端服務架構完善設計)的開發者可能已經對這五點架構完善支柱有印象,其包含:Cost Optimization、Operational Excellence、Reliability、Security、Performance Efficiency。當ML遇到這5點,所展開的討論點就會包含:
- 1. ML+成本最佳化(Cost Optimization): 目前使用到的服務是否有真正幫助到團隊做資源的最佳化?是否使用適當的託管工具讓團隊降低擁有成本?例如在時間應用、人力配置、開支等等。是否先從資料及當中取出小量資料試驗之後再進行大規模的訓練?或是有其他可以更快、更方便驗證模型的方式?是否基於業務形態而選擇適當的服務模式?例如需要全天候機,還是只有在尖峰時刻才需要把服務開啟?在定義成本的時候是否只考量單一研究步驟,還是有把整個商業流程推上線的成本放進考量?以及不會因為業務進行而可能會有相對應的延展性、擴張性而超出預算等等。
- 2. ML+卓越營運(Operational Excellence): 在ML的模型訓練、部署的過程當中,是否有足夠的自動化以及數據監控,讓整個流程能夠持續改善,進而幫助到公司的商業價值。讓跨部門團隊能一起溝通模型為市場帶來的影響,讓受到影響的各部門都能因為這個ML模型的部署而受益。版本控制與自動化的模型部署,讓版本的釋出及退回有更加穩健的環境。定義事情發生的相對應措施,讓模型營運能更有系統地被多人一起維護等等。
- 3. ML+可靠性(Reliability): 可靠性著重於確保工作負載如預期一樣正確且一致地執行預期功能,因此訓練一次後,需確定模型在不同環境(開發、測試、產品)的執行狀況都相同。彈性工作負載,快速從故障恢復也是可靠性所在乎的點,在模型部署後,需測試是否能乘載客戶用量。以及故障、人為意外的復原規劃,可以如何在最短時間內回到確切版本等等。
- 4. ML+安全性(Security): 安全性著重於保護資訊與系統。特別是在某些國家受到個資法的保護下,有誰能夠訪問、有誰能夠觀看數據集、能觀看哪些內容等等的權限管理,就變成很重要的課題。這些課題也需要跟了解GDPR、HIPAA的專業人士一起審核,制定開發以及問題舉報流程。除了需管理誰能夠訪問數據之外,也須考量防止數據外洩、確保數據集的完整性。從取得數據、訓練到模型部署,若是在團隊上有不同層級的分工,也須確保各開發人員的數據採訪權限、是否有權限取得其計算資源、是否有權限執行部署、修改部署、或是在部署至產品階段的人為行為介入都能受到管控。部署到線上的模型,也需要有安全把關,並不是讓任何使用者都能夠不經登入任何直接呼叫到這個服務端點。
- 5. ML+效能效率(Performance Efficiency): 效能效率著重於有效率地利用 IT 和運算資源,讓其能夠發揮最大效能。舉例來說,在ML的模型運算當中,模型的架構與計算機器的選用及配置是否已優化。模型在提供服務時,是否在效能上有足夠好的表現?舉例來說:延遲是否在服務情境中佔了很重要的服務體驗、即時性對於商業的維護成本帶來的影響為何,以及模型是否在合理的延遲範圍內提供回應等等。持續性監看及關注模型發佈後的狀況,也能夠協助在系統的維運上保持穩定度跟彈性。
結語
透過以上5點,希望大家對於機器學習的架構最佳實踐有了更多的想法及靈感。也許每間公司的業務形態、以及ML在業務當中佔的比重都不同,但是透過這些要點,能夠提供data team、DevOps team、Product owner有更多的討論那就有發揮到期價值了。
放上幾個學習資源:
- AWS, 雲服務的架構設計指南 (中文)
- AWS, ML視角看雲服務的架構設計指南 (En)
- 部署機器學習模型不能錯過的Checklist (En)
- 終極機器學習模型部署清單 (En)
也包含我會更新的粉絲頁及Telegram頻道。
大家下次見!
註記:
改了數次的標題
– 機器學習應用的雲端服務架構最佳實踐
– 機器學習應用程序服務的架構最佳實踐
– 機器學習應用程序服務架構的最佳實踐
– 機器學習應用的架構最佳實踐
– 機器學習服務的架構最佳實踐
想要有一個標題機器人來幫我決定💪