面向機器學習的持續整合與持續交付(CI/CD for ML)
/ see-eye see-dee for em-el /
面向機器學習的 CI/CD,是把現代軟體交付那套流水線紀律,引入到機器學習裡來。CI(持續整合)意為每有一處改動,就自動去測它;CD(持續交付/部署)意為把成果自動而安全地推向生產。設想一條工廠流水線,每一步都設著品檢關卡:不過關,就不許往前走。CI/CD 正是這樣一條自動化的流水線,鋪在「從一處程式碼或資料改動,到一個為用戶運行的模型」這條路上。
機器學習添了一道普通軟體沒有的彎。在常規軟體裡,同一段程式碼永遠表現一致,所以你測程式碼就行。可一個機器學習系統的行為,還取決於資料、取決於訓練出來的模型——是三個活動的零件,而非一個。於是面向機器學習的 CI/CD,必須測的不只是程式碼,還有資料品質(輸入資料漂移了嗎、壞了嗎?)、訓練過程(它是否還產得出一個好模型?)、以及產出模型的準確度(上線前它夠不夠格?)。唯有當所有關卡都過了,新模型才獲提升。
為什麼這很重要:它把模型更新,從一樁冒險的、手工的、易錯的事件,變成了例行的、可重複的、可逆的事——正是這一點,讓團隊能每週交付改進,而不是一年一回、提心吊膽地發一次。誠實的提醒是:自動化會放大你所搭的一切。一條會把「沒通過一個糟糕測試」的模型自動發出去的流水線,只會又快又穩地把壞模型發出去。CI/CD 並不替你決定一個模型是否夠好——那些品質關卡,得由人去明智地定義。它去掉的是苦力和人的手滑,而不是「對『過關』該意味著什麼」做出良好判斷的那份必要。
一名開發者推送了新程式碼。自動地:測試跑起來、新資料被查有無異常、一個模型重訓、它的準確度與當前生產模型相比對,唯有當它越過那道桿時才部署——否則流水線停下,並向一個人發出警報。
程式碼、資料、訓練、準確度全都自動設關——唯有過了每一道關的,才獲提升。
把部署自動化,並不讓一個模型變得可信——它只是讓你決定的事發生得更快,無論好壞。要是品質關卡形同虛設,CI/CD 會信心十足地把一個壞模型發出去。判斷力,存在於「定義那些關卡」這件事裡,而這一件事,是怎麼也省不掉的、必須由人來做的。